From 927add1b301c9f38808f3d35854d3ce896bff095 Mon Sep 17 00:00:00 2001 From: Vadim Dashevskiy Date: Sat, 19 May 2012 11:12:34 +0000 Subject: adding SpellChecker plugin git-svn-id: http://svn.miranda-ng.org/main/trunk@69 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- .../SpellChecker/Docs/langpack_spellchecker.txt | 74 + plugins/SpellChecker/Docs/spellchecker.png | Bin 0 -> 28060 bytes .../SpellChecker/Docs/spellchecker_changelog.txt | 235 + plugins/SpellChecker/Docs/spellchecker_readme.txt | 36 + plugins/SpellChecker/Docs/spellchecker_version.txt | 1 + plugins/SpellChecker/Flags-Angelika/Unknown.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/af_ZA.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/ar_AR.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/az_AZ.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/bg_BG.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/bn_IN.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/ca_ES.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/cs_CZ.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/csb_PO.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/cy_GB.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/da_DK.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/de_AT.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/de_CH.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/de_DE.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/el_GR.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/em_ET.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/en_AU.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/en_CA.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/en_GB.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/en_NZ.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/en_US.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/en_ZA.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/es_ES.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/es_MX.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/et_EE.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/fa_IR.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/fi_FI.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/fj_FJ.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/fo_FO.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/fr_BE.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/fr_FR.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/ga_IE.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/gd_GB.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/gl_ES.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/he_IL.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/hi_IN.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/hr_Hr.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/hu_HU.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/id_ID.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/is_IS.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/it_IT.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/km_KH.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/ku_TR.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/lt_LT.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/lu_LU.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/lv_LV.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/mg_MG.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/mi_NZ.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/mn_MN.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/mo_BF.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/mr_IN.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/ms_MY.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/nb_NO.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/ne_NP.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/nl_NL.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/nn_NO.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/nr_ZA.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/ns_ZA.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/or_IN.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/pl_PL.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/pt_BR.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/pt_PT.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/qu_BO.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/ro_RO.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/ru_RU.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/rw_RW.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/sk_SK.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/sl_SI.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/ss_ZA.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/st_ZA.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/sv_SE.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/ta_IN.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/tet_ID.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/tl_PH.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/tn_ZA.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/ts_ZA.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/uk_UA.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/uz_UZ.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/ve_ZA.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/vi_VI.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/xh_ZA.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags-Angelika/zu_ZA.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/Flags/ad.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ae.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/af_ZA.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ag.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ai.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/al.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/am.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/an.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ao.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ar.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/as.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/aw.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ax.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/az_AZ.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ba.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/bb.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/bg_BG.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/bh.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/bi.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/bj.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/bm.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/bn.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/bn_IN.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/bs.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/bt.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/bv.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/by.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/bz.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/cc.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/cd.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/cf.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/cg.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ci.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ck.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/cl.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/cm.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/cn.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/co.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/cr.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/cs_CZ.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/cu.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/cv.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/cx.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/cy.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/cy_GB.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/da_DK.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/de_AT.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/de_CH.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/de_DE.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/dj.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/dm.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/do.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/dz.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ec.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/eg.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/eh.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/el_GR.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/em_ET.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/en_AU.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/en_CA.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/en_GB.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/en_NZ.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/en_US.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/en_ZA.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/england.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/er.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/es_ES.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/es_MX.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/et_EE.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/fa_IR.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/fi_FI.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/fj_FJ.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/fk.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/fm.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/fo_FO.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/fr_BE.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/fr_FR.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ga.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ga_IE.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/gd.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/gd_GB.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ge.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/gi.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/gl.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/gm.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/gn.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/gp.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/gq.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/gs.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/gt.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/gu.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/gw.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/gy.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/he_IL.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/hi_IN.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/hk.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/hn.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/hr_HR.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ht.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/hu_HU.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/id_ID.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/io.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/iq.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/is_IS.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/it_IT.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/jm.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/jo.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/jp.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ke.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/kg.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ki.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/km.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/km_KH.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/kn.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/kp.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/kr.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ku_TR.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/kw.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ky.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/kz.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/la.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/lb.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/lc.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/li.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/lk.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/lr.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ls.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/lt_LT.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/lu_LU.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/lv_LV.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ly.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ma.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/mc.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/md.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/mg_MG.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/mh.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/mi_NZ.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/mk.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ml.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/mm.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/mn_MN.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/mo.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/mo_BF.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/mp.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/mq.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/mr.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/mr_IN.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ms.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ms_MY.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/mt.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/mu.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/mv.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/mz.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/na.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/nb_NO.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/nc.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ne.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ne_NP.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/nf.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ng.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ni.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/nl_NL.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/nn_NO.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/nr.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/nr_ZA.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ns_ZA.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/nu.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ny_MW.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/om.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/or_IN.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/pa.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/pe.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/pf.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/pg.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/pk.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/pl_PL.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/pm.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/pn.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/pr.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ps.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/pt_BR.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/pt_PT.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/pw.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/py.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/qa.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/qu_BO.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/readme.txt | 8 + plugins/SpellChecker/Flags/ro_BO.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ro_RO.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ru_RU.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/rw_RW.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/sa.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/sb.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/sc.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/sd.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/sg.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/sh.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/sk_SK.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/sl.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/sl_SI.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/sm.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/sn.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/so.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/sr.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/sr_CS.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ss_ZA.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/st.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/st_ZA.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/sv.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/sv_SE.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/sy.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/tc.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/td.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/tet_ID.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/tf.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/tg.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/th.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/tj.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/tk.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/tl.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/tl_PH.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/tm.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/tn.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/tn_ZA.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/to.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ts_ZA.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/tt.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/tv.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/tw.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/tz.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ug.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/uk_UA.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/um.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/uy.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/uz_UZ.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/va.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/vc.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ve.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ve_ZA.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/vg.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/vi.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/vi_VI.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/vu.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/wf.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ws.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/xh_ZA.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/ye.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/yt.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/zm.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/zu_ZA.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/Flags/zw.ico | Bin 0 -> 1150 bytes plugins/SpellChecker/RichEdit.cpp | 332 + plugins/SpellChecker/RichEdit.h | 71 + plugins/SpellChecker/ZIP/Dictionaries/en_US.aff | 189 + plugins/SpellChecker/ZIP/Dictionaries/en_US.dic | 62077 ++++++++++++++++ plugins/SpellChecker/ZIP/Icons/flags.dll | Bin 0 -> 159744 bytes plugins/SpellChecker/ZIP/doit.bat | 141 + plugins/SpellChecker/ZIP/zip.exe | Bin 0 -> 290816 bytes plugins/SpellChecker/ardialog.cpp | 316 + plugins/SpellChecker/ardialog.h | 33 + plugins/SpellChecker/autoreplace.cpp | 229 + plugins/SpellChecker/autoreplace.h | 70 + plugins/SpellChecker/codepages.cpp | 307 + plugins/SpellChecker/commons.h | 154 + plugins/SpellChecker/dictionary.cpp | 735 + plugins/SpellChecker/dictionary.h | 86 + plugins/SpellChecker/flags-angelika.rc | 118 + plugins/SpellChecker/flags-angelika.sln | 40 + plugins/SpellChecker/flags-angelika.vcproj | 508 + plugins/SpellChecker/flags.rc | 119 + plugins/SpellChecker/flags.sln | 40 + plugins/SpellChecker/flags.vcproj | 508 + plugins/SpellChecker/hunspell/README | 21 + plugins/SpellChecker/hunspell/affentry.cxx | 962 + plugins/SpellChecker/hunspell/affentry.hxx | 136 + plugins/SpellChecker/hunspell/affixmgr.cxx | 4521 ++ plugins/SpellChecker/hunspell/affixmgr.hxx | 250 + plugins/SpellChecker/hunspell/atypes.hxx | 107 + plugins/SpellChecker/hunspell/baseaffix.hxx | 28 + plugins/SpellChecker/hunspell/config.h | 215 + plugins/SpellChecker/hunspell/csutil.cxx | 5834 ++ plugins/SpellChecker/hunspell/csutil.hxx | 220 + plugins/SpellChecker/hunspell/dictmgr.cxx | 180 + plugins/SpellChecker/hunspell/dictmgr.hxx | 36 + plugins/SpellChecker/hunspell/filemgr.cxx | 49 + plugins/SpellChecker/hunspell/filemgr.hxx | 25 + plugins/SpellChecker/hunspell/hashmgr.cxx | 928 + plugins/SpellChecker/hunspell/hashmgr.hxx | 69 + plugins/SpellChecker/hunspell/htypes.hxx | 32 + plugins/SpellChecker/hunspell/hunspell.cxx | 2011 + plugins/SpellChecker/hunspell/hunspell.dsp | 164 + plugins/SpellChecker/hunspell/hunspell.h | 95 + plugins/SpellChecker/hunspell/hunspell.hxx | 174 + plugins/SpellChecker/hunspell/hunvisapi.h | 18 + plugins/SpellChecker/hunspell/hunzip.cxx | 193 + plugins/SpellChecker/hunspell/hunzip.hxx | 45 + plugins/SpellChecker/hunspell/langnum.hxx | 38 + plugins/SpellChecker/hunspell/license.hunspell | 59 + plugins/SpellChecker/hunspell/license.myspell | 61 + plugins/SpellChecker/hunspell/phonet.cxx | 292 + plugins/SpellChecker/hunspell/phonet.hxx | 52 + plugins/SpellChecker/hunspell/replist.cxx | 87 + plugins/SpellChecker/hunspell/replist.hxx | 27 + plugins/SpellChecker/hunspell/suggestmgr.cxx | 2001 + plugins/SpellChecker/hunspell/suggestmgr.hxx | 111 + plugins/SpellChecker/hunspell/utf_info.cxx | 19676 +++++ plugins/SpellChecker/hunspell/w_char.hxx | 21 + plugins/SpellChecker/m_spellchecker.h | 77 + plugins/SpellChecker/options.cpp | 610 + plugins/SpellChecker/options.h | 68 + plugins/SpellChecker/res/no_spellcheck.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/res/spellcheck.ico | Bin 0 -> 2038 bytes plugins/SpellChecker/res/unknown.ico | Bin 0 -> 894 bytes plugins/SpellChecker/resource.h | 93 + plugins/SpellChecker/resource.rc | 201 + plugins/SpellChecker/spellchecker.cpp | 2328 + plugins/SpellChecker/spellchecker.sln | 25 + plugins/SpellChecker/spellchecker.vcxproj | 501 + plugins/SpellChecker/spellchecker.vcxproj.filters | 199 + plugins/SpellChecker/srmm.spellchecker.patch | 266 + plugins/Updater/Docs/licence_updater.txt | 52 + plugins/Updater/allocations.cpp | 5 + plugins/Updater/allocations.h | 72 + plugins/Updater/bzip2-1.0.3/CHANGES | 327 + plugins/Updater/bzip2-1.0.3/LICENSE | 42 + plugins/Updater/bzip2-1.0.3/Makefile | 217 + plugins/Updater/bzip2-1.0.3/Makefile-libbz2_so | 59 + plugins/Updater/bzip2-1.0.3/README | 215 + .../bzip2-1.0.3/README.COMPILATION.PROBLEMS | 58 + plugins/Updater/bzip2-1.0.3/README.XML.STUFF | 45 + plugins/Updater/bzip2-1.0.3/Y2K_INFO | 34 + plugins/Updater/bzip2-1.0.3/blocksort.c | 1094 + plugins/Updater/bzip2-1.0.3/bz-common.xsl | 39 + plugins/Updater/bzip2-1.0.3/bz-fo.xsl | 276 + plugins/Updater/bzip2-1.0.3/bz-html.xsl | 20 + plugins/Updater/bzip2-1.0.3/bzdiff | 76 + plugins/Updater/bzip2-1.0.3/bzdiff.1 | 47 + plugins/Updater/bzip2-1.0.3/bzgrep | 75 + plugins/Updater/bzip2-1.0.3/bzgrep.1 | 56 + plugins/Updater/bzip2-1.0.3/bzip.css | 74 + plugins/Updater/bzip2-1.0.3/bzip2.1 | 454 + plugins/Updater/bzip2-1.0.3/bzip2.1.preformatted | 399 + plugins/Updater/bzip2-1.0.3/bzip2.c | 2034 + plugins/Updater/bzip2-1.0.3/bzip2.txt | 391 + plugins/Updater/bzip2-1.0.3/bzip2recover.c | 514 + plugins/Updater/bzip2-1.0.3/bzlib.c | 1572 + plugins/Updater/bzip2-1.0.3/bzlib.h | 282 + plugins/Updater/bzip2-1.0.3/bzlib_private.h | 509 + plugins/Updater/bzip2-1.0.3/bzmore | 61 + plugins/Updater/bzip2-1.0.3/bzmore.1 | 152 + plugins/Updater/bzip2-1.0.3/compress.c | 672 + plugins/Updater/bzip2-1.0.3/crctable.c | 104 + plugins/Updater/bzip2-1.0.3/decompress.c | 646 + plugins/Updater/bzip2-1.0.3/dlltest.c | 175 + plugins/Updater/bzip2-1.0.3/dlltest.dsp | 93 + plugins/Updater/bzip2-1.0.3/entities.xml | 9 + plugins/Updater/bzip2-1.0.3/format.pl | 68 + plugins/Updater/bzip2-1.0.3/huffman.c | 205 + plugins/Updater/bzip2-1.0.3/libbz2.001 | 130 + plugins/Updater/bzip2-1.0.3/libbz2.def | 27 + plugins/Updater/bzip2-1.0.3/libbz2.dll | Bin 0 -> 344187 bytes plugins/Updater/bzip2-1.0.3/libbz2.dsp | 130 + plugins/Updater/bzip2-1.0.3/libbz2.dsw | 29 + plugins/Updater/bzip2-1.0.3/libbz2.ilk | Bin 0 -> 311456 bytes plugins/Updater/bzip2-1.0.3/libbz2.plg | 95 + plugins/Updater/bzip2-1.0.3/makefile.msc | 63 + plugins/Updater/bzip2-1.0.3/manual.html | 2540 + plugins/Updater/bzip2-1.0.3/manual.pdf | Bin 0 -> 256905 bytes plugins/Updater/bzip2-1.0.3/manual.ps | 72843 +++++++++++++++++++ plugins/Updater/bzip2-1.0.3/manual.xml | 2964 + plugins/Updater/bzip2-1.0.3/mk251.c | 31 + plugins/Updater/bzip2-1.0.3/randtable.c | 84 + plugins/Updater/bzip2-1.0.3/sample1.bz2 | Bin 0 -> 32348 bytes plugins/Updater/bzip2-1.0.3/sample1.ref | Bin 0 -> 98696 bytes plugins/Updater/bzip2-1.0.3/sample2.bz2 | Bin 0 -> 73732 bytes plugins/Updater/bzip2-1.0.3/sample2.ref | Bin 0 -> 212340 bytes plugins/Updater/bzip2-1.0.3/sample3.bz2 | Bin 0 -> 235 bytes plugins/Updater/bzip2-1.0.3/sample3.ref | 30007 ++++++++ plugins/Updater/bzip2-1.0.3/spewG.c | 54 + plugins/Updater/bzip2-1.0.3/unzcrash.c | 141 + plugins/Updater/bzip2-1.0.3/words0 | 9 + plugins/Updater/bzip2-1.0.3/words1 | 4 + plugins/Updater/bzip2-1.0.3/words2 | 5 + plugins/Updater/bzip2-1.0.3/words3 | 30 + plugins/Updater/bzip2-1.0.3/xmlproc.sh | 114 + plugins/Updater/common.cpp | 72 + plugins/Updater/common.h | 145 + plugins/Updater/conf_comp_dialog.cpp | 204 + plugins/Updater/conf_comp_dialog.h | 8 + plugins/Updater/conf_dialog.cpp | 289 + plugins/Updater/conf_dialog.h | 14 + plugins/Updater/extern.cpp | 524 + plugins/Updater/extern.h | 20 + plugins/Updater/ezxml.c | 967 + plugins/Updater/ezxml.h | 165 + plugins/Updater/icons.cpp | 56 + plugins/Updater/icons.h | 13 + plugins/Updater/options.cpp | 508 + plugins/Updater/options.h | 49 + plugins/Updater/popups.cpp | 212 + plugins/Updater/popups.h | 32 + plugins/Updater/progress_dialog.cpp | 111 + plugins/Updater/progress_dialog.h | 13 + plugins/Updater/resource.h | 57 + plugins/Updater/resource.rc | 6 + plugins/Updater/restart.ico | Bin 0 -> 2550 bytes plugins/Updater/scan.cpp | 396 + plugins/Updater/scan.h | 18 + plugins/Updater/services.cpp | 889 + plugins/Updater/services.h | 78 + plugins/Updater/socket.cpp | 355 + plugins/Updater/socket.h | 20 + plugins/Updater/u.ico | Bin 0 -> 2550 bytes plugins/Updater/ue.ico | Bin 0 -> 2550 bytes plugins/Updater/unzipfile.cpp | 108 + plugins/Updater/updater.cpp | 300 + plugins/Updater/updater.def | 3 + plugins/Updater/updater.h | 19 + plugins/Updater/updater.rc | 213 + plugins/Updater/updater_10.sln | 26 + plugins/Updater/updater_10.vcxproj | 339 + plugins/Updater/updater_10.vcxproj.filters | 214 + plugins/Updater/utils.cpp | 248 + plugins/Updater/utils.h | 20 + plugins/Updater/version.h | 32 + plugins/Updater/version.rc | 33 + plugins/Updater/xmldata.cpp | 495 + plugins/Updater/xmldata.h | 29 + plugins/Updater/zbin/minizip/crypt.h | 131 + plugins/Updater/zbin/minizip/ioapi.c | 246 + plugins/Updater/zbin/minizip/ioapi.h | 200 + plugins/Updater/zbin/minizip/ioapi_mem.c | 270 + plugins/Updater/zbin/minizip/iowin32.c | 389 + plugins/Updater/zbin/minizip/iowin32.h | 28 + plugins/Updater/zbin/minizip/miniunz.c | 648 + plugins/Updater/zbin/minizip/minizip.c | 507 + plugins/Updater/zbin/minizip/mztools.c | 281 + plugins/Updater/zbin/minizip/mztools.h | 31 + plugins/Updater/zbin/minizip/unzip.c | 2125 + plugins/Updater/zbin/minizip/unzip.h | 437 + plugins/Updater/zbin/minizip/zip.c | 2004 + plugins/Updater/zbin/minizip/zip.h | 362 + plugins/Updater/zbin/x32/zlib.lib | Bin 0 -> 10532 bytes plugins/Updater/zbin/x64/zlib.lib | Bin 0 -> 10278 bytes plugins/Updater/zbin/zconf.h | 428 + plugins/Updater/zbin/zlib.h | 1613 + plugins/updater/Docs/licence_updater.txt | 52 - plugins/updater/allocations.cpp | 5 - plugins/updater/allocations.h | 72 - plugins/updater/bzip2-1.0.3/CHANGES | 327 - plugins/updater/bzip2-1.0.3/LICENSE | 42 - plugins/updater/bzip2-1.0.3/Makefile | 217 - plugins/updater/bzip2-1.0.3/Makefile-libbz2_so | 59 - plugins/updater/bzip2-1.0.3/README | 215 - .../bzip2-1.0.3/README.COMPILATION.PROBLEMS | 58 - plugins/updater/bzip2-1.0.3/README.XML.STUFF | 45 - plugins/updater/bzip2-1.0.3/Y2K_INFO | 34 - plugins/updater/bzip2-1.0.3/blocksort.c | 1094 - plugins/updater/bzip2-1.0.3/bz-common.xsl | 39 - plugins/updater/bzip2-1.0.3/bz-fo.xsl | 276 - plugins/updater/bzip2-1.0.3/bz-html.xsl | 20 - plugins/updater/bzip2-1.0.3/bzdiff | 76 - plugins/updater/bzip2-1.0.3/bzdiff.1 | 47 - plugins/updater/bzip2-1.0.3/bzgrep | 75 - plugins/updater/bzip2-1.0.3/bzgrep.1 | 56 - plugins/updater/bzip2-1.0.3/bzip.css | 74 - plugins/updater/bzip2-1.0.3/bzip2.1 | 454 - plugins/updater/bzip2-1.0.3/bzip2.1.preformatted | 399 - plugins/updater/bzip2-1.0.3/bzip2.c | 2034 - plugins/updater/bzip2-1.0.3/bzip2.txt | 391 - plugins/updater/bzip2-1.0.3/bzip2recover.c | 514 - plugins/updater/bzip2-1.0.3/bzlib.c | 1572 - plugins/updater/bzip2-1.0.3/bzlib.h | 282 - plugins/updater/bzip2-1.0.3/bzlib_private.h | 509 - plugins/updater/bzip2-1.0.3/bzmore | 61 - plugins/updater/bzip2-1.0.3/bzmore.1 | 152 - plugins/updater/bzip2-1.0.3/compress.c | 672 - plugins/updater/bzip2-1.0.3/crctable.c | 104 - plugins/updater/bzip2-1.0.3/decompress.c | 646 - plugins/updater/bzip2-1.0.3/dlltest.c | 175 - plugins/updater/bzip2-1.0.3/dlltest.dsp | 93 - plugins/updater/bzip2-1.0.3/entities.xml | 9 - plugins/updater/bzip2-1.0.3/format.pl | 68 - plugins/updater/bzip2-1.0.3/huffman.c | 205 - plugins/updater/bzip2-1.0.3/libbz2.001 | 130 - plugins/updater/bzip2-1.0.3/libbz2.def | 27 - plugins/updater/bzip2-1.0.3/libbz2.dll | Bin 344187 -> 0 bytes plugins/updater/bzip2-1.0.3/libbz2.dsp | 130 - plugins/updater/bzip2-1.0.3/libbz2.dsw | 29 - plugins/updater/bzip2-1.0.3/libbz2.ilk | Bin 311456 -> 0 bytes plugins/updater/bzip2-1.0.3/libbz2.plg | 95 - plugins/updater/bzip2-1.0.3/makefile.msc | 63 - plugins/updater/bzip2-1.0.3/manual.html | 2540 - plugins/updater/bzip2-1.0.3/manual.pdf | Bin 256905 -> 0 bytes plugins/updater/bzip2-1.0.3/manual.ps | 72843 ------------------- plugins/updater/bzip2-1.0.3/manual.xml | 2964 - plugins/updater/bzip2-1.0.3/mk251.c | 31 - plugins/updater/bzip2-1.0.3/randtable.c | 84 - plugins/updater/bzip2-1.0.3/sample1.bz2 | Bin 32348 -> 0 bytes plugins/updater/bzip2-1.0.3/sample1.ref | Bin 98696 -> 0 bytes plugins/updater/bzip2-1.0.3/sample2.bz2 | Bin 73732 -> 0 bytes plugins/updater/bzip2-1.0.3/sample2.ref | Bin 212340 -> 0 bytes plugins/updater/bzip2-1.0.3/sample3.bz2 | Bin 235 -> 0 bytes plugins/updater/bzip2-1.0.3/sample3.ref | 30007 -------- plugins/updater/bzip2-1.0.3/spewG.c | 54 - plugins/updater/bzip2-1.0.3/unzcrash.c | 141 - plugins/updater/bzip2-1.0.3/words0 | 9 - plugins/updater/bzip2-1.0.3/words1 | 4 - plugins/updater/bzip2-1.0.3/words2 | 5 - plugins/updater/bzip2-1.0.3/words3 | 30 - plugins/updater/bzip2-1.0.3/xmlproc.sh | 114 - plugins/updater/common.cpp | 72 - plugins/updater/common.h | 145 - plugins/updater/conf_comp_dialog.cpp | 204 - plugins/updater/conf_comp_dialog.h | 8 - plugins/updater/conf_dialog.cpp | 289 - plugins/updater/conf_dialog.h | 14 - plugins/updater/extern.cpp | 524 - plugins/updater/extern.h | 20 - plugins/updater/ezxml.c | 967 - plugins/updater/ezxml.h | 165 - plugins/updater/icons.cpp | 56 - plugins/updater/icons.h | 13 - plugins/updater/options.cpp | 508 - plugins/updater/options.h | 49 - plugins/updater/popups.cpp | 212 - plugins/updater/popups.h | 32 - plugins/updater/progress_dialog.cpp | 111 - plugins/updater/progress_dialog.h | 13 - plugins/updater/resource.h | 57 - plugins/updater/resource.rc | 6 - plugins/updater/restart.ico | Bin 2550 -> 0 bytes plugins/updater/scan.cpp | 396 - plugins/updater/scan.h | 18 - plugins/updater/services.cpp | 889 - plugins/updater/services.h | 78 - plugins/updater/socket.cpp | 355 - plugins/updater/socket.h | 20 - plugins/updater/u.ico | Bin 2550 -> 0 bytes plugins/updater/ue.ico | Bin 2550 -> 0 bytes plugins/updater/unzipfile.cpp | 108 - plugins/updater/updater.cpp | 300 - plugins/updater/updater.def | 3 - plugins/updater/updater.h | 19 - plugins/updater/updater.rc | 213 - plugins/updater/updater_10.sln | 26 - plugins/updater/updater_10.vcxproj | 339 - plugins/updater/updater_10.vcxproj.filters | 214 - plugins/updater/utils.cpp | 248 - plugins/updater/utils.h | 20 - plugins/updater/version.h | 32 - plugins/updater/version.rc | 33 - plugins/updater/xmldata.cpp | 495 - plugins/updater/xmldata.h | 29 - plugins/updater/zbin/minizip/crypt.h | 131 - plugins/updater/zbin/minizip/ioapi.c | 246 - plugins/updater/zbin/minizip/ioapi.h | 200 - plugins/updater/zbin/minizip/ioapi_mem.c | 270 - plugins/updater/zbin/minizip/iowin32.c | 389 - plugins/updater/zbin/minizip/iowin32.h | 28 - plugins/updater/zbin/minizip/miniunz.c | 648 - plugins/updater/zbin/minizip/minizip.c | 507 - plugins/updater/zbin/minizip/mztools.c | 281 - plugins/updater/zbin/minizip/mztools.h | 31 - plugins/updater/zbin/minizip/unzip.c | 2125 - plugins/updater/zbin/minizip/unzip.h | 437 - plugins/updater/zbin/minizip/zip.c | 2004 - plugins/updater/zbin/minizip/zip.h | 362 - plugins/updater/zbin/x32/zlib.lib | Bin 10532 -> 0 bytes plugins/updater/zbin/x64/zlib.lib | Bin 10278 -> 0 bytes plugins/updater/zbin/zconf.h | 428 - plugins/updater/zbin/zlib.h | 1613 - 659 files changed, 247056 insertions(+), 137523 deletions(-) create mode 100644 plugins/SpellChecker/Docs/langpack_spellchecker.txt create mode 100644 plugins/SpellChecker/Docs/spellchecker.png create mode 100644 plugins/SpellChecker/Docs/spellchecker_changelog.txt create mode 100644 plugins/SpellChecker/Docs/spellchecker_readme.txt create mode 100644 plugins/SpellChecker/Docs/spellchecker_version.txt create mode 100644 plugins/SpellChecker/Flags-Angelika/Unknown.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/af_ZA.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/ar_AR.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/az_AZ.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/bg_BG.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/bn_IN.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/ca_ES.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/cs_CZ.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/csb_PO.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/cy_GB.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/da_DK.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/de_AT.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/de_CH.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/de_DE.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/el_GR.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/em_ET.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/en_AU.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/en_CA.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/en_GB.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/en_NZ.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/en_US.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/en_ZA.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/es_ES.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/es_MX.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/et_EE.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/fa_IR.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/fi_FI.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/fj_FJ.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/fo_FO.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/fr_BE.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/fr_FR.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/ga_IE.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/gd_GB.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/gl_ES.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/he_IL.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/hi_IN.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/hr_Hr.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/hu_HU.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/id_ID.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/is_IS.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/it_IT.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/km_KH.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/ku_TR.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/lt_LT.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/lu_LU.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/lv_LV.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/mg_MG.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/mi_NZ.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/mn_MN.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/mo_BF.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/mr_IN.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/ms_MY.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/nb_NO.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/ne_NP.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/nl_NL.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/nn_NO.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/nr_ZA.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/ns_ZA.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/or_IN.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/pl_PL.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/pt_BR.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/pt_PT.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/qu_BO.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/ro_RO.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/ru_RU.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/rw_RW.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/sk_SK.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/sl_SI.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/ss_ZA.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/st_ZA.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/sv_SE.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/ta_IN.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/tet_ID.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/tl_PH.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/tn_ZA.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/ts_ZA.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/uk_UA.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/uz_UZ.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/ve_ZA.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/vi_VI.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/xh_ZA.ico create mode 100644 plugins/SpellChecker/Flags-Angelika/zu_ZA.ico create mode 100644 plugins/SpellChecker/Flags/ad.ico create mode 100644 plugins/SpellChecker/Flags/ae.ico create mode 100644 plugins/SpellChecker/Flags/af_ZA.ico create mode 100644 plugins/SpellChecker/Flags/ag.ico create mode 100644 plugins/SpellChecker/Flags/ai.ico create mode 100644 plugins/SpellChecker/Flags/al.ico create mode 100644 plugins/SpellChecker/Flags/am.ico create mode 100644 plugins/SpellChecker/Flags/an.ico create mode 100644 plugins/SpellChecker/Flags/ao.ico create mode 100644 plugins/SpellChecker/Flags/ar.ico create mode 100644 plugins/SpellChecker/Flags/as.ico create mode 100644 plugins/SpellChecker/Flags/aw.ico create mode 100644 plugins/SpellChecker/Flags/ax.ico create mode 100644 plugins/SpellChecker/Flags/az_AZ.ico create mode 100644 plugins/SpellChecker/Flags/ba.ico create mode 100644 plugins/SpellChecker/Flags/bb.ico create mode 100644 plugins/SpellChecker/Flags/bg_BG.ico create mode 100644 plugins/SpellChecker/Flags/bh.ico create mode 100644 plugins/SpellChecker/Flags/bi.ico create mode 100644 plugins/SpellChecker/Flags/bj.ico create mode 100644 plugins/SpellChecker/Flags/bm.ico create mode 100644 plugins/SpellChecker/Flags/bn.ico create mode 100644 plugins/SpellChecker/Flags/bn_IN.ico create mode 100644 plugins/SpellChecker/Flags/bs.ico create mode 100644 plugins/SpellChecker/Flags/bt.ico create mode 100644 plugins/SpellChecker/Flags/bv.ico create mode 100644 plugins/SpellChecker/Flags/by.ico create mode 100644 plugins/SpellChecker/Flags/bz.ico create mode 100644 plugins/SpellChecker/Flags/cc.ico create mode 100644 plugins/SpellChecker/Flags/cd.ico create mode 100644 plugins/SpellChecker/Flags/cf.ico create mode 100644 plugins/SpellChecker/Flags/cg.ico create mode 100644 plugins/SpellChecker/Flags/ci.ico create mode 100644 plugins/SpellChecker/Flags/ck.ico create mode 100644 plugins/SpellChecker/Flags/cl.ico create mode 100644 plugins/SpellChecker/Flags/cm.ico create mode 100644 plugins/SpellChecker/Flags/cn.ico create mode 100644 plugins/SpellChecker/Flags/co.ico create mode 100644 plugins/SpellChecker/Flags/cr.ico create mode 100644 plugins/SpellChecker/Flags/cs_CZ.ico create mode 100644 plugins/SpellChecker/Flags/cu.ico create mode 100644 plugins/SpellChecker/Flags/cv.ico create mode 100644 plugins/SpellChecker/Flags/cx.ico create mode 100644 plugins/SpellChecker/Flags/cy.ico create mode 100644 plugins/SpellChecker/Flags/cy_GB.ico create mode 100644 plugins/SpellChecker/Flags/da_DK.ico create mode 100644 plugins/SpellChecker/Flags/de_AT.ico create mode 100644 plugins/SpellChecker/Flags/de_CH.ico create mode 100644 plugins/SpellChecker/Flags/de_DE.ico create mode 100644 plugins/SpellChecker/Flags/dj.ico create mode 100644 plugins/SpellChecker/Flags/dm.ico create mode 100644 plugins/SpellChecker/Flags/do.ico create mode 100644 plugins/SpellChecker/Flags/dz.ico create mode 100644 plugins/SpellChecker/Flags/ec.ico create mode 100644 plugins/SpellChecker/Flags/eg.ico create mode 100644 plugins/SpellChecker/Flags/eh.ico create mode 100644 plugins/SpellChecker/Flags/el_GR.ico create mode 100644 plugins/SpellChecker/Flags/em_ET.ico create mode 100644 plugins/SpellChecker/Flags/en_AU.ico create mode 100644 plugins/SpellChecker/Flags/en_CA.ico create mode 100644 plugins/SpellChecker/Flags/en_GB.ico create mode 100644 plugins/SpellChecker/Flags/en_NZ.ico create mode 100644 plugins/SpellChecker/Flags/en_US.ico create mode 100644 plugins/SpellChecker/Flags/en_ZA.ico create mode 100644 plugins/SpellChecker/Flags/england.ico create mode 100644 plugins/SpellChecker/Flags/er.ico create mode 100644 plugins/SpellChecker/Flags/es_ES.ico create mode 100644 plugins/SpellChecker/Flags/es_MX.ico create mode 100644 plugins/SpellChecker/Flags/et_EE.ico create mode 100644 plugins/SpellChecker/Flags/fa_IR.ico create mode 100644 plugins/SpellChecker/Flags/fi_FI.ico create mode 100644 plugins/SpellChecker/Flags/fj_FJ.ico create mode 100644 plugins/SpellChecker/Flags/fk.ico create mode 100644 plugins/SpellChecker/Flags/fm.ico create mode 100644 plugins/SpellChecker/Flags/fo_FO.ico create mode 100644 plugins/SpellChecker/Flags/fr_BE.ico create mode 100644 plugins/SpellChecker/Flags/fr_FR.ico create mode 100644 plugins/SpellChecker/Flags/ga.ico create mode 100644 plugins/SpellChecker/Flags/ga_IE.ico create mode 100644 plugins/SpellChecker/Flags/gd.ico create mode 100644 plugins/SpellChecker/Flags/gd_GB.ico create mode 100644 plugins/SpellChecker/Flags/ge.ico create mode 100644 plugins/SpellChecker/Flags/gi.ico create mode 100644 plugins/SpellChecker/Flags/gl.ico create mode 100644 plugins/SpellChecker/Flags/gm.ico create mode 100644 plugins/SpellChecker/Flags/gn.ico create mode 100644 plugins/SpellChecker/Flags/gp.ico create mode 100644 plugins/SpellChecker/Flags/gq.ico create mode 100644 plugins/SpellChecker/Flags/gs.ico create mode 100644 plugins/SpellChecker/Flags/gt.ico create mode 100644 plugins/SpellChecker/Flags/gu.ico create mode 100644 plugins/SpellChecker/Flags/gw.ico create mode 100644 plugins/SpellChecker/Flags/gy.ico create mode 100644 plugins/SpellChecker/Flags/he_IL.ico create mode 100644 plugins/SpellChecker/Flags/hi_IN.ico create mode 100644 plugins/SpellChecker/Flags/hk.ico create mode 100644 plugins/SpellChecker/Flags/hn.ico create mode 100644 plugins/SpellChecker/Flags/hr_HR.ico create mode 100644 plugins/SpellChecker/Flags/ht.ico create mode 100644 plugins/SpellChecker/Flags/hu_HU.ico create mode 100644 plugins/SpellChecker/Flags/id_ID.ico create mode 100644 plugins/SpellChecker/Flags/io.ico create mode 100644 plugins/SpellChecker/Flags/iq.ico create mode 100644 plugins/SpellChecker/Flags/is_IS.ico create mode 100644 plugins/SpellChecker/Flags/it_IT.ico create mode 100644 plugins/SpellChecker/Flags/jm.ico create mode 100644 plugins/SpellChecker/Flags/jo.ico create mode 100644 plugins/SpellChecker/Flags/jp.ico create mode 100644 plugins/SpellChecker/Flags/ke.ico create mode 100644 plugins/SpellChecker/Flags/kg.ico create mode 100644 plugins/SpellChecker/Flags/ki.ico create mode 100644 plugins/SpellChecker/Flags/km.ico create mode 100644 plugins/SpellChecker/Flags/km_KH.ico create mode 100644 plugins/SpellChecker/Flags/kn.ico create mode 100644 plugins/SpellChecker/Flags/kp.ico create mode 100644 plugins/SpellChecker/Flags/kr.ico create mode 100644 plugins/SpellChecker/Flags/ku_TR.ico create mode 100644 plugins/SpellChecker/Flags/kw.ico create mode 100644 plugins/SpellChecker/Flags/ky.ico create mode 100644 plugins/SpellChecker/Flags/kz.ico create mode 100644 plugins/SpellChecker/Flags/la.ico create mode 100644 plugins/SpellChecker/Flags/lb.ico create mode 100644 plugins/SpellChecker/Flags/lc.ico create mode 100644 plugins/SpellChecker/Flags/li.ico create mode 100644 plugins/SpellChecker/Flags/lk.ico create mode 100644 plugins/SpellChecker/Flags/lr.ico create mode 100644 plugins/SpellChecker/Flags/ls.ico create mode 100644 plugins/SpellChecker/Flags/lt_LT.ico create mode 100644 plugins/SpellChecker/Flags/lu_LU.ico create mode 100644 plugins/SpellChecker/Flags/lv_LV.ico create mode 100644 plugins/SpellChecker/Flags/ly.ico create mode 100644 plugins/SpellChecker/Flags/ma.ico create mode 100644 plugins/SpellChecker/Flags/mc.ico create mode 100644 plugins/SpellChecker/Flags/md.ico create mode 100644 plugins/SpellChecker/Flags/mg_MG.ico create mode 100644 plugins/SpellChecker/Flags/mh.ico create mode 100644 plugins/SpellChecker/Flags/mi_NZ.ico create mode 100644 plugins/SpellChecker/Flags/mk.ico create mode 100644 plugins/SpellChecker/Flags/ml.ico create mode 100644 plugins/SpellChecker/Flags/mm.ico create mode 100644 plugins/SpellChecker/Flags/mn_MN.ico create mode 100644 plugins/SpellChecker/Flags/mo.ico create mode 100644 plugins/SpellChecker/Flags/mo_BF.ico create mode 100644 plugins/SpellChecker/Flags/mp.ico create mode 100644 plugins/SpellChecker/Flags/mq.ico create mode 100644 plugins/SpellChecker/Flags/mr.ico create mode 100644 plugins/SpellChecker/Flags/mr_IN.ico create mode 100644 plugins/SpellChecker/Flags/ms.ico create mode 100644 plugins/SpellChecker/Flags/ms_MY.ico create mode 100644 plugins/SpellChecker/Flags/mt.ico create mode 100644 plugins/SpellChecker/Flags/mu.ico create mode 100644 plugins/SpellChecker/Flags/mv.ico create mode 100644 plugins/SpellChecker/Flags/mz.ico create mode 100644 plugins/SpellChecker/Flags/na.ico create mode 100644 plugins/SpellChecker/Flags/nb_NO.ico create mode 100644 plugins/SpellChecker/Flags/nc.ico create mode 100644 plugins/SpellChecker/Flags/ne.ico create mode 100644 plugins/SpellChecker/Flags/ne_NP.ico create mode 100644 plugins/SpellChecker/Flags/nf.ico create mode 100644 plugins/SpellChecker/Flags/ng.ico create mode 100644 plugins/SpellChecker/Flags/ni.ico create mode 100644 plugins/SpellChecker/Flags/nl_NL.ico create mode 100644 plugins/SpellChecker/Flags/nn_NO.ico create mode 100644 plugins/SpellChecker/Flags/nr.ico create mode 100644 plugins/SpellChecker/Flags/nr_ZA.ico create mode 100644 plugins/SpellChecker/Flags/ns_ZA.ico create mode 100644 plugins/SpellChecker/Flags/nu.ico create mode 100644 plugins/SpellChecker/Flags/ny_MW.ico create mode 100644 plugins/SpellChecker/Flags/om.ico create mode 100644 plugins/SpellChecker/Flags/or_IN.ico create mode 100644 plugins/SpellChecker/Flags/pa.ico create mode 100644 plugins/SpellChecker/Flags/pe.ico create mode 100644 plugins/SpellChecker/Flags/pf.ico create mode 100644 plugins/SpellChecker/Flags/pg.ico create mode 100644 plugins/SpellChecker/Flags/pk.ico create mode 100644 plugins/SpellChecker/Flags/pl_PL.ico create mode 100644 plugins/SpellChecker/Flags/pm.ico create mode 100644 plugins/SpellChecker/Flags/pn.ico create mode 100644 plugins/SpellChecker/Flags/pr.ico create mode 100644 plugins/SpellChecker/Flags/ps.ico create mode 100644 plugins/SpellChecker/Flags/pt_BR.ico create mode 100644 plugins/SpellChecker/Flags/pt_PT.ico create mode 100644 plugins/SpellChecker/Flags/pw.ico create mode 100644 plugins/SpellChecker/Flags/py.ico create mode 100644 plugins/SpellChecker/Flags/qa.ico create mode 100644 plugins/SpellChecker/Flags/qu_BO.ico create mode 100644 plugins/SpellChecker/Flags/readme.txt create mode 100644 plugins/SpellChecker/Flags/ro_BO.ico create mode 100644 plugins/SpellChecker/Flags/ro_RO.ico create mode 100644 plugins/SpellChecker/Flags/ru_RU.ico create mode 100644 plugins/SpellChecker/Flags/rw_RW.ico create mode 100644 plugins/SpellChecker/Flags/sa.ico create mode 100644 plugins/SpellChecker/Flags/sb.ico create mode 100644 plugins/SpellChecker/Flags/sc.ico create mode 100644 plugins/SpellChecker/Flags/sd.ico create mode 100644 plugins/SpellChecker/Flags/sg.ico create mode 100644 plugins/SpellChecker/Flags/sh.ico create mode 100644 plugins/SpellChecker/Flags/sk_SK.ico create mode 100644 plugins/SpellChecker/Flags/sl.ico create mode 100644 plugins/SpellChecker/Flags/sl_SI.ico create mode 100644 plugins/SpellChecker/Flags/sm.ico create mode 100644 plugins/SpellChecker/Flags/sn.ico create mode 100644 plugins/SpellChecker/Flags/so.ico create mode 100644 plugins/SpellChecker/Flags/sr.ico create mode 100644 plugins/SpellChecker/Flags/sr_CS.ico create mode 100644 plugins/SpellChecker/Flags/ss_ZA.ico create mode 100644 plugins/SpellChecker/Flags/st.ico create mode 100644 plugins/SpellChecker/Flags/st_ZA.ico create mode 100644 plugins/SpellChecker/Flags/sv.ico create mode 100644 plugins/SpellChecker/Flags/sv_SE.ico create mode 100644 plugins/SpellChecker/Flags/sy.ico create mode 100644 plugins/SpellChecker/Flags/tc.ico create mode 100644 plugins/SpellChecker/Flags/td.ico create mode 100644 plugins/SpellChecker/Flags/tet_ID.ico create mode 100644 plugins/SpellChecker/Flags/tf.ico create mode 100644 plugins/SpellChecker/Flags/tg.ico create mode 100644 plugins/SpellChecker/Flags/th.ico create mode 100644 plugins/SpellChecker/Flags/tj.ico create mode 100644 plugins/SpellChecker/Flags/tk.ico create mode 100644 plugins/SpellChecker/Flags/tl.ico create mode 100644 plugins/SpellChecker/Flags/tl_PH.ico create mode 100644 plugins/SpellChecker/Flags/tm.ico create mode 100644 plugins/SpellChecker/Flags/tn.ico create mode 100644 plugins/SpellChecker/Flags/tn_ZA.ico create mode 100644 plugins/SpellChecker/Flags/to.ico create mode 100644 plugins/SpellChecker/Flags/ts_ZA.ico create mode 100644 plugins/SpellChecker/Flags/tt.ico create mode 100644 plugins/SpellChecker/Flags/tv.ico create mode 100644 plugins/SpellChecker/Flags/tw.ico create mode 100644 plugins/SpellChecker/Flags/tz.ico create mode 100644 plugins/SpellChecker/Flags/ug.ico create mode 100644 plugins/SpellChecker/Flags/uk_UA.ico create mode 100644 plugins/SpellChecker/Flags/um.ico create mode 100644 plugins/SpellChecker/Flags/uy.ico create mode 100644 plugins/SpellChecker/Flags/uz_UZ.ico create mode 100644 plugins/SpellChecker/Flags/va.ico create mode 100644 plugins/SpellChecker/Flags/vc.ico create mode 100644 plugins/SpellChecker/Flags/ve.ico create mode 100644 plugins/SpellChecker/Flags/ve_ZA.ico create mode 100644 plugins/SpellChecker/Flags/vg.ico create mode 100644 plugins/SpellChecker/Flags/vi.ico create mode 100644 plugins/SpellChecker/Flags/vi_VI.ico create mode 100644 plugins/SpellChecker/Flags/vu.ico create mode 100644 plugins/SpellChecker/Flags/wf.ico create mode 100644 plugins/SpellChecker/Flags/ws.ico create mode 100644 plugins/SpellChecker/Flags/xh_ZA.ico create mode 100644 plugins/SpellChecker/Flags/ye.ico create mode 100644 plugins/SpellChecker/Flags/yt.ico create mode 100644 plugins/SpellChecker/Flags/zm.ico create mode 100644 plugins/SpellChecker/Flags/zu_ZA.ico create mode 100644 plugins/SpellChecker/Flags/zw.ico create mode 100644 plugins/SpellChecker/RichEdit.cpp create mode 100644 plugins/SpellChecker/RichEdit.h create mode 100644 plugins/SpellChecker/ZIP/Dictionaries/en_US.aff create mode 100644 plugins/SpellChecker/ZIP/Dictionaries/en_US.dic create mode 100644 plugins/SpellChecker/ZIP/Icons/flags.dll create mode 100644 plugins/SpellChecker/ZIP/doit.bat create mode 100644 plugins/SpellChecker/ZIP/zip.exe create mode 100644 plugins/SpellChecker/ardialog.cpp create mode 100644 plugins/SpellChecker/ardialog.h create mode 100644 plugins/SpellChecker/autoreplace.cpp create mode 100644 plugins/SpellChecker/autoreplace.h create mode 100644 plugins/SpellChecker/codepages.cpp create mode 100644 plugins/SpellChecker/commons.h create mode 100644 plugins/SpellChecker/dictionary.cpp create mode 100644 plugins/SpellChecker/dictionary.h create mode 100644 plugins/SpellChecker/flags-angelika.rc create mode 100644 plugins/SpellChecker/flags-angelika.sln create mode 100644 plugins/SpellChecker/flags-angelika.vcproj create mode 100644 plugins/SpellChecker/flags.rc create mode 100644 plugins/SpellChecker/flags.sln create mode 100644 plugins/SpellChecker/flags.vcproj create mode 100644 plugins/SpellChecker/hunspell/README create mode 100644 plugins/SpellChecker/hunspell/affentry.cxx create mode 100644 plugins/SpellChecker/hunspell/affentry.hxx create mode 100644 plugins/SpellChecker/hunspell/affixmgr.cxx create mode 100644 plugins/SpellChecker/hunspell/affixmgr.hxx create mode 100644 plugins/SpellChecker/hunspell/atypes.hxx create mode 100644 plugins/SpellChecker/hunspell/baseaffix.hxx create mode 100644 plugins/SpellChecker/hunspell/config.h create mode 100644 plugins/SpellChecker/hunspell/csutil.cxx create mode 100644 plugins/SpellChecker/hunspell/csutil.hxx create mode 100644 plugins/SpellChecker/hunspell/dictmgr.cxx create mode 100644 plugins/SpellChecker/hunspell/dictmgr.hxx create mode 100644 plugins/SpellChecker/hunspell/filemgr.cxx create mode 100644 plugins/SpellChecker/hunspell/filemgr.hxx create mode 100644 plugins/SpellChecker/hunspell/hashmgr.cxx create mode 100644 plugins/SpellChecker/hunspell/hashmgr.hxx create mode 100644 plugins/SpellChecker/hunspell/htypes.hxx create mode 100644 plugins/SpellChecker/hunspell/hunspell.cxx create mode 100644 plugins/SpellChecker/hunspell/hunspell.dsp create mode 100644 plugins/SpellChecker/hunspell/hunspell.h create mode 100644 plugins/SpellChecker/hunspell/hunspell.hxx create mode 100644 plugins/SpellChecker/hunspell/hunvisapi.h create mode 100644 plugins/SpellChecker/hunspell/hunzip.cxx create mode 100644 plugins/SpellChecker/hunspell/hunzip.hxx create mode 100644 plugins/SpellChecker/hunspell/langnum.hxx create mode 100644 plugins/SpellChecker/hunspell/license.hunspell create mode 100644 plugins/SpellChecker/hunspell/license.myspell create mode 100644 plugins/SpellChecker/hunspell/phonet.cxx create mode 100644 plugins/SpellChecker/hunspell/phonet.hxx create mode 100644 plugins/SpellChecker/hunspell/replist.cxx create mode 100644 plugins/SpellChecker/hunspell/replist.hxx create mode 100644 plugins/SpellChecker/hunspell/suggestmgr.cxx create mode 100644 plugins/SpellChecker/hunspell/suggestmgr.hxx create mode 100644 plugins/SpellChecker/hunspell/utf_info.cxx create mode 100644 plugins/SpellChecker/hunspell/w_char.hxx create mode 100644 plugins/SpellChecker/m_spellchecker.h create mode 100644 plugins/SpellChecker/options.cpp create mode 100644 plugins/SpellChecker/options.h create mode 100644 plugins/SpellChecker/res/no_spellcheck.ico create mode 100644 plugins/SpellChecker/res/spellcheck.ico create mode 100644 plugins/SpellChecker/res/unknown.ico create mode 100644 plugins/SpellChecker/resource.h create mode 100644 plugins/SpellChecker/resource.rc create mode 100644 plugins/SpellChecker/spellchecker.cpp create mode 100644 plugins/SpellChecker/spellchecker.sln create mode 100644 plugins/SpellChecker/spellchecker.vcxproj create mode 100644 plugins/SpellChecker/spellchecker.vcxproj.filters create mode 100644 plugins/SpellChecker/srmm.spellchecker.patch create mode 100644 plugins/Updater/Docs/licence_updater.txt create mode 100644 plugins/Updater/allocations.cpp create mode 100644 plugins/Updater/allocations.h create mode 100644 plugins/Updater/bzip2-1.0.3/CHANGES create mode 100644 plugins/Updater/bzip2-1.0.3/LICENSE create mode 100644 plugins/Updater/bzip2-1.0.3/Makefile create mode 100644 plugins/Updater/bzip2-1.0.3/Makefile-libbz2_so create mode 100644 plugins/Updater/bzip2-1.0.3/README create mode 100644 plugins/Updater/bzip2-1.0.3/README.COMPILATION.PROBLEMS create mode 100644 plugins/Updater/bzip2-1.0.3/README.XML.STUFF create mode 100644 plugins/Updater/bzip2-1.0.3/Y2K_INFO create mode 100644 plugins/Updater/bzip2-1.0.3/blocksort.c create mode 100644 plugins/Updater/bzip2-1.0.3/bz-common.xsl create mode 100644 plugins/Updater/bzip2-1.0.3/bz-fo.xsl create mode 100644 plugins/Updater/bzip2-1.0.3/bz-html.xsl create mode 100644 plugins/Updater/bzip2-1.0.3/bzdiff create mode 100644 plugins/Updater/bzip2-1.0.3/bzdiff.1 create mode 100644 plugins/Updater/bzip2-1.0.3/bzgrep create mode 100644 plugins/Updater/bzip2-1.0.3/bzgrep.1 create mode 100644 plugins/Updater/bzip2-1.0.3/bzip.css create mode 100644 plugins/Updater/bzip2-1.0.3/bzip2.1 create mode 100644 plugins/Updater/bzip2-1.0.3/bzip2.1.preformatted create mode 100644 plugins/Updater/bzip2-1.0.3/bzip2.c create mode 100644 plugins/Updater/bzip2-1.0.3/bzip2.txt create mode 100644 plugins/Updater/bzip2-1.0.3/bzip2recover.c create mode 100644 plugins/Updater/bzip2-1.0.3/bzlib.c create mode 100644 plugins/Updater/bzip2-1.0.3/bzlib.h create mode 100644 plugins/Updater/bzip2-1.0.3/bzlib_private.h create mode 100644 plugins/Updater/bzip2-1.0.3/bzmore create mode 100644 plugins/Updater/bzip2-1.0.3/bzmore.1 create mode 100644 plugins/Updater/bzip2-1.0.3/compress.c create mode 100644 plugins/Updater/bzip2-1.0.3/crctable.c create mode 100644 plugins/Updater/bzip2-1.0.3/decompress.c create mode 100644 plugins/Updater/bzip2-1.0.3/dlltest.c create mode 100644 plugins/Updater/bzip2-1.0.3/dlltest.dsp create mode 100644 plugins/Updater/bzip2-1.0.3/entities.xml create mode 100644 plugins/Updater/bzip2-1.0.3/format.pl create mode 100644 plugins/Updater/bzip2-1.0.3/huffman.c create mode 100644 plugins/Updater/bzip2-1.0.3/libbz2.001 create mode 100644 plugins/Updater/bzip2-1.0.3/libbz2.def create mode 100644 plugins/Updater/bzip2-1.0.3/libbz2.dll create mode 100644 plugins/Updater/bzip2-1.0.3/libbz2.dsp create mode 100644 plugins/Updater/bzip2-1.0.3/libbz2.dsw create mode 100644 plugins/Updater/bzip2-1.0.3/libbz2.ilk create mode 100644 plugins/Updater/bzip2-1.0.3/libbz2.plg create mode 100644 plugins/Updater/bzip2-1.0.3/makefile.msc create mode 100644 plugins/Updater/bzip2-1.0.3/manual.html create mode 100644 plugins/Updater/bzip2-1.0.3/manual.pdf create mode 100644 plugins/Updater/bzip2-1.0.3/manual.ps create mode 100644 plugins/Updater/bzip2-1.0.3/manual.xml create mode 100644 plugins/Updater/bzip2-1.0.3/mk251.c create mode 100644 plugins/Updater/bzip2-1.0.3/randtable.c create mode 100644 plugins/Updater/bzip2-1.0.3/sample1.bz2 create mode 100644 plugins/Updater/bzip2-1.0.3/sample1.ref create mode 100644 plugins/Updater/bzip2-1.0.3/sample2.bz2 create mode 100644 plugins/Updater/bzip2-1.0.3/sample2.ref create mode 100644 plugins/Updater/bzip2-1.0.3/sample3.bz2 create mode 100644 plugins/Updater/bzip2-1.0.3/sample3.ref create mode 100644 plugins/Updater/bzip2-1.0.3/spewG.c create mode 100644 plugins/Updater/bzip2-1.0.3/unzcrash.c create mode 100644 plugins/Updater/bzip2-1.0.3/words0 create mode 100644 plugins/Updater/bzip2-1.0.3/words1 create mode 100644 plugins/Updater/bzip2-1.0.3/words2 create mode 100644 plugins/Updater/bzip2-1.0.3/words3 create mode 100644 plugins/Updater/bzip2-1.0.3/xmlproc.sh create mode 100644 plugins/Updater/common.cpp create mode 100644 plugins/Updater/common.h create mode 100644 plugins/Updater/conf_comp_dialog.cpp create mode 100644 plugins/Updater/conf_comp_dialog.h create mode 100644 plugins/Updater/conf_dialog.cpp create mode 100644 plugins/Updater/conf_dialog.h create mode 100644 plugins/Updater/extern.cpp create mode 100644 plugins/Updater/extern.h create mode 100644 plugins/Updater/ezxml.c create mode 100644 plugins/Updater/ezxml.h create mode 100644 plugins/Updater/icons.cpp create mode 100644 plugins/Updater/icons.h create mode 100644 plugins/Updater/options.cpp create mode 100644 plugins/Updater/options.h create mode 100644 plugins/Updater/popups.cpp create mode 100644 plugins/Updater/popups.h create mode 100644 plugins/Updater/progress_dialog.cpp create mode 100644 plugins/Updater/progress_dialog.h create mode 100644 plugins/Updater/resource.h create mode 100644 plugins/Updater/resource.rc create mode 100644 plugins/Updater/restart.ico create mode 100644 plugins/Updater/scan.cpp create mode 100644 plugins/Updater/scan.h create mode 100644 plugins/Updater/services.cpp create mode 100644 plugins/Updater/services.h create mode 100644 plugins/Updater/socket.cpp create mode 100644 plugins/Updater/socket.h create mode 100644 plugins/Updater/u.ico create mode 100644 plugins/Updater/ue.ico create mode 100644 plugins/Updater/unzipfile.cpp create mode 100644 plugins/Updater/updater.cpp create mode 100644 plugins/Updater/updater.def create mode 100644 plugins/Updater/updater.h create mode 100644 plugins/Updater/updater.rc create mode 100644 plugins/Updater/updater_10.sln create mode 100644 plugins/Updater/updater_10.vcxproj create mode 100644 plugins/Updater/updater_10.vcxproj.filters create mode 100644 plugins/Updater/utils.cpp create mode 100644 plugins/Updater/utils.h create mode 100644 plugins/Updater/version.h create mode 100644 plugins/Updater/version.rc create mode 100644 plugins/Updater/xmldata.cpp create mode 100644 plugins/Updater/xmldata.h create mode 100644 plugins/Updater/zbin/minizip/crypt.h create mode 100644 plugins/Updater/zbin/minizip/ioapi.c create mode 100644 plugins/Updater/zbin/minizip/ioapi.h create mode 100644 plugins/Updater/zbin/minizip/ioapi_mem.c create mode 100644 plugins/Updater/zbin/minizip/iowin32.c create mode 100644 plugins/Updater/zbin/minizip/iowin32.h create mode 100644 plugins/Updater/zbin/minizip/miniunz.c create mode 100644 plugins/Updater/zbin/minizip/minizip.c create mode 100644 plugins/Updater/zbin/minizip/mztools.c create mode 100644 plugins/Updater/zbin/minizip/mztools.h create mode 100644 plugins/Updater/zbin/minizip/unzip.c create mode 100644 plugins/Updater/zbin/minizip/unzip.h create mode 100644 plugins/Updater/zbin/minizip/zip.c create mode 100644 plugins/Updater/zbin/minizip/zip.h create mode 100644 plugins/Updater/zbin/x32/zlib.lib create mode 100644 plugins/Updater/zbin/x64/zlib.lib create mode 100644 plugins/Updater/zbin/zconf.h create mode 100644 plugins/Updater/zbin/zlib.h delete mode 100644 plugins/updater/Docs/licence_updater.txt delete mode 100644 plugins/updater/allocations.cpp delete mode 100644 plugins/updater/allocations.h delete mode 100644 plugins/updater/bzip2-1.0.3/CHANGES delete mode 100644 plugins/updater/bzip2-1.0.3/LICENSE delete mode 100644 plugins/updater/bzip2-1.0.3/Makefile delete mode 100644 plugins/updater/bzip2-1.0.3/Makefile-libbz2_so delete mode 100644 plugins/updater/bzip2-1.0.3/README delete mode 100644 plugins/updater/bzip2-1.0.3/README.COMPILATION.PROBLEMS delete mode 100644 plugins/updater/bzip2-1.0.3/README.XML.STUFF delete mode 100644 plugins/updater/bzip2-1.0.3/Y2K_INFO delete mode 100644 plugins/updater/bzip2-1.0.3/blocksort.c delete mode 100644 plugins/updater/bzip2-1.0.3/bz-common.xsl delete mode 100644 plugins/updater/bzip2-1.0.3/bz-fo.xsl delete mode 100644 plugins/updater/bzip2-1.0.3/bz-html.xsl delete mode 100644 plugins/updater/bzip2-1.0.3/bzdiff delete mode 100644 plugins/updater/bzip2-1.0.3/bzdiff.1 delete mode 100644 plugins/updater/bzip2-1.0.3/bzgrep delete mode 100644 plugins/updater/bzip2-1.0.3/bzgrep.1 delete mode 100644 plugins/updater/bzip2-1.0.3/bzip.css delete mode 100644 plugins/updater/bzip2-1.0.3/bzip2.1 delete mode 100644 plugins/updater/bzip2-1.0.3/bzip2.1.preformatted delete mode 100644 plugins/updater/bzip2-1.0.3/bzip2.c delete mode 100644 plugins/updater/bzip2-1.0.3/bzip2.txt delete mode 100644 plugins/updater/bzip2-1.0.3/bzip2recover.c delete mode 100644 plugins/updater/bzip2-1.0.3/bzlib.c delete mode 100644 plugins/updater/bzip2-1.0.3/bzlib.h delete mode 100644 plugins/updater/bzip2-1.0.3/bzlib_private.h delete mode 100644 plugins/updater/bzip2-1.0.3/bzmore delete mode 100644 plugins/updater/bzip2-1.0.3/bzmore.1 delete mode 100644 plugins/updater/bzip2-1.0.3/compress.c delete mode 100644 plugins/updater/bzip2-1.0.3/crctable.c delete mode 100644 plugins/updater/bzip2-1.0.3/decompress.c delete mode 100644 plugins/updater/bzip2-1.0.3/dlltest.c delete mode 100644 plugins/updater/bzip2-1.0.3/dlltest.dsp delete mode 100644 plugins/updater/bzip2-1.0.3/entities.xml delete mode 100644 plugins/updater/bzip2-1.0.3/format.pl delete mode 100644 plugins/updater/bzip2-1.0.3/huffman.c delete mode 100644 plugins/updater/bzip2-1.0.3/libbz2.001 delete mode 100644 plugins/updater/bzip2-1.0.3/libbz2.def delete mode 100644 plugins/updater/bzip2-1.0.3/libbz2.dll delete mode 100644 plugins/updater/bzip2-1.0.3/libbz2.dsp delete mode 100644 plugins/updater/bzip2-1.0.3/libbz2.dsw delete mode 100644 plugins/updater/bzip2-1.0.3/libbz2.ilk delete mode 100644 plugins/updater/bzip2-1.0.3/libbz2.plg delete mode 100644 plugins/updater/bzip2-1.0.3/makefile.msc delete mode 100644 plugins/updater/bzip2-1.0.3/manual.html delete mode 100644 plugins/updater/bzip2-1.0.3/manual.pdf delete mode 100644 plugins/updater/bzip2-1.0.3/manual.ps delete mode 100644 plugins/updater/bzip2-1.0.3/manual.xml delete mode 100644 plugins/updater/bzip2-1.0.3/mk251.c delete mode 100644 plugins/updater/bzip2-1.0.3/randtable.c delete mode 100644 plugins/updater/bzip2-1.0.3/sample1.bz2 delete mode 100644 plugins/updater/bzip2-1.0.3/sample1.ref delete mode 100644 plugins/updater/bzip2-1.0.3/sample2.bz2 delete mode 100644 plugins/updater/bzip2-1.0.3/sample2.ref delete mode 100644 plugins/updater/bzip2-1.0.3/sample3.bz2 delete mode 100644 plugins/updater/bzip2-1.0.3/sample3.ref delete mode 100644 plugins/updater/bzip2-1.0.3/spewG.c delete mode 100644 plugins/updater/bzip2-1.0.3/unzcrash.c delete mode 100644 plugins/updater/bzip2-1.0.3/words0 delete mode 100644 plugins/updater/bzip2-1.0.3/words1 delete mode 100644 plugins/updater/bzip2-1.0.3/words2 delete mode 100644 plugins/updater/bzip2-1.0.3/words3 delete mode 100644 plugins/updater/bzip2-1.0.3/xmlproc.sh delete mode 100644 plugins/updater/common.cpp delete mode 100644 plugins/updater/common.h delete mode 100644 plugins/updater/conf_comp_dialog.cpp delete mode 100644 plugins/updater/conf_comp_dialog.h delete mode 100644 plugins/updater/conf_dialog.cpp delete mode 100644 plugins/updater/conf_dialog.h delete mode 100644 plugins/updater/extern.cpp delete mode 100644 plugins/updater/extern.h delete mode 100644 plugins/updater/ezxml.c delete mode 100644 plugins/updater/ezxml.h delete mode 100644 plugins/updater/icons.cpp delete mode 100644 plugins/updater/icons.h delete mode 100644 plugins/updater/options.cpp delete mode 100644 plugins/updater/options.h delete mode 100644 plugins/updater/popups.cpp delete mode 100644 plugins/updater/popups.h delete mode 100644 plugins/updater/progress_dialog.cpp delete mode 100644 plugins/updater/progress_dialog.h delete mode 100644 plugins/updater/resource.h delete mode 100644 plugins/updater/resource.rc delete mode 100644 plugins/updater/restart.ico delete mode 100644 plugins/updater/scan.cpp delete mode 100644 plugins/updater/scan.h delete mode 100644 plugins/updater/services.cpp delete mode 100644 plugins/updater/services.h delete mode 100644 plugins/updater/socket.cpp delete mode 100644 plugins/updater/socket.h delete mode 100644 plugins/updater/u.ico delete mode 100644 plugins/updater/ue.ico delete mode 100644 plugins/updater/unzipfile.cpp delete mode 100644 plugins/updater/updater.cpp delete mode 100644 plugins/updater/updater.def delete mode 100644 plugins/updater/updater.h delete mode 100644 plugins/updater/updater.rc delete mode 100644 plugins/updater/updater_10.sln delete mode 100644 plugins/updater/updater_10.vcxproj delete mode 100644 plugins/updater/updater_10.vcxproj.filters delete mode 100644 plugins/updater/utils.cpp delete mode 100644 plugins/updater/utils.h delete mode 100644 plugins/updater/version.h delete mode 100644 plugins/updater/version.rc delete mode 100644 plugins/updater/xmldata.cpp delete mode 100644 plugins/updater/xmldata.h delete mode 100644 plugins/updater/zbin/minizip/crypt.h delete mode 100644 plugins/updater/zbin/minizip/ioapi.c delete mode 100644 plugins/updater/zbin/minizip/ioapi.h delete mode 100644 plugins/updater/zbin/minizip/ioapi_mem.c delete mode 100644 plugins/updater/zbin/minizip/iowin32.c delete mode 100644 plugins/updater/zbin/minizip/iowin32.h delete mode 100644 plugins/updater/zbin/minizip/miniunz.c delete mode 100644 plugins/updater/zbin/minizip/minizip.c delete mode 100644 plugins/updater/zbin/minizip/mztools.c delete mode 100644 plugins/updater/zbin/minizip/mztools.h delete mode 100644 plugins/updater/zbin/minizip/unzip.c delete mode 100644 plugins/updater/zbin/minizip/unzip.h delete mode 100644 plugins/updater/zbin/minizip/zip.c delete mode 100644 plugins/updater/zbin/minizip/zip.h delete mode 100644 plugins/updater/zbin/x32/zlib.lib delete mode 100644 plugins/updater/zbin/x64/zlib.lib delete mode 100644 plugins/updater/zbin/zconf.h delete mode 100644 plugins/updater/zbin/zlib.h (limited to 'plugins') diff --git a/plugins/SpellChecker/Docs/langpack_spellchecker.txt b/plugins/SpellChecker/Docs/langpack_spellchecker.txt new file mode 100644 index 0000000000..6bd580b2eb --- /dev/null +++ b/plugins/SpellChecker/Docs/langpack_spellchecker.txt @@ -0,0 +1,74 @@ +; Spell Checker +; Author: Pescuma + +; Options + +[Message Sessions] +[Spell Checker] +[Auto-replacements] + +[Dictionaries] +[Custom Dictionaries] +[Flags DLL] + +[Enabled] +[Disabled] + +[Spell Checker] +[Default language:] +[Auto-replace words with dictionary suggestions] +[Ignore words with numbers] +[Ignore words in UPPER CASE] +[Download more dictionaries] + +[Advanced] +[Underline type:] +[Line] +[Dotted] +[Dash] +[Dash dot] +[Dash dot dot] +[Wave] +[Thick] +[Show corrections in submenu] +[Show all corrections in context menu (takes more time to show)] +[Show wrong word] +[Use flags] +[Use input language to select dictionary] + +[Replacements] +[Enable auto-replacements] +[Language:] +[Wrong word] +[Correction] + + +; Menu + +[Language] +[Enable spell checking] +[Always replace with] +[Ignore all] +[Add to dictionary] +[Wrong word: %s] +[Other...] + + +; Add auto-replace word + +[Add auto-replace word] +[Wrong word:] +[Correction:] +[No separators and all lowercase chars] +[Use variables in correction] +[The wrong word can't be empty!] +[The correction can't be empty!] +[The correction can't be equal to the wrong word!] +[Wrong Correction] +[The wrong word typed by the user] + + +; Message Box + +[Something is wrong with the message window.\n\nThis usually means one of two things:\n- In tabSRMM the checkbox 'Enable event API' is disabled or\n- You are using SRMM (which don't support Spell Checker).\n In this case, please install tabSRMM or Scriver.] +[There are spelling errors. Are you sure you want to send this message?] diff --git a/plugins/SpellChecker/Docs/spellchecker.png b/plugins/SpellChecker/Docs/spellchecker.png new file mode 100644 index 0000000000..14812f5d87 Binary files /dev/null and b/plugins/SpellChecker/Docs/spellchecker.png differ diff --git a/plugins/SpellChecker/Docs/spellchecker_changelog.txt b/plugins/SpellChecker/Docs/spellchecker_changelog.txt new file mode 100644 index 0000000000..d34330f5bb --- /dev/null +++ b/plugins/SpellChecker/Docs/spellchecker_changelog.txt @@ -0,0 +1,235 @@ +Spell Checker + +Changelog: + +. 0.2.6.0 + + improved support for UserInfoEx Plugin + + added Updater support for Addons Page (pluginInfo.shortName didnt match Addons name due to separate Unicode/ANSI version) + You will have to enable beta Versions in Updater again if you want beta versions + + added error count to confirmation message + + added support for Miranda IM path API + the new default path for custom dictionaries is now %miranda_userdata%\Dictionaries + This change allows per-profile-dictionaries + IMPORTANT: You may have to move your custom dictionaries, as these are not moved automatically!! + IMPORTANT: You also need at least Folders plugin 0.1.5.1 or newer!! + * Updated some header files + ! Fixed a bug with translated hotkeys (Fixes issue 115) + - removed PLUGININFO support, since it is obsolete + * internal Unicode transition + * increased options dialog size a bit for translators + * Fixed lookup of Language in UserInfo module of metacontacts + * updated Hunspell library to version 1.3.1 + +. 0.2.5.0 + * Removed space in frame names in options + * Added notification if using SRMM (closes issue #92) + * Fix for autoreplacement of URL like texts (closes issue #127) + * Better speed (but it is not "underscore-friendly" by default anymore) + + Added hotkey to disable spell checker in dialog window (closes issue #132) + * Fix icons in Vista + +. 0.2.4.0 + + Applied "patch" from miranda-avd with x64 code (but no build using it yet) + * Use default input language instead of keyboard layout to get language name (fixes issue #124) + * Ctr-Z is now working again (fixes issue #125) + +. 0.2.3.0 + + Option to don't send message with error + * Better getting language name for non-english windows + +. 0.2.2.0 + + Allow replacements that only change case + + Ignore words with numbers + * Fix for last char in a wrapped word + * Enable replacements is now on replacement dialog + +. 0.2.1.0 + * Fixes for translation + * Better performance for backspace and delete + * Keep without redrawing when replacing text + * Fix for some cyrilic letters + +. 0.2.0.0 + + Allow editing of auto-replacements + + Allow variables in auto-replacements + + Better handling of URLs + * Fix for a lot of replacements at same line + PS: The auto-replacement files (*.ar) are now stored as UTF-8, so you may need to fix some old replacements + +. 0.1.2.0 + + Play nicer with underlines in IRC (it's not perfect) + * Creates custom dicts folder if don't exist + * Fix for tabSRMM timeout ballon + +. 0.1.1.0 + + Remove underline on send to avoid sending it to the contact (Fixes issue 101) + + Use language set with UInfoEx + * Force one last check before send to replace errors (Fixes issue 67) + +. 0.1.0.5 + * Fix for ICQ contacts with languages + +. 0.1.0.4 + * Fix for codepage + +. 0.1.0.3 + + Updated to Hunspell 1.2.8 + * Fix for wordchar in utf8 (fixes French dict) + +. 0.1.0.2 + + Updated to Hunspell 1.2.2b (closes issue 16) + + Use also TRY as word chars (closes issue 13) + +. 0.1.0.1 + + Will use also language files avaiable for other apps (Thunderbird and Firefox by now) (thanks yb) + * Fix for showing popup menu in group chat + + Now it can patch languages that are only equal in prefix (thanks yb) + +. 0.1.0.0 + + First release in FL + +. 0.0.4.0 + * Updated to Hunspell 1.2.1 + * Changes for compatibility with meSpeak + +. 0.0.3.2 + * Renamed to Use input language to select dictionary + +. 0.0.3.1 + + Option to use keyboard locale to select dictionary (disabled by default) + +. 0.0.3.0 + + Show dict flag on *srmm status bar + +. 0.0.2.9 + * Fix for big dict names + + Put back folders support for flags.dll + + Added de_frami_neu to list of known dict names + +. 0.0.2.8 + * Fix for wordchars (you can revert the WORDCHARS to old values) + + Option to name the dict changing the db + +. 0.0.2.7 + * Fix to allow editing .ar by hand + * Fix for crash in options + - Changed how icons are read - now only throught IcoLib or Icons\flags.dll + + Option to only replace user-defined words + + New dialog to add a word to always auto-replace + + Updated to latest version of Hunspell (side-effect: WORDCHARS now have to have all chars) + +. 0.0.2.6 + * Try to fix freeze when making an suggestion + +. 0.0.2.5 + + Updated Hunspell to version 1.1.5 + * Fix to avoid sending typing notification when correcting words + * Fix to store custom dics as encoded strings + +. 0.0.2.4 + + Added support for Miranda 0.8 + * Fixed big bad bug in text reading from richedit + +. 0.0.2.3 + * Fix for resource leak (thanks borkra) + +. 0.0.2.2 + * Better handling of icons (thanks borkra) + * Don't crash anymore if default SRMM is installed (thanks borkra) + +. 0.0.2.1 + + Better handling of URLs + +. 0.0.2.0 + + Now ignores URLs and email addresses + + Added option to ignore words in UPPER CASE + + Added custom folder for flags.dll + * Use number as part of words too + * Changed text of show all corrections + * Fix for interation with srmm icon API + +. 0.0.1.9 + * New icons for status bar (thanks Angeli-Ka) + * Changed links to new site + + Option to show wrong word + + Load flags from flags.dll (thanks Faith Healer) + +. 0.0.1.8 + * Fix for crash + +. 0.0.1.7 + * Better handling of poppup menus + +. 0.0.1.6 + + Option to use flags + + Unknown flag + + Flags in other menus too + * Fix in typo in ShowAllCorrections setting. Sorry but the value of this setting will need to be reset + +. 0.0.1.5 + * Fix for checking while selecting + * Fix for CTRL-Z + * Fix for add words to dict + + Added icon to status bar (needs improviment) + + Start adding flags (thanks to famfamfam.com for the icons) + +. 0.0.1.4 + + Option to show all wrong words in menu + * Fix for check while selecting + + Added one more codepage to list of known ones + +. 0.0.1.3 + * Fix for disable in context menu + * Fix to not change fnt settings in tabSRMM (only underline is changed - can't do anything about it) + * Fix to ignore char when holding CTRL + +. 0.0.1.2 + * Fix in options + + Added hwndOwner param into SPELLCHECKER_POPUPMENU struct + +. 0.0.1.1 + + Don't check if field is read-only + * Fix for services + +. 0.0.1.0 + + Auto replace + +. 0.0.0.9 + * Fix for auto-replace + + Parse max 3 lines when typing (to speed a little) + +. 0.0.0.8 + * Fix for strange things + +. 0.0.0.7 + + Unicode version (should fix encoding problems) + + Better way to handle typing + + Underline type + + langpack txt + * Fixes + +. 0.0.0.6 + + Try to guess contact dict language from spoken language in contact setting + * fix for srmm bkg color + +. 0.0.0.5 + + Per contact dictionaries + + Option to get dict from tabSRMM keyboard locale + +. 0.0.0.4 + + More changes in srmm interface + + Better marking of words + * Changed tabSRMM to new interface and made it handle WM_CONTEXTMENU + +. 0.0.0.3 + + Added generic interface for SRMMs + * Changed srmm patch to this interface + + Created scriver patch using this interface + +. 0.0.0.2 + + Added support for SRMM + * Changes in options dialog (thanks sefo and Chudilo) + - Removed auto support for SRMMs (it didn't worked) + +. 0.0.0.1 + + Initial version \ No newline at end of file diff --git a/plugins/SpellChecker/Docs/spellchecker_readme.txt b/plugins/SpellChecker/Docs/spellchecker_readme.txt new file mode 100644 index 0000000000..e0ae5a0fac --- /dev/null +++ b/plugins/SpellChecker/Docs/spellchecker_readme.txt @@ -0,0 +1,36 @@ +Spell Checker plugin +-------------------- + +This is a spell checker for message windows. It also allow to configure replacements to auto-correct words. + +It uses Hunspell to do the dirty work. Hunspell is the spell checker used by OpenOffice, so it should have a good range of dictionaries. The dictionaries: each is a couple of files with the name beeing the language and the extensions .dic and .aff. Both need to be inside the dir \Dictionaries (of a custom folder if folders plugin is installed). You can download them at: http://wiki.services.openoffice.org/wiki/Dictionaries . +PS: This path is read only at startup, so changing it needs a restart of miranda. + +Note that this plugin does NOT work with SRMM, because it doesn't have a rich edit in the input field. I've done a moded version, but it is old and I'm not sure if it still works: +Ansi: http://pescuma.org/miranda/srmm.zip +Unicode: http://pescuma.org/miranda/srmmW.zip +Patch: http://pescuma.org/miranda/srmm.spellchecker.patch + +It has an options page to set the default dictionary and some other options. It is at Message Sessions/Spell Checker . + +For other plugins, it works throught providing 3 serices for them to interact: +- one to add handling of a rich edit control +- one to remove it +- one to append options needed to a popup menu and show it +These plugins have to call this services in other for the magic to happen. So, things like when the popup menu is show are handled by the calling plugin. + +The flags: it supports showing flags to represent the dicts. This is done to have an visual way to represent the dict. To load the flags, the following steps are done: +1. Try to load from file Icons\flags.dll - in this case an icon resource must exist with same name as language (for ex: pt_BR). If this is found, the icon is also added to IconLib to allow further customizing. +2. Load unknown flag. It can be customized thorught IconLib +Currently there are 2 sets of flags, one from Angeli-Ka and one from the famfamfam.com site: +- famfamfam's icons as .ico: http://pescuma.org/miranda/flags-famfamfam.zip (note that there are a lot of files inside this zip with wrong names. It happens because I don't know which languages they represent - and if they represent a language or not. So, if you think some file name must change, please tell me) +- famfamfam's icons as .dll: http://pescuma.org/miranda/flags-dll-famfamfam.zip +- Angeli-Ka's icons as .ico: http://pescuma.org/miranda/flags-angelika.zip +- Angeli-Ka's icons as .ico with language names: http://pescuma.org/miranda/flags-angelika-name.zip +- Angeli-Ka's icons as .dll: http://pescuma.org/miranda/flags-dll-angelika.zip + +Many thanks to the Hunspell team and to Vladimir Vainer that made an initial version of the plugin. And thanks to the famfamfam.com site for the icons I'm using for the flags. + +Needs Miranda 0.8 + +To report bugs/make suggestions, go to the forum thread: http://forums.miranda-im.org/showthread.php?t=11555 \ No newline at end of file diff --git a/plugins/SpellChecker/Docs/spellchecker_version.txt b/plugins/SpellChecker/Docs/spellchecker_version.txt new file mode 100644 index 0000000000..bbd059decf --- /dev/null +++ b/plugins/SpellChecker/Docs/spellchecker_version.txt @@ -0,0 +1 @@ +Spell Checker 0.2.6.0 \ No newline at end of file diff --git a/plugins/SpellChecker/Flags-Angelika/Unknown.ico b/plugins/SpellChecker/Flags-Angelika/Unknown.ico new file mode 100644 index 0000000000..11bfae597f Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/Unknown.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/af_ZA.ico b/plugins/SpellChecker/Flags-Angelika/af_ZA.ico new file mode 100644 index 0000000000..1031738ba5 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/af_ZA.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/ar_AR.ico b/plugins/SpellChecker/Flags-Angelika/ar_AR.ico new file mode 100644 index 0000000000..52e72a60a7 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/ar_AR.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/az_AZ.ico b/plugins/SpellChecker/Flags-Angelika/az_AZ.ico new file mode 100644 index 0000000000..444d85e2b3 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/az_AZ.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/bg_BG.ico b/plugins/SpellChecker/Flags-Angelika/bg_BG.ico new file mode 100644 index 0000000000..2bac2a3f55 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/bg_BG.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/bn_IN.ico b/plugins/SpellChecker/Flags-Angelika/bn_IN.ico new file mode 100644 index 0000000000..1ac90d703b Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/bn_IN.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/ca_ES.ico b/plugins/SpellChecker/Flags-Angelika/ca_ES.ico new file mode 100644 index 0000000000..dd167237fd Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/ca_ES.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/cs_CZ.ico b/plugins/SpellChecker/Flags-Angelika/cs_CZ.ico new file mode 100644 index 0000000000..de6f2e3328 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/cs_CZ.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/csb_PO.ico b/plugins/SpellChecker/Flags-Angelika/csb_PO.ico new file mode 100644 index 0000000000..5727503fb4 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/csb_PO.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/cy_GB.ico b/plugins/SpellChecker/Flags-Angelika/cy_GB.ico new file mode 100644 index 0000000000..f0df97b38e Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/cy_GB.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/da_DK.ico b/plugins/SpellChecker/Flags-Angelika/da_DK.ico new file mode 100644 index 0000000000..321eb69dbb Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/da_DK.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/de_AT.ico b/plugins/SpellChecker/Flags-Angelika/de_AT.ico new file mode 100644 index 0000000000..c603271c5b Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/de_AT.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/de_CH.ico b/plugins/SpellChecker/Flags-Angelika/de_CH.ico new file mode 100644 index 0000000000..d6cf941425 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/de_CH.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/de_DE.ico b/plugins/SpellChecker/Flags-Angelika/de_DE.ico new file mode 100644 index 0000000000..eb32452346 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/de_DE.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/el_GR.ico b/plugins/SpellChecker/Flags-Angelika/el_GR.ico new file mode 100644 index 0000000000..64e3b4b05d Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/el_GR.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/em_ET.ico b/plugins/SpellChecker/Flags-Angelika/em_ET.ico new file mode 100644 index 0000000000..e836d74819 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/em_ET.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/en_AU.ico b/plugins/SpellChecker/Flags-Angelika/en_AU.ico new file mode 100644 index 0000000000..1580a68162 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/en_AU.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/en_CA.ico b/plugins/SpellChecker/Flags-Angelika/en_CA.ico new file mode 100644 index 0000000000..4e61a0bf91 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/en_CA.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/en_GB.ico b/plugins/SpellChecker/Flags-Angelika/en_GB.ico new file mode 100644 index 0000000000..0a3461376b Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/en_GB.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/en_NZ.ico b/plugins/SpellChecker/Flags-Angelika/en_NZ.ico new file mode 100644 index 0000000000..10ed20ff61 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/en_NZ.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/en_US.ico b/plugins/SpellChecker/Flags-Angelika/en_US.ico new file mode 100644 index 0000000000..4274317e66 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/en_US.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/en_ZA.ico b/plugins/SpellChecker/Flags-Angelika/en_ZA.ico new file mode 100644 index 0000000000..1031738ba5 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/en_ZA.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/es_ES.ico b/plugins/SpellChecker/Flags-Angelika/es_ES.ico new file mode 100644 index 0000000000..3e1d263951 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/es_ES.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/es_MX.ico b/plugins/SpellChecker/Flags-Angelika/es_MX.ico new file mode 100644 index 0000000000..f13b9a172a Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/es_MX.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/et_EE.ico b/plugins/SpellChecker/Flags-Angelika/et_EE.ico new file mode 100644 index 0000000000..bb844d3fa1 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/et_EE.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/fa_IR.ico b/plugins/SpellChecker/Flags-Angelika/fa_IR.ico new file mode 100644 index 0000000000..22ad9ffc5c Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/fa_IR.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/fi_FI.ico b/plugins/SpellChecker/Flags-Angelika/fi_FI.ico new file mode 100644 index 0000000000..c3a329928c Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/fi_FI.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/fj_FJ.ico b/plugins/SpellChecker/Flags-Angelika/fj_FJ.ico new file mode 100644 index 0000000000..93ccf587c0 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/fj_FJ.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/fo_FO.ico b/plugins/SpellChecker/Flags-Angelika/fo_FO.ico new file mode 100644 index 0000000000..a5e0e766e3 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/fo_FO.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/fr_BE.ico b/plugins/SpellChecker/Flags-Angelika/fr_BE.ico new file mode 100644 index 0000000000..62d4fb61c6 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/fr_BE.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/fr_FR.ico b/plugins/SpellChecker/Flags-Angelika/fr_FR.ico new file mode 100644 index 0000000000..4010cf5f55 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/fr_FR.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/ga_IE.ico b/plugins/SpellChecker/Flags-Angelika/ga_IE.ico new file mode 100644 index 0000000000..18eac04b82 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/ga_IE.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/gd_GB.ico b/plugins/SpellChecker/Flags-Angelika/gd_GB.ico new file mode 100644 index 0000000000..9c1953a1c2 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/gd_GB.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/gl_ES.ico b/plugins/SpellChecker/Flags-Angelika/gl_ES.ico new file mode 100644 index 0000000000..d40ef552fe Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/gl_ES.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/he_IL.ico b/plugins/SpellChecker/Flags-Angelika/he_IL.ico new file mode 100644 index 0000000000..5153d8779b Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/he_IL.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/hi_IN.ico b/plugins/SpellChecker/Flags-Angelika/hi_IN.ico new file mode 100644 index 0000000000..44d2239ada Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/hi_IN.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/hr_Hr.ico b/plugins/SpellChecker/Flags-Angelika/hr_Hr.ico new file mode 100644 index 0000000000..ce46932656 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/hr_Hr.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/hu_HU.ico b/plugins/SpellChecker/Flags-Angelika/hu_HU.ico new file mode 100644 index 0000000000..ce95ae6bc1 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/hu_HU.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/id_ID.ico b/plugins/SpellChecker/Flags-Angelika/id_ID.ico new file mode 100644 index 0000000000..f454edcb71 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/id_ID.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/is_IS.ico b/plugins/SpellChecker/Flags-Angelika/is_IS.ico new file mode 100644 index 0000000000..6c4110eab2 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/is_IS.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/it_IT.ico b/plugins/SpellChecker/Flags-Angelika/it_IT.ico new file mode 100644 index 0000000000..850ce77ea1 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/it_IT.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/km_KH.ico b/plugins/SpellChecker/Flags-Angelika/km_KH.ico new file mode 100644 index 0000000000..ae92b1a17d Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/km_KH.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/ku_TR.ico b/plugins/SpellChecker/Flags-Angelika/ku_TR.ico new file mode 100644 index 0000000000..d6d9ab41f9 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/ku_TR.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/lt_LT.ico b/plugins/SpellChecker/Flags-Angelika/lt_LT.ico new file mode 100644 index 0000000000..4d4a6c6629 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/lt_LT.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/lu_LU.ico b/plugins/SpellChecker/Flags-Angelika/lu_LU.ico new file mode 100644 index 0000000000..c701560f2d Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/lu_LU.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/lv_LV.ico b/plugins/SpellChecker/Flags-Angelika/lv_LV.ico new file mode 100644 index 0000000000..ca51d2e88b Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/lv_LV.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/mg_MG.ico b/plugins/SpellChecker/Flags-Angelika/mg_MG.ico new file mode 100644 index 0000000000..2b334e6517 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/mg_MG.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/mi_NZ.ico b/plugins/SpellChecker/Flags-Angelika/mi_NZ.ico new file mode 100644 index 0000000000..10ed20ff61 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/mi_NZ.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/mn_MN.ico b/plugins/SpellChecker/Flags-Angelika/mn_MN.ico new file mode 100644 index 0000000000..6479314720 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/mn_MN.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/mo_BF.ico b/plugins/SpellChecker/Flags-Angelika/mo_BF.ico new file mode 100644 index 0000000000..49ce981336 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/mo_BF.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/mr_IN.ico b/plugins/SpellChecker/Flags-Angelika/mr_IN.ico new file mode 100644 index 0000000000..44d2239ada Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/mr_IN.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/ms_MY.ico b/plugins/SpellChecker/Flags-Angelika/ms_MY.ico new file mode 100644 index 0000000000..a0a4be2a8c Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/ms_MY.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/nb_NO.ico b/plugins/SpellChecker/Flags-Angelika/nb_NO.ico new file mode 100644 index 0000000000..66ca4eac03 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/nb_NO.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/ne_NP.ico b/plugins/SpellChecker/Flags-Angelika/ne_NP.ico new file mode 100644 index 0000000000..21801370d7 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/ne_NP.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/nl_NL.ico b/plugins/SpellChecker/Flags-Angelika/nl_NL.ico new file mode 100644 index 0000000000..f3280bbdf3 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/nl_NL.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/nn_NO.ico b/plugins/SpellChecker/Flags-Angelika/nn_NO.ico new file mode 100644 index 0000000000..66ca4eac03 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/nn_NO.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/nr_ZA.ico b/plugins/SpellChecker/Flags-Angelika/nr_ZA.ico new file mode 100644 index 0000000000..1031738ba5 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/nr_ZA.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/ns_ZA.ico b/plugins/SpellChecker/Flags-Angelika/ns_ZA.ico new file mode 100644 index 0000000000..1031738ba5 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/ns_ZA.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/or_IN.ico b/plugins/SpellChecker/Flags-Angelika/or_IN.ico new file mode 100644 index 0000000000..44d2239ada Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/or_IN.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/pl_PL.ico b/plugins/SpellChecker/Flags-Angelika/pl_PL.ico new file mode 100644 index 0000000000..d85aa5b0b0 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/pl_PL.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/pt_BR.ico b/plugins/SpellChecker/Flags-Angelika/pt_BR.ico new file mode 100644 index 0000000000..c7d93382db Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/pt_BR.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/pt_PT.ico b/plugins/SpellChecker/Flags-Angelika/pt_PT.ico new file mode 100644 index 0000000000..af073daf2b Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/pt_PT.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/qu_BO.ico b/plugins/SpellChecker/Flags-Angelika/qu_BO.ico new file mode 100644 index 0000000000..663586e6f6 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/qu_BO.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/ro_RO.ico b/plugins/SpellChecker/Flags-Angelika/ro_RO.ico new file mode 100644 index 0000000000..9623b07eee Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/ro_RO.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/ru_RU.ico b/plugins/SpellChecker/Flags-Angelika/ru_RU.ico new file mode 100644 index 0000000000..60d08c198e Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/ru_RU.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/rw_RW.ico b/plugins/SpellChecker/Flags-Angelika/rw_RW.ico new file mode 100644 index 0000000000..a424d1cc0a Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/rw_RW.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/sk_SK.ico b/plugins/SpellChecker/Flags-Angelika/sk_SK.ico new file mode 100644 index 0000000000..05e16ef646 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/sk_SK.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/sl_SI.ico b/plugins/SpellChecker/Flags-Angelika/sl_SI.ico new file mode 100644 index 0000000000..c23a66e574 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/sl_SI.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/ss_ZA.ico b/plugins/SpellChecker/Flags-Angelika/ss_ZA.ico new file mode 100644 index 0000000000..1031738ba5 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/ss_ZA.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/st_ZA.ico b/plugins/SpellChecker/Flags-Angelika/st_ZA.ico new file mode 100644 index 0000000000..1031738ba5 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/st_ZA.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/sv_SE.ico b/plugins/SpellChecker/Flags-Angelika/sv_SE.ico new file mode 100644 index 0000000000..c6e1964edb Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/sv_SE.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/ta_IN.ico b/plugins/SpellChecker/Flags-Angelika/ta_IN.ico new file mode 100644 index 0000000000..44d2239ada Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/ta_IN.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/tet_ID.ico b/plugins/SpellChecker/Flags-Angelika/tet_ID.ico new file mode 100644 index 0000000000..f454edcb71 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/tet_ID.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/tl_PH.ico b/plugins/SpellChecker/Flags-Angelika/tl_PH.ico new file mode 100644 index 0000000000..30772bfa49 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/tl_PH.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/tn_ZA.ico b/plugins/SpellChecker/Flags-Angelika/tn_ZA.ico new file mode 100644 index 0000000000..1031738ba5 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/tn_ZA.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/ts_ZA.ico b/plugins/SpellChecker/Flags-Angelika/ts_ZA.ico new file mode 100644 index 0000000000..1031738ba5 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/ts_ZA.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/uk_UA.ico b/plugins/SpellChecker/Flags-Angelika/uk_UA.ico new file mode 100644 index 0000000000..765681033c Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/uk_UA.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/uz_UZ.ico b/plugins/SpellChecker/Flags-Angelika/uz_UZ.ico new file mode 100644 index 0000000000..573c4aee84 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/uz_UZ.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/ve_ZA.ico b/plugins/SpellChecker/Flags-Angelika/ve_ZA.ico new file mode 100644 index 0000000000..1031738ba5 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/ve_ZA.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/vi_VI.ico b/plugins/SpellChecker/Flags-Angelika/vi_VI.ico new file mode 100644 index 0000000000..999d0622fc Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/vi_VI.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/xh_ZA.ico b/plugins/SpellChecker/Flags-Angelika/xh_ZA.ico new file mode 100644 index 0000000000..1031738ba5 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/xh_ZA.ico differ diff --git a/plugins/SpellChecker/Flags-Angelika/zu_ZA.ico b/plugins/SpellChecker/Flags-Angelika/zu_ZA.ico new file mode 100644 index 0000000000..1031738ba5 Binary files /dev/null and b/plugins/SpellChecker/Flags-Angelika/zu_ZA.ico differ diff --git a/plugins/SpellChecker/Flags/ad.ico b/plugins/SpellChecker/Flags/ad.ico new file mode 100644 index 0000000000..041939a95d Binary files /dev/null and b/plugins/SpellChecker/Flags/ad.ico differ diff --git a/plugins/SpellChecker/Flags/ae.ico b/plugins/SpellChecker/Flags/ae.ico new file mode 100644 index 0000000000..dbf70eeccb Binary files /dev/null and b/plugins/SpellChecker/Flags/ae.ico differ diff --git a/plugins/SpellChecker/Flags/af_ZA.ico b/plugins/SpellChecker/Flags/af_ZA.ico new file mode 100644 index 0000000000..80019f3dfd Binary files /dev/null and b/plugins/SpellChecker/Flags/af_ZA.ico differ diff --git a/plugins/SpellChecker/Flags/ag.ico b/plugins/SpellChecker/Flags/ag.ico new file mode 100644 index 0000000000..aa362f81dc Binary files /dev/null and b/plugins/SpellChecker/Flags/ag.ico differ diff --git a/plugins/SpellChecker/Flags/ai.ico b/plugins/SpellChecker/Flags/ai.ico new file mode 100644 index 0000000000..a066e8d6f2 Binary files /dev/null and b/plugins/SpellChecker/Flags/ai.ico differ diff --git a/plugins/SpellChecker/Flags/al.ico b/plugins/SpellChecker/Flags/al.ico new file mode 100644 index 0000000000..33c2aeee17 Binary files /dev/null and b/plugins/SpellChecker/Flags/al.ico differ diff --git a/plugins/SpellChecker/Flags/am.ico b/plugins/SpellChecker/Flags/am.ico new file mode 100644 index 0000000000..c9caba18d4 Binary files /dev/null and b/plugins/SpellChecker/Flags/am.ico differ diff --git a/plugins/SpellChecker/Flags/an.ico b/plugins/SpellChecker/Flags/an.ico new file mode 100644 index 0000000000..865d4bb997 Binary files /dev/null and b/plugins/SpellChecker/Flags/an.ico differ diff --git a/plugins/SpellChecker/Flags/ao.ico b/plugins/SpellChecker/Flags/ao.ico new file mode 100644 index 0000000000..12f6fc55d1 Binary files /dev/null and b/plugins/SpellChecker/Flags/ao.ico differ diff --git a/plugins/SpellChecker/Flags/ar.ico b/plugins/SpellChecker/Flags/ar.ico new file mode 100644 index 0000000000..c62bddfaae Binary files /dev/null and b/plugins/SpellChecker/Flags/ar.ico differ diff --git a/plugins/SpellChecker/Flags/as.ico b/plugins/SpellChecker/Flags/as.ico new file mode 100644 index 0000000000..e721fcac5d Binary files /dev/null and b/plugins/SpellChecker/Flags/as.ico differ diff --git a/plugins/SpellChecker/Flags/aw.ico b/plugins/SpellChecker/Flags/aw.ico new file mode 100644 index 0000000000..6ffae09f21 Binary files /dev/null and b/plugins/SpellChecker/Flags/aw.ico differ diff --git a/plugins/SpellChecker/Flags/ax.ico b/plugins/SpellChecker/Flags/ax.ico new file mode 100644 index 0000000000..201d72d95e Binary files /dev/null and b/plugins/SpellChecker/Flags/ax.ico differ diff --git a/plugins/SpellChecker/Flags/az_AZ.ico b/plugins/SpellChecker/Flags/az_AZ.ico new file mode 100644 index 0000000000..5a89d0a23d Binary files /dev/null and b/plugins/SpellChecker/Flags/az_AZ.ico differ diff --git a/plugins/SpellChecker/Flags/ba.ico b/plugins/SpellChecker/Flags/ba.ico new file mode 100644 index 0000000000..c8e1c91686 Binary files /dev/null and b/plugins/SpellChecker/Flags/ba.ico differ diff --git a/plugins/SpellChecker/Flags/bb.ico b/plugins/SpellChecker/Flags/bb.ico new file mode 100644 index 0000000000..e726c725fd Binary files /dev/null and b/plugins/SpellChecker/Flags/bb.ico differ diff --git a/plugins/SpellChecker/Flags/bg_BG.ico b/plugins/SpellChecker/Flags/bg_BG.ico new file mode 100644 index 0000000000..64b732fbf2 Binary files /dev/null and b/plugins/SpellChecker/Flags/bg_BG.ico differ diff --git a/plugins/SpellChecker/Flags/bh.ico b/plugins/SpellChecker/Flags/bh.ico new file mode 100644 index 0000000000..c9e20c8ceb Binary files /dev/null and b/plugins/SpellChecker/Flags/bh.ico differ diff --git a/plugins/SpellChecker/Flags/bi.ico b/plugins/SpellChecker/Flags/bi.ico new file mode 100644 index 0000000000..a383e617b1 Binary files /dev/null and b/plugins/SpellChecker/Flags/bi.ico differ diff --git a/plugins/SpellChecker/Flags/bj.ico b/plugins/SpellChecker/Flags/bj.ico new file mode 100644 index 0000000000..25392dbec4 Binary files /dev/null and b/plugins/SpellChecker/Flags/bj.ico differ diff --git a/plugins/SpellChecker/Flags/bm.ico b/plugins/SpellChecker/Flags/bm.ico new file mode 100644 index 0000000000..5eb9f7d8e2 Binary files /dev/null and b/plugins/SpellChecker/Flags/bm.ico differ diff --git a/plugins/SpellChecker/Flags/bn.ico b/plugins/SpellChecker/Flags/bn.ico new file mode 100644 index 0000000000..42117c3ee6 Binary files /dev/null and b/plugins/SpellChecker/Flags/bn.ico differ diff --git a/plugins/SpellChecker/Flags/bn_IN.ico b/plugins/SpellChecker/Flags/bn_IN.ico new file mode 100644 index 0000000000..ed15c62073 Binary files /dev/null and b/plugins/SpellChecker/Flags/bn_IN.ico differ diff --git a/plugins/SpellChecker/Flags/bs.ico b/plugins/SpellChecker/Flags/bs.ico new file mode 100644 index 0000000000..e26f72af06 Binary files /dev/null and b/plugins/SpellChecker/Flags/bs.ico differ diff --git a/plugins/SpellChecker/Flags/bt.ico b/plugins/SpellChecker/Flags/bt.ico new file mode 100644 index 0000000000..a319583d07 Binary files /dev/null and b/plugins/SpellChecker/Flags/bt.ico differ diff --git a/plugins/SpellChecker/Flags/bv.ico b/plugins/SpellChecker/Flags/bv.ico new file mode 100644 index 0000000000..f0b648deba Binary files /dev/null and b/plugins/SpellChecker/Flags/bv.ico differ diff --git a/plugins/SpellChecker/Flags/by.ico b/plugins/SpellChecker/Flags/by.ico new file mode 100644 index 0000000000..5c90057d8e Binary files /dev/null and b/plugins/SpellChecker/Flags/by.ico differ diff --git a/plugins/SpellChecker/Flags/bz.ico b/plugins/SpellChecker/Flags/bz.ico new file mode 100644 index 0000000000..08a2217321 Binary files /dev/null and b/plugins/SpellChecker/Flags/bz.ico differ diff --git a/plugins/SpellChecker/Flags/cc.ico b/plugins/SpellChecker/Flags/cc.ico new file mode 100644 index 0000000000..f03d802d49 Binary files /dev/null and b/plugins/SpellChecker/Flags/cc.ico differ diff --git a/plugins/SpellChecker/Flags/cd.ico b/plugins/SpellChecker/Flags/cd.ico new file mode 100644 index 0000000000..440f4eb4da Binary files /dev/null and b/plugins/SpellChecker/Flags/cd.ico differ diff --git a/plugins/SpellChecker/Flags/cf.ico b/plugins/SpellChecker/Flags/cf.ico new file mode 100644 index 0000000000..4b7d5f74f1 Binary files /dev/null and b/plugins/SpellChecker/Flags/cf.ico differ diff --git a/plugins/SpellChecker/Flags/cg.ico b/plugins/SpellChecker/Flags/cg.ico new file mode 100644 index 0000000000..66f15bbda7 Binary files /dev/null and b/plugins/SpellChecker/Flags/cg.ico differ diff --git a/plugins/SpellChecker/Flags/ci.ico b/plugins/SpellChecker/Flags/ci.ico new file mode 100644 index 0000000000..76fde54963 Binary files /dev/null and b/plugins/SpellChecker/Flags/ci.ico differ diff --git a/plugins/SpellChecker/Flags/ck.ico b/plugins/SpellChecker/Flags/ck.ico new file mode 100644 index 0000000000..65851243f7 Binary files /dev/null and b/plugins/SpellChecker/Flags/ck.ico differ diff --git a/plugins/SpellChecker/Flags/cl.ico b/plugins/SpellChecker/Flags/cl.ico new file mode 100644 index 0000000000..fb695e480f Binary files /dev/null and b/plugins/SpellChecker/Flags/cl.ico differ diff --git a/plugins/SpellChecker/Flags/cm.ico b/plugins/SpellChecker/Flags/cm.ico new file mode 100644 index 0000000000..cb79701891 Binary files /dev/null and b/plugins/SpellChecker/Flags/cm.ico differ diff --git a/plugins/SpellChecker/Flags/cn.ico b/plugins/SpellChecker/Flags/cn.ico new file mode 100644 index 0000000000..0ceb0866f3 Binary files /dev/null and b/plugins/SpellChecker/Flags/cn.ico differ diff --git a/plugins/SpellChecker/Flags/co.ico b/plugins/SpellChecker/Flags/co.ico new file mode 100644 index 0000000000..1cc69eac57 Binary files /dev/null and b/plugins/SpellChecker/Flags/co.ico differ diff --git a/plugins/SpellChecker/Flags/cr.ico b/plugins/SpellChecker/Flags/cr.ico new file mode 100644 index 0000000000..193b961d34 Binary files /dev/null and b/plugins/SpellChecker/Flags/cr.ico differ diff --git a/plugins/SpellChecker/Flags/cs_CZ.ico b/plugins/SpellChecker/Flags/cs_CZ.ico new file mode 100644 index 0000000000..f0c14bc3e1 Binary files /dev/null and b/plugins/SpellChecker/Flags/cs_CZ.ico differ diff --git a/plugins/SpellChecker/Flags/cu.ico b/plugins/SpellChecker/Flags/cu.ico new file mode 100644 index 0000000000..7f1ad5b202 Binary files /dev/null and b/plugins/SpellChecker/Flags/cu.ico differ diff --git a/plugins/SpellChecker/Flags/cv.ico b/plugins/SpellChecker/Flags/cv.ico new file mode 100644 index 0000000000..349d4e9675 Binary files /dev/null and b/plugins/SpellChecker/Flags/cv.ico differ diff --git a/plugins/SpellChecker/Flags/cx.ico b/plugins/SpellChecker/Flags/cx.ico new file mode 100644 index 0000000000..363cef2396 Binary files /dev/null and b/plugins/SpellChecker/Flags/cx.ico differ diff --git a/plugins/SpellChecker/Flags/cy.ico b/plugins/SpellChecker/Flags/cy.ico new file mode 100644 index 0000000000..546f1a7697 Binary files /dev/null and b/plugins/SpellChecker/Flags/cy.ico differ diff --git a/plugins/SpellChecker/Flags/cy_GB.ico b/plugins/SpellChecker/Flags/cy_GB.ico new file mode 100644 index 0000000000..021c4cbb7f Binary files /dev/null and b/plugins/SpellChecker/Flags/cy_GB.ico differ diff --git a/plugins/SpellChecker/Flags/da_DK.ico b/plugins/SpellChecker/Flags/da_DK.ico new file mode 100644 index 0000000000..eebf7f90ec Binary files /dev/null and b/plugins/SpellChecker/Flags/da_DK.ico differ diff --git a/plugins/SpellChecker/Flags/de_AT.ico b/plugins/SpellChecker/Flags/de_AT.ico new file mode 100644 index 0000000000..aa0ebc231c Binary files /dev/null and b/plugins/SpellChecker/Flags/de_AT.ico differ diff --git a/plugins/SpellChecker/Flags/de_CH.ico b/plugins/SpellChecker/Flags/de_CH.ico new file mode 100644 index 0000000000..c272204278 Binary files /dev/null and b/plugins/SpellChecker/Flags/de_CH.ico differ diff --git a/plugins/SpellChecker/Flags/de_DE.ico b/plugins/SpellChecker/Flags/de_DE.ico new file mode 100644 index 0000000000..ed1ce66d22 Binary files /dev/null and b/plugins/SpellChecker/Flags/de_DE.ico differ diff --git a/plugins/SpellChecker/Flags/dj.ico b/plugins/SpellChecker/Flags/dj.ico new file mode 100644 index 0000000000..146e62a083 Binary files /dev/null and b/plugins/SpellChecker/Flags/dj.ico differ diff --git a/plugins/SpellChecker/Flags/dm.ico b/plugins/SpellChecker/Flags/dm.ico new file mode 100644 index 0000000000..585ad1dca7 Binary files /dev/null and b/plugins/SpellChecker/Flags/dm.ico differ diff --git a/plugins/SpellChecker/Flags/do.ico b/plugins/SpellChecker/Flags/do.ico new file mode 100644 index 0000000000..0602e9f03b Binary files /dev/null and b/plugins/SpellChecker/Flags/do.ico differ diff --git a/plugins/SpellChecker/Flags/dz.ico b/plugins/SpellChecker/Flags/dz.ico new file mode 100644 index 0000000000..23fe39b5ec Binary files /dev/null and b/plugins/SpellChecker/Flags/dz.ico differ diff --git a/plugins/SpellChecker/Flags/ec.ico b/plugins/SpellChecker/Flags/ec.ico new file mode 100644 index 0000000000..93689ca917 Binary files /dev/null and b/plugins/SpellChecker/Flags/ec.ico differ diff --git a/plugins/SpellChecker/Flags/eg.ico b/plugins/SpellChecker/Flags/eg.ico new file mode 100644 index 0000000000..ce231de10f Binary files /dev/null and b/plugins/SpellChecker/Flags/eg.ico differ diff --git a/plugins/SpellChecker/Flags/eh.ico b/plugins/SpellChecker/Flags/eh.ico new file mode 100644 index 0000000000..1ac030fa6f Binary files /dev/null and b/plugins/SpellChecker/Flags/eh.ico differ diff --git a/plugins/SpellChecker/Flags/el_GR.ico b/plugins/SpellChecker/Flags/el_GR.ico new file mode 100644 index 0000000000..b7d70e74c6 Binary files /dev/null and b/plugins/SpellChecker/Flags/el_GR.ico differ diff --git a/plugins/SpellChecker/Flags/em_ET.ico b/plugins/SpellChecker/Flags/em_ET.ico new file mode 100644 index 0000000000..aef5354dcb Binary files /dev/null and b/plugins/SpellChecker/Flags/em_ET.ico differ diff --git a/plugins/SpellChecker/Flags/en_AU.ico b/plugins/SpellChecker/Flags/en_AU.ico new file mode 100644 index 0000000000..4c042925aa Binary files /dev/null and b/plugins/SpellChecker/Flags/en_AU.ico differ diff --git a/plugins/SpellChecker/Flags/en_CA.ico b/plugins/SpellChecker/Flags/en_CA.ico new file mode 100644 index 0000000000..ab30abbf43 Binary files /dev/null and b/plugins/SpellChecker/Flags/en_CA.ico differ diff --git a/plugins/SpellChecker/Flags/en_GB.ico b/plugins/SpellChecker/Flags/en_GB.ico new file mode 100644 index 0000000000..14fcae20a7 Binary files /dev/null and b/plugins/SpellChecker/Flags/en_GB.ico differ diff --git a/plugins/SpellChecker/Flags/en_NZ.ico b/plugins/SpellChecker/Flags/en_NZ.ico new file mode 100644 index 0000000000..9c4cac8f15 Binary files /dev/null and b/plugins/SpellChecker/Flags/en_NZ.ico differ diff --git a/plugins/SpellChecker/Flags/en_US.ico b/plugins/SpellChecker/Flags/en_US.ico new file mode 100644 index 0000000000..793e92678e Binary files /dev/null and b/plugins/SpellChecker/Flags/en_US.ico differ diff --git a/plugins/SpellChecker/Flags/en_ZA.ico b/plugins/SpellChecker/Flags/en_ZA.ico new file mode 100644 index 0000000000..a786459654 Binary files /dev/null and b/plugins/SpellChecker/Flags/en_ZA.ico differ diff --git a/plugins/SpellChecker/Flags/england.ico b/plugins/SpellChecker/Flags/england.ico new file mode 100644 index 0000000000..94cd4a75a8 Binary files /dev/null and b/plugins/SpellChecker/Flags/england.ico differ diff --git a/plugins/SpellChecker/Flags/er.ico b/plugins/SpellChecker/Flags/er.ico new file mode 100644 index 0000000000..baff122729 Binary files /dev/null and b/plugins/SpellChecker/Flags/er.ico differ diff --git a/plugins/SpellChecker/Flags/es_ES.ico b/plugins/SpellChecker/Flags/es_ES.ico new file mode 100644 index 0000000000..007ca2558b Binary files /dev/null and b/plugins/SpellChecker/Flags/es_ES.ico differ diff --git a/plugins/SpellChecker/Flags/es_MX.ico b/plugins/SpellChecker/Flags/es_MX.ico new file mode 100644 index 0000000000..086ed39da7 Binary files /dev/null and b/plugins/SpellChecker/Flags/es_MX.ico differ diff --git a/plugins/SpellChecker/Flags/et_EE.ico b/plugins/SpellChecker/Flags/et_EE.ico new file mode 100644 index 0000000000..5e2a142d1d Binary files /dev/null and b/plugins/SpellChecker/Flags/et_EE.ico differ diff --git a/plugins/SpellChecker/Flags/fa_IR.ico b/plugins/SpellChecker/Flags/fa_IR.ico new file mode 100644 index 0000000000..35d952abb7 Binary files /dev/null and b/plugins/SpellChecker/Flags/fa_IR.ico differ diff --git a/plugins/SpellChecker/Flags/fi_FI.ico b/plugins/SpellChecker/Flags/fi_FI.ico new file mode 100644 index 0000000000..f333f5a92c Binary files /dev/null and b/plugins/SpellChecker/Flags/fi_FI.ico differ diff --git a/plugins/SpellChecker/Flags/fj_FJ.ico b/plugins/SpellChecker/Flags/fj_FJ.ico new file mode 100644 index 0000000000..8f1b309652 Binary files /dev/null and b/plugins/SpellChecker/Flags/fj_FJ.ico differ diff --git a/plugins/SpellChecker/Flags/fk.ico b/plugins/SpellChecker/Flags/fk.ico new file mode 100644 index 0000000000..bbb36896a8 Binary files /dev/null and b/plugins/SpellChecker/Flags/fk.ico differ diff --git a/plugins/SpellChecker/Flags/fm.ico b/plugins/SpellChecker/Flags/fm.ico new file mode 100644 index 0000000000..d9f5cd1fe8 Binary files /dev/null and b/plugins/SpellChecker/Flags/fm.ico differ diff --git a/plugins/SpellChecker/Flags/fo_FO.ico b/plugins/SpellChecker/Flags/fo_FO.ico new file mode 100644 index 0000000000..dc4835e413 Binary files /dev/null and b/plugins/SpellChecker/Flags/fo_FO.ico differ diff --git a/plugins/SpellChecker/Flags/fr_BE.ico b/plugins/SpellChecker/Flags/fr_BE.ico new file mode 100644 index 0000000000..e5d92e1753 Binary files /dev/null and b/plugins/SpellChecker/Flags/fr_BE.ico differ diff --git a/plugins/SpellChecker/Flags/fr_FR.ico b/plugins/SpellChecker/Flags/fr_FR.ico new file mode 100644 index 0000000000..503ab0040c Binary files /dev/null and b/plugins/SpellChecker/Flags/fr_FR.ico differ diff --git a/plugins/SpellChecker/Flags/ga.ico b/plugins/SpellChecker/Flags/ga.ico new file mode 100644 index 0000000000..46ba42d82e Binary files /dev/null and b/plugins/SpellChecker/Flags/ga.ico differ diff --git a/plugins/SpellChecker/Flags/ga_IE.ico b/plugins/SpellChecker/Flags/ga_IE.ico new file mode 100644 index 0000000000..6cd8a7d7a6 Binary files /dev/null and b/plugins/SpellChecker/Flags/ga_IE.ico differ diff --git a/plugins/SpellChecker/Flags/gd.ico b/plugins/SpellChecker/Flags/gd.ico new file mode 100644 index 0000000000..72bd001826 Binary files /dev/null and b/plugins/SpellChecker/Flags/gd.ico differ diff --git a/plugins/SpellChecker/Flags/gd_GB.ico b/plugins/SpellChecker/Flags/gd_GB.ico new file mode 100644 index 0000000000..f29d98cc06 Binary files /dev/null and b/plugins/SpellChecker/Flags/gd_GB.ico differ diff --git a/plugins/SpellChecker/Flags/ge.ico b/plugins/SpellChecker/Flags/ge.ico new file mode 100644 index 0000000000..7d6897c9fc Binary files /dev/null and b/plugins/SpellChecker/Flags/ge.ico differ diff --git a/plugins/SpellChecker/Flags/gi.ico b/plugins/SpellChecker/Flags/gi.ico new file mode 100644 index 0000000000..b4455ec2e6 Binary files /dev/null and b/plugins/SpellChecker/Flags/gi.ico differ diff --git a/plugins/SpellChecker/Flags/gl.ico b/plugins/SpellChecker/Flags/gl.ico new file mode 100644 index 0000000000..e60f0d69f6 Binary files /dev/null and b/plugins/SpellChecker/Flags/gl.ico differ diff --git a/plugins/SpellChecker/Flags/gm.ico b/plugins/SpellChecker/Flags/gm.ico new file mode 100644 index 0000000000..355587c4ca Binary files /dev/null and b/plugins/SpellChecker/Flags/gm.ico differ diff --git a/plugins/SpellChecker/Flags/gn.ico b/plugins/SpellChecker/Flags/gn.ico new file mode 100644 index 0000000000..2af4a63e46 Binary files /dev/null and b/plugins/SpellChecker/Flags/gn.ico differ diff --git a/plugins/SpellChecker/Flags/gp.ico b/plugins/SpellChecker/Flags/gp.ico new file mode 100644 index 0000000000..25ed546c2f Binary files /dev/null and b/plugins/SpellChecker/Flags/gp.ico differ diff --git a/plugins/SpellChecker/Flags/gq.ico b/plugins/SpellChecker/Flags/gq.ico new file mode 100644 index 0000000000..1ee063a8fd Binary files /dev/null and b/plugins/SpellChecker/Flags/gq.ico differ diff --git a/plugins/SpellChecker/Flags/gs.ico b/plugins/SpellChecker/Flags/gs.ico new file mode 100644 index 0000000000..15ec1b2bf5 Binary files /dev/null and b/plugins/SpellChecker/Flags/gs.ico differ diff --git a/plugins/SpellChecker/Flags/gt.ico b/plugins/SpellChecker/Flags/gt.ico new file mode 100644 index 0000000000..64530c8ccd Binary files /dev/null and b/plugins/SpellChecker/Flags/gt.ico differ diff --git a/plugins/SpellChecker/Flags/gu.ico b/plugins/SpellChecker/Flags/gu.ico new file mode 100644 index 0000000000..2b235cf8f9 Binary files /dev/null and b/plugins/SpellChecker/Flags/gu.ico differ diff --git a/plugins/SpellChecker/Flags/gw.ico b/plugins/SpellChecker/Flags/gw.ico new file mode 100644 index 0000000000..ffb060551c Binary files /dev/null and b/plugins/SpellChecker/Flags/gw.ico differ diff --git a/plugins/SpellChecker/Flags/gy.ico b/plugins/SpellChecker/Flags/gy.ico new file mode 100644 index 0000000000..a20415d615 Binary files /dev/null and b/plugins/SpellChecker/Flags/gy.ico differ diff --git a/plugins/SpellChecker/Flags/he_IL.ico b/plugins/SpellChecker/Flags/he_IL.ico new file mode 100644 index 0000000000..fdd3ea10bc Binary files /dev/null and b/plugins/SpellChecker/Flags/he_IL.ico differ diff --git a/plugins/SpellChecker/Flags/hi_IN.ico b/plugins/SpellChecker/Flags/hi_IN.ico new file mode 100644 index 0000000000..b1a927d872 Binary files /dev/null and b/plugins/SpellChecker/Flags/hi_IN.ico differ diff --git a/plugins/SpellChecker/Flags/hk.ico b/plugins/SpellChecker/Flags/hk.ico new file mode 100644 index 0000000000..ad16f068e9 Binary files /dev/null and b/plugins/SpellChecker/Flags/hk.ico differ diff --git a/plugins/SpellChecker/Flags/hn.ico b/plugins/SpellChecker/Flags/hn.ico new file mode 100644 index 0000000000..12e2ab08b7 Binary files /dev/null and b/plugins/SpellChecker/Flags/hn.ico differ diff --git a/plugins/SpellChecker/Flags/hr_HR.ico b/plugins/SpellChecker/Flags/hr_HR.ico new file mode 100644 index 0000000000..c6efff9bb0 Binary files /dev/null and b/plugins/SpellChecker/Flags/hr_HR.ico differ diff --git a/plugins/SpellChecker/Flags/ht.ico b/plugins/SpellChecker/Flags/ht.ico new file mode 100644 index 0000000000..51fb8a6b40 Binary files /dev/null and b/plugins/SpellChecker/Flags/ht.ico differ diff --git a/plugins/SpellChecker/Flags/hu_HU.ico b/plugins/SpellChecker/Flags/hu_HU.ico new file mode 100644 index 0000000000..73ddd2df6a Binary files /dev/null and b/plugins/SpellChecker/Flags/hu_HU.ico differ diff --git a/plugins/SpellChecker/Flags/id_ID.ico b/plugins/SpellChecker/Flags/id_ID.ico new file mode 100644 index 0000000000..9432e87f95 Binary files /dev/null and b/plugins/SpellChecker/Flags/id_ID.ico differ diff --git a/plugins/SpellChecker/Flags/io.ico b/plugins/SpellChecker/Flags/io.ico new file mode 100644 index 0000000000..a2eaba74e3 Binary files /dev/null and b/plugins/SpellChecker/Flags/io.ico differ diff --git a/plugins/SpellChecker/Flags/iq.ico b/plugins/SpellChecker/Flags/iq.ico new file mode 100644 index 0000000000..8501e2588a Binary files /dev/null and b/plugins/SpellChecker/Flags/iq.ico differ diff --git a/plugins/SpellChecker/Flags/is_IS.ico b/plugins/SpellChecker/Flags/is_IS.ico new file mode 100644 index 0000000000..6dbbcef47f Binary files /dev/null and b/plugins/SpellChecker/Flags/is_IS.ico differ diff --git a/plugins/SpellChecker/Flags/it_IT.ico b/plugins/SpellChecker/Flags/it_IT.ico new file mode 100644 index 0000000000..11d08ed51f Binary files /dev/null and b/plugins/SpellChecker/Flags/it_IT.ico differ diff --git a/plugins/SpellChecker/Flags/jm.ico b/plugins/SpellChecker/Flags/jm.ico new file mode 100644 index 0000000000..c4d76a5778 Binary files /dev/null and b/plugins/SpellChecker/Flags/jm.ico differ diff --git a/plugins/SpellChecker/Flags/jo.ico b/plugins/SpellChecker/Flags/jo.ico new file mode 100644 index 0000000000..a80478f787 Binary files /dev/null and b/plugins/SpellChecker/Flags/jo.ico differ diff --git a/plugins/SpellChecker/Flags/jp.ico b/plugins/SpellChecker/Flags/jp.ico new file mode 100644 index 0000000000..a415342ab2 Binary files /dev/null and b/plugins/SpellChecker/Flags/jp.ico differ diff --git a/plugins/SpellChecker/Flags/ke.ico b/plugins/SpellChecker/Flags/ke.ico new file mode 100644 index 0000000000..554ecbb433 Binary files /dev/null and b/plugins/SpellChecker/Flags/ke.ico differ diff --git a/plugins/SpellChecker/Flags/kg.ico b/plugins/SpellChecker/Flags/kg.ico new file mode 100644 index 0000000000..81b33aa1a0 Binary files /dev/null and b/plugins/SpellChecker/Flags/kg.ico differ diff --git a/plugins/SpellChecker/Flags/ki.ico b/plugins/SpellChecker/Flags/ki.ico new file mode 100644 index 0000000000..93b225df0e Binary files /dev/null and b/plugins/SpellChecker/Flags/ki.ico differ diff --git a/plugins/SpellChecker/Flags/km.ico b/plugins/SpellChecker/Flags/km.ico new file mode 100644 index 0000000000..3bf56839d9 Binary files /dev/null and b/plugins/SpellChecker/Flags/km.ico differ diff --git a/plugins/SpellChecker/Flags/km_KH.ico b/plugins/SpellChecker/Flags/km_KH.ico new file mode 100644 index 0000000000..69d08fbd86 Binary files /dev/null and b/plugins/SpellChecker/Flags/km_KH.ico differ diff --git a/plugins/SpellChecker/Flags/kn.ico b/plugins/SpellChecker/Flags/kn.ico new file mode 100644 index 0000000000..c959493d47 Binary files /dev/null and b/plugins/SpellChecker/Flags/kn.ico differ diff --git a/plugins/SpellChecker/Flags/kp.ico b/plugins/SpellChecker/Flags/kp.ico new file mode 100644 index 0000000000..4dc460f2c7 Binary files /dev/null and b/plugins/SpellChecker/Flags/kp.ico differ diff --git a/plugins/SpellChecker/Flags/kr.ico b/plugins/SpellChecker/Flags/kr.ico new file mode 100644 index 0000000000..b2c8f19dce Binary files /dev/null and b/plugins/SpellChecker/Flags/kr.ico differ diff --git a/plugins/SpellChecker/Flags/ku_TR.ico b/plugins/SpellChecker/Flags/ku_TR.ico new file mode 100644 index 0000000000..024d3838f9 Binary files /dev/null and b/plugins/SpellChecker/Flags/ku_TR.ico differ diff --git a/plugins/SpellChecker/Flags/kw.ico b/plugins/SpellChecker/Flags/kw.ico new file mode 100644 index 0000000000..a7382b28ab Binary files /dev/null and b/plugins/SpellChecker/Flags/kw.ico differ diff --git a/plugins/SpellChecker/Flags/ky.ico b/plugins/SpellChecker/Flags/ky.ico new file mode 100644 index 0000000000..a0f44c16dc Binary files /dev/null and b/plugins/SpellChecker/Flags/ky.ico differ diff --git a/plugins/SpellChecker/Flags/kz.ico b/plugins/SpellChecker/Flags/kz.ico new file mode 100644 index 0000000000..e18579c25a Binary files /dev/null and b/plugins/SpellChecker/Flags/kz.ico differ diff --git a/plugins/SpellChecker/Flags/la.ico b/plugins/SpellChecker/Flags/la.ico new file mode 100644 index 0000000000..1b5762786f Binary files /dev/null and b/plugins/SpellChecker/Flags/la.ico differ diff --git a/plugins/SpellChecker/Flags/lb.ico b/plugins/SpellChecker/Flags/lb.ico new file mode 100644 index 0000000000..7221f195a4 Binary files /dev/null and b/plugins/SpellChecker/Flags/lb.ico differ diff --git a/plugins/SpellChecker/Flags/lc.ico b/plugins/SpellChecker/Flags/lc.ico new file mode 100644 index 0000000000..d3e57d6b3e Binary files /dev/null and b/plugins/SpellChecker/Flags/lc.ico differ diff --git a/plugins/SpellChecker/Flags/li.ico b/plugins/SpellChecker/Flags/li.ico new file mode 100644 index 0000000000..2431ff8222 Binary files /dev/null and b/plugins/SpellChecker/Flags/li.ico differ diff --git a/plugins/SpellChecker/Flags/lk.ico b/plugins/SpellChecker/Flags/lk.ico new file mode 100644 index 0000000000..b39b1fd2cf Binary files /dev/null and b/plugins/SpellChecker/Flags/lk.ico differ diff --git a/plugins/SpellChecker/Flags/lr.ico b/plugins/SpellChecker/Flags/lr.ico new file mode 100644 index 0000000000..cfab48057d Binary files /dev/null and b/plugins/SpellChecker/Flags/lr.ico differ diff --git a/plugins/SpellChecker/Flags/ls.ico b/plugins/SpellChecker/Flags/ls.ico new file mode 100644 index 0000000000..874b1626aa Binary files /dev/null and b/plugins/SpellChecker/Flags/ls.ico differ diff --git a/plugins/SpellChecker/Flags/lt_LT.ico b/plugins/SpellChecker/Flags/lt_LT.ico new file mode 100644 index 0000000000..a115a7da55 Binary files /dev/null and b/plugins/SpellChecker/Flags/lt_LT.ico differ diff --git a/plugins/SpellChecker/Flags/lu_LU.ico b/plugins/SpellChecker/Flags/lu_LU.ico new file mode 100644 index 0000000000..c509c39988 Binary files /dev/null and b/plugins/SpellChecker/Flags/lu_LU.ico differ diff --git a/plugins/SpellChecker/Flags/lv_LV.ico b/plugins/SpellChecker/Flags/lv_LV.ico new file mode 100644 index 0000000000..eafbc01a21 Binary files /dev/null and b/plugins/SpellChecker/Flags/lv_LV.ico differ diff --git a/plugins/SpellChecker/Flags/ly.ico b/plugins/SpellChecker/Flags/ly.ico new file mode 100644 index 0000000000..00bdab1183 Binary files /dev/null and b/plugins/SpellChecker/Flags/ly.ico differ diff --git a/plugins/SpellChecker/Flags/ma.ico b/plugins/SpellChecker/Flags/ma.ico new file mode 100644 index 0000000000..7ac31f210b Binary files /dev/null and b/plugins/SpellChecker/Flags/ma.ico differ diff --git a/plugins/SpellChecker/Flags/mc.ico b/plugins/SpellChecker/Flags/mc.ico new file mode 100644 index 0000000000..14ab0d4851 Binary files /dev/null and b/plugins/SpellChecker/Flags/mc.ico differ diff --git a/plugins/SpellChecker/Flags/md.ico b/plugins/SpellChecker/Flags/md.ico new file mode 100644 index 0000000000..238890dfd2 Binary files /dev/null and b/plugins/SpellChecker/Flags/md.ico differ diff --git a/plugins/SpellChecker/Flags/mg_MG.ico b/plugins/SpellChecker/Flags/mg_MG.ico new file mode 100644 index 0000000000..c4bd13e6ca Binary files /dev/null and b/plugins/SpellChecker/Flags/mg_MG.ico differ diff --git a/plugins/SpellChecker/Flags/mh.ico b/plugins/SpellChecker/Flags/mh.ico new file mode 100644 index 0000000000..d82482fb09 Binary files /dev/null and b/plugins/SpellChecker/Flags/mh.ico differ diff --git a/plugins/SpellChecker/Flags/mi_NZ.ico b/plugins/SpellChecker/Flags/mi_NZ.ico new file mode 100644 index 0000000000..9c4cac8f15 Binary files /dev/null and b/plugins/SpellChecker/Flags/mi_NZ.ico differ diff --git a/plugins/SpellChecker/Flags/mk.ico b/plugins/SpellChecker/Flags/mk.ico new file mode 100644 index 0000000000..1c032d9a9a Binary files /dev/null and b/plugins/SpellChecker/Flags/mk.ico differ diff --git a/plugins/SpellChecker/Flags/ml.ico b/plugins/SpellChecker/Flags/ml.ico new file mode 100644 index 0000000000..d05c5bede3 Binary files /dev/null and b/plugins/SpellChecker/Flags/ml.ico differ diff --git a/plugins/SpellChecker/Flags/mm.ico b/plugins/SpellChecker/Flags/mm.ico new file mode 100644 index 0000000000..f8257e6132 Binary files /dev/null and b/plugins/SpellChecker/Flags/mm.ico differ diff --git a/plugins/SpellChecker/Flags/mn_MN.ico b/plugins/SpellChecker/Flags/mn_MN.ico new file mode 100644 index 0000000000..2ad366dae2 Binary files /dev/null and b/plugins/SpellChecker/Flags/mn_MN.ico differ diff --git a/plugins/SpellChecker/Flags/mo.ico b/plugins/SpellChecker/Flags/mo.ico new file mode 100644 index 0000000000..0d1d78aed1 Binary files /dev/null and b/plugins/SpellChecker/Flags/mo.ico differ diff --git a/plugins/SpellChecker/Flags/mo_BF.ico b/plugins/SpellChecker/Flags/mo_BF.ico new file mode 100644 index 0000000000..cadd8be169 Binary files /dev/null and b/plugins/SpellChecker/Flags/mo_BF.ico differ diff --git a/plugins/SpellChecker/Flags/mp.ico b/plugins/SpellChecker/Flags/mp.ico new file mode 100644 index 0000000000..6df1f656d1 Binary files /dev/null and b/plugins/SpellChecker/Flags/mp.ico differ diff --git a/plugins/SpellChecker/Flags/mq.ico b/plugins/SpellChecker/Flags/mq.ico new file mode 100644 index 0000000000..f42c7d13e0 Binary files /dev/null and b/plugins/SpellChecker/Flags/mq.ico differ diff --git a/plugins/SpellChecker/Flags/mr.ico b/plugins/SpellChecker/Flags/mr.ico new file mode 100644 index 0000000000..e2617fd5b4 Binary files /dev/null and b/plugins/SpellChecker/Flags/mr.ico differ diff --git a/plugins/SpellChecker/Flags/mr_IN.ico b/plugins/SpellChecker/Flags/mr_IN.ico new file mode 100644 index 0000000000..b1a927d872 Binary files /dev/null and b/plugins/SpellChecker/Flags/mr_IN.ico differ diff --git a/plugins/SpellChecker/Flags/ms.ico b/plugins/SpellChecker/Flags/ms.ico new file mode 100644 index 0000000000..700e4f5478 Binary files /dev/null and b/plugins/SpellChecker/Flags/ms.ico differ diff --git a/plugins/SpellChecker/Flags/ms_MY.ico b/plugins/SpellChecker/Flags/ms_MY.ico new file mode 100644 index 0000000000..b6ddded2d5 Binary files /dev/null and b/plugins/SpellChecker/Flags/ms_MY.ico differ diff --git a/plugins/SpellChecker/Flags/mt.ico b/plugins/SpellChecker/Flags/mt.ico new file mode 100644 index 0000000000..d8b5ad2c41 Binary files /dev/null and b/plugins/SpellChecker/Flags/mt.ico differ diff --git a/plugins/SpellChecker/Flags/mu.ico b/plugins/SpellChecker/Flags/mu.ico new file mode 100644 index 0000000000..09b4103584 Binary files /dev/null and b/plugins/SpellChecker/Flags/mu.ico differ diff --git a/plugins/SpellChecker/Flags/mv.ico b/plugins/SpellChecker/Flags/mv.ico new file mode 100644 index 0000000000..ca77f768ef Binary files /dev/null and b/plugins/SpellChecker/Flags/mv.ico differ diff --git a/plugins/SpellChecker/Flags/mz.ico b/plugins/SpellChecker/Flags/mz.ico new file mode 100644 index 0000000000..803e62cde4 Binary files /dev/null and b/plugins/SpellChecker/Flags/mz.ico differ diff --git a/plugins/SpellChecker/Flags/na.ico b/plugins/SpellChecker/Flags/na.ico new file mode 100644 index 0000000000..09ae908448 Binary files /dev/null and b/plugins/SpellChecker/Flags/na.ico differ diff --git a/plugins/SpellChecker/Flags/nb_NO.ico b/plugins/SpellChecker/Flags/nb_NO.ico new file mode 100644 index 0000000000..f0b648deba Binary files /dev/null and b/plugins/SpellChecker/Flags/nb_NO.ico differ diff --git a/plugins/SpellChecker/Flags/nc.ico b/plugins/SpellChecker/Flags/nc.ico new file mode 100644 index 0000000000..f8c8695c00 Binary files /dev/null and b/plugins/SpellChecker/Flags/nc.ico differ diff --git a/plugins/SpellChecker/Flags/ne.ico b/plugins/SpellChecker/Flags/ne.ico new file mode 100644 index 0000000000..45b61121ca Binary files /dev/null and b/plugins/SpellChecker/Flags/ne.ico differ diff --git a/plugins/SpellChecker/Flags/ne_NP.ico b/plugins/SpellChecker/Flags/ne_NP.ico new file mode 100644 index 0000000000..cc7954f1ad Binary files /dev/null and b/plugins/SpellChecker/Flags/ne_NP.ico differ diff --git a/plugins/SpellChecker/Flags/nf.ico b/plugins/SpellChecker/Flags/nf.ico new file mode 100644 index 0000000000..49e50f9478 Binary files /dev/null and b/plugins/SpellChecker/Flags/nf.ico differ diff --git a/plugins/SpellChecker/Flags/ng.ico b/plugins/SpellChecker/Flags/ng.ico new file mode 100644 index 0000000000..250fc73fa2 Binary files /dev/null and b/plugins/SpellChecker/Flags/ng.ico differ diff --git a/plugins/SpellChecker/Flags/ni.ico b/plugins/SpellChecker/Flags/ni.ico new file mode 100644 index 0000000000..f0795cec7f Binary files /dev/null and b/plugins/SpellChecker/Flags/ni.ico differ diff --git a/plugins/SpellChecker/Flags/nl_NL.ico b/plugins/SpellChecker/Flags/nl_NL.ico new file mode 100644 index 0000000000..ea2d4c64d4 Binary files /dev/null and b/plugins/SpellChecker/Flags/nl_NL.ico differ diff --git a/plugins/SpellChecker/Flags/nn_NO.ico b/plugins/SpellChecker/Flags/nn_NO.ico new file mode 100644 index 0000000000..f0b648deba Binary files /dev/null and b/plugins/SpellChecker/Flags/nn_NO.ico differ diff --git a/plugins/SpellChecker/Flags/nr.ico b/plugins/SpellChecker/Flags/nr.ico new file mode 100644 index 0000000000..995a00a79a Binary files /dev/null and b/plugins/SpellChecker/Flags/nr.ico differ diff --git a/plugins/SpellChecker/Flags/nr_ZA.ico b/plugins/SpellChecker/Flags/nr_ZA.ico new file mode 100644 index 0000000000..a786459654 Binary files /dev/null and b/plugins/SpellChecker/Flags/nr_ZA.ico differ diff --git a/plugins/SpellChecker/Flags/ns_ZA.ico b/plugins/SpellChecker/Flags/ns_ZA.ico new file mode 100644 index 0000000000..a786459654 Binary files /dev/null and b/plugins/SpellChecker/Flags/ns_ZA.ico differ diff --git a/plugins/SpellChecker/Flags/nu.ico b/plugins/SpellChecker/Flags/nu.ico new file mode 100644 index 0000000000..98675192de Binary files /dev/null and b/plugins/SpellChecker/Flags/nu.ico differ diff --git a/plugins/SpellChecker/Flags/ny_MW.ico b/plugins/SpellChecker/Flags/ny_MW.ico new file mode 100644 index 0000000000..dce539f90d Binary files /dev/null and b/plugins/SpellChecker/Flags/ny_MW.ico differ diff --git a/plugins/SpellChecker/Flags/om.ico b/plugins/SpellChecker/Flags/om.ico new file mode 100644 index 0000000000..98d735bcc9 Binary files /dev/null and b/plugins/SpellChecker/Flags/om.ico differ diff --git a/plugins/SpellChecker/Flags/or_IN.ico b/plugins/SpellChecker/Flags/or_IN.ico new file mode 100644 index 0000000000..b1a927d872 Binary files /dev/null and b/plugins/SpellChecker/Flags/or_IN.ico differ diff --git a/plugins/SpellChecker/Flags/pa.ico b/plugins/SpellChecker/Flags/pa.ico new file mode 100644 index 0000000000..a0b4d344fe Binary files /dev/null and b/plugins/SpellChecker/Flags/pa.ico differ diff --git a/plugins/SpellChecker/Flags/pe.ico b/plugins/SpellChecker/Flags/pe.ico new file mode 100644 index 0000000000..1e3d1a7339 Binary files /dev/null and b/plugins/SpellChecker/Flags/pe.ico differ diff --git a/plugins/SpellChecker/Flags/pf.ico b/plugins/SpellChecker/Flags/pf.ico new file mode 100644 index 0000000000..2b2acef214 Binary files /dev/null and b/plugins/SpellChecker/Flags/pf.ico differ diff --git a/plugins/SpellChecker/Flags/pg.ico b/plugins/SpellChecker/Flags/pg.ico new file mode 100644 index 0000000000..324ba8e192 Binary files /dev/null and b/plugins/SpellChecker/Flags/pg.ico differ diff --git a/plugins/SpellChecker/Flags/pk.ico b/plugins/SpellChecker/Flags/pk.ico new file mode 100644 index 0000000000..d979e9decc Binary files /dev/null and b/plugins/SpellChecker/Flags/pk.ico differ diff --git a/plugins/SpellChecker/Flags/pl_PL.ico b/plugins/SpellChecker/Flags/pl_PL.ico new file mode 100644 index 0000000000..9b3bfd1fbc Binary files /dev/null and b/plugins/SpellChecker/Flags/pl_PL.ico differ diff --git a/plugins/SpellChecker/Flags/pm.ico b/plugins/SpellChecker/Flags/pm.ico new file mode 100644 index 0000000000..0de10e26f5 Binary files /dev/null and b/plugins/SpellChecker/Flags/pm.ico differ diff --git a/plugins/SpellChecker/Flags/pn.ico b/plugins/SpellChecker/Flags/pn.ico new file mode 100644 index 0000000000..566b7facbc Binary files /dev/null and b/plugins/SpellChecker/Flags/pn.ico differ diff --git a/plugins/SpellChecker/Flags/pr.ico b/plugins/SpellChecker/Flags/pr.ico new file mode 100644 index 0000000000..890e131d11 Binary files /dev/null and b/plugins/SpellChecker/Flags/pr.ico differ diff --git a/plugins/SpellChecker/Flags/ps.ico b/plugins/SpellChecker/Flags/ps.ico new file mode 100644 index 0000000000..773c066649 Binary files /dev/null and b/plugins/SpellChecker/Flags/ps.ico differ diff --git a/plugins/SpellChecker/Flags/pt_BR.ico b/plugins/SpellChecker/Flags/pt_BR.ico new file mode 100644 index 0000000000..9d015e3614 Binary files /dev/null and b/plugins/SpellChecker/Flags/pt_BR.ico differ diff --git a/plugins/SpellChecker/Flags/pt_PT.ico b/plugins/SpellChecker/Flags/pt_PT.ico new file mode 100644 index 0000000000..d322f99767 Binary files /dev/null and b/plugins/SpellChecker/Flags/pt_PT.ico differ diff --git a/plugins/SpellChecker/Flags/pw.ico b/plugins/SpellChecker/Flags/pw.ico new file mode 100644 index 0000000000..cd5b828bc6 Binary files /dev/null and b/plugins/SpellChecker/Flags/pw.ico differ diff --git a/plugins/SpellChecker/Flags/py.ico b/plugins/SpellChecker/Flags/py.ico new file mode 100644 index 0000000000..a0cc19e81a Binary files /dev/null and b/plugins/SpellChecker/Flags/py.ico differ diff --git a/plugins/SpellChecker/Flags/qa.ico b/plugins/SpellChecker/Flags/qa.ico new file mode 100644 index 0000000000..dbd700f008 Binary files /dev/null and b/plugins/SpellChecker/Flags/qa.ico differ diff --git a/plugins/SpellChecker/Flags/qu_BO.ico b/plugins/SpellChecker/Flags/qu_BO.ico new file mode 100644 index 0000000000..315825c47e Binary files /dev/null and b/plugins/SpellChecker/Flags/qu_BO.ico differ diff --git a/plugins/SpellChecker/Flags/readme.txt b/plugins/SpellChecker/Flags/readme.txt new file mode 100644 index 0000000000..d20182b7c2 --- /dev/null +++ b/plugins/SpellChecker/Flags/readme.txt @@ -0,0 +1,8 @@ +flag icons - famfamfam.com + +Free for any use. If you use these flags in your software or +on your website, an email with a link or a screenshot would be nice. :) + +- Thanks to Christian Cook for splitting it all up into separate images + +Contact: mjames@gmail.com \ No newline at end of file diff --git a/plugins/SpellChecker/Flags/ro_BO.ico b/plugins/SpellChecker/Flags/ro_BO.ico new file mode 100644 index 0000000000..149a031893 Binary files /dev/null and b/plugins/SpellChecker/Flags/ro_BO.ico differ diff --git a/plugins/SpellChecker/Flags/ro_RO.ico b/plugins/SpellChecker/Flags/ro_RO.ico new file mode 100644 index 0000000000..1345d5166f Binary files /dev/null and b/plugins/SpellChecker/Flags/ro_RO.ico differ diff --git a/plugins/SpellChecker/Flags/ru_RU.ico b/plugins/SpellChecker/Flags/ru_RU.ico new file mode 100644 index 0000000000..ecbe640578 Binary files /dev/null and b/plugins/SpellChecker/Flags/ru_RU.ico differ diff --git a/plugins/SpellChecker/Flags/rw_RW.ico b/plugins/SpellChecker/Flags/rw_RW.ico new file mode 100644 index 0000000000..77d8c8b8c1 Binary files /dev/null and b/plugins/SpellChecker/Flags/rw_RW.ico differ diff --git a/plugins/SpellChecker/Flags/sa.ico b/plugins/SpellChecker/Flags/sa.ico new file mode 100644 index 0000000000..9d10c250a0 Binary files /dev/null and b/plugins/SpellChecker/Flags/sa.ico differ diff --git a/plugins/SpellChecker/Flags/sb.ico b/plugins/SpellChecker/Flags/sb.ico new file mode 100644 index 0000000000..5937333372 Binary files /dev/null and b/plugins/SpellChecker/Flags/sb.ico differ diff --git a/plugins/SpellChecker/Flags/sc.ico b/plugins/SpellChecker/Flags/sc.ico new file mode 100644 index 0000000000..770967b5a0 Binary files /dev/null and b/plugins/SpellChecker/Flags/sc.ico differ diff --git a/plugins/SpellChecker/Flags/sd.ico b/plugins/SpellChecker/Flags/sd.ico new file mode 100644 index 0000000000..6545b0e3f6 Binary files /dev/null and b/plugins/SpellChecker/Flags/sd.ico differ diff --git a/plugins/SpellChecker/Flags/sg.ico b/plugins/SpellChecker/Flags/sg.ico new file mode 100644 index 0000000000..f6ec180a53 Binary files /dev/null and b/plugins/SpellChecker/Flags/sg.ico differ diff --git a/plugins/SpellChecker/Flags/sh.ico b/plugins/SpellChecker/Flags/sh.ico new file mode 100644 index 0000000000..b6acb4008d Binary files /dev/null and b/plugins/SpellChecker/Flags/sh.ico differ diff --git a/plugins/SpellChecker/Flags/sk_SK.ico b/plugins/SpellChecker/Flags/sk_SK.ico new file mode 100644 index 0000000000..b1fac30bea Binary files /dev/null and b/plugins/SpellChecker/Flags/sk_SK.ico differ diff --git a/plugins/SpellChecker/Flags/sl.ico b/plugins/SpellChecker/Flags/sl.ico new file mode 100644 index 0000000000..e9159c16a0 Binary files /dev/null and b/plugins/SpellChecker/Flags/sl.ico differ diff --git a/plugins/SpellChecker/Flags/sl_SI.ico b/plugins/SpellChecker/Flags/sl_SI.ico new file mode 100644 index 0000000000..833fbec207 Binary files /dev/null and b/plugins/SpellChecker/Flags/sl_SI.ico differ diff --git a/plugins/SpellChecker/Flags/sm.ico b/plugins/SpellChecker/Flags/sm.ico new file mode 100644 index 0000000000..5a7423c178 Binary files /dev/null and b/plugins/SpellChecker/Flags/sm.ico differ diff --git a/plugins/SpellChecker/Flags/sn.ico b/plugins/SpellChecker/Flags/sn.ico new file mode 100644 index 0000000000..f8501d7e77 Binary files /dev/null and b/plugins/SpellChecker/Flags/sn.ico differ diff --git a/plugins/SpellChecker/Flags/so.ico b/plugins/SpellChecker/Flags/so.ico new file mode 100644 index 0000000000..27ea026ebe Binary files /dev/null and b/plugins/SpellChecker/Flags/so.ico differ diff --git a/plugins/SpellChecker/Flags/sr.ico b/plugins/SpellChecker/Flags/sr.ico new file mode 100644 index 0000000000..e32ebd74e5 Binary files /dev/null and b/plugins/SpellChecker/Flags/sr.ico differ diff --git a/plugins/SpellChecker/Flags/sr_CS.ico b/plugins/SpellChecker/Flags/sr_CS.ico new file mode 100644 index 0000000000..82e104a81c Binary files /dev/null and b/plugins/SpellChecker/Flags/sr_CS.ico differ diff --git a/plugins/SpellChecker/Flags/ss_ZA.ico b/plugins/SpellChecker/Flags/ss_ZA.ico new file mode 100644 index 0000000000..c5dcd88737 Binary files /dev/null and b/plugins/SpellChecker/Flags/ss_ZA.ico differ diff --git a/plugins/SpellChecker/Flags/st.ico b/plugins/SpellChecker/Flags/st.ico new file mode 100644 index 0000000000..d4dda8a626 Binary files /dev/null and b/plugins/SpellChecker/Flags/st.ico differ diff --git a/plugins/SpellChecker/Flags/st_ZA.ico b/plugins/SpellChecker/Flags/st_ZA.ico new file mode 100644 index 0000000000..a786459654 Binary files /dev/null and b/plugins/SpellChecker/Flags/st_ZA.ico differ diff --git a/plugins/SpellChecker/Flags/sv.ico b/plugins/SpellChecker/Flags/sv.ico new file mode 100644 index 0000000000..00bb86086f Binary files /dev/null and b/plugins/SpellChecker/Flags/sv.ico differ diff --git a/plugins/SpellChecker/Flags/sv_SE.ico b/plugins/SpellChecker/Flags/sv_SE.ico new file mode 100644 index 0000000000..7a58adf63b Binary files /dev/null and b/plugins/SpellChecker/Flags/sv_SE.ico differ diff --git a/plugins/SpellChecker/Flags/sy.ico b/plugins/SpellChecker/Flags/sy.ico new file mode 100644 index 0000000000..d022ebcd57 Binary files /dev/null and b/plugins/SpellChecker/Flags/sy.ico differ diff --git a/plugins/SpellChecker/Flags/tc.ico b/plugins/SpellChecker/Flags/tc.ico new file mode 100644 index 0000000000..750323d0a6 Binary files /dev/null and b/plugins/SpellChecker/Flags/tc.ico differ diff --git a/plugins/SpellChecker/Flags/td.ico b/plugins/SpellChecker/Flags/td.ico new file mode 100644 index 0000000000..c02ef93595 Binary files /dev/null and b/plugins/SpellChecker/Flags/td.ico differ diff --git a/plugins/SpellChecker/Flags/tet_ID.ico b/plugins/SpellChecker/Flags/tet_ID.ico new file mode 100644 index 0000000000..9432e87f95 Binary files /dev/null and b/plugins/SpellChecker/Flags/tet_ID.ico differ diff --git a/plugins/SpellChecker/Flags/tf.ico b/plugins/SpellChecker/Flags/tf.ico new file mode 100644 index 0000000000..334b7f0086 Binary files /dev/null and b/plugins/SpellChecker/Flags/tf.ico differ diff --git a/plugins/SpellChecker/Flags/tg.ico b/plugins/SpellChecker/Flags/tg.ico new file mode 100644 index 0000000000..2ab28c0d06 Binary files /dev/null and b/plugins/SpellChecker/Flags/tg.ico differ diff --git a/plugins/SpellChecker/Flags/th.ico b/plugins/SpellChecker/Flags/th.ico new file mode 100644 index 0000000000..522dd9e1ed Binary files /dev/null and b/plugins/SpellChecker/Flags/th.ico differ diff --git a/plugins/SpellChecker/Flags/tj.ico b/plugins/SpellChecker/Flags/tj.ico new file mode 100644 index 0000000000..fd17d8a87e Binary files /dev/null and b/plugins/SpellChecker/Flags/tj.ico differ diff --git a/plugins/SpellChecker/Flags/tk.ico b/plugins/SpellChecker/Flags/tk.ico new file mode 100644 index 0000000000..f76b1979a6 Binary files /dev/null and b/plugins/SpellChecker/Flags/tk.ico differ diff --git a/plugins/SpellChecker/Flags/tl.ico b/plugins/SpellChecker/Flags/tl.ico new file mode 100644 index 0000000000..e9956a86e5 Binary files /dev/null and b/plugins/SpellChecker/Flags/tl.ico differ diff --git a/plugins/SpellChecker/Flags/tl_PH.ico b/plugins/SpellChecker/Flags/tl_PH.ico new file mode 100644 index 0000000000..d4369474b5 Binary files /dev/null and b/plugins/SpellChecker/Flags/tl_PH.ico differ diff --git a/plugins/SpellChecker/Flags/tm.ico b/plugins/SpellChecker/Flags/tm.ico new file mode 100644 index 0000000000..676fa75bf2 Binary files /dev/null and b/plugins/SpellChecker/Flags/tm.ico differ diff --git a/plugins/SpellChecker/Flags/tn.ico b/plugins/SpellChecker/Flags/tn.ico new file mode 100644 index 0000000000..4427d36fb3 Binary files /dev/null and b/plugins/SpellChecker/Flags/tn.ico differ diff --git a/plugins/SpellChecker/Flags/tn_ZA.ico b/plugins/SpellChecker/Flags/tn_ZA.ico new file mode 100644 index 0000000000..efa797a715 Binary files /dev/null and b/plugins/SpellChecker/Flags/tn_ZA.ico differ diff --git a/plugins/SpellChecker/Flags/to.ico b/plugins/SpellChecker/Flags/to.ico new file mode 100644 index 0000000000..ce677d90df Binary files /dev/null and b/plugins/SpellChecker/Flags/to.ico differ diff --git a/plugins/SpellChecker/Flags/ts_ZA.ico b/plugins/SpellChecker/Flags/ts_ZA.ico new file mode 100644 index 0000000000..a786459654 Binary files /dev/null and b/plugins/SpellChecker/Flags/ts_ZA.ico differ diff --git a/plugins/SpellChecker/Flags/tt.ico b/plugins/SpellChecker/Flags/tt.ico new file mode 100644 index 0000000000..a737128efb Binary files /dev/null and b/plugins/SpellChecker/Flags/tt.ico differ diff --git a/plugins/SpellChecker/Flags/tv.ico b/plugins/SpellChecker/Flags/tv.ico new file mode 100644 index 0000000000..9778da18b2 Binary files /dev/null and b/plugins/SpellChecker/Flags/tv.ico differ diff --git a/plugins/SpellChecker/Flags/tw.ico b/plugins/SpellChecker/Flags/tw.ico new file mode 100644 index 0000000000..4f44eeaf70 Binary files /dev/null and b/plugins/SpellChecker/Flags/tw.ico differ diff --git a/plugins/SpellChecker/Flags/tz.ico b/plugins/SpellChecker/Flags/tz.ico new file mode 100644 index 0000000000..961587b265 Binary files /dev/null and b/plugins/SpellChecker/Flags/tz.ico differ diff --git a/plugins/SpellChecker/Flags/ug.ico b/plugins/SpellChecker/Flags/ug.ico new file mode 100644 index 0000000000..91b92fd2c9 Binary files /dev/null and b/plugins/SpellChecker/Flags/ug.ico differ diff --git a/plugins/SpellChecker/Flags/uk_UA.ico b/plugins/SpellChecker/Flags/uk_UA.ico new file mode 100644 index 0000000000..be541024cb Binary files /dev/null and b/plugins/SpellChecker/Flags/uk_UA.ico differ diff --git a/plugins/SpellChecker/Flags/um.ico b/plugins/SpellChecker/Flags/um.ico new file mode 100644 index 0000000000..0979678e62 Binary files /dev/null and b/plugins/SpellChecker/Flags/um.ico differ diff --git a/plugins/SpellChecker/Flags/uy.ico b/plugins/SpellChecker/Flags/uy.ico new file mode 100644 index 0000000000..9b8203065f Binary files /dev/null and b/plugins/SpellChecker/Flags/uy.ico differ diff --git a/plugins/SpellChecker/Flags/uz_UZ.ico b/plugins/SpellChecker/Flags/uz_UZ.ico new file mode 100644 index 0000000000..1665b26caa Binary files /dev/null and b/plugins/SpellChecker/Flags/uz_UZ.ico differ diff --git a/plugins/SpellChecker/Flags/va.ico b/plugins/SpellChecker/Flags/va.ico new file mode 100644 index 0000000000..0f7e081c83 Binary files /dev/null and b/plugins/SpellChecker/Flags/va.ico differ diff --git a/plugins/SpellChecker/Flags/vc.ico b/plugins/SpellChecker/Flags/vc.ico new file mode 100644 index 0000000000..65e26263ee Binary files /dev/null and b/plugins/SpellChecker/Flags/vc.ico differ diff --git a/plugins/SpellChecker/Flags/ve.ico b/plugins/SpellChecker/Flags/ve.ico new file mode 100644 index 0000000000..45ffac8262 Binary files /dev/null and b/plugins/SpellChecker/Flags/ve.ico differ diff --git a/plugins/SpellChecker/Flags/ve_ZA.ico b/plugins/SpellChecker/Flags/ve_ZA.ico new file mode 100644 index 0000000000..a786459654 Binary files /dev/null and b/plugins/SpellChecker/Flags/ve_ZA.ico differ diff --git a/plugins/SpellChecker/Flags/vg.ico b/plugins/SpellChecker/Flags/vg.ico new file mode 100644 index 0000000000..e41c589f6f Binary files /dev/null and b/plugins/SpellChecker/Flags/vg.ico differ diff --git a/plugins/SpellChecker/Flags/vi.ico b/plugins/SpellChecker/Flags/vi.ico new file mode 100644 index 0000000000..df3a8c1215 Binary files /dev/null and b/plugins/SpellChecker/Flags/vi.ico differ diff --git a/plugins/SpellChecker/Flags/vi_VI.ico b/plugins/SpellChecker/Flags/vi_VI.ico new file mode 100644 index 0000000000..eb767d01a4 Binary files /dev/null and b/plugins/SpellChecker/Flags/vi_VI.ico differ diff --git a/plugins/SpellChecker/Flags/vu.ico b/plugins/SpellChecker/Flags/vu.ico new file mode 100644 index 0000000000..71d877f03d Binary files /dev/null and b/plugins/SpellChecker/Flags/vu.ico differ diff --git a/plugins/SpellChecker/Flags/wf.ico b/plugins/SpellChecker/Flags/wf.ico new file mode 100644 index 0000000000..48364346ae Binary files /dev/null and b/plugins/SpellChecker/Flags/wf.ico differ diff --git a/plugins/SpellChecker/Flags/ws.ico b/plugins/SpellChecker/Flags/ws.ico new file mode 100644 index 0000000000..468ec949c1 Binary files /dev/null and b/plugins/SpellChecker/Flags/ws.ico differ diff --git a/plugins/SpellChecker/Flags/xh_ZA.ico b/plugins/SpellChecker/Flags/xh_ZA.ico new file mode 100644 index 0000000000..a786459654 Binary files /dev/null and b/plugins/SpellChecker/Flags/xh_ZA.ico differ diff --git a/plugins/SpellChecker/Flags/ye.ico b/plugins/SpellChecker/Flags/ye.ico new file mode 100644 index 0000000000..049c38c1c4 Binary files /dev/null and b/plugins/SpellChecker/Flags/ye.ico differ diff --git a/plugins/SpellChecker/Flags/yt.ico b/plugins/SpellChecker/Flags/yt.ico new file mode 100644 index 0000000000..7bec05ff9e Binary files /dev/null and b/plugins/SpellChecker/Flags/yt.ico differ diff --git a/plugins/SpellChecker/Flags/zm.ico b/plugins/SpellChecker/Flags/zm.ico new file mode 100644 index 0000000000..d8ea9873eb Binary files /dev/null and b/plugins/SpellChecker/Flags/zm.ico differ diff --git a/plugins/SpellChecker/Flags/zu_ZA.ico b/plugins/SpellChecker/Flags/zu_ZA.ico new file mode 100644 index 0000000000..a786459654 Binary files /dev/null and b/plugins/SpellChecker/Flags/zu_ZA.ico differ diff --git a/plugins/SpellChecker/Flags/zw.ico b/plugins/SpellChecker/Flags/zw.ico new file mode 100644 index 0000000000..aa7b042fae Binary files /dev/null and b/plugins/SpellChecker/Flags/zw.ico differ diff --git a/plugins/SpellChecker/RichEdit.cpp b/plugins/SpellChecker/RichEdit.cpp new file mode 100644 index 0000000000..96faed5b17 --- /dev/null +++ b/plugins/SpellChecker/RichEdit.cpp @@ -0,0 +1,332 @@ +#include "commons.h" + + +RichEdit::RichEdit(HWND hwnd) + : hwnd(NULL), ole(NULL), textDocument(NULL), stopped(0), undoEnabled(TRUE) +{ + SetHWND(hwnd); +} + +RichEdit::~RichEdit() +{ + SetHWND(NULL); +} + +bool RichEdit::IsValid() const +{ + return ole != NULL; +} + +HWND RichEdit::GetHWND() const +{ + return hwnd; +} + +void RichEdit::SetHWND(HWND hwnd) +{ + if (textDocument != NULL) + { + textDocument->Release(); + textDocument = NULL; + } + if (ole != NULL) + { + ole->Release(); + ole = NULL; + } + + this->hwnd = hwnd; + + if (hwnd == NULL) + return; + + SendMessage(EM_GETOLEINTERFACE, 0, (LPARAM) &ole); + if (ole == NULL) + return; + + if (ole->QueryInterface(IID_ITextDocument, (void**) &textDocument) != S_OK) + textDocument = NULL; +} + +LRESULT RichEdit::SendMessage(UINT Msg, WPARAM wParam, LPARAM lParam) const +{ + return ::SendMessage(hwnd, Msg, wParam, lParam); +} + +bool RichEdit::IsReadOnly() const +{ + return (GetWindowLong(hwnd, GWL_STYLE) & ES_READONLY) == ES_READONLY; +} + +void RichEdit::SuspendUndo() +{ + if (textDocument != NULL) + { + textDocument->Undo(tomSuspend, NULL); + undoEnabled = FALSE; + } +} + +void RichEdit::ResumeUndo() +{ + if (textDocument != NULL) + { + textDocument->Undo(tomResume, NULL); + undoEnabled = TRUE; + } +} + +void RichEdit::Stop() +{ + stopped++; + if (stopped != 1) + return; + + SuspendUndo(); + +// HideCaret(hwnd); + SendMessage(WM_SETREDRAW, FALSE, 0); + + SendMessage(EM_GETSCROLLPOS, 0, (LPARAM) &old_scroll_pos); + SendMessage(EM_EXGETSEL, 0, (LPARAM) &old_sel); + GetCaretPos(&caretPos); + + old_mask = SendMessage(EM_GETEVENTMASK, 0, 0); + SendMessage(EM_SETEVENTMASK, 0, old_mask & ~ENM_CHANGE); + + inverse = (old_sel.cpMin >= LOWORD(SendMessage(EM_CHARFROMPOS, 0, (LPARAM) &caretPos))); +} + +void RichEdit::Start() +{ + stopped--; + + if (stopped < 0) + { + stopped = 0; + return; + } + else if (stopped > 0) + return; + + if (inverse) + { + LONG tmp = old_sel.cpMin; + old_sel.cpMin = old_sel.cpMax; + old_sel.cpMax = tmp; + } + + SendMessage(EM_SETEVENTMASK, 0, old_mask); + SendMessage(EM_EXSETSEL, 0, (LPARAM) &old_sel); + SendMessage(EM_SETSCROLLPOS, 0, (LPARAM) &old_scroll_pos); + + SendMessage(WM_SETREDRAW, TRUE, 0); + InvalidateRect(hwnd, NULL, FALSE); +// ShowCaret(hwnd); + + ResumeUndo(); +} + +BOOL RichEdit::IsStopped() +{ + return stopped > 0; +} + +int RichEdit::GetCharFromPos(const POINT &pt) +{ + return LOWORD(SendMessage(EM_CHARFROMPOS, 0, (LPARAM) &pt)); +} + +int RichEdit::GetLineCount() const +{ + return SendMessage(EM_GETLINECOUNT, 0, 0); +} + +void RichEdit::GetLine(int line, TCHAR *text, size_t text_len) const +{ + *((WORD*)text) = text_len - 1; + unsigned size = (unsigned) SendMessage(EM_GETLINE, (WPARAM) line, (LPARAM) text); + // Sometimes it likes to return size = lineLen+1, adding an \n at the end, so we remove it here + // to make both implementations return same size + int lineLen = GetLineLength(line); + size = (unsigned) max(0, min((int)text_len - 1, min((int) size, lineLen))); + text[size] = _T('\0'); + +/* + int len = GetLineLength(line); + if (len < 1) + { + text[0] = 0; + return; + } + + int first = GetFirstCharOfLine(line); + TCHAR *tmp = GetText(first, first + GetLineLength(line)); + lstrcpyn(text, tmp, text_len); + mir_free(tmp); +*/ +} + +int RichEdit::GetLineLength(int line) const +{ + return SendMessage(EM_LINELENGTH, GetFirstCharOfLine(line), 0); +} + +int RichEdit::GetFirstCharOfLine(int line) const +{ + return SendMessage(EM_LINEINDEX, (WPARAM) line, 0); +} + +int RichEdit::GetLineFromChar(int charPos) const +{ + return SendMessage(EM_LINEFROMCHAR, charPos, 0); +} + +CHARRANGE RichEdit::GetSel() const +{ + CHARRANGE sel; + SendMessage(EM_EXGETSEL, 0, (LPARAM) &sel); + return sel; +} + +void RichEdit::SetSel(int start, int end) +{ + CHARRANGE sel = { start, end }; + SetSel(sel); +} + +void RichEdit::SetSel(const CHARRANGE &sel) +{ + SendMessage(EM_EXSETSEL, 0, (LPARAM) &sel); +} + +int RichEdit::GetTextLength() const +{ + return GetWindowTextLength(hwnd); +} + +TCHAR *RichEdit::GetText(int start, int end) const +{ + if (end <= start) + end = GetTextLength(); + + if (textDocument != NULL) + { + ITextRange *range; + if (textDocument->Range(start, end, &range) != S_OK) + return mir_tstrdup(_T("")); + + BSTR text = NULL; + if (range->GetText(&text) != S_OK || text == NULL) + { + range->Release(); + return mir_tstrdup(_T("")); + } + + TCHAR *ret = mir_u2t(text); + + SysFreeString(text); + + range->Release(); + + return ret; + } + else + { + int len = GetTextLength(); + TCHAR *tmp = (TCHAR *) mir_alloc(len * sizeof(TCHAR)); + GetWindowText(hwnd, tmp, len); + tmp[len] = 0; + + TCHAR *ret = (TCHAR *) mir_alloc((end - start + 1) * sizeof(TCHAR)); + memmove(ret, &tmp[start], (end - start) * sizeof(TCHAR)); + ret[end - start] = 0; + + mir_free(tmp); + return ret; + } +} + +void RichEdit::ReplaceSel(const TCHAR *new_text) +{ + if (stopped) + { + CHARRANGE sel = GetSel(); + + ResumeUndo(); + + SendMessage(EM_REPLACESEL, undoEnabled, (LPARAM) new_text); + + SuspendUndo(); + + FixSel(&old_sel, sel, lstrlen(new_text)); + + SendMessage(WM_SETREDRAW, FALSE, 0); + SendMessage(EM_SETEVENTMASK, 0, old_mask & ~ENM_CHANGE); + } + else + { + SendMessage(EM_REPLACESEL, undoEnabled, (LPARAM) new_text); + } +} + +int RichEdit::Replace(int start, int end, const TCHAR *new_text) +{ + CHARRANGE sel = GetSel(); + CHARRANGE replace_sel = { start, end }; + SetSel(replace_sel); + + ReplaceSel(new_text); + + int dif = FixSel(&sel, replace_sel, lstrlen(new_text)); + SetSel(sel); + return dif; +} + +int RichEdit::Insert(int pos, const TCHAR *text) +{ + CHARRANGE sel = GetSel(); + CHARRANGE replace_sel = { pos, pos }; + SetSel(replace_sel); + + ReplaceSel(text); + + int dif = FixSel(&sel, replace_sel, lstrlen(text)); + SetSel(sel); + return dif; +} + +int RichEdit::Delete(int start, int end) +{ + CHARRANGE sel = GetSel(); + CHARRANGE replace_sel = { start, end }; + SetSel(replace_sel); + + ReplaceSel(_T("")); + + int dif = FixSel(&sel, replace_sel, 0); + SetSel(sel); + return dif; +} + +int RichEdit::FixSel(CHARRANGE *to_fix, CHARRANGE sel_changed, int new_len) +{ + int dif = new_len - (sel_changed.cpMax - sel_changed.cpMin); + + if (to_fix->cpMax <= sel_changed.cpMin) + return dif; + + int newMax = sel_changed.cpMax + dif; + + if (to_fix->cpMin >= sel_changed.cpMax) + to_fix->cpMin += dif; + else if (to_fix->cpMin >= newMax) // For dif < 0, pos beetween sel_changed.cpMax + dif and sel_changed.cpMax + to_fix->cpMin = newMax; + + if (to_fix->cpMax >= sel_changed.cpMax) + to_fix->cpMax += dif; + else if (to_fix->cpMax >= newMax) // For dif < 0, pos beetween sel_changed.cpMax + dif and sel_changed.cpMax + to_fix->cpMax = newMax; + + return dif; +} diff --git a/plugins/SpellChecker/RichEdit.h b/plugins/SpellChecker/RichEdit.h new file mode 100644 index 0000000000..e8b4101be4 --- /dev/null +++ b/plugins/SpellChecker/RichEdit.h @@ -0,0 +1,71 @@ +#ifndef __RICHEDIT_H__ +#define __RICHEDIT_H__ + +#include +#include +#include +#include + + +class RichEdit +{ + HWND hwnd; + IRichEditOle *ole; + ITextDocument *textDocument; + + int stopped; + BOOL undoEnabled; + POINT old_scroll_pos; + CHARRANGE old_sel; + POINT caretPos; + DWORD old_mask; + BOOL inverse; + +public: + RichEdit(HWND hwnd); + ~RichEdit(); + + bool IsValid() const; + HWND GetHWND() const; + + LRESULT SendMessage(UINT Msg, WPARAM wParam, LPARAM lParam) const; + + bool IsReadOnly() const; + + void SuspendUndo(); + void ResumeUndo(); + void Stop(); + void Start(); + BOOL IsStopped(); + + int GetCharFromPos(const POINT &pt); + + int GetLineCount() const; + void GetLine(int line, TCHAR *text, size_t text_len) const; + int GetLineLength(int line) const; + int GetFirstCharOfLine(int line) const; + int GetLineFromChar(int charPos) const; + + CHARRANGE GetSel() const; + void SetSel(int start, int end); + void SetSel(const CHARRANGE &sel); + + TCHAR *GetText(int start, int end) const; + int GetTextLength() const; + + void ReplaceSel(const TCHAR *new_text); + int Replace(int start, int end, const TCHAR *new_text); + int Insert(int pos, const TCHAR *text); + int Delete(int start, int end); + +private: + void SetHWND(HWND hwnd); + + int FixSel(CHARRANGE *to_fix, CHARRANGE sel_changed, int new_len); +}; + + + + + +#endif // __RICHEDIT_H__ diff --git a/plugins/SpellChecker/ZIP/Dictionaries/en_US.aff b/plugins/SpellChecker/ZIP/Dictionaries/en_US.aff new file mode 100644 index 0000000000..34ac09bb9a --- /dev/null +++ b/plugins/SpellChecker/ZIP/Dictionaries/en_US.aff @@ -0,0 +1,189 @@ +SET ISO8859-1 +TRY esianrtolcdugmphbyfvkwzESIANRTOLCDUGMPHBYFVKWZ +WORDCHARS '-qwertzuiopasdfghjklyxcvbnmQWERTZUIOPASDFGHJKLYXCVBNM + +PFX A Y 1 +PFX A 0 re . + +PFX I Y 1 +PFX I 0 in . + +PFX U Y 1 +PFX U 0 un . + +PFX C Y 1 +PFX C 0 de . + +PFX E Y 1 +PFX E 0 dis . + +PFX F Y 1 +PFX F 0 con . + +PFX K Y 1 +PFX K 0 pro . + +SFX V N 2 +SFX V e ive e +SFX V 0 ive [^e] + +SFX N Y 3 +SFX N e ion e +SFX N y ication y +SFX N 0 en [^ey] + +SFX X Y 3 +SFX X e ions e +SFX X y ications y +SFX X 0 ens [^ey] + +SFX H N 2 +SFX H y ieth y +SFX H 0 th [^y] + +SFX Y Y 1 +SFX Y 0 ly . + +SFX G Y 2 +SFX G e ing e +SFX G 0 ing [^e] + +SFX J Y 2 +SFX J e ings e +SFX J 0 ings [^e] + +SFX D Y 4 +SFX D 0 d e +SFX D y ied [^aeiou]y +SFX D 0 ed [^ey] +SFX D 0 ed [aeiou]y + +SFX T N 4 +SFX T 0 st e +SFX T y iest [^aeiou]y +SFX T 0 est [aeiou]y +SFX T 0 est [^ey] + +SFX R Y 4 +SFX R 0 r e +SFX R y ier [^aeiou]y +SFX R 0 er [aeiou]y +SFX R 0 er [^ey] + +SFX Z Y 4 +SFX Z 0 rs e +SFX Z y iers [^aeiou]y +SFX Z 0 ers [aeiou]y +SFX Z 0 ers [^ey] + +SFX S Y 4 +SFX S y ies [^aeiou]y +SFX S 0 s [aeiou]y +SFX S 0 es [sxzh] +SFX S 0 s [^sxzhy] + +SFX P Y 3 +SFX P y iness [^aeiou]y +SFX P 0 ness [aeiou]y +SFX P 0 ness [^y] + +SFX M Y 1 +SFX M 0 's . + +SFX B Y 3 +SFX B 0 able [^aeiou] +SFX B 0 able ee +SFX B e able [^aeiou]e + +SFX L Y 1 +SFX L 0 ment . + +REP 88 +REP a ei +REP ei a +REP a ey +REP ey a +REP ai ie +REP ie ai +REP are air +REP are ear +REP are eir +REP air are +REP air ere +REP ere air +REP ere ear +REP ere eir +REP ear are +REP ear air +REP ear ere +REP eir are +REP eir ere +REP ch te +REP te ch +REP ch ti +REP ti ch +REP ch tu +REP tu ch +REP ch s +REP s ch +REP ch k +REP k ch +REP f ph +REP ph f +REP gh f +REP f gh +REP i igh +REP igh i +REP i uy +REP uy i +REP i ee +REP ee i +REP j di +REP di j +REP j gg +REP gg j +REP j ge +REP ge j +REP s ti +REP ti s +REP s ci +REP ci s +REP k cc +REP cc k +REP k qu +REP qu k +REP kw qu +REP o eau +REP eau o +REP o ew +REP ew o +REP oo ew +REP ew oo +REP ew ui +REP ui ew +REP oo ui +REP ui oo +REP ew u +REP u ew +REP oo u +REP u oo +REP u oe +REP oe u +REP u ieu +REP ieu u +REP ue ew +REP ew ue +REP uff ough +REP oo ieu +REP ieu oo +REP ier ear +REP ear ier +REP ear air +REP air ear +REP w qu +REP qu w +REP z ss +REP ss z +REP shun tion +REP shun sion +REP shun cion diff --git a/plugins/SpellChecker/ZIP/Dictionaries/en_US.dic b/plugins/SpellChecker/ZIP/Dictionaries/en_US.dic new file mode 100644 index 0000000000..fc55225f75 --- /dev/null +++ b/plugins/SpellChecker/ZIP/Dictionaries/en_US.dic @@ -0,0 +1,62077 @@ +62076 +a +A +AA +AAA +Aachen/M +aardvark/SM +Aaren/M +Aarhus/M +Aarika/M +Aaron/M +AB +aback +abacus/SM +abaft +Abagael/M +Abagail/M +abalone/SM +abandoner/M +abandon/LGDRS +abandonment/SM +abase/LGDSR +abasement/S +abaser/M +abashed/UY +abashment/MS +abash/SDLG +abate/DSRLG +abated/U +abatement/MS +abater/M +abattoir/SM +Abba/M +Abbe/M +abbé/S +abbess/SM +Abbey/M +abbey/MS +Abbie/M +Abbi/M +Abbot/M +abbot/MS +Abbott/M +abbr +abbrev +abbreviated/UA +abbreviates/A +abbreviate/XDSNG +abbreviating/A +abbreviation/M +Abbye/M +Abby/M +ABC/M +Abdel/M +abdicate/NGDSX +abdication/M +abdomen/SM +abdominal/YS +abduct/DGS +abduction/SM +abductor/SM +Abdul/M +ab/DY +abeam +Abelard/M +Abel/M +Abelson/M +Abe/M +Aberdeen/M +Abernathy/M +aberrant/YS +aberrational +aberration/SM +abet/S +abetted +abetting +abettor/SM +Abeu/M +abeyance/MS +abeyant +Abey/M +abhorred +abhorrence/MS +abhorrent/Y +abhorrer/M +abhorring +abhor/S +abidance/MS +abide/JGSR +abider/M +abiding/Y +Abidjan/M +Abie/M +Abigael/M +Abigail/M +Abigale/M +Abilene/M +ability/IMES +abjection/MS +abjectness/SM +abject/SGPDY +abjuration/SM +abjuratory +abjurer/M +abjure/ZGSRD +ablate/VGNSDX +ablation/M +ablative/SY +ablaze +abler/E +ables/E +ablest +able/U +abloom +ablution/MS +Ab/M +ABM/S +abnegate/NGSDX +abnegation/M +Abner/M +abnormality/SM +abnormal/SY +aboard +abode/GMDS +abolisher/M +abolish/LZRSDG +abolishment/MS +abolitionism/SM +abolitionist/SM +abolition/SM +abominable +abominably +abominate/XSDGN +abomination/M +aboriginal/YS +aborigine/SM +Aborigine/SM +aborning +abortionist/MS +abortion/MS +abortiveness/M +abortive/PY +abort/SRDVG +Abo/SM +abound/GDS +about/S +aboveboard +aboveground +above/S +abracadabra/S +abrader/M +abrade/SRDG +Abraham/M +Abrahan/M +Abra/M +Abramo/M +Abram/SM +Abramson/M +Abran/M +abrasion/MS +abrasiveness/S +abrasive/SYMP +abreaction/MS +abreast +abridge/DSRG +abridged/U +abridger/M +abridgment/SM +abroad +abrogate/XDSNG +abrogation/M +abrogator/SM +abruptness/SM +abrupt/TRYP +ABS +abscess/GDSM +abscissa/SM +abscission/SM +absconder/M +abscond/SDRZG +abseil/SGDR +absence/SM +absenteeism/SM +absentee/MS +absentia/M +absentmindedness/S +absentminded/PY +absent/SGDRY +absinthe/SM +abs/M +absoluteness/SM +absolute/NPRSYTX +absolution/M +absolutism/MS +absolutist/SM +absolve/GDSR +absolver/M +absorb/ASGD +absorbed/U +absorbency/MS +absorbent/MS +absorber/SM +absorbing/Y +absorption/MS +absorptive +absorptivity/M +abstainer/M +abstain/GSDRZ +abstemiousness/MS +abstemious/YP +abstention/SM +abstinence/MS +abstinent/Y +abstractedness/SM +abstracted/YP +abstracter/M +abstractionism/M +abstractionist/SM +abstraction/SM +abstractness/SM +abstractor/MS +abstract/PTVGRDYS +abstruseness/SM +abstruse/PRYT +absurdity/SM +absurdness/SM +absurd/PRYST +Abuja +abundance/SM +abundant/Y +abused/E +abuse/GVZDSRB +abuser/M +abuses/E +abusing/E +abusiveness/SM +abusive/YP +abut/LS +abutment/SM +abutted +abutter/MS +abutting +abuzz +abysmal/Y +abyssal +Abyssinia/M +Abyssinian +abyss/SM +AC +acacia/SM +academe/MS +academia/SM +academical/Y +academicianship +academician/SM +academic/S +academy/SM +Acadia/M +acanthus/MS +Acapulco/M +accede/SDG +accelerated/U +accelerate/NGSDXV +accelerating/Y +acceleration/M +accelerator/SM +accelerometer/SM +accented/U +accent/SGMD +accentual/Y +accentuate/XNGSD +accentuation/M +acceptability/SM +acceptability's/U +acceptableness/SM +acceptable/P +acceptably/U +acceptance/SM +acceptant +acceptation/SM +accepted/Y +accepter/M +accepting/PY +acceptor/MS +accept/RDBSZVG +accessed/A +accessibility/IMS +accessible/IU +accessibly/I +accession/SMDG +accessors +accessory/SM +access/SDMG +accidence/M +accidentalness/M +accidental/SPY +accident/MS +acclaimer/M +acclaim/SDRG +acclamation/MS +acclimate/XSDGN +acclimation/M +acclimatisation +acclimatise/DG +acclimatization/AMS +acclimatized/U +acclimatize/RSDGZ +acclimatizes/A +acclivity/SM +accolade/GDSM +accommodated/U +accommodate/XVNGSD +accommodating/Y +accommodation/M +accommodativeness/M +accommodative/P +accompanied/U +accompanier/M +accompaniment/MS +accompanist/SM +accompany/DRSG +accomplice/MS +accomplished/U +accomplisher/M +accomplishment/SM +accomplish/SRDLZG +accordance/SM +accordant/Y +accorder/M +according/Y +accordionist/SM +accordion/MS +accord/SZGMRD +accost/SGD +accountability/MS +accountability's/U +accountableness/M +accountable/U +accountably/U +accountancy/SM +accountant/MS +account/BMDSGJ +accounted/U +accounting/M +accouter/GSD +accouterments +accouterment's +accoutrement/M +Accra/M +accreditation/SM +accredited/U +accredit/SGD +accretion/SM +accrual/MS +accrue/SDG +acct +acculturate/XSDVNG +acculturation/M +accumulate/VNGSDX +accumulation/M +accumulativeness/M +accumulative/YP +accumulator/MS +accuracy/IMS +accurate/IY +accurateness/SM +accursedness/SM +accursed/YP +accusal/M +accusation/SM +accusative/S +accusatory +accused/M +accuser/M +accuse/SRDZG +accusing/Y +accustomedness/M +accustomed/P +accustom/SGD +ac/DRG +aced/M +acerbate/DSG +acerbic +acerbically +acerbity/MS +ace/SM +acetaminophen/S +acetate/MS +acetic +acetone/SM +acetonic +acetylene/MS +Acevedo/M +Achaean/M +Achebe/M +ached/A +ache/DSG +achene/SM +Achernar/M +aches/A +Acheson/M +achievable/U +achieved/UA +achieve/LZGRSDB +achievement/SM +achiever/M +Achilles +aching/Y +achoo +achromatic +achy/TR +acidic +acidification/M +acidify/NSDG +acidity/SM +acidness/M +acidoses +acidosis/M +acid/SMYP +acidulous +acing/M +Ackerman/M +acknowledgeable +acknowledgedly +acknowledged/U +acknowledge/GZDRS +acknowledger/M +acknowledgment/SAM +ACLU +Ac/M +ACM +acme/SM +acne/MDS +acolyte/MS +Aconcagua/M +aconite/MS +acorn/SM +Acosta/M +acoustical/Y +acoustician/M +acoustic/S +acoustics/M +acquaintance/MS +acquaintanceship/S +acquainted/U +acquaint/GASD +acquiesce/GSD +acquiescence/SM +acquiescent/Y +acquirable +acquire/ASDG +acquirement/SM +acquisition's/A +acquisition/SM +acquisitiveness/MS +acquisitive/PY +acquit/S +acquittal/MS +acquittance/M +acquitted +acquitter/M +acquitting +acreage/MS +acre/MS +acridity/MS +acridness/SM +acrid/TPRY +acrimoniousness/MS +acrimonious/YP +acrimony/MS +acrobatically +acrobatic/S +acrobatics/M +acrobat/SM +acronym/SM +acrophobia/SM +Acropolis/M +acropolis/SM +across +acrostic/SM +Acrux/M +acrylate/M +acrylic/S +ACT +Actaeon/M +Acta/M +ACTH +acting/S +actinic +actinide/SM +actinium/MS +actinometer/MS +action/DMSGB +actions/AI +action's/IA +activate/AXCDSNGI +activated/U +activation/AMCI +activator/SM +active/APY +actively/I +activeness/MS +actives +activism/MS +activist/MS +activities/A +activity/MSI +Acton/M +actor/MAS +actress/SM +act's +Acts +act/SADVG +actuality/SM +actualization/MAS +actualize/GSD +actualizes/A +actual/SY +actuarial/Y +actuary/MS +actuate/GNXSD +actuation/M +actuator/SM +acuity/MS +acumen/SM +acupressure/S +acupuncture/SM +acupuncturist/S +acuteness/MS +acute/YTSRP +acyclic +acyclically +acyclovir/S +AD +adage/MS +adagio/S +Adah/M +Adair/M +Adaline/M +Ada/M +adamant/SY +Adamo/M +Adam/SM +Adamson/M +Adana/M +Adan/M +adaptability/MS +adaptable/U +adaptation/MS +adaptedness/M +adapted/P +adapter/M +adapting/A +adaption +adaptively +adaptiveness/M +adaptive/U +adaptivity +adapt/SRDBZVG +Adara/M +ad/AS +ADC +Adda/M +Addams +addenda +addend/SM +addendum/M +adder/M +Addia/M +addiction/MS +addictive/P +addict/SGVD +Addie/M +Addi/M +Addison/M +additional/Y +addition/MS +additive/YMS +additivity +addle/GDS +addressability +addressable/U +addressed/A +addressee/SM +addresser/M +addresses/A +address/MDRSZGB +Addressograph/M +adduce/GRSD +adducer/M +adduct/DGVS +adduction/M +adductor/M +Addy/M +add/ZGBSDR +Adelaida/M +Adelaide/M +Adela/M +Adelbert/M +Adele/M +Adelheid/M +Adelice/M +Adelina/M +Adelind/M +Adeline/M +Adella/M +Adelle/M +Adel/M +Ade/M +Adena/M +Adenauer/M +adenine/SM +Aden/M +adenoidal +adenoid/S +adeptness/MS +adept/RYPTS +adequacy/IMS +adequate/IPY +adequateness's/I +adequateness/SM +Adey/M +Adham/M +Adhara/M +adherence/SM +adherent/YMS +adherer/M +adhere/ZGRSD +adhesion/MS +adhesiveness/MS +adhesive/PYMS +adiabatic +adiabatically +Adiana/M +Adidas/M +adieu/S +Adi/M +Adina/M +adiós +adipose/S +Adirondack/SM +adj +adjacency/MS +adjacent/Y +adjectival/Y +adjective/MYS +adjoin/SDG +adjoint/M +adjourn/DGLS +adjournment/SM +adjudge/DSG +adjudicate/VNGXSD +adjudication/M +adjudicator/SM +adjudicatory +adjunct/VSYM +adjuration/SM +adjure/GSD +adjustable/U +adjustably +adjust/DRALGSB +adjusted/U +adjuster's/A +adjuster/SM +adjustive +adjustment/MAS +adjustor's +adjutant/SM +Adkins/M +Adlai/M +Adler/M +adman/M +admen +administer/GDJS +administrable +administrate/XSDVNG +administration/M +administrative/Y +administrator/MS +administratrix/M +admirableness/M +admirable/P +admirably +admiral/SM +admiralty/MS +Admiralty/S +admiration/MS +admirer/M +admire/RSDZBG +admiring/Y +admissibility/ISM +admissible/I +admissibly +admission/AMS +admit/AS +admittance/MS +admitted/A +admittedly +admitting/A +admix/SDG +admixture/SM +Adm/M +Ad/MN +admonisher/M +admonish/GLSRD +admonishing/Y +admonishment/SM +admonition/MS +admonitory +adobe/MS +adolescence/MS +adolescent/SYM +Adolf/M +Adolfo/M +Adolphe/M +Adolph/M +Adolpho/M +Adolphus/M +Ado/M +ado/MS +Adonis/SM +adopted/AU +adopter/M +adoption/MS +adoptive/Y +adopt/RDSBZVG +adopts/A +adorableness/SM +adorable/P +adorably +Adora/M +adoration/SM +adore/DSRGZB +Adoree/M +Adore/M +adorer/M +adoring/Y +adorned/U +Adorne/M +adornment/SM +adorn/SGLD +ADP +Adrea/M +adrenalin +adrenaline/MS +Adrenalin/MS +adrenal/YS +Adria/MX +Adriana/M +Adriane/M +Adrian/M +Adrianna/M +Adrianne/M +Adriano/M +Adriatic +Adriena/M +Adrien/M +Adrienne/M +adrift +adroitness/MS +adroit/RTYP +ads +ad's +adsorbate/M +adsorbent/S +adsorb/GSD +adsorption/MS +adsorptive/Y +adulate/GNDSX +adulation/M +adulator/SM +adulatory +adulterant/SM +adulterated/U +adulterate/NGSDX +adulteration/M +adulterer/SM +adulteress/MS +adulterous/Y +adultery/SM +adulthood/MS +adult/MYPS +adultness/M +adumbrate/XSDVGN +adumbration/M +adumbrative/Y +adv +advance/DSRLZG +advancement/MS +advancer/M +advantage/GMEDS +advantageous/EY +advantageousness/M +Adventist/M +adventist/S +adventitiousness/M +adventitious/PY +adventive/Y +Advent/SM +advent/SVM +adventurer/M +adventuresome +adventure/SRDGMZ +adventuress/SM +adventurousness/SM +adventurous/YP +adverbial/MYS +adverb/SM +adversarial +adversary/SM +adverse/DSRPYTG +adverseness/MS +adversity/SM +advert/GSD +advertised/U +advertise/JGZSRDL +advertisement/SM +advertiser/M +advertising/M +advertorial/S +advice/SM +Advil/M +advisability/SIM +advisable/I +advisableness/M +advisably +advisedly/I +advised/YU +advisee/MS +advisement/MS +adviser/M +advise/ZRSDGLB +advisor's +advisory/S +advocacy/SM +advocate/NGVDS +advocation/M +advt +adze's +adz/MDSG +Aegean +aegis/SM +Aelfric/M +Aeneas +Aeneid/M +aeolian +Aeolus/M +aeon's +aerate/XNGSD +aeration/M +aerator/MS +aerialist/MS +aerial/SMY +Aeriela/M +Aeriell/M +Aeriel/M +aerie/SRMT +aeroacoustic +aerobatic/S +aerobically +aerobic/S +aerodrome/SM +aerodynamically +aerodynamic/S +aerodynamics/M +aeronautical/Y +aeronautic/S +aeronautics/M +aerosolize/D +aerosol/MS +aerospace/SM +Aeschylus/M +Aesculapius/M +Aesop/M +aesthete/S +aesthetically +aestheticism/MS +aesthetics/M +aesthetic/U +aether/M +aetiology/M +AF +AFAIK +afar/S +AFB +AFC +AFDC +affability/MS +affable/TR +affably +affair/SM +affectation/MS +affectedness/EM +affected/UEYP +affect/EGSD +affecter/M +affecting/Y +affectionate/UY +affectioned +affection/EMS +affectioning +affective/MY +afferent/YS +affiance/GDS +affidavit/SM +affiliated/U +affiliate/EXSDNG +affiliation/EM +affine +affinity/SM +affirm/ASDG +affirmation/SAM +affirmative/SY +affix/SDG +afflatus/MS +afflict/GVDS +affliction/SM +afflictive/Y +affluence/SM +affluent/YS +afford/DSBG +afforest/A +afforestation/SM +afforested +afforesting +afforests +affray/MDSG +affricate/VNMS +affrication/M +affricative/M +affright +affront/GSDM +Afghani/SM +Afghanistan/M +afghan/MS +Afghan/SM +aficionado/MS +afield +afire +aflame +afloat +aflutter +afoot +afore +aforementioned +aforesaid +aforethought/S +afoul +Afr +afraid/U +afresh +Africa/M +African/MS +Afrikaans/M +Afrikaner/SM +afro +Afrocentric +Afrocentrism/S +Afro/MS +afterbirth/M +afterbirths +afterburner/MS +aftercare/SM +aftereffect/MS +afterglow/MS +afterimage/MS +afterlife/M +afterlives +aftermath/M +aftermaths +aftermost +afternoon/SM +aftershave/S +aftershock/SM +afters/M +aftertaste/SM +afterthought/MS +afterward/S +afterworld/MS +Afton/M +aft/ZR +Agace/M +again +against +Agamemnon/M +agapae +agape/S +agar/MS +Agassiz/M +Agata/M +agate/SM +Agatha/M +Agathe/M +agave/SM +agedness/M +aged/PY +age/GJDRSMZ +ageism/S +ageist/S +agelessness/MS +ageless/YP +agency/SM +agenda/MS +agent/AMS +agented +agenting +agentive +ageratum/M +Aggie/M +Aggi/M +agglomerate/XNGVDS +agglomeration/M +agglutinate/VNGXSD +agglutination/M +agglutinin/MS +aggrandize/LDSG +aggrandizement/SM +aggravate/SDNGX +aggravating/Y +aggravation/M +aggregated/U +aggregate/EGNVD +aggregately +aggregateness/M +aggregates +aggregation/SM +aggregative/Y +aggression/SM +aggressively +aggressiveness/S +aggressive/U +aggressor/MS +aggrieved/Y +aggrieve/GDS +Aggy/SM +aghast +agile/YTR +agility/MS +agitated/Y +agitate/XVNGSD +agitation/M +agitator/SM +agitprop/MS +Aglaia/M +agleam +aglitter +aglow +Ag/M +Agna/M +Agnella/M +Agnese/M +Agnes/M +Agnesse/M +Agneta/M +Agnew/M +Agni/M +Agnola/M +agnosticism/MS +agnostic/SM +ago +agog +agonizedly/S +agonized/Y +agonize/ZGRSD +agonizing/Y +agony/SM +agoraphobia/MS +agoraphobic/S +Agosto/M +Agra/M +agrarianism/MS +agrarian/S +agreeable/EP +agreeableness/SME +agreeably/E +agreeing/E +agree/LEBDS +agreement/ESM +agreer/S +Agretha/M +agribusiness/SM +Agricola/M +agriculturalist/S +agricultural/Y +agriculture/MS +agriculturist/SM +Agrippa/M +Agrippina/M +agrochemicals +agronomic/S +agronomist/SM +agronomy/MS +aground +Aguascalientes/M +ague/MS +Aguie/M +Aguilar/M +Aguinaldo/M +Aguirre/M +Aguistin/M +Aguste/M +Agustin/M +ah +Ahab/M +Aharon/M +aha/S +ahead +ahem/S +Ahmadabad +Ahmad/M +Ahmed/M +ahoy/S +Ahriman/M +AI +Aida/M +Aidan/M +aided/U +aide/MS +aider/M +AIDS +aid/ZGDRS +Aigneis/M +aigrette/SM +Aiken/M +Aila/M +Ailbert/M +Ailee/M +Aileen/M +Aile/M +Ailene/M +aileron/MS +Ailey/M +Ailina/M +Aili/SM +ail/LSDG +ailment/SM +Ailsun/M +Ailyn/M +Aimee/M +Aime/M +aimer/M +Aimil/M +aimlessness/MS +aimless/YP +aim/ZSGDR +Aindrea/M +Ainslee/M +Ainsley/M +Ainslie/M +ain't +Ainu/M +airbag/MS +airbase/S +airborne +airbrush/SDMG +Airbus/M +airbus/SM +aircraft/MS +aircrew/M +airdrop/MS +airdropped +airdropping +Airedale/SM +Aires +airfare/S +airfield/MS +airflow/SM +airfoil/MS +airframe/MS +airfreight/SGD +airhead/MS +airily +airiness/MS +airing/M +airlessness/S +airless/P +airlift/MDSG +airliner/M +airline/SRMZ +airlock/MS +airmail/DSG +airman/M +airmass +air/MDRTZGJS +airmen +airpark +airplane/SM +airplay/S +airport/MS +airship/MS +airsickness/SM +airsick/P +airspace/SM +airspeed/SM +airstrip/MS +airtightness/M +airtight/P +airtime +airwaves +airway/SM +airworthiness/SM +airworthy/PTR +airy/PRT +Aisha/M +aisle/DSGM +aitch/MS +ajar +Ajax/M +Ajay/M +AK +aka +Akbar/M +Akihito/M +akimbo +Akim/M +akin +Akita/M +Akkad/M +Akron/M +Aksel/M +AL +Alabama/M +Alabaman/S +Alabamian/MS +alabaster/MS +alack/S +alacrity/SM +Aladdin/M +Alaine/M +Alain/M +Alair/M +Alameda/M +Alamogordo/M +Alamo/SM +ala/MS +Ala/MS +Alanah/M +Alana/M +Aland/M +Alane/M +alanine/M +Alan/M +Alanna/M +Alano/M +Alanson/M +Alard/M +Alaric/M +Alar/M +alarming/Y +alarmist/MS +alarm/SDG +Alasdair/M +Alaska/M +Alaskan/S +alas/S +Alastair/M +Alasteir/M +Alaster/M +Alayne/M +albacore/SM +alba/M +Alba/M +Albania/M +Albanian/SM +Albany/M +albatross/SM +albedo/M +Albee/M +albeit +Alberich/M +Alberik/M +Alberio/M +Alberta/M +Albertan/S +Albertina/M +Albertine/M +Albert/M +Alberto/M +Albie/M +Albigensian +Albina/M +albinism/SM +albino/MS +Albion/M +Albireo/M +alb/MS +Albrecht/M +albumen/M +albumin/MS +albuminous +album/MNXS +Albuquerque/M +Alcatraz/M +Alcestis/M +alchemical +alchemist/SM +alchemy/MS +Alcibiades/M +Alcmena/M +Alcoa/M +alcoholically +alcoholic/MS +alcoholism/SM +alcohol/MS +Alcott/M +alcove/MSD +Alcuin/M +Alcyone/M +Aldan/M +Aldebaran/M +aldehyde/M +Alden/M +Alderamin/M +alderman/M +aldermen +alder/SM +alderwoman +alderwomen +Aldin/M +Aldis/M +Aldo/M +Aldon/M +Aldous/M +Aldrich/M +Aldric/M +Aldridge/M +Aldrin/M +Aldus/M +Aldwin/M +aleatory +Alecia/M +Aleck/M +Alec/M +Aleda/M +alee +Aleece/M +Aleen/M +alehouse/MS +Aleichem/M +Alejandra/M +Alejandrina/M +Alejandro/M +Alejoa/M +Aleksandr/M +Alembert/M +alembic/SM +ale/MVS +Alena/M +Alene/M +aleph/M +Aleppo/M +Aler/M +alerted/Y +alertness/MS +alert/STZGPRDY +Alessandra/M +Alessandro/M +Aleta/M +Alethea/M +Aleutian/S +Aleut/SM +alewife/M +alewives +Alexa/M +Alexander/SM +Alexandra/M +Alexandre/M +Alexandria/M +Alexandrian/S +Alexandrina/M +Alexandr/M +Alexandro/MS +Alexei/M +Alexia/M +Alexina/M +Alexine/M +Alexio/M +Alexi/SM +Alex/M +alfalfa/MS +Alfa/M +Alfie/M +Alfi/M +Alf/M +Alfonse/M +Alfons/M +Alfonso/M +Alfonzo/M +Alford/M +Alfreda/M +Alfred/M +Alfredo/M +alfresco +Alfy/M +algae +algaecide +algal +alga/M +algebraic +algebraical/Y +algebraist/M +algebra/MS +Algenib/M +Algeria/M +Algerian/MS +Alger/M +Algernon/M +Algieba/M +Algiers/M +alginate/SM +ALGOL +Algol/M +Algonquian/SM +Algonquin/SM +algorithmic +algorithmically +algorithm/MS +Alhambra/M +Alhena/M +Alia/M +alias/GSD +alibi/MDSG +Alica/M +Alicea/M +Alice/M +Alicia/M +Alick/M +Alic/M +Alida/M +Alidia/M +Alie/M +alienable/IU +alienate/SDNGX +alienation/M +alienist/MS +alien/RDGMBS +Alighieri/M +alight/DSG +aligned/U +aligner/SM +align/LASDG +alignment/SAM +Alika/M +Alikee/M +alikeness/M +alike/U +alimentary +aliment/SDMG +alimony/MS +Ali/MS +Alina/M +Aline/M +alinement's +Alioth/M +aliquot/S +Alisa/M +Alisander/M +Alisha/M +Alison/M +Alissa/M +Alistair/M +Alister/M +Alisun/M +aliveness/MS +alive/P +Alix/M +aliyah/M +aliyahs +Aliza/M +Alkaid/M +alkalies +alkali/M +alkaline +alkalinity/MS +alkalize/SDG +alkaloid/MS +alkyd/S +alkyl/M +Allahabad/M +Allah/M +Alla/M +Allan/M +Allard/M +allay/GDS +Allayne/M +Alleen/M +allegation/SM +alleged/Y +allege/SDG +Allegheny/MS +allegiance/SM +allegiant +allegoric +allegoricalness/M +allegorical/YP +allegorist/MS +allegory/SM +Allegra/M +allegretto/MS +allegri +allegro/MS +allele/SM +alleluia/S +allemande/M +Allendale/M +Allende/M +Allene/M +Allen/M +Allentown/M +allergenic +allergen/MS +allergic +allergically +allergist/MS +allergy/MS +alleviate/SDVGNX +alleviation/M +alleviator/MS +Alley/M +alley/MS +Alleyn/M +alleyway/MS +Allhallows +alliance/MS +Allianora/M +Allie/M +allier +allies/M +alligator/DMGS +Alli/MS +Allina/M +Allin/M +Allison/M +Allissa/M +Allister/M +Allistir/M +alliterate/XVNGSD +alliteration/M +alliterative/Y +Allix/M +allocable/U +allocatable +allocate/ACSDNGX +allocated/U +allocation/AMC +allocative +allocator/AMS +allophone/MS +allophonic +allotment/MS +allotments/A +allotrope/M +allotropic +allots/A +allot/SDL +allotted/A +allotter/M +allotting/A +allover/S +allowableness/M +allowable/P +allowably +allowance/GSDM +allowed/Y +allowing/E +allow/SBGD +allows/E +alloyed/U +alloy/SGMD +all/S +allspice/MS +Allstate/M +Allsun/M +allude/GSD +allure/GLSD +allurement/SM +alluring/Y +allusion/MS +allusiveness/MS +allusive/PY +alluvial/S +alluvions +alluvium/MS +Allx/M +ally/ASDG +Allyce/M +Ally/MS +Allyn/M +Allys +Allyson/M +alma +Almach/M +Almaden/M +almagest +Alma/M +almanac/MS +Almaty/M +Almeda/M +Almeria/M +Almeta/M +almightiness/M +Almighty/M +almighty/P +Almira/M +Almire/M +almond/SM +almoner/MS +almost +Al/MRY +alms/A +almshouse/SM +almsman/M +alnico +Alnilam/M +Alnitak/M +aloe/MS +aloft +aloha/SM +Aloin/M +Aloise/M +Aloisia/M +aloneness/M +alone/P +along +alongshore +alongside +Alon/M +Alonso/M +Alonzo/M +aloofness/MS +aloof/YP +aloud +Aloysia/M +Aloysius/M +alpaca/SM +Alpert/M +alphabetical/Y +alphabetic/S +alphabetization/SM +alphabetizer/M +alphabetize/SRDGZ +alphabet/SGDM +alpha/MS +alphanumerical/Y +alphanumeric/S +Alphard/M +Alphecca/M +Alpheratz/M +Alphonse/M +Alphonso/M +Alpine +alpine/S +alp/MS +Alps +already +Alric/M +alright +Alsace/M +Alsatian/MS +also +Alsop/M +Alston/M +Altaic/M +Altai/M +Altair/M +Alta/M +altar/MS +altarpiece/SM +alterable/UI +alteration/MS +altercate/NX +altercation/M +altered/U +alternate/SDVGNYX +alternation/M +alternativeness/M +alternative/YMSP +alternator/MS +alter/RDZBG +Althea/M +although +altimeter/SM +Altiplano/M +altitude/SM +altogether/S +Alton/M +alto/SM +Altos/M +altruism/SM +altruistic +altruistically +altruist/SM +alt/RZS +ALU +Aludra/M +Aluin/M +Aluino/M +alumina/SM +aluminum/MS +alumnae +alumna/M +alumni +alumnus/MS +alum/SM +alundum +Alva/M +Alvan/M +Alvarado/M +Alvarez/M +Alvaro/M +alveolar/Y +alveoli +alveolus/M +Alvera/M +Alverta/M +Alvie/M +Alvina/M +Alvinia/M +Alvin/M +Alvira/M +Alvis/M +Alvy/M +alway/S +Alwin/M +Alwyn/M +Alyce/M +Alyda/M +Alyosha/M +Alysa/M +Alyse/M +Alysia/M +Alys/M +Alyson/M +Alyss +Alyssa/M +Alzheimer/M +AM +AMA +Amabelle/M +Amabel/M +Amadeus/M +Amado/M +amain +Amalea/M +Amalee/M +Amaleta/M +amalgamate/VNGXSD +amalgamation/M +amalgam/MS +Amalia/M +Amalie/M +Amalita/M +Amalle/M +Amanda/M +Amandie/M +Amandi/M +Amandy/M +amanuenses +amanuensis/M +Amara/M +amaranth/M +amaranths +amaretto/S +Amargo/M +Amarillo/M +amaryllis/MS +am/AS +amasser/M +amass/GRSD +Amata/M +amateurishness/MS +amateurish/YP +amateurism/MS +amateur/SM +Amati/M +amatory +amazed/Y +amaze/LDSRGZ +amazement/MS +amazing/Y +amazonian +Amazonian +amazon/MS +Amazon/SM +ambassadorial +ambassador/MS +ambassadorship/MS +ambassadress/SM +ambergris/SM +Amberly/M +amber/MS +Amber/YM +ambiance/MS +ambidexterity/MS +ambidextrous/Y +ambience's +ambient/S +ambiguity/MS +ambiguously/U +ambiguousness/M +ambiguous/YP +ambition/GMDS +ambitiousness/MS +ambitious/PY +ambit/M +ambivalence/SM +ambivalent/Y +amble/GZDSR +Amble/M +ambler/M +ambrose +Ambrose/M +ambrosial/Y +ambrosia/SM +Ambrosi/M +Ambrosio/M +Ambrosius/M +Ambros/M +ambulance/MS +ambulant/S +ambulate/DSNGX +ambulation/M +ambulatory/S +Ambur/M +ambuscade/MGSRD +ambuscader/M +ambusher/M +ambush/MZRSDG +Amby/M +Amdahl/M +ameba's +Amelia/M +Amelie/M +Amelina/M +Ameline/M +ameliorate/XVGNSD +amelioration/M +Amelita/M +amenability/SM +amenably +amended/U +amender/M +amendment/SM +amen/DRGTSB +amend/SBRDGL +amends/M +Amenhotep/M +amenity/MS +amenorrhea/M +Amerada/M +Amerasian/S +amercement/MS +amerce/SDLG +Americana/M +Americanism/SM +Americanization/SM +americanized +Americanize/SDG +American/MS +America/SM +americium/MS +Amerigo/M +Amerindian/MS +Amerind/MS +Amer/M +Amery/M +Ameslan/M +Ame/SM +amethystine +amethyst/MS +Amharic/M +Amherst/M +amiability/MS +amiableness/M +amiable/RPT +amiably +amicability/SM +amicableness/M +amicable/P +amicably +amide/SM +amid/S +amidships +amidst +Amie/M +Amiga/M +amigo/MS +Amii/M +Amil/M +Ami/M +amines +aminobenzoic +amino/M +amir's +Amish +amiss +Amitie/M +Amity/M +amity/SM +Ammamaria/M +Amman/M +Ammerman/M +ammeter/MS +ammo/MS +ammoniac +ammonia/MS +ammonium/M +Am/MR +ammunition/MS +amnesiac/MS +amnesia/SM +amnesic/S +amnesty/GMSD +amniocenteses +amniocentesis/M +amnion/SM +amniotic +Amoco/M +amoeba/SM +amoebic +amoeboid +amok/MS +among +amongst +Amontillado/M +amontillado/MS +amorality/MS +amoral/Y +amorousness/SM +amorous/PY +amorphousness/MS +amorphous/PY +amortization/SUM +amortized/U +amortize/SDG +Amory/M +Amos +amount/SMRDZG +amour/MS +Amparo/M +amperage/SM +Ampere/M +ampere/MS +ampersand/MS +Ampex/M +amphetamine/MS +amphibian/SM +amphibiousness/M +amphibious/PY +amphibology/M +amphitheater/SM +amphorae +amphora/M +ampleness/M +ample/PTR +amplification/M +amplifier/M +amplify/DRSXGNZ +amplitude/MS +ampoule's +amp/SGMDY +ampule/SM +amputate/DSNGX +amputation/M +amputee/SM +Amritsar/M +ams +Amsterdam/M +amt +Amtrak/M +amuck's +amulet/SM +Amundsen/M +Amur/M +amused/Y +amuse/LDSRGVZ +amusement/SM +amuser/M +amusingness/M +amusing/YP +Amway/M +Amye/M +amylase/MS +amyl/M +Amy/M +Anabal/M +Anabaptist/SM +Anabella/M +Anabelle/M +Anabel/M +anabolic +anabolism/MS +anachronism/SM +anachronistic +anachronistically +Anacin/M +anaconda/MS +Anacreon/M +anaerobe/SM +anaerobic +anaerobically +anaglyph/M +anagrammatic +anagrammatically +anagrammed +anagramming +anagram/MS +Anaheim/M +Analects/M +analgesia/MS +analgesic/S +Analiese/M +Analise/M +Anallese/M +Anallise/M +analogical/Y +analogize/SDG +analogousness/MS +analogous/YP +analog/SM +analogue/SM +analogy/MS +anal/Y +analysand/MS +analysis/AM +analyst/SM +analytical/Y +analyticity/S +analytic/S +analytics/M +analyzable/U +analyze/DRSZGA +analyzed/U +analyzer/M +Ana/M +anamorphic +Ananias/M +anapaest's +anapestic/S +anapest/SM +anaphora/M +anaphoric +anaphorically +anaplasmosis/M +anarchic +anarchical/Y +anarchism/MS +anarchistic +anarchist/MS +anarchy/MS +Anastasia/M +Anastasie/M +Anastassia/M +anastigmatic +anastomoses +anastomosis/M +anastomotic +anathema/MS +anathematize/GSD +Anatola/M +Anatole/M +Anatolia/M +Anatolian +Anatollo/M +Anatol/M +anatomic +anatomical/YS +anatomist/MS +anatomize/GSD +anatomy/MS +Anaxagoras/M +Ancell/M +ancestor/SMDG +ancestral/Y +ancestress/SM +ancestry/SM +Anchorage/M +anchorage/SM +anchored/U +anchorite/MS +anchoritism/M +anchorman/M +anchormen +anchorpeople +anchorperson/S +anchor/SGDM +anchorwoman +anchorwomen +anchovy/MS +ancientness/MS +ancient/SRYTP +ancillary/S +an/CS +Andalusia/M +Andalusian +Andaman +andante/S +and/DZGS +Andean/M +Andeee/M +Andee/M +Anderea/M +Andersen/M +Anders/N +Anderson/M +Andes +Andie/M +Andi/M +andiron/MS +Andonis/M +Andorra/M +Andover/M +Andra/SM +Andrea/MS +Andreana/M +Andree/M +Andrei/M +Andrej/M +Andre/SM +Andrew/MS +Andrey/M +Andria/M +Andriana/M +Andriette/M +Andris +androgenic +androgen/SM +androgynous +androgyny/SM +android/MS +Andromache/M +Andromeda/M +Andropov/M +Andros/M +Andrus/M +Andy/M +anecdotal/Y +anecdote/SM +anechoic +anemia/SM +anemically +anemic/S +anemometer/MS +anemometry/M +anemone/SM +anent +aneroid +Anestassia/M +anesthesia/MS +anesthesiologist/MS +anesthesiology/SM +anesthetically +anesthetic/SM +anesthetist/MS +anesthetization/SM +anesthetizer/M +anesthetize/ZSRDG +Anet/M +Anetta/M +Anette/M +Anett/M +aneurysm/MS +anew +Angara/M +Angela/M +Angeleno/SM +Angele/SM +angelfish/SM +Angelia/M +angelic +angelical/Y +Angelica/M +angelica/MS +Angelico/M +Angelika/M +Angeli/M +Angelina/M +Angeline/M +Angelique/M +Angelita/M +Angelle/M +Angel/M +angel/MDSG +Angelo/M +Angelou/M +Ange/M +anger/GDMS +Angevin/M +Angie/M +Angil/M +angina/MS +angiography +angioplasty/S +angiosperm/MS +Angkor/M +angle/GMZDSRJ +angler/M +Angles +angleworm/MS +Anglia/M +Anglicanism/MS +Anglican/MS +Anglicism/SM +Anglicization/MS +anglicize/SDG +Anglicize/SDG +angling/M +Anglo/MS +Anglophile/SM +Anglophilia/M +Anglophobe/MS +Anglophobia/M +Angola/M +Angolan/S +angora/MS +Angora/MS +angrily +angriness/M +angry/RTP +angst/MS +Ångström/M +angstrom/MS +Anguilla/M +anguish/DSMG +angularity/MS +angular/Y +Angus/M +Angy/M +Anheuser/M +anhydride/M +anhydrite/M +anhydrous/Y +Aniakchak/M +Ania/M +Anibal/M +Anica/M +aniline/SM +animadversion/SM +animadvert/DSG +animalcule/MS +animal/MYPS +animated/A +animatedly +animately/I +animateness/MI +animates/A +animate/YNGXDSP +animating/A +animation/AMS +animator/SM +animism/SM +animistic +animist/S +animized +animosity/MS +animus/SM +anionic/S +anion/MS +aniseed/MS +aniseikonic +anise/MS +anisette/SM +anisotropic +anisotropy/MS +Anissa/M +Anita/M +Anitra/M +Anjanette/M +Anjela/M +Ankara/M +ankh/M +ankhs +anklebone/SM +ankle/GMDS +anklet/MS +Annabal/M +Annabela/M +Annabella/M +Annabelle/M +Annabell/M +Annabel/M +Annadiana/M +Annadiane/M +Annalee/M +Annaliese/M +Annalise/M +annalist/MS +annal/MNS +Anna/M +Annamaria/M +Annamarie/M +Annapolis/M +Annapurna/M +anneal/DRSZG +annealer/M +Annecorinne/M +annelid/MS +Anneliese/M +Annelise/M +Anne/M +Annemarie/M +Annetta/M +Annette/M +annexation/SM +annexe/M +annex/GSD +Annice/M +Annie/M +annihilate/XSDVGN +annihilation/M +annihilator/MS +Anni/MS +Annissa/M +anniversary/MS +Ann/M +Annmaria/M +Annmarie/M +Annnora/M +Annora/M +annotated/U +annotate/VNGXSD +annotation/M +annotator/MS +announced/U +announcement/SM +announcer/M +announce/ZGLRSD +annoyance/MS +annoyer/M +annoying/Y +annoy/ZGSRD +annualized +annual/YS +annuitant/MS +annuity/MS +annular/YS +annuli +annulled +annulling +annulment/MS +annul/SL +annulus/M +annum +annunciate/XNGSD +annunciation/M +Annunciation/S +annunciator/SM +Anny/M +anode/SM +anodic +anodize/GDS +anodyne/SM +anoint/DRLGS +anointer/M +anointment/SM +anomalousness/M +anomalous/YP +anomaly/MS +anomic +anomie/M +anon/S +anonymity/MS +anonymousness/M +anonymous/YP +anopheles/M +anorak/SM +anorectic/S +anorexia/SM +anorexic/S +another/M +Anouilh/M +Ansell/M +Ansel/M +Anselma/M +Anselm/M +Anselmo/M +Anshan/M +ANSI/M +Ansley/M +ans/M +Anson/M +Anstice/M +answerable/U +answered/U +answerer/M +answer/MZGBSDR +antacid/MS +Antaeus/M +antagonism/MS +antagonistic +antagonistically +antagonist/MS +antagonized/U +antagonize/GZRSD +antagonizing/U +Antananarivo/M +antarctic +Antarctica/M +Antarctic/M +Antares +anteater/MS +antebellum +antecedence/MS +antecedent/SMY +antechamber/SM +antedate/GDS +antediluvian/S +anteing +antelope/MS +ante/MS +antenatal +antennae +antenna/MS +anterior/SY +anteroom/SM +ant/GSMD +Anthea/M +Anthe/M +anthem/MGDS +anther/MS +Anthia/M +Anthiathia/M +anthill/S +anthologist/MS +anthologize/GDS +anthology/SM +Anthony/M +anthraces +anthracite/MS +anthrax/M +anthropic +anthropocentric +anthropogenic +anthropoid/S +anthropological/Y +anthropologist/MS +anthropology/SM +anthropometric/S +anthropometry/M +anthropomorphic +anthropomorphically +anthropomorphism/SM +anthropomorphizing +anthropomorphous +antiabortion +antiabortionist/S +antiaircraft +antibacterial/S +antibiotic/SM +antibody/MS +anticancer +Antichrist/MS +anticipated/U +anticipate/XVGNSD +anticipation/M +anticipative/Y +anticipatory +anticked +anticking +anticlerical/S +anticlimactic +anticlimactically +anticlimax/SM +anticline/SM +anticlockwise +antic/MS +anticoagulant/S +anticoagulation/M +anticommunism/SM +anticommunist/SM +anticompetitive +anticyclone/MS +anticyclonic +antidemocratic +antidepressant/SM +antidisestablishmentarianism/M +antidote/DSMG +Antietam/M +antifascist/SM +antiformant +antifreeze/SM +antifundamentalist/M +antigenic +antigenicity/SM +antigen/MS +antigone +Antigone/M +Antigua/M +antiheroes +antihero/M +antihistamine/MS +antihistorical +antiknock/MS +antilabor +Antillean +Antilles +antilogarithm/SM +antilogs +antimacassar/SM +antimalarial/S +antimatter/SM +antimicrobial/S +antimissile/S +antimony/SM +anting/M +Antin/M +antinomian +antinomy/M +antinuclear +Antioch/M +antioxidant/MS +antiparticle/SM +Antipas/M +antipasti +antipasto/MS +antipathetic +antipathy/SM +antipersonnel +antiperspirant/MS +antiphonal/SY +antiphon/SM +antipodal/S +antipodean/S +antipode/MS +Antipodes +antipollution/S +antipoverty +antiquarianism/MS +antiquarian/MS +antiquary/SM +antiquate/NGSD +antiquation/M +antique/MGDS +antiquity/SM +antiredeposition +antiresonance/M +antiresonator +anti/S +antisemitic +antisemitism/M +antisepses +antisepsis/M +antiseptically +antiseptic/S +antiserum/SM +antislavery/S +antisocial/Y +antispasmodic/S +antisubmarine +antisymmetric +antisymmetry +antitank +antitheses +antithesis/M +antithetic +antithetical/Y +antithyroid +antitoxin/MS +antitrust/MR +antivenin/MS +antiviral/S +antivivisectionist/S +antiwar +antler/SDM +Antofagasta/M +Antoine/M +Antoinette/M +Antonella/M +Antone/M +Antonetta/M +Antonia/M +Antonie/M +Antonietta/M +Antoni/M +Antonina/M +Antonin/M +Antonino/M +Antoninus/M +Antonio/M +Antonius/M +Anton/MS +Antonovics/M +Antony/M +antonymous +antonym/SM +antral +antsy/RT +Antwan/M +Antwerp/M +Anubis/M +anus/SM +anvil/MDSG +anxiety/MS +anxiousness/SM +anxious/PY +any +Anya/M +anybody/S +anyhow +Any/M +anymore +anyone/MS +anyplace +anything/S +anytime +anyway/S +anywhere/S +anywise +AOL/M +aorta/MS +aortic +AP +apace +apache/MS +Apache/MS +Apalachicola/M +apartheid/SM +apart/LP +apartment/MS +apartness/M +apathetic +apathetically +apathy/SM +apatite/MS +APB +aped/A +apelike +ape/MDRSG +Apennines +aper/A +aperiodic +aperiodically +aperiodicity/M +aperitif/S +aperture/MDS +apex/MS +aphasia/SM +aphasic/S +aphelia +aphelion/SM +aphid/MS +aphonic +aphorism/MS +aphoristic +aphoristically +aphrodisiac/SM +Aphrodite/M +Apia/M +apiarist/SM +apiary/SM +apical/YS +apices's +apiece +apishness/M +apish/YP +aplenty +aplomb/SM +APO +Apocalypse/M +apocalypse/MS +apocalyptic +apocryphalness/M +apocryphal/YP +apocrypha/M +Apocrypha/M +apogee/MS +apolar +apolitical/Y +Apollinaire/M +Apollonian +Apollo/SM +apologetically/U +apologetic/S +apologetics/M +apologia/SM +apologist/MS +apologize/GZSRD +apologizer/M +apologizes/A +apologizing/U +apology/MS +apoplectic +apoplexy/SM +apostasy/SM +apostate/SM +apostatize/DSG +apostleship/SM +apostle/SM +apostolic +apostrophe/SM +apostrophized +apothecary/MS +apothegm/MS +apotheoses +apotheosis/M +apotheosized +apotheosizes +apotheosizing +Appalachia/M +Appalachian/MS +appalling/Y +appall/SDG +Appaloosa/MS +appaloosa/S +appanage/M +apparatus/SM +apparel/SGMD +apparency +apparently/I +apparentness/M +apparent/U +apparition/SM +appealer/M +appealing/UY +appeal/SGMDRZ +appear/AEGDS +appearance/AMES +appearer/S +appease/DSRGZL +appeased/U +appeasement/MS +appeaser/M +appellant/MS +appellate/VNX +appellation/M +appellative/MY +appendage/MS +appendectomy/SM +appendices +appendicitis/SM +appendix/SM +append/SGZDR +appertain/DSG +appetite/MVS +appetizer/SM +appetizing/YU +Appia/M +Appian/M +applauder/M +applaud/ZGSDR +applause/MS +applecart/M +applejack/MS +Apple/M +apple/MS +applesauce/SM +Appleseed/M +Appleton/M +applet/S +appliance/SM +applicabilities +applicability/IM +applicable/I +applicably +applicant/MS +applicate/V +application/MA +applicative/Y +applicator/MS +applier/SM +appliquéd +appliqué/MSG +apply/AGSDXN +appointee/SM +appoint/ELSADG +appointer/MS +appointive +appointment/ASEM +Appolonia/M +Appomattox/M +apportion/GADLS +apportionment/SAM +appose/SDG +appositeness/MS +apposite/XYNVP +apposition/M +appositive/SY +appraisal/SAM +appraised/A +appraisees +appraiser/M +appraises/A +appraise/ZGDRS +appraising/Y +appreciable/I +appreciably/I +appreciated/U +appreciate/XDSNGV +appreciation/M +appreciativeness/MI +appreciative/PIY +appreciator/MS +appreciatory +apprehend/DRSG +apprehender/M +apprehensible +apprehension/SM +apprehensiveness/SM +apprehensive/YP +apprentice/DSGM +apprenticeship/SM +apprise/DSG +apprizer/SM +apprizingly +apprizings +approachability/UM +approachable/UI +approach/BRSDZG +approacher/M +approbate/NX +approbation/EMS +appropriable +appropriated/U +appropriately/I +appropriateness/SMI +appropriate/XDSGNVYTP +appropriation/M +appropriator/SM +approval/ESM +approve/DSREG +approved/U +approver's/E +approver/SM +approving/YE +approx +approximate/XGNVYDS +approximation/M +approximative/Y +appurtenance/MS +appurtenant/S +APR +apricot/MS +Aprilette/M +April/MS +Apr/M +apron/SDMG +apropos +apse/MS +apsis/M +apter +aptest +aptitude/SM +aptness/SMI +aptness's/U +apt/UPYI +Apuleius/M +aquaculture/MS +aqualung/SM +aquamarine/SM +aquanaut/SM +aquaplane/GSDM +aquarium/MS +Aquarius/MS +aqua/SM +aquatically +aquatic/S +aquavit/SM +aqueduct/MS +aqueous/Y +aquiculture's +aquifer/SM +Aquila/M +aquiline +Aquinas/M +Aquino/M +Aquitaine/M +AR +Arabela/M +Arabele/M +Arabella/M +Arabelle/M +Arabel/M +arabesque/SM +Arabia/M +Arabian/MS +Arabic/M +arability/MS +Arabist/MS +arable/S +Arab/MS +Araby/M +Araceli/M +arachnid/MS +arachnoid/M +arachnophobia +Arafat/M +Araguaya/M +Araldo/M +Aral/M +Ara/M +Aramaic/M +Aramco/M +Arapahoes +Arapahoe's +Arapaho/MS +Ararat/M +Araucanian/M +Arawakan/M +Arawak/M +arbiter/MS +arbitrage/GMZRSD +arbitrager/M +arbitrageur/S +arbitrament/MS +arbitrarily +arbitrariness/MS +arbitrary/P +arbitrate/SDXVNG +arbitration/M +arbitrator/SM +arbor/DMS +arboreal/Y +arbores +arboretum/MS +arborvitae/MS +arbutus/SM +ARC +arcade/SDMG +Arcadia/M +Arcadian +arcana/M +arcane/P +arc/DSGM +archaeological/Y +archaeologist/SM +archaically +archaic/P +Archaimbaud/M +archaism/SM +archaist/MS +archaize/GDRSZ +archaizer/M +Archambault/M +archangel/SM +archbishopric/SM +archbishop/SM +archdeacon/MS +archdiocesan +archdiocese/SM +archduchess/MS +archduke/MS +Archean +archenemy/SM +archeologist's +archeology/MS +archer/M +Archer/M +archery/MS +archetypal +archetype/SM +archfiend/SM +archfool +Archibald/M +Archibaldo/M +Archibold/M +Archie/M +archiepiscopal +Archimedes/M +arching/M +archipelago/SM +architect/MS +architectonic/S +architectonics/M +architectural/Y +architecture/SM +architrave/MS +archival +archive/DRSGMZ +archived/U +archivist/MS +Arch/MR +archness/MS +arch/PGVZTMYDSR +archway/SM +Archy/M +arclike +ARCO/M +arcsine +arctangent +Arctic/M +arctic/S +Arcturus/M +Ardabil +Arda/MH +Ardath/M +Ardeen/M +Ardelia/M +Ardelis/M +Ardella/M +Ardelle/M +ardency/M +Ardene/M +Ardenia/M +Arden/M +ardent/Y +Ardine/M +Ardisj/M +Ardis/M +Ardith/M +ardor/SM +Ardra/M +arduousness/SM +arduous/YP +Ardyce/M +Ardys +Ardyth/M +areal +area/SM +areawide +are/BS +Arel/M +arenaceous +arena/SM +aren't +Arequipa/M +Ares +Aretha/M +Argentina/M +Argentinean/S +Argentine/SM +Argentinian/S +argent/MS +Argonaut/MS +argonaut/S +argon/MS +Argonne/M +Argo/SM +argosy/SM +argot/SM +arguable/IU +arguably/IU +argue/DSRGZ +arguer/M +argumentation/SM +argumentativeness/MS +argumentative/YP +argument/SM +Argus/M +argyle/S +Ariadne/M +Ariana/M +Arianism/M +Arianist/SM +aria/SM +Aridatha/M +aridity/SM +aridness/M +arid/TYRP +Ariela/M +Ariella/M +Arielle/M +Ariel/M +Arie/SM +Aries/S +aright +Ari/M +Arin/M +Ario/M +Ariosto/M +arise/GJSR +arisen +Aristarchus/M +Aristides +aristocracy/SM +aristocratic +aristocratically +aristocrat/MS +Aristophanes/M +Aristotelean +Aristotelian/M +Aristotle/M +arithmetical/Y +arithmetician/SM +arithmetic/MS +arithmetize/SD +Arius/M +Ariz/M +Arizona/M +Arizonan/S +Arizonian/S +Arjuna/M +Arkansan/MS +Arkansas/M +Arkhangelsk/M +Ark/M +ark/MS +Arkwright/M +Arlana/M +Arlan/M +Arlee/M +Arleen/M +Arlena/M +Arlene/M +Arlen/M +Arleta/M +Arlette/M +Arley/M +Arleyne/M +Arlie/M +Arliene/M +Arlina/M +Arlinda/M +Arline/M +Arlington/M +Arlin/M +Arluene/M +Arly/M +Arlyne/M +Arlyn/M +Armada/M +armada/SM +armadillo/MS +Armageddon/SM +Armagnac/M +armament/EAS +armament's/E +Armand/M +Armando/M +Arman/M +arm/ASEDG +Armata/M +armature/MGSD +armband/SM +armchair/MS +Armco/M +armed/U +Armenia/M +Armenian/MS +armer/MES +armful/SM +armhole/MS +arming/M +Arminius/M +Armin/M +armistice/MS +armless +armlet/SM +armload/M +Armonk/M +armored/U +armorer/M +armorial/S +armory/DSM +armor/ZRDMGS +Armour/M +armpit/MS +armrest/MS +arm's +Armstrong/M +Ar/MY +army/SM +Arnaldo/M +Arneb/M +Arne/M +Arney/M +Arnhem/M +Arnie/M +Arni/M +Arnold/M +Arnoldo/M +Arno/M +Arnuad/M +Arnulfo/M +Arny/M +aroma/SM +aromatherapist/S +aromatherapy/S +aromatically +aromaticity/M +aromaticness/M +aromatic/SP +Aron/M +arose +around +arousal/MS +aroused/U +arouse/GSD +ARPA/M +Arpanet/M +ARPANET/M +arpeggio/SM +arrack/M +Arragon/M +arraignment/MS +arraign/SDGL +arrangeable/A +arranged/EA +arrangement/AMSE +arranger/M +arranges/EA +arrange/ZDSRLG +arranging/EA +arrant/Y +arras/SM +arrayer +array/ESGMD +arrear/SM +arrest/ADSG +arrestee/MS +arrester/MS +arresting/Y +arrestor/MS +Arrhenius/M +arrhythmia/SM +arrhythmic +arrhythmical +Arri/M +arrival/MS +arriver/M +arrive/SRDG +arrogance/MS +arrogant/Y +arrogate/XNGDS +arrogation/M +Arron/M +arrowhead/SM +arrowroot/MS +arrow/SDMG +arroyo/MS +arr/TV +arsenal/MS +arsenate/M +arsenic/MS +arsenide/M +arsine/MS +arsonist/MS +arson/SM +Artair/M +Artaxerxes/M +artefact's +Arte/M +Artemas +Artemis/M +Artemus/M +arterial/SY +arteriolar +arteriole/SM +arterioscleroses +arteriosclerosis/M +artery/SM +artesian +artfulness/SM +artful/YP +Arther/M +arthritic/S +arthritides +arthritis/M +arthrogram/MS +arthropod/SM +arthroscope/S +arthroscopic +Arthurian +Arthur/M +artichoke/SM +article/GMDS +articulable/I +articular +articulated/EU +articulately/I +articulateness/IMS +articulates/I +articulate/VGNYXPSD +articulation/M +articulator/SM +articulatory +Artie/M +artifact/MS +artificer/M +artifice/ZRSM +artificiality/MS +artificialness/M +artificial/PY +artillerist +artilleryman/M +artillerymen +artillery/SM +artiness/MS +artisan/SM +artiste/SM +artistically/I +artistic/I +artist/MS +artistry/SM +artlessness/MS +artless/YP +Art/M +art/SM +artsy/RT +Artur/M +Arturo/M +Artus/M +artwork/MS +Arty/M +arty/TPR +Aruba/M +arum/MS +Arvie/M +Arvin/M +Arv/M +Arvy/M +Aryan/MS +Aryn/M +as +As +A's +Asa/M +Asama/M +asap +ASAP +asbestos/MS +Ascella/M +ascend/ADGS +ascendancy/MS +ascendant/SY +ascender/SM +Ascension/M +ascension/SM +ascent/SM +ascertain/DSBLG +ascertainment/MS +ascetically +asceticism/MS +ascetic/SM +ASCII +ascot/MS +ascribe/GSDB +ascription/MS +ascriptive +Ase/M +aseptically +aseptic/S +asexuality/MS +asexual/Y +Asgard/M +ashame/D +ashamed/UY +Ashanti/M +Ashbey/M +Ashby/M +ashcan/SM +Ashely/M +Asher/M +Asheville/M +Ashia/M +Ashien/M +Ashil/M +Ashkenazim +Ashkhabad/M +Ashla/M +Ashland/M +Ashlan/M +ashlar/GSDM +Ashlee/M +Ashleigh/M +Ashlen/M +Ashley/M +Ashlie/M +Ashli/M +Ashlin/M +Ashly/M +ashman/M +ash/MNDRSG +Ashmolean/M +Ash/MRY +ashore +ashram/SM +Ashton/M +ashtray/MS +Ashurbanipal/M +ashy/RT +Asia/M +Asian/MS +Asiatic/SM +aside/S +Asilomar/M +Asimov +asinine/Y +asininity/MS +askance +ask/DRZGS +asked/U +asker/M +askew/P +ASL +aslant +asleep +Asmara/M +asocial/S +Asoka/M +asparagus/MS +aspartame/S +ASPCA +aspect/SM +Aspell/M +aspen/M +Aspen/M +asperity/SM +asper/M +aspersion/SM +asphalt/MDRSG +asphodel/MS +asphyxia/MS +asphyxiate/GNXSD +asphyxiation/M +aspic/MS +Aspidiske/M +aspidistra/MS +aspirant/MS +aspirate/NGDSX +aspirational +aspiration/M +aspirator/SM +aspire/GSRD +aspirer/M +aspirin/SM +asplenium +asp/MNRXS +Asquith/M +Assad/M +assailable/U +assailant/SM +assail/BGDS +Assamese/M +Assam/M +assassinate/DSGNX +assassination/M +assassin/MS +assaulter/M +assaultive/YP +assault/SGVMDR +assayer/M +assay/SZGRD +assemblage/MS +assemble/ADSREG +assembled/U +assembler/EMS +assemblies/A +assembly/EAM +assemblyman/M +assemblymen +Assembly/MS +assemblywoman +assemblywomen +assent/SGMRD +assert/ADGS +asserter/MS +assertional +assertion/AMS +assertiveness/SM +assertive/PY +assess/BLSDG +assessed/A +assesses/A +assessment/SAM +assessor/MS +asset/SM +asseverate/XSDNG +asseveration/M +asshole/MS +assiduity/SM +assiduousness/SM +assiduous/PY +assign/ALBSGD +assignation/MS +assigned/U +assignee/MS +assigner/MS +assignment/MAS +assignor/MS +assigns/CU +assimilate/VNGXSD +assimilationist/M +assimilation/M +Assisi/M +assistance/SM +assistantship/SM +assistant/SM +assisted/U +assister/M +assist/RDGS +assize/MGSD +ass/MNS +assn +assoc +associable +associated/U +associate/SDEXNG +associateship +associational +association/ME +associative/Y +associativity/S +associator/MS +assonance/SM +assonant/S +assorter/M +assort/LRDSG +assortment/SM +asst +assuaged/U +assuage/SDG +assumability +assumer/M +assume/SRDBJG +assuming/UA +assumption/SM +assumptive +assurance/AMS +assure/AGSD +assuredness/M +assured/PYS +assurer/SM +assuring/YA +Assyria/M +Assyrian/SM +Assyriology/M +Astaire/SM +Astarte/M +astatine/MS +aster/ESM +asteria +asterisked/U +asterisk/SGMD +astern +asteroidal +asteroid/SM +asthma/MS +asthmatic/S +astigmatic/S +astigmatism/SM +astir +astonish/GSDL +astonishing/Y +astonishment/SM +Aston/M +Astoria/M +Astor/M +astounding/Y +astound/SDG +astraddle +Astrakhan/M +astrakhan/SM +astral/SY +Astra/M +astray +astride +Astrid/M +astringency/SM +astringent/YS +Astrix/M +astrolabe/MS +astrologer/MS +astrological/Y +astrologist/M +astrology/SM +astronautical +astronautic/S +astronautics/M +astronaut/SM +astronomer/MS +astronomic +astronomical/Y +astronomy/SM +astrophysical +astrophysicist/SM +astrophysics/M +Astroturf/M +AstroTurf/S +Asturias/M +astuteness/MS +astute/RTYP +Asunción/M +asunder +Aswan/M +asylum/MS +asymmetric +asymmetrical/Y +asymmetry/MS +asymptomatic +asymptomatically +asymptote/MS +asymptotically +asymptotic/Y +asynchronism/M +asynchronous/Y +asynchrony +at +Atacama/M +Atahualpa/M +Atalanta/M +Atari/M +Atatürk/M +atavism/MS +atavistic +atavist/MS +ataxia/MS +ataxic/S +atelier/SM +atemporal +ate/S +Athabasca/M +Athabascan's +Athabaskan/MS +Athabaska's +atheism/SM +atheistic +atheist/SM +Athena/M +Athene/M +Athenian/SM +Athens/M +atheroscleroses +atherosclerosis/M +athirst +athlete/MS +athletically +athleticism/M +athletic/S +athletics/M +athwart +atilt +Atkins/M +Atkinson/M +Atlanta/M +Atlante/MS +atlantes +Atlantic/M +Atlantis/M +atlas/SM +Atlas/SM +At/M +Atman +ATM/M +atmosphere/DSM +atmospherically +atmospheric/S +atoll/MS +atomically +atomicity/M +atomic/S +atomics/M +atomistic +atomization/SM +atomize/GZDRS +atomizer/M +atom/SM +atonality/MS +atonal/Y +atone/LDSG +atonement/SM +atop +ATP +Atreus/M +atria +atrial +Atria/M +atrium/M +atrociousness/SM +atrocious/YP +atrocity/SM +atrophic +atrophy/DSGM +atropine/SM +Atropos/M +Ats +attach/BLGZMDRS +attached/UA +attacher/M +attaché/S +attachment/ASM +attacker/M +attack/GBZSDR +attainabilities +attainability/UM +attainableness/M +attainable/U +attainably/U +attain/AGSD +attainder/MS +attained/U +attainer/MS +attainment/MS +attar/MS +attempt/ADSG +attempter/MS +attendance/MS +attendant/SM +attended/U +attendee/SM +attender/M +attend/SGZDR +attentional +attentionality +attention/IMS +attentiveness/IMS +attentive/YIP +attenuated/U +attenuate/SDXGN +attenuation/M +attenuator/MS +attestation/SM +attested/U +attester/M +attest/GSDR +Attic +Attica/M +attic/MS +Attila/M +attire/SDG +attitude/MS +attitudinal/Y +attitudinize/SDG +Attlee/M +attn +Attn +attorney/SM +attractant/SM +attract/BSDGV +attraction/MS +attractivenesses +attractiveness/UM +attractive/UYP +attractor/MS +attributable/U +attribute/BVNGRSDX +attributed/U +attributer/M +attributional +attribution/M +attributive/SY +attrition/MS +Attucks +attune/SDG +atty +ATV/S +atwitter +Atwood/M +atypical/Y +Aube/M +Auberge/M +aubergine/MS +Auberon/M +Auberta/M +Aubert/M +Aubine/M +Aubree/M +Aubrette/M +Aubrey/M +Aubrie/M +Aubry/M +auburn/SM +Auckland/M +auctioneer/SDMG +auction/MDSG +audaciousness/SM +audacious/PY +audacity/MS +Auden/M +audibility/MSI +audible/I +audibles +audibly/I +Audie/M +audience/MS +Audi/M +audiogram/SM +audiological +audiologist/MS +audiology/SM +audiometer/MS +audiometric +audiometry/M +audiophile/SM +audio/SM +audiotape/S +audiovisual/S +audited/U +audition/MDSG +auditorium/MS +auditor/MS +auditory/S +audit/SMDVG +Audra/M +Audre/M +Audrey/M +Audrie/M +Audrye/M +Audry/M +Audubon/M +Audy/M +Auerbach/M +Augean +auger/SM +aught/S +Augie/M +Aug/M +augmentation/SM +augmentative/S +augment/DRZGS +augmenter/M +augur/GDMS +augury/SM +Augusta/M +Augustan/S +Auguste/M +Augustina/M +Augustine/M +Augustinian/S +Augustin/M +augustness/SM +Augusto/M +August/SM +august/STPYR +Augustus/M +Augy/M +auk/MS +Au/M +Aundrea/M +auntie/MS +aunt/MYS +aunty's +aural/Y +Aura/M +aura/SM +Aurea/M +Aurelea/M +Aurelia/M +Aurelie/M +Aurelio/M +Aurelius/M +Aurel/M +aureole/GMSD +aureomycin +Aureomycin/M +Auria/M +auric +auricle/SM +auricular +Aurie/M +Auriga/M +Aurilia/M +Aurlie/M +Auroora/M +auroral +Aurora/M +aurora/SM +Aurore/M +Aurthur/M +Auschwitz/M +auscultate/XDSNG +auscultation/M +auspice/SM +auspicious/IPY +auspiciousnesses +auspiciousness/IM +Aussie/MS +Austen/M +austereness/M +austere/TYRP +austerity/SM +Austina/M +Austine/M +Austin/SM +austral +Australasia/M +Australasian/S +australes +Australia/M +Australian/MS +Australis/M +australites +Australoid +Australopithecus/M +Austria/M +Austrian/SM +Austronesian +authentically +authenticated/U +authenticate/GNDSX +authentication/M +authenticator/MS +authenticity/MS +authentic/UI +author/DMGS +authoress/S +authorial +authoritarianism/MS +authoritarian/S +authoritativeness/SM +authoritative/PY +authority/SM +authorization/MAS +authorize/AGDS +authorized/U +authorizer/SM +authorizes/U +authorship/MS +autism/MS +autistic/S +autobahn/MS +autobiographer/MS +autobiographic +autobiographical/Y +autobiography/MS +autoclave/SDGM +autocollimator/M +autocorrelate/GNSDX +autocorrelation/M +autocracy/SM +autocratic +autocratically +autocrat/SM +autodial/R +autodidact/MS +autofluorescence +autograph/MDG +autographs +autoignition/M +autoimmune +autoimmunity/S +autoloader +automaker/S +automata's +automate/NGDSX +automatically +automatic/S +automation/M +automatism/SM +automatize/DSG +automaton/SM +automobile/GDSM +automorphism/SM +automotive +autonavigator/SM +autonomic/S +autonomous/Y +autonomy/MS +autopilot/SM +autopsy/MDSG +autoregressive +autorepeat/GS +auto/SDMG +autostart +autosuggestibility/M +autotransformer/M +autoworker/S +autumnal/Y +Autumn/M +autumn/MS +aux +auxiliary/S +auxin/MS +AV +availability/USM +availableness/M +available/U +availably +avail/BSZGRD +availing/U +avalanche/MGSD +Avalon/M +Ava/M +avant +avarice/SM +avariciousness/M +avaricious/PY +avast/S +avatar/MS +avaunt/S +avdp +Aveline/M +Ave/MS +avenged/U +avenger/M +avenge/ZGSRD +Aventine/M +Aventino/M +avenue/MS +average/DSPGYM +Averell/M +Averill/M +Averil/M +Avernus/M +averred +averrer +averring +Averroes/M +averseness/M +averse/YNXP +aversion/M +avers/V +avert/GSD +Averyl/M +Avery/M +ave/S +aves/C +Avesta/M +avg +avian/S +aviary/SM +aviate/NX +aviation/M +aviator/SM +aviatrices +aviatrix/SM +Avicenna/M +Avictor/M +avidity/MS +avid/TPYR +Avie/M +Avigdor/M +Avignon/M +Avila/M +avionic/S +avionics/M +Avior/M +Avis +avitaminoses +avitaminosis/M +Avivah/M +Aviva/M +Aviv/M +avocado/MS +avocational +avocation/SM +Avogadro/M +avoidable/U +avoidably/U +avoidance/SM +avoider/M +avoid/ZRDBGS +avoirdupois/MS +Avon/M +avouch/GDS +avowal/EMS +avowed/Y +avower/M +avow/GEDS +Avram/M +Avril/M +Avrit/M +Avrom/M +avuncular +av/ZR +AWACS +await/SDG +awake/GS +awakened/U +awakener/M +awakening/S +awaken/SADG +awarder/M +award/RDSZG +awareness/MSU +aware/TRP +awash +away/PS +aweigh +awe/SM +awesomeness/SM +awesome/PY +awestruck +awfuller +awfullest +awfulness/SM +awful/YP +aw/GD +awhile/S +awkwardness/MS +awkward/PRYT +awl/MS +awning/DM +awn/MDJGS +awoke +awoken +AWOL +awry/RT +ax/DRSZGM +axehead/S +Axel/M +Axe/M +axeman +axial/Y +axillary +axiological/Y +axiology/M +axiomatically +axiomatic/S +axiomatization/MS +axiomatize/GDS +axiom/SM +axion/SM +axis/SM +axle/MS +axletree/MS +Ax/M +axolotl/SM +axon/SM +ayah/M +ayahs +Ayala/M +ayatollah +ayatollahs +aye/MZRS +Ayers +Aylmar/M +Aylmer/M +Aymara/M +Aymer/M +Ayn/M +AZ +azalea/SM +Azania/M +Azazel/M +Azerbaijan/M +azimuthal/Y +azimuth/M +azimuths +Azores +Azov/M +AZT +Aztecan +Aztec/MS +azure/MS +BA +Baal/SM +baa/SDG +Babara/M +Babar's +Babbage/M +Babbette/M +Babbie/M +babbitt/GDS +Babbitt/M +babbler/M +babble/RSDGZ +Babb/M +Babcock/M +Babel/MS +babel/S +babe/SM +Babette/M +Babita/M +Babka/M +baboon/MS +Bab/SM +babushka/MS +babyhood/MS +babyish +Babylonia/M +Babylonian/SM +Babylon/MS +babysat +babysit/S +babysitter/S +babysitting +baby/TDSRMG +Bacall/M +Bacardi/M +baccalaureate/MS +baccarat/SM +bacchanalia +Bacchanalia/M +bacchanalian/S +bacchanal/SM +Bacchic +Bacchus/M +bachelorhood/SM +bachelor/SM +Bach/M +bacillary +bacilli +bacillus/MS +backache/SM +backarrow +backbencher/M +backbench/ZR +backbiter/M +backbite/S +backbitten +backbit/ZGJR +backboard/SM +backbone/SM +backbreaking +backchaining +backcloth/M +backdate/GDS +backdrop/MS +backdropped +backdropping +backed/U +backer/M +backfield/SM +backfill/SDG +backfire/GDS +backgammon/MS +background/SDRMZG +back/GZDRMSJ +backhanded/Y +backhander/M +backhand/RDMSZG +backhoe/S +backing/M +backlash/GRSDM +backless +backlogged +backlogging +backlog/MS +backorder +backpacker/M +backpack/ZGSMRD +backpedal/DGS +backplane/MS +backplate/SM +backrest/MS +backscatter/SMDG +backseat/S +backside/SM +backslapper/MS +backslapping/M +backslash/DSG +backslider/M +backslide/S +backslid/RZG +backspace/GSD +backspin/SM +backstabber/M +backstabbing +backstage +backstair/S +backstitch/GDSM +backstop/MS +backstopped +backstopping +backstreet/M +backstretch/SM +backstroke/GMDS +backtalk/S +backtrack/SDRGZ +backup/SM +Backus/M +backwardness/MS +backward/YSP +backwash/SDMG +backwater/SM +backwood/S +backwoodsman/M +backwoodsmen +backyard/MS +baconer/M +Bacon/M +bacon/SRM +bacterial/Y +bacteria/MS +bactericidal +bactericide/SM +bacteriologic +bacteriological +bacteriologist/MS +bacteriology/SM +bacterium/M +Bactria/M +badder +baddest +baddie/MS +bade +Baden/M +badge/DSRGMZ +badger/DMG +badinage/DSMG +badland/S +Badlands/M +badman/M +badmen +badminton/MS +badmouth/DG +badmouths +badness/SM +bad/PSNY +Baedeker/SM +Baez/M +Baffin/M +bafflement/MS +baffler/M +baffle/RSDGZL +baffling/Y +bagatelle/MS +bagel/SM +bagful/MS +baggageman +baggagemen +baggage/SM +bagged/M +bagger/SM +baggily +bagginess/MS +bagging/M +baggy/PRST +Baghdad/M +bagpiper/M +bagpipe/RSMZ +Bagrodia/MS +bag/SM +baguette/SM +Baguio/M +bah +Baha'i +Bahama/MS +Bahamanian/S +Bahamian/MS +Baha'ullah +Bahia/M +Bahrain/M +bahs +Baikal/M +Bailey/SM +bail/GSMYDRB +Bailie/M +bailiff/SM +bailiwick/MS +Baillie/M +Bail/M +bailout/MS +bailsman/M +bailsmen +Baily/M +Baird/M +bairn/SM +baiter/M +bait/GSMDR +baize/GMDS +Baja/M +baked/U +bakehouse/M +Bakelite/M +baker/M +Baker/M +Bakersfield/M +bakery/SM +bakeshop/S +bake/ZGJDRS +baking/M +baklava/M +baksheesh/SM +Baku/M +Bakunin/M +balaclava/MS +balalaika/MS +balanced/A +balancedness +balancer/MS +balance's +balance/USDG +Balanchine/M +Balboa/M +balboa/SM +balcony/MSD +balderdash/MS +Balder/M +baldfaced +Bald/MR +baldness/MS +bald/PYDRGST +baldric/SM +Balduin/M +Baldwin/M +baldy +Balearic/M +baleen/MS +balefuller +balefullest +balefulness/MS +baleful/YP +Bale/M +bale/MZGDRS +baler/M +Balfour/M +Bali/M +Balinese +balkanization +balkanize/DG +Balkan/SM +balker/M +balk/GDRS +Balkhash/M +balkiness/M +balky/PRT +balladeer/MS +ballade/MS +balladry/MS +ballad/SM +Ballard/SM +ballast/SGMD +ballcock/S +ballerina/MS +baller/M +balletic +ballet/MS +ballfields +ballgame/S +ball/GZMSDR +ballistic/S +ballistics/M +Ball/M +balloonist/S +balloon/RDMZGS +balloter/M +ballot/MRDGS +ballpark/SM +ballplayer/SM +ballpoint/SM +ballroom/SM +ballsy/TR +ballyhoo/SGMD +balminess/SM +balm/MS +balmy/PRT +baloney/SM +balsam/GMDS +balsamic +balsa/MS +Balthazar/M +Baltic/M +Baltimore/M +Baluchistan/M +baluster/MS +balustrade/SM +Balzac/M +Ba/M +Bamako/M +Bamberger/M +Bambie/M +Bambi/M +bamboo/SM +bamboozle/GSD +Bamby/M +Banach/M +banality/MS +banal/TYR +banana/SM +Bancroft/M +bandager/M +bandage/RSDMG +bandanna/SM +bandbox/MS +bandeau/M +bandeaux +band/EDGS +bander/M +banding/M +bandit/MS +banditry/MS +bandmaster/MS +bandoleer/SM +bandpass +band's +bandsman/M +bandsmen +bandstand/SM +bandstop +Bandung/M +bandwagon/MS +bandwidth/M +bandwidths +bandy/TGRSD +banefuller +banefullest +baneful/Y +bane/MS +Bangalore/M +banger/M +bang/GDRZMS +bangkok +Bangkok/M +Bangladeshi/S +Bangladesh/M +bangle/MS +Bangor/M +Bangui/M +bani +banisher/M +banishment/MS +banish/RSDGL +banister/MS +Banjarmasin/M +banjoist/SM +banjo/MS +Banjul/M +bankbook/SM +bankcard/S +banker/M +bank/GZJDRMBS +banking/M +Bank/MS +banknote/S +bankroll/DMSG +bankruptcy/MS +bankrupt/DMGS +Banky/M +Ban/M +banned/U +Banneker/M +banner/SDMG +banning/U +Bannister/M +bannister's +bannock/SM +banns +banqueter/M +banquet/SZGJMRD +banquette/MS +ban/SGMD +banshee/MS +bans/U +bantam/MS +bantamweight/MS +banterer/M +bantering/Y +banter/RDSG +Banting/M +Bantu/SM +banyan/MS +banzai/S +baobab/SM +Baotou/M +baptismal/Y +baptism/SM +Baptiste/M +baptistery/MS +baptist/MS +Baptist/MS +baptistry's +baptized/U +baptizer/M +baptize/SRDZG +baptizes/U +Barabbas/M +Barbabas/M +Barbabra/M +Barbadian/S +Barbados/M +Barbaraanne/M +Barbara/M +Barbarella/M +barbarianism/MS +barbarian/MS +barbaric +barbarically +barbarism/MS +barbarity/SM +barbarize/SDG +Barbarossa/M +barbarousness/M +barbarous/PY +Barbary/M +barb/DRMSGZ +barbecue/DRSMG +barbed/P +Barbee/M +barbell/SM +barbel/MS +Barbe/M +barbeque's +barber/DMG +barbered/U +Barber/M +barberry/MS +barbershop/MS +Barbette/M +Barbey/M +Barbie/M +Barbi/M +barbital/M +barbiturate/MS +Barbour/M +Barbra/M +Barb/RM +Barbuda/M +barbwire/SM +Barby/M +barcarole/SM +Barcelona/M +Barclay/M +Bardeen/M +Barde/M +bardic +Bard/M +bard/MDSG +bareback/D +barefacedness/M +barefaced/YP +barefoot/D +barehanded +bareheaded +barelegged +bareness/MS +Barents/M +bare/YSP +barfly/SM +barf/YDSG +bargainer/M +bargain/ZGSDRM +barge/DSGM +bargeman/M +bargemen +bargepole/M +barhopped +barhopping +barhop/S +Bari/M +baritone/MS +barium/MS +barked/C +barkeeper/M +barkeep/SRZ +barker/M +Barker/M +bark/GZDRMS +Barkley/M +barks/C +barleycorn/MS +barley/MS +Barlow/M +barmaid/SM +barman/M +barmen +Bar/MH +Barnabas +Barnabe/M +Barnaby/M +barnacle/MDS +Barnard/M +Barnaul/M +Barnebas/M +Barnes +Barnett/M +Barney/M +barnful +barn/GDSM +Barnhard/M +Barnie/M +Barn/M +barnsful +barnstorm/DRGZS +barnstormer/M +Barnum/M +barnyard/MS +Barny/M +Baroda/M +barometer/MS +barometric +barometrically +baronage/MS +baroness/MS +baronetcy/SM +baronet/MS +baronial +Baron/M +baron/SM +barony/SM +baroque/SPMY +barque's +Barquisimeto/M +barracker/M +barrack/SDRG +barracuda/MS +barrage/MGSD +Barranquilla/M +barred/ECU +barre/GMDSJ +barrel/SGMD +barrenness/SM +barren/SPRT +Barrera/M +Barret/M +barrette/SM +Barrett/M +barricade/SDMG +Barrie/M +barrier/MS +barring/R +barrio/SM +Barri/SM +barrister/MS +Barr/M +Barron/M +barroom/SM +barrow/MS +Barry/M +Barrymore/MS +bars/ECU +barstool/SM +Barstow/M +Bartel/M +bartender/M +bartend/ZR +barterer/M +barter/SRDZG +bar/TGMDRS +Barthel/M +Barth/M +Bartholdi/M +Bartholemy/M +Bartholomeo/M +Bartholomeus/M +Bartholomew/M +Bartie/M +Bartlet/M +Bartlett/M +Bart/M +Bartók/M +Bartolemo/M +Bartolomeo/M +Barton/M +Bartram/M +Barty/M +barycenter +barycentre's +barycentric +Bary/M +baryon/SM +Baryram/M +Baryshnikov/M +basaltic +basalt/SM +basal/Y +Bascom/M +bas/DRSTG +baseball/MS +baseband +baseboard/MS +base/CGRSDL +baseless +baseline/SM +Basel/M +basely +Base/M +baseman/M +basemen +basement/CSM +baseness/MS +baseplate/M +base's +basetting +bashfulness/MS +bashful/PY +bash/JGDSR +Basho/M +Basia/M +BASIC +basically +basic/S +Basie/M +basilar +Basile/M +basilica/SM +Basilio/M +basilisk/SM +Basilius/M +Basil/M +basil/MS +basin/DMS +basinful/S +basis/M +basketball/MS +basketry/MS +basket/SM +basketwork/SM +bask/GSD +basophilic +Basque/SM +Basra/M +Basseterre/M +basset/GMDS +Bassett/M +bassinet/SM +bassist/MS +Bass/M +basso/MS +bassoonist/MS +bassoon/MS +bass/SM +basswood/SM +bastardization/MS +bastardized/U +bastardize/SDG +bastard/MYS +bastardy/MS +baste/NXS +baster/M +Bastian/M +Bastien/M +Bastille/M +basting/M +bastion/DM +bast/SGZMDR +Basutoland/M +Bataan/M +Batavia/M +batch/MRSDG +bated/U +bate/KGSADC +bater/AC +Bates +bathe +bather/M +bathetic +bathhouse/SM +bath/JMDSRGZ +bathmat/S +Batholomew/M +bathos/SM +bathrobe/MS +bathroom/SDM +baths +Bathsheba/M +bathtub/MS +bathwater +bathyscaphe's +bathysphere/MS +batik/DMSG +Batista/M +batiste/SM +Bat/M +batman/M +Batman/M +batmen +baton/SM +Batsheva/M +batsman/M +bat/SMDRG +batsmen +battalion/MS +batted +batten/SDMG +batter/SRDZG +battery/MS +batting/MS +battledore/MS +battledress +battlefield/SM +battlefront/SM +battle/GMZRSDL +battleground/SM +Battle/M +battlement/SMD +battler/M +battleship/MS +batty/RT +Batu/M +batwings +bauble/SM +Baudelaire/M +baud/M +Baudoin/M +Baudouin/M +Bauer/M +Bauhaus/M +baulk/GSDM +Bausch/M +bauxite/SM +Bavaria/M +Bavarian/S +bawdily +bawdiness/MS +bawd/SM +bawdy/PRST +bawler/M +bawl/SGDR +Baxie/M +Bax/M +Baxter/M +Baxy/M +Bayamon +Bayard/M +bayberry/MS +Bayda/M +Bayer/M +Bayes +Bayesian +bay/GSMDY +Baylor/M +Bay/MR +bayonet/SGMD +Bayonne/M +bayou/MS +Bayreuth/M +bazaar/MS +bazillion/S +bazooka/MS +BB +BBB +BBC +bbl +BBQ +BBS +BC +BCD +bdrm +beachcomber/SM +beachhead/SM +Beach/M +beach/MSDG +beachwear/M +beacon/DMSG +beading/M +Beadle/M +beadle/SM +bead/SJGMD +beadsman/M +beadworker +beady/TR +beagle/SDGM +beaker/M +beak/ZSDRM +Beale/M +Bealle/M +Bea/M +beam/MDRSGZ +beanbag/SM +bean/DRMGZS +beanie/SM +Bean/M +beanpole/MS +beanstalk/SM +bearable/U +bearably/U +beard/DSGM +bearded/P +beardless +Beard/M +Beardmore/M +Beardsley/M +bearer/M +bearing/M +bearishness/SM +bearish/PY +bearlike +Bear/M +Bearnaise/M +Bearnard/M +bearskin/MS +bear/ZBRSJG +Beasley/M +beasties +beastings/M +beastliness/MS +beastly/PTR +beast/SJMY +beatable/U +beatably/U +beaten/U +beater/M +beatific +beatifically +beatification/M +beatify/GNXDS +beating/M +beatitude/MS +Beatlemania/M +Beatles/M +beatnik/SM +beat/NRGSBZJ +Beatrice/M +Beatrisa/M +Beatrix/M +Beatriz/M +Beauchamps +Beaufort/M +Beaujolais/M +Beau/M +Beaumarchais/M +Beaumont/M +beau/MS +Beauregard/M +beauteousness/M +beauteous/YP +beautician/MS +beautification/M +beautifier/M +beautifully/U +beautifulness/M +beautiful/PTYR +beautify/SRDNGXZ +beaut/SM +beauty/SM +Beauvoir/M +beaux's +beaver/DMSG +Beaverton/M +Bebe/M +bebop/MS +becalm/GDS +became +because +Becca/M +Bechtel/M +Becka/M +Becker/M +Becket/M +Beckett/M +beck/GSDM +Beckie/M +Becki/M +beckon/SDG +Beck/RM +Becky/M +becloud/SGD +become/GJS +becoming/UY +Becquerel/M +bedaub/GDS +bedazzle/GLDS +bedazzlement/SM +bedbug/SM +bedchamber/M +bedclothes +bedded +bedder/MS +bedding/MS +bedeck/DGS +Bede/M +bedevil/DGLS +bedevilment/SM +bedfast +bedfellow/MS +Bedford/M +bedimmed +bedimming +bedim/S +bedizen/DGS +bedlam/MS +bedlinen +bedmaker/SM +bedmate/MS +bed/MS +Bedouin/SM +bedpan/SM +bedpost/SM +bedraggle/GSD +bedridden +bedrock/SM +bedroll/SM +bedroom/DMS +bedsheets +bedside/MS +bedsit +bedsitter/M +bedsore/MS +bedspread/SM +bedspring/SM +bedstead/SM +bedstraw/M +bedtime/SM +Beebe/M +beebread/MS +Beecher/M +beech/MRSN +beechnut/MS +beechwood +beefburger/SM +beefcake/MS +beef/GZSDRM +beefiness/MS +beefsteak/MS +beefy/TRP +beehive/MS +beekeeper/MS +beekeeping/SM +beeline/MGSD +Beelzebub/M +Bee/M +bee/MZGJRS +been/S +beeper/M +beep/GZSMDR +Beerbohm/M +beer/M +beermat/S +beery/TR +beeswax/DSMG +Beethoven/M +beetle/GMRSD +Beeton/M +beetroot/M +beet/SM +beeves/M +befall/SGN +befell +befit/SM +befitted +befitting/Y +befogged +befogging +befog/S +before +beforehand +befoul/GSD +befriend/DGS +befuddle/GLDS +befuddlement/SM +began +beget/S +begetting +beggar/DYMSG +beggarliness/M +beggarly/P +beggary/MS +begged +begging +Begin/M +beginner/MS +beginning/MS +begin/S +begone/S +begonia/SM +begot +begotten +begrime/SDG +begrudge/GDRS +begrudging/Y +beg/S +beguilement/SM +beguiler/M +beguile/RSDLZG +beguiling/Y +beguine/SM +begum/MS +begun +behalf/M +behalves +Behan/M +behave/GRSD +behavioral/Y +behaviorism/MS +behavioristic/S +behaviorist/S +behavior/SMD +behead/GSD +beheld +behemoth/M +behemoths +behest/SM +behindhand +behind/S +beholder/M +behold/ZGRNS +behoofs +behoove/SDJMG +behooving/YM +Behring/M +Beiderbecke/M +beige/MS +Beijing +Beilul/M +being/M +Beirut/M +Beitris/M +bejewel/SDG +Bekesy/M +Bekki/M +be/KS +belabor/MDSG +Bela/M +Belarus +belate/D +belatedness/M +belated/PY +Belau/M +belay/GSD +belch/GSD +beleaguer/GDS +Belem/M +Belfast/M +belfry/SM +Belgian/MS +Belgium/M +Belg/M +Belgrade/M +Belia/M +Belicia/M +belie +belief/ESUM +belier/M +believability's +believability/U +believable/U +believably/U +believed/U +believe/EZGDRS +believer/MUSE +believing/U +Belinda/M +Belita/M +belittlement/MS +belittler/M +belittle/RSDGL +Belize/M +belladonna/MS +Bella/M +Bellamy/M +Bellanca/M +Bellatrix/M +bellboy/MS +belled/A +Belle/M +belle/MS +belletristic +belletrist/SM +Belleville/M +bellflower/M +bell/GSMD +bellhop/MS +bellicoseness/M +bellicose/YP +bellicosity/MS +belligerence/SM +belligerency/MS +belligerent/SMY +Bellina/M +belling/A +Bellini/M +Bell/M +bellman/M +bellmen +Bellovin/M +bellow/DGS +Bellow/M +bellows/M +bells/A +bellwether/MS +Bellwood/M +bellyacher/M +bellyache/SRDGM +bellybutton/MS +bellyfull +bellyful/MS +belly/SDGM +Bel/M +Belmont/M +Belmopan/M +Beloit/M +belong/DGJS +belonging/MP +Belorussian/S +Belorussia's +belove/D +beloved/S +below/S +Belshazzar/M +belted/U +belt/GSMD +belting/M +Belton/M +Beltran/M +Beltsville/M +beltway/SM +beluga/SM +Belushi/M +Belva/M +belvedere/M +Belvia/M +bely/DSRG +beman +Be/MH +bemire/SDG +bemoan/GDS +bemused/Y +bemuse/GSDL +bemusement/SM +Benacerraf/M +Benares's +bencher/M +benchmark/GDMS +bench/MRSDG +bend/BUSG +bended +Bender/M +bender/MS +Bendick/M +Bendicty/M +Bendite/M +Bendix/M +beneath +Benedetta/M +Benedetto/M +Benedick/M +Benedicta/M +Benedictine/MS +benediction/MS +Benedict/M +Benedicto/M +benedictory +Benedikta/M +Benedikt/M +benefaction/MS +benefactor/MS +benefactress/S +benefice/MGSD +beneficence/SM +beneficent/Y +beneficialness/M +beneficial/PY +beneficiary/MS +benefiter/M +benefit/SRDMZG +Benelux/M +Benet/M +Benetta/M +Benetton/M +benevolence/SM +benevolentness/M +benevolent/YP +Bengali/M +Bengal/SM +Benghazi/M +Bengt/M +Beniamino/M +benightedness/M +benighted/YP +benignant +benignity/MS +benign/Y +Beninese +Benin/M +Benita/M +Benito/M +Benjamen/M +Benjamin/M +Benjie/M +Benji/M +Benjy/M +Ben/M +Bennett/M +Bennie/M +Benni/M +Bennington/M +Benn/M +Benny/M +Benoite/M +Benoit/M +Benson/M +Bentham/M +Bentlee/M +Bentley/MS +Bent/M +Benton/M +bents +bent/U +bentwood/SM +benumb/SGD +Benyamin/M +Benzedrine/M +benzene/MS +benzine/SM +Benz/M +Beograd's +Beowulf/M +bequeath/GSD +bequeaths +bequest/MS +berate/GSD +Berber/MS +bereave/GLSD +bereavement/MS +bereft +Berenice/M +Beret/M +beret/SM +Bergen/M +Bergerac/M +Berger/M +Berget/M +Berglund/M +Bergman/M +Berg/NRM +berg/NRSM +Bergson/M +Bergsten/M +Bergstrom/M +beribbon/D +beriberi/SM +Beringer/M +Bering/RM +Berkeley/M +berkelium/SM +Berke/M +Berkie/M +Berkley/M +Berkly/M +Berkowitz/M +Berkshire/SM +Berky/M +Berk/YM +Berle/M +Berliner/M +Berlin/SZRM +Berlioz/M +Berlitz/M +Berman/M +Ber/MG +berm/SM +Bermuda/MS +Bermudan/S +Bermudian/S +Bernadene/M +Bernadette/M +Bernadina/M +Bernadine/M +Berna/M +Bernardina/M +Bernardine/M +Bernardino/M +Bernard/M +Bernardo/M +Bernarr/M +Bernays/M +Bernbach/M +Bernelle/M +Berne's +Bernese +Bernete/M +Bernetta/M +Bernette/M +Bernhard/M +Bernhardt/M +Bernice/M +Berniece/M +Bernie/M +Berni/M +Bernini/M +Bernita/M +Bern/M +Bernoulli/M +Bernstein/M +Berny/M +Berra/M +Berrie/M +Berri/M +berrylike +Berry/M +berry/SDMG +berserker/M +berserk/SR +Berta/M +Berte/M +Bertha/M +Berthe/M +berth/MDGJ +berths +Bertie/M +Bertillon/M +Berti/M +Bertina/M +Bertine/M +Bert/M +Berton/M +Bertram/M +Bertrand/M +Bertrando/M +Berty/M +Beryle/M +beryllium/MS +Beryl/M +beryl/SM +Berzelius/M +bes +beseecher/M +beseeching/Y +beseech/RSJZG +beseem/GDS +beset/S +besetting +beside/S +besieger/M +besiege/SRDZG +besmear/GSD +besmirch/GSD +besom/GMDS +besot/S +besotted +besotting +besought +bespangle/GSD +bespatter/SGD +bespeak/SG +bespectacled +bespoke +bespoken +Bess +Bessel/M +Bessemer/M +Bessie/M +Bessy/M +best/DRSG +bestiality/MS +bestial/Y +bestiary/MS +bestirred +bestirring +bestir/S +Best/M +bestowal/SM +bestow/SGD +bestrew/DGS +bestrewn +bestridden +bestride/SG +bestrode +bestseller/MS +bestselling +bestubble/D +betaken +betake/SG +beta/SM +betatron/M +betcha +Betelgeuse/M +betel/MS +Bethanne/M +Bethany/M +bethel/M +Bethe/M +Bethena/M +Bethesda/M +Bethina/M +bethink/GS +Bethlehem/M +beth/M +Beth/M +bethought +Bethune +betide/GSD +betimes +bet/MS +betoken/GSD +betook +betrayal/SM +betrayer/M +betray/SRDZG +betrothal/SM +betrothed/U +betroth/GD +betroths +Betsey/M +Betsy/M +Betta/M +Betteanne/M +Betteann/M +Bette/M +betterment/MS +better/SDLG +Bettie/M +Betti/M +Bettina/M +Bettine/M +betting +bettor/SM +Bettye/M +Betty/SM +betweenness/M +between/SP +betwixt +Beulah/M +Bevan/M +bevel/SJGMRD +beverage/MS +Beverie/M +Beverlee/M +Beverley/M +Beverlie/M +Beverly/M +Bevin/M +Bevon/M +Bev's +Bevvy/M +bevy/SM +bewail/GDS +beware/GSD +bewhisker/D +bewigged +bewildered/PY +bewildering/Y +bewilder/LDSG +bewilderment/SM +bewitching/Y +bewitch/LGDS +bewitchment/SM +bey/MS +beyond/S +bezel/MS +bf +B/GT +Bhopal/M +Bhutanese +Bhutan/M +Bhutto/M +Bialystok/M +Bianca/M +Bianco/M +Bianka/M +biannual/Y +bias/DSMPG +biased/U +biathlon/MS +biaxial/Y +bibbed +Bibbie/M +bibbing +Bibbye/M +Bibby/M +Bibi/M +bible/MS +Bible/MS +biblical/Y +biblicists +bibliographer/MS +bibliographical/Y +bibliographic/S +bibliography/MS +bibliophile/MS +Bib/M +bib/MS +bibulous +bicameral +bicameralism/MS +bicarb/MS +bicarbonate/MS +bicentenary/S +bicentennial/S +bicep/S +biceps/M +bichromate/DM +bickerer/M +bickering/M +bicker/SRDZG +biconcave +biconnected +biconvex +bicuspid/S +bicycler/M +bicycle/RSDMZG +bicyclist/SM +biddable +bidden/U +bidder/MS +Biddie/M +bidding/MS +Biddle/M +Biddy/M +biddy/SM +bider/M +bide/S +bidet/SM +Bidget/M +bid/GMRS +bidiagonal +bidirectional/Y +bids/A +biennial/SY +biennium/SM +Bienville/M +Bierce/M +bier/M +bifocal/S +bifurcate/SDXGNY +bifurcation/M +bigamist/SM +bigamous +bigamy/SM +Bigelow/M +Bigfoot +bigged +bigger +biggest +biggie/SM +bigging +biggish +bighead/MS +bigheartedness/S +bighearted/P +bighorn/MS +bight/SMDG +bigmouth/M +bigmouths +bigness/SM +bigoted/Y +bigot/MDSG +bigotry/MS +big/PYS +bigwig/MS +biharmonic +bijection/MS +bijective/Y +bijou/M +bijoux +bike/MZGDRS +biker/M +bikini/SMD +Biko/M +bilabial/S +bilateralness/M +bilateral/PY +bilayer/S +Bilbao/M +bilberry/MS +Bilbo/M +bile/SM +bilge/GMDS +biliary +Bili/M +bilinear +bilingualism/SM +bilingual/SY +biliousness/SM +bilious/P +bilker/M +bilk/GZSDR +billboard/MDGS +biller/M +billet/MDGS +billfold/MS +billiard/SM +Billie/M +Billi/M +billing/M +billingsgate/SM +Billings/M +billionaire/MS +billion/SHM +billionths +bill/JGZSBMDR +Bill/JM +billow/DMGS +billowy/RT +billposters +Billye/M +Billy/M +billy/SM +Bil/MY +bi/M +Bi/M +bimbo/MS +bimetallic/S +bimetallism/MS +Bimini/M +bimodal +bimolecular/Y +bimonthly/S +binary/S +binaural/Y +binder/M +bindery/MS +binding/MPY +bindingness/M +bind/JDRGZS +bindle/M +binds/AU +bindweed/MS +binge/MS +bing/GNDM +Bingham/M +Binghamton/M +Bing/M +bingo/MS +Bini/M +Bink/M +Binky/M +binnacle/MS +binned +Binnie/M +Binni/M +binning +Binny/M +binocular/SY +binodal +binomial/SYM +bin/SM +binuclear +biochemical/SY +biochemist/MS +biochemistry/MS +biodegradability/S +biodegradable +biodiversity/S +bioengineering/M +bioethics +biofeedback/SM +biographer/M +biographic +biographical/Y +biograph/RZ +biography/MS +biog/S +Bioko/M +biol +biological/SY +biologic/S +biologist/SM +biology/MS +biomass/SM +biomedical +biomedicine/M +biometric/S +biometrics/M +biometry/M +biomolecule/S +biomorph +bionically +bionic/S +bionics/M +biophysical/Y +biophysicist/SM +biophysic/S +biophysics/M +biopic/S +biopsy/SDGM +biorhythm/S +BIOS +bioscience/S +biosphere/MS +biostatistic/S +biosynthesized +biotechnological +biotechnologist +biotechnology/SM +biotic +biotin/SM +bipartisan +bipartisanship/MS +bipartite/YN +bipartition/M +bipedal +biped/MS +biplane/MS +bipolar +bipolarity/MS +biracial +Birch/M +birch/MRSDNG +birdbath/M +birdbaths +birdbrain/SDM +birdcage/SM +birder/M +birdhouse/MS +birdieing +Birdie/M +birdie/MSD +birdlike +birdlime/MGDS +Bird/M +birdseed/MS +Birdseye/M +bird/SMDRGZ +birdsong +birdtables +birdwatch/GZR +birefringence/M +birefringent +biretta/SM +Birgit/M +Birgitta/M +Birkenstock/M +Birk/M +Birmingham/M +Biro/M +Biron/M +birthday/SM +birthmark/MS +birth/MDG +birthplace/SM +birthrate/MS +birthright/MS +birth's/A +births/A +birthstone/SM +bis +Biscay/M +Biscayne/M +biscuit/MS +bisect/DSG +bisection/MS +bisector/MS +biserial +bisexuality/MS +bisexual/YMS +Bishkek +bishop/DGSM +Bishop/M +bishopric/SM +Bismarck/M +Bismark/M +bismuth/M +bismuths +bison/M +bisque/SM +Bissau/M +bistable +bistate +bistro/SM +bisyllabic +bitblt/S +bitchily +bitchiness/MS +bitch/MSDG +bitchy/PTR +biter/M +bite/S +biting/Y +bitmap/SM +bit/MRJSZG +BITNET/M +bit's/C +bits/C +bitser/M +bitted +bitten +bitterness/SM +bittern/SM +bitternut/M +bitter/PSRDYTG +bitterroot/M +bittersweet/YMSP +bitting +bitty/PRT +bitumen/MS +bituminous +bitwise +bivalent/S +bivalve/MSD +bivariate +bivouacked +bivouacking +bivouac/MS +biweekly/S +biyearly +bizarreness/M +bizarre/YSP +Bizet/M +biz/M +bizzes +Bjorn/M +bk +b/KGD +Bk/M +blabbed +blabber/GMDS +blabbermouth/M +blabbermouths +blabbing +blab/S +blackamoor/SM +blackball/SDMG +blackberry/GMS +blackbirder/M +blackbird/SGDRM +blackboard/SM +blackbody/S +Blackburn/M +blackcurrant/M +blackener/M +blacken/GDR +Blackfeet +Blackfoot/M +blackguard/MDSG +blackhead/SM +blacking/M +blackish +blackjack/SGMD +blackleg/M +blacklist/DRMSG +blackmail/DRMGZS +blackmailer/M +Blackman/M +Blackmer/M +blackness/MS +blackout/SM +Blackpool/M +Black's +black/SJTXPYRDNG +blacksmith/MG +blacksmiths +blacksnake/MS +blackspot +Blackstone/M +blackthorn/MS +blacktop/MS +blacktopped +blacktopping +Blackwell/MS +bladder/MS +bladdernut/M +bladderwort/M +blade/DSGM +blah/MDG +blahs +Blaine/M +Blaire/M +Blair/M +Blakelee/M +Blakeley/M +Blake/M +Blakey/M +blame/DSRBGMZ +blamelessness/SM +blameless/YP +blamer/M +blameworthiness/SM +blameworthy/P +Blanca/M +Blancha/M +Blanchard/M +blanch/DRSG +Blanche/M +blancher/M +Blanch/M +blanc/M +blancmange/SM +blandishment/MS +blandish/SDGL +blandness/MS +bland/PYRT +Blane/M +Blankenship/M +blanketing/M +blanket/SDRMZG +blankness/MS +blank/SPGTYRD +Blanton/M +Blantyre/M +blare/DSG +blarney/DMGS +blasé +blasphemer/M +blaspheme/RSDZG +blasphemousness/M +blasphemous/PY +blasphemy/SM +blaster/M +blasting/M +blastoff/SM +blast/SMRDGZ +blatancy/SM +blatant/YP +blather/DRGS +blatting +Blatz/M +Blavatsky/M +Blayne/M +blaze/DSRGMZ +blazer/M +blazing/Y +blazoner/M +blazon/SGDR +bl/D +bldg +bleach/DRSZG +bleached/U +bleacher/M +bleakness/MS +bleak/TPYRS +blear/GDS +blearily +bleariness/SM +bleary/PRT +bleater/M +bleat/RDGS +bleeder/M +bleed/ZRJSG +Bleeker/M +bleep/GMRDZS +blemish/DSMG +blemished/U +blench/DSG +blender/M +blend/GZRDS +Blenheim/M +blessedness/MS +blessed/PRYT +blessing/M +bless/JGSD +Blevins/M +blew +Bligh/M +blighter/M +blight/GSMDR +blimey/S +blimp/MS +blinded/U +blinder/M +blindfold/SDG +blinding/MY +blind/JGTZPYRDS +blindness/MS +blindside/SDG +blinker/MDG +blinking/U +blink/RDGSZ +blinks/M +Blinnie/M +Blinni/M +Blinny/M +blintze/M +blintz/SM +blip/MS +blipped +blipping +Blisse/M +blissfulness/MS +blissful/PY +Bliss/M +bliss/SDMG +blistering/Y +blister/SMDG +blistery +Blithe/M +blitheness/SM +blither/G +blithesome +blithe/TYPR +blitz/GSDM +blitzkrieg/SM +blizzard/MS +bloater/M +bloat/SRDGZ +blobbed +blobbing +blob/MS +Bloch/M +blockader/M +blockade/ZMGRSD +blockage/MS +blockbuster/SM +blockbusting/MS +blocker/MS +blockhead/MS +blockhouse/SM +block's +block/USDG +blocky/R +bloc/MS +Bloemfontein/M +bloke/SM +Blomberg/M +Blomquist/M +Blondelle/M +Blondell/M +blonde's +Blondie/M +blondish +blondness/MS +blond/SPMRT +Blondy/M +bloodbath +bloodbaths +bloodcurdling +bloodhound/SM +bloodied/U +bloodiness/MS +bloodlessness/SM +bloodless/PY +bloodletting/MS +bloodline/SM +bloodmobile/MS +bloodroot/M +bloodshed/SM +bloodshot +blood/SMDG +bloodsport/S +bloodstain/MDS +bloodstock/SM +bloodstone/M +bloodstream/SM +bloodsucker/SM +bloodsucking/S +bloodthirstily +bloodthirstiness/MS +bloodthirsty/RTP +bloodworm/M +bloodymindedness +bloody/TPGDRS +bloomer/M +Bloomer/M +Bloomfield/M +Bloomington/M +Bloom/MR +bloom/SMRDGZ +blooper/M +bloop/GSZRD +blossom/DMGS +blossomy +blotch/GMDS +blotchy/RT +blot/MS +blotted +blotter/MS +blotting +blotto +blouse/GMSD +blower/M +blowfish/M +blowfly/MS +blowgun/SM +blow/GZRS +blowing/M +blown/U +blowout/MS +blowpipe/SM +blowtorch/SM +blowup/MS +blowy/RST +blowzy/RT +BLT +blubber/GSDR +blubbery +Blucher/M +bludgeon/GSMD +blueback +Bluebeard/M +bluebell/MS +blueberry/SM +bluebill/M +bluebird/MS +bluebonnet/SM +bluebook/M +bluebottle/MS +bluebush +bluefish/SM +bluegill/SM +bluegrass/MS +blueing's +blueish +bluejacket/MS +bluejeans +blue/JMYTGDRSP +blueness/MS +bluenose/MS +bluepoint/SM +blueprint/GDMS +bluer/M +bluest/M +bluestocking/SM +bluesy/TR +bluet/MS +bluffer/M +bluffness/MS +bluff/SPGTZYRD +bluing/M +bluishness/M +bluish/P +Blumenthal/M +Blum/M +blunderbuss/MS +blunderer/M +blunder/GSMDRJZ +blundering/Y +bluntness/MS +blunt/PSGTYRD +blurb/GSDM +blur/MS +blurred/Y +blurriness/S +blurring/Y +blurry/RPT +blurt/GSRD +blusher/M +blushing/UY +blush/RSDGZ +blusterer/M +blustering/Y +blusterous +bluster/SDRZG +blustery +blvd +Blvd +Blythe/M +BM +BMW/M +BO +boarded +boarder/SM +boardgames +boardinghouse/SM +boarding/SM +board/IS +boardroom/MS +board's +boardwalk/SM +boar/MS +boa/SM +boaster/M +boastfulness/MS +boastful/YP +boast/SJRDGZ +boatclubs +boater/M +boathouse/SM +boating/M +boatload/SM +boatman/M +boat/MDRGZJS +boatmen +boatswain/SM +boatyard/SM +bobbed +Bobbee/M +Bobbe/M +Bobbette/M +Bobbie/M +Bobbi/M +bobbing/M +bobbin/MS +Bobbitt/M +bobble/SDGM +Bobbsey/M +Bobbye/M +Bobby/M +bobby/SM +bobbysoxer's +bobcat/MS +Bobette/M +Bobina/M +Bobine/M +Bobinette/M +Bob/M +bobolink/SM +Bobrow/M +bobsledded +bobsledder/MS +bobsledding/M +bobsled/MS +bobsleigh/M +bobsleighs +bobs/M +bob/SM +bobtail/SGDM +bobwhite/SM +Boca/M +Boccaccio/M +boccie/SM +bock/GDS +bockwurst +bodega/MS +Bodenheim/M +bode/S +Bodhidharma/M +bodhisattva +Bodhisattva/M +bodice/SM +bodied/M +bodiless +bodily +boding/M +bodkin/SM +bod/SGMD +bodybuilder/SM +bodybuilding/S +body/DSMG +bodyguard/MS +bodying/M +bodysuit/S +bodyweight +bodywork/SM +Boeing/M +Boeotia/M +Boeotian +Boer/M +Bogartian/M +Bogart/M +Bogey/M +bogeyman/M +bogeymen +bogey/SGMD +bogged +bogging +boggle/SDG +boggling/Y +boggy/RT +bogie's +bog/MS +Bogotá/M +bogus +bogyman +bogymen +bogy's +Boheme/M +bohemianism/S +bohemian/S +Bohemian/SM +Bohemia/SM +Bohr/M +Boigie/M +boiled/AU +boiler/M +boilermaker/MS +boilerplate/SM +boil/JSGZDR +boils/A +Boise/M +Bois/M +boisterousness/MS +boisterous/YP +bola/SM +boldface/SDMG +boldness/MS +bold/YRPST +bole/MS +bolero/MS +Boleyn/M +bolivares +Bolivar/M +bolivar/MS +Bolivia/M +Bolivian/S +bollard/SM +bollix/GSD +boll/MDSG +Bologna/M +bologna/MS +bolometer/MS +bolo/MS +boloney's +Bolshevik/MS +Bolshevism/MS +Bolshevistic/M +Bolshevist/MS +Bolshoi/M +bolsterer/M +bolster/SRDG +bolted/U +bolter/M +bolt/MDRGS +Bolton/M +bolts/U +Boltzmann/M +bolus/SM +bombardier/MS +bombard/LDSG +bombardment/SM +bombastic +bombastically +bombast/RMS +Bombay/M +bomber/M +bombproof +bomb/SGZDRJ +bombshell/SM +Bo/MRZ +bona +bonanza/MS +Bonaparte/M +Bonaventure/M +bonbon/SM +bondage/SM +bonder/M +bondholder/SM +Bondie/M +bond/JMDRSGZ +Bond/M +bondman/M +bondmen +Bondon/M +bonds/A +bondsman/M +bondsmen +bondwoman/M +bondwomen +Bondy/M +boned/U +bonehead/SDM +boneless +Bone/M +bone/MZDRSG +boner/M +bonfire/MS +bong/GDMS +bongo/MS +Bonham/M +bonhomie/MS +Boniface/M +boniness/MS +Bonita/M +bonito/MS +bonjour +bonkers +Bonnee/M +Bonner/M +bonneted/U +bonnet/SGMD +Bonneville/M +Bonnibelle/M +bonnie +Bonnie/M +Bonni/M +Bonn/RM +Bonny/M +bonny/RT +bonsai/SM +Bontempo/M +bonus/SM +bony/RTP +bonzes +boob/DMSG +booby/SM +boodle/GMSD +boogeyman's +boogieing +boogie/SD +boo/GSDH +boohoo/GDS +bookbinder/M +bookbindery/SM +bookbinding/M +bookbind/JRGZ +bookcase/MS +booked/U +bookend/SGD +Booker/M +book/GZDRMJSB +bookie/SM +booking/M +bookishness/M +bookish/PY +bookkeeper/M +bookkeep/GZJR +bookkeeping/M +booklet/MS +bookmaker/MS +bookmaking/MS +bookmark/MDGS +bookmobile/MS +bookplate/SM +bookseller/SM +bookshelf/M +bookshelves +bookshop/MS +bookstall/MS +bookstore/SM +bookwork/M +bookworm/MS +Boolean +boolean/S +Boole/M +boom/DRGJS +boomerang/MDSG +boomer/M +boomtown/S +boondocks +boondoggle/DRSGZ +boondoggler/M +Boone/M +Boonie/M +boonies +boon/MS +Boony/M +boorishness/SM +boorish/PY +boor/MS +boosterism +booster/M +boost/SGZMRD +boot/AGDS +bootblack/MS +bootee/MS +Boote/M +Boötes +Boothe/M +booth/M +Booth/M +booths +bootie's +bootlaces +bootlegged/M +bootlegger/SM +bootlegging/M +bootleg/S +Bootle/M +bootless +Boot/M +bootprints +boot's +bootstrapped +bootstrapping +bootstrap/SM +booty/SM +booze/DSRGMZ +boozer/M +boozy/TR +bopped +bopping +bop/S +borate/MSD +borax/MS +Bordeaux/M +bordello/MS +Borden/M +borderer/M +border/JRDMGS +borderland/SM +borderline/MS +Bordie/M +Bord/MN +Bordon/M +Bordy/M +Borealis/M +Boreas/M +boredom/MS +boreholes +borer/M +bore/ZGJDRS +Borges +Borgia/M +Borg/M +boric +boring/YMP +Boris +Bork/M +born/AIU +Borneo/M +borne/U +Born/M +Borodin/M +boron/SM +borosilicate/M +borough/M +boroughs +Borroughs/M +borrower/M +borrowing/M +borrow/JZRDGBS +borscht/SM +borstal/MS +Boru/M +borzoi/MS +Bosch/M +Bose/M +bosh/MS +Bosnia/M +Bosnian/S +bosom's +bosom/SGUD +bosomy/RT +boson/SM +Bosporus/M +boss/DSRMG +bossily +bossiness/MS +bossism/MS +bossy/PTSR +Bostitch/M +Bostonian/SM +Boston/MS +bosun's +Boswell/MS +botanical/SY +botanic/S +botanist/SM +botany/SM +botcher/M +botch/SRDGZ +botfly/M +bother/DG +bothersome +bothy/M +both/ZR +bot/S +Botswana/M +Botticelli/M +bottle/GMZSRD +bottleneck/GSDM +bottler/M +bottomlessness/M +bottomless/YP +bottommost +bottom/SMRDG +botulin/M +botulinus/M +botulism/SM +Boucher/M +boudoir/MS +bouffant/S +bougainvillea/SM +bough/MD +boughs +bought/N +bouillabaisse/MS +bouillon/MS +boulder/GMDS +Boulder/M +boulevard/MS +bouncer/M +bounce/SRDGZ +bouncily +bouncing/Y +bouncy/TRP +boundary/MS +bound/AUDI +boundedness/MU +bounded/UP +bounden +bounder/AM +bounders +bounding +boundlessness/SM +boundless/YP +bounds/IA +bounteousness/MS +bounteous/PY +bountifulness/SM +bountiful/PY +bounty/SDM +bouquet/SM +Bourbaki/M +bourbon/SM +Bourbon/SM +bourgeoisie/SM +bourgeois/M +Bourke/M +Bourne/M +Bournemouth/M +boutique/MS +bout/MS +boutonnière/MS +Bouvier +Bovary/M +bovine/YS +Bowditch/M +bowdlerization/MS +bowdlerize/GRSD +bowed/U +bowel/GMDS +Bowell/M +Bowen/M +bower/DMG +Bowers +Bowery/M +Bowes +bowie +Bowie/M +bowing/M +bowlder's +bowlegged +bowleg/SM +bowler/M +bowlful/S +bowl/GZSMDR +bowline/MS +bowling/M +bowman/M +Bowman/M +bowmen +bowser/M +bowsprit/SM +bows/R +bowstring/GSMD +bow/SZGNDR +bowwow/DMGS +boxcar/SM +box/DRSJZGM +boxer/M +boxful/M +boxing/M +boxlike +boxtops +boxwood/SM +boxy/TPR +Boyce/M +Boycey/M +Boycie/M +boycotter/M +boycott/RDGS +Boyd/M +Boyer/M +boyfriend/MS +boyhood/SM +boyishness/MS +boyish/PY +Boyle/M +Boy/MR +boy/MRS +boyscout +boysenberry/SM +bozo/SM +bpi +bps +BR +brace/DSRJGM +braced/U +bracelet/MS +bracer/M +brachia +brachium/M +bracken/SM +bracketed/U +bracketing/M +bracket/SGMD +brackishness/SM +brackish/P +bract/SM +Bradan/M +bradawl/M +Bradbury/M +Bradburys +bradded +bradding +Braddock/M +Brade/M +Braden/M +Bradford/M +Bradley/M +Bradly/M +Brad/MYN +Bradney/M +Bradshaw/M +brad/SM +Bradstreet/M +Brady/M +brae/SM +braggadocio/SM +braggart/SM +bragged +bragger/MS +braggest +bragging +Bragg/M +brag/S +Brahe/M +Brahma/MS +Brahmanism/MS +Brahman/SM +Brahmaputra/M +Brahmin's +Brahms +braider/M +braiding/M +braid/RDSJG +braille/DSG +Braille/GDSM +Brainard/SM +braincell/S +brainchild/M +brainchildren +brain/GSDM +braininess/MS +brainlessness/M +brainless/YP +Brain/M +brainpower/M +brainstorm/DRMGJS +brainstorming/M +brainteaser/S +brainteasing +brainwasher/M +brainwashing/M +brainwash/JGRSD +brainwave/S +brainy/RPT +braise/SDG +brake/DSGM +brakeman/M +brakemen/M +bramble/DSGM +brambling/M +brambly/RT +Bram/M +Brampton/M +bra/MS +Brana/M +branched/U +branching/M +branchlike +Branch/M +branch/MDSJG +Branchville/M +Brandais/M +Brandea/M +branded/U +Brandeis/M +Brandel/M +Brande/M +Brandenburg/M +Branden/M +brander/GDM +Brander/M +Brandice/M +Brandie/M +Brandi/M +Brandise/M +brandish/GSD +Brand/MRN +Brando/M +Brandon/M +brand/SMRDGZ +Brandt/M +Brandtr/M +brandy/GDSM +Brandy/M +Brandyn/M +brandywine +Braniff/M +Bran/M +branned +branning +Brannon/M +bran/SM +Brantley/M +Brant/M +Braque/M +brashness/MS +brash/PYSRT +Brasilia +brasserie/SM +brass/GSDM +brassiere/MS +brassily +brassiness/SM +brassy/RSPT +Bratislava/M +brat/SM +Brattain/M +bratty/RT +bratwurst/MS +Braun/M +bravadoes +bravado/M +brave/DSRGYTP +braveness/MS +bravery/MS +bravest/M +bravo/SDG +bravura/SM +brawler/M +brawl/MRDSGZ +brawniness/SM +brawn/MS +brawny/TRP +brayer/M +Bray/M +bray/SDRG +braze/GZDSR +brazenness/MS +brazen/PYDSG +brazer/M +brazier/SM +Brazilian/MS +Brazil/M +Brazos/M +Brazzaville/M +breacher/M +breach/MDRSGZ +breadbasket/SM +breadboard/SMDG +breadbox/S +breadcrumb/S +breadfruit/MS +breadline/MS +bread/SMDHG +breadth/M +breadths +breadwinner/MS +breakables +breakable/U +breakage/MS +breakaway/MS +breakdown/MS +breaker/M +breakfaster/M +breakfast/RDMGZS +breakfront/S +breaking/M +breakneck +breakout/MS +breakpoint/SMDG +break/SZRBG +breakthroughs +breakthrough/SM +breakup/SM +breakwater/SM +bream/SDG +Breanne/M +Brear/M +breastbone/MS +breastfed +breastfeed/G +breasting/M +breast/MDSG +breastplate/SM +breaststroke/SM +breastwork/MS +breathable/U +breathalyser/S +Breathalyzer/SM +breathe +breather/M +breathing/M +breathlessness/SM +breathless/PY +breaths +breathtaking/Y +breathy/TR +breath/ZBJMDRSG +Brecht/M +Breckenridge/M +bred/DG +bredes +breeching/M +breech/MDSG +breeder/I +breeder's +breeding/IM +breeds/I +breed/SZJRG +Bree/M +Breena/M +breeze/GMSD +breezeway/SM +breezily +breeziness/SM +breezy/RPT +Bremen/M +bremsstrahlung/M +Brena/M +Brenda/M +Brendan/M +Brenden/M +Brendin/M +Brendis/M +Brendon/M +Bren/M +Brenna/M +Brennan/M +Brennen/M +Brenner/M +Brenn/RNM +Brent/M +Brenton/M +Bresenham/M +Brest/M +brethren +Bret/M +Breton +Brett/M +breve/SM +brevet/MS +brevetted +brevetting +breviary/SM +brevity/MS +brew/DRGZS +brewer/M +Brewer/M +brewery/MS +brewing/M +brewpub/S +Brew/RM +Brewster/M +Brezhnev/M +Bria/M +Briana/M +Brian/M +Brianna/M +Brianne/M +Briano/M +Briant/M +briar's +bribe/GZDSR +briber/M +bribery/MS +Brice/M +brickbat/SM +brick/GRDSM +bricklayer/MS +bricklaying/SM +brickmason/S +brickwork/SM +brickyard/M +bridal/S +Bridalveil/M +bridegroom/MS +Bride/M +bride/MS +bridesmaid/MS +Bridewell/M +bridgeable/U +bridged/U +bridgehead/MS +Bridgeport/M +Bridger/M +Bridges +bridge/SDGM +Bridget/M +Bridgetown/M +Bridgette/M +Bridgett/M +Bridgewater/M +bridgework/MS +bridging/M +Bridgman/M +Bridie/M +bridled/U +bridle/SDGM +bridleway/S +briefcase/SM +briefed/C +briefing/M +briefness/MS +briefs/C +brief/YRDJPGTS +Brien/M +Brier/M +brier/MS +Brie/RSM +Brietta/M +brigade/GDSM +brigadier/MS +Brigadoon +brigandage/MS +brigand/MS +brigantine/MS +Brigg/MS +Brigham/M +brightener/M +brighten/RDZG +bright/GXTPSYNR +Bright/M +brightness/SM +Brighton/M +Brigida/M +Brigid/M +Brigit/M +Brigitta/M +Brigitte/M +Brig/M +brig/SM +brilliance/MS +brilliancy/MS +brilliantine/MS +brilliantness/M +brilliant/PSY +Brillo +Brillouin/M +brimful +brimless +brimmed +brimming +brim/SM +brimstone/MS +Brina/M +Brindisi/M +brindle/DSM +brine/GMDSR +briner/M +Briney/M +bringer/M +bring/RGZS +brininess/MS +Brinkley/M +brinkmanship/SM +brink/MS +Brinna/M +Brinn/M +Briny/M +briny/PTSR +brioche/SM +Brion/M +briquet's +briquette/MGSD +Brisbane/M +brisket/SM +briskness/MS +brisk/YRDPGTS +bristle/DSGM +bristly/TR +Bristol/M +bristol/S +Britain/M +Brita/M +Britannia/M +Britannic +Britannica/M +britches +Briticism/MS +Britisher/M +Britishly/M +British/RYZ +Brit/MS +Britney/M +Britni/M +Briton/MS +Britta/M +Brittaney/M +Brittani/M +Brittan/M +Brittany/MS +Britte/M +Britten/M +Britteny/M +brittleness/MS +brittle/YTPDRSG +Britt/MN +Brittne/M +Brittney/M +Brittni/M +Brnaba/M +Brnaby/M +Brno/M +broach/DRSG +broacher/M +broadband +broadcaster/M +broadcast/RSGZJ +broadcasts/A +broadcloth/M +broadcloths +broaden/JGRDZ +broadleaved +broadloom/SM +broadminded/P +broadness/S +broadsheet/MS +broadside/SDGM +broadsword/MS +broad/TXSYRNP +Broadway/SM +Brobdingnagian +Brobdingnag/M +brocade/DSGM +broccoli/MS +brochette/SM +brochure/SM +Brockie/M +Brock/M +Brocky/M +Broddie/M +Broddy/M +Broderick/M +Broderic/M +Brodie/M +Brod/M +Brody/M +brogan/MS +Broglie/M +brogue/MS +broiler/M +broil/RDSGZ +brokenhearted/Y +brokenness/MS +broken/YP +brokerage/MS +broker/DMG +broke/RGZ +Brok/M +bromide/MS +bromidic +bromine/MS +bronchial +bronchi/M +bronchiolar +bronchiole/MS +bronchiolitis +bronchitic/S +bronchitis/MS +broncho's +bronchus/M +broncobuster/SM +bronco/SM +bronc/S +Bron/M +Bronnie/M +Bronny/M +Bronson/M +Bronte +brontosaur/SM +brontosaurus/SM +Bronx/M +bronzed/M +bronze/SRDGM +bronzing/M +brooch/MS +brooder/M +broodiness/M +brooding/Y +broodmare/SM +brood/SMRDGZ +broody/PTR +Brookdale/M +Brooke/M +Brookfield/M +Brookhaven/M +brooklet/MS +Brooklyn/M +Brookmont/M +brook/SGDM +brookside +Brook/SM +broom/SMDG +broomstick/MS +Bros +Brose/M +bro/SH +bros/S +brothel/MS +brother/DYMG +brotherhood/SM +brotherliness/MS +brotherly/P +broths +broth/ZMR +brougham/MS +brought +brouhaha/MS +browbeat/NSG +brow/MS +Brownell/M +Browne/M +Brownian/M +Brownie/MS +brownie/MTRS +browning/M +Browning/M +brownish +Brown/MG +brownness/MS +brownout/MS +brownstone/MS +Brownsville/M +brown/YRDMSJGTP +browse +browser/M +brows/SRDGZ +brr +Br/TMN +Brubeck/M +brucellosis/M +Bruce/M +Brucie/M +Bruckner/M +Bruegel/M +Brueghel's +bruin/MS +bruised/U +bruise/JGSRDZ +bruiser/M +Bruis/M +bruit/DSG +Brumidi/M +Brummel/M +brunch/MDSG +Brunei/M +Brunelleschi/M +brunet/S +brunette/SM +Brunhilda/M +Brunhilde/M +Bruno/M +Brunswick/M +brunt/GSMD +brusher/M +brushfire/MS +brushlike +brush/MSRDG +brushoff/S +brushwood/SM +brushwork/MS +brushy/R +brusqueness/MS +brusque/PYTR +Brussels +brutality/SM +brutalization/SM +brutalized/U +brutalizes/AU +brutalize/SDG +brutal/Y +brute/DSRGM +brutishness/SM +brutish/YP +Brutus/M +Bruxelles/M +Bryana/M +Bryan/M +Bryant/M +Bryanty/M +Bryce/M +Bryna/M +Bryn/M +Brynna/M +Brynne/M +Brynner/M +Brynn/RM +Bryon/M +Brzezinski/M +B's +BS +BSA +BSD +Btu +BTU +BTW +bu +bubblegum/S +bubbler/M +bubble/RSDGM +bubbly/TRS +Buber/M +bub/MS +buboes +bubo/M +bubonic +buccaneer/GMDS +Buchanan/M +Bucharest/M +Buchenwald/M +Buchwald/M +buckaroo/SM +buckboard/SM +bucker/M +bucketful/MS +bucket/SGMD +buckeye/SM +buck/GSDRM +buckhorn/M +Buckie/M +Buckingham/M +buckled/U +buckler/MDG +buckle/RSDGMZ +buckles/U +Buckley/M +buckling's +buckling/U +Buck/M +Buckner/M +buckram/GSDM +bucksaw/SM +buckshot/MS +buckskin/SM +buckteeth +bucktooth/DM +buckwheat/SM +Bucky/M +bucolically +bucolic/S +Budapest/M +budded +Buddha/MS +Buddhism/SM +Buddhist/SM +Buddie/M +budding/S +Budd/M +buddy/GSDM +Buddy/M +budge/GDS +budgerigar/MS +budgetary +budgeter/M +budget/GMRDZS +budgie/MS +budging/U +Bud/M +bud/MS +Budweiser/MS +Buehring/M +Buena/M +buffaloes +Buffalo/M +buffalo/MDG +buff/ASGD +buffered/U +bufferer/M +buffer/RDMSGZ +buffet/GMDJS +bufflehead/M +buffoonery/MS +buffoonish +buffoon/SM +buff's +Buffy/M +Buford/M +bugaboo/SM +Bugatti/M +bugbear/SM +bug/CS +bugeyed +bugged/C +buggered +buggering +bugger/SCM +buggery/M +bugging/C +buggy/RSMT +bugle/GMDSRZ +bugler/M +bug's +Buick/M +builder/SM +building/SM +build/SAG +buildup/MS +built/AUI +Buiron/M +Bujumbura/M +Bukhara/M +Bukharin/M +Bulawayo/M +Bulba/M +bulb/DMGS +bulblet +bulbous +Bulfinch/M +Bulganin/M +Bulgaria/M +Bulgarian/S +bulge/DSGM +bulgy/RT +bulimarexia/S +bulimia/MS +bulimic/S +bulk/GDRMS +bulkhead/SDM +bulkiness/SM +bulky/RPT +bulldogged +bulldogger +bulldogging +bulldog/SM +bulldoze/GRSDZ +bulldozer/M +bullet/GMDS +bulletin/SGMD +bulletproof/SGD +bullfighter/M +bullfighting/M +bullfight/SJGZMR +bullfinch/MS +bullfrog/SM +bullhead/DMS +bullheadedness/SM +bullheaded/YP +bullhide +bullhorn/SM +bullied/M +bullion/SM +bullishness/SM +bullish/PY +bull/MDGS +Bullock/M +bullock/MS +bullpen/MS +bullring/SM +bullseye +bullshit/MS +bullshitted +bullshitter/S +bullshitting +bullwhackers +Bullwinkle/M +bullyboy/MS +bullying/M +bully/TRSDGM +bulrush/SM +Bultmann/M +bulwark/GMDS +bumblebee/MS +bumble/JGZRSD +bumbler/M +bumbling/Y +Bumbry/M +bummed/M +bummer/MS +bummest +bumming/M +bumper/DMG +bump/GZDRS +bumpiness/MS +bumpkin/MS +Bumppo/M +bumptiousness/SM +bumptious/PY +bumpy/PRT +bum/SM +Bunche/M +bunch/MSDG +bunchy/RT +buncombe's +bunco's +Bundestag/M +bundled/U +bundle/GMRSD +bundler/M +Bundy/M +bungalow/MS +bungee/SM +bung/GDMS +bunghole/MS +bungle/GZRSD +bungler/M +bungling/Y +Bunin/M +bunion/SM +bunk/CSGDR +Bunker/M +bunker's/C +bunker/SDMG +bunkhouse/SM +bunkmate/MS +bunko's +bunk's +bunkum/SM +Bunnie/M +Bunni/M +Bunny/M +bunny/SM +Bunsen/SM +bun/SM +bunt/GJZDRS +bunting/M +Buñuel/M +Bunyan/M +buoyancy/MS +buoyant/Y +buoy/SMDG +Burbank/M +burbler/M +burble/RSDG +burbs +Burch/M +burden's +burdensomeness/M +burdensome/PY +burden/UGDS +burdock/SM +bureaucracy/MS +bureaucratically +bureaucratic/U +bureaucratization/MS +bureaucratize/SDG +bureaucrat/MS +bureau/MS +burgeon/GDS +burger/M +Burger/M +Burgess/M +burgess/MS +burgher/M +burgh/MRZ +burghs +burglarize/GDS +burglarproof/DGS +burglar/SM +burglary/MS +burgle/SDG +burgomaster/SM +Burgoyne/M +Burg/RM +burg/SZRM +Burgundian/S +Burgundy/MS +burgundy/S +burial/ASM +buried/U +burier/M +Burke/M +Burk/SM +burlap/MS +burler/M +burlesquer/M +burlesque/SRDMYG +burley/M +Burlie/M +burliness/SM +Burlingame/M +Burlington/M +Burl/M +burl/SMDRG +burly/PRT +Burma/M +Burmese +bur/MYS +burnable/S +Burnaby/M +Burnard/M +burned/U +Burne/MS +burner/M +Burnett/M +burn/GZSDRBJ +burning/Y +burnisher/M +burnish/GDRSZ +burnoose/MS +burnout/MS +Burns +Burnside/MS +burnt/YP +burp/SGMD +burr/GSDRM +Burris/M +burrito/S +Burr/M +burro/SM +Burroughs/M +burrower/M +burrow/GRDMZS +bursae +bursa/M +Bursa/M +bursar/MS +bursary/MS +bursitis/MS +burster/M +burst/SRG +Burtie/M +Burt/M +Burton/M +Burty/M +Burundian/S +Burundi/M +bury/ASDG +busboy/MS +busby/SM +Busch/M +buses/A +busgirl/S +bus/GMDSJ +bushel/MDJSG +Bushido/M +bushiness/MS +bushing/M +bush/JMDSRG +bushland +Bush/M +bushman/M +bushmaster/SM +bushmen +Bushnell/M +bushwhacker/M +bushwhacking/M +bushwhack/RDGSZ +bushy/PTR +busily +businesslike +businessman/M +businessmen +business/MS +businesspeople +businessperson/S +businesswoman/M +businesswomen +busker/M +busk/GRM +buskin/SM +bus's/A +buss/D +bustard/MS +buster/M +bustle/GSD +bustling/Y +bust/MSDRGZ +busty/RT +busybody/MS +busy/DSRPTG +busyness/MS +busywork/SM +but/ACS +butane/MS +butcherer/M +butcher/MDRYG +butchery/MS +Butch/M +butch/RSZ +butene/M +Butler/M +butler/SDMG +butted/A +butte/MS +butterball/MS +buttercup/SM +buttered/U +butterfat/MS +Butterfield/M +butterfingered +butterfingers/M +butterfly/MGSD +buttermilk/MS +butternut/MS +butter/RDMGZ +butterscotch/SM +buttery/TRS +butting/M +buttock/SGMD +buttoner/M +buttonhole/GMRSD +buttonholer/M +button's +button/SUDG +buttonweed +buttonwood/SM +buttress/MSDG +butt/SGZMDR +butyl/M +butyrate/M +buxomness/M +buxom/TPYR +Buxtehude/M +buyback/S +buyer/M +buyout/S +buy/ZGRS +buzzard/MS +buzz/DSRMGZ +buzzer/M +buzzword/SM +buzzy +bx +bxs +byelaw's +Byelorussia's +bye/MZS +Byers/M +bygone/S +bylaw/SM +byliner/M +byline/RSDGM +BYOB +bypass/GSDM +bypath/M +bypaths +byplay/S +byproduct/SM +Byram/M +Byran/M +Byrann/M +Byrd/M +byre/SM +Byrle/M +Byrne/M +byroad/MS +Byrom/M +Byronic +Byronism/M +Byron/M +bystander/SM +byte/SM +byway/SM +byword/SM +byzantine +Byzantine/S +Byzantium/M +by/ZR +C +ca +CA +cabala/MS +caballed +caballero/SM +caballing +cabal/SM +cabana/MS +cabaret/SM +cabbage/MGSD +cabbed +cabbing +cabby's +cabdriver/SM +caber/M +Cabernet/M +cabinetmaker/SM +cabinetmaking/MS +cabinet/MS +cabinetry/SM +cabinetwork/MS +cabin/GDMS +cablecast/SG +cable/GMDS +cablegram/SM +cabochon/MS +caboodle/SM +caboose/MS +Cabot/M +Cabrera/M +Cabrini/M +cabriolet/MS +cab/SMR +cabstand/MS +cacao/SM +cacciatore +cache/DSRGM +cachepot/MS +cachet/MDGS +Cacilia/M +Cacilie/M +cackler/M +cackle/RSDGZ +cackly +CACM +cacophonist +cacophonous +cacophony/SM +cacti +cactus/M +CAD +cadaverous/Y +cadaver/SM +caddishness/SM +caddish/PY +Caddric/M +caddy/GSDM +cadence/CSM +cadenced +cadencing +cadent/C +cadenza/MS +cadet/SM +Cadette/S +cadge/DSRGZ +cadger/M +Cadillac/MS +Cadiz/M +Cad/M +cadmium/MS +cadre/SM +cad/SM +caducei +caduceus/M +Caedmon/M +Caesar/MS +caesura/SM +café/MS +cafeteria/SM +caffeine/SM +caftan/SM +caged/U +Cage/M +cage/MZGDRS +cager/M +cagey/P +cagier +cagiest +cagily +caginess/MS +Cagney/M +Cahokia/M +cahoot/MS +Cahra/M +CAI +Caiaphas/M +caiman's +Caine/M +Cain/MS +Cairistiona/M +cairn/SDM +Cairo/M +caisson/SM +caitiff/MS +Caitlin/M +Caitrin/M +cajole/LGZRSD +cajolement/MS +cajoler/M +cajolery/SM +Cajun/MS +cake/MGDS +cakewalk/SMDG +calabash/SM +calaboose/MS +Calais/M +calamari/S +calamine/GSDM +calamitousness/M +calamitous/YP +calamity/MS +cal/C +calcareousness/M +calcareous/PY +calciferous +calcification/M +calcify/XGNSD +calcimine/GMSD +calcine/SDG +calcite/SM +calcium/SM +Calcomp/M +CalComp/M +CALCOMP/M +calculability/IM +calculable/IP +calculate/AXNGDS +calculated/PY +calculatingly +calculating/U +calculation/AM +calculative +calculator/SM +calculi +calculus/M +Calcutta/M +caldera/SM +Calder/M +Calderon/M +caldron's +Caldwell/M +Caleb/M +Caledonia/M +Cale/M +calendar/MDGS +calender/MDGS +calf/M +calfskin/SM +Calgary/M +Calhoun/M +Caliban/M +caliber/SM +calibrated/U +calibrater's +calibrate/XNGSD +calibrating/A +calibration/M +calibrator/MS +calicoes +calico/M +Calida/M +Calif/M +California/M +Californian/MS +californium/SM +calif's +Caligula/M +Cali/M +caliper/SDMG +caliphate/SM +caliph/M +caliphs +calisthenic/S +calisthenics/M +Callaghan/M +call/AGRDBS +Callahan/M +calla/MS +Calla/MS +Callao/M +callback/S +Callean/M +called/U +callee/M +caller/MS +Calley/M +Callida/M +Callie/M +calligrapher/M +calligraphic +calligraphist/MS +calligraph/RZ +calligraphy/MS +Calli/M +calling/SM +Calliope/M +calliope/SM +callisthenics's +Callisto/M +callosity/MS +callousness/SM +callous/PGSDY +callowness/MS +callow/RTSP +callus/SDMG +Cally/M +calming/Y +calmness/MS +calm/PGTYDRS +Cal/MY +Caloocan/M +caloric/S +calorie/SM +calorific +calorimeter/MS +calorimetric +calorimetry/M +Caltech/M +Calumet/M +calumet/MS +calumniate/NGSDX +calumniation/M +calumniator/SM +calumnious +calumny/MS +calvary/M +Calvary/M +calve/GDS +Calvert/M +calves/M +Calvinism/MS +Calvinistic +Calvinist/MS +Calvin/M +Calv/M +calyces's +Calypso/M +calypso/SM +calyx/MS +Ca/M +CAM +Camacho/M +Camala/M +camaraderie/SM +camber/DMSG +cambial +cambium/SM +Cambodia/M +Cambodian/S +Cambrian/S +cambric/MS +Cambridge/M +camcorder/S +Camden/M +camelhair's +Camella/M +Camellia/M +camellia/MS +Camel/M +Camelopardalis/M +Camelot/M +camel/SM +Camembert/MS +cameo/GSDM +camerae +cameraman/M +cameramen +camera/MS +camerawoman +camerawomen +Cameron/M +Cameroonian/S +Cameroon/SM +came/SN +Camey/M +Camila/M +Camile/M +Camilla/M +Camille/M +Cami/M +Camino/M +camion/M +camisole/MS +Cam/M +cammed +Cammie/M +Cammi/M +cam/MS +Cammy/M +Camoens/M +camomile's +camouflage/DRSGZM +camouflager/M +campaigner/M +campaign/ZMRDSG +campanile/SM +campanological +campanologist/SM +campanology/MS +Campbell/M +Campbellsport/M +camper/SM +campesinos +campest +campfire/SM +campground/MS +camphor/MS +Campinas/M +camping/S +Campos +camp's +camp/SCGD +campsite/MS +campus/GSDM +campy/RT +Camry/M +camshaft/SM +Camus/M +Canaanite/SM +Canaan/M +Canada/M +Canadianism/SM +Canadian/S +Canad/M +Canaletto/M +canalization/MS +canalize/GSD +canal/SGMD +canapé/S +canard/MS +Canaries +canary/SM +canasta/SM +Canaveral/M +Canberra/M +cancan/SM +cancelate/D +canceled/U +canceler/M +cancellation/MS +cancel/RDZGS +cancer/MS +Cancer/MS +cancerous/Y +Cancun/M +Candace/M +candelabra/S +candelabrum/M +Candice/M +candidacy/MS +Candida/M +candidate/SM +candidature/S +Candide/M +candidly/U +candidness/SM +candid/TRYPS +Candie/M +Candi/SM +candle/GMZRSD +candlelight/SMR +candlelit +candlepower/SM +candler/M +candlestick/SM +Candlewick/M +candlewick/MS +candor/MS +Candra/M +candy/GSDM +Candy/M +canebrake/SM +caner/M +cane/SM +canine/S +caning/M +Canis/M +canister/SGMD +cankerous +canker/SDMG +Can/M +can/MDRSZGJ +cannabis/MS +canned +cannelloni +canner/SM +cannery/MS +Cannes +cannibalism/MS +cannibalistic +cannibalization/SM +cannibalize/GSD +cannibal/SM +cannily/U +canninesses +canniness/UM +canning/M +cannister/SM +cannonade/SDGM +cannonball/SGDM +Cannon/M +cannon/SDMG +cannot +canny/RPUT +canoe/DSGM +canoeist/SM +Canoga/M +canonic +canonicalization +canonicalize/GSD +canonical/SY +canonist/M +canonization/MS +canonized/U +canonize/SDG +canon/SM +Canopus/M +canopy/GSDM +canst +can't +cantabile/S +Cantabrigian +cantaloupe/MS +cantankerousness/SM +cantankerous/PY +cantata/SM +cant/CZGSRD +canted/IA +canteen/MS +Canterbury/M +canter/CM +cantered +cantering +canticle/SM +cantilever/SDMG +canto/MS +cantonal +Cantonese/M +Canton/M +cantonment/SM +canton/MGSLD +Cantor/M +cantor/MS +Cantrell/M +cant's +cants/A +Cantu/M +Canute/M +canvasback/MS +canvas/RSDMG +canvasser/M +canvass/RSDZG +canyon/MS +CAP +capability/ISM +capableness/IM +capable/PI +capabler +capablest +capably/I +capaciousness/MS +capacious/PY +capacitance/SM +capacitate/V +capacitive/Y +capacitor/MS +capacity/IMS +caparison/SDMG +Capek/M +Capella/M +caper/GDM +capeskin/SM +cape/SM +Capet/M +Capetown/M +Caph/M +capillarity/MS +capillary/S +Capistrano/M +capitalism/SM +capitalistic +capitalistically +capitalist/SM +capitalization/SMA +capitalized/AU +capitalizer/M +capitalize/RSDGZ +capitalizes/A +capital/SMY +capita/M +Capitan/M +capitation/CSM +Capitoline/M +Capitol/MS +capitol/SM +capitulate/AXNGSD +capitulation/MA +caplet/S +cap/MDRSZB +Capone/M +capon/SM +capo/SM +Capote/M +capped/UA +capping/M +cappuccino/MS +Cappy/M +Capra/M +Caprice/M +caprice/MS +capriciousness/MS +capricious/PY +Capricorn/MS +Capri/M +caps/AU +capsicum/MS +capsize/SDG +capstan/MS +capstone/MS +capsular +capsule/MGSD +capsulize/GSD +captaincy/MS +captain/SGDM +caption/GSDRM +captiousness/SM +captious/PY +captivate/XGNSD +captivation/M +captivator/SM +captive/MS +captivity/SM +Capt/M +captor/SM +capture/AGSD +capturer/MS +capt/V +Capulet/M +Caputo/M +Caracalla/M +Caracas/M +caracul's +carafe/SM +Caralie/M +Cara/M +caramelize/SDG +caramel/MS +carapace/SM +carapaxes +carat/SM +Caravaggio/M +caravan/DRMGS +caravaner/M +caravansary/MS +caravanserai's +caravel/MS +caraway/MS +carbide/MS +carbine/MS +carbohydrate/MS +carbolic +Carboloy/M +carbonaceous +carbonate/SDXMNG +carbonation/M +Carbondale/M +Carbone/MS +carbonic +carboniferous +Carboniferous +carbonization/SAM +carbonizer/AS +carbonizer's +carbonizes/A +carbonize/ZGRSD +carbon/MS +carbonyl/M +carborundum +Carborundum/MS +carboy/MS +carbuncle/SDM +carbuncular +carburetor/MS +carburetter/S +carburettor/SM +carcase/MS +carcass/SM +Carce/M +carcinogenic +carcinogenicity/MS +carcinogen/SM +carcinoma/SM +cardamom/MS +cardboard/MS +card/EDRSG +Cardenas/M +carder/MS +carder's/E +cardholders +cardiac/S +Cardiff/M +cardigan/SM +cardinality/SM +cardinal/SYM +carding/M +Cardin/M +Cardiod/M +cardiogram/MS +cardiograph/M +cardiographs +cardioid/M +cardiologist/SM +cardiology/MS +cardiomegaly/M +cardiopulmonary +cardiovascular +card's +cardsharp/ZSMR +CARE +cared/U +careen/DSG +careerism/M +careerist/MS +career/SGRDM +carefree +carefuller +carefullest +carefulness/MS +careful/PY +caregiver/S +carelessness/MS +careless/YP +Care/M +Carena/M +Caren/M +carer/M +care/S +Caresa/M +Caressa/M +Caresse/M +caresser/M +caressing/Y +caressive/Y +caress/SRDMVG +caretaker/SM +caret/SM +careworn +Carey/M +carfare/MS +cargoes +cargo/M +carhopped +carhopping +carhop/SM +Caria/M +Caribbean/S +Carib/M +caribou/MS +caricature/GMSD +caricaturisation +caricaturist/MS +caricaturization +Carie/M +caries/M +carillonned +carillonning +carillon/SM +Caril/M +Carilyn/M +Cari/M +Carina/M +Carine/M +caring/U +Carin/M +Cariotta/M +carious +Carissa/M +Carita/M +Caritta/M +carjack/GSJDRZ +Carla/M +Carlee/M +Carleen/M +Carlene/M +Carlen/M +Carletonian/M +Carleton/M +Carley/M +Carlie/M +Carlina/M +Carline/M +Carling/M +Carlin/M +Carlita/M +Carl/MNG +carload/MSG +Carlo/SM +Carlota/M +Carlotta/M +Carlsbad/M +Carlson/M +Carlton/M +Carlye/M +Carlyle/M +Carly/M +Carlyn/M +Carlynne/M +Carlynn/M +Carma/M +Carmela/M +Carmelia/M +Carmelina/M +Carmelita/M +Carmella/M +Carmelle/M +Carmel/M +Carmelo/M +Carmencita/M +Carmen/M +Carmichael/M +Carmina/M +Carmine/M +carmine/MS +Carmita/M +Car/MNY +Carmon/M +carnage/MS +carnality/SM +carnal/Y +Carnap/M +carnation/IMS +Carnegie/M +carnelian/SM +Carney/M +carney's +carnival/MS +carnivore/SM +carnivorousness/MS +carnivorous/YP +Carnot/M +Carny/M +carny/SDG +carob/SM +Carola/M +Carolan/M +Carolann/M +Carolee/M +Carole/M +caroler/M +Carolina/MS +Caroline/M +Carolingian +Carolinian/S +Carolin/M +Caroljean/M +Carol/M +carol/SGZMRD +Carolus/M +Carolyne/M +Carolyn/M +Carolynn/M +Caro/M +carom/GSMD +Caron/M +carotene/MS +carotid/MS +carousal/MS +carousel/MS +carouser/M +carouse/SRDZG +carpal/SM +Carpathian/MS +carpel/SM +carpenter/DSMG +carpentering/M +Carpenter/M +carpentry/MS +carper/M +carpetbagged +carpetbagger/MS +carpetbagging +carpetbag/MS +carpeting/M +carpet/MDJGS +carpi/M +carping/Y +carp/MDRSGZ +carpool/DGS +carport/MS +carpus/M +carrageen/M +Carree/M +carrel/SM +carriage/SM +carriageway/SM +Carrie/M +carrier/M +Carrier/M +Carrillo/M +Carri/M +carrion/SM +Carrissa/M +Carr/M +Carroll/M +Carrol/M +carrot/MS +carroty/RT +carrousel's +carryall/MS +Carry/MR +carryout/S +carryover/S +carry/RSDZG +carsickness/SM +carsick/P +Carson/M +cartage/MS +cartel/SM +carte/M +carter/M +Carter/M +Cartesian +Carthage/M +Carthaginian/S +carthorse/MS +Cartier/M +cartilage/MS +cartilaginous +cartload/MS +cart/MDRGSZ +Cart/MR +cartographer/MS +cartographic +cartography/MS +carton/GSDM +cartoon/GSDM +cartoonist/MS +cartridge/SM +cartwheel/MRDGS +Cartwright/M +Carty/RM +Caruso/M +carve/DSRJGZ +carven +carver/M +Carver/M +carving/M +caryatid/MS +Caryl/M +Cary/M +Caryn/M +car/ZGSMDR +casaba/SM +Casablanca/M +Casals/M +Casandra/M +Casanova/SM +Casar/M +casbah/M +cascade/MSDG +Cascades/M +cascara/MS +casebook/SM +case/DSJMGL +cased/U +caseharden/SGD +casein/SM +caseload/MS +Case/M +casement/SM +caseworker/M +casework/ZMRS +Casey/M +cashbook/SM +cashew/MS +cash/GZMDSR +cashier/SDMG +cashless +Cash/M +cashmere/MS +Casie/M +Casi/M +casing/M +casino/MS +casket/SGMD +cask/GSDM +Caspar/M +Casper/M +Caspian +Cass +Cassandra/SM +Cassandre/M +Cassandry/M +Cassatt/M +Cassaundra/M +cassava/MS +casserole/MGSD +cassette/SM +Cassey/M +cassia/MS +Cassie/M +Cassi/M +cassino's +Cassiopeia/M +Cassite/M +Cassius/M +cassock/SDM +Cassondra/M +cassowary/SM +Cassy/M +Castaneda/M +castanet/SM +castaway/SM +castellated +caste/MHS +caster/M +cast/GZSJMDR +castigate/XGNSD +castigation/M +castigator/SM +Castile's +Castillo/M +casting/M +castle/GMSD +castoff/S +Castor/M +castor's +castrate/DSNGX +castration/M +Castries/M +Castro/M +casts/A +casualness/SM +casual/SYP +casualty/SM +casuistic +casuist/MS +casuistry/SM +cataclysmal +cataclysmic +cataclysm/MS +catacomb/MS +catafalque/SM +Catalan/MS +catalepsy/MS +cataleptic/S +Catalina/M +cataloger/M +catalog/SDRMZG +Catalonia/M +catalpa/SM +catalysis/M +catalyst/SM +catalytic +catalytically +catalyze/DSG +catamaran/MS +catapult/MGSD +cataract/MS +Catarina/M +catarrh/M +catarrhs +catastrophe/SM +catastrophic +catastrophically +catatonia/MS +catatonic/S +Catawba/M +catbird/MS +catboat/SM +catcall/SMDG +catchable/U +catchall/MS +catch/BRSJLGZ +catcher/M +catchment/SM +catchpenny/S +catchphrase/S +catchup/MS +catchword/MS +catchy/TR +catechism/MS +catechist/SM +catechize/SDG +catecholamine/MS +categoric +categorical/Y +categorization/MS +categorized/AU +categorize/RSDGZ +category/MS +Cate/M +catenate/NF +catenation/MF +catercorner +caterer/M +cater/GRDZ +Caterina/M +catering/M +Caterpillar +caterpillar/SM +caterwaul/DSG +catfish/MS +catgut/SM +Catha/M +Catharina/M +Catharine/M +catharses +catharsis/M +cathartic/S +Cathay/M +cathedral/SM +Cathee/M +Catherina/M +Catherine/M +Catherin/M +Cather/M +Cathe/RM +catheterize/GSD +catheter/SM +Cathie/M +Cathi/M +Cathleen/M +Cathlene/M +cathode/MS +cathodic +catholicism +Catholicism/SM +catholicity/MS +catholic/MS +Catholic/S +Cathrine/M +Cathrin/M +Cathryn/M +Cathyleen/M +Cathy/M +Catie/M +Catiline/M +Cati/M +Catina/M +cationic +cation/MS +catkin/SM +Catlaina/M +Catlee/M +catlike +Catlin/M +catnapped +catnapping +catnap/SM +catnip/MS +Cato/M +Catrina/M +Catriona/M +Catskill/SM +cat/SMRZ +catsup's +cattail/SM +catted +cattery/M +cattily +cattiness/SM +catting +cattle/M +cattleman/M +cattlemen +Catt/M +catty/PRST +Catullus/M +CATV +catwalk/MS +Caty/M +Caucasian/S +Caucasoid/S +Caucasus/M +Cauchy/M +caucus/SDMG +caudal/Y +caught/U +cauldron/MS +cauliflower/MS +caulker/M +caulk/JSGZRD +causality/SM +causal/YS +causate/XVN +causation/M +causative/SY +cause/DSRGMZ +caused/U +causeless +causerie/MS +causer/M +causeway/SGDM +caustically +causticity/MS +caustic/YS +cauterization/SM +cauterized/U +cauterize/GSD +cautionary +cautioner/M +caution/GJDRMSZ +cautiousness's/I +cautiousness/SM +cautious/PIY +cavalcade/MS +cavalierness/M +cavalier/SGYDP +cavalryman/M +cavalrymen +cavalry/MS +caveat/SM +caveatted +caveatting +cave/GFRSD +caveman/M +cavemen +Cavendish/M +caver/M +cavern/GSDM +cavernous/Y +cave's +caviar/MS +caviler/M +cavil/SJRDGZ +caving/MS +cavity/MFS +cavort/SDG +Cavour/M +caw/SMDG +Caxton/M +Caye/M +Cayenne/M +cayenne/SM +Cayla/M +Cayman/M +cayman/SM +cay's +cay/SC +Cayuga/M +cayuse/SM +Caz/M +Cazzie/M +c/B +CB +CBC +Cb/M +CBS +cc +Cchaddie/M +CCTV +CCU +CD +CDC/M +Cd/M +CDT +Ce +cease/DSCG +ceasefire/S +ceaselessness/SM +ceaseless/YP +ceasing/U +Ceausescu/M +Cebuano/M +Cebu/M +ceca +cecal +Cecelia/M +Cece/M +Cecile/M +Ceciley/M +Cecilia/M +Cecilio/M +Cecilius/M +Cecilla/M +Cecil/M +Cecily/M +cecum/M +cedar/SM +ceded/A +cede/FRSDG +ceder's/F +ceder/SM +cedes/A +cedilla/SM +ceding/A +Ced/M +Cedric/M +ceilidh/M +ceiling/MDS +Ceil/M +celandine/MS +Celanese/M +Celebes's +celebrant/MS +celebratedness/M +celebrated/P +celebrate/XSDGN +celebration/M +celebrator/MS +celebratory +celebrity/MS +Cele/M +Celene/M +celerity/SM +celery/SM +Celesta/M +celesta/SM +Celeste/M +celestial/YS +Celestia/M +Celestina/M +Celestine/M +Celestyna/M +Celestyn/M +Celia/M +celibacy/MS +celibate/SM +Celie/M +Celina/M +Celinda/M +Celine/M +Celinka/M +Celisse/M +Celka/M +cellarer/M +cellar/RDMGS +Celle/M +cell/GMDS +Cellini/M +cellist/SM +Cello/M +cello/MS +cellophane/SM +cellphone/S +cellular/SY +cellulite/S +celluloid/SM +cellulose/SM +Celsius/S +Celtic/SM +Celt/MS +cementa +cementer/M +cementum/SM +cement/ZGMRDS +cemetery/MS +cenobite/MS +cenobitic +cenotaph/M +cenotaphs +Cenozoic +censer/MS +censored/U +censor/GDMS +censorial +censoriousness/MS +censorious/YP +censorship/MS +censure/BRSDZMG +censurer/M +census/SDMG +centaur/SM +Centaurus/M +centavo/SM +centenarian/MS +centenary/S +centennial/YS +center/AC +centerboard/SM +centered +centerer/S +centerfold/S +centering/SM +centerline/SM +centerpiece/SM +center's +Centigrade +centigrade/S +centigram/SM +centiliter/MS +centime/SM +centimeter/SM +centipede/MS +Centralia/M +centralism/M +centralist/M +centrality/MS +centralization/CAMS +centralize/CGSD +centralizer/SM +centralizes/A +central/STRY +centrefold's +Centrex +CENTREX/M +centric/F +centrifugal/SY +centrifugate/NM +centrifugation/M +centrifuge/GMSD +centripetal/Y +centrist/MS +centroid/MS +cent/SZMR +centurion/MS +century/MS +CEO +cephalic/S +Cepheid +Cepheus/M +ceramicist/S +ceramic/MS +ceramist/MS +cerate/MD +Cerberus/M +cereal/MS +cerebellar +cerebellum/MS +cerebra +cerebral/SY +cerebrate/XSDGN +cerebration/M +cerebrum/MS +cerement/SM +ceremonial/YSP +ceremoniousness/MS +ceremoniousness's/U +ceremonious/YUP +ceremony/MS +Cerenkov/M +Ceres/M +Cerf/M +cerise/SM +cerium/MS +cermet/SM +CERN/M +certainer +certainest +certainty/UMS +certain/UY +cert/FS +certifiable +certifiably +certificate/SDGM +certification/AMC +certified/U +certifier/M +certify/DRSZGNX +certiorari/M +certitude/ISM +cerulean/MS +Cervantes/M +cervical +cervices/M +cervix/M +Cesarean +cesarean/S +Cesare/M +Cesar/M +Cesaro/M +cesium/MS +cessation/SM +cession/FAMSK +Cessna/M +cesspit/M +cesspool/SM +Cesya/M +cetacean/S +cetera/S +Cetus/M +Ceylonese +Ceylon/M +Cezanne/S +cf +CF +CFC +Cf/M +CFO +cg +Chablis/SM +Chaddie/M +Chadd/M +Chaddy/M +Chadian/S +Chad/M +Chadwick/M +chafe/GDSR +chafer/M +chaffer/DRG +chafferer/M +Chaffey/M +chaff/GRDMS +chaffinch/SM +Chagall/M +chagrin/DGMS +Chaim/M +chainlike +chain's +chainsaw/SGD +chain/SGUD +chairlady/M +chairlift/MS +chairman/MDGS +chairmanship/MS +chairmen +chairperson/MS +chair/SGDM +chairwoman/M +chairwomen +chaise/SM +chalcedony/MS +Chaldea/M +Chaldean/M +chalet/SM +chalice/DSM +chalkboard/SM +chalk/DSMG +chalkiness/S +chalkline +chalky/RPT +challenged/U +challenger/M +challenge/ZGSRD +challenging/Y +challis/SM +Chalmers +chamberer/M +Chamberlain/M +chamberlain/MS +chambermaid/MS +chamberpot/S +Chambers/M +chamber/SZGDRM +chambray/MS +chameleon/SM +chamfer/DMGS +chammy's +chamois/DSMG +chamomile/MS +champagne/MS +champaign/M +champ/DGSZ +champion/MDGS +championship/MS +Champlain/M +chanced/M +chance/GMRSD +chancellery/SM +chancellorship/SM +chancellor/SM +Chancellorsville/M +chancel/SM +Chance/M +chancery/SM +Chancey/M +chanciness/S +chancing/M +chancre/SM +chancy/RPT +Chandal/M +Chanda/M +chandelier/SM +Chandigarh/M +Chandler/M +chandler/MS +Chandragupta/M +Chandra/M +Chandrasekhar/M +Chandy/M +Chanel/M +Chane/M +Chaney/M +Changchun/M +changeabilities +changeability/UM +changeableness/SM +changeable/U +changeably/U +changed/U +change/GZRSD +changeless +changeling/M +changeover/SM +changer/M +changing/U +Chang/M +Changsha/M +Chan/M +Channa/M +channeler/M +channeling/M +channelization/SM +channelize/GDS +channellings +channel/MDRZSG +Channing/M +chanson/SM +Chantalle/M +Chantal/M +chanter/M +chanteuse/MS +chantey/SM +chanticleer/SM +Chantilly/M +chantry/MS +chant/SJGZMRD +chanty's +Chanukah's +Chao/M +chaos/SM +chaotic +chaotically +chaparral/MS +chapbook/SM +chapeau/MS +chapel/MS +chaperonage/MS +chaperoned/U +chaperone's +chaperon/GMDS +chaplaincy/MS +chaplain/MS +chaplet/SM +Chaplin/M +Chapman/M +chap/MS +Chappaquiddick/M +chapped +chapping +chapter/SGDM +Chara +charabanc/MS +characterful +characteristically/U +characteristic/SM +characterizable/MS +characterization/MS +characterize/DRSBZG +characterized/U +characterizer/M +characterless +character/MDSG +charade/SM +charbroil/SDG +charcoal/MGSD +Chardonnay +chardonnay/S +chard/SM +chargeableness/M +chargeable/P +charged/U +charge/EGRSDA +charger/AME +chargers +char/GS +Charil/M +charily +chariness/MS +Charin/M +charioteer/GSDM +Chariot/M +chariot/SMDG +Charis +charisma/M +charismata +charismatically +charismatic/S +Charissa/M +Charisse/M +charitablenesses +charitableness/UM +charitable/UP +charitably/U +Charita/M +Charity/M +charity/MS +charlady/M +Charla/M +charlatanism/MS +charlatanry/SM +charlatan/SM +Charlean/M +Charleen/M +Charlemagne/M +Charlena/M +Charlene/M +Charles/M +Charleston/SM +Charley/M +Charlie/M +Charline/M +Charlot/M +Charlotta/M +Charlotte/M +Charlottesville/M +Charlottetown/M +Charlton/M +Charmaine/M +Charmain/M +Charmane/M +charmer/M +Charmian/M +Charmine/M +charming/RYT +Charmin/M +Charmion/M +charmless +charm/SGMZRD +Charolais +Charo/M +Charon/M +charred +charring +charted/U +charter/AGDS +chartered/U +charterer/SM +charter's +chartist/SM +Chartres/M +chartreuse/MS +chartroom/S +chart/SJMRDGBZ +charwoman/M +charwomen +Charybdis/M +Charyl/M +chary/PTR +Chas +chase/DSRGZ +Chase/M +chaser/M +chasing/M +Chasity/M +chasm/SM +chassis/M +chastely +chasteness/SM +chasten/GSD +chaste/UTR +chastisement/SM +chastiser/M +chastise/ZGLDRS +Chastity/M +chastity/SM +chastity's/U +chasuble/SM +Chateaubriand +château/M +chateaus +châteaux +châtelaine/SM +chat/MS +Chattahoochee/M +Chattanooga/M +chatted +chattel/MS +chatterbox/MS +chatterer/M +Chatterley/M +chatter/SZGDRY +Chatterton/M +chattily +chattiness/SM +chatting +chatty/RTP +Chaucer/M +chauffeur/GSMD +Chaunce/M +Chauncey/M +Chautauqua/M +chauvinism/MS +chauvinistic +chauvinistically +chauvinist/MS +Chavez/M +chaw +Chayefsky/M +cheapen/DG +cheapish +cheapness/MS +cheapskate/MS +cheap/YRNTXSP +cheater/M +cheat/RDSGZ +Chechen/M +Chechnya/M +checkable/U +checkbook/MS +checked/UA +checkerboard/MS +checker/DMG +check/GZBSRDM +checklist/S +checkmate/MSDG +checkoff/SM +checkout/S +checkpoint/MS +checkroom/MS +check's/A +checks/A +checksummed +checksumming +checksum/SM +checkup/MS +Cheddar/MS +cheddar/S +cheekbone/SM +cheek/DMGS +cheekily +cheekiness/SM +cheeky/PRT +cheep/GMDS +cheerer/M +cheerfuller +cheerfullest +cheerfulness/MS +cheerful/YP +cheerily +cheeriness/SM +cheerio/S +Cheerios/M +cheerleader/SM +cheerlessness/SM +cheerless/PY +cheers/S +cheery/PTR +cheer/YRDGZS +cheeseburger/SM +cheesecake/SM +cheesecloth/M +cheesecloths +cheeseparing/S +cheese/SDGM +cheesiness/SM +cheesy/PRT +cheetah/M +cheetahs +Cheeto/M +Cheever/M +cheffed +cheffing +chef/SM +Chekhov/M +chelate/XDMNG +chelation/M +Chelsae/M +Chelsea/M +Chelsey/M +Chelsie/M +Chelsy/M +Chelyabinsk/M +chem +Che/M +chemic +chemical/SYM +chemiluminescence/M +chemiluminescent +chemise/SM +chemistry/SM +chemist/SM +chemotherapeutic/S +chemotherapy/SM +chemurgy/SM +Chengdu +Cheng/M +chenille/SM +Chen/M +Cheops/M +Chere/M +Cherey/M +Cherianne/M +Cherice/M +Cherida/M +Cherie/M +Cherilyn/M +Cherilynn/M +Cheri/M +Cherin/M +Cherise/M +cherisher/M +cherish/GDRS +Cherish/M +Cheriton/M +Cherlyn/M +Cher/M +Chernenko/M +Chernobyl/M +Cherokee/MS +cheroot/MS +Cherri/M +Cherrita/M +Cherry/M +cherry/SM +chert/MS +cherubic +cherubim/S +cherub/SM +chervil/MS +Cherye/M +Cheryl/M +Chery/M +Chesapeake/M +Cheshire/M +Cheslie/M +chessboard/SM +chessman/M +chessmen +chess/SM +Chesterfield/M +chesterfield/MS +Chester/M +Chesterton/M +chestful/S +chest/MRDS +chestnut/SM +Cheston/M +chesty/TR +Chet/M +Chevalier/M +chevalier/SM +Cheviot/M +cheviot/S +Chev/M +Chevrolet/M +chevron/DMS +Chevy/M +chewer/M +chew/GZSDR +chewiness/S +chewy/RTP +Cheyenne/SM +chg +chge +Chiang/M +chianti/M +Chianti/S +chiaroscuro/SM +Chiarra/M +Chiba/M +Chicagoan/SM +Chicago/M +Chicana/MS +chicane/MGDS +chicanery/MS +Chicano/MS +chichi/RTS +chickadee/SM +Chickasaw/SM +chickenfeed +chicken/GDM +chickenhearted +chickenpox/MS +Chickie/M +Chick/M +chickpea/MS +chickweed/MS +chick/XSNM +Chicky/M +chicle/MS +Chic/M +chicness/S +Chico/M +chicory/MS +chic/SYRPT +chide/GDS +chiding/Y +chiefdom/MS +chieftain/SM +chief/YRMST +chiffonier/MS +chiffon/MS +chigger/MS +chignon/MS +Chihuahua/MS +chihuahua/S +chilblain/MS +childbearing/MS +childbirth/M +childbirths +childcare/S +childes +child/GMYD +childhood/MS +childishness/SM +childish/YP +childlessness/SM +childless/P +childlikeness/M +childlike/P +childminders +childproof/GSD +childrearing +children/M +Chilean/S +Chile/MS +chile's +chilies +chili/M +chiller/M +chilliness/MS +chilling/Y +chilli's +chill/MRDJGTZPS +chillness/MS +chilly/TPRS +Chilton/M +Chi/M +chimaera's +chimaerical +Chimborazo/M +chime/DSRGMZ +Chimera/S +chimera/SM +chimeric +chimerical +chimer/M +Chimiques +chimney/SMD +chimpanzee/SM +chimp/MS +chi/MS +Chimu/M +Ch'in +China/M +Chinaman/M +Chinamen +china/MS +Chinatown/SM +chinchilla/SM +chine/MS +Chinese/M +Ching/M +chink/DMSG +chinless +Chin/M +chinned +chinner/S +chinning +chino/MS +Chinook/MS +chin/SGDM +chinstrap/S +chintz/SM +chintzy/TR +chipboard/M +Chipewyan/M +Chip/M +chipmunk/SM +chipped +Chippendale/M +chipper/DGS +Chippewa/MS +chipping/MS +chip/SM +Chiquia/M +Chiquita/M +chiral +Chirico/M +chirography/SM +chiropodist/SM +chiropody/MS +chiropractic/MS +chiropractor/SM +chirp/GDS +chirpy/RT +chirrup/DGS +chiseler/M +chisel/ZGSJMDR +Chisholm/M +Chisinau/M +chitchat/SM +chitchatted +chitchatting +chitinous +chitin/SM +chit/SM +Chittagong/M +chitterlings +chivalric +chivalrously/U +chivalrousness/MS +chivalrous/YP +chivalry/SM +chive/GMDS +chivvy/D +chivying +chlamydiae +chlamydia/S +Chloe/M +Chloette/M +Chlo/M +chloral/MS +chlorate/M +chlordane/MS +chloride/MS +chlorinated/C +chlorinates/C +chlorinate/XDSGN +chlorination/M +chlorine/MS +Chloris +chlorofluorocarbon/S +chloroform/DMSG +chlorophyll/SM +chloroplast/MS +chloroquine/M +chm +Ch/MGNRS +chockablock +chock/SGRDM +chocoholic/S +chocolate/MS +chocolaty +Choctaw/MS +choiceness/M +choice/RSMTYP +choirboy/MS +choirmaster/SM +choir/SDMG +chokeberry/M +chokecherry/SM +choke/DSRGZ +choker/M +chokes/M +choking/Y +cholera/SM +choleric +choler/SM +cholesterol/SM +choline/M +cholinesterase/M +chomp/DSG +Chomsky/M +Chongqing +choose/GZRS +chooser/M +choosiness/S +choosy/RPT +chophouse/SM +Chopin/M +chopped +chopper/SDMG +choppily +choppiness/MS +chopping +choppy/RPT +chop/S +chopstick/SM +chorale/MS +choral/SY +chordal +chordata +chordate/MS +chording/M +chord/SGMD +chorea/MS +chore/DSGNM +choreographer/M +choreographic +choreographically +choreographs +choreography/MS +choreograph/ZGDR +chorines +chorion/M +chorister/SM +choroid/S +chortler/M +chortle/ZGDRS +chorus/GDSM +chosen/U +chose/S +Chou/M +chowder/SGDM +chow/DGMS +Chretien/M +Chris/M +chrism/SM +chrissake +Chrisse/M +Chrissie/M +Chrissy/M +Christabella/M +Christabel/M +Christalle/M +Christal/M +Christa/M +Christan/M +Christchurch/M +Christean/M +Christel/M +Christendom/MS +christened/U +christening/SM +Christen/M +christen/SAGD +Christensen/M +Christenson/M +Christiana/M +Christiane/M +Christianity/SM +Christianize/GSD +Christian/MS +Christiano/M +Christiansen/M +Christians/N +Christie/SM +Christi/M +Christina/M +Christine/M +Christin/M +Christlike +Christmas/SM +Christmastide/SM +Christmastime/S +Christoffel/M +Christoffer/M +Christoforo/M +Christoper/M +Christophe/M +Christopher/M +Christoph/MR +Christophorus/M +Christos/M +Christ/SMN +Christye/M +Christyna/M +Christy's +Chrisy/M +chroma/M +chromate/M +chromatically +chromaticism/M +chromaticness/M +chromatic/PS +chromatics/M +chromatin/MS +chromatogram/MS +chromatograph +chromatographic +chromatography/M +chrome/GMSD +chromic +chromite/M +chromium/SM +chromosomal +chromosome/MS +chromosphere/M +chronically +chronicled/U +chronicler/M +chronicle/SRDMZG +chronic/S +chronograph/M +chronographs +chronography +chronological/Y +chronologist/MS +chronology/MS +chronometer/MS +chronometric +Chrotoem/M +chrysalids +chrysalis/SM +Chrysa/M +chrysanthemum/MS +Chrysler/M +Chrysostom/M +Chrystal/M +Chrystel/M +Chryste/M +chubbiness/SM +chubby/RTP +chub/MS +Chucho/M +chuck/GSDM +chuckhole/SM +chuckle/DSG +chuckling/Y +Chuck/M +chuff/DM +chugged +chugging +chug/MS +Chukchi/M +chukka/S +Chumash/M +chummed +chummily +chumminess/MS +chumming +chum/MS +chummy/SRTP +chumping/M +chump/MDGS +Chungking's +Chung/M +chunkiness/MS +chunk/SGDM +chunky/RPT +chuntering +churchgoer/SM +churchgoing/SM +Churchillian +Churchill/M +churchliness/M +churchly/P +churchman/M +church/MDSYG +churchmen +Church/MS +churchwarden/SM +churchwoman/M +churchwomen +churchyard/SM +churlishness/SM +churlish/YP +churl/SM +churner/M +churning/M +churn/SGZRDM +chute/DSGM +chutney/MS +chutzpah/M +chutzpahs +chutzpa/SM +Chuvash/M +ch/VT +chyme/SM +Ci +CIA +ciao/S +cicada/MS +cicatrice/S +cicatrix's +Cicely/M +Cicero/M +cicerone/MS +ciceroni +Ciceronian +Cicily/M +CID +cider's/C +cider/SM +Cid/M +Ciel/M +cigarette/MS +cigarillo/MS +cigar/SM +cilantro/S +cilia/M +ciliate/FDS +ciliately +cilium/M +Cilka/M +cinch/MSDG +cinchona/SM +Cincinnati/M +cincture/MGSD +Cinda/M +Cindee/M +Cindelyn/M +cinder/DMGS +Cinderella/MS +Cindie/M +Cindi/M +Cindra/M +Cindy/M +cine/M +cinema/SM +cinematic +cinematographer/MS +cinematographic +cinematography/MS +Cinerama/M +cinnabar/MS +Cinnamon/M +cinnamon/MS +ciphered/C +cipher/MSGD +ciphers/C +cir +circa +circadian +Circe/M +circler/M +circle/RSDGM +circlet/MS +circuital +circuit/GSMD +circuitousness/MS +circuitous/YP +circuitry/SM +circuity/MS +circulant +circularity/SM +circularize/GSD +circularness/M +circular/PSMY +circulate/ASDNG +circulation/MA +circulations +circulative +circulatory +circumcise/DRSXNG +circumcised/U +circumciser/M +circumcision/M +circumference/SM +circumferential/Y +circumflex/MSDG +circumlocution/MS +circumlocutory +circumnavigate/DSNGX +circumnavigational +circumnavigation/M +circumpolar +circumscribe/GSD +circumscription/SM +circumspection/SM +circumspect/Y +circumsphere +circumstance/SDMG +circumstantial/YS +circumvention/MS +circumvent/SBGD +circus/SM +Cirillo/M +Cirilo/M +Ciro/M +cirque/SM +cirrhoses +cirrhosis/M +cirrhotic/S +cirri/M +cirrus/M +Cissiee/M +Cissy/M +cistern/SM +citadel/SM +citations/I +citation/SMA +cit/DSG +cite/ISDAG +Citibank/M +citified +citizenry/SM +citizenship/MS +citizen/SYM +citrate/DM +citric +Citroen/M +citronella/MS +citron/MS +citrus/SM +city/DSM +cityscape/MS +citywide +civet/SM +civic/S +civics/M +civilian/SM +civility/IMS +civilizational/MS +civilization/AMS +civilizedness/M +civilized/PU +civilize/DRSZG +civilizer/M +civilizes/AU +civil/UY +civvies +ck/C +clack/SDG +cladding/SM +clads +clad/U +Claiborne/M +Claiborn/M +claimable +claimant/MS +claim/CDRSKAEGZ +claimed/U +claimer/KMACE +Claire/M +Clair/M +Clairol/M +clairvoyance/MS +clairvoyant/YS +clambake/MS +clamberer/M +clamber/SDRZG +clammed +clammily +clamminess/MS +clamming +clam/MS +clammy/TPR +clamorer/M +clamor/GDRMSZ +clamorousness/UM +clamorous/PUY +clampdown/SM +clamper/M +clamp/MRDGS +clamshell/MS +Clancy/M +clandestineness/M +clandestine/YP +clanger/M +clangor/MDSG +clangorous/Y +clang/SGZRD +clanking/Y +clank/SGDM +clan/MS +clannishness/SM +clannish/PY +clansman/M +clansmen +clapboard/SDGM +Clapeyron/M +clapped +clapper/GMDS +clapping +clap/S +Clapton/M +claptrap/SM +claque/MS +Clarabelle/M +Clara/M +Clarance/M +Clare/M +Claremont/M +Clarence/M +Clarendon/M +Claresta/M +Clareta/M +claret/MDGS +Claretta/M +Clarette/M +Clarey/M +Claribel/M +Clarice/M +Clarie/M +clarification/M +clarifier/M +clarify/NGXDRS +Clari/M +Clarinda/M +Clarine/M +clarinetist/SM +clarinet/SM +clarinettist's +clarion/GSMD +Clarissa/M +Clarisse/M +Clarita/M +clarities +clarity/UM +Clarke/M +Clark/M +Clarridge/M +Clary/M +clasher/M +clash/RSDG +clasped/M +clasper/M +clasp's +clasp/UGSD +classer/M +class/GRSDM +classical/Y +classicism/SM +classicist/SM +classic/S +classics/M +classifiable/U +classification/AMC +classificatory +classified/S +classifier/SM +classify/CNXASDG +classiness/SM +classless/P +classmate/MS +classroom/MS +classwork/M +classy/PRT +clatterer/M +clattering/Y +clatter/SGDR +clattery +Claudelle/M +Claudell/M +Claude/M +Claudetta/M +Claudette/M +Claudia/M +Claudian/M +Claudianus/M +Claudie/M +Claudina/M +Claudine/M +Claudio/M +Claudius/M +clausal +clause/MS +Clausen/M +Clausewitz/M +Clausius/M +Claus/NM +claustrophobia/SM +claustrophobic +clave/RM +clave's/F +clavichord/SM +clavicle/MS +clavier/MS +clawer/M +claw/GDRMS +Clayborne/M +Clayborn/M +Claybourne/M +clayey +clayier +clayiest +Clay/M +clay/MDGS +claymore/MS +Clayson/M +Clayton/M +Clea/M +cleanable +cleaner/MS +cleaning/SM +cleanliness/UMS +cleanly/PRTU +cleanness/MSU +cleanse +cleanser/M +cleans/GDRSZ +cleanup/MS +clean/UYRDPT +clearance/MS +clearcut +clearer/M +clearheadedness/M +clearheaded/PY +clearinghouse/S +clearing/MS +clearly +clearness/MS +clears +clear/UTRD +Clearwater/M +clearway/M +cleat/MDSG +cleavage/MS +cleaver/M +cleave/RSDGZ +Cleavland/M +clef/SM +cleft/MDGS +clematis/MS +clemence +Clemenceau/M +Clemence/M +clemency/ISM +Clemente/M +Clementia/M +Clementina/M +Clementine/M +Clementius/M +clement/IY +Clement/MS +clements +Clemmie/M +Clemmy/M +Clemons +Clemson/M +Clem/XM +clenches +clenching +clench/UD +Cleo/M +Cleon/M +Cleopatra/M +Clerc/M +clerestory/MS +clergyman/M +clergymen +clergy/MS +clergywoman +clergywomen +clericalism/SM +clerical/YS +cleric/SM +Clerissa/M +clerk/SGYDM +clerkship/MS +Cletis +Cletus/M +Cleveland/M +Cleve/M +cleverness/SM +clever/RYPT +Clevey/M +Clevie/M +clevis/SM +clew/DMGS +cl/GJ +Cliburn/M +clichéd +cliché/SM +clicker/M +click/GZSRDM +clientèle/SM +client/SM +cliffhanger/MS +cliffhanging +Cliff/M +Clifford/M +cliff/SM +Clifton/M +climacteric/SM +climactic +climate/MS +climatic +climatically +climatological/Y +climatologist/SM +climatology/MS +climax/MDSG +climbable/U +climb/BGZSJRD +climbdown +climbed/U +climber/M +clime/SM +Clim/M +clinch/DRSZG +clincher/M +clinching/Y +Cline/M +clinger/MS +clinging +cling/U +clingy/TR +clinical/Y +clinician/MS +clinic/MS +clinker/GMD +clink/RDGSZ +clinometer/MIS +Clint/M +Clinton/M +Clio/M +cliometrician/S +cliometric/S +clipboard/SM +clipped/U +clipper/MS +clipping/SM +clip/SM +clique/SDGM +cliquey +cliquier +cliquiest +cliquishness/SM +cliquish/YP +clitoral +clitorides +clitoris/MS +Clive/M +cloacae +cloaca/M +cloakroom/MS +cloak's +cloak/USDG +clobber/DGS +cloche/MS +clocker/M +clockmaker/M +clock/SGZRDMJ +clockwatcher +clockwise +clockwork/MS +clodded +clodding +cloddishness/M +cloddish/P +clodhopper/SM +clod/MS +Cloe/M +clogged/U +clogging/U +clog's +clog/US +cloisonné +cloisonnes +cloister/MDGS +cloistral +Clo/M +clomp/MDSG +clonal +clone/DSRGMZ +clonk/SGD +clopped +clopping +clop/S +Cloris/M +closed/U +close/EDSRG +closefisted +closely +closemouthed +closeness/MS +closeout/MS +closer/EM +closers +closest +closet/MDSG +closeup/S +closing/S +closured +closure/EMS +closure's/I +closuring +clothbound +clothesbrush +clotheshorse/MS +clothesline/SDGM +clothesman +clothesmen +clothespin/MS +clothe/UDSG +cloth/GJMSD +clothier/MS +clothing/M +Clotho/M +cloths +Clotilda/M +clot/MS +clotted +clotting +cloture/MDSG +cloudburst/MS +clouded/U +cloudiness/SM +cloudlessness/M +cloudless/YP +cloudscape/SM +cloud/SGMD +cloudy/TPR +clout/GSMD +cloven +cloverleaf/MS +clover/M +clove/SRMZ +Clovis/M +clown/DMSG +clownishness/SM +clownish/PY +cloy/DSG +cloying/Y +clubbed/M +clubbing/M +clubfeet +clubfoot/DM +clubhouse/SM +club/MS +clubroom/SM +cluck/GSDM +clueless +clue/MGDS +Cluj/M +clump/MDGS +clumpy/RT +clumsily +clumsiness/MS +clumsy/PRT +clung +clunk/SGZRDM +clunky/PRYT +clustered/AU +clusters/A +cluster/SGJMD +clutch/DSG +cluttered/U +clutter/GSD +Cl/VM +Clyde/M +Clydesdale/M +Cly/M +Clytemnestra/M +Clyve/M +Clywd/M +cm +Cm/M +CMOS +cnidarian/MS +CNN +CNS +CO +coacher/M +coachman/M +coachmen +coach/MSRDG +coachwork/M +coadjutor/MS +coagulable +coagulant/SM +coagulate/GNXSD +coagulation/M +coagulator/S +coaler/M +coalesce/GDS +coalescence/SM +coalescent +coalface/SM +coalfield/MS +coalitionist/SM +coalition/MS +coal/MDRGS +coalminers +coarseness/SM +coarsen/SGD +coarse/TYRP +coastal +coaster/M +coastguard/MS +coastline/SM +coast/SMRDGZ +coated/U +Coates/M +coating/M +coat/MDRGZJS +coattail/S +coattest +coauthor/MDGS +coaxer/M +coax/GZDSR +coaxial/Y +coaxing/Y +Cobain/M +cobalt/MS +cobbed +Cobbie/M +cobbing +cobbler/M +cobble/SRDGMZ +cobblestone/MSD +Cobb/M +Cobby/M +coble/M +Cob/M +COBOL +Cobol/M +cobra/MS +cob/SM +cobwebbed +cobwebbing +cobwebby/RT +cobweb/SM +cocaine/MS +coca/MS +cocci/MS +coccus/M +coccyges +coccyx/M +Cochabamba/M +cochineal/SM +Cochin/M +Cochise/M +cochleae +cochlear +cochlea/SM +Cochran/M +cockade/SM +cockamamie +cockatoo/SM +cockatrice/MS +cockcrow/MS +cockerel/MS +cocker/M +cockeye/DM +cockeyed/PY +cockfighting/M +cockfight/MJSG +cock/GDRMS +cockily +cockiness/MS +cocklebur/M +cockle/SDGM +cockleshell/SM +Cockney +cockney/MS +cockpit/MS +cockroach/SM +cockscomb/SM +cockshies +cocksucker/S +cocksure +cocktail/GDMS +cocky/RPT +cocoa/SM +coco/MS +coconut/SM +cocoon/GDMS +Cocteau/M +COD +coda/SM +codded +codding +coddle/GSRD +coddler/M +codebook/S +codebreak/R +coded/UA +Codee/M +codeine/MS +codename/D +codependency/S +codependent/S +coder/CM +code's +co/DES +codes/A +code/SCZGJRD +codetermine/S +codeword/SM +codex/M +codfish/SM +codger/MS +codices/M +codicil/SM +Codie/M +codification/M +codifier/M +codify/NZXGRSD +Codi/M +coding/M +codling/M +Cod/M +cod/MDRSZGJ +codpiece/MS +Cody/M +coedited +coediting +coeditor/MS +coedits +coed/SM +coeducational +coeducation/SM +coefficient/SYM +coelenterate/MS +coequal/SY +coercer/M +coerce/SRDXVGNZ +coercible/I +coercion/M +coerciveness/M +coercive/PY +coeval/YS +coexistence/MS +coexistent +coexist/GDS +coextensive/Y +cofactor/MS +coffeecake/SM +coffeecup +coffeehouse/SM +coffeemaker/S +coffeepot/MS +coffee/SM +cofferdam/SM +coffer/DMSG +Coffey/M +coffin/DMGS +Coffman/M +cogency/MS +cogent/Y +cogged +cogging +cogitate/DSXNGV +cogitation/M +cogitator/MS +cog/MS +Cognac/M +cognac/SM +cognate/SXYN +cognation/M +cognitional +cognition/SAM +cognitive/SY +cognizable +cognizance/MAI +cognizances/A +cognizant/I +cognomen/SM +cognoscente +cognoscenti +cogwheel/SM +cohabitant/MS +cohabitational +cohabitation/SM +cohabit/SDG +Cohan/M +coheir/MS +Cohen/M +cohere/GSRD +coherence/SIM +coherencies +coherency/I +coherent/IY +coherer/M +cohesion/MS +cohesiveness/SM +cohesive/PY +Cohn/M +cohoes +coho/MS +cohort/SM +coiffed +coiffing +coiffure/MGSD +coif/SM +coil/UGSAD +Coimbatore/M +coinage's/A +coinage/SM +coincide/GSD +coincidence/MS +coincidental/Y +coincident/Y +coined/U +coiner/M +coin/GZSDRM +coinsurance/SM +Cointon/M +cointreau +coital/Y +coitus/SM +coke/MGDS +Coke/MS +COL +COLA +colander/SM +Colan/M +Colas +cola/SM +colatitude/MS +Colbert/M +Colby/M +coldblooded +coldish +coldness/MS +cold/YRPST +Coleen/M +Cole/M +Coleman/M +Colene/M +Coleridge/M +coleslaw/SM +Colet/M +Coletta/M +Colette/M +coleus/SM +Colfax/M +Colgate/M +colicky +colic/SM +coliform +Colin/M +coliseum/SM +colitis/MS +collaborate/VGNXSD +collaboration/M +collaborative/SY +collaborator/SM +collage/MGSD +collagen/M +collapse/SDG +collapsibility/M +collapsible +collarbone/MS +collar/DMGS +collard/SM +collarless +collated/U +collateral/SYM +collate/SDVNGX +collation/M +collator/MS +colleague/SDGM +collectedness/M +collected/PY +collectible/S +collection/AMS +collective/SY +collectivism/SM +collectivist/MS +collectivity/MS +collectivization/MS +collectivize/DSG +collector/MS +collect/SAGD +Colleen/M +colleen/SM +college/SM +collegiality/S +collegian/SM +collegiate/Y +Collen/M +Collete/M +Collette/M +coll/G +collide/SDG +Collie/M +collie/MZSRD +collier/M +Collier/M +colliery/MS +collimate/C +collimated/U +collimates +collimating +collimation/M +collimator/M +collinear +collinearity/M +Colline/M +Collin/MS +collisional +collision/SM +collocate/XSDGN +collocation/M +colloidal/Y +colloid/MS +colloq +colloquialism/MS +colloquial/SY +colloquies +colloquium/SM +colloquy/M +collude/SDG +collusion/SM +collusive +collying +Colly/RM +Colman/M +Col/MY +Cologne/M +cologne/MSD +Colo/M +Colombia/M +Colombian/S +Colombo/M +colonelcy/MS +colonel/MS +colonialism/MS +colonialist/MS +colonial/SPY +colonist/SM +colonization/ACSM +colonize/ACSDG +colonized/U +colonizer/MS +colonizes/U +Colon/M +colonnade/MSD +colon/SM +colony/SM +colophon/SM +Coloradan/S +Coloradoan/S +Colorado/M +colorant/SM +coloration/EMS +coloratura/SM +colorblindness/S +colorblind/P +colored/USE +colorer/M +colorfastness/SM +colorfast/P +colorfulness/MS +colorful/PY +colorimeter/SM +colorimetry +coloring/M +colorization/S +colorize/GSD +colorizing/C +colorlessness/SM +colorless/PY +colors/EA +color/SRDMGZJ +colossal/Y +Colosseum/M +colossi +colossus/M +colostomy/SM +colostrum/SM +col/SD +colter/M +coltishness/M +coltish/PY +Colt/M +colt/MRS +Coltrane/M +Columbia/M +Columbian +Columbine/M +columbine/SM +Columbus/M +columnar +columnist/MS +columnize/GSD +column/SDM +Colver/M +Co/M +comae +comaker/SM +Comanche/MS +coma/SM +comatose +combatant/SM +combativeness/MS +combative/PY +combat/SVGMD +combed/U +comber/M +combinational/A +combination/ASM +combinatorial/Y +combinatoric/S +combinator/SM +combined/AU +combiner/M +combines/A +combine/ZGBRSD +combining/A +combo/MS +comb/SGZDRMJ +Combs/M +combusted +combustibility/SM +combustible/SI +combustion/MS +combustive +Comdex/M +Comdr/M +comeback/SM +comedian/SM +comedic +comedienne/SM +comedown/MS +comedy/SM +come/IZSRGJ +comeliness/SM +comely/TPR +comer/IM +comes/M +comestible/MS +cometary +cometh +comet/SM +comeuppance/SM +comfit's +comfit/SE +comfortability/S +comfortableness/MS +comfortable/U +comfortably/U +comforted/U +comforter/MS +comfort/ESMDG +comforting/YE +comfy/RT +comicality/MS +comical/Y +comic/MS +Cominform/M +comity/SM +com/LJRTZG +comm +Com/M +comma/MS +commandant/MS +commandeer/SDG +commander/M +commanding/Y +commandment/SM +commando/SM +command/SZRDMGL +commemorate/SDVNGX +commemoration/M +commemorative/YS +commemorator/S +commence/ALDSG +commencement/AMS +commencer/M +commendably +commendation/ASM +commendatory/A +commender/AM +commend/GSADRB +commensurable/I +commensurate/IY +commensurates +commensuration/SM +commentary/MS +commentate/GSD +commentator/SM +commenter/M +comment's +comment/SUGD +commerce/MGSD +commercialism/MS +commercialization/SM +commercialize/GSD +commercial/PYS +Commie +commie/SM +commingle/GSD +commiserate/VGNXSD +commiseration/M +commissariat/MS +commissar/MS +commissary/MS +commission/ASCGD +commissioner/SM +commission's/A +commitment/SM +commit/SA +committable +committal/MA +committals +committed/UA +committeeman/M +committeemen +committee/MS +committeewoman/M +committeewomen +committing/A +commode/MS +commodes/IE +commodiousness/MI +commodious/YIP +commodity/MS +commodore/SM +commonality/MS +commonalty/MS +commoner/MS +commonness/MSU +commonplaceness/M +commonplace/SP +common/RYUPT +commonsense +commons/M +Commons/M +commonweal/SHM +commonwealth/M +Commonwealth/M +commonwealths +Commonwealths +commotion/MS +communality/M +communal/Y +commune/XSDNG +communicability/MS +communicable/IU +communicably +communicant/MS +communicate/VNGXSD +communicational +communication/M +communicativeness/M +communicative/PY +communicator/SM +communion/M +Communion/SM +communique/S +communism/MS +Communism/S +communistic +communist/MS +Communist/S +communitarian/M +community/MS +communize/SDG +commutable/I +commutate/XVGNSD +commutation/M +commutative/Y +commutativity +commutator/MS +commute/BZGRSD +commuter/M +Comoros +compaction/M +compactness/MS +compactor/MS +compact/TZGSPRDY +companionableness/M +companionable/P +companionably +companion/GBSMD +companionship/MS +companionway/MS +company/MSDG +Compaq/M +comparabilities +comparability/IM +comparableness/M +comparable/P +comparably/I +comparativeness/M +comparative/PYS +comparator/SM +compare/GRSDB +comparer/M +comparison/MS +compartmental +compartmentalization/SM +compartmentalize/DSG +compartment/SDMG +compassionateness/M +compassionate/PSDGY +compassion/MS +compass/MSDG +compatibility/IMS +compatibleness/M +compatible/SI +compatibly/I +compatriot/SM +compeer/DSGM +compellable +compelled +compelling/YM +compel/S +compendious +compendium/MS +compensable +compensated/U +compensate/XVNGSD +compensation/M +compensator/M +compensatory +compete/GSD +competence/ISM +competency/IS +competency's +competent/IY +competition/SM +competitiveness/SM +competitive/YP +competitor/MS +comp/GSYD +compilable/U +compilation/SAM +compile/ASDCG +compiler/CS +compiler's +complacence/S +complacency/SM +complacent/Y +complainant/MS +complainer/M +complain/GZRDS +complaining/YU +complaint/MS +complaisance/SM +complaisant/Y +complected +complementariness/M +complementarity +complementary/SP +complementation/M +complementer/M +complement/ZSMRDG +complete/BTYVNGPRSDX +completed/U +completely/I +completeness/ISM +completer/M +completion/MI +complexional +complexion/DMS +complexity/MS +complexness/M +complex/TGPRSDY +compliance/SM +compliant/Y +complicatedness/M +complicated/YP +complicate/SDG +complication/M +complicator/SM +complicit +complicity/MS +complier/M +complimentary/U +complimenter/M +compliment/ZSMRDG +comply/ZXRSDNG +component/SM +comport/GLSD +comportment/SM +compose/CGASDE +composedness/M +composed/PY +composer/CM +composers +composite/YSDXNG +compositional/Y +composition/CMA +compositions/C +compositor/MS +compost/DMGS +composure/ESM +compote/MS +compounded/U +compounder/M +compound/RDMBGS +comprehend/DGS +comprehending/U +comprehensibility/SIM +comprehensibleness/IM +comprehensible/PI +comprehensibly/I +comprehension/IMS +comprehensiveness/SM +comprehensive/YPS +compressed/Y +compressibility/IM +compressible/I +compressional +compression/CSM +compressive/Y +compressor/MS +compress/SDUGC +comprise/GSD +compromiser/M +compromise/SRDGMZ +compromising/UY +Compton/M +comptroller/SM +compulsion/SM +compulsiveness/MS +compulsive/PYS +compulsivity +compulsorily +compulsory/S +compunction/MS +Compuserve/M +CompuServe/M +computability/M +computable/UI +computably +computational/Y +computation/SM +computed/A +computerese +computerization/MS +computerize/SDG +computer/M +compute/RSDZBG +computes/A +computing/A +comradely/P +comradeship/MS +comrade/YMS +Comte/M +Conakry/M +Conan/M +Conant/M +concatenate/XSDG +concaveness/MS +concave/YP +conceal/BSZGRDL +concealed/U +concealer/M +concealing/Y +concealment/MS +conceded/Y +conceitedness/SM +conceited/YP +conceit/SGDM +conceivable/IU +conceivably/I +conceive/BGRSD +conceiver/M +concentrate/VNGSDX +concentration/M +concentrator/MS +concentrically +Concepción/M +conceptional +conception/MS +concept/SVM +conceptuality/M +conceptualization/A +conceptualizations +conceptualization's +conceptualize/DRSG +conceptualizing/A +conceptual/Y +concerned/YU +concern/USGD +concerted/PY +concert/EDSG +concertina/MDGS +concertize/GDS +concertmaster/MS +concerto/SM +concert's +concessionaire/SM +concessional +concessionary +concession/R +Concetta/M +Concettina/M +Conchita/M +conch/MDG +conchs +concierge/SM +conciliar +conciliate/GNVX +conciliation/ASM +conciliator/MS +conciliatory/A +conciseness/SM +concise/TYRNPX +concision/M +conclave/S +concluder/M +conclude/RSDG +conclusion/SM +conclusive/IPY +conclusiveness/ISM +concocter/M +concoction/SM +concoct/RDVGS +concomitant/YS +concordance/MS +concordant/Y +concordat/SM +Concorde/M +Concordia/M +Concord/MS +concourse +concreteness/MS +concrete/NGXRSDPYM +concretion/M +concubinage/SM +concubine/SM +concupiscence/SM +concupiscent +concurrence/MS +concur/S +concussion/MS +concuss/VD +condemnate/XN +condemnation/M +condemnatory +condemner/M +condemn/ZSGRDB +condensate/NMXS +condensation/M +condenser/M +condense/ZGSD +condensible +condescend +condescending/Y +condescension/MS +condign +condiment/SM +condition/AGSJD +conditionals +conditional/UY +conditioned/U +conditioner/MS +conditioning/M +condition's +condole +condolence/MS +condominium/MS +condom/SM +condone/GRSD +condoner/M +Condorcet/M +condor/MS +condo/SM +conduce/VGSD +conduciveness/M +conducive/P +conductance/SM +conductibility/SM +conductible +conduction/MS +conductive/Y +conductivity/MS +conductor/MS +conductress/MS +conduct/V +conduit/MS +coneflower/M +Conestoga +coney's +confabbed +confabbing +confab/MS +confabulate/XSDGN +confabulation/M +confectioner/M +confectionery/SM +confectionist +confection/RDMGZS +confect/S +Confederacy/M +confederacy/MS +confederate/M +Confederate/S +conferee/MS +conference/DSGM +conferrable +conferral/SM +conferred +conferrer/SM +conferring +confer/SB +confessed/Y +confessional/SY +confession/MS +confessor/SM +confetti/M +confidante/SM +confidant/SM +confidence/SM +confidentiality/MS +confidentialness/M +confidential/PY +confident/Y +confider/M +confide/ZGRSD +confiding/PY +configuration/ASM +configure/AGSDB +confined/U +confine/L +confinement/MS +confiner/M +confirm/AGDS +confirmation/ASM +confirmatory +confirmedness/M +confirmed/YP +confiscate/DSGNX +confiscation/M +confiscator/MS +confiscatory +conflagration/MS +conflate/NGSDX +conflation/M +conflicting/Y +conflict/SVGDM +confluence/MS +conformable/U +conformal +conformance/SM +conformational/Y +conform/B +conformer/M +conformism/SM +conformist/SM +conformities +conformity/MUI +confounded/Y +confound/R +confrère/MS +confrontational +confrontation/SM +confronter/M +confront/Z +Confucianism/SM +Confucian/S +Confucius/M +confusedness/M +confused/PY +confuse/RBZ +confusing/Y +confutation/MS +confute/GRSD +confuter/M +conga/MDG +congeal/GSDL +congealment/MS +congeniality/UM +congenial/U +congeries/M +conger/SM +congestion/MS +congest/VGSD +conglomerate/XDSNGVM +conglomeration/M +Cong/M +Congolese +Congo/M +congrats +congratulate/NGXSD +congratulation/M +congratulatory +congregate/DSXGN +congregational +Congregational +congregationalism/MS +congregationalist/MS +Congregationalist/S +congregation/M +congressional/Y +congressman/M +congressmen +Congress/MS +congress/MSDG +congresspeople +congressperson/S +congresswoman/M +congresswomen +Congreve/M +congruence/IM +congruences +congruency/M +congruential +congruent/YI +congruity/MSI +congruousness/IM +congruous/YIP +conicalness/M +conical/PSY +conic/S +conics/M +conifer/MS +coniferous +conjectural/Y +conjecture/GMDRS +conjecturer/M +conjoint +conjugacy +conjugal/Y +conjugate/XVNGYSDP +conjugation/M +conjunct/DSV +conjunctiva/MS +conjunctive/YS +conjunctivitis/SM +conjuration/MS +conjurer/M +conjure/RSDZG +conjuring/M +conker/M +conk/ZDR +Conley/M +Con/M +conman +connect/ADGES +connectedly/E +connectedness/ME +connected/U +connectible +Connecticut/M +connection/AME +connectionless +connections/E +connective/SYM +connectivity/MS +connector/MS +Connelly/M +Conner/M +Connery/M +connexion/MS +Conney/M +conn/GVDR +Connie/M +Conni/M +conniption/MS +connivance/MS +conniver/M +connive/ZGRSD +connoisseur/MS +Connor/SM +connotative/Y +Conn/RM +connubial/Y +Conny/M +conquerable/U +conquered/AU +conqueror/MS +conquer/RDSBZG +conquers/A +conquest/ASM +conquistador/MS +Conrade/M +Conrad/M +Conrado/M +Conrail/M +Conroy/M +Consalve/M +consanguineous/Y +consanguinity/SM +conscienceless +conscientiousness/MS +conscientious/YP +conscionable/U +consciousness/MUS +conscious/UYSP +conscription/SM +consecrated/AU +consecrates/A +consecrate/XDSNGV +consecrating/A +consecration/AMS +consecutiveness/M +consecutive/YP +consensus/SM +consenter/M +consenting/Y +consent/SZGRD +consequence +consequentiality/S +consequential/IY +consequentialness/M +consequently/I +consequent/PSY +conservancy/SM +conservationism +conservationist/SM +conservation/SM +conservatism/SM +conservativeness/M +Conservative/S +conservative/SYP +conservator/MS +conservatory/MS +con/SGM +considerable/I +considerables +considerably/I +considerateness/MSI +considerate/XIPNY +consideration/ASMI +considered/U +considerer/M +consider/GASD +considering/S +consign/ASGD +consignee/SM +consignment/SM +consist/DSG +consistence/S +consistency/IMS +consistent/IY +consistory/MS +consolable/I +Consolata/M +consolation/MS +consolation's/E +consolatory +consoled/U +consoler/M +console/ZBG +consolidated/AU +consolidate/NGDSX +consolidates/A +consolidation/M +consolidator/SM +consoling/Y +consommé/S +consonance/IM +consonances +consonantal +consonant/MYS +consortia +consortium/M +conspectus/MS +conspicuousness/IMS +conspicuous/YIP +conspiracy/MS +conspiratorial/Y +conspirator/SM +constable +Constable/M +constabulary/MS +constance +Constance/M +Constancia/M +constancy/IMS +Constancy/M +Constanta/M +Constantia/M +Constantina/M +Constantine/M +Constantin/M +Constantino/M +Constantinople/M +constant/IY +constants +constellation/SM +consternate/XNGSD +consternation/M +constipate/XDSNG +constipation/M +constituency/MS +constituent/SYM +constituted/A +constitute/NGVXDS +constitutes/A +constituting/A +Constitution +constitutionality's +constitutionality/US +constitutionally/U +constitutional/SY +constitution/AMS +constitutive/Y +constrain +constrainedly +constrained/U +constraint/MS +constriction/MS +constrictor/MS +constrict/SDGV +construable +construct/ASDGV +constructibility +constructible/A +constructional/Y +constructionist/MS +construction/MAS +constructions/C +constructiveness/SM +constructive/YP +constructor/MS +construe/GSD +Consuela/M +Consuelo/M +consular/S +consulate/MS +consul/KMS +consulship/MS +consultancy/S +consultant/MS +consultation/SM +consultative +consulted/A +consulter/M +consult/RDVGS +consumable/S +consumed/Y +consume/JZGSDB +consumerism/MS +consumerist/S +consumer/M +consuming/Y +consummate/DSGVY +consummated/U +consumption/SM +consumptive/YS +cont +contact/BGD +contacted/A +contact's/A +contacts/A +contagion/SM +contagiousness/MS +contagious/YP +containerization/SM +containerize/GSD +container/M +containment/SM +contain/SLZGBRD +contaminant/SM +contaminated/AU +contaminates/A +contaminate/SDCXNG +contaminating/A +contamination/CM +contaminative +contaminator/MS +contd +cont'd +contemn/SGD +contemplate/DVNGX +contemplation/M +contemplativeness/M +contemplative/PSY +contemporaneity/MS +contemporaneousness/M +contemporaneous/PY +contemptibleness/M +contemptible/P +contemptibly +contempt/M +contemptuousness/SM +contemptuous/PY +contentedly/E +contentedness/SM +contented/YP +content/EMDLSG +contention/MS +contentiousness/SM +contentious/PY +contently +contentment/ES +contentment's +conterminous/Y +contestable/I +contestant/SM +contested/U +contextualize/GDS +contiguity/MS +contiguousness/M +contiguous/YP +continence/ISM +Continental/S +continental/SY +continent/IY +Continent/M +continents +continent's +contingency/SM +contingent/SMY +continua +continuable +continual/Y +continuance/ESM +continuant/M +continuation/ESM +continue/ESDG +continuer/M +continuity/SEM +continuousness/M +continuous/YE +continuum/M +contortionist/SM +contortion/MS +contort/VGD +contour +contraband/SM +contrabass/M +contraception/SM +contraceptive/S +contract/DG +contractible +contractile +contractual/Y +contradict/GDS +contradiction/MS +contradictorily +contradictoriness/M +contradictory/PS +contradistinction/MS +contraflow/S +contrail/M +contraindicate/SDVNGX +contraindication/M +contralto/SM +contrapositive/S +contraption/MS +contrapuntal/Y +contrariety/MS +contrarily +contrariness/MS +contrariwise +contrary/PS +contra/S +contrasting/Y +contrastive/Y +contrast/SRDVGZ +contravene/GSRD +contravener/M +contravention/MS +Contreras/M +contretemps/M +contribute/XVNZRD +contribution/M +contributive/Y +contributorily +contributor/SM +contributory/S +contriteness/M +contrite/NXP +contrition/M +contrivance/SM +contriver/M +contrive/ZGRSD +control/CS +controllability/M +controllable/IU +controllably/U +controlled/CU +controller/SM +controlling/C +control's +controversialists +controversial/UY +controversy/MS +controvert/DGS +controvertible/I +contumacious/Y +contumacy/MS +contumelious +contumely/MS +contuse/NGXSD +contusion/M +conundrum/SM +conurbation/MS +convalesce/GDS +convalescence/SM +convalescent/S +convect/DSVG +convectional +convection/MS +convector +convene/ASDG +convener/MS +convenience/ISM +convenient/IY +conventicle/SM +conventionalism/M +conventionalist/M +conventionality/SUM +conventionalize/GDS +conventional/UY +convention/MA +conventions +convergence/MS +convergent +conversant/Y +conversationalist/SM +conversational/Y +conversation/SM +conversazione/M +converse/Y +conversion/AM +conversioning +converted/U +converter/MS +convert/GADS +convertibility's/I +convertibility/SM +convertibleness/M +convertible/PS +convexity/MS +convex/Y +conveyance/DRSGMZ +conveyancer/M +conveyancing/M +convey/BDGS +conveyor/MS +conviction/MS +convict/SVGD +convinced/U +convincer/M +convince/RSDZG +convincingness/M +convincing/PUY +conviviality/MS +convivial/Y +convoke/GSD +convolute/XDNY +convolution/M +convolve/C +convolved +convolves +convolving +convoy/GMDS +convulse/SDXVNG +convulsion/M +convulsiveness/M +convulsive/YP +Conway/M +cony/SM +coo/GSD +cookbook/SM +cooked/AU +Cooke/M +cooker/M +cookery/MS +cook/GZDRMJS +Cookie/M +cookie/SM +cooking/M +Cook/M +cookout/SM +cooks/A +cookware/SM +cooky's +coolant/SM +cooled/U +cooler/M +Cooley/M +coolheaded +Coolidge/M +coolie/MS +coolness/MS +cool/YDRPJGZTS +coon/MS +coonskin/MS +cooperage/MS +cooperate/VNGXSD +cooperation/M +cooperativeness/SM +cooperative/PSY +cooperator/MS +cooper/GDM +Cooper/M +coop/MDRGZS +Coop/MR +coordinated/U +coordinateness/M +coordinate/XNGVYPDS +coordination/M +coordinator/MS +Coors/M +cootie/SM +coot/MS +copay/S +Copeland/M +Copenhagen/M +coper/M +Copernican +Copernicus/M +cope/S +copied/A +copier/M +copies/A +copilot/SM +coping/M +copiousness/SM +copious/YP +coplanar +Copland/M +Copley/M +copolymer/MS +copora +copped +Copperfield/M +copperhead/MS +copper/MSGD +copperplate/MS +coppersmith/M +coppersmiths +coppery +coppice's +copping +Coppola/M +copra/MS +coprolite/M +coprophagous +copse/M +cops/GDS +cop/SJMDRG +copter/SM +Coptic/M +copula/MS +copulate/XDSNGV +copulation/M +copulative/S +copybook/MS +copycat/SM +copycatted +copycatting +copyist/SM +copy/MZBDSRG +copyrighter/M +copyright/MSRDGZ +copywriter/MS +coquetry/MS +coquette/DSMG +coquettish/Y +Corabella/M +Corabelle/M +Corabel/M +coracle/SM +Coralie/M +Coraline/M +coralline +Coral/M +coral/SM +Coralyn/M +Cora/M +corbel/GMDJS +Corbet/M +Corbett/M +Corbie/M +Corbin/M +Corby/M +cordage/MS +corded/AE +Cordelia/M +Cordelie/M +Cordell/M +corder/AM +Cordey/M +cord/FSAEM +cordiality/MS +cordialness/M +cordial/PYS +Cordie/M +cordillera/MS +Cordilleras +Cordi/M +cording/MA +cordite/MS +cordless +Cord/M +Cordoba +cordon/DMSG +cordovan/SM +Cordula/M +corduroy/GDMS +Cordy/M +cored/A +Coreen/M +Corella/M +core/MZGDRS +Corenda/M +Corene/M +corer/M +corespondent/MS +Coretta/M +Corette/M +Corey/M +Corfu/M +corgi/MS +coriander/SM +Corie/M +Corilla/M +Cori/M +Corina/M +Corine/M +coring/M +Corinna/M +Corinne/M +Corinthian/S +Corinthians/M +Corinth/M +Coriolanus/M +Coriolis/M +Corissa/M +Coriss/M +corked/U +corker/M +cork/GZDRMS +Cork/M +corkscrew/DMGS +corks/U +Corliss/M +Corly/M +Cormack/M +corm/MS +cormorant/MS +Cornall/M +cornball/SM +cornbread/S +corncob/SM +corncrake/M +corneal +cornea/SM +Corneille/M +Cornela/M +Cornelia/M +Cornelius/M +Cornelle/M +Cornell/M +corner/GDM +cornerstone/MS +cornet/SM +Corney/M +cornfield/SM +cornflake/S +cornflour/M +cornflower/SM +corn/GZDRMS +cornice/GSDM +Cornie/M +cornily +corniness/S +Cornish/S +cornmeal/S +cornrow/GDS +cornstalk/MS +cornstarch/SM +cornucopia/MS +Cornwallis/M +Cornwall/M +Corny/M +corny/RPT +corolla/MS +corollary/SM +Coronado/M +coronal/MS +coronary/S +corona/SM +coronate/NX +coronation/M +coroner/MS +coronet/DMS +Corot/M +coroutine/SM +Corp +corporal/SYM +corpora/MS +corporate/INVXS +corporately +corporation/MI +corporatism/M +corporatist +corporeality/MS +corporeal/IY +corporealness/M +corp/S +corpse/M +corpsman/M +corpsmen +corps/SM +corpulence/MS +corpulentness/S +corpulent/YP +corpuscle/SM +corpuscular +corpus/M +corr +corralled +corralling +corral/MS +correctable/U +correct/BPSDRYTGV +corrected/U +correctional +correction/MS +corrective/YPS +correctly/I +correctness/MSI +corrector/MS +Correggio/M +correlated/U +correlate/SDXVNG +correlation/M +correlative/YS +Correna/M +correspond/DSG +correspondence/MS +correspondent/SM +corresponding/Y +Correy/M +Corrianne/M +corridor/SM +Corrie/M +corrigenda +corrigendum/M +corrigible/I +Corri/M +Corrina/M +Corrine/M +Corrinne/M +corroborated/U +corroborate/GNVXDS +corroboration/M +corroborative/Y +corroborator/MS +corroboratory +corrode/SDG +corrodible +corrosion/SM +corrosiveness/M +corrosive/YPS +corrugate/NGXSD +corrugation/M +corrupt/DRYPTSGV +corrupted/U +corrupter/M +corruptibility/SMI +corruptible/I +corruption/IM +corruptions +corruptive/Y +corruptness/MS +Corry/M +corsage/MS +corsair/SM +corset/GMDS +Corsica/M +Corsican/S +cortège/MS +Cortes/S +cortex/M +Cortez's +cortical/Y +cortices +corticosteroid/SM +Cortie/M +cortisone/SM +Cortland/M +Cort/M +Cortney/M +Corty/M +corundum/MS +coruscate/XSDGN +coruscation/M +Corvallis/M +corvette/MS +Corvus/M +Cory/M +Cos +Cosby/M +Cosetta/M +Cosette/M +cos/GDS +cosignatory/MS +cosign/SRDZG +cosily +Cosimo/M +cosine/MS +cosiness/MS +Cosme/M +cosmetically +cosmetician/MS +cosmetic/SM +cosmetologist/MS +cosmetology/MS +cosmic +cosmical/Y +cosmogonist/MS +cosmogony/SM +cosmological/Y +cosmologist/MS +cosmology/SM +Cosmo/M +cosmonaut/MS +cosmopolitanism/MS +cosmopolitan/SM +cosmos/SM +cosponsor/DSG +cossack/S +Cossack/SM +cosset/GDS +Costa/M +Costanza/M +costarred +costarring +costar/S +Costello/M +costiveness/M +costive/PY +costless +costliness/SM +costly/RTP +cost/MYGVJS +Costner/M +costumer/M +costume/ZMGSRD +cotangent/SM +Cote/M +cote/MS +coterie/MS +coterminous/Y +cotillion/SM +Cotonou/M +Cotopaxi/M +cot/SGMD +cottager/M +cottage/ZMGSRD +cottar's +cotted +cotter/SDM +cotton/GSDM +Cotton/M +cottonmouth/M +cottonmouths +cottonseed/MS +cottontail/SM +cottonwood/SM +cottony +cotyledon/MS +couching/M +couch/MSDG +cougar/MS +cougher/M +cough/RDG +coughs +couldn't +could/T +could've +coulée/MS +Coulomb/M +coulomb/SM +councilman/M +councilmen +councilor/MS +councilperson/S +council/SM +councilwoman/M +councilwomen +counsel/GSDM +counsellings +counselor/MS +countability/E +countable/U +countably/U +countdown/SM +counted/U +count/EGARDS +countenance/EGDS +countenancer/M +countenance's +counteract/DSVG +counteraction/SM +counterargument/SM +counterattack/DRMGS +counterbalance/MSDG +counterclaim/GSDM +counterclockwise +counterculture/MS +countercyclical +counterespionage/MS +counterexample/S +counterfeiter/M +counterfeit/ZSGRD +counterflow +counterfoil/MS +counterforce/M +counter/GSMD +counterinsurgency/MS +counterintelligence/MS +counterintuitive +countermand/DSG +counterman/M +countermeasure/SM +countermen +counteroffensive/SM +counteroffer/SM +counterpane/SM +counterpart/SM +counterpoint/GSDM +counterpoise/GMSD +counterproductive +counterproposal/M +counterrevolutionary/MS +counterrevolution/MS +counter's/E +counters/E +countersignature/MS +countersign/SDG +countersink/SG +counterspy/MS +counterstrike +countersunk +countertenor/SM +countervail/DSG +counterweight/GMDS +countess/MS +countless/Y +countrify/D +countryman/M +countrymen +country/MS +countryside/MS +countrywide +countrywoman/M +countrywomen +county/SM +coup/ASDG +coupe/MS +Couperin/M +couple/ACU +coupled/CU +coupler/C +couplers +coupler's +couple's +couples/CU +couplet/SM +coupling's/C +coupling/SM +coupon/SM +coup's +courage/MS +courageously +courageousness/MS +courageous/U +courages/E +Courbet/M +courgette/MS +courier/GMDS +course/EGSRDM +courser's/E +courser/SM +course's/AF +courses/FA +coursework +coursing/M +Courtenay/M +courteousness/EM +courteousnesses +courteous/PEY +courtesan/MS +courtesied +courtesy/ESM +courtesying +court/GZMYRDS +courthouse/MS +courtier/SM +courtliness/MS +courtly/RTP +Court/M +Courtnay/M +Courtney/M +courtroom/MS +courtship/SM +courtyard/SM +couscous/MS +cousinly/U +cousin/YMS +Cousteau/M +couture/SM +couturier/SM +covalent/Y +covariance/SM +covariant/S +covariate/SN +covary +cove/DRSMZG +covenanted/U +covenanter/M +covenant/SGRDM +coven/SM +Covent/M +Coventry/MS +coverable/E +cover/AEGUDS +coverage/MS +coverall/DMS +coverer/AME +covering/MS +coverlet/MS +coversheet +covers/M +covertness/SM +covert/YPS +coveter/M +coveting/Y +covetousness/SM +covetous/PY +covet/SGRD +covey/SM +covington +cowardice/MS +cowardliness/MS +cowardly/P +Coward/M +coward/MYS +cowbell/MS +cowbird/MS +cowboy/MS +cowcatcher/SM +cowed/Y +cowering/Y +cower/RDGZ +cowgirl/MS +cowhand/S +cowherd/SM +cowhide/MGSD +Cowley/M +cowlick/MS +cowling/M +cowl/SGMD +cowman/M +cow/MDRSZG +cowmen +coworker/MS +Cowper/M +cowpoke/MS +cowpony +cowpox/MS +cowpuncher/M +cowpunch/RZ +cowrie/SM +cowshed/SM +cowslip/MS +coxcomb/MS +Cox/M +cox/MDSG +coxswain/GSMD +coy/CDSG +coyer +coyest +coyly +Coy/M +coyness/MS +coyote/SM +coypu/SM +cozenage/MS +cozen/SGD +cozily +coziness/MS +Cozmo/M +Cozumel/M +cozy/DSRTPG +CPA +cpd +CPI +cpl +Cpl +CPO +CPR +cps +CPU/SM +crabapple +crabbedness/M +crabbed/YP +Crabbe/M +crabber/MS +crabbily +crabbiness/S +crabbing/M +crabby/PRT +crabgrass/S +crablike +crab/MS +crackable/U +crackdown/MS +crackerjack/S +cracker/M +crackle/GJDS +crackling/M +crackly/RT +crackpot/SM +crackup/S +crack/ZSBYRDG +cradler/M +cradle/SRDGM +cradling/M +craftily +craftiness/SM +Craft/M +craft/MRDSG +craftsman/M +craftsmanship/SM +craftsmen +craftspeople +craftspersons +craftswoman +craftswomen +crafty/TRP +Craggie/M +cragginess/SM +Craggy/M +craggy/RTP +crag/SM +Craig/M +Cramer/M +crammed +crammer/M +cramming +cramper/M +cramp/MRDGS +crampon/SM +cram/S +Cranach/M +cranberry/SM +Crandall/M +crane/DSGM +cranelike +Crane/M +Cranford/M +cranial +cranium/MS +crankcase/MS +crankily +crankiness/MS +crank/SGTRDM +crankshaft/MS +cranky/TRP +Cranmer/M +cranny/DSGM +Cranston/M +crape/SM +crapped +crappie/M +crapping +crappy/RST +crapshooter/SM +crap/SMDG +crasher/M +crashing/Y +crash/SRDGZ +crassness/MS +crass/TYRP +crate/DSRGMZ +crater/DMG +Crater/M +cravat/SM +cravatted +cravatting +crave/DSRGJ +cravenness/SM +craven/SPYDG +craver/M +craving/M +crawdad/S +crawfish's +Crawford/M +crawler/M +crawl/RDSGZ +crawlspace/S +crawlway +crawly/TRS +craw/SYM +crayfish/GSDM +Crayola/M +crayon/GSDM +Cray/SM +craze/GMDS +crazily +craziness/MS +crazy/SRTP +creakily +creakiness/SM +creak/SDG +creaky/PTR +creamer/M +creamery/MS +creamily +creaminess/SM +cream/SMRDGZ +creamy/TRP +creased/CU +crease/IDRSG +crease's +creases/C +creasing/C +created/U +create/XKVNGADS +creationism/MS +creationist/MS +Creation/M +creation/MAK +creativeness/SM +creative/YP +creativities +creativity/K +creativity's +Creator/M +creator/MS +creatureliness/M +creaturely/P +creature/YMS +crèche/SM +credence/MS +credent +credential/SGMD +credenza/SM +credibility/IMS +credible/I +credibly/I +creditability/M +creditableness/M +creditable/P +creditably/E +credited/U +credit/EGBSD +creditor/MS +credit's +creditworthiness +credo/SM +credulity/ISM +credulous/IY +credulousness/SM +creedal +creed/C +creeds +creed's +creekside +creek/SM +Creek/SM +creel/SMDG +Cree/MDS +creeper/M +creepily +creepiness/SM +creep/SGZR +creepy/PRST +Creigh/M +Creight/M +Creighton/M +cremate/XDSNG +cremation/M +crematoria +crematorium/MS +crematory/S +creme/S +crenelate/XGNSD +crenelation/M +Creole/MS +creole/SM +Creon/M +creosote/MGDS +crepe/DSGM +crept +crescendoed +crescendoing +crescendo/SCM +crescent/MS +cress/S +crestfallenness/M +crestfallen/PY +cresting/M +crestless +crest/SGMD +Crestview/M +cretaceous +Cretaceously/M +Cretaceous/Y +Cretan/S +Crete/M +cretinism/MS +cretin/MS +cretinous +cretonne/SM +crevasse/DSMG +crevice/SM +crew/DMGS +crewel/SM +crewelwork/SM +crewman/M +crewmen +cribbage/SM +cribbed +cribber/SM +cribbing/M +crib/SM +Crichton/M +cricketer/M +cricket/SMZRDG +crick/GDSM +Crick/M +cried/C +crier/CM +cries/C +Crimea/M +Crimean +crime/GMDS +criminality/MS +criminalization/C +criminalize/GC +criminal/SYM +criminologist/SM +criminology/MS +crimper/M +crimp/RDGS +crimson/DMSG +cringer/M +cringe/SRDG +crinkle/DSG +crinkly/TRS +Crin/M +crinoline/SM +cripple/GMZDRS +crippler/M +crippling/Y +Crisco/M +crises +crisis/M +Cris/M +crisper/M +crispiness/SM +crispness/MS +crisp/PGTYRDS +crispy/RPT +criss +crisscross/GDS +Crissie/M +Crissy/M +Cristabel/M +Cristal/M +Crista/M +Cristen/M +Cristian/M +Cristiano/M +Cristie/M +Cristi/M +Cristina/M +Cristine/M +Cristin/M +Cristionna/M +Cristobal/M +Cristy/M +criteria +criterion/M +criticality +critically/U +criticalness/M +critical/YP +criticism/MS +criticized/U +criticize/GSRDZ +criticizer/M +criticizes/A +criticizingly/S +criticizing/UY +critic/MS +critique/MGSD +critter/SM +Cr/M +croaker/M +croak/SRDGZ +croaky/RT +Croatia/M +Croatian/S +Croat/SM +Croce/M +crocheter/M +crochet/RDSZJG +crockery/SM +Crockett/M +Crockpot/M +crock/SGRDM +crocodile/MS +crocus/SM +Croesus/SM +crofter/M +croft/MRGZS +croissant/MS +Croix/M +Cromwellian +Cromwell/M +crone/SM +Cronin/M +Cronkite/M +Cronus/M +crony/SM +crookedness/SM +crooked/TPRY +Crookes/M +crookneck/MS +crook/SGDM +crooner/M +croon/SRDGZ +cropland/MS +crop/MS +cropped +cropper/SM +cropping +croquet/MDSG +croquette/SM +Crosby/M +crosier/SM +crossarm +crossbarred +crossbarring +crossbar/SM +crossbeam/MS +crossbones +crossbowman/M +crossbowmen +crossbow/SM +crossbred/S +crossbreed/SG +crosscheck/SGD +crosscurrent/SM +crosscut/SM +crosscutting +crossed/UA +crosses/UA +crossfire/SM +crosshatch/GDS +crossing/M +Cross/M +crossness/MS +crossover/MS +crosspatch/MS +crosspiece/SM +crosspoint +crossproduct/S +crossroad/GSM +crossroads/M +crosstalk/M +crosstown +crosswalk/MS +crossway/M +crosswind/SM +crosswise +crossword/MS +cross/ZTYSRDMPBJG +crotchetiness/M +crotchet/MS +crotchety/P +crotchless +crotch/MDS +crouch/DSG +croupier/M +croup/SMDG +croupy/TZR +croûton/MS +crowbait +crowbarred +crowbarring +crowbar/SM +crowdedness/M +crowded/P +crowd/MRDSG +crowfeet +crowfoot/M +crow/GDMS +Crowley/M +crowned/U +crowner/M +crown/RDMSJG +crozier's +CRT/S +crucial/Y +crucible/MS +crucifiable +crucifixion/MS +Crucifixion/MS +crucifix/SM +cruciform/S +crucify/NGDS +crudded +crudding +cruddy/TR +crudeness/MS +crude/YSP +crudités +crudity/MS +crud/STMR +cruelness/MS +cruelty/SM +cruel/YRTSP +cruet/MS +cruft +crufty +Cruikshank/M +cruise/GZSRD +cruiser/M +cruller/SM +crumb/GSYDM +crumble/DSJG +crumbliness/MS +crumbly/PTRS +crumby/RT +crumminess/S +crummy/SRTP +crump +crumpet/SM +crumple/DSG +crunch/DSRGZ +crunchiness/MS +crunchy/TRP +crupper/MS +crusade/GDSRMZ +crusader/M +cruse/MS +crushable/U +crusher/M +crushing/Y +crushproof +crush/SRDBGZ +Crusoe/M +crustacean/MS +crustal +crust/GMDS +crustily +crustiness/SM +crusty/SRTP +crutch/MDSG +Crux/M +crux/MS +Cruz/M +crybaby/MS +cry/JGDRSZ +cryogenic/S +cryogenics/M +cryostat/M +cryosurgery/SM +cryptanalysis/M +cryptanalyst/M +cryptanalytic +crypt/CS +cryptic +cryptically +cryptogram/MS +cryptographer/MS +cryptographic +cryptographically +cryptography/MS +cryptologic +cryptological +cryptologist/M +cryptology/M +Cryptozoic/M +crypt's +crystalline/S +crystallite/SM +crystallization/AMS +crystallized/UA +crystallizes/A +crystallize/SRDZG +crystallizing/A +crystallographer/MS +crystallographic +crystallography/M +Crystal/M +crystal/SM +Crysta/M +Crystie/M +Cs +C's +cs/EA +cs's +CST +ct +CT +Cthrine/M +Ct/M +ctn +ctr +Cuba/M +Cuban/S +cubbed +cubbing +cubbyhole/MS +cuber/M +cube/SM +cubical/Y +cubicle/SM +cubic/YS +cubism/SM +cubist/MS +cubit/MS +cub/MDRSZG +cuboid +Cuchulain/M +cuckold/GSDM +cuckoldry/MS +cuckoo/SGDM +cucumber/MS +cuddle/GSD +cuddly/TRP +cu/DG +cudgel/GSJMD +cud/MS +cue/MS +cuff/GSDM +Cuisinart/M +cuisine/MS +Culbertson/M +culinary +Cullan/M +cull/DRGS +cullender's +Cullen/M +culler/M +Culley/M +Cullie/M +Cullin/M +Cull/MN +Cully/M +culminate/XSDGN +culmination/M +culotte/S +culpability/MS +culpable/I +culpableness/M +culpably +culpa/SM +culprit/SM +cultism/SM +cultist/SM +cultivable +cultivated/U +cultivate/XBSDGN +cultivation/M +cultivator/SM +cult/MS +cultural/Y +cultured/U +culture/SDGM +Culver/MS +culvert/SM +Cu/M +cumber/DSG +Cumberland/M +cumbersomeness/MS +cumbersome/YP +cumbrous +cumin/MS +cummerbund/MS +Cummings +cumquat's +cum/S +cumulate/XVNGSD +cumulation/M +cumulative/Y +cumuli +cumulonimbi +cumulonimbus/M +cumulus/M +Cunard/M +cuneiform/S +cunnilingus/SM +Cunningham/M +cunningness/M +cunning/RYSPT +cunt/SM +cupboard/SM +cupcake/SM +Cupertino/M +cupful/SM +cupidinously +cupidity/MS +Cupid/M +cupid/S +cup/MS +cupola/MDGS +cupped +cupping/M +cupric +cuprous +curability/MS +curable/IP +curableness/MI +curably/I +Curacao/M +curacy/SM +curare/MS +curate/VGMSD +curative/YS +curatorial +curator/KMS +curbing/M +curbside +curb/SJDMG +curbstone/MS +Curcio/M +curdle/SDG +curd/SMDG +cured/U +cure/KBDRSGZ +curer/MK +curettage/SM +curfew/SM +curfs +curiae +curia/M +cur/IBS +Curie/M +curie/SM +curiosity/SM +curio/SM +curiousness/SM +curious/TPRY +Curitiba/M +curium/MS +curler/SM +curlew/MS +curlicue/MGDS +curliness/SM +curling/M +curl/UDSG +curlycue's +curly/PRT +curmudgeon/MYS +Curran/M +currant/SM +curred/AFI +currency's +currency/SF +current/FSY +currently/A +currentness/M +Currey/M +curricle/M +curricula +curricular +curriculum/M +Currie/M +currier/M +Currier/M +curring/FAI +Curr/M +currycomb/DMGS +Curry/MR +curry/RSDMG +cur's +curs/ASDVG +curse/A +cursedness/M +cursed/YRPT +curse's +cursive/EPYA +cursiveness/EM +cursives +cursor/DMSG +cursorily +cursoriness/SM +cursory/P +curtailer/M +curtail/LSGDR +curtailment/SM +curtain/GSMD +Curtice/M +Curtis/M +Curt/M +curtness/MS +curtsey's +curtsy/SDMG +curt/TYRP +curvaceousness/S +curvaceous/YP +curvature/MS +curved/A +curved's +curve/DSGM +curvilinearity/M +curvilinear/Y +curving/M +curvy/RT +cushion/SMDG +Cushman/M +cushy/TR +cuspid/MS +cuspidor/MS +cusp/MS +cussedness/M +cussed/YP +cuss/EGDSR +cusses/F +cussing/F +cuss's +custard/MS +Custer/M +custodial +custodianship/MS +custodian/SM +custody/MS +customarily +customariness/M +customary/PS +customer/M +customhouse/S +customization/SM +customize/ZGBSRD +custom/SMRZ +cutaneous/Y +cutaway/SM +cutback/SM +cuteness/MS +cute/SPY +cutesy/RT +cuticle/SM +cutlass/MS +cutler/SM +cutlery/MS +cutlet/SM +cut/MRST +cutoff/MS +cutout/SM +cutter/SM +cutthroat/SM +cutting/MYS +cuttlebone/SM +cuttlefish/MS +cuttle/M +cutup/MS +cutworm/MS +Cuvier/M +Cuzco/M +CV +cw +cwt +Cyanamid/M +cyanate/M +cyanic +cyanide/GMSD +cyan/MS +cyanogen/M +Cybele/M +cybernetic/S +cybernetics/M +cyberpunk/S +cyberspace/S +Cybill/M +Cybil/M +Cyb/M +cyborg/S +Cyclades +cyclamen/MS +cycle/ASDG +cycler +cycle's +cycleway/S +cyclic +cyclical/SY +cycling/M +cyclist/MS +cyclohexanol +cycloidal +cycloid/SM +cyclometer/MS +cyclone/SM +cyclonic +cyclopean +cyclopedia/MS +cyclopes +Cyclopes +cyclops +Cyclops/M +cyclotron/MS +cyder/SM +cygnet/MS +Cygnus/M +cylinder/GMDS +cylindric +cylindrical/Y +Cy/M +cymbalist/MS +cymbal/SM +Cymbre/M +Cynde/M +Cyndia/M +Cyndie/M +Cyndi/M +Cyndy/M +cynical/UY +cynicism/MS +cynic/MS +cynosure/SM +Cynthea/M +Cynthia/M +Cynthie/M +Cynthy/M +cypher/MGSD +cypreses +cypress/SM +Cyprian +Cypriot/SM +Cyprus/M +Cyrano/M +Cyrille/M +Cyrillic +Cyrill/M +Cyrillus/M +Cyril/M +Cyrus/M +cystic +cyst/MS +cytochemistry/M +cytochrome/M +cytologist/MS +cytology/MS +cytolysis/M +cytoplasmic +cytoplasm/SM +cytosine/MS +cytotoxic +CZ +czarevitch/M +czarina/SM +czarism/M +czarist/S +czarship +czar/SM +Czech +Czechoslovakia/M +Czechoslovakian/S +Czechoslovak/S +Czechs +Czerniak/M +Czerny/M +D +DA +dabbed +dabber/MS +dabbing +dabbler/M +dabble/RSDZG +dab/S +Dacca's +dace/MS +Dacey/M +dacha/SM +Dachau/M +dachshund/SM +Dacia/M +Dacie/M +Dacron/MS +dactylic/S +dactyl/MS +Dacy/M +Dadaism/M +dadaism/S +Dadaist/M +dadaist/S +Dada/M +daddy/SM +Dade/M +dado/DMG +dadoes +dad/SM +Daedalus/M +Dael/M +daemonic +daemon/SM +Daffie/M +Daffi/M +daffiness/S +daffodil/MS +Daffy/M +daffy/PTR +daftness/MS +daft/TYRP +DAG +dagger/DMSG +Dag/M +Dagmar/M +Dagny/M +Daguerre/M +daguerreotype/MGDS +Dagwood/M +Dahlia/M +dahlia/MS +Dahl/M +Dahomey/M +Daile/M +dailiness/MS +daily/PS +Daimler/M +daintily +daintiness/MS +dainty/TPRS +daiquiri/SM +dairying/M +dairyland +dairymaid/SM +dairyman/M +dairymen +dairy/MJGS +dairywoman/M +dairywomen +Daisey/M +Daisie/M +Daisi/M +dais/SM +Daisy/M +daisy/SM +Dakar/M +Dakotan +Dakota/SM +Dale/M +Dalenna/M +dale/SMH +daleth/M +Daley/M +Dalhousie/M +Dalia/M +Dalian/M +Dalila/M +Dali/SM +Dallas/M +dalliance/SM +dallier/M +Dalli/MS +Dall/M +Dallon/M +dally/ZRSDG +Dal/M +Dalmatia/M +dalmatian/S +Dalmatian/SM +Daloris/M +Dalston/M +Dalt/M +Dalton/M +Daly/M +damageable +damaged/U +damage/MZGRSD +damager/M +damaging/Y +Damara/M +Damaris/M +Damascus/M +damask/DMGS +dame/SM +Dame/SMN +Damian/M +Damiano/M +Damien/M +Damion/M +Damita/M +dam/MDS +dammed +damming +dammit/S +damnably +damnation/MS +damnedest/MS +damned/TR +damn/GSBRD +damning/Y +Damocles/M +Damon/M +damped/U +dampener/M +dampen/RDZG +damper/M +dampness/MS +damp/SGZTXYRDNP +damselfly/MS +damsel/MS +damson/MS +Danaë +Dana/M +Danbury/M +dancelike +dancer/M +dance/SRDJGZ +dandelion/MS +dander/DMGS +dandify/SDG +dandily +dandle/GSD +dandruff/MS +dandy/TRSM +Danelaw/M +Danella/M +Danell/M +Dane/SM +Danette/M +danger/DMG +Dangerfield/M +dangerousness/M +dangerous/YP +dangler/M +dangle/ZGRSD +dangling/Y +dang/SGZRD +Danial/M +Dania/M +Danica/M +Danice/M +Daniela/M +Daniele/M +Daniella/M +Danielle/M +Daniel/SM +Danielson/M +Danie/M +Danika/M +Danila/M +Dani/M +Danish +danish/S +Danita/M +Danit/M +dankness/MS +dank/TPYR +Danna/M +Dannel/M +Dannie/M +Danni/M +Dannye/M +Danny/M +danseuse/SM +Dan/SM +Dante/M +Danton/M +Danube/M +Danubian +Danville/M +Danya/M +Danyelle/M +Danyette/M +Danzig/M +Daphene/M +Daphna/M +Daphne/M +dapperness/M +dapper/PSTRY +dapple/SDG +Dara/M +Darbee/M +Darbie/M +Darb/M +Darby/M +Darcee/M +Darcey/M +Darcie/M +Darci/M +D'Arcy +Darcy/M +Darda/M +Dardanelles +daredevil/MS +daredevilry/S +Dareen/M +Darelle/M +Darell/M +Dare/M +Daren/M +darer/M +daresay +dare/ZGDRSJ +d'Arezzo +Daria/M +Darice/M +Darill/M +Dari/M +daringness/M +daring/PY +Darin/M +Dario/M +Darius/M +Darjeeling/M +darkener/M +darken/RDZG +dark/GTXYRDNSP +darkish +darkly/TR +darkness/MS +darkroom/SM +Darla/M +Darleen/M +Darlene/M +Darline/M +Darling/M +darlingness/M +Darlington/M +darling/YMSP +Darlleen/M +Dar/MNH +Darnall/M +darned/TR +Darnell/M +darner/M +darn/GRDZS +darning/M +Darn/M +Daron/M +DARPA/M +Darrelle/M +Darrell/M +Darrel/M +Darren/M +Darrick/M +Darrin/M +Darrow/M +Darryl/M +Darsey/M +Darsie/M +d'art +dartboard/SM +darter/M +Darth/M +Dartmouth/M +dart/MRDGZS +Darvon/M +Darwinian/S +Darwinism/MS +Darwinist/MS +Darwin/M +Darya/M +Daryle/M +Daryl/M +Daryn/M +Dasha/M +dashboard/SM +dasher/M +dash/GZSRD +dashiki/SM +dashing/Y +Dasie/M +Dasi/M +dastardliness/SM +dastardly/P +dastard/MYS +Dasya/M +DAT +database/DSMG +datafile +datagram/MS +data/M +Datamation/M +Datamedia/M +dataset/S +datedly +datedness +date/DRSMZGV +dated/U +dateless +dateline/DSMG +dater/M +Datha/M +dative/S +Datsun/M +datum/MS +dauber/M +daub/RDSGZ +Daugherty/M +daughter/MYS +Daumier/M +Daune/M +daunt/DSG +daunted/U +daunting/Y +dauntlessness/SM +dauntless/PY +dauphin/SM +Davao/M +Daveen/M +Dave/M +Daven/M +Davenport/M +davenport/MS +Daveta/M +Davey/M +Davida/M +Davidde/M +Davide/M +David/SM +Davidson/M +Davie/M +Davina/M +Davine/M +Davinich/M +Davin/M +Davis/M +Davita/M +davit/SM +Dav/MN +Davon/M +Davy/SM +dawdler/M +dawdle/ZGRSD +Dawes/M +Dawna/M +dawn/GSDM +Dawn/M +Dawson/M +daybed/S +daybreak/SM +daycare/S +daydreamer/M +daydream/RDMSZG +Dayle/M +daylight/GSDM +Day/M +Dayna/M +daysack +day/SM +daytime/SM +Dayton/M +dazed/PY +daze/DSG +dazzler/M +dazzle/ZGJRSD +dazzling/Y +db +DB +dbl +dB/M +DBMS +DC +DD +Ddene/M +DDS +DDT +DE +deacon/DSMG +deaconess/MS +deadbeat/SM +deadbolt/S +deadener/M +deadening/MY +deaden/RDG +deadhead/MS +deadline/MGDS +deadliness/SM +deadlock/MGDS +deadly/RPT +deadness/M +deadpanned +deadpanner +deadpanning +deadpan/S +dead/PTXYRN +deadwood/SM +deafening/MY +deafen/JGD +deafness/MS +deaf/TXPYRN +dealer/M +dealership/MS +dealing/M +deallocator +deal/RSGZJ +dealt +Deana/M +dean/DMG +Deandre/M +Deane/M +deanery/MS +Dean/M +Deanna/M +Deanne/M +Deann/M +deanship/SM +Dearborn/M +dearness/MS +dearth/M +dearths +dear/TYRHPS +deary/MS +deassign +deathbed/MS +deathblow/SM +deathless/Y +deathlike +deathly/TR +death/MY +deaths +deathtrap/SM +deathward +deathwatch/MS +debacle/SM +debarkation/SM +debark/G +debar/L +debarment/SM +debarring +debaser/M +debatable/U +debate/BMZ +debater/M +debauchedness/M +debauched/PY +debauchee/SM +debaucher/M +debauchery/SM +debauch/GDRS +Debbie/M +Debbi/M +Debby/M +Debee/M +debenture/MS +Debera/M +debilitate/NGXSD +debilitation/M +debility/MS +Debi/M +debit/DG +deb/MS +Deb/MS +debonairness/SM +debonair/PY +Deborah/M +Debora/M +Debor/M +debouch/DSG +Debra/M +debrief/GJ +debris/M +debtor/SM +debt/SM +Debussy/M +débutante/SM +debut/MDG +decade/MS +decadency/S +decadent/YS +decaffeinate/DSG +decaf/S +decagon/MS +Decalogue/M +decal/SM +decamp/L +decampment/MS +decapitate/GSD +decapitator/SM +decathlon/SM +Decatur/M +decay/GRD +Decca/M +Deccan/M +decease/M +decedent/MS +deceitfulness/SM +deceitful/PY +deceit/SM +deceived/U +deceiver/M +deceives/U +deceive/ZGRSD +deceivingly +deceiving/U +decelerate/XNGSD +deceleration/M +decelerator/SM +December/SM +decency/ISM +decennial/SY +decent/TIYR +deception/SM +deceptiveness/SM +deceptive/YP +decertify/N +dechlorinate/N +decibel/MS +decidability/U +decidable/U +decidedness/M +decided/PY +decide/GRSDB +deciduousness/M +deciduous/YP +decile/SM +deciliter/SM +decimal/SYM +decimate/XNGDS +decimation/M +decimeter/MS +decipherable/IU +decipher/BRZG +decipherer/M +decisional +decisioned +decisioning +decision/ISM +decisive/IPY +decisiveness/MSI +deckchair +decker/M +Decker/M +deck/GRDMSJ +deckhand/S +decking/M +Deck/RM +declamation/SM +declamatory +declarable +declaration/MS +declaration's/A +declarative/SY +declarator/MS +declaratory +declare/AGSD +declared/U +declarer/MS +declension/SM +declination/MS +decliner/M +decline/ZGRSD +declivity/SM +Dec/M +DEC/M +DECNET +DECnet/M +deco +décolletage/S +décolleté +decolletes +decolorising +decomposability/M +decomposable/IU +decompose/B +decompress/R +decongestant/S +deconstruction +deconvolution +decorated/AU +decorate/NGVDSX +decorates/A +decorating/A +decoration/ASM +decorativeness/M +decorative/YP +decorator/SM +decorousness/MS +decorousness's/I +decorous/PIY +decor/S +decorticate/GNDS +decortication/M +decorum/MS +decoupage/MGSD +decouple/G +decoy/M +decrease +decreasing/Y +decreeing +decree/RSM +decremental +decrement/DMGS +decrepit +decrepitude/SM +decriminalization/S +decriminalize/DS +decry/G +decrypt/GD +decryption +DECstation/M +DECsystem/M +DECtape/M +decustomised +Dedekind/M +Dede/M +dedicate/AGDS +dedicated/Y +dedication/MS +dedicative +dedicator/MS +dedicatory +Dedie/M +Dedra/M +deduce/RSDG +deducible +deductibility/M +deductible/S +deduction/SM +deductive/Y +deduct/VG +Deeanne/M +Deeann/M +deeded +Deedee/M +deeding +deed/IS +deed's +deejay/MDSG +Dee/M +deem/ADGS +deemphasis +Deena/M +deepen/DG +deepish +deepness/MS +deep/PTXSYRN +Deerdre/M +Deere/M +deerskin/MS +deer/SM +deerstalker/SM +deerstalking/M +Deeyn/M +deface/LZ +defacement/SM +defaecate +defalcate/NGXSD +defalcation/M +defamation/SM +defamatory +defamer/M +defame/ZR +defaulter/M +default/ZR +defeated/U +defeater/M +defeatism/SM +defeatist/SM +defeat/ZGD +defecate/DSNGX +defecation/M +defection/SM +defectiveness/MS +defective/PYS +defect/MDSVG +defector/MS +defendant/SM +defended/U +defenestrate/GSD +defenselessness/MS +defenseless/PY +defenses/U +defense/VGSDM +defensibility/M +defensible/I +defensibly/I +defensiveness/MS +defensive/PSY +deference/MS +deferential/Y +deferent/S +deferrable +deferral/SM +deferred +deferrer/MS +deferring +deffer +defiance/MS +defiant/Y +defibrillator/M +deficiency/MS +deficient/SY +deficit/MS +defier/M +defile/L +defilement/MS +definable/UI +definably/I +define/AGDRS +defined/U +definer/SM +definite/IPY +definiteness/IMS +definitional +definition/ASM +definitiveness/M +definitive/SYP +defis +deflate/XNGRSDB +deflationary +deflation/M +deflect/DSGV +deflected/U +deflection/MS +deflector/MS +defocus +defocussing +Defoe/M +defog +defogger/S +defoliant/SM +defoliator/SM +deformational +deform/B +deformed/U +deformity/SM +defrauder/M +defraud/ZGDR +defrayal/SM +defroster/M +defrost/RZ +deftness/MS +deft/TYRP +defunct/S +defying/Y +defy/RDG +def/Z +deg +Degas/M +degassing +degauss/GD +degeneracy/MS +degenerateness/M +degenerate/PY +degrade/B +degradedness/M +degraded/YP +degrading/Y +degrease +degree/SM +degum +Dehlia/M +dehumanize +dehydrator/MS +deicer/M +deice/ZR +deictic +Deidre/M +deification/M +deify/SDXGN +deign/DGS +Deimos/M +Deina/M +Deirdre/MS +deistic +deist/SM +Deity/M +deity/SM +deja +deject/DSG +dejectedness/M +dejected/PY +dejection/SM +Dejesus/M +DeKalb/M +DeKastere/M +Delacroix/M +Delacruz/M +Delainey/M +Dela/M +Delaney/M +Delano/M +Delawarean/SM +Delaware/MS +delay/D +delayer/G +Delbert/M +Delcina/M +Delcine/M +delectableness/M +delectable/SP +delectably +delectation/MS +delegable +Deleon/M +deleted/U +deleteriousness/M +deleterious/PY +delete/XBRSDNG +deletion/M +delfs +Delft/M +delft/MS +delftware/S +Delgado/M +Delhi/M +Delia/M +deliberateness/SM +deliberate/PVY +deliberativeness/M +deliberative/PY +Delibes/M +delicacy/IMS +delicate/IYP +delicatenesses +delicateness/IM +delicates +delicatessen/MS +deliciousness/MS +delicious/YSP +delicti +delightedness/M +delighted/YP +delightfulness/M +delightful/YP +Delilah/M +Delilahs +Delila/M +Delinda/M +delineate/SDXVNG +delineation/M +delinquency/MS +delinquent/SYM +deliquesce/GSD +deliquescent +deliriousness/MS +delirious/PY +delirium/SM +deli/SM +Delius/M +deliverables +deliverable/U +deliver/AGSD +deliverance/SM +delivered/U +deliverer/SM +delivery/AM +deliverymen/M +Della/M +Dell/M +dell/SM +Dellwood/M +Delly/M +Delmar/M +Delmarva/M +Delmer/M +Delmonico +Delmore/M +Delmor/M +Del/MY +Delora/M +Delores/M +Deloria/M +Deloris/M +Delphic +Delphi/M +Delphine/M +Delphinia/M +delphinium/SM +Delphinus/M +Delta/M +delta/MS +deltoid/SM +deluder/M +delude/RSDG +deluding/Y +deluge/SDG +delusional +delusion/SM +delusiveness/M +delusive/PY +deluxe +delve/GZSRD +delver/M +demagnify/N +demagogic +demagogue/GSDM +demagoguery/SM +demagogy/MS +demander/M +demand/GSRD +demandingly +demanding/U +demarcate/SDNGX +demarcation/M +Demavend/M +demean/GDS +demeanor/SM +dementedness/M +demented/YP +dementia/MS +Demerol/M +demesne/SM +Demeter/M +Demetra/M +Demetre/M +Demetria/M +Demetri/MS +Demetrius/M +demigod/MS +demijohn/MS +demimondaine/SM +demimonde/SM +demineralization/SM +Deming/M +demise/DMG +demit +demitasse/MS +demitted +demitting +Dem/MG +democracy/MS +Democratic +democratically/U +democratic/U +democratization/MS +democratize/DRSG +democratizes/U +Democrat/MS +democrat/SM +Democritus/M +démodé +demo/DMPG +demographer/MS +demographical/Y +demographic/S +demography/MS +demolisher/M +demolish/GSRD +demolition/MS +demonetization/S +demoniacal/Y +demoniac/S +demonic +demonology/M +demon/SM +demonstrable/I +demonstrableness/M +demonstrably/I +demonstrate/XDSNGV +demonstration/M +demonstrativenesses +demonstrativeness/UM +demonstratives +demonstrative/YUP +demonstrator/MS +demoralization/M +demoralizer/M +demoralizing/Y +DeMorgan/M +Demosthenes/M +demote/DGX +demotic/S +Demott/M +demount/B +Dempsey/M +demulcent/S +demultiplex +demureness/SM +demure/YP +demurral/MS +demurred +demurrer/MS +demurring +demur/RTS +demythologization/M +demythologize/R +den +Dena/M +dendrite/MS +Deneb/M +Denebola/M +Deneen/M +Dene/M +Deng/M +dengue/MS +deniable/U +denial/SM +Denice/M +denier/M +denigrate/VNGXSD +denigration/M +denim/SM +Denise/M +Deni/SM +denizen/SMDG +Den/M +De/NM +Denmark/M +Denna/M +denned +Dennet/M +Denney/M +Dennie/M +Denni/MS +denning +Dennison/M +Denny/M +denominate/V +denominational/Y +denote/B +denouement/MS +denounce/LZRSDG +denouncement/SM +denouncer/M +dense/FR +densely +denseness/SM +densitometer/MS +densitometric +densitometry/M +density/MS +dens/RT +dental/YS +dentifrice/SM +dentine's +dentin/SM +dent/ISGD +dentistry/MS +dentist/SM +dentition/MS +dent's +denture/IMS +denuclearize/GSD +denudation/SM +denude/DG +denuder/M +denunciate/VNGSDX +denunciation/M +Denver/M +denying/Y +Deny/M +Denys +Denyse/M +deny/SRDZG +deodorant/SM +deodorization/SM +deodorize/GZSRD +deodorizer/M +Deon/M +Deonne/M +deoxyribonucleic +depart/L +departmentalization/SM +departmentalize/DSG +departmental/Y +department/MS +departure/MS +dependability/MS +dependableness/M +dependable/P +dependably +Dependant/MS +depend/B +dependence/ISM +dependency/MS +dependent/IYS +dependent's +depicted/U +depicter/M +depiction/SM +depict/RDSG +depilatory/S +deplete/VGNSDX +depletion/M +deplorableness/M +deplorable/P +deplorably +deplorer/M +deplore/SRDBG +deploring/Y +deployable +deploy/AGDLS +deployment/SAM +depolarize +deponent/S +deportation/MS +deportee/SM +deport/LG +deportment/MS +depose +deposit/ADGS +depositary/M +deposition/A +depositor/SAM +depository/MS +depravedness/M +depraved/PY +deprave/GSRD +depraver/M +depravity/SM +deprecate/XSDNG +deprecating/Y +deprecation/M +deprecatory +depreciable +depreciate/XDSNGV +depreciating/Y +depreciation/M +depreciative/Y +depressant/S +depressible +depression/MS +depressive/YS +depressor/MS +depress/V +deprive/GSD +depth/M +depths +Dept/M +deputation/SM +depute/SDG +deputize/DSG +deputy/MS +dequeue +derail/L +dérailleur/MS +derailment/MS +derange/L +derangement/MS +Derbyshire/M +derby/SM +Derby/SM +dereference/Z +Derek/M +dereliction/SM +derelict/S +Derick/M +deride/D +deriding/Y +derision/SM +derisiveness/MS +derisive/PY +derisory +derivable/U +derivate/XNV +derivation/M +derivativeness/M +derivative/SPYM +derive/B +derived/U +Derk/M +Der/M +dermal +dermatitides +dermatitis/MS +dermatological +dermatologist/MS +dermatology/MS +dermis/SM +Dermot/M +derogate/XDSNGV +derogation/M +derogatorily +derogatory +Derrek/M +Derrick/M +derrick/SMDG +Derrida/M +derrière/S +Derrik/M +Derril/M +derringer/SM +Derron/M +Derry/M +dervish/SM +Derward/M +Derwin/M +Des +desalinate/NGSDX +desalination/M +desalinization/MS +desalinize/GSD +desalt/G +descant/M +Descartes/M +descendant/SM +descended/FU +descendent's +descender/M +descending/F +descends/F +descend/ZGSDR +descent +describable/I +describe/ZB +description/MS +descriptiveness/MS +descriptive/SYP +descriptor/SM +descry/SDG +Desdemona/M +desecrater/M +desecrate/SRDGNX +desecration/M +deserter/M +desertification +desertion/MS +desert/ZGMRDS +deservedness/M +deserved/YU +deserve/J +deserving/Y +déshabillé's +desiccant/S +desiccate/XNGSD +desiccation/M +desiccator/SM +desiderata +desideratum/M +designable +design/ADGS +designate/VNGSDX +designational +designation/M +designator/SM +designed/Y +designer/M +designing/U +Desi/M +desirabilia +desirability's +desirability/US +desirableness/SM +desirableness's/U +desirable/UPS +desirably/U +Desirae/M +desire/BR +desired/U +Desiree/M +desirer/M +Desiri/M +desirousness/M +desirous/PY +desist/DSG +desk/SM +desktop/S +Desmond/M +Desmund/M +desolateness/SM +desolate/PXDRSYNG +desolater/M +desolating/Y +desolation/M +desorption/M +despairer/M +despairing/Y +despair/SGDR +desperadoes +desperado/M +desperateness/SM +desperate/YNXP +desperation/M +despicable +despicably +despiser/M +despise/SRDG +despoil/L +despoilment/MS +despond +despondence/S +despondency/MS +despondent/Y +despotic +despotically +despotism/SM +dessert/SM +dessicate/DN +d'Estaing +destinate/NX +destination/M +destine/GSD +destiny/MS +destituteness/M +destitute/NXP +destitution/M +destroy/BZGDRS +destroyer/M +destructibility/SMI +destructible/I +destruction/SM +destructiveness/MS +destructive/YP +destructor/M +destruct/VGSD +desuetude/MS +desultorily +desultoriness/M +desultory/P +detachedness/M +detached/YP +detacher/M +detach/LSRDBG +detachment/SM +detailedness/M +detailed/YP +detainee/S +detainer/M +detain/LGRDS +detainment/MS +d'etat +detectability/U +detectable/U +detectably/U +detect/DBSVG +detected/U +detection/SM +detective/MS +detector/MS +détente +detentes +detention/SM +detergency/M +detergent/SM +deteriorate/XDSNGV +deterioration/M +determent/SM +determinability/M +determinable/IP +determinableness/IM +determinacy/I +determinant/MS +determinateness/IM +determinate/PYIN +determination/IM +determinativeness/M +determinative/P +determinedly +determinedness/M +determined/U +determine/GASD +determiner/SM +determinism/MS +determinism's/I +deterministically +deterministic/I +deterred/U +deterrence/SM +deterrent/SMY +deterring +detersive/S +deter/SL +deters/V +detestableness/M +detestable/P +detestably +detestation/SM +dethrone/L +dethronement/SM +detonable +detonated/U +detonate/XDSNGV +detonation/M +detonator/MS +detour/G +detoxification/M +detoxify/NXGSD +detox/SDG +detract/GVD +detractive/Y +d'etre +detribalize/GSD +detrimental/SY +detriment/SM +detritus/M +Detroit/M +deuced/Y +deuce/SDGM +deus +deuterium/MS +deuteron/M +Deuteronomy/M +Deutsch/M +Deva/M +Devanagari/M +Devan/M +devastate/XVNGSD +devastating/Y +devastation/M +devastator/SM +develop/ALZSGDR +developed/U +developer/MA +developmental/Y +development/ASM +deviance/MS +deviancy/S +deviant/YMS +deviated/U +deviate/XSDGN +deviating/U +deviation/M +devilishness/MS +devilish/PY +devilment/SM +devilry/MS +devil/SLMDG +deviltry/MS +Devi/M +Devina/M +Devin/M +Devinne/M +deviousness/SM +devious/YP +devise/JR +deviser/M +Devland/M +Devlen/M +Devlin/M +Dev/M +devoice +devolution/MS +devolve/GSD +Devondra/M +Devonian +Devon/M +Devonna/M +Devonne/M +Devonshire/M +Devora/M +devoted/Y +devotee/MS +devote/XN +devotional/YS +devotion/M +devourer/M +devour/SRDZG +devoutness/MS +devout/PRYT +Devy/M +Dewain/M +dewar +Dewar/M +Dewayne/M +dewberry/MS +dewclaw/SM +dewdrop/MS +Dewey/M +Dewie/M +dewiness/MS +Dewitt/M +dewlap/MS +Dew/M +dew/MDGS +dewy/TPR +Dexedrine/M +dexes/I +Dex/M +dexter +dexterity/MS +Dexter/M +dexterousness/MS +dexterous/PY +dextrose/SM +DH +Dhaka +Dhaulagiri/M +dhoti/SM +dhow/MS +DI +diabase/M +diabetes/M +diabetic/S +diabolic +diabolicalness/M +diabolical/YP +diabolism/M +diachronic/P +diacritical/YS +diacritic/MS +diadem/GMDS +diaereses +diaeresis/M +Diaghilev/M +diagnometer/SM +diagnosable/U +diagnose/BGDS +diagnosed/U +diagnosis/M +diagnostically +diagnostician/SM +diagnostic/MS +diagnostics/M +diagonalize/GDSB +diagonal/YS +diagrammable +diagrammatic +diagrammaticality +diagrammatically +diagrammed +diagrammer/SM +diagramming +diagram/MS +Diahann/M +dialectal/Y +dialectical/Y +dialectic/MS +dialect/MS +dialed/A +dialer/M +dialing/M +dial/MRDSGZJ +dialogged +dialogging +dialog/MS +dials/A +dialysis/M +dialyzed/U +dialyzes +diam +diamagnetic +diameter/MS +diametric +diametrical/Y +diamondback/SM +diamond/GSMD +Diana/M +Diandra/M +Diane/M +Dianemarie/M +Dian/M +Dianna/M +Dianne/M +Diann/M +Diannne/M +diapason/MS +diaper/SGDM +diaphanousness/M +diaphanous/YP +diaphragmatic +diaphragm/SM +diarist/SM +Diarmid/M +diarrheal +diarrhea/MS +diary/MS +diaspora +Diaspora/SM +diastase/SM +diastole/MS +diastolic +diathermy/SM +diathesis/M +diatomic +diatom/SM +diatonic +diatribe/MS +Diaz's +dibble/SDMG +dibs +DiCaprio/M +dice/GDRS +dicer/M +dicey +dichloride/M +dichotomization/M +dichotomize/DSG +dichotomous/PY +dichotomy/SM +dicier +diciest +dicing/M +Dickensian/S +dickens/M +Dickens/M +dicker/DG +Dickerson/M +dickey/SM +dick/GZXRDMS +Dickie/M +dickier +dickiest +Dickinson/M +Dickson/M +Dick/XM +Dicky/M +dicky's +dicotyledonous +dicotyledon/SM +dicta/M +Dictaphone/SM +dictate/SDNGX +dictation/M +dictatorialness/M +dictatorial/YP +dictator/MS +dictatorship/SM +dictionary/SM +diction/MS +dictum/M +didactically +didactic/S +didactics/M +did/AU +diddler/M +diddle/ZGRSD +Diderot/M +Didi/M +didn't +didoes +dido/M +Dido/M +didst +die/DS +Diefenbaker/M +Diego/M +dieing +dielectric/MS +diem +Diem/M +Diena/M +Dierdre/M +diereses +dieresis/M +diesel/GMDS +Diesel's +dies's +dies/U +dietary/S +dieter/M +Dieter/M +dietetic/S +dietetics/M +diethylaminoethyl +diethylstilbestrol/M +dietitian/MS +diet/RDGZSM +Dietrich/M +Dietz/M +difference/DSGM +difference's/I +differences/I +differentiability +differentiable +differential/SMY +differentiated/U +differentiate/XSDNG +differentiation/M +differentiator/SM +differentness +different/YI +differ/SZGRD +difficile +difficult/Y +difficulty/SM +diffidence/MS +diffident/Y +diffract/GSD +diffraction/SM +diffractometer/SM +diffuseness/MS +diffuse/PRSDZYVXNG +diffuser/M +diffusible +diffusional +diffusion/M +diffusiveness/M +diffusive/YP +diffusivity/M +digerati +digested/IU +digester/M +digestibility/MS +digestible/I +digestifs +digestion/ISM +digestive/YSP +digest/RDVGS +digger/MS +digging/S +digitalis/M +digitalization/MS +digitalized +digitalizes +digitalizing +digital/SY +digitization/M +digitizer/M +digitize/ZGDRS +digit/SM +dignified/U +dignify/DSG +dignitary/SM +dignity/ISM +digram +digraph/M +digraphs +digress/GVDS +digression/SM +digressiveness/M +digressive/PY +dig/TS +dihedral +Dijkstra/M +Dijon/M +dike/DRSMG +diker/M +diktat/SM +Dilan/M +dilapidate/XGNSD +dilapidation/M +dilatation/SM +dilated/YP +dilate/XVNGSD +dilation/M +dilatoriness/M +dilator/SM +dilatory/P +Dilbert/M +dilemma/MS +dilettante/MS +dilettantish +dilettantism/MS +diligence/SM +diligentness/M +diligent/YP +dilithium +Dillard/M +Dillie/M +Dillinger/M +dilling/R +dillis +Dill/M +Dillon/M +dill/SGMD +dillydally/GSD +Dilly/M +dilly/SM +dilogarithm +diluent +diluted/U +diluteness/M +dilute/RSDPXYVNG +dilution/M +Di/M +DiMaggio/M +dimensionality/M +dimensional/Y +dimensionless +dimension/MDGS +dimer/M +dime/SM +dimethylglyoxime +dimethyl/M +diminished/U +diminish/SDGBJ +diminuendo/SM +diminution/SM +diminutiveness/M +diminutive/SYP +Dimitri/M +Dimitry/M +dimity/MS +dimmed/U +dimmer/MS +dimmest +dimming +dimness/SM +dimorphism/M +dimple/MGSD +dimply/RT +dim/RYPZS +dimwit/MS +dimwitted +Dinah/M +Dina/M +dinar/SM +diner/M +dine/S +dinette/MS +dingbat/MS +ding/GD +dinghy/SM +dingily +dinginess/SM +dingle/MS +dingoes +dingo/MS +dingus/SM +dingy/PRST +dinky/RST +din/MDRZGS +dinned +dinner/SM +dinnertime/S +dinnerware/MS +Dinnie/M +dinning +Dinny/M +Dino/M +dinosaur/MS +dint/SGMD +diocesan/S +diocese/SM +Diocletian/M +diode/SM +Diogenes/M +Dione/M +Dionisio/M +Dionis/M +Dion/M +Dionne/M +Dionysian +Dionysus/M +Diophantine/M +diopter/MS +diorama/SM +Dior/M +dioxalate +dioxide/MS +dioxin/S +diphtheria/SM +diphthong/SM +diplexers +diploid/S +diplomacy/SM +diploma/SMDG +diplomata +diplomatically +diplomatic/S +diplomatics/M +diplomatist/SM +diplomat/MS +dipodic +dipody/M +dipole/MS +dipped +Dipper/M +dipper/SM +dipping/S +dippy/TR +dip/S +dipsomaniac/MS +dipsomania/SM +dipstick/MS +dipterous +diptych/M +diptychs +Dir +Dirac/M +directed/IUA +directionality +directional/SY +direction/MIS +directions/A +directive/SM +directivity/M +directly/I +directness/ISM +director/AMS +directorate/SM +directorial +directorship/SM +directory/SM +direct/RDYPTSVG +directrix/MS +directs/IA +direful/Y +direness/M +dire/YTRP +dirge/GSDM +Dirichlet/M +dirigible/S +dirk/GDMS +Dirk/M +dirndl/MS +dirtily +dirtiness/SM +dirt/MS +dirty/GPRSDT +Dis +disable/LZGD +disablement/MS +disabler/M +disabuse +disadvantaged/P +disagreeable/S +disallow/D +disambiguate/DSGNX +disappointed/Y +disappointing/Y +disarming/Y +disarrange/L +disastrous/Y +disband/L +disbandment/SM +disbar/L +disbarment/MS +disbarring +disbelieving/Y +disbursal/S +disburse/GDRSL +disbursement/MS +disburser/M +discerner/M +discernibility +discernible/I +discernibly +discerning/Y +discernment/MS +discern/SDRGL +disc/GDM +discharged/U +disciple/DSMG +discipleship/SM +disciplinarian/SM +disciplinary +disciplined/U +discipline/IDM +discipliner/M +disciplines +disciplining +disclosed/U +discography/MS +discolored/MP +discoloreds/U +discolor/G +discombobulate/SDGNX +discomfit/DG +discomfiture/MS +disco/MG +discommode/DG +disconcerting/Y +disconnectedness/S +disconnected/P +disconnecter/M +disconnect/R +disconsolate/YN +discordance/SM +discordant/Y +discord/G +discorporate/D +discotheque/MS +discount/B +discourage/LGDR +discouragement/MS +discouraging/Y +discoverable/I +discover/ADGS +discovered/U +discoverer/S +discovery/SAM +discreetly/I +discreetness's/I +discreetness/SM +discreet/TRYP +discrepancy/SM +discrepant/Y +discreteness/SM +discrete/YPNX +discretionary +discretion/IMS +discretization +discretized +discriminable +discriminant/MS +discriminated/U +discriminate/SDVNGX +discriminating/YI +discrimination/MI +discriminator/MS +discriminatory +discursiveness/S +discussant/MS +discussed/UA +discusser/M +discussion/SM +discus/SM +disdainfulness/M +disdainful/YP +disdain/MGSD +disease/G +disembowelment/SM +disembowel/SLGD +disengage/L +disfigure/L +disfigurement/MS +disfranchise/L +disfranchisement/MS +disgorge +disgrace/R +disgracer/M +disgruntle/DSLG +disgruntlement/MS +disguised/UY +disguise/R +disguiser/M +disgust +disgusted/Y +disgustful/Y +disgusting/Y +dishabille/SM +disharmonious +dishcloth/M +dishcloths +dishevel/LDGS +dishevelment/MS +dish/GD +dishonest +dishonored/U +dishpan/MS +dishrag/SM +dishtowel/SM +dishwasher/MS +dishwater/SM +disillusion/LGD +disillusionment/SM +disinfectant/MS +disinherit +disinterestedness/SM +disinterested/P +disinvest/L +disjoin +disjointedness/S +disjunctive/YS +disjunct/VS +disk/D +diskette/S +dislike/G +dislodge/LG +dislodgement/M +dismalness/M +dismal/PSTRY +dismantle/L +dismantlement/SM +dismay/D +dismayed/U +dismaying/Y +dis/MB +dismember/LG +dismemberment/MS +dismissive/Y +dismiss/RZ +Disneyland/M +Disney/M +disoblige/G +disorderedness/M +disordered/YP +disorderliness/M +disorderly/P +disorder/Y +disorganize +disorganized/U +disparagement/MS +disparager/M +disparage/RSDLG +disparaging/Y +disparateness/M +disparate/PSY +dispatch/Z +dispelled +dispelling +dispel/S +dispensable/I +dispensary/MS +dispensate/NX +dispensation/M +dispenser/M +dispense/ZGDRSB +dispersal/MS +dispersant/M +dispersed/Y +disperser/M +disperse/XDRSZLNGV +dispersible +dispersion/M +dispersiveness/M +dispersive/PY +dispirit/DSG +displace/L +display/AGDS +displayed/U +displeased/Y +displease/G +displeasure +disport +disposable/S +disposal/SM +dispose/IGSD +dispositional +disposition/ISM +disproportional +disproportionate/N +disproportionation/M +disprove/B +disputable/I +disputably/I +disputant/SM +disputation/SM +disputatious/Y +disputed/U +disputer/M +dispute/ZBGSRD +disquieting/Y +disquiet/M +disquisition/SM +Disraeli/M +disregardful +disrepair/M +disreputableness/M +disreputable/P +disrepute/M +disrespect +disrupted/U +disrupter/M +disrupt/GVDRS +disruption/MS +disruptive/YP +disruptor/M +dissatisfy +dissect/DG +dissed +dissembler/M +dissemble/ZGRSD +disseminate/XGNSD +dissemination/M +dissension/SM +dissenter/M +dissent/ZGSDR +dissertation/SM +disservice +disses +dissever +dissidence/SM +dissident/MS +dissimilar/S +dissing +dissipatedly +dissipatedness/M +dissipated/U +dissipater/M +dissipate/XRSDVNG +dissipation/M +dissociable/I +dissociate/DSXNGV +dissociated/U +dissociation/M +dissociative/Y +dissoluble/I +dissoluteness/SM +dissolute/PY +dissolve/ASDG +dissolved/U +dissonance/SM +dissonant/Y +dissuade/GDRS +dissuader/M +dissuasive +dist +distaff/SM +distal/Y +distance/DSMG +distantness/M +distant/YP +distaste +distemper +distend +distension +distention/SM +distillate/XNMS +distillation/M +distillery/MS +distincter +distinctest +distinction/MS +distinctiveness/MS +distinctive/YP +distinct/IYVP +distinctness/MSI +distinguishable/I +distinguishably/I +distinguish/BDRSG +distinguished/U +distinguisher/M +distort/BGDR +distorted/U +distorter/M +distortion/MS +distract/DG +distractedness/M +distracted/YP +distracting/Y +distrait +distraught/Y +distress +distressful +distressing/Y +distribute/ADXSVNGB +distributed/U +distributer +distributional +distribution/AM +distributiveness/M +distributive/SPY +distributivity +distributorship/M +distributor/SM +district/GSAD +district's +distrust/G +disturbance/SM +disturbed/U +disturber/M +disturbing/Y +disturb/ZGDRS +disulfide/M +disuse/M +disyllable/M +Dita/M +ditcher/M +ditch/MRSDG +dither/RDZSG +ditsy/TR +ditto/DMGS +ditty/SDGM +Ditzel/M +ditz/S +diuresis/M +diuretic/S +diurnal/SY +divalent/S +diva/MS +divan/SM +dived/M +divergence/SM +divergent/Y +diverge/SDG +diver/M +diverseness/MS +diverse/XYNP +diversification/M +diversifier/M +diversify/GSRDNX +diversionary +diversion/M +diversity/SM +divert/GSD +diverticulitis/SM +divertimento/M +dive/S +divestiture/MS +divest/LDGS +divestment/S +dividable +divide/AGDS +divided/U +dividend/MS +divider/MS +divination/SM +diviner/M +divine/RSDTZYG +divinity/MS +divisibility/IMS +divisible/I +divisional +division/SM +divisiveness/MS +divisive/PY +divisor/SM +divorcée/MS +divorce/GSDLM +divorcement/MS +divot/MS +div/TZGJDRS +divulge/GSD +divvy/GSDM +Dixiecrat/MS +dixieland +Dixieland/MS +Dixie/M +Dix/M +Dixon/M +dizzily +dizziness/SM +dizzying/Y +dizzy/PGRSDT +DJ +Djakarta's +djellabah's +djellaba/S +d/JGVX +Djibouti/M +DMD +Dmitri/M +DMZ +DNA +Dnepropetrovsk/M +Dnepr's +Dnieper's +Dniester/M +Dniren/M +DOA +doable +DOB +Dobbin/M +dobbin/MS +Doberman +Dobro/M +docent/SM +docile/Y +docility/MS +docker/M +docket/GSMD +dock/GZSRDM +dockland/MS +dockside/M +dockworker/S +dockyard/SM +doc/MS +Doctor +doctoral +doctorate/SM +doctor/GSDM +Doctorow/M +doctrinaire/S +doctrinal/Y +doctrine/SM +docudrama/S +documentary/MS +documentation/MS +documented/U +document/RDMZGS +DOD +dodder/DGS +dodecahedra +dodecahedral +dodecahedron/M +Dode/M +dodge/GZSRD +Dodge/M +dodgem/S +dodger/M +Dodgson/M +Dodie/M +Dodi/M +Dodington/M +Dodoma/M +dodo/SM +Dodson/M +Dody/M +DOE +Doe/M +doe/MS +doer/MU +does/AU +doeskin/MS +doesn't +d'oeuvre +doff/SGD +dogcart/SM +dogcatcher/MS +dogeared +Doge/M +doge/SM +dogfight/GMS +dogfish/SM +dogfought +doggedness/SM +dogged/PY +doggerel/SM +dogging +doggone/RSDTG +doggy/SRMT +doghouse/SM +dogie/SM +doglegged +doglegging +dogleg/SM +dogma/MS +dogmatically/U +dogmatic/S +dogmatics/M +dogmatism/SM +dogmatist/SM +dogsbody/M +dog/SM +dogtooth/M +Dogtown/M +dogtrot/MS +dogtrotted +dogtrotting +dogwood/SM +dogy's +Doha/M +doh's +doily/SM +doing/MU +Dolby/SM +doldrum/S +doldrums/M +doled/F +dolefuller +dolefullest +dolefulness/MS +doleful/PY +Dole/M +dole/MGDS +doles/F +Dolf/M +doling/F +dollar/SM +Dolley/M +Dollie/M +Dolli/M +Doll/M +doll/MDGS +dollop/GSMD +Dolly/M +dolly/SDMG +dolmen/MS +dolomite/SM +dolomitic +Dolores/M +Dolorita/SM +dolorous/Y +dolor/SM +dolphin/SM +Dolph/M +doltishness/SM +doltish/YP +dolt/MS +domain/MS +dome/DSMG +Domenic/M +Domenico/M +Domeniga/M +Domesday/M +domestically +domesticate/DSXGN +domesticated/U +domestication/M +domesticity/MS +domestic/S +domicile/SDMG +domiciliary +dominance/MS +dominant/YS +dominate/VNGXSD +domination/M +dominator/M +dominatrices +dominatrix +domineer/DSG +domineeringness/M +domineering/YP +Dominga/M +Domingo/M +Dominguez/M +Dominica/M +Dominican/MS +Dominick/M +Dominic/M +Dominik/M +Domini/M +dominion/MS +Dominique/M +dominoes +domino/M +Domitian/M +Dom/M +Donahue/M +Donald/M +Donaldson/M +Donall/M +Donal/M +Donalt/M +Dona/M +dona/MS +Donatello/M +donate/XVGNSD +donation/M +donative/M +Donaugh/M +Donavon/M +done/AUF +Donella/M +Donelle/M +Donetsk/M +Donetta/M +dong/GDMS +dongle/S +Donia/M +Donica/M +Donielle/M +Donizetti/M +donkey/MS +Donna/M +Donnamarie/M +donned +Donnell/M +Donnelly/M +Donne/M +Donner/M +Donnie/M +Donni/M +donning +donnishness/M +donnish/YP +Donn/RM +donnybrook/MS +Donny/M +donor/MS +Donovan/M +don/S +Don/SM +don't +donut/MS +donutted +donutting +doodad/MS +doodlebug/MS +doodler/M +doodle/SRDZG +doohickey/MS +Dooley/M +Doolittle/M +doom/MDGS +doomsday/SM +Doonesbury/M +doorbell/SM +door/GDMS +doorhandles +doorkeeper/M +doorkeep/RZ +doorknob/SM +doorman/M +doormat/SM +doormen +doornail/M +doorplate/SM +doors/I +doorstep/MS +doorstepped +doorstepping +doorstop/MS +doorway/MS +dooryard/SM +dopamine +dopant/M +dopa/SM +dope/DRSMZG +doper/M +dopey +dopier +dopiest +dopiness/S +Doppler/M +Dorado/M +Doralia/M +Doralin/M +Doralyn/M +Doralynne/M +Doralynn/M +Dora/M +Dorcas +Dorchester/M +Doreen/M +Dorelia/M +Dorella/M +Dorelle/M +Doré/M +Dorena/M +Dorene/M +Doretta/M +Dorette/M +Dorey/M +Doria/M +Dorian/M +Doric +Dorice/M +Dorie/M +Dori/MS +Dorine/M +Dorisa/M +Dorise/M +Dorita/M +dork/S +dorky/RT +dormancy/MS +dormant/S +dormer/M +dormice +dormitory/SM +dorm/MRZS +dormouse/M +Dorolice/M +Dorolisa/M +Doro/M +Dorotea/M +Doroteya/M +Dorothea/M +Dorothee/M +Dorothy/M +Dorree/M +Dorrie/M +Dorri/SM +Dorry/M +dorsal/YS +Dorsey/M +Dorthea/M +Dorthy/M +Dortmund/M +Dory/M +dory/SM +DOS +dosage/SM +dose/M +dos/GDS +Dosi/M +dosimeter/MS +dosimetry/M +dossier/MS +dost +Dostoevsky/M +DOT +dotage/SM +dotard/MS +doter/M +dote/S +Doti/M +doting/Y +Dot/M +dot/MDRSJZG +Dotson/M +dotted +Dottie/M +Dotti/M +dottiness/M +dotting +Dotty/M +dotty/PRT +do/TZRHGJ +Douala/M +Douay/M +Doubleday/M +doubled/UA +double/GPSRDZ +doubleheader/MS +doubleness/M +doubler/M +doubles/M +doublespeak/S +doublethink/M +doublet/MS +doubleton/M +doubling/A +doubloon/MS +doubly +doubt/AGSDMB +doubted/U +doubter/SM +doubtfulness/SM +doubtful/YP +doubting/Y +doubtlessness/M +doubtless/YP +douche/GSDM +Dougherty/M +dough/M +doughs +doughty/RT +doughy/RT +Dougie/M +Douglas/M +Douglass +Doug/M +Dougy/M +dourness/MS +Douro/M +dour/TYRP +douser/M +douse/SRDG +dovecote/MS +Dover/M +dove/RSM +dovetail/GSDM +dovish +Dov/MR +dowager/SM +dowdily +dowdiness/MS +dowdy/TPSR +dowel/GMDS +dower/GDMS +Dow/M +downbeat/SM +downcast/S +downdraft/M +downer/M +Downey/M +downfall/NMS +downgrade/GSD +down/GZSRD +downheartedness/MS +downhearted/PY +downhill/RS +downland +download/DGS +downpipes +downplay/GDS +downpour/MS +downrange +downrightness/M +downright/YP +downriver +Downs +downscale/GSD +downside/S +downsize/DSG +downslope +downspout/SM +downstage/S +downstairs +downstate/SR +downstream +downswing/MS +downtime/SM +downtowner/M +downtown/MRS +downtrend/M +downtrodden +downturn/MS +downwardness/M +downward/YPS +downwind +downy/RT +dowry/SM +dowse/GZSRD +dowser/M +doxology/MS +doyenne/SM +doyen/SM +Doyle/M +Doy/M +doze +dozen/GHD +dozenths +dozer/M +doz/XGNDRS +dozy +DP +DPs +dpt +DPT +drabbed +drabber +drabbest +drabbing +drabness/MS +drab/YSP +drachma/MS +Draco/M +draconian +Draconian +Dracula/M +draft/AMDGS +draftee/SM +drafter/MS +draftily +draftiness/SM +drafting/S +draftsman/M +draftsmanship/SM +draftsmen +draftsperson +draftswoman +draftswomen +drafty/PTR +dragged +dragger/M +dragging/Y +draggy/RT +drag/MS +dragnet/MS +dragonfly/SM +dragonhead/M +dragon/SM +dragoon/DMGS +drainage/MS +drainboard/SM +drained/U +drainer/M +drainpipe/MS +drain/SZGRDM +Drake/M +drake/SM +Dramamine/MS +drama/SM +dramatically/U +dramatical/Y +dramatic/S +dramatics/M +dramatist/MS +dramatization/MS +dramatized/U +dramatizer/M +dramatize/SRDZG +dramaturgy/M +Drambuie/M +drammed +dramming +dram/MS +drank +Drano/M +draper/M +drapery/MS +drape/SRDGZ +drastic +drastically +drat/S +dratted +dratting +Dravidian/M +drawable +draw/ASG +drawback/MS +drawbridge/SM +drawer/SM +drawing/SM +drawler/M +drawling/Y +drawl/RDSG +drawly +drawn/AI +drawnly +drawnness +drawstring/MS +dray/SMDG +dreadfulness/SM +dreadful/YPS +dreadlocks +dreadnought/SM +dread/SRDG +dreamboat/SM +dreamed/U +dreamer/M +dreamily +dreaminess/SM +dreaming/Y +dreamland/SM +dreamlessness/M +dreamless/PY +dreamlike +dream/SMRDZG +dreamworld/S +dreamy/PTR +drearily +dreariness/SM +drear/S +dreary/TRSP +Dreddy/M +dredge/MZGSRD +dredger/M +Dredi/M +dreg/MS +Dreiser/M +Dre/M +drencher/M +drench/GDRS +Dresden/M +dress/ADRSG +dressage/MS +dressed/U +dresser/MS +dresser's/A +dresses/U +dressiness/SM +dressing/MS +dressmaker/MS +dressmaking/SM +dressy/PTR +drew/A +Drew/M +Drexel/M +Dreyfus/M +Dreyfuss +dribble/DRSGZ +dribbler/M +driblet/SM +drib/SM +dried/U +drier/M +drifter/M +drifting/Y +drift/RDZSG +driftwood/SM +driller/M +drilling/M +drillmaster/SM +drill/MRDZGS +drinkable/S +drink/BRSZG +drinker/M +dripped +dripping/MS +drippy/RT +drip/SM +driveler/M +drivel/GZDRS +driven/P +driver/M +drive/SRBGZJ +driveway/MS +drizzle/DSGM +drizzling/Y +drizzly/TR +Dr/M +drogue/MS +drollery/SM +drollness/MS +droll/RDSPTG +drolly +dromedary/MS +Drona/M +drone/SRDGM +droning/Y +drool/GSRD +droopiness/MS +drooping/Y +droop/SGD +droopy/PRT +drophead +dropkick/S +droplet/SM +dropout/MS +dropped +dropper/SM +dropping/MS +dropsical +drop/SM +dropsy/MS +drosophila/M +dross/SM +drought/SM +drover/M +drove/SRDGZ +drowner/M +drown/RDSJG +drowse/SDG +drowsily +drowsiness/SM +drowsy/PTR +drubbed +drubber/MS +drubbing/SM +drub/S +Drucie/M +Drucill/M +Druci/M +Drucy/M +drudge/MGSRD +drudger/M +drudgery/SM +drudging/Y +Drud/M +drugged +druggie/SRT +drugging +druggist/SM +Drugi/M +drugless +drug/SM +drugstore/SM +druidism/MS +druid/MS +Druid's +Dru/M +drumbeat/SGM +drumhead/M +drumlin/MS +drummed +drummer/SM +drumming +Drummond/M +drum/SM +drumstick/SM +drunkard/SM +drunkenness/SM +drunken/YP +drunk/SRNYMT +drupe/SM +Drury/M +Drusie/M +Drusilla/M +Drusi/M +Drusy/M +druthers +dryad/MS +Dryden/M +dryer/MS +dry/GYDRSTZ +dryish +dryness/SM +drys +drystone +drywall/GSD +D's +d's/A +Dshubba/M +DST +DTP +dualism/MS +dualistic +dualist/M +duality/MS +dual/YS +Duane/M +Dubai/M +dubbed +dubber/S +dubbing/M +dubbin/MS +Dubcek/M +Dubhe/M +dubiety/MS +dubiousness/SM +dubious/YP +Dublin/M +Dubrovnik/M +dub/S +Dubuque/M +ducal +ducat/SM +duce/CAIKF +duce's +Duchamp/M +duchess/MS +duchy/SM +duckbill/SM +ducker/M +duck/GSRDM +duckling/SM +duckpins +duckpond +duckweed/MS +ducky/RSMT +ducted/CFI +ductile/I +ductility/SM +ducting/F +duct/KMSF +ductless +duct's/A +ducts/CI +ductwork/M +dudder +dude/MS +dudgeon/SM +dud/GMDS +Dudley/M +Dud/M +duelist/MS +duel/MRDGZSJ +dueness/M +duenna/MS +due/PMS +duet/MS +duetted +duetting +duffel/M +duffer/M +duff/GZSRDM +Duffie/M +Duff/M +Duffy/M +Dugald/M +dugout/SM +dug/S +duh +DUI +Duisburg/M +dukedom/SM +duke/DSMG +Duke/M +Dukey/M +Dukie/M +Duky/M +Dulcea/M +Dulce/M +dulcet/SY +Dulcia/M +Dulciana/M +Dulcie/M +dulcify +Dulci/M +dulcimer/MS +Dulcinea/M +Dulcine/M +Dulcy/M +dullard/MS +Dulles/M +dullness/MS +dull/SRDPGT +dully +dulness's +Dulsea/M +Duluth/M +duly/U +Du/M +Dumas +dumbbell/MS +dumbfound/GSDR +dumbness/MS +Dumbo/M +dumb/PSGTYRD +dumbstruck +dumbwaiter/SM +dumdum/MS +dummy/SDMG +Dumont/M +dumper/UM +dumpiness/MS +dumpling/MS +dump/SGZRD +dumpster/S +Dumpster/S +Dumpty/M +dumpy/PRST +Dunant/M +Dunbar/M +Duncan/M +dunce/MS +Dunc/M +Dundee/M +dunderhead/MS +Dunedin/M +dune/SM +dungaree/SM +dungeon/GSMD +dunghill/MS +dung/SGDM +Dunham/M +dunker/M +dunk/GSRD +Dunkirk/M +Dunlap/M +Dun/M +dunned +Dunne/M +dunner +dunnest +dunning +Dunn/M +dunno/M +dun/S +Dunstan/M +duodecimal/S +duodena +duodenal +duodenum/M +duologue/M +duo/MS +duopolist +duopoly/M +dupe/NGDRSMZ +duper/M +dupion/M +duple +duplexer/M +duplex/MSRDG +duplicability/M +duplicable +duplicate/ADSGNX +duplication/AM +duplicative +duplicator/MS +duplicitous +duplicity/SM +Dupont/MS +DuPont/MS +durability/MS +durableness/M +durable/PS +durably +Duracell/M +durance/SM +Durand/M +Duran/M +Durante/M +Durant/M +durational +duration/MS +Durban/M +Dürer/M +duress/SM +Durex/M +Durham/MS +during +Durkee/M +Durkheim/M +Dur/M +Durocher/M +durst +durum/MS +Durward/M +Duse/M +Dusenberg/M +Dusenbury/M +Dushanbe/M +dusk/GDMS +duskiness/MS +dusky/RPT +Düsseldorf +dustbin/MS +dustcart/M +dustcover +duster/M +dustily +dustiness/MS +dusting/M +Dustin/M +dustless +dustman/M +dustmen +dust/MRDGZS +dustpan/SM +Dusty/M +dusty/RPT +Dutch/M +Dutchman/M +Dutchmen +dutch/MS +Dutchwoman +Dutchwomen +duteous/Y +dutiable +dutifulness/S +dutiful/UPY +duty/SM +Duvalier/M +duvet/SM +duxes +Dvina/M +Dvorák/M +Dwain/M +dwarfish +dwarfism/MS +dwarf/MTGSPRD +Dwayne/M +dweeb/S +dweller/SM +dwell/IGS +dwelling/MS +dwelt/I +DWI +Dwight/M +dwindle/GSD +dyadic +dyad/MS +Dyana/M +Dyane/M +Dyan/M +Dyanna/M +Dyanne/M +Dyann/M +dybbukim +dybbuk/SM +dyed/A +dyeing/M +dye/JDRSMZG +dyer/M +Dyer/M +dyes/A +dyestuff/SM +dying/UA +Dyke/M +dyke's +Dylan/M +Dy/M +Dynah/M +Dyna/M +dynamical/Y +dynamic/S +dynamics/M +dynamism/SM +dynamiter/M +dynamite/RSDZMG +dynamized +dynamo/MS +dynastic +dynasty/MS +dyne/M +dysentery/SM +dysfunctional +dysfunction/MS +dyslectic/S +dyslexia/MS +dyslexically +dyslexic/S +dyspepsia/MS +dyspeptic/S +dysprosium/MS +dystopia/M +dystrophy/M +dz +Dzerzhinsky/M +E +ea +each +Eachelle/M +Eada/M +Eadie/M +Eadith/M +Eadmund/M +eagerness/MS +eager/TSPRYM +eagle/SDGM +eaglet/SM +Eakins/M +Ealasaid/M +Eal/M +Eamon/M +earache/SM +eardrum/SM +earful/MS +ear/GSMDYH +Earhart/M +earing/M +earldom/MS +Earle/M +Earlene/M +Earlie/M +Earline/M +earliness/SM +Earl/M +earl/MS +earlobe/S +Early/M +early/PRST +earmark/DGSJ +earmuff/SM +earned/U +earner/M +Earnestine/M +Earnest/M +earnestness/MS +earnest/PYS +earn/GRDZTSJ +earning/M +earphone/MS +earpieces +earplug/MS +Earp/M +earring/MS +earshot/MS +earsplitting +Eartha/M +earthbound +earthed/U +earthenware/MS +earthiness/SM +earthliness/M +earthling/MS +earthly/TPR +earth/MDNYG +earthmen +earthmover/M +earthmoving +earthquake/SDGM +earthshaking +earths/U +earthward/S +earthwork/MS +earthworm/MS +earthy/PTR +Earvin/M +earwax/MS +earwigged +earwigging +earwig/MS +eased/E +ease/LDRSMG +easel/MS +easement/MS +easer/M +ease's/EU +eases/UE +easies +easily/U +easiness/MSU +easing/M +eastbound +easterly/S +Easter/M +easterner/M +Easterner/M +easternmost +Eastern/RZ +eastern/ZR +easter/Y +east/GSMR +Easthampton/M +easting/M +Eastland/M +Eastman/M +eastward/S +Eastwick/M +Eastwood/M +East/ZSMR +easygoingness/M +easygoing/P +easy/PUTR +eatables +eatable/U +eaten/U +eater/M +eatery/MS +eating/M +Eaton/M +eat/SJZGNRB +eavesdropped +eavesdropper/MS +eavesdropping +eavesdrop/S +eave/SM +Eba/M +Ebba/M +ebb/DSG +EBCDIC +Ebeneezer/M +Ebeneser/M +Ebenezer/M +Eben/M +Eberhard/M +Eberto/M +Eb/MN +Ebola +Ebonee/M +Ebonics +Ebony/M +ebony/SM +Ebro/M +ebullience/SM +ebullient/Y +ebullition/SM +EC +eccentrically +eccentricity/SM +eccentric/MS +eccl +Eccles +Ecclesiastes/M +ecclesiastical/Y +ecclesiastic/MS +ECG +echelon/SGDM +echinoderm/SM +echo/DMG +echoed/A +echoes/A +echoic +echolocation/SM +éclair/MS +éclat/MS +eclectically +eclecticism/MS +eclectic/S +eclipse/MGSD +ecliptic/MS +eclogue/MS +ecocide/SM +ecol +Ecole/M +ecologic +ecological/Y +ecologist/MS +ecology/MS +Eco/M +econ +Econometrica/M +econometricians +econometric/S +econometrics/M +economical/YU +economic/S +economics/M +economist/MS +economization +economize/GZSRD +economizer/M +economizing/U +economy/MS +ecosystem/MS +ecru/SM +ecstasy/MS +Ecstasy/S +ecstatically +ecstatic/S +ectoplasm/M +Ecuadoran/S +Ecuadorean/S +Ecuadorian/S +Ecuador/M +ecumenical/Y +ecumenicism/SM +ecumenicist/MS +ecumenic/MS +ecumenics/M +ecumenism/SM +ecumenist/MS +eczema/MS +Eda/M +Edam/SM +Edan/M +ed/ASC +Edda/M +Eddie/M +Eddi/M +Edd/M +Eddy/M +eddy/SDMG +Edee/M +Edeline/M +edelweiss/MS +Ede/M +edema/SM +edematous +eden +Eden/M +Edgard/M +Edgardo/M +Edgar/M +edge/DRSMZGJ +edgeless +edger/M +Edgerton/M +Edgewater/M +edgewise +Edgewood/M +edgily +edginess/MS +edging/M +edgy/TRP +edibility/MS +edibleness/SM +edible/SP +edict/SM +Edie/M +edification/M +edifice/SM +edifier/M +edifying/U +edify/ZNXGRSD +Edik/M +Edi/MH +Edinburgh/M +Edin/M +Edison/M +editable +Edita/M +edited/IU +Editha/M +Edithe/M +Edith/M +edition/SM +editorialist/M +editorialize/DRSG +editorializer/M +editorial/YS +editor/MS +editorship/MS +edit/SADG +Ediva/M +Edlin/M +Edmond/M +Edmon/M +Edmonton/M +Edmund/M +Edna/M +Edouard/M +EDP +eds +Edsel/M +Edsger/M +EDT +Eduard/M +Eduardo/M +educability/SM +educable/S +educated/YP +educate/XASDGN +educationalists +educational/Y +education/AM +educationists +educative +educator/MS +educ/DBG +educe/S +eduction/M +Eduino/M +edutainment/S +Edvard/M +Edwardian +Edwardo/M +Edward/SM +Edwina/M +Edwin/M +Ed/XMN +Edy/M +Edythe/M +Edyth/M +EEC +EEG +eek/S +eelgrass/M +eel/MS +e'en +EEO +EEOC +e'er +eerie/RT +eerily +eeriness/MS +Eeyore/M +effaceable/I +effacement/MS +effacer/M +efface/SRDLG +effectiveness/ISM +effectives +effective/YIP +effector/MS +effect/SMDGV +effectual/IYP +effectualness/MI +effectuate/SDGN +effectuation/M +effeminacy/MS +effeminate/SY +effendi/MS +efferent/SY +effervesce/GSD +effervescence/SM +effervescent/Y +effeteness/SM +effete/YP +efficacious/IPY +efficaciousness/MI +efficacy/IMS +efficiency/MIS +efficient/ISY +Effie/M +effigy/SM +effloresce +efflorescence/SM +efflorescent +effluence/SM +effluent/MS +effluvia +effluvium/M +effluxion +efflux/M +effortlessness/SM +effortless/PY +effort/MS +effrontery/MS +effulgence/SM +effulgent +effuse/XSDVGN +effusion/M +effusiveness/MS +effusive/YP +EFL +e/FMDS +Efrain/M +Efrem/M +Efren/M +EFT +egad +egalitarian/I +egalitarianism/MS +egalitarians +EGA/M +Egan/M +Egbert/M +Egerton/M +eggbeater/SM +eggcup/MS +egger/M +egg/GMDRS +eggheaded/P +egghead/SDM +eggnog/SM +eggplant/MS +eggshell/SM +egis's +eglantine/MS +egocentrically +egocentricity/SM +egocentric/S +egoism/SM +egoistic +egoistical/Y +egoist/SM +egomaniac/MS +egomania/MS +Egon/M +Egor/M +ego/SM +egotism/SM +egotistic +egotistical/Y +egotist/MS +egregiousness/MS +egregious/PY +egress/SDMG +egret/SM +Egyptian/S +Egypt/M +Egyptology/M +eh +Ehrlich/M +Eichmann/M +eiderdown/SM +eider/SM +eidetic +Eiffel/M +eigenfunction/MS +eigenstate/S +eigenvalue/SM +eigenvector/MS +eighteen/MHS +eighteenths +eightfold +eighth/MS +eighths +eightieths +eightpence +eight/SM +eighty/SHM +Eileen/M +Eilis/M +Eimile/M +Einsteinian +einsteinium/MS +Einstein/SM +Eire/M +Eirena/M +Eisenhower/M +Eisenstein/M +Eisner/M +eisteddfod/M +either +ejaculate/SDXNG +ejaculation/M +ejaculatory +ejecta +ejection/SM +ejector/SM +eject/VGSD +Ekaterina/M +Ekberg/M +eked/A +eke/DSG +EKG +Ekstrom/M +Ektachrome/M +elaborateness/SM +elaborate/SDYPVNGX +elaboration/M +elaborators +Elaina/M +Elaine/M +Elana/M +eland/SM +Elane/M +élan/M +Elanor/M +elans +elapse/SDG +el/AS +elastically/I +elasticated +elasticity/SM +elasticize/GDS +elastic/S +elastodynamics +elastomer/M +elatedness/M +elated/PY +elater/M +elate/SRDXGN +elation/M +Elayne/M +Elba/MS +Elbe/M +Elberta/M +Elbertina/M +Elbertine/M +Elbert/M +elbow/GDMS +elbowroom/SM +Elbrus/M +Elden/M +elderberry/MS +elderflower +elderliness/M +elderly/PS +elder/SY +eldest +Eldin/M +Eldon/M +Eldorado's +Eldredge/M +Eldridge/M +Eleanora/M +Eleanore/M +Eleanor/M +Eleazar/M +electable/U +elect/ASGD +elected/U +electioneer/GSD +election/SAM +electiveness/M +elective/SPY +electoral/Y +electorate/SM +elector/SM +Electra/M +electress/M +electricalness/M +electrical/PY +electrician/SM +electricity/SM +electric/S +electrification/M +electrifier/M +electrify/ZXGNDRS +electrocardiogram/MS +electrocardiograph/M +electrocardiographs +electrocardiography/MS +electrochemical/Y +electrocute/GNXSD +electrocution/M +electrode/SM +electrodynamics/M +electrodynamic/YS +electroencephalogram/SM +electroencephalographic +electroencephalograph/M +electroencephalographs +electroencephalography/MS +electrologist/MS +electroluminescent +electrolysis/M +electrolyte/SM +electrolytic +electrolytically +electrolyze/SDG +electro/M +electromagnetic +electromagnetically +electromagnetism/SM +electromagnet/SM +electromechanical +electromechanics +electromotive +electromyograph +electromyographic +electromyographically +electromyography/M +electronegative +electronically +electronic/S +electronics/M +electron/MS +electrophoresis/M +electrophorus/M +electroplate/DSG +electroscope/MS +electroscopic +electroshock/GDMS +electrostatic/S +electrostatics/M +electrotherapist/M +electrotype/GSDZM +electroweak +eleemosynary +Eleen/M +elegance/ISM +elegant/YI +elegiacal +elegiac/S +elegy/SM +elem +elemental/YS +elementarily +elementariness/M +elementary/P +element/MS +Elena/M +Elene/M +Eleni/M +Elenore/M +Eleonora/M +Eleonore/M +elephantiases +elephantiasis/M +elephantine +elephant/SM +elevated/S +elevate/XDSNG +elevation/M +elevator/SM +eleven/HM +elevens/S +elevenths +elev/NX +Elfie/M +elfin/S +elfish +elf/M +Elfreda/M +Elfrida/M +Elfrieda/M +Elga/M +Elgar/M +Elianora/M +Elianore/M +Elia/SM +Elicia/M +elicitation/MS +elicit/GSD +elide/GSD +Elie/M +eligibility/ISM +eligible/SI +Elihu/M +Elijah/M +Eli/M +eliminate/XSDYVGN +elimination/M +eliminator/SM +Elinore/M +Elinor/M +Eliot/M +Elisabeth/M +Elisabet/M +Elisabetta/M +Elisa/M +Elise/M +Eliseo/M +Elisha/M +elision/SM +Elissa/M +Elita/M +elite/MPS +elitism/SM +elitist/SM +elixir/MS +Elizabethan/S +Elizabeth/M +Elizabet/M +Eliza/M +Elka/M +Elke/M +Elkhart/M +elk/MS +Elladine/M +Ella/M +Ellary/M +Elle/M +Ellene/M +Ellen/M +Ellerey/M +Ellery/M +Ellesmere/M +Ellette/M +Ellie/M +Ellington/M +Elliot/M +Elliott/M +ellipse/MS +ellipsis/M +ellipsoidal +ellipsoid/MS +ellipsometer/MS +ellipsometry +elliptic +elliptical/YS +ellipticity/M +Elli/SM +Ellison/M +Ellissa/M +ell/MS +Ellswerth/M +Ellsworth/M +Ellwood/M +Elly/M +Ellyn/M +Ellynn/M +Elma/M +Elmer/M +Elmhurst/M +Elmira/M +elm/MRS +Elmo/M +Elmore/M +Elmsford/M +El/MY +Elna/MH +Elnar/M +Elnath/M +Elnora/M +Elnore/M +elocutionary +elocutionist/MS +elocution/SM +elodea/S +Elohim/M +Eloisa/M +Eloise/M +elongate/NGXSD +elongation/M +Elonore/M +elopement/MS +eloper/M +elope/SRDLG +eloquence/SM +eloquent/IY +Elora/M +Eloy/M +Elroy/M +els +Elsa/M +Elsbeth/M +else/M +Else/M +Elset/M +elsewhere +Elsey/M +Elsie/M +Elsi/M +Elsinore/M +Elspeth/M +Elston/M +Elsworth/M +Elsy/M +Eltanin/M +Elton/M +eluate/SM +elucidate/SDVNGX +elucidation/M +elude/GSD +elusiveness/SM +elusive/YP +elute/DGN +elution/M +Elva/M +elven +Elvera/M +elver/SM +elves/M +Elvia/M +Elvina/M +Elvin/M +Elvira/M +elvish +Elvis/M +Elvyn/M +Elwin/M +Elwira/M +Elwood/M +Elwyn/M +Ely/M +Elyn/M +Elysée/M +Elysees +Elyse/M +Elysha/M +Elysia/M +elysian +Elysian +Elysium/SM +Elyssa/M +EM +emaciate/NGXDS +emaciation/M +emacs/M +Emacs/M +email/SMDG +Emalee/M +Emalia/M +Ema/M +emanate/XSDVNG +emanation/M +emancipate/DSXGN +emancipation/M +emancipator/MS +Emanuele/M +Emanuel/M +emasculate/GNDSX +emasculation/M +embalmer/M +embalm/ZGRDS +embank/GLDS +embankment/MS +embarcadero +embargoes +embargo/GMD +embark/ADESG +embarkation/EMS +embarrassedly +embarrassed/U +embarrassing/Y +embarrassment/MS +embarrass/SDLG +embassy/MS +embattle/DSG +embeddable +embedded +embedder +embedding/MS +embed/S +embellished/U +embellisher/M +embellish/LGRSD +embellishment/MS +ember/MS +embezzle/LZGDRS +embezzlement/MS +embezzler/M +embitter/LGDS +embitterment/SM +emblazon/DLGS +emblazonment/SM +emblematic +emblem/GSMD +embodier/M +embodiment/ESM +embody/ESDGA +embolden/DSG +embolism/SM +embosom +embosser/M +emboss/ZGRSD +embouchure/SM +embower/GSD +embraceable +embracer/M +embrace/RSDVG +embracing/Y +embrasure/MS +embrittle +embrocation/SM +embroiderer/M +embroider/SGZDR +embroidery/MS +embroilment/MS +embroil/SLDG +embryologist/SM +embryology/MS +embryonic +embryo/SM +emceeing +emcee/SDM +Emelda/M +Emelen/M +Emelia/M +Emelina/M +Emeline/M +Emelita/M +Emelyne/M +emendation/MS +emend/SRDGB +emerald/SM +Emera/M +emerge/ADSG +emergence/MAS +emergency/SM +emergent/S +emerita +emeritae +emeriti +emeritus +Emerson/M +Emery/M +emery/MGSD +emetic/S +emf/S +emigrant/MS +emigrate/SDXNG +emigration/M +émigré/S +Emilee/M +Emile/M +Emilia/M +Emilie/M +Emili/M +Emiline/M +Emilio/M +Emil/M +Emily/M +eminence/MS +Eminence/MS +eminent/Y +emirate/SM +emir/SM +emissary/SM +emission/AMS +emissivity/MS +emit/S +emittance/M +emitted +emitter/SM +emitting +Emlen/M +Emlyn/M +Emlynne/M +Emlynn/M +em/M +Em/M +Emmalee/M +Emmaline/M +Emmalyn/M +Emmalynne/M +Emmalynn/M +Emma/M +Emmanuel/M +Emmeline/M +Emmerich/M +Emmery/M +Emmet/M +Emmett/M +Emmey/M +Emmie/M +Emmi/M +Emmit/M +Emmott/M +Emmye/M +Emmy/SM +Emogene/M +emollient/S +emolument/SM +Emory/M +emote/SDVGNX +emotionalism/MS +emotionality/M +emotionalize/GDS +emotional/UY +emotionless +emotion/M +emotive/Y +empaneled +empaneling +empath +empathetic +empathetical/Y +empathic +empathize/SDG +empathy/MS +emperor/MS +emphases +emphasis/M +emphasize/ZGCRSDA +emphatically/U +emphatic/U +emphysema/SM +emphysematous +empire/MS +empirical/Y +empiricism/SM +empiricist/SM +empiric/SM +emplace/L +emplacement/MS +employability/UM +employable/US +employed/U +employee/SM +employer/SM +employ/LAGDS +employment/UMAS +emporium/MS +empower/GLSD +empowerment/MS +empress/MS +emptier/M +emptily +emptiness/SM +empty/GRSDPT +empyrean/SM +ems/C +EMT +emulate/SDVGNX +emulation/M +emulative/Y +emulator/MS +emulsification/M +emulsifier/M +emulsify/NZSRDXG +emulsion/SM +emu/SM +Emylee/M +Emyle/M +enabler/M +enable/SRDZG +enactment/ASM +enact/SGALD +enameler/M +enamelware/SM +enamel/ZGJMDRS +enamor/DSG +en/BM +enc +encamp/LSDG +encampment/MS +encapsulate/SDGNX +encapsulation/M +encase/GSDL +encasement/SM +encephalitic +encephalitides +encephalitis/M +encephalographic +encephalopathy/M +enchain/SGD +enchanter/MS +enchant/ESLDG +enchanting/Y +enchantment/MSE +enchantress/MS +enchilada/SM +encipherer/M +encipher/SRDG +encircle/GLDS +encirclement/SM +encl +enclave/MGDS +enclosed/U +enclose/GDS +enclosure/SM +encoder/M +encode/ZJGSRD +encomium/SM +encompass/GDS +encore/GSD +encounter/GSD +encouragement/SM +encourager/M +encourage/SRDGL +encouraging/Y +encroacher/M +encroach/LGRSD +encroachment/MS +encrustation/MS +encrust/DSG +encrypt/DGS +encrypted/U +encryption/SM +encumbered/U +encumber/SEDG +encumbrancer/M +encumbrance/SRM +ency +encyclical/SM +encyclopaedia's +encyclopedia/SM +encyclopedic +encyst/GSLD +encystment/MS +endanger/DGSL +endangerment/SM +endear/GSLD +endearing/Y +endearment/MS +endeavored/U +endeavorer/M +endeavor/GZSMRD +endemically +endemicity +endemic/S +ender/M +endgame/M +Endicott/M +ending/M +endive/SM +endlessness/MS +endless/PY +endmost +endnote/MS +endocrine/S +endocrinologist/SM +endocrinology/SM +endogamous +endogamy/M +endogenous/Y +endomorphism/SM +endorse/DRSZGL +endorsement/MS +endorser/M +endoscope/MS +endoscopic +endoscopy/SM +endosperm/M +endothelial +endothermic +endow/GSDL +endowment/SM +endpoint/MS +endue/SDG +endungeoned +endurable/U +endurably/U +endurance/SM +endure/BSDG +enduringness/M +enduring/YP +endways +Endymion/M +end/ZGVMDRSJ +ENE +enema/SM +enemy/SM +energetically +energetic/S +energetics/M +energized/U +energizer/M +energize/ZGDRS +energy/MS +enervate/XNGVDS +enervation/M +enfeeble/GLDS +enfeeblement/SM +enfilade/MGDS +enfold/SGD +enforceability/M +enforceable/U +enforced/Y +enforce/LDRSZG +enforcement/SM +enforcer/M +enforcible/U +enfranchise/ELDRSG +enfranchisement/EMS +enfranchiser/M +engage/ADSGE +engagement/SEM +engaging/Y +Engelbert/M +Engel/MS +engender/DGS +engineer/GSMDJ +engineering/MY +engine/MGSD +England/M +england/ZR +Englebert/M +Englewood/M +English/GDRSM +Englishman/M +Englishmen +Englishwoman/M +Englishwomen +Eng/M +engorge/LGDS +engorgement/MS +Engracia/M +engram/MS +engraver/M +engrave/ZGDRSJ +engraving/M +engrossed/Y +engrosser/M +engross/GLDRS +engrossing/Y +engrossment/SM +engulf/GDSL +engulfment/SM +enhanceable +enhance/LZGDRS +enhancement/MS +enhancer/M +enharmonic +Enid/M +Enif/M +enigma/MS +enigmatic +enigmatically +Eniwetok/M +enjambement's +enjambment/MS +enjoinder +enjoin/GSD +enjoyability +enjoyableness/M +enjoyable/P +enjoyably +enjoy/GBDSL +enjoyment/SM +Enkidu/M +enlargeable +enlarge/LDRSZG +enlargement/MS +enlarger/M +enlightened/U +enlighten/GDSL +enlightening/U +enlightenment/SM +enlistee/MS +enlister/M +enlistment/SAM +enlist/SAGDL +enliven/LDGS +enlivenment/SM +enmesh/DSLG +enmeshment/SM +enmity/MS +Ennis/M +ennoble/LDRSG +ennoblement/SM +ennobler/M +ennui/SM +Enoch/M +enormity/SM +enormousness/MS +enormous/YP +Enos +enough +enoughs +enplane/DSG +enqueue/DS +enquirer/S +enquiringly +enrage/SDG +enrapture/GSD +Enrica/M +enricher/M +Enrichetta/M +enrich/LDSRG +enrichment/SM +Enrico/M +Enrika/M +Enrique/M +Enriqueta/M +enrobed +enrollee/SM +enroll/LGSD +enrollment/SM +ens +ensconce/DSG +ensemble/MS +enshrine/DSLG +enshrinement/SM +enshroud/DGS +ensign/SM +ensilage/DSMG +enslavement/MS +enslaver/M +enslave/ZGLDSR +ensnare/GLDS +ensnarement/SM +Ensolite/M +ensue/SDG +ensurer/M +ensure/SRDZG +entailer/M +entailment/MS +entail/SDRLG +entangle/EGDRSL +entanglement/ESM +entangler/EM +entente/MS +enter/ASDG +entered/U +enterer/M +enteritides +enteritis/SM +enterprise/GMSR +Enterprise/M +enterpriser/M +enterprising/Y +entertainer/M +entertaining/Y +entertainment/SM +entertain/SGZRDL +enthalpy/SM +enthrall/GDSL +enthrallment/SM +enthrone/GDSL +enthronement/MS +enthuse/DSG +enthusiasm/SM +enthusiastically/U +enthusiastic/U +enthusiast/MS +enticement/SM +entice/SRDJLZG +enticing/Y +entire/SY +entirety/SM +entitle/GLDS +entitlement/MS +entity/SM +entomb/GDSL +entombment/MS +entomological +entomologist/S +entomology/MS +entourage/SM +entr'acte/S +entrails +entrainer/M +entrain/GSLDR +entrancement/MS +entrance/MGDSL +entranceway/M +entrancing/Y +entrant/MS +entrapment/SM +entrapped +entrapping +entrap/SL +entreating/Y +entreat/SGD +entreaty/SM +entrée/S +entrench/LSDG +entrenchment/MS +entrepreneurial +entrepreneur/MS +entrepreneurship/M +entropic +entropy/MS +entrust/DSG +entry/ASM +entryway/SM +entwine/DSG +enumerable +enumerate/AN +enumerated/U +enumerates +enumerating +enumeration's/A +enumeration/SM +enumerative +enumerator/SM +enunciable +enunciated/U +enunciate/XGNSD +enunciation/M +enureses +enuresis/M +envelope/MS +enveloper/M +envelopment/MS +envelop/ZGLSDR +envenom/SDG +enviableness/M +enviable/U +enviably +envied/U +envier/M +enviousness/SM +envious/PY +environ/LGSD +environmentalism/SM +environmentalist/SM +environmental/Y +environment/MS +envisage/DSG +envision/GSD +envoy/SM +envying/Y +envy/SRDMG +enzymatic +enzymatically +enzyme/SM +enzymology/M +Eocene +EOE +eohippus/M +Eolanda/M +Eolande/M +eolian +eon/SM +EPA +epaulet/SM +épée/S +ephedrine/MS +ephemeral/SY +ephemera/MS +ephemerids +ephemeris/M +Ephesian/S +Ephesians/M +Ephesus/M +Ephraim/M +Ephrayim/M +Ephrem/M +epically +epicenter/SM +epic/SM +Epictetus/M +Epicurean +epicurean/S +epicure/SM +Epicurus/M +epicycle/MS +epicyclic +epicyclical/Y +epicycloid/M +epidemically +epidemic/MS +epidemiological/Y +epidemiologist/MS +epidemiology/MS +epidermal +epidermic +epidermis/MS +epidural +epigenetic +epiglottis/SM +epigrammatic +epigram/MS +epigrapher/M +epigraph/RM +epigraphs +epigraphy/MS +epilepsy/SM +epileptic/S +epilogue/SDMG +Epimethius/M +epinephrine/SM +epiphany/SM +Epiphany/SM +epiphenomena +episcopacy/MS +episcopalian +Episcopalian/S +Episcopal/S +episcopal/Y +episcopate/MS +episode/SM +episodic +episodically +epistemic +epistemological/Y +epistemology/M +epistle/MRS +Epistle/SM +epistolary/S +epistolatory +epitaph/GMD +epitaphs +epitaxial/Y +epitaxy/M +epithelial +epithelium/MS +epithet/MS +epitome/MS +epitomized/U +epitomizer/M +epitomize/SRDZG +epochal/Y +epoch/M +epochs +eponymous +epoxy/GSD +epsilon/SM +Epsom/M +Epstein/M +equability/MS +equableness/M +equable/P +equably +equaling +equality/ISM +equalization/MS +equalize/DRSGJZ +equalized/U +equalizer/M +equalizes/U +equal/USDY +equanimity/MS +equate/NGXBSD +equation/M +equatorial/S +equator/SM +equerry/MS +equestrianism/SM +equestrian/S +equestrienne/SM +equiangular +equidistant/Y +equilateral/S +equilibrate/GNSD +equilibration/M +equilibrium/MSE +equine/S +equinoctial/S +equinox/MS +equipage/SM +equipartition/M +equip/AS +equipment/SM +equipoise/GMSD +equipotent +equipped/AU +equipping/A +equiproportional +equiproportionality +equiproportionate +equitable/I +equitableness/M +equitably/I +equitation/SM +equity/IMS +equiv +equivalence/DSMG +equivalent/SY +equivocalness/MS +equivocal/UY +equivocate/NGSDX +equivocation/M +equivocator/SM +Equuleus/M +ER +ERA +eradicable/I +eradicate/SDXVGN +eradication/M +eradicator/SM +era/MS +Eran/M +erase/N +eraser/M +erasion/M +Erasmus/M +eras/SRDBGZ +Erastus/M +erasure/MS +Erato/M +Eratosthenes/M +erbium/SM +Erda/M +ere +Erebus/M +erect/GPSRDY +erectile +erection/SM +erectness/MS +erector/SM +Erek/M +erelong +eremite/MS +Erena/M +ergo +ergodic +ergodicity/M +ergonomically +ergonomics/M +ergonomic/U +ergophobia +ergosterol/SM +ergot/SM +erg/SM +Erhard/M +Erhart/M +Erica/M +Ericha/M +Erich/M +Ericka/M +Erick/M +Erickson/M +Eric/M +Ericson's +Ericsson's +Eridanus/M +Erie/SM +Erika/M +Erik/M +Erikson/M +Erina/M +Erin/M +Erinna/M +Erinn/M +eris +Eris +Eritrea/M +Erlang/M +Erlenmeyer/M +Erl/M +Er/M +Erma/M +Ermanno/M +Ermengarde/M +Ermentrude/M +Ermina/M +ermine/MSD +Erminia/M +Erminie/M +Ermin/M +Ernaline/M +Erna/M +Ernesta/M +Ernestine/M +Ernest/M +Ernesto/M +Ernestus/M +Ernie/M +Ernst/M +Erny/M +erode/SDG +erodible +erogenous +erosible +erosional +erosion/SM +erosiveness/M +erosive/P +Eros/SM +erotically +erotica/M +eroticism/MS +erotic/S +errancy/MS +errand/MS +errantry/M +errant/YS +errata/SM +erratically +erratic/S +erratum/MS +err/DGS +Errick/M +erring/UY +Erroll/M +Errol/M +erroneousness/M +erroneous/YP +error/SM +ersatz/S +Erse/M +Erskine/M +erst +erstwhile +Ertha/M +eructation/MS +eruct/DGS +erudite/NYX +erudition/M +erupt/DSVG +eruption/SM +eruptive/SY +Ervin/M +ErvIn/M +Erv/M +Erwin/M +Eryn/M +erysipelas/SM +erythrocyte/SM +es +e's +Es +E's +Esau/M +escadrille/M +escalate/CDSXGN +escalation/MC +escalator/SM +escallop/SGDM +escapable/I +escapade/SM +escapee/MS +escape/LGSRDB +escapement/MS +escaper/M +escapism/SM +escapist/S +escapology +escarole/MS +escarpment/MS +eschatology/M +Escherichia/M +Escher/M +eschew/SGD +Escondido/M +escort/SGMD +escritoire/SM +escrow/DMGS +escudo/MS +escutcheon/SM +Esdras/M +ESE +Eskimo/SM +ESL +Esma/M +Esmaria/M +Esmark/M +Esme/M +Esmeralda/M +esophageal +esophagi +esophagus/M +esoteric +esoterica +esoterically +esp +ESP +espadrille/MS +Espagnol/M +espalier/SMDG +especial/Y +Esperanto/M +Esperanza/M +Espinoza/M +espionage/SM +esplanade/SM +Esp/M +Esposito/M +espousal/MS +espouser/M +espouse/SRDG +espresso/SM +esprit/SM +espy/GSD +Esq/M +esquire/GMSD +Esquire/S +Esra/M +Essa/M +essayer/M +essayist/SM +essay/SZMGRD +essence/MS +Essene/SM +Essen/M +essentialist/M +essentially +essentialness/M +essential/USI +Essequibo/M +Essex/M +Essie/M +Essy/M +EST +established/U +establisher/M +establish/LAEGSD +establishment/EMAS +Establishment/MS +Esta/M +estate/GSDM +Esteban/M +esteem/EGDS +Estela/M +Estele/M +Estella/M +Estelle/M +Estell/M +Estel/M +Esterházy/M +ester/M +Ester/M +Estes +Estevan/M +Esther/M +esthete's +esthetically +esthetic's +esthetics's +estimable/I +estimableness/M +estimate/XDSNGV +estimating/A +estimation/M +estimator/SM +Estonia/M +Estonian/S +estoppal +Estrada/M +estrange/DRSLG +estrangement/SM +estranger/M +Estrella/M +Estrellita/M +estrogen/SM +estrous +estrus/SM +est/RZ +estuarine +estuary/SM +et +ET +ETA +Etan/M +eta/SM +etc +etcetera/SM +etcher/M +etch/GZJSRD +etching/M +ETD +eternalness/SM +eternal/PSY +eternity/SM +ethane/SM +Ethan/M +ethanol/MS +Ethelbert/M +Ethelda/M +Ethelind/M +Etheline/M +Ethelin/M +Ethel/M +Ethelred/M +Ethelyn/M +Ethe/M +etherealness/M +ethereal/PY +etherized +Ethernet/MS +ether/SM +ethically/U +ethicalness/M +ethical/PYS +ethicist/S +ethic/MS +Ethiopia/M +Ethiopian/S +ethnically +ethnicity/MS +ethnic/S +ethnocentric +ethnocentrism/MS +ethnographers +ethnographic +ethnography/M +ethnological +ethnologist/SM +ethnology/SM +ethnomethodology +ethological +ethologist/MS +ethology/SM +ethos/SM +ethylene/MS +Ethyl/M +ethyl/SM +Etienne/M +etiologic +etiological +etiology/SM +etiquette/SM +Etna/M +Etruria/M +Etruscan/MS +Etta/M +Ettie/M +Etti/M +Ettore/M +Etty/M +étude/MS +etymological/Y +etymologist/SM +etymology/MS +EU +eucalypti +eucalyptus/SM +Eucharistic +Eucharist/SM +euchre/MGSD +euclidean +Euclid/M +Eudora/M +Euell/M +Eugene/M +Eugenia/M +eugenically +eugenicist/SM +eugenic/S +eugenics/M +Eugenie/M +Eugenio/M +Eugenius/M +Eugen/M +Eugine/M +Eulalie/M +Eula/M +Eulerian/M +Euler/M +eulogistic +eulogist/MS +eulogized/U +eulogize/GRSDZ +eulogizer/M +eulogy/MS +Eu/M +Eumenides +Eunice/M +eunuch/M +eunuchs +Euphemia/M +euphemism/MS +euphemistic +euphemistically +euphemist/M +euphonious/Y +euphonium/M +euphony/SM +euphoria/SM +euphoric +euphorically +Euphrates/M +Eurasia/M +Eurasian/S +eureka/S +Euripides/M +Eur/M +Eurodollar/SM +Europa/M +Europeanization/SM +Europeanized +European/MS +Europe/M +europium/MS +Eurydice/M +Eustace/M +Eustachian/M +Eustacia/M +eutectic +Euterpe/M +euthanasia/SM +euthenics/M +evacuate/DSXNGV +evacuation/M +evacuee/MS +evader/M +evade/SRDBGZ +Evaleen/M +evaluable +evaluate/ADSGNX +evaluated/U +evaluational +evaluation/MA +evaluative +evaluator/MS +Eva/M +evanescence/MS +evanescent +Evangelia/M +evangelic +evangelicalism/SM +Evangelical/S +evangelical/YS +Evangelina/M +Evangeline/M +Evangelin/M +evangelism/SM +evangelistic +evangelist/MS +Evangelist/MS +evangelize/GDS +Evania/M +Evan/MS +Evanne/M +Evanston/M +Evansville/M +evaporate/VNGSDX +evaporation/M +evaporative/Y +evaporator/MS +evasion/SM +evasiveness/SM +evasive/PY +Eveleen/M +Evelina/M +Eveline/M +Evelin/M +Evelyn/M +Eve/M +evened +evener/M +evenhanded/YP +evening/SM +Evenki/M +Even/M +evenness/MSU +even/PUYRT +evens +evensong/MS +eventfulness/SM +eventful/YU +eventide/SM +event/SGM +eventuality/MS +eventual/Y +eventuate/GSD +Everard/M +Eveready/M +Evered/M +Everest/M +Everette/M +Everett/M +everglade/MS +Everglades +evergreen/S +Everhart/M +everlastingness/M +everlasting/PYS +everliving +evermore +EverReady/M +eve/RSM +ever/T +every +everybody/M +everydayness/M +everyday/P +everyman +everyone/MS +everyplace +everything +everywhere +eve's/A +eves/A +Evey/M +evict/DGS +eviction/SM +evidence/MGSD +evidential/Y +evident/YS +Evie/M +evildoer/SM +evildoing/MS +evilness/MS +evil/YRPTS +evince/SDG +Evin/M +eviscerate/GNXDS +evisceration/M +Evita/M +Ev/MN +evocable +evocate/NVX +evocation/M +evocativeness/M +evocative/YP +evoke/SDG +evolute/NMXS +evolutionarily +evolutionary +evolutionist/MS +evolution/M +evolve/SDG +Evonne/M +Evvie/M +Evvy/M +Evy/M +Evyn/M +Ewan/M +Eward/M +Ewart/M +Ewell/M +ewe/MZRS +Ewen/M +ewer/M +Ewing/M +exacerbate/NGXDS +exacerbation/M +exacter/M +exactingness/M +exacting/YP +exaction/SM +exactitude/ISM +exactly/I +exactness/MSI +exact/TGSPRDY +exaggerate/DSXNGV +exaggerated/YP +exaggeration/M +exaggerative/Y +exaggerator/MS +exaltation/SM +exalted/Y +exalter/M +exalt/ZRDGS +examen/M +examination/AS +examination's +examine/BGZDRS +examined/AU +examinees +examiner/M +examines/A +examining/A +exam/MNS +example/DSGM +exampled/U +exasperate/DSXGN +exasperated/Y +exasperating/Y +exasperation/M +Excalibur/M +excavate/NGDSX +excavation/M +excavator/SM +Excedrin/M +exceeder/M +exceeding/Y +exceed/SGDR +excelled +excellence/SM +excellency/MS +Excellency/MS +excellent/Y +excelling +excel/S +excelsior/S +except/DSGV +exceptionable/U +exceptionalness/M +exceptional/YU +exception/BMS +excerpter/M +excerpt/GMDRS +excess/GVDSM +excessiveness/M +excessive/PY +exchangeable +exchange/GDRSZ +exchanger/M +exchequer/SM +Exchequer/SM +excise/XMSDNGB +excision/M +excitability/MS +excitableness/M +excitable/P +excitably +excitation/SM +excitatory +excited/Y +excitement/MS +exciter/M +excite/RSDLBZG +excitingly +exciting/U +exciton/M +exclaimer/M +exclaim/SZDRG +exclamation/MS +exclamatory +exclude/DRSG +excluder/M +exclusionary +exclusioner/M +exclusion/SZMR +exclusiveness/SM +exclusive/SPY +exclusivity/MS +excommunicate/XVNGSD +excommunication/M +excoriate/GNXSD +excoriation/M +excremental +excrement/SM +excrescence/MS +excrescent +excreta +excrete/NGDRSX +excreter/M +excretion/M +excretory/S +excruciate/NGDS +excruciating/Y +excruciation/M +exculpate/XSDGN +exculpation/M +exculpatory +excursionist/SM +excursion/MS +excursiveness/SM +excursive/PY +excursus/MS +excusable/IP +excusableness/IM +excusably/I +excuse/BGRSD +excused/U +excuser/M +exec/MS +execrableness/M +execrable/P +execrably +execrate/DSXNGV +execration/M +executable/MS +execute/NGVZBXDRS +executer/M +executional +executioner/M +execution/ZMR +executive/SM +executor/SM +executrices +executrix/M +exegeses +exegesis/M +exegete/M +exegetical +exegetic/S +exemplariness/M +exemplar/MS +exemplary/P +exemplification/M +exemplifier/M +exemplify/ZXNSRDG +exemption/MS +exempt/SDG +exerciser/M +exercise/ZDRSGB +exertion/MS +exert/SGD +Exeter/M +exeunt +exhalation/SM +exhale/GSD +exhausted/Y +exhauster/M +exhaustible/I +exhausting/Y +exhaustion/SM +exhaustiveness/MS +exhaustive/YP +exhaust/VGRDS +exhibitioner/M +exhibitionism/MS +exhibitionist/MS +exhibition/ZMRS +exhibitor/SM +exhibit/VGSD +exhilarate/XSDVNG +exhilarating/Y +exhilaration/M +exhortation/SM +exhort/DRSG +exhorter/M +exhumation/SM +exhume/GRSD +exhumer/M +exigence/S +exigency/SM +exigent/SY +exiguity/SM +exiguous +exile/SDGM +existence/MS +existent/I +existentialism/MS +existentialistic +existentialist/MS +existential/Y +existents +exist/SDG +exit/MDSG +exobiology/MS +exocrine +Exodus/M +exodus/SM +exogamous +exogamy/M +exogenous/Y +exonerate/SDVGNX +exoneration/M +exorbitance/MS +exorbitant/Y +exorcise/SDG +exorcism/SM +exorcist/SM +exorcizer/M +exoskeleton/MS +exosphere/SM +exothermic +exothermically +exotica +exotically +exoticism/SM +exoticness/M +exotic/PS +exp +expandability/M +expand/DRSGZB +expanded/U +expander/M +expanse/DSXGNVM +expansible +expansionary +expansionism/MS +expansionist/MS +expansion/M +expansiveness/S +expansive/YP +expatiate/XSDNG +expatiation/M +expatriate/SDNGX +expatriation/M +expectancy/MS +expectant/YS +expectational +expectation/MS +expected/UPY +expecting/Y +expectorant/S +expectorate/NGXDS +expectoration/M +expect/SBGD +expedience/IS +expediency/IMS +expedients +expedient/YI +expediter/M +expedite/ZDRSNGX +expeditionary +expedition/M +expeditiousness/MS +expeditious/YP +expeditor's +expellable +expelled +expelling +expel/S +expendable/S +expended/U +expender/M +expenditure/SM +expend/SDRGB +expense/DSGVM +expensive/IYP +expensiveness/SMI +experienced/U +experience/ISDM +experiencing +experiential/Y +experimentalism/M +experimentalist/SM +experimental/Y +experimentation/SM +experimenter/M +experiment/GSMDRZ +experted +experting +expertise/SM +expertize/GD +expertnesses +expertness/IM +expert/PISY +expert's +expiable/I +expiate/XGNDS +expiation/M +expiatory +expiration/MS +expired/U +expire/SDG +expiry/MS +explainable/UI +explain/ADSG +explained/U +explainer/SM +explanation/MS +explanatory +expletive/SM +explicable/I +explicate/VGNSDX +explication/M +explicative/Y +explicitness/SM +explicit/PSY +explode/DSRGZ +exploded/U +exploder/M +exploitation/MS +exploitative +exploited/U +exploiter/M +exploit/ZGVSMDRB +exploration/MS +exploratory +explore/DSRBGZ +explored/U +explorer/M +explosion/MS +explosiveness/SM +explosive/YPS +expo/MS +exponential/SY +exponentiate/XSDNG +exponentiation/M +exponent/MS +exportability +exportable +export/AGSD +exportation/SM +exporter/MS +export's +expose +exposed/U +exposer/M +exposit/D +exposition/SM +expositor/MS +expository +expos/RSDZG +expostulate/DSXNG +expostulation/M +exposure/SM +expounder/M +expound/ZGSDR +expressed/U +expresser/M +express/GVDRSY +expressibility/I +expressible/I +expressibly/I +expressionism/SM +expressionistic +expressionist/S +expressionless/YP +expression/MS +expressive/IYP +expressiveness/MS +expressiveness's/I +expressway/SM +expropriate/XDSGN +expropriation/M +expropriator/SM +expulsion/MS +expunge/GDSR +expunger/M +expurgated/U +expurgate/SDGNX +expurgation/M +exquisiteness/SM +exquisite/YPS +ex/S +ext +extant +extemporaneousness/MS +extemporaneous/YP +extempore/S +extemporization/SM +extemporizer/M +extemporize/ZGSRD +extendability/M +extendedly +extendedness/M +extended/U +extender/M +extendibility/M +extendibles +extend/SGZDR +extensibility/M +extensible/I +extensional/Y +extension/SM +extensiveness/SM +extensive/PY +extensor/MS +extent/SM +extenuate/XSDGN +extenuation/M +exterior/MYS +exterminate/XNGDS +extermination/M +exterminator/SM +externalities +externalization/SM +externalize/GDS +external/YS +extern/M +extinct/DGVS +extinction/MS +extinguishable/I +extinguish/BZGDRS +extinguisher/M +extirpate/XSDVNG +extirpation/M +extolled +extoller/M +extolling +extol/S +extort/DRSGV +extorter/M +extortionate/Y +extortioner/M +extortionist/SM +extortion/ZSRM +extracellular/Y +extract/GVSBD +extraction/SM +extractive/Y +extractor/SM +extracurricular/S +extradite/XNGSDB +extradition/M +extragalactic +extralegal/Y +extramarital +extramural +extraneousness/M +extraneous/YP +extraordinarily +extraordinariness/M +extraordinary/PS +extrapolate/XVGNSD +extrapolation/M +extra/S +extrasensory +extraterrestrial/S +extraterritorial +extraterritoriality/MS +extravagance/MS +extravagant/Y +extravaganza/SM +extravehicular +extravert's +extrema +extremal +extreme/DSRYTP +extremeness/MS +extremism/SM +extremist/MS +extremity/SM +extricable/I +extricate/XSDNG +extrication/M +extrinsic +extrinsically +extroversion/SM +extrovert/GMDS +extrude/GDSR +extruder/M +extrusion/MS +extrusive +exuberance/MS +exuberant/Y +exudate/XNM +exudation/M +exude/GSD +exultant/Y +exultation/SM +exult/DGS +exulting/Y +exurban +exurbanite/SM +exurbia/MS +exurb/MS +Exxon/M +Eyck/M +Eyde/M +Eydie/M +eyeball/GSMD +eyebrow/MS +eyed/P +eyedropper/MS +eyeful/MS +eye/GDRSMZ +eyeglass/MS +eyelash/MS +eyeless +eyelet/GSMD +eyelid/SM +eyeliner/MS +eyeopener/MS +eyeopening +eyepiece/SM +eyer/M +eyeshadow +eyesight/MS +eyesore/SM +eyestrain/MS +eyeteeth +eyetooth/M +eyewash/MS +eyewitness/SM +Eyre/M +eyrie's +Eysenck/M +Ezechiel/M +Ezekiel/M +Ezequiel/M +Eziechiele/M +Ezmeralda/M +Ezra/M +Ezri/M +F +FAA +Fabe/MR +Fabergé/M +Faber/M +Fabiano/M +Fabian/S +Fabien/M +Fabio/M +fable/GMSRD +fabler/M +fabricate/SDXNG +fabrication/M +fabricator/MS +fabric/MS +fabulists +fabulousness/M +fabulous/YP +facade/GMSD +face/AGCSD +facecloth +facecloths +faceless/P +faceplate/M +facer/CM +face's +facetiousness/MS +facetious/YP +facet/SGMD +facial/YS +facileness/M +facile/YP +facilitate/VNGXSD +facilitation/M +facilitator/SM +facilitatory +facility/MS +facing/MS +facsimileing +facsimile/MSD +factional +factionalism/SM +faction/SM +factiousness/M +factious/PY +factitious +fact/MS +facto +factoid/S +factorial/MS +factoring/A +factoring's +factorisable +factorization/SM +factorize/GSD +factor/SDMJG +factory/MS +factotum/MS +factuality/M +factualness/M +factual/PY +faculty/MS +faddish +faddist/SM +fadedly +faded/U +fadeout +fader/M +fade/S +fading's +fading/U +fad/ZGSMDR +Fae/M +faerie/MS +Faeroe/M +faery's +Fafnir/M +fagged +fagging +faggoting's +Fagin/M +fag/MS +fagoting/M +fagot/MDSJG +Fahd/M +Fahrenheit/S +faïence/S +failing's +failing/UY +fail/JSGD +faille/MS +failsafe +failure/SM +Faina/M +fain/GTSRD +fainter/M +fainthearted +faintness/MS +faint/YRDSGPT +Fairbanks +Fairchild/M +faired +Fairfax/M +Fairfield/M +fairgoer/S +fairground/MS +fairing/MS +fairish +Fairleigh/M +fairless +Fairlie/M +Fair/M +Fairmont/M +fairness's +fairness/US +Fairport/M +fairs +fair/TURYP +Fairview/M +fairway/MS +fairyland/MS +fairy/MS +fairytale +Faisalabad +Faisal/M +faithed +faithfulness/MSU +faithfuls +faithful/UYP +faithing +faithlessness/SM +faithless/YP +Faith/M +faiths +faith's +faith/U +fajitas +faker/M +fake/ZGDRS +fakir/SM +falafel +falconer/M +falconry/MS +falcon/ZSRM +Falito/M +Falkland/MS +Falk/M +Falkner/M +fallaciousness/M +fallacious/PY +fallacy/MS +faller/M +fallibility/MSI +fallible/I +fallibleness/MS +fallibly/I +falloff/S +Fallon/M +fallopian +Fallopian/M +fallout/MS +fallowness/M +fallow/PSGD +fall/SGZMRN +falsehood/SM +falseness/SM +false/PTYR +falsetto/SM +falsie/MS +falsifiability/M +falsifiable/U +falsification/M +falsifier/M +falsify/ZRSDNXG +falsity/MS +Falstaff/M +falterer/M +faltering/UY +falter/RDSGJ +Falwell/M +fa/M +famed/C +fame/DSMG +fames/C +familial +familiarity/MUS +familiarization/MS +familiarized/U +familiarizer/M +familiarize/ZGRSD +familiarizing/Y +familiarly/U +familiarness/M +familiar/YPS +family/MS +famine/SM +faming/C +famish/GSD +famously/I +famousness/M +famous/PY +fanaticalness/M +fanatical/YP +fanaticism/MS +fanatic/SM +Fanchette/M +Fanchon/M +fancied +Fancie/M +fancier/SM +fanciest +fancifulness/MS +fanciful/YP +fancily +fanciness/SM +fancying +fancy/IS +Fancy/M +fancywork/SM +fandango/SM +Fanechka/M +fanfare/SM +fanfold/M +fang/DMS +fangled +Fania/M +fanlight/SM +Fan/M +fanned +Fannie/M +Fanni/M +fanning +fanny/SM +Fanny/SM +fanout +fan/SM +fantail/SM +fantasia/SM +fantasist/M +fantasize/SRDG +fantastical/Y +fantastic/S +fantasy/GMSD +Fanya/M +fanzine/S +FAQ/SM +Faraday/M +farad/SM +Farah/M +Fara/M +Farand/M +faraway +Farber/M +farce/SDGM +farcical/Y +fare/MS +farer/M +farewell/DGMS +farfetchedness/M +far/GDR +Fargo/M +Farica/M +farinaceous +farina/MS +Farkas/M +Farlay/M +Farlee/M +Farleigh/M +Farley/M +Farlie/M +Farly/M +farmer/M +Farmer/M +farmhand/S +farmhouse/SM +farming/M +Farmington/M +farmland/SM +farm/MRDGZSJ +farmstead/SM +farmworker/S +Far/MY +farmyard/MS +faro/MS +farragoes +farrago/M +Farragut/M +Farrah/M +Farrakhan/M +Farra/M +Farrand/M +Farrell/M +Farrel/M +farrier/SM +Farris/M +Farr/M +farrow/DMGS +farseeing +farsightedness/SM +farsighted/YP +farther +farthermost +farthest +farthing/SM +fart/MDGS +fas +fascia/SM +fascicle/DSM +fasciculate/DNX +fasciculation/M +fascinate/SDNGX +fascinating/Y +fascination/M +fascism/MS +Fascism's +fascistic +Fascist's +fascist/SM +fashionableness/M +fashionable/PS +fashionably/U +fashion/ADSG +fashioner/SM +fashion's +Fassbinder/M +fastback/MS +fastball/S +fasten/AGUDS +fastener/MS +fastening/SM +fast/GTXSPRND +fastidiousness/MS +fastidious/PY +fastness/MS +fatalism/MS +fatalistic +fatalistically +fatalist/MS +fatality/MS +fatal/SY +fatback/SM +fatefulness/MS +fateful/YP +fate/MS +Fates +fatheaded/P +fathead/SMD +father/DYMGS +fathered/U +fatherhood/MS +fatherland/SM +fatherless +fatherliness/M +fatherly/P +Father/SM +fathomable/U +fathomless +fathom/MDSBG +fatigued/U +fatigue/MGSD +fatiguing/Y +Fatima/M +fatness/SM +fat/PSGMDY +fatso/M +fatted +fattener/M +fatten/JZGSRD +fatter +fattest/M +fattiness/SM +fatting +fatty/RSPT +fatuity/MS +fatuousness/SM +fatuous/YP +fatwa/SM +faucet/SM +Faulknerian +Faulkner/M +fault/CGSMD +faultfinder/MS +faultfinding/MS +faultily +faultiness/MS +faultlessness/SM +faultless/PY +faulty/RTP +fauna/MS +Faunie/M +Faun/M +faun/MS +Fauntleroy/M +Faustian +Faustina/M +Faustine/M +Faustino/M +Faust/M +Faustus/M +fauvism/S +favorableness/MU +favorable/UMPS +favorably/U +favoredness/M +favored's/U +favored/YPSM +favorer/EM +favor/ESMRDGZ +favoring/MYS +favorings/U +favorite/SMU +favoritism/MS +favors/A +Fawkes/M +Fawne/M +fawner/M +fawn/GZRDMS +Fawnia/M +fawning/Y +Fawn/M +fax/GMDS +Fax/M +Faydra/M +Faye/M +Fayette/M +Fayetteville/M +Fayina/M +Fay/M +fay/MDRGS +Fayre/M +Faythe/M +Fayth/M +faze/DSG +FBI +FCC +FD +FDA +FDIC +FDR/M +fealty/MS +fearfuller +fearfullest +fearfulness/MS +fearful/YP +fearlessness/MS +fearless/PY +fear/RDMSG +fearsomeness/M +fearsome/PY +feasibility/SM +feasibleness/M +feasible/UI +feasibly/U +feaster/M +feast/GSMRD +feater/C +featherbed +featherbedding/SM +featherbrain/MD +feathered/U +feathering/M +featherless +featherlight +Featherman/M +feathertop +featherweight/SM +feathery/TR +feather/ZMDRGS +feat/MYRGTS +feats/C +featureless +feature/MGSD +Feb/M +febrile +February/MS +fecal +feces +fecklessness/M +feckless/PY +fecundability +fecundate/XSDGN +fecundation/M +fecund/I +fecundity/SM +federalism/SM +Federalist +federalist/MS +federalization/MS +federalize/GSD +Federal/S +federal/YS +federated/U +federate/FSDXVNG +federation/FM +federative/Y +Federica/M +Federico/M +FedEx/M +Fedora/M +fedora/SM +feds +Fed/SM +fed/U +feebleness/SM +feeble/TPR +feebly +feedback/SM +feedbag/MS +feeder/M +feed/GRZJS +feeding/M +feedlot/SM +feedstock +feedstuffs +feeing +feeler/M +feel/GZJRS +feelingly/U +feeling/MYP +feelingness/M +Fee/M +fee/MDS +feet/M +feigned/U +feigner/M +feign/RDGS +feint/MDSG +feisty/RT +Felder/M +Feldman/M +feldspar/MS +Felecia/M +Felicdad/M +Felice/M +Felicia/M +Felicio/M +felicitate/XGNSD +felicitation/M +felicitous/IY +felicitousness/M +felicity/IMS +Felicity/M +Felicle/M +Felic/M +Felike/M +Feliks/M +feline/SY +Felipa/M +Felipe/M +Felisha/M +Felita/M +Felix/M +Feliza/M +Felizio/M +fella/S +fellatio/SM +felled/A +feller/M +felling/A +Fellini/M +fellness/M +fellowman +fellowmen +fellow/SGDYM +fellowshipped +fellowshipping +fellowship/SM +fell/PSGZTRD +feloniousness/M +felonious/PY +felon/MS +felony/MS +felt/GSD +felting/M +Fe/M +female/MPS +femaleness/SM +feminineness/M +feminine/PYS +femininity/MS +feminism/MS +feminist/MS +femme/MS +femoral +fem/S +femur/MS +fenced/U +fencepost/M +fencer/M +fence/SRDJGMZ +fencing/M +fender/CM +fend/RDSCZG +Fenelia/M +fenestration/CSM +Fenian/M +fenland/M +fen/MS +fennel/SM +Fenwick/M +Feodora/M +Feodor/M +feral +Ferber/M +Ferdie/M +Ferdinanda/M +Ferdinande/M +Ferdinand/M +Ferdinando/M +Ferd/M +Ferdy/M +fer/FLC +Fergus/M +Ferguson/M +Ferlinghetti/M +Fermat/M +fermentation/MS +fermented +fermenter +ferment/FSCM +fermenting +Fermi/M +fermion/MS +fermium/MS +Fernanda/M +Fernande/M +Fernandez/M +Fernandina/M +Fernando/M +Ferne/M +fernery/M +Fern/M +fern/MS +ferny/TR +ferociousness/MS +ferocious/YP +ferocity/MS +Ferrari/M +Ferraro/M +Ferreira/M +Ferrell/M +Ferrel/M +Ferrer/M +ferreter/M +ferret/SMRDG +ferric +ferris +Ferris +ferrite/M +ferro +ferroelectric +ferromagnetic +ferromagnet/M +ferrous +ferrule/MGSD +ferryboat/MS +ferryman/M +ferrymen +ferry/SDMG +fertileness/M +fertile/YP +fertility/IMS +fertilization/ASM +fertilized/U +fertilizer/M +fertilizes/A +fertilize/SRDZG +ferule/SDGM +fervency/MS +fervent/Y +fervidness/M +fervid/YP +fervor/MS +fess/KGFSD +Fess/M +fess's +festal/S +fester/GD +festival/SM +festiveness/SM +festive/PY +festivity/SM +festoon/SMDG +fest/RVZ +fetal +feta/MS +fetcher/M +fetching/Y +fetch/RSDGZ +feted +fête/MS +fetich's +fetidness/SM +fetid/YP +feting +fetishism/SM +fetishistic +fetishist/SM +fetish/MS +fetlock/MS +fetter's +fetter/UGSD +fettle/GSD +fettling/M +fettuccine/S +fetus/SM +feudalism/MS +feudalistic +feudal/Y +feudatory/M +feud/MDSG +feverishness/SM +feverish/PY +fever/SDMG +fewness/MS +few/PTRS +Fey/M +Feynman/M +fey/RT +fez/M +Fez/M +fezzes +ff +FHA +fiancée/S +fiancé/MS +Fianna/M +Fiann/M +fiascoes +fiasco/M +Fiat/M +fiat/MS +fibbed +fibber/MS +fibbing +fiberboard/MS +fiber/DM +fiberfill/S +Fiberglas/M +fiberglass/DSMG +Fibonacci/M +fibrillate/XGNDS +fibrillation/M +fibril/MS +fibrin/MS +fibroblast/MS +fibroid/S +fibroses +fibrosis/M +fibrousness/M +fibrous/YP +fib/SZMR +fibulae +fibula/M +fibular +FICA +fices +fiche/SM +Fichte/M +fichu/SM +fickleness/MS +fickle/RTP +ficos +fictionalization/MS +fictionalize/DSG +fictional/Y +fiction/SM +fictitiousness/M +fictitious/PY +fictive/Y +ficus +fiddle/GMZJRSD +fiddler/M +fiddlestick/SM +fiddly +fide/F +Fidela/M +Fidelia/M +Fidelio/M +fidelity/IMS +Fidelity/M +Fidel/M +fidget/DSG +fidgety +Fidole/M +Fido/M +fiducial/Y +fiduciary/MS +fiefdom/S +fief/MS +fielded +fielder/IM +fielding +Fielding/M +Field/MGS +fieldstone/M +fieldworker/M +fieldwork/ZMRS +field/ZISMR +fiendishness/M +fiendish/YP +fiend/MS +fierceness/SM +fierce/RPTY +fierily +fieriness/MS +fiery/PTR +fie/S +fies/C +fiesta/MS +fife/DRSMZG +fifer/M +Fifi/M +Fifine/M +FIFO +fifteen/HRMS +fifteenths +fifths +fifth/Y +fiftieths +fifty/HSM +Figaro/M +figged +figging +fightback +fighter/MIS +fighting/IS +fight/ZSJRG +figment/MS +fig/MLS +Figueroa/M +figural +figuration/FSM +figurativeness/M +figurative/YP +figure/GFESD +figurehead/SM +figurer/SM +figure's +figurine/SM +figuring/S +Fijian/SM +Fiji/M +filamentary +filament/MS +filamentous +Filberte/M +Filbert/M +filbert/MS +Filberto/M +filch/SDG +filed/AC +file/KDRSGMZ +filename/SM +filer/KMCS +files/AC +filet's +filial/UY +Filia/M +filibusterer/M +filibuster/MDRSZG +Filide/M +filigreeing +filigree/MSD +filing/AC +filings +Filipino/SM +Filip/M +Filippa/M +Filippo/M +fill/BAJGSD +filled/U +filler/MS +filleting/M +fillet/MDSG +filling/M +fillip/MDGS +Fillmore/M +filly/SM +filmdom/M +Filmer/M +filminess/SM +filming/M +filmmaker/S +Filmore/M +film/SGMD +filmstrip/SM +filmy/RTP +Filofax/S +filtered/U +filterer/M +filter/RDMSZGB +filthily +filthiness/SM +filth/M +filths +filthy/TRSDGP +filtrated/I +filtrate/SDXMNG +filtrates/I +filtrating/I +filtration/IMS +finagler/M +finagle/RSDZG +finale/MS +finalist/MS +finality/MS +finalization/SM +finalize/GSD +final/SY +Fina/M +financed/A +finance/MGSDJ +finances/A +financial/Y +financier/DMGS +financing/A +Finch/M +finch/MS +findable/U +find/BRJSGZ +finder/M +finding/M +Findlay/M +Findley/M +fine/FGSCRDA +finely +fineness/MS +finery/MAS +fine's +finespun +finesse/SDMG +fingerboard/SM +fingerer/M +fingering/M +fingerless +fingerling/M +fingernail/MS +fingerprint/SGDM +finger/SGRDMJ +fingertip/MS +finial/SM +finical +finickiness/S +finicky/RPT +fining/M +finished/UA +finisher/M +finishes/A +finish/JZGRSD +finis/SM +finite/ISPY +finitely/C +finiteness/MIC +fink/GDMS +Finland/M +Finlay/M +Finley/M +Fin/M +Finnbogadottir/M +finned +Finnegan/M +finner +finning +Finnish +Finn/MS +finny/RT +fin/TGMDRS +Fiona/M +Fionna/M +Fionnula/M +fiord's +Fiorello/M +Fiorenze/M +Fiori/M +f/IRAC +firearm/SM +fireball/SM +fireboat/M +firebomb/MDSG +firebox/MS +firebrand/MS +firebreak/SM +firebrick/SM +firebug/SM +firecracker/SM +firedamp/SM +fired/U +firefight/JRGZS +firefly/MS +fireguard/M +firehouse/MS +firelight/GZSM +fireman/M +firemen +fire/MS +fireplace/MS +fireplug/MS +firepower/SM +fireproof/SGD +firer/M +firesafe +fireside/SM +Firestone/M +firestorm/SM +firetrap/SM +firetruck/S +firewall/S +firewater/SM +firewood/MS +firework/MS +firing/M +firkin/M +firmament/MS +firmer +firmest +firm/ISFDG +firmly/I +firmness/MS +firm's +firmware/MS +firring +firstborn/S +firsthand +first/SY +firth/M +firths +fir/ZGJMDRHS +fiscal/YS +Fischbein/M +Fischer/M +fishbowl/MS +fishcake/S +fisher/M +Fisher/M +fisherman/M +fishermen/M +fishery/MS +fishhook/MS +fishily +fishiness/MS +fishing/M +fish/JGZMSRD +Fishkill/M +fishmeal +fishmonger/MS +fishnet/SM +fishpond/SM +fishtail/DMGS +fishtanks +fishwife/M +fishwives +fishy/TPR +Fiske/M +Fisk/M +fissile +fissionable/S +fission/BSDMG +fissure/MGSD +fistfight/SM +fistful/MS +fisticuff/SM +fist/MDGS +fistula/SM +fistulous +Fitchburg/M +Fitch/M +fitfulness/SM +fitful/PY +fitments +fitness/USM +fits/AK +fit's/K +fitted/UA +fitter/SM +fittest +fitting/AU +fittingly +fittingness/M +fittings +fit/UYPS +Fitzgerald/M +Fitz/M +Fitzpatrick/M +Fitzroy/M +fivefold +five/MRS +fiver/M +fixable +fixate/VNGXSD +fixatifs +fixation/M +fixative/S +fixedness/M +fixed/YP +fixer/SM +fixes/I +fixing/SM +fixity/MS +fixture/SM +fix/USDG +Fizeau/M +fizzer/M +fizzle/GSD +fizz/SRDG +fizzy/RT +fjord/SM +FL +flabbergast/GSD +flabbergasting/Y +flabbily +flabbiness/SM +flabby/TPR +flab/MS +flaccidity/MS +flaccid/Y +flack/SGDM +flagella/M +flagellate/DSNGX +flagellation/M +flagellum/M +flagged +flaggingly/U +flagging/SMY +flagman/M +flagmen +flag/MS +flagon/SM +flagpole/SM +flagrance/MS +flagrancy/SM +flagrant/Y +flagship/MS +flagstaff/MS +flagstone/SM +flail/SGMD +flair/SM +flaker/M +flake/SM +flakiness/MS +flak/RDMGS +flaky/PRT +Fla/M +flambé/D +flambeing +flambes +flamboyance/MS +flamboyancy/MS +flamboyant/YS +flamenco/SM +flamen/M +flameproof/DGS +flamer/IM +flame's +flame/SIGDR +flamethrower/SM +flamingo/SM +flaming/Y +flammability/ISM +flammable/SI +flam/MRNDJGZ +Flanagan/M +Flanders/M +flange/GMSD +flanker/M +flank/SGZRDM +flan/MS +flannel/DMGS +flannelet/MS +flannelette's +flapjack/SM +flap/MS +flapped +flapper/SM +flapping +flaps/M +flare/SDG +flareup/S +flaring/Y +flashback/SM +flashbulb/SM +flashcard/S +flashcube/MS +flasher/M +flashgun/S +flashily +flashiness/SM +flashing/M +flash/JMRSDGZ +flashlight/MS +flashy/TPR +flask/SM +flatbed/S +flatboat/MS +flatcar/MS +flatfeet +flatfish/SM +flatfoot/SGDM +flathead/M +flatiron/SM +flatland/RS +flatmate/M +flat/MYPS +flatness/MS +flatted +flattener/M +flatten/SDRG +flatter/DRSZG +flatterer/M +flattering/YU +flattery/SM +flattest/M +flatting +flattish +Flatt/M +flattop/MS +flatulence/SM +flatulent/Y +flatus/SM +flatware/MS +flatworm/SM +Flaubert/M +flaunting/Y +flaunt/SDG +flautist/SM +flavored/U +flavorer/M +flavorful +flavoring/M +flavorless +flavor/SJDRMZG +flavorsome +flaw/GDMS +flawlessness/MS +flawless/PY +flax/MSN +flaxseed/M +flayer/M +flay/RDGZS +fleabag/MS +fleabites +flea/SM +fleawort/M +fleck/GRDMS +Fledermaus/M +fledged/U +fledge/GSD +fledgling/SM +fleecer/M +fleece/RSDGMZ +fleeciness/SM +fleecy/RTP +fleeing +flee/RS +fleetingly/M +fleetingness/SM +fleeting/YP +fleet/MYRDGTPS +fleetness/MS +Fleischer/M +Fleischman/M +Fleisher/M +Fleming/M +Flemished/M +Flemish/GDSM +Flemishing/M +Flem/JGM +Flemming/M +flesher/M +fleshiness/M +flesh/JMYRSDG +fleshless +fleshly/TR +fleshpot/SM +fleshy/TPR +fletch/DRSGJ +fletcher/M +Fletcher/M +fletching/M +Fletch/MR +Fleurette/M +Fleur/M +flew/S +flews/M +flexed/I +flexibility/MSI +flexible/I +flexibly/I +flexitime's +flex/MSDAG +flextime/S +flexural +flexure/M +fl/GJD +flibbertigibbet/MS +flicker/GD +flickering/Y +flickery +flick/GZSRD +flier/M +flight/GMDS +flightiness/SM +flightless +flightpath +flighty/RTP +flimflammed +flimflamming +flimflam/MS +flimsily +flimsiness/MS +flimsy/PTRS +flincher/M +flinch/GDRS +flinching/U +flinger/M +fling/RMG +Flin/M +Flinn/M +flintiness/M +flintless +flintlock/MS +Flint/M +flint/MDSG +Flintstones +flinty/TRP +flipflop +flippable +flippancy/MS +flippant/Y +flipped +flipper/SM +flippest +flipping +flip/S +flirtation/SM +flirtatiousness/MS +flirtatious/PY +flirt/GRDS +flit/S +flitted +flitting +floater/M +float/SRDGJZ +floaty +flocculate/GNDS +flocculation/M +flock/SJDMG +floe/MS +flogged +flogger/SM +flogging/SM +flog/S +Flo/M +floodgate/MS +floodlight/DGMS +floodlit +floodplain/S +flood/SMRDG +floodwater/SM +floorboard/MS +floorer/M +flooring/M +floor/SJRDMG +floorspace +floorwalker/SM +floozy/SM +flophouse/SM +flop/MS +flopped +flopper/M +floppily +floppiness/SM +flopping +floppy/TMRSP +floral/SY +Flora/M +Florance/M +flora/SM +Florella/M +Florence/M +Florencia/M +Florentia/M +Florentine/S +Florenza/M +florescence/MIS +florescent/I +Flore/SM +floret/MS +Florette/M +Floria/M +Florian/M +Florida/M +Floridan/S +Floridian/S +floridness/SM +florid/YP +Florie/M +Florina/M +Florinda/M +Florine/M +florin/MS +Flori/SM +florist/MS +Flor/M +Florrie/M +Florri/M +Florry/M +Flory/M +floss/GSDM +Flossie/M +Flossi/M +Flossy/M +flossy/RST +flotation/SM +flotilla/SM +flotsam/SM +flounce/GDS +flouncing/M +flouncy/RT +flounder/SDG +flourisher/M +flourish/GSRD +flourishing/Y +flour/SGDM +floury/TR +flouter/M +flout/GZSRD +flowchart/SG +flowed +flowerbed/SM +flower/CSGD +flowerer/M +floweriness/SM +flowerless +flowerpot/MS +flower's +Flowers +flowery/TRP +flowing/Y +flow/ISG +flown +flowstone +Floyd/M +Flss/M +flt +flubbed +flubbing +flub/S +fluctuate/XSDNG +fluctuation/M +fluency/MS +fluently +fluent/SF +flue/SM +fluffiness/SM +fluff/SGDM +fluffy/PRT +fluidity/SM +fluidized +fluid/MYSP +fluidness/M +fluke/SDGM +fluky/RT +flume/SDGM +flummox/DSG +flu/MS +flung +flunkey's +flunk/SRDG +flunky/MS +fluoresce/GSRD +fluorescence/MS +fluorescent/S +fluoridate/XDSGN +fluoridation/M +fluoride/SM +fluorimetric +fluorinated +fluorine/SM +fluorite/MS +fluorocarbon/MS +fluoroscope/MGDS +fluoroscopic +flurry/GMDS +flushness/M +flush/TRSDPBG +fluster/DSG +fluter/M +flute/SRDGMJ +fluting/M +flutist/MS +flutter/DRSG +flutterer/M +fluttery +fluxed/A +fluxes/A +flux/IMS +fluxing +flyaway +flyblown +flyby/M +flybys +flycatcher/MS +flyer's +fly/JGBDRSTZ +flyleaf/M +flyleaves +Flynn/M +flyover/MS +flypaper/MS +flysheet/S +flyspeck/MDGS +flyswatter/S +flyway/MS +flyweight/MS +flywheel/MS +FM +Fm/M +FNMA/M +foal/MDSG +foaminess/MS +foam/MRDSG +foamy/RPT +fobbed +fobbing +fob/SM +focal/F +focally +Foch/M +foci's +focused/AU +focuser/M +focuses/A +focus/SRDMBG +fodder/GDMS +foe/SM +foetid +FOFL +fogbound +fogged/C +foggily +fogginess/MS +fogging/C +foggy/RPT +foghorn/SM +fogs/C +fog/SM +fogyish +fogy/SM +foible/MS +foil/GSD +foist/GDS +Fokker/M +foldaway/S +folded/AU +folder/M +foldout/MS +fold/RDJSGZ +folds/UA +Foley/M +foliage/MSD +foliate/CSDXGN +foliation/CM +folio/SDMG +folklike +folklore/MS +folkloric +folklorist/SM +folk/MS +folksiness/MS +folksinger/S +folksinging/S +folksong/S +folksy/TPR +folktale/S +folkway/S +foll +follicle/SM +follicular +follower/M +follow/JSZBGRD +followup's +folly/SM +Folsom +fol/Y +Fomalhaut/M +fomentation/SM +fomenter/M +foment/RDSG +Fonda/M +fondant/SM +fondle/GSRD +fondler/M +fondness/MS +fond/PMYRDGTS +fondue/MS +Fons +Fonsie/M +Fontainebleau/M +Fontaine/M +Fontana/M +fontanelle's +fontanel/MS +font/MS +Fonzie/M +Fonz/M +foodie/S +food/MS +foodstuff/MS +foolery/MS +foolhardily +foolhardiness/SM +foolhardy/PTR +foolishness/SM +foolish/PRYT +fool/MDGS +foolproof +foolscap/MS +footage/SM +football/SRDMGZ +footbridge/SM +Foote/M +footer/M +footfall/SM +foothill/SM +foothold/MS +footing/M +footless +footlights +footling +footlocker/SM +footloose +footman/M +footmarks +footmen +footnote/MSDG +footpad/SM +footpath/M +footpaths +footplate/M +footprint/MS +footrace/S +footrest/MS +footsie/SM +foot/SMRDGZJ +footsore +footstep/SM +footstool/SM +footwear/M +footwork/SM +fop/MS +fopped +foppery/MS +fopping +foppishness/SM +foppish/YP +forage/GSRDMZ +forager/M +forayer/M +foray/SGMRD +forbade +forbearance/SM +forbearer/M +forbear/MRSG +Forbes/M +forbidden +forbiddingness/M +forbidding/YPS +forbid/S +forbore +forborne +forced/Y +forcefield/MS +forcefulness/MS +forceful/PY +forceps/M +forcer/M +force/SRDGM +forcibleness/M +forcible/P +forcibly +fordable/U +Fordham/M +Ford/M +ford/SMDBG +forearm/GSDM +forebear/MS +forebode/GJDS +forebodingness/M +foreboding/PYM +forecaster/M +forecastle/MS +forecast/SZGR +foreclose/GSD +foreclosure/MS +forecourt/SM +foredoom/SDG +forefather/SM +forefeet +forefinger/MS +forefoot/M +forefront/SM +foregoer/M +foregoing/S +foregone +foregos +foreground/MGDS +forehand/S +forehead/MS +foreigner/M +foreignness/SM +foreign/PRYZS +foreknew +foreknow/GS +foreknowledge/MS +foreknown +foreleg/MS +forelimb/MS +forelock/MDSG +foreman/M +Foreman/M +foremast/SM +foremen +foremost +forename/DSM +forenoon/SM +forensically +forensic/S +forensics/M +foreordain/DSG +forepart/MS +forepaws +forepeople +foreperson/S +foreplay/MS +forequarter/SM +forerunner/MS +fore/S +foresail/SM +foresaw +foreseeable/U +foreseeing +foreseen/U +foreseer/M +foresee/ZSRB +foreshadow/SGD +foreshore/M +foreshorten/DSG +foresightedness/SM +foresighted/PY +foresight/SMD +foreskin/SM +forestaller/M +forestall/LGSRD +forestallment/M +forestation/MCS +forestations/A +forest/CSAGD +Forester/M +forester/SM +forestland/S +Forest/MR +forestry/MS +forest's +foretaste/MGSD +foreteller/M +foretell/RGS +forethought/MS +foretold +forevermore +forever/PS +forewarner/M +forewarn/GSJRD +forewent +forewoman/M +forewomen +foreword/SM +forfeiter/M +forfeiture/MS +forfeit/ZGDRMS +forfend/GSD +forgather/GSD +forgave +forged/A +forge/JVGMZSRD +forger/M +forgery/MS +forges/A +forgetfulness/SM +forgetful/PY +forget/SV +forgettable/U +forgettably/U +forgetting +forging/M +forgivable/U +forgivably/U +forgiven +forgiveness/SM +forgiver/M +forgive/SRPBZG +forgivingly +forgivingness/M +forgiving/UP +forgoer/M +forgoes +forgone +forgo/RSGZ +forgot +forgotten/U +for/HT +forkful/S +fork/GSRDM +forklift/DMSG +forlornness/M +forlorn/PTRY +formability/AM +formaldehyde/SM +formalin/M +formalism/SM +formalistic +formalist/SM +formality/SMI +formal/IY +formalization/SM +formalized/U +formalizer/M +formalizes/I +formalize/ZGSRD +formalness/M +formals +formant/MIS +format/AVS +formate/MXGNSD +formation/AFSCIM +formatively/I +formativeness/IM +formative/SYP +format's +formatted/UA +formatter/A +formatters +formatter's +formatting/A +form/CGSAFDI +formed/U +former/FSAI +formerly +formfitting +formic +Formica/MS +formidableness/M +formidable/P +formidably +formlessness/MS +formless/PY +Formosa/M +Formosan +form's +formulaic +formula/SM +formulate/AGNSDX +formulated/U +formulation/AM +formulator/SM +fornicate/GNXSD +fornication/M +fornicator/SM +Forrester/M +Forrest/RM +forsaken +forsake/SG +forsook +forsooth +Forster/M +forswear/SG +forswore +forsworn +forsythia/MS +Fortaleza/M +forte/MS +forthcome/JG +forthcoming/U +FORTH/M +forthrightness/SM +forthright/PYS +forthwith +fortieths +fortification/MS +fortified/U +fortifier/SM +fortify/ADSG +fortiori +fortissimo/S +fortitude/SM +fortnightly/S +fortnight/MYS +FORTRAN +Fortran/M +fortress/GMSD +fort/SM +fortuitousness/SM +fortuitous/YP +fortuity/MS +fortunateness/M +fortunate/YUS +fortune/MGSD +fortuneteller/SM +fortunetelling/SM +forty/SRMH +forum/MS +forwarder/M +forwarding/M +forwardness/MS +forward/PTZSGDRY +forwent +fossiliferous +fossilization/MS +fossilized/U +fossilize/GSD +fossil/MS +Foss/M +fosterer/M +Foster/M +foster/SRDG +Foucault/M +fought +foulard/SM +foulmouth/D +foulness/MS +fouls/M +foul/SYRDGTP +foundational +foundation/SM +founded/UF +founder/MDG +founder's/F +founding/F +foundling/MS +found/RDGZS +foundry/MS +founds/KF +fountainhead/SM +fountain/SMDG +fount/MS +fourfold +Fourier/M +fourpence/M +fourpenny +fourposter/SM +fourscore/S +four/SHM +foursome/SM +foursquare +fourteener/M +fourteen/SMRH +fourteenths +Fourth +fourths +Fourths +fourth/Y +fovea/M +fowler/M +Fowler/M +fowling/M +fowl/SGMRD +foxfire/SM +foxglove/SM +Foxhall/M +foxhole/SM +foxhound/SM +foxily +foxiness/MS +foxing/M +fox/MDSG +Fox/MS +foxtail/M +foxtrot/MS +foxtrotted +foxtrotting +foxy/TRP +foyer/SM +FPO +fps +fr +fracas/SM +fractal/SM +fractional/Y +fractionate/DNG +fractionation/M +fractioned +fractioning +fraction/ISMA +fractiousness/SM +fractious/PY +fracture/MGDS +fragile/Y +fragility/MS +fragmentarily +fragmentariness/M +fragmentary/P +fragmentation/MS +fragment/SDMG +Fragonard/M +fragrance/SM +fragrant/Y +frailness/MS +frail/STPYR +frailty/MS +framed/U +framer/M +frame/SRDJGMZ +framework/SM +framing/M +Francaise/M +France/MS +Francene/M +Francesca/M +Francesco/M +franchisee/S +franchise/ESDG +franchiser/SM +franchise's +Franchot/M +Francie/M +Francine/M +Francis +Francisca/M +Franciscan/MS +Francisco/M +Franciska/M +Franciskus/M +francium/MS +Francklin/M +Francklyn/M +Franck/M +Francoise/M +Francois/M +Franco/M +francophone/M +franc/SM +Francyne/M +frangibility/SM +frangible +Frankel/M +Frankenstein/MS +franker/M +Frankford/M +Frankfort/M +Frankfurter/M +frankfurter/MS +Frankfurt/RM +Frankie/M +frankincense/MS +Frankish/M +franklin/M +Franklin/M +Franklyn/M +frankness/MS +frank/SGTYRDP +Frank/SM +Franky/M +Fran/MS +Frannie/M +Franni/M +Franny/M +Fransisco/M +frantically +franticness/M +frantic/PY +Frants/M +Franzen/M +Franz/NM +frappé +frappeed +frappeing +frappes +Frasco/M +Fraser/M +Frasier/M +Frasquito/M +fraternal/Y +fraternity/MSF +fraternization/SM +fraternize/GZRSD +fraternizer/M +fraternizing/U +frat/MS +fratricidal +fratricide/MS +fraud/CS +fraud's +fraudsters +fraudulence/S +fraudulent/YP +fraught/SGD +Fraulein/S +Frau/MN +fray/CSDG +Frayda/M +Frayne/M +fray's +Fraze/MR +Frazer/M +Frazier/M +frazzle/GDS +freakishness/SM +freakish/YP +freak/SGDM +freaky/RT +freckle/GMDS +freckly/RT +Freda/M +Freddie/M +Freddi/M +Freddy/M +Fredek/M +Fredelia/M +Frederica/M +Frederich/M +Fredericka/M +Frederick/MS +Frederic/M +Frederico/M +Fredericton/M +Frederigo/M +Frederik/M +Frederique/M +Fredholm/M +Fredia/M +Fredi/M +Fred/M +Fredra/M +Fredrick/M +Fredrickson/M +Fredric/M +Fredrika/M +freebase/GDS +freebie/MS +freebooter/M +freeboot/ZR +freeborn +freedman/M +Freedman/M +freedmen +freedom/MS +freehand/D +freehanded/Y +freeholder/M +freehold/ZSRM +freeing/S +freelance/SRDGZM +Freeland/M +freeloader/M +freeload/SRDGZ +Free/M +freeman/M +Freeman/M +freemasonry/M +Freemasonry/MS +Freemason/SM +freemen +Freemon/M +freeness/M +Freeport/M +freestanding +freestone/SM +freestyle/SM +freethinker/MS +freethinking/S +Freetown/M +freeway/MS +freewheeler/M +freewheeling/P +freewheel/SRDMGZ +freewill +free/YTDRSP +freezable +freezer/SM +freeze/UGSA +freezing/S +Freida/M +freighter/M +freight/ZGMDRS +Fremont/M +Frenchman/M +French/MDSG +Frenchmen +Frenchwoman/M +Frenchwomen +frenetically +frenetic/S +frenzied/Y +frenzy/MDSG +freon/S +Freon/SM +freq +frequency/ISM +frequented/U +frequenter/MS +frequentest +frequenting +frequent/IY +frequentness/M +frequents +fresco/DMG +frescoes +fresh/AZSRNDG +freshener/M +freshen/SZGDR +fresher/MA +freshest +freshet/SM +freshly +freshman/M +freshmen +freshness/MS +freshwater/SM +Fresnel/M +Fresno/M +fretboard +fretfulness/MS +fretful/PY +fret/S +fretsaw/S +fretted +fretting +fretwork/MS +Freudian/S +Freud/M +Freya/M +Frey/M +friableness/M +friable/P +friary/MS +friar/YMS +fricasseeing +fricassee/MSD +frication/M +fricative/MS +Frick/M +frictional/Y +frictionless/Y +friction/MS +Friday/SM +fridge/SM +fried/A +Frieda/M +Friedan/M +friedcake/SM +Friederike/M +Friedman/M +Friedrich/M +Friedrick/M +friendlessness/M +friendless/P +friendlies +friendlily +friendliness/USM +friendly/PUTR +friend/SGMYD +friendship/MS +frier's +fries/M +frieze/SDGM +frigate/SM +Frigga/M +frigged +frigging/S +frighten/DG +frightening/Y +frightfulness/MS +frightful/PY +fright/GXMDNS +Frigidaire/M +frigidity/MS +frigidness/SM +frigid/YP +frig/S +frill/MDGS +frilly/RST +Fri/M +fringe/IGSD +fringe's +frippery/SM +Frisbee/MS +Frisco/M +Frisian/SM +frisker/M +friskily +friskiness/SM +frisk/RDGS +frisky/RTP +frisson/M +Frito/M +fritterer/M +fritter/RDSG +Fritz/M +fritz/SM +frivolity/MS +frivolousness/SM +frivolous/PY +frizz/GYSD +frizzle/DSG +frizzly/RT +frizzy/RT +Fr/MD +Frobisher/M +frocking/M +frock's +frock/SUDGC +frogged +frogging +frogman/M +frogmarched +frogmen +frog/MS +fro/HS +Froissart/M +frolicked +frolicker/SM +frolicking +frolic/SM +frolicsome +from +Fromm/M +frond/SM +frontage/MS +frontal/SY +Frontenac/M +front/GSFRD +frontier/SM +frontiersman/M +frontiersmen +frontispiece/SM +frontrunner's +front's +frontward/S +frosh/M +Frostbelt/M +frostbite/MS +frostbit/G +frostbiting/M +frostbitten +frost/CDSG +frosteds +frosted/U +frostily +frostiness/SM +frosting/MS +Frost/M +frost's +frosty/PTR +froth/GMD +frothiness/SM +froths +frothy/TRP +froufrou/MS +frowardness/MS +froward/P +frowner/M +frowning/Y +frown/RDSG +frowzily +frowziness/SM +frowzy/RPT +frozenness/M +frozen/YP +froze/UA +fructify/GSD +fructose/MS +Fruehauf/M +frugality/SM +frugal/Y +fruitcake/SM +fruiterer/M +fruiter/RM +fruitfuller +fruitfullest +fruitfulness/MS +fruitful/UYP +fruit/GMRDS +fruitiness/MS +fruition/SM +fruitlessness/MS +fruitless/YP +fruity/RPT +frumpish +frump/MS +frumpy/TR +Frunze/M +frustrater/M +frustrate/RSDXNG +frustrating/Y +frustration/M +frustum/SM +Frye/M +fryer/MS +Fry/M +fry/NGDS +F's +f's/KA +FSLIC +ft/C +FTC +FTP +fuchsia/MS +Fuchs/M +fucker/M +fuck/GZJRDMS +FUD +fuddle/GSD +fudge/GMSD +fuel/ASDG +fueler/SM +fuel's +Fuentes/M +fugal +Fugger/M +fugitiveness/M +fugitive/SYMP +fugue/GMSD +fuhrer/S +Fuji/M +Fujitsu/M +Fujiyama +Fukuoka/M +Fulani/M +Fulbright/M +fulcrum/SM +fulfilled/U +fulfiller/M +fulfill/GLSRD +fulfillment/MS +fullback/SMG +fuller/DMG +Fuller/M +Fullerton/M +fullish +fullness/MS +full/RDPSGZT +fullstops +fullword/SM +fully +fulminate/XSDGN +fulmination/M +fulness's +fulsomeness/SM +fulsome/PY +Fulton/M +Fulvia/M +fumble/GZRSD +fumbler/M +fumbling/Y +fume/DSG +fumigant/MS +fumigate/NGSDX +fumigation/M +fumigator/SM +fuming/Y +fumy/TR +Funafuti +functionalism/M +functionalist/SM +functionality/S +functional/YS +functionary/MS +function/GSMD +functor/SM +fundamentalism/SM +fundamentalist/SM +fundamental/SY +fund/ASMRDZG +funded/U +fundholders +fundholding +funding/S +Fundy/M +funeral/MS +funerary +funereal/Y +funfair/M +fungal/S +fungible/M +fungicidal +fungicide/SM +fungi/M +fungoid/S +fungous +fungus/M +funicular/SM +funk/GSDM +funkiness/S +funky/RTP +fun/MS +funned +funnel/SGMD +funner +funnest +funnily/U +funniness/SM +funning +funny/RSPT +furbelow/MDSG +furbisher/M +furbish/GDRSA +furiousness/M +furious/RYP +furlong/MS +furlough/DGM +furloughs +furl/UDGS +furn +furnace/GMSD +furnished/U +furnisher/MS +furnish/GASD +furnishing/SM +furniture/SM +furore/MS +furor/MS +fur/PMS +furred +furrier/M +furriness/SM +furring/SM +furrow/DMGS +furry/RTZP +furtherance/MS +furtherer/M +furthermore +furthermost +further/TGDRS +furthest +furtiveness/SM +furtive/PY +fury/SM +furze/SM +fusebox/S +fusee/SM +fuse/FSDAGCI +fuselage/SM +fuse's/A +Fushun/M +fusibility/SM +fusible/I +fusiform +fusilier/MS +fusillade/SDMG +fusion/KMFSI +fussbudget/MS +fusser/M +fussily +fussiness/MS +fusspot/SM +fuss/SRDMG +fussy/PTR +fustian/MS +fustiness/MS +fusty/RPT +fut +futileness/M +futile/PY +futility/MS +futon/S +future/SM +futurism/SM +futuristic/S +futurist/S +futurity/MS +futurologist/S +futurology/MS +futz/GSD +fuze's +Fuzhou/M +Fuzzbuster/M +fuzzily +fuzziness/SM +fuzz/SDMG +fuzzy/PRT +fwd +FWD +fwy +FY +FYI +GA +gabardine/SM +gabbed +Gabbey/M +Gabbie/M +Gabbi/M +gabbiness/S +gabbing +gabble/SDG +Gabby/M +gabby/TRP +Gabe/M +gaberdine's +Gabey/M +gabfest/MS +Gabie/M +Gabi/M +gable/GMSRD +Gable/M +Gabonese +Gabon/M +Gaborone/M +Gabriela/M +Gabriele/M +Gabriella/M +Gabrielle/M +Gabriellia/M +Gabriell/M +Gabriello/M +Gabriel/M +Gabrila/M +gab/S +Gaby/M +Gacrux/M +gadabout/MS +gadded +gadder/MS +gadding +gadfly/MS +gadgetry/MS +gadget/SM +gadolinium/MS +gad/S +Gadsden/M +Gaea/M +Gaelan/M +Gaelic/M +Gael/SM +Gae/M +gaffe/MS +gaffer/M +gaff/SGZRDM +gaga +Gagarin/M +gag/DRSG +Gage/M +gager/M +gage/SM +gagged +gagging +gaggle/SDG +gagwriter/S +gaiety/MS +Gaile/M +Gail/M +gaily +gain/ADGS +gainer/SM +Gaines/M +Gainesville/M +gainfulness/M +gainful/YP +gaining/S +gainly/U +gainsaid +gainsayer/M +gainsay/RSZG +Gainsborough/M +gaiter/M +gait/GSZMRD +Gaithersburg/M +galactic +Galahad/MS +Galapagos/M +gal/AS +gala/SM +Galatea/M +Galatia/M +Galatians/M +Galaxy/M +galaxy/MS +Galbraith/M +Galbreath/M +gale/AS +Gale/M +galen +galena/MS +galenite/M +Galen/M +gale's +Galibi/M +Galilean/MS +Galilee/M +Galileo/M +Galina/M +Gallagher/M +gallanted +gallanting +gallantry/MS +gallants +gallant/UY +Gallard/M +gallbladder/MS +Gallegos/M +galleon/SM +galleria/S +gallery/MSDG +galley/MS +Gallic +Gallicism/SM +gallimaufry/MS +galling/Y +gallium/SM +gallivant/GDS +Gall/M +gallonage/M +gallon/SM +galloper/M +gallop/GSRDZ +Galloway/M +gallows/M +gall/SGMD +gallstone/MS +Gallup/M +Gal/MN +Galois/M +galoot/MS +galore/S +galosh/GMSD +gal's +Galsworthy/M +galumph/GD +galumphs +galvanic +Galvani/M +galvanism/MS +galvanization/SM +galvanize/SDG +Galvan/M +galvanometer/SM +galvanometric +Galven/M +Galveston/M +Galvin/M +Ga/M +Gamaliel/M +Gama/M +Gambia/M +Gambian/S +gambit/MS +gamble/GZRSD +Gamble/M +gambler/M +gambol/SGD +gamecock/SM +gamekeeper/MS +gameness/MS +game/PJDRSMYTZG +gamesmanship/SM +gamesmen +gamester/M +gamest/RZ +gamete/MS +gametic +gamine/SM +gaminess/MS +gaming/M +gamin/MS +gamma/MS +gammon/DMSG +Gamow/M +gamut/MS +gamy/TRP +gander/DMGS +Gandhian +Gandhi/M +gangbusters +ganger/M +Ganges/M +gang/GRDMS +gangland/SM +ganglia/M +gangling +ganglionic +ganglion/M +gangplank/SM +gangrene/SDMG +gangrenous +gangster/SM +Gangtok/M +gangway/MS +Gan/M +gannet/SM +Gannie/M +Gannon/M +Ganny/M +gantlet/GMDS +Gantry/M +gantry/MS +Ganymede/M +GAO +gaoler/M +gaol/MRDGZS +gaper/M +gape/S +gaping/Y +gapped +gapping +gap/SJMDRG +garage/GMSD +Garald/M +garbageman/M +garbage/SDMG +garbanzo/MS +garb/DMGS +garbler/M +garble/RSDG +Garbo/M +Garcia/M +garçon/SM +gardener/M +Gardener/M +gardenia/SM +gardening/M +garden/ZGRDMS +Gardie/M +Gardiner/M +Gard/M +Gardner/M +Gardy/M +Garek/M +Gare/MH +Gareth/M +Garey/M +Garfield/M +garfish/MS +Garfunkel/M +Gargantua/M +gargantuan +gargle/SDG +gargoyle/DSM +Garibaldi/M +Garik/M +garishness/MS +garish/YP +Garland/M +garland/SMDG +garlicked +garlicking +garlicky +garlic/SM +garment/MDGS +Gar/MH +Garner/M +garner/SGD +Garnet/M +garnet/SM +Garnette/M +Garnett/M +garnish/DSLG +garnisheeing +garnishee/SDM +garnishment/MS +Garold/M +garote's +garotte's +Garrard/M +garred +Garrek/M +Garreth/M +Garret/M +garret/SM +Garrett/M +Garrick/M +Garrik/M +garring +Garrison/M +garrison/SGMD +garroter/M +garrote/SRDMZG +Garrot/M +garrotte's +Garrott/M +garrulity/SM +garrulousness/MS +garrulous/PY +Garry/M +gar/SLM +garter/SGDM +Garth/M +Garvey/M +Garvin/M +Garv/M +Garvy/M +Garwin/M +Garwood/M +Gary/M +Garza/M +gasbag/MS +Gascony/M +gaseousness/M +gaseous/YP +gases/C +gas/FC +gash/GTMSRD +gasification/M +gasifier/M +gasify/SRDGXZN +gasket/SM +gaslight/DMS +gasohol/S +gasoline/MS +gasometer/M +Gaspard/M +Gaspar/M +Gasparo/M +gasper/M +Gasper/M +gasp/GZSRD +gasping/Y +gas's +gassed/C +Gasser/M +gasser/MS +Gasset/M +gassiness/M +gassing/SM +gassy/PTR +Gaston/M +gastric +gastritides +gastritis/MS +gastroenteritides +gastroenteritis/M +gastrointestinal +gastronome/SM +gastronomic +gastronomical/Y +gastronomy/MS +gastropod/SM +gasworks/M +gateau/MS +gateaux +gatecrash/GZSRD +gatehouse/MS +gatekeeper/SM +gate/MGDS +gatepost/SM +Gates +gateway/MS +gathered/IA +gatherer/M +gathering/M +gather/JRDZGS +gathers/A +Gatlinburg/M +Gatling/M +Gatorade/M +gator/MS +Gatsby/M +Gatun/M +gaucheness/SM +gaucherie/SM +gauche/TYPR +gaucho/SM +gaudily +gaudiness/MS +gaudy/PRST +gaugeable +gauger/M +Gauguin/M +Gaulish/M +Gaulle/M +Gaul/MS +Gaultiero/M +gauntlet/GSDM +Gauntley/M +gauntness/MS +gaunt/PYRDSGT +gauss/C +gausses +Gaussian +Gauss/M +gauss's +Gautama/M +Gauthier/M +Gautier/M +gauze/SDGM +gauziness/MS +gauzy/TRP +Gavan/M +gave +gavel/GMDS +Gaven/M +Gavin/M +Gav/MN +gavotte/MSDG +Gavra/M +Gavrielle/M +Gawain/M +Gawen/M +gawkily +gawkiness/MS +gawk/SGRDM +gawky/RSPT +Gayel/M +Gayelord/M +Gaye/M +gayety's +Gayla/M +Gayleen/M +Gaylene/M +Gayler/M +Gayle/RM +Gaylord/M +Gaylor/M +Gay/M +gayness/SM +Gaynor/M +gay/RTPS +Gaza/M +gazebo/SM +gaze/DRSZG +gazelle/MS +gazer/M +gazetteer/SGDM +gazette/MGSD +Gaziantep/M +gazillion/S +gazpacho/MS +GB +G/B +Gdansk/M +Gd/M +GDP +Gearalt/M +Gearard/M +gearbox/SM +gear/DMJSG +gearing/M +gearshift/MS +gearstick +gearwheel/SM +Geary/M +gecko/MS +GED +geegaw's +geeing +geek/SM +geeky/RT +geese/M +geest/M +gee/TDS +geezer/MS +Gehenna/M +Gehrig/M +Geiger/M +Geigy/M +geisha/M +gelatinousness/M +gelatinous/PY +gelatin/SM +gelcap +gelding/M +geld/JSGD +gelid +gelignite/MS +gelled +gelling +gel/MBS +Gelya/M +Ge/M +GE/M +Gemini/SM +gemlike +Gemma/M +gemmed +gemming +gem/MS +gemological +gemologist/MS +gemology/MS +gemstone/SM +gen +Gena/M +Genaro/M +gendarme/MS +gender/DMGS +genderless +genealogical/Y +genealogist/SM +genealogy/MS +Gene/M +gene/MS +generalissimo/SM +generalist/MS +generality/MS +generalizable/SM +generalization/MS +generalized/U +generalize/GZBSRD +generalizer/M +general/MSPY +generalness/M +generalship/SM +genera/M +generate/CXAVNGSD +generational +generation/MCA +generative/AY +generators/A +generator/SM +generically +generic/PS +generosity/MS +generously/U +generousness/SM +generous/PY +Genesco/M +genesis/M +Genesis/M +genes/S +genetically +geneticist/MS +genetic/S +genetics/M +Genet/M +Geneva/M +Genevieve/M +Genevra/M +Genghis/M +geniality/FMS +genially/F +genialness/M +genial/PY +Genia/M +genies/K +genie/SM +genii/M +genitalia +genitals +genital/YF +genitive/SM +genitourinary +genius/SM +Gen/M +Genna/M +Gennie/M +Gennifer/M +Genni/M +Genny/M +Genoa/SM +genocidal +genocide/SM +Geno/M +genome/SM +genotype/MS +Genovera/M +genre/MS +gent/AMS +genteelness/MS +genteel/PRYT +gentian/SM +gentile/S +Gentile's +gentility/MS +gentlefolk/S +gentlemanliness/M +gentlemanly/U +gentleman/YM +gentlemen +gentleness/SM +gentle/PRSDGT +gentlewoman/M +gentlewomen/M +gently +gentrification/M +gentrify/NSDGX +Gentry/M +gentry/MS +genuflect/GDS +genuflection/MS +genuineness/SM +genuine/PY +genus +Genvieve/M +geocentric +geocentrically +geocentricism +geochemical/Y +geochemistry/MS +geochronology/M +geodesic/S +geode/SM +geodesy/MS +geodetic/S +Geoff/M +Geoffrey/M +Geoffry/M +geog +geographer/MS +geographic +geographical/Y +geography/MS +geologic +geological/Y +geologist/MS +geology/MS +geom +Geo/M +geomagnetic +geomagnetically +geomagnetism/SM +geometer/MS +geometrical/Y +geometrician/M +geometric/S +geometry/MS +geomorphological +geomorphology/M +geophysical/Y +geophysicist/MS +geophysics/M +geopolitical/Y +geopolitic/S +geopolitics/M +Georas/M +Geordie/M +Georgeanna/M +Georgeanne/M +Georgena/M +George/SM +Georgeta/M +Georgetown/M +Georgetta/M +Georgette/M +Georgia/M +Georgiana/M +Georgianna/M +Georgianne/M +Georgian/S +Georgie/M +Georgi/M +Georgina/M +Georgine/M +Georg/M +Georgy/M +geostationary +geosynchronous +geosyncline/SM +geothermal +geothermic +Geralda/M +Geraldine/M +Gerald/M +geranium/SM +Gerard/M +Gerardo/M +Gerber/M +gerbil/MS +Gerda/M +Gerek/M +Gerhardine/M +Gerhard/M +Gerhardt/M +Gerianna/M +Gerianne/M +geriatric/S +geriatrics/M +Gerick/M +Gerik/M +Geri/M +Geritol/M +Gerladina/M +Ger/M +Germaine/M +Germain/M +Germana/M +germane +Germania/M +Germanic/M +germanium/SM +germanized +German/SM +Germantown/M +Germany/M +Germayne/M +germen/M +germicidal +germicide/MS +germinal/Y +germinated/U +germinate/XVGNSD +germination/M +germinative/Y +germ/MNS +Gerome/M +Geronimo/M +gerontocracy/M +gerontological +gerontologist/SM +gerontology/SM +Gerrard/M +Gerrie/M +Gerrilee/M +Gerri/M +Gerry/M +gerrymander/SGD +Gershwin/MS +Gerta/M +Gertie/M +Gerti/M +Gert/M +Gertruda/M +Gertrude/M +Gertrudis/M +Gertrud/M +Gerty/M +gerundive/M +gerund/SVM +Gery/M +gestalt/M +gestapo/S +Gestapo/SM +gestate/SDGNX +gestational +gestation/M +gesticulate/XSDVGN +gesticulation/M +gesticulative/Y +gestural +gesture/SDMG +gesundheit +getaway/SM +Gethsemane/M +get/S +getter/SDM +getting +Getty/M +Gettysburg/M +getup/MS +gewgaw/MS +Gewürztraminer +geyser/GDMS +Ghanaian/MS +Ghana/M +Ghanian's +ghastliness/MS +ghastly/TPR +ghat/MS +Ghats/M +Ghent/M +Gherardo/M +gherkin/SM +ghetto/DGMS +ghettoize/SDG +Ghibelline/M +ghostlike +ghostliness/MS +ghostly/TRP +ghost/SMYDG +ghostwrite/RSGZ +ghostwritten +ghostwrote +ghoulishness/SM +ghoulish/PY +ghoul/SM +GHQ +GI +Giacinta/M +Giacobo/M +Giacometti/M +Giacomo/M +Giacopo/M +Giana/M +Gianina/M +Gian/M +Gianna/M +Gianni/M +Giannini/M +giantess/MS +giantkiller +giant/SM +Giauque/M +Giavani/M +gibber/DGS +gibberish/MS +gibbet/MDSG +Gibbie/M +Gibb/MS +Gibbon/M +gibbon/MS +gibbousness/M +gibbous/YP +Gibby/M +gibe/GDRS +giber/M +giblet/MS +Gib/M +Gibraltar/MS +Gibson/M +giddap +giddily +giddiness/SM +Giddings/M +giddy/GPRSDT +Gide/M +Gideon/MS +Gielgud/M +Gienah/M +Giffard/M +Giffer/M +Giffie/M +Gifford/M +Giff/RM +Giffy/M +giftedness/M +gifted/PY +gift/SGMD +gigabyte/S +gigacycle/MS +gigahertz/M +gigantically +giganticness/M +gigantic/P +gigavolt +gigawatt/M +gigged +gigging +giggler/M +giggle/RSDGZ +giggling/Y +giggly/TR +Gigi/M +gig/MS +GIGO +gigolo/MS +gila +Gila/M +Gilberta/M +Gilberte/M +Gilbertina/M +Gilbertine/M +gilbert/M +Gilbert/M +Gilberto/M +Gilbertson/M +Gilburt/M +Gilchrist/M +Gilda/M +gilder/M +gilding/M +gild/JSGZRD +Gilead/M +Gilemette/M +Giles +Gilgamesh/M +Gilkson/M +Gillan/M +Gilles +Gillespie/M +Gillette/M +Gilliam/M +Gillian/M +Gillie/M +Gilligan/M +Gilli/M +Gill/M +gill/SGMRD +Gilly/M +Gilmore/M +Gil/MY +gilt/S +gimbaled +gimbals +Gimbel/M +gimcrackery/SM +gimcrack/S +gimlet/MDSG +gimme/S +gimmick/GDMS +gimmickry/MS +gimmicky +gimp/GSMD +gimpy/RT +Gina/M +Ginelle/M +Ginevra/M +gingerbread/SM +gingerliness/M +gingerly/P +Ginger/M +ginger/SGDYM +gingersnap/SM +gingery +gingham/SM +gingivitis/SM +Gingrich/M +ginkgoes +ginkgo/M +ginmill +gin/MS +ginned +Ginnie/M +Ginnifer/M +Ginni/M +ginning +Ginny/M +Gino/M +Ginsberg/M +Ginsburg/M +ginseng/SM +Gioconda/M +Giordano/M +Giorgia/M +Giorgi/M +Giorgio/M +Giorgione/M +Giotto/M +Giovanna/M +Giovanni/M +Gipsy's +giraffe/MS +Giralda/M +Giraldo/M +Giraud/M +Giraudoux/M +girded/U +girder/M +girdle/GMRSD +girdler/M +gird/RDSGZ +girlfriend/MS +girlhood/SM +girlie/M +girlishness/SM +girlish/YP +girl/MS +giro/M +girt/GDS +girth/MDG +girths +Gisela/M +Giselbert/M +Gisele/M +Gisella/M +Giselle/M +Gish/M +gist/MS +git/M +Giuditta/M +Giulia/M +Giuliano/M +Giulietta/M +Giulio/M +Giuseppe/M +Giustina/M +Giustino/M +Giusto/M +giveaway/SM +giveback/S +give/HZGRS +given/SP +giver/M +giving/Y +Giza/M +Gizela/M +gizmo's +gizzard/SM +Gk/M +glacé/DGS +glacial/Y +glaciate/XNGDS +glaciation/M +glacier/SM +glaciological +glaciologist/M +glaciology/M +gladded +gladden/GDS +gladder +gladdest +gladding +gladdy +glade/SM +gladiatorial +gladiator/SM +Gladi/M +gladiola/MS +gladioli +gladiolus/M +gladly/RT +Glad/M +gladness/MS +gladsome/RT +Gladstone/MS +Gladys +glad/YSP +glamor/DMGS +glamorization/MS +glamorizer/M +glamorize/SRDZG +glamorousness/M +glamorous/PY +glance/GJSD +glancing/Y +glanders/M +glandes +glandular/Y +gland/ZSM +glans/M +glare/SDG +glaringness/M +glaring/YP +Glaser/M +Glasgow/M +glasnost/S +glassblower/S +glassblowing/MS +glassful/MS +glass/GSDM +glasshouse/SM +glassily +glassiness/SM +glassless +Glass/M +glassware/SM +glasswort/M +glassy/PRST +Glastonbury/M +Glaswegian/S +glaucoma/SM +glaucous +glazed/U +glazer/M +glaze/SRDGZJ +glazier/SM +glazing/M +gleam/MDGS +gleaner/M +gleaning/M +glean/RDGZJS +Gleason/M +Gleda/M +gleed/M +glee/DSM +gleefulness/MS +gleeful/YP +gleeing +Glendale/M +Glenda/M +Glenden/M +Glendon/M +Glenine/M +Glen/M +Glenna/M +Glennie/M +Glennis/M +Glenn/M +glen/SM +glibber +glibbest +glibness/MS +glib/YP +glide/JGZSRD +glider/M +glim/M +glimmer/DSJG +glimmering/M +glimpse/DRSZMG +glimpser/M +glint/DSG +glissandi +glissando/M +glisten/DSG +glister/DGS +glitch/MS +glitter/GDSJ +glittering/Y +glittery +glitz/GSD +glitzy/TR +gloaming/MS +gloater/M +gloating/Y +gloat/SRDG +globalism/S +globalist/S +global/SY +globe/SM +globetrotter/MS +glob/GDMS +globularity/M +globularness/M +globular/PY +globule/MS +globulin/MS +glockenspiel/SM +glommed +gloom/GSMD +gloomily +gloominess/MS +gloomy/RTP +glop/MS +glopped +glopping +gloppy/TR +Gloria/M +Gloriana/M +Gloriane/M +glorification/M +glorifier/M +glorify/XZRSDNG +Glori/M +glorious/IYP +gloriousness/IM +Glory/M +glory/SDMG +glossary/MS +gloss/GSDM +glossily +glossiness/SM +glossolalia/SM +glossy/RSPT +glottal +glottalization/M +glottis/MS +Gloucester/M +gloveless +glover/M +Glover/M +glove/SRDGMZ +glower/GD +glow/GZRDMS +glowing/Y +glowworm/SM +glucose/SM +glue/DRSMZG +glued/U +gluer/M +gluey +gluier +gluiest +glummer +glummest +glumness/MS +glum/SYP +gluon/M +glutamate/M +gluten/M +glutenous +glutinousness/M +glutinous/PY +glut/SMNX +glutted +glutting +glutton/MS +gluttonous/Y +gluttony/SM +glyceride/M +glycerinate/MD +glycerine's +glycerin/SM +glycerolized/C +glycerol/SM +glycine/M +glycogen/SM +glycol/MS +Glynda/M +Glynis/M +Glyn/M +Glynnis/M +Glynn/M +glyph/M +glyphs +gm +GM +GMT +gnarl/SMDG +gnash/SDG +gnat/MS +gnawer/M +gnaw/GRDSJ +gnawing/M +gneiss/SM +Gnni/M +gnomelike +gnome/SM +gnomic +gnomish +gnomonic +gnosticism +Gnosticism/M +gnostic/K +Gnostic/M +GNP +gnu/MS +goad/MDSG +goalie/SM +goalkeeper/MS +goalkeeping/M +goalless +goal/MDSG +goalmouth/M +goalpost/S +goalscorer +goalscoring +goaltender/SM +Goa/M +goatee/SM +goatherd/MS +goat/MS +goatskin/SM +gobbed +gobbet/MS +gobbing +gobbledegook's +gobbledygook/S +gobbler/M +gobble/SRDGZ +Gobi/M +goblet/MS +goblin/SM +gob/SM +Godard/M +Godart/M +godchild/M +godchildren +goddammit +goddamn/GS +Goddard/M +Goddart/M +goddaughter/SM +godded +goddess/MS +godding +Gödel/M +godfather/GSDM +godforsaken +Godfree/M +Godfrey/M +Godfry/M +godhead/S +godhood/SM +Godiva/M +godlessness/MS +godless/P +godlikeness/M +godlike/P +godliness/UMS +godly/UTPR +God/M +godmother/MS +Godot/M +godparent/SM +godsend/MS +god/SMY +godson/MS +Godspeed/S +Godthaab/M +Godunov/M +Godwin/M +Godzilla/M +Goebbels/M +Goering/M +goer/MG +goes +Goethals/M +Goethe/M +gofer/SM +Goff/M +goggler/M +goggle/SRDGZ +Gogh/M +Gog/M +Gogol/M +Goiania/M +going/M +goiter/SM +Golan/M +Golconda/M +Golda/M +Goldarina/M +Goldberg/M +goldbricker/M +goldbrick/GZRDMS +Golden/M +goldenness/M +goldenrod/SM +goldenseal/M +golden/TRYP +goldfinch/MS +goldfish/SM +Goldia/M +Goldie/M +Goldilocks/M +Goldi/M +Goldina/M +Golding/M +Goldman/M +goldmine/S +gold/MRNGTS +goldsmith/M +Goldsmith/M +goldsmiths +Goldstein/M +Goldwater/M +Goldwyn/M +Goldy/M +Goleta/M +golfer/M +golf/RDMGZS +Golgotha/M +Goliath/M +Goliaths +golly/S +Gomez/M +Gomorrah/M +Gompers/M +go/MRHZGJ +gonadal +gonad/SM +gondola/SM +gondolier/MS +Gondwanaland/M +goner/M +gone/RZN +gong/SGDM +gonion/M +gonna +gonorrheal +gonorrhea/MS +Gonzales/M +Gonzalez/M +Gonzalo/M +Goober/M +goober/MS +goodbye/MS +goodhearted +goodie's +goodish +goodly/TR +Good/M +Goodman/M +goodness/MS +goodnight +Goodrich/M +good/SYP +goodwill/MS +Goodwin/M +Goodyear/M +goody/SM +gooey +goofiness/MS +goof/SDMG +goofy/RPT +gooier +gooiest +gook/SM +goo/MS +goon/SM +goop/SM +gooseberry/MS +goosebumps +goose/M +goos/SDG +GOP +Gopher +gopher/SM +Goran/M +Goraud/M +Gorbachev +Gordan/M +Gorden/M +Gordian/M +Gordie/M +Gordimer/M +Gordon/M +Gordy/M +gore/DSMG +Gore/M +Goren/M +Gorey/M +Gorgas +gorged/E +gorge/GMSRD +gorgeousness/SM +gorgeous/YP +gorger/EM +gorges/E +gorging/E +Gorgon/M +gorgon/S +Gorgonzola/M +Gorham/M +gorilla/MS +gorily +goriness/MS +goring/M +Gorky/M +gormandizer/M +gormandize/SRDGZ +gormless +gorp/S +gorse/SM +gory/PRT +gos +goshawk/MS +gosh/S +gosling/M +gospeler/M +gospel/MRSZ +Gospel/SM +gossamer/SM +gossipy +gossip/ZGMRDS +gotcha/SM +Göteborg/M +Gotham/M +Gothart/M +Gothicism/M +Gothic/S +Goth/M +Goths +got/IU +goto +GOTO/MS +gotta +gotten/U +Gottfried/M +Goucher/M +Gouda/SM +gouge/GZSRD +gouger/M +goulash/SM +Gould/M +Gounod/M +gourde/SM +gourd/MS +gourmand/MS +gourmet/MS +gout/SM +gouty/RT +governable/U +governance/SM +governed/U +governess/SM +govern/LBGSD +governmental/Y +government/MS +Governor +governor/MS +governorship/SM +gov/S +govt +gown/GSDM +Goya/M +GP +GPA +GPO +GPSS +gr +grabbed +grabber/SM +grabbing/S +grab/S +Gracchus/M +grace/ESDMG +graceful/EYPU +gracefuller +gracefullest +gracefulness/ESM +Graceland/M +gracelessness/MS +graceless/PY +Grace/M +Gracia/M +Graciela/M +Gracie/M +graciousness/SM +gracious/UY +grackle/SM +gradate/DSNGX +gradation/MCS +grade/ACSDG +graded/U +Gradeigh/M +gradely +grader/MC +grade's +Gradey/M +gradient/RMS +grad/MRDGZJS +gradualism/MS +gradualist/MS +gradualness/MS +gradual/SYP +graduand/SM +graduate/MNGDSX +graduation/M +Grady/M +Graehme/M +Graeme/M +Graffias/M +graffiti +graffito/M +Graff/M +grafter/M +grafting/M +graft/MRDSGZ +Grafton/M +Grahame/M +Graham/M +graham/SM +Graig/M +grail/S +Grail/SM +grainer/M +grain/IGSD +graininess/MS +graining/M +grain's +grainy/RTP +gram/KSM +Gram/M +grammarian/SM +grammar/MS +grammaticality/M +grammaticalness/M +grammatical/UY +grammatic/K +gramme/SM +Grammy/S +gramophone/SM +Grampians +grampus/SM +Granada/M +granary/MS +grandam/SM +grandaunt/MS +grandchild/M +grandchildren +granddaddy/MS +granddad/SM +granddaughter/MS +grandee/SM +grandeur/MS +grandfather/MYDSG +grandiloquence/SM +grandiloquent/Y +grandiose/YP +grandiosity/MS +grandkid/SM +grandma/MS +grandmaster/MS +grandmother/MYS +grandnephew/MS +grandness/MS +grandniece/SM +grandpa/MS +grandparent/MS +grandson/MS +grandstander/M +grandstand/SRDMG +grand/TPSYR +granduncle/MS +Grange/MR +grange/MSR +Granger/M +granite/MS +granitic +Gran/M +Grannie/M +Granny/M +granny/MS +granola/S +grantee/MS +granter/M +Grantham/M +Granthem/M +Grantley/M +Grant/M +grantor's +grant/SGZMRD +grantsmanship/S +granularity/SM +granular/Y +granulate/SDXVGN +granulation/M +granule/SM +granulocytic +Granville/M +grapefruit/SM +grape/SDGM +grapeshot/M +grapevine/MS +grapheme/M +graph/GMD +graphical/Y +graphicness/M +graphic/PS +graphics/M +graphite/SM +graphologist/SM +graphology/MS +graphs +grapnel/SM +grapple/DRSG +grappler/M +grappling/M +grasper/M +graspingness/M +grasping/PY +grasp/SRDBG +grass/GZSDM +grasshopper/SM +grassland/MS +Grass/M +grassroots +grassy/RT +Grata/M +gratefuller +gratefullest +gratefulness/USM +grateful/YPU +grater/M +grates/I +grate/SRDJGZ +Gratia/M +Gratiana/M +graticule/M +gratification/M +gratified/U +gratifying/Y +gratify/NDSXG +grating/YM +gratis +gratitude/IMS +gratuitousness/MS +gratuitous/PY +gratuity/SM +gravamen/SM +gravedigger/SM +gravel/SGMYD +graven +graveness/MS +graver/M +graveside/S +Graves/M +grave/SRDPGMZTY +gravestone/SM +graveyard/MS +gravidness/M +gravid/PY +gravimeter/SM +gravimetric +gravitas +gravitate/XVGNSD +gravitational/Y +gravitation/M +graviton/SM +gravity/MS +gravy/SM +graybeard/MS +Grayce/M +grayish +Gray/M +grayness/S +gray/PYRDGTS +Grayson/M +graze/GZSRD +grazer/M +Grazia/M +grazing/M +grease/GMZSRD +greasepaint/MS +greaseproof +greaser/M +greasily +greasiness/SM +greasy/PRT +greatcoat/DMS +greaten/DG +greathearted +greatness/MS +great/SPTYRN +grebe/MS +Grecian/S +Greece/M +greed/C +greedily +greediness/SM +greeds +greed's +greedy/RTP +Greek/SM +Greeley/M +greenback/MS +greenbelt/S +Greenberg/M +Greenblatt/M +Greenbriar/M +Greene/M +greenery/MS +Greenfeld/M +greenfield +Greenfield/M +greenfly/M +greengage/SM +greengrocer/SM +greengrocery/M +greenhorn/SM +greenhouse/SM +greening/M +greenish/P +Greenland/M +Green/M +greenmail/GDS +greenness/MS +Greenpeace/M +greenroom/SM +Greensboro/M +Greensleeves/M +Greensville/M +greensward/SM +green/SYRDMPGT +Greentree/M +Greenville/M +Greenwich/M +greenwood/MS +Greer/M +greeter/M +greeting/M +greets/A +greet/SRDJGZ +gregariousness/MS +gregarious/PY +Gregg/M +Greggory/M +Greg/M +Gregoire/M +Gregoor/M +Gregorian +Gregorio/M +Gregorius/M +Gregor/M +Gregory/M +gremlin/SM +Grenada/M +grenade/MS +Grenadian/S +grenadier/SM +Grenadines +grenadine/SM +Grendel/M +Grenier/M +Grenoble/M +Grenville/M +Gresham/M +Gretal/M +Greta/M +Gretchen/M +Gretel/M +Grete/M +Grethel/M +Gretna/M +Gretta/M +Gretzky/M +grew/A +greybeard/M +greyhound/MS +Grey/M +greyness/M +gridded +griddlecake/SM +griddle/DSGM +gridiron/GSMD +gridlock/DSG +grids/A +grid/SGM +grief/MS +Grieg/M +Grier/M +grievance/SM +griever/M +grieve/SRDGZ +grieving/Y +grievousness/SM +grievous/PY +Griffie/M +Griffin/M +griffin/SM +Griffith/M +Griff/M +griffon's +Griffy/M +griller/M +grille/SM +grill/RDGS +grillwork/M +grimace/DRSGM +grimacer/M +Grimaldi/M +grime/MS +Grimes +griminess/MS +grimmer +grimmest +Grimm/M +grimness/MS +grim/PGYD +grimy/TPR +Grinch/M +grind/ASG +grinder/MS +grinding/SY +grindstone/SM +gringo/SM +grinned +grinner/M +grinning/Y +grin/S +griper/M +gripe/S +grippe/GMZSRD +gripper/M +gripping/Y +grip/SGZMRD +Griselda/M +grisliness/SM +grisly/RPT +Gris/M +Grissel/M +gristle/SM +gristliness/M +gristly/TRP +gristmill/MS +grist/MYS +Griswold/M +grit/MS +gritted +gritter/MS +grittiness/SM +gritting +gritty/PRT +Griz/M +grizzle/DSG +grizzling/M +grizzly/TRS +Gr/M +groaner/M +groan/GZSRDM +groat/SM +grocer/MS +grocery/MS +groggily +grogginess/SM +groggy/RPT +grog/MS +groin/MGSD +grokked +grokking +grok/S +grommet/GMDS +Gromyko/M +groofs +groomer/M +groom/GZSMRD +groomsman/M +groomsmen +Groot/M +groover/M +groove/SRDGM +groovy/TR +groper/M +grope/SRDJGZ +Gropius/M +grosbeak/SM +grosgrain/MS +Gross +Grosset/M +gross/GTYSRDP +Grossman/M +grossness/MS +Grosvenor/M +Grosz/M +grotesqueness/MS +grotesque/PSY +Grotius/M +Groton/M +grottoes +grotto/M +grouch/GDS +grouchily +grouchiness/MS +grouchy/RPT +groundbreaking/S +grounded/U +grounder/M +groundhog/SM +ground/JGZMDRS +groundlessness/M +groundless/YP +groundnut/MS +groundsheet/M +groundskeepers +groundsman/M +groundswell/S +groundwater/S +groundwork/SM +grouped/A +grouper/M +groupie/MS +grouping/M +groups/A +group/ZJSMRDG +grouse/GMZSRD +grouser/M +grouter/M +grout/GSMRD +groveler/M +grovelike +groveling/Y +grovel/SDRGZ +Grover/M +Grove/RM +grove/SRMZ +grower/M +grow/GZYRHS +growing/I +growingly +growler/M +growling/Y +growl/RDGZS +growly/RP +grown/IA +grownup/MS +grows/A +growth/IMA +growths/IA +grubbed +grubber/SM +grubbily +grubbiness/SM +grubbing +grubby/RTP +grub/MS +grubstake/MSDG +grudge/GMSRDJ +grudger/M +grudging/Y +grueling/Y +gruel/MDGJS +gruesomeness/SM +gruesome/RYTP +gruffness/MS +gruff/PSGTYRD +grumble/GZJDSR +grumbler/M +grumbling/Y +Grumman/M +grumpily +grumpiness/MS +grump/MDGS +grumpy/TPR +Grundy/M +Grünewald/M +grunge/S +grungy/RT +grunion/SM +grunter/M +grunt/SGRD +Grusky/M +Grus/M +Gruyère +Gruyeres +gryphon's +g's +G's +gs/A +GSA +gt +GU +guacamole/MS +Guadalajara/M +Guadalcanal/M +Guadalquivir/M +Guadalupe/M +Guadeloupe/M +Guallatiri/M +Gualterio/M +Guamanian/SM +Guam/M +Guangzhou +guanine/MS +guano/MS +Guantanamo/M +Guarani/M +guarani/SM +guaranteeing +guarantee/RSDZM +guarantor/SM +guaranty/MSDG +guardedness/UM +guarded/UYP +guarder/M +guardhouse/SM +Guardia/M +guardianship/MS +guardian/SM +guardrail/SM +guard/RDSGZ +guardroom/SM +guardsman/M +guardsmen +Guarnieri/M +Guatemala/M +Guatemalan/S +guava/SM +Guayaquil/M +gubernatorial +Gucci/M +gudgeon/M +Guelph/M +Guendolen/M +Guenevere/M +Guenna/M +Guenther/M +guernsey/S +Guernsey/SM +Guerra/M +Guerrero/M +guerrilla/MS +guessable/U +guess/BGZRSD +guessed/U +guesser/M +guesstimate/DSMG +guesswork/MS +guest/SGMD +Guevara/M +guffaw/GSDM +guff/SM +Guggenheim/M +Guglielma/M +Guglielmo/M +Guhleman/M +GUI +Guiana/M +guidance/MS +guidebook/SM +guided/U +guide/GZSRD +guideline/SM +guidepost/MS +guider/M +Guido/M +Guilbert/M +guilder/M +guildhall/SM +guild/SZMR +guileful +guilelessness/MS +guileless/YP +guile/SDGM +Guillaume/M +Guillema/M +Guillemette/M +guillemot/MS +Guillermo/M +guillotine/SDGM +guiltily +guiltiness/MS +guiltlessness/M +guiltless/YP +guilt/SM +guilty/PTR +Gui/M +Guinea/M +Guinean/S +guinea/SM +Guinevere/M +Guinna/M +Guinness/M +guise's +guise/SDEG +guitarist/SM +guitar/SM +Guiyang +Guizot/M +Gujarati/M +Gujarat/M +Gujranwala/M +gulag/S +gulch/MS +gulden/MS +gulf/DMGS +Gullah/M +gullet/MS +gulley's +gullibility/MS +gullible +Gulliver/M +gull/MDSG +gully/SDMG +gulp/RDGZS +gumboil/MS +gumbo/MS +gumboots +gumdrop/SM +gummed +gumminess/M +gumming/C +gum/MS +gummy/RTP +gumption/SM +gumshoeing +gumshoe/SDM +gumtree/MS +Gunar/M +gunboat/MS +Gunderson/M +gunfighter/M +gunfight/SRMGZ +gunfire/SM +gunflint/M +gunfought +Gunilla/M +gunk/SM +gunky/RT +Gun/M +gunman/M +gunmen +gunmetal/MS +gun/MS +Gunnar/M +gunned +gunnel's +Gunner/M +gunner/SM +gunnery/MS +gunning/M +gunnysack/SM +gunny/SM +gunpoint/MS +gunpowder/SM +gunrunner/MS +gunrunning/MS +gunship/S +gunshot/SM +gunslinger/M +gunsling/GZR +gunsmith/M +gunsmiths +Guntar/M +Gunter/M +Gunther/M +gunwale/MS +Guofeng/M +guppy/SM +Gupta/M +gurgle/SDG +Gurkha/M +gurney/S +guru/MS +Gusella/M +gusher/M +gush/SRDGZ +gushy/TR +Gus/M +Guss +gusset/MDSG +Gussie/M +Gussi/M +gussy/GSD +Gussy/M +Gustaf/M +Gustafson/M +Gusta/M +gustatory +Gustave/M +Gustav/M +Gustavo/M +Gustavus/M +gusted/E +Gustie/M +gustily +Gusti/M +gustiness/M +gusting/E +gust/MDGS +gustoes +gusto/M +gusts/E +Gusty/M +gusty/RPT +Gutenberg/M +Guthrey/M +Guthrie/M +Guthry/M +Gutierrez/M +gutlessness/S +gutless/P +gutser/M +gutsiness/M +gut/SM +guts/R +gutsy/PTR +gutted +gutter/GSDM +guttering/M +guttersnipe/M +gutting +gutturalness/M +guttural/SPY +gutty/RSMT +Guyana/M +Guyanese +Guy/M +guy/MDRZGS +Guzman/M +guzzle/GZRSD +guzzler/M +g/VBX +Gwalior/M +Gwendolen/M +Gwendoline/M +Gwendolin/M +Gwendolyn/M +Gweneth/M +Gwenette/M +Gwen/M +Gwenneth/M +Gwennie/M +Gwenni/M +Gwenny/M +Gwenora/M +Gwenore/M +Gwyneth/M +Gwyn/M +Gwynne/M +gymkhana/SM +gym/MS +gymnasia's +gymnasium/SM +gymnastically +gymnastic/S +gymnastics/M +gymnast/SM +gymnosperm/SM +gynecologic +gynecological/MS +gynecologist/SM +gynecology/MS +gypped +gypper/S +gypping +gyp/S +gypsite +gypster/S +gypsum/MS +gypsy/SDMG +Gypsy/SM +gyrate/XNGSD +gyration/M +gyrator/MS +gyrfalcon/SM +gyrocompass/M +gyro/MS +gyroscope/SM +gyroscopic +gyve/GDS +H +Haag/M +Haas/M +Habakkuk/M +habeas +haberdasher/SM +haberdashery/SM +Haber/M +Haberman/M +Habib/M +habiliment/SM +habitability/MS +habitableness/M +habitable/P +habitant/ISM +habitation/MI +habitations +habitat/MS +habit/IBDGS +habit's +habitualness/SM +habitual/SYP +habituate/SDNGX +habituation/M +habitué/MS +hacienda/MS +hacker/M +Hackett/M +hack/GZSDRBJ +hackler/M +hackle/RSDMG +hackney/SMDG +hacksaw/SDMG +hackwork/S +Hadamard/M +Hadar/M +Haddad/M +haddock/MS +hades +Hades +had/GD +hadji's +hadj's +Hadlee/M +Hadleigh/M +Hadley/M +Had/M +hadn't +Hadria/M +Hadrian/M +hadron/MS +hadst +haemoglobin's +haemophilia's +haemorrhage's +Hafiz/M +hafnium/MS +haft/GSMD +Hagan/M +Hagar/M +Hagen/M +Hager/M +Haggai/M +haggardness/MS +haggard/SYP +hagged +hagging +haggish +haggis/SM +haggler/M +haggle/RSDZG +Hagiographa/M +hagiographer/SM +hagiography/MS +hag/SMN +Hagstrom/M +Hague/M +ha/H +hahnium/S +Hahn/M +Haifa/M +haiku/M +Hailee/M +hailer/M +Hailey/M +hail/SGMDR +hailstone/SM +hailstorm/SM +Haily/M +Haiphong/M +hairball/SM +hairbreadth/M +hairbreadths +hairbrush/SM +haircare +haircloth/M +haircloths +haircut/MS +haircutting +hairdo/SM +hairdresser/SM +hairdressing/SM +hairdryer/S +hairiness/MS +hairlessness/M +hairless/P +hairlike +hairline/SM +hairnet/MS +hairpiece/MS +hairpin/MS +hairsbreadth +hairsbreadths +hair/SDM +hairsplitter/SM +hairsplitting/MS +hairspray +hairspring/SM +hairstyle/SMG +hairstylist/S +hairy/PTR +Haitian/S +Haiti/M +hajjes +hajji/MS +hajj/M +Hakeem/M +hake/MS +Hakim/M +Hakka/M +Hakluyt/M +halalled +halalling +halal/S +halberd/SM +halcyon/S +Haldane/M +Haleakala/M +Haleigh/M +hale/ISRDG +Hale/M +haler/IM +halest +Halette/M +Haley/M +halfback/SM +halfbreed +halfheartedness/MS +halfhearted/PY +halfpence/S +halfpenny/MS +halfpennyworth +half/PM +halftime/S +halftone/MS +halfway +halfword/MS +halibut/SM +halide/SM +Halie/M +Halifax/M +Hali/M +Halimeda/M +halite/MS +halitoses +halitosis/M +hallelujah +hallelujahs +Halley/M +halliard's +Hallie/M +Halli/M +Hallinan/M +Hall/M +Hallmark/M +hallmark/SGMD +hallo/GDS +halloo's +Halloween/MS +hallowing +hallows +hallow/UD +hall/SMR +Hallsy/M +hallucinate/VNGSDX +hallucination/M +hallucinatory +hallucinogenic/S +hallucinogen/SM +hallway/SM +Hally/M +halocarbon +halogenated +halogen/SM +halon +halo/SDMG +Halpern/M +Halsey/M +Hal/SMY +Halsy/M +halter/GDM +halt/GZJSMDR +halting/Y +halve/GZDS +halves/M +halyard/MS +Ha/M +Hamal/M +Haman/M +hamburger/M +Hamburg/MS +hamburg/SZRM +Hamel/M +Hamey/M +Hamhung/M +Hamid/M +Hamilcar/M +Hamil/M +Hamiltonian/MS +Hamilton/M +Hamish/M +Hamitic/M +Hamlen/M +Hamlet/M +hamlet/MS +Hamlin/M +Ham/M +Hammad/M +Hammarskjold/M +hammed +hammerer/M +hammerhead/SM +hammering/M +hammerless +hammerlock/MS +Hammerstein/M +hammertoe/SM +hammer/ZGSRDM +Hammett/M +hamming +hammock/MS +Hammond/M +Hammurabi/M +hammy/RT +Hamnet/M +hampered/U +hamper/GSD +Hampshire/M +Hampton/M +ham/SM +hamster/MS +hamstring/MGS +hamstrung +Hamsun/M +Hana/M +Hanan/M +Hancock/M +handbagged +handbagging +handbag/MS +handball/SM +handbarrow/MS +handbasin +handbill/MS +handbook/SM +handbrake/M +handcar/SM +handcart/MS +handclasp/MS +handcraft/GMDS +handcuff/GSD +handcuffs/M +handedness/M +handed/PY +Handel/M +hander/S +handful/SM +handgun/SM +handhold/M +handicapped +handicapper/SM +handicapping +handicap/SM +handicraftsman/M +handicraftsmen +handicraft/SMR +handily/U +handiness/SM +handiwork/MS +handkerchief/MS +handleable +handlebar/SM +handle/MZGRSD +handler/M +handless +handling/M +handmade +handmaiden/M +handmaid/NMSX +handout/SM +handover +handpick/GDS +handrail/SM +hand's +handsaw/SM +handset/SM +handshake/GMSR +handshaker/M +handshaking/M +handsomely/U +handsomeness/MS +handsome/RPTY +handspike/SM +handspring/SM +handstand/MS +hand/UDSG +handwork/SM +handwoven +handwrite/GSJ +handwriting/M +handwritten +Handy/M +handyman/M +handymen +handy/URT +Haney/M +hangar/SGDM +hangdog/S +hanged/A +hanger/M +hang/GDRZBSJ +hanging/M +hangman/M +hangmen +hangnail/MS +hangout/MS +hangover/SM +hangs/A +Hangul/M +hangup/S +Hangzhou +Hankel/M +hankerer/M +hanker/GRDJ +hankering/M +hank/GZDRMS +hankie/SM +Hank/M +hanky's +Hannah/M +Hanna/M +Hannibal/M +Hannie/M +Hanni/MS +Hanny/M +Hanoi/M +Hanoverian +Hanover/M +Hansel/M +Hansen/M +Hansiain/M +Han/SM +Hans/N +hansom/MS +Hanson/M +Hanuka/S +Hanukkah/M +Hanukkahs +Hapgood/M +haphazardness/SM +haphazard/SPY +haplessness/MS +hapless/YP +haploid/S +happed +happening/M +happen/JDGS +happenstance/SM +happily/U +happiness/UMS +happing +Happy/M +happy/UTPR +Hapsburg/M +hap/SMY +Harald/M +harangue/GDRS +haranguer/M +Harare +harasser/M +harass/LSRDZG +harassment/SM +Harbert/M +harbinger/DMSG +Harbin/M +harborer/M +harbor/ZGRDMS +Harcourt/M +hardback/SM +hardball/SM +hardboard/SM +hardboiled +hardbound +hardcore/MS +hardcover/SM +hardened/U +hardener/M +hardening/M +harden/ZGRD +hardhat/S +hardheadedness/SM +hardheaded/YP +hardheartedness/SM +hardhearted/YP +hardihood/MS +hardily +hardiness/SM +Harding/M +Hardin/M +hardliner/S +hardness/MS +hardscrabble +hardshell +hardship/MS +hardstand/S +hardtack/MS +hardtop/MS +hardware/SM +hardwire/DSG +hardwood/MS +hardworking +Hardy/M +hard/YNRPJGXTS +hardy/PTRS +harebell/MS +harebrained +harelip/MS +harelipped +hare/MGDS +harem/SM +Hargreaves/M +hark/GDS +Harland/M +Harlan/M +Harlem/M +Harlene/M +Harlen/M +Harlequin +harlequin/MS +Harley/M +Harlie/M +Harli/M +Harlin/M +harlotry/MS +harlot/SM +Harlow/M +Harman/M +harmed/U +harmer/M +harmfulness/MS +harmful/PY +harmlessness/SM +harmless/YP +harm/MDRGS +Harmonia/M +harmonically +harmonica/MS +harmonic/S +harmonics/M +Harmonie/M +harmonious/IPY +harmoniousness/MS +harmoniousness's/I +harmonium/MS +harmonization/A +harmonizations +harmonization's +harmonized/U +harmonizer/M +harmonizes/UA +harmonize/ZGSRD +Harmon/M +harmony/EMS +Harmony/M +harness/DRSMG +harnessed/U +harnesser/M +harnesses/U +Harold/M +Haroun/M +harper/M +Harper/M +harping/M +harpist/SM +harp/MDRJGZS +Harp/MR +harpooner/M +harpoon/SZGDRM +harpsichordist/MS +harpsichord/SM +harpy/SM +Harpy/SM +Harrell/M +harridan/SM +Harrie/M +harrier/M +Harriet/M +Harrietta/M +Harriette/M +Harriett/M +Harrington/M +Harriot/M +Harriott/M +Harrisburg/M +Harri/SM +Harrisonburg/M +Harrison/M +harrower/M +harrow/RDMGS +harrumph/SDG +Harry/M +harry/RSDGZ +harshen/GD +harshness/SM +harsh/TRNYP +Harte/M +Hartford/M +Hartley/M +Hartline/M +Hart/M +Hartman/M +hart/MS +Hartwell/M +Harvard/M +harvested/U +harvester/M +harvestman/M +harvest/MDRZGS +Harvey/MS +Harv/M +Harwell/M +Harwilll/M +has +Hasbro/M +hash/AGSD +Hasheem/M +hasher/M +Hashim/M +hashing/M +hashish/MS +hash's +Hasidim +Haskell/M +Haskel/M +Haskins/M +Haslett/M +hasn't +hasp/GMDS +hassle/MGRSD +hassock/MS +haste/MS +hastener/M +hasten/GRD +hast/GXJDN +Hastie/M +hastily +hastiness/MS +Hastings/M +Hasty/M +hasty/RPT +hatchback/SM +hatcheck/S +hatched/U +hatcher/M +hatchery/MS +hatchet/MDSG +hatching/M +hatch/RSDJG +Hatchure/M +hatchway/MS +hatefulness/MS +hateful/YP +hater/M +hate/S +Hatfield/M +Hathaway/M +hatless +hat/MDRSZG +hatred/SM +hatstands +hatted +Hatteras/M +hatter/SM +Hattie/M +Hatti/M +hatting +Hatty/M +hauberk/SM +Haugen/M +haughtily +haughtiness/SM +haughty/TPR +haulage/MS +hauler/M +haul/SDRGZ +haunch/GMSD +haunter/M +haunting/Y +haunt/JRDSZG +Hauptmann/M +Hausa/M +Hausdorff/M +Hauser/M +hauteur/MS +Havana/SM +Havarti +Havel/M +haven/DMGS +Haven/M +haven't +haver/G +haversack/SM +have/ZGSR +havocked +havocking +havoc/SM +Haw +Hawaiian/S +Hawaii/M +hawker/M +hawk/GZSDRM +Hawking +hawking/M +Hawkins/M +hawkishness/S +hawkish/P +Hawley/M +haw/MDSG +hawser/M +haws/RZ +Hawthorne/M +hawthorn/MS +haycock/SM +Hayden/M +Haydn/M +Haydon/M +Hayes +hayfield/MS +hay/GSMDR +Hayley/M +hayloft/MS +haymow/MS +Haynes +hayrick/MS +hayride/MS +hayseed/MS +Hay/SM +haystack/SM +haywain +Hayward/M +haywire/MS +Haywood/M +Hayyim/M +hazard/MDGS +hazardousness/M +hazardous/PY +haze/DSRJMZG +Hazel/M +hazel/MS +hazelnut/SM +Haze/M +hazer/M +hazily +haziness/MS +hazing/M +Hazlett/M +Hazlitt/M +hazy/PTR +HBO/M +hdqrs +HDTV +headache/MS +headband/SM +headboard/MS +headcount +headdress/MS +header/M +headfirst +headgear/SM +headhunter/M +headhunting/M +headhunt/ZGSRDMJ +headily +headiness/S +heading/M +headlamp/S +headland/MS +headlessness/M +headless/P +headlight/MS +headline/DRSZMG +headliner/M +headlock/MS +headlong +Head/M +headman/M +headmaster/MS +headmastership/M +headmen +headmistress/MS +headphone/SM +headpiece/SM +headpin/MS +headquarter/GDS +headrest/MS +headroom/SM +headscarf/M +headset/SM +headship/SM +headshrinker/MS +head/SJGZMDR +headsman/M +headsmen +headstall/SM +headstand/MS +headstock/M +headstone/MS +headstrong +headwaiter/SM +headwall/S +headwater/S +headway/MS +headwind/SM +headword/MS +heady/PTR +heal/DRHSGZ +healed/U +healer/M +Heall/M +healthfully +healthfulness/SM +healthful/U +healthily/U +healthiness/MSU +health/M +healths +healthy/URPT +heap/SMDG +heard/UA +hearer/M +hearing/AM +hearken/SGD +hearsay/SM +hearse/M +hears/SDAG +Hearst/M +heartache/SM +heartbeat/MS +heartbreak/GMS +heartbreaking/Y +heartbroke +heartbroken +heartburning/M +heartburn/SGM +hearted/Y +hearten/EGDS +heartening/EY +heartfelt +hearth/M +hearthrug +hearths +hearthstone/MS +heartily +heartiness/SM +heartland/SM +heartlessness/SM +heartless/YP +heartrending/Y +heartsickness/MS +heartsick/P +heart/SMDNXG +heartstrings +heartthrob/MS +heartwarming +Heartwood/M +heartwood/SM +hearty/TRSP +hear/ZTSRHJG +heatedly +heated/UA +heater/M +heathendom/SM +heathenish/Y +heathenism/MS +heathen/M +heather/M +Heather/M +heathery +Heathkit/M +heathland +Heathman/M +Heath/MR +heath/MRNZX +heaths +heatproof +heats/A +heat/SMDRGZBJ +heatstroke/MS +heatwave +heave/DSRGZ +heavenliness/M +heavenly/PTR +heaven/SYM +heavenward/S +heaver/M +heaves/M +heavily +heaviness/MS +Heaviside/M +heavyhearted +heavyset +heavy/TPRS +heavyweight/SM +Hebe/M +hebephrenic +Hebert/M +Heb/M +Hebraic +Hebraism/MS +Hebrew/SM +Hebrides/M +Hecate/M +hecatomb/M +heckler/M +heckle/RSDZG +heck/S +hectare/MS +hectically +hectic/S +hectogram/MS +hectometer/SM +Hector/M +hector/SGD +Hecuba/M +he'd +Heda/M +Hedda/M +Heddie/M +Heddi/M +hedge/DSRGMZ +hedgehog/MS +hedgehopped +hedgehopping +hedgehop/S +hedger/M +hedgerow/SM +hedging/Y +Hedi/M +hedonism/SM +hedonistic +hedonist/MS +Hedvige/M +Hedvig/M +Hedwiga/M +Hedwig/M +Hedy/M +heeded/U +heedfulness/M +heedful/PY +heeding/U +heedlessness/SM +heedless/YP +heed/SMGD +heehaw/DGS +heeler/M +heeling/M +heelless +heel/SGZMDR +Heep/M +Hefner/M +heft/GSD +heftily +heftiness/SM +hefty/TRP +Hegelian +Hegel/M +hegemonic +hegemony/MS +Hegira/M +hegira/S +Heida/M +Heidegger/M +Heidelberg/M +Heidie/M +Heidi/M +heifer/MS +Heifetz/M +heighten/GD +height/SMNX +Heimlich/M +Heindrick/M +Heineken/M +Heine/M +Heinlein/M +heinousness/SM +heinous/PY +Heinrich/M +Heinrick/M +Heinrik/M +Heinze/M +Heinz/M +heiress/MS +heirloom/MS +heir/SDMG +Heisenberg/M +Heiser/M +heister/M +heist/GSMRD +Hejira's +Helaina/M +Helaine/M +held +Helena/M +Helene/M +Helenka/M +Helen/M +Helga/M +Helge/M +helical/Y +helices/M +helicon/M +Helicon/M +helicopter/GSMD +heliocentric +heliography/M +Heliopolis/M +Helios/M +heliosphere +heliotrope/SM +heliport/MS +helium/MS +helix/M +he'll +hellbender/M +hellbent +hellcat/SM +hellebore/SM +Hellene/SM +Hellenic +Hellenism/MS +Hellenistic +Hellenist/MS +Hellenization/M +Hellenize +heller/M +Heller/M +Hellespont/M +hellfire/M +hell/GSMDR +hellhole/SM +Helli/M +hellion/SM +hellishness/SM +hellish/PY +Hellman/M +hello/GMS +Hell's +helluva +helmed +helmet/GSMD +Helmholtz/M +helming +helms +helm's +helmsman/M +helmsmen +helm/U +Helmut/M +Héloise/M +helot/S +helper/M +helpfulness/MS +helpful/UY +help/GZSJDR +helping/M +helplessness/SM +helpless/YP +helpline/S +helpmate/SM +helpmeet's +Helsa/M +Helsinki/M +helve/GMDS +Helvetian/S +Helvetius/M +Helyn/M +He/M +hematite/MS +hematologic +hematological +hematologist/SM +hematology/MS +heme/MS +Hemingway/M +hemisphere/MSD +hemispheric +hemispherical +hemline/SM +hemlock/MS +hemmed +hemmer/SM +hemming +hem/MS +hemoglobin/MS +hemolytic +hemophiliac/SM +hemophilia/SM +hemorrhage/GMDS +hemorrhagic +hemorrhoid/MS +hemostat/SM +hemp/MNS +h/EMS +hemstitch/DSMG +henceforth +henceforward +hence/S +Hench/M +henchman/M +henchmen +Henderson/M +Hendrick/SM +Hendrickson/M +Hendrika/M +Hendrik/M +Hendrix/M +henge/M +Henka/M +Henley/M +hen/MS +henna/MDSG +Hennessey/M +henning +henpeck/GSD +Henrie/M +Henrieta/M +Henrietta/M +Henriette/M +Henrik/M +Henri/M +Henryetta/M +henry/M +Henry/M +Hensley/M +Henson/M +heparin/MS +hepatic/S +hepatitides +hepatitis/M +Hepburn/M +Hephaestus/M +Hephzibah/M +hepper +heppest +Hepplewhite +hep/S +heptagonal +heptagon/SM +heptane/M +heptathlon/S +her +Heracles/M +Heraclitus/M +heralded/U +heraldic +herald/MDSG +heraldry/MS +Hera/M +herbaceous +herbage/MS +herbalism +herbalist/MS +herbal/S +Herbart/M +Herbert/M +herbicidal +herbicide/MS +Herbie/M +herbivore/SM +herbivorous/Y +Herb/M +herb/MS +Herby/M +Herc/M +Herculaneum/M +herculean +Herculean +Hercule/MS +Herculie/M +herder/M +Herder/M +herd/MDRGZS +herdsman/M +herdsmen +hereabout/S +hereafter/S +hereby +hereditary +heredity/MS +Hereford/SM +herein +hereinafter +here/IS +hereof +hereon +here's +heres/M +heresy/SM +heretical +heretic/SM +hereto +heretofore +hereunder +hereunto +hereupon +herewith +Heriberto/M +heritable +heritage/MS +heritor/IM +Herkimer/M +Herman/M +Hermann/M +hermaphrodite/SM +hermaphroditic +Hermaphroditus/M +hermeneutic/S +hermeneutics/M +Hermes +hermetical/Y +hermetic/S +Hermia/M +Hermie/M +Hermina/M +Hermine/M +Herminia/M +Hermione/M +hermitage/SM +Hermite/M +hermitian +hermit/MS +Hermon/M +Hermosa/M +Hermosillo/M +Hermy/M +Hernandez/M +Hernando/M +hernial +hernia/MS +herniate/NGXDS +Herod/M +Herodotus/M +heroes +heroically +heroics +heroic/U +heroine/SM +heroin/MS +heroism/SM +Herold/M +hero/M +heron/SM +herpes/M +herpetologist/SM +herpetology/MS +Herrera/M +Herrick/M +herringbone/SDGM +Herring/M +herring/SM +Herrington/M +Herr/MG +Herschel/M +Hersch/M +herself +Hersey/M +Hershel/M +Hershey/M +Hersh/M +Herta/M +Hertha/M +hertz/M +Hertz/M +Hertzog/M +Hertzsprung/M +Herve/M +Hervey/M +Herzegovina/M +Herzl/M +hes +Hesiod/M +hesitance/S +hesitancy/SM +hesitantly +hesitant/U +hesitater/M +hesitate/XDRSNG +hesitating/UY +hesitation/M +Hesperus/M +Hesse/M +Hessian/MS +Hess/M +Hester/M +Hesther/M +Hestia/M +Heston/M +heterodox +heterodoxy/MS +heterodyne +heterogamous +heterogamy/M +heterogeneity/SM +heterogeneousness/M +heterogeneous/PY +heterosexuality/SM +heterosexual/YMS +heterostructure +heterozygous +Hettie/M +Hetti/M +Hetty/M +Heublein/M +heuristically +heuristic/SM +Heusen/M +Heuser/M +he/VMZ +hew/DRZGS +Hewe/M +hewer/M +Hewet/M +Hewett/M +Hewie/M +Hewitt/M +Hewlett/M +Hew/M +hexachloride/M +hexadecimal/YS +hexafluoride/M +hexagonal/Y +hexagon/SM +hexagram/SM +hexameter/SM +hex/DSRG +hexer/M +hey +heyday/MS +Heyerdahl/M +Heywood/M +Hezekiah/M +hf +HF +Hf/M +Hg/M +hgt +hgwy +HHS +HI +Hialeah/M +hiatus/SM +Hiawatha/M +hibachi/MS +hibernate/XGNSD +hibernation/M +hibernator/SM +Hibernia/M +Hibernian/S +hibiscus/MS +hiccup/MDGS +hickey/SM +Hickey/SM +Hickman/M +Hickok/M +hickory/MS +hick/SM +Hicks/M +hi/D +hidden/U +hideaway/SM +hidebound +hideousness/SM +hideous/YP +hideout/MS +hider/M +hide/S +hiding/M +hid/ZDRGJ +hieing +hierarchal +hierarchic +hierarchical/Y +hierarchy/SM +hieratic +hieroglyph +hieroglyphic/S +hieroglyphics/M +hieroglyphs +Hieronymus/M +hie/S +hifalutin +Higashiosaka +Higgins/M +highball/GSDM +highborn +highboy/MS +highbrow/SM +highchair/SM +highfalutin +Highfield/M +highhandedness/SM +highhanded/PY +highish +Highlander/SM +Highlands +highland/ZSRM +highlight/GZRDMS +Highness/M +highness/MS +highpoint +high/PYRT +highroad/MS +highs +hight +hightail/DGS +highwayman/M +highwaymen +highway/MS +hijacker/M +hijack/JZRDGS +hiker/M +hike/ZGDSR +Hilario/M +hilariousness/MS +hilarious/YP +hilarity/MS +Hilarius/M +Hilary/M +Hilbert/M +Hildagarde/M +Hildagard/M +Hilda/M +Hildebrand/M +Hildegaard/M +Hildegarde/M +Hilde/M +Hildy/M +Hillard/M +Hillary/M +hillbilly/MS +Hillcrest/M +Hillel/M +hiller/M +Hillery/M +hill/GSMDR +Hilliard/M +Hilliary/M +Hillie/M +Hillier/M +hilliness/SM +Hill/M +hillman +hillmen +hillock/SM +Hillsboro/M +Hillsdale/M +hillside/SM +hilltop/MS +hillwalking +Hillyer/M +Hilly/RM +hilly/TRP +hilt/MDGS +Hilton/M +Hi/M +Himalaya/MS +Himalayan/S +Himmler/M +him/S +himself +Hinayana/M +Hinda/M +Hindemith/M +Hindenburg/M +hindered/U +hinderer/M +hinder/GRD +Hindi/M +hindmost +hindquarter/SM +hindrance/SM +hind/RSZ +hindsight/SM +Hinduism/SM +Hindu/MS +Hindustani/MS +Hindustan/M +Hines/M +hinger +hinge's +hinge/UDSG +Hinkle/M +Hinsdale/M +hinterland/MS +hinter/M +hint/GZMDRS +Hinton/M +Hinze/M +hipbone/SM +hipness/S +Hipparchus/M +hipped +hipper +hippest +hippie/MTRS +hipping/M +Hippocrates/M +Hippocratic +hippodrome/MS +hippo/MS +hippopotamus/SM +hip/PSM +hippy's +hipster/MS +Hiram/M +hire/AGSD +hireling/SM +hirer/SM +Hirey/M +hiring/S +Hirohito/M +Hiroshi/M +Hiroshima/M +Hirsch/M +hirsuteness/MS +hirsute/P +his +Hispanic/SM +Hispaniola/M +hiss/DSRMJG +hisser/M +hissing/M +Hiss/M +histamine/SM +histochemic +histochemical +histochemistry/M +histogram/MS +histological +histologist/MS +histology/SM +historian/MS +historic +historicalness/M +historical/PY +historicism/M +historicist/M +historicity/MS +historiographer/SM +historiography/MS +history/MS +histrionically +histrionic/S +histrionics/M +hist/SDG +Hitachi/M +Hitchcock/M +hitcher/MS +hitchhike/RSDGZ +hitch/UGSD +hither +hitherto +Hitler/SM +hitless +hit/MS +hittable +hitter/SM +hitting +Hittite/SM +HIV +hive/MGDS +h'm +HM +HMO +Hmong +HMS +hoarder/M +hoarding/M +hoard/RDJZSGM +hoarfrost/SM +hoariness/MS +hoar/M +hoarseness/SM +hoarse/RTYP +hoary/TPR +hoaxer/M +hoax/GZMDSR +Hobard/M +Hobart/M +hobbed +Hobbes/M +hobbing +hobbit +hobbler/M +hobble/ZSRDG +Hobbs/M +hobbyhorse/SM +hobbyist/SM +hobby/SM +Hobday/M +Hobey/M +hobgoblin/MS +Hobie/M +hobnail/GDMS +hobnobbed +hobnobbing +hobnob/S +Hoboken/M +hobo/SDMG +hob/SM +hoc +hocker/M +hockey/SM +hock/GDRMS +Hockney/M +hockshop/SM +hodge/MS +Hodge/MS +hodgepodge/SM +Hodgkin/M +ho/DRYZ +hod/SM +Hoebart/M +hoecake/SM +hoedown/MS +hoeing +hoer/M +hoe/SM +Hoffa/M +Hoff/M +Hoffman/M +Hofstadter/M +Hogan/M +hogan/SM +Hogarth/M +hogback/MS +hogged +hogger +hogging +hoggish/Y +hogshead/SM +hog/SM +hogtie/SD +hogtying +hogwash/SM +Hohenlohe/M +Hohenstaufen/M +Hohenzollern/M +Hohhot/M +hoister/M +hoist/GRDS +hoke/DSG +hokey/PRT +hokier +hokiest +Hokkaido/M +hokum/MS +Hokusai/M +Holbein/M +Holbrook/M +Holcomb/M +holdall/MS +Holden/M +holder/M +Holder/M +holding/IS +holding's +hold/NRBSJGZ +holdout/SM +holdover/SM +holdup/MS +hole/MGDS +holey +holiday/GRDMS +Holiday/M +holidaymaker/S +holier/U +Holiness/MS +holiness/MSU +holistic +holistically +hollandaise +Hollandaise/M +Hollander/M +Holland/RMSZ +holler/GDS +Hollerith/M +Holley/M +Hollie/M +Holli/SM +Hollister/M +Holloway/M +hollowness/MS +hollow/RDYTGSP +hollowware/M +Hollyanne/M +hollyhock/MS +Holly/M +holly/SM +Hollywood/M +Holman/M +Holmes +holmium/MS +Holm/M +Holocaust +holocaust/MS +Holocene +hologram/SM +holograph/GMD +holographic +holographs +holography/MS +Holstein/MS +holster/MDSG +Holst/M +Holt/M +Holyoke/M +holy/SRTP +holystone/MS +Holzman/M +Ho/M +homage/MGSRD +homager/M +hombre/SM +homburg/SM +homebody/MS +homebound +homeboy/S +homebuilder/S +homebuilding +homebuilt +homecoming/MS +home/DSRMYZG +homegrown +homeland/SM +homelessness/SM +homeless/P +homelike +homeliness/SM +homely/RPT +homemade +homemake/JRZG +homemaker/M +homemaking/M +homeomorphic +homeomorphism/MS +homeomorph/M +homeopath +homeopathic +homeopaths +homeopathy/MS +homeostases +homeostasis/M +homeostatic +homeowner/S +homeownership +homepage +Homere/M +homer/GDM +Homeric +homerists +Homer/M +homeroom/MS +Homerus/M +homeschooling/S +homesickness/MS +homesick/P +homespun/S +homesteader/M +homestead/GZSRDM +homestretch/SM +hometown/SM +homeward +homeworker/M +homework/ZSMR +homeyness/MS +homey/PS +homicidal/Y +homicide/SM +homier +homiest +homiletic/S +homily/SM +hominess's +homing/M +hominid/MS +hominy/SM +Hom/MR +homogamy/M +homogenate/MS +homogeneity/ISM +homogeneous/PY +homogenization/MS +homogenize/DRSGZ +homogenizer/M +homograph/M +homographs +homological +homologous +homologue/M +homology/MS +homomorphic +homomorphism/SM +homonym/SM +homophobia/S +homophobic +homophone/MS +homopolymers +homosexuality/SM +homosexual/YMS +homo/SM +homotopy +homozygous/Y +honcho/DSG +Honda/M +Hondo/M +Honduran/S +Honduras/M +Honecker/M +hone/SM +honestly/E +honest/RYT +honesty/ESM +honeybee/SM +honeycomb/SDMG +honeydew/SM +honey/GSMD +honeylocust +Honey/M +honeymooner/M +honeymoon/RDMGZS +honeysuckle/MS +Honeywell/M +hong/M +Honiara/M +honker/M +honk/GZSDRM +honky/SM +Hon/M +hon/MDRSZTG +Honolulu/M +honorableness/SM +honorable/PSM +honorables/U +honorablies/U +honorably/UE +honorarily +honorarium/SM +honorary/S +honored/U +honoree/S +honor/ERDBZGS +honorer/EM +Honoria/M +honorific/S +Honor/M +honor's +honors/A +Honshu/M +hooch/MS +hoodedness/M +hooded/P +hoodlum/SM +Hood/M +hood/MDSG +hoodoo/DMGS +hoodwinker/M +hoodwink/SRDG +hooey/SM +hoof/DRMSG +hoofer/M +hoofmark/S +hookah/M +hookahs +hookedness/M +hooked/P +Hooke/MR +hooker/M +Hooker/M +hookey's +hook/GZDRMS +hooks/U +hookup/SM +hookworm/MS +hooky/SRMT +hooliganism/SM +hooligan/SM +hooper/M +Hooper/M +hoopla/SM +hoop/MDRSG +hooray/SMDG +hoosegow/MS +Hoosier/SM +hootch's +hootenanny/SM +hooter/M +hoot/MDRSGZ +Hoover/MS +hooves/M +hoped/U +hopefulness/MS +hopeful/SPY +hopelessness/SM +hopeless/YP +Hope/M +hoper/M +hope/SM +Hopewell/M +Hopi/SM +Hopkinsian/M +Hopkins/M +hopped +Hopper/M +hopper/MS +hopping/M +hoppled +hopples +hopscotch/MDSG +hop/SMDRG +Horace/M +Horacio/M +Horatia/M +Horatio/M +Horatius/M +horde/DSGM +horehound/MS +horizon/MS +horizontal/YS +Hormel/M +hormonal/Y +hormone/MS +Hormuz/M +hornbeam/M +hornblende/MS +Hornblower/M +hornedness/M +horned/P +Horne/M +hornet/MS +horn/GDRMS +horniness/M +hornless +hornlike +Horn/M +hornpipe/MS +horny/TRP +horologic +horological +horologist/MS +horology/MS +horoscope/MS +Horowitz/M +horrendous/Y +horribleness/SM +horrible/SP +horribly +horridness/M +horrid/PY +horrific +horrifically +horrify/DSG +horrifying/Y +horror/MS +hors/DSGX +horseback/MS +horsedom +horseflesh/M +horsefly/MS +horsehair/SM +horsehide/SM +horselaugh/M +horselaughs +horseless +horselike +horsely +horseman/M +horsemanship/MS +horsemen +horseplayer/M +horseplay/SMR +horsepower/SM +horseradish/SM +horse's +horseshoeing +horseshoe/MRSD +horseshoer/M +horsetail/SM +horse/UGDS +horsewhipped +horsewhipping +horsewhip/SM +horsewoman/M +horsewomen +horsey +horsier +horsiest +horsing/M +Horst/M +hortatory +Horten/M +Hortense/M +Hortensia/M +horticultural +horticulture/SM +horticulturist/SM +Hort/MN +Horton/M +Horus/M +hosanna/SDG +Hosea/M +hose/M +hosepipe +hos/GDS +hosier/MS +hosiery/SM +hosp +hospice/MS +hospitable/I +hospitably/I +hospitality/MS +hospitality's/I +hospitalization/MS +hospitalize/GSD +hospital/MS +hostage/MS +hosteler/M +hostelry/MS +hostel/SZGMRD +hostess/MDSG +hostile/YS +hostility/SM +hostler/MS +Host/MS +host/MYDGS +hotbed/MS +hotblooded +hotbox/MS +hotcake/S +hotchpotch/M +hotelier/MS +hotelman/M +hotel/MS +hotfoot/DGS +hothead/DMS +hotheadedness/SM +hotheaded/PY +hothouse/MGDS +hotness/MS +hotplate/SM +hotpot/M +hot/PSY +hotrod +hotshot/S +hotted +Hottentot/SM +hotter +hottest +hotting +Houdaille/M +Houdini/M +hough/M +hounder/M +hounding/M +hound/MRDSG +hourglass/MS +houri/MS +hourly/S +hour/YMS +house/ASDG +houseboat/SM +housebound +houseboy/SM +housebreaker/M +housebreaking/M +housebreak/JSRZG +housebroke +housebroken +housebuilding +housecleaning/M +houseclean/JDSG +housecoat/MS +housefly/MS +houseful/SM +householder/M +household/ZRMS +househusband/S +housekeeper/M +housekeeping/M +housekeep/JRGZ +houselights +House/M +housemaid/MS +houseman/M +housemen +housemother/MS +housemoving +houseparent/SM +houseplant/S +houser +house's +housetop/MS +housewares +housewarming/MS +housewifeliness/M +housewifely/P +housewife/YM +housewives +houseworker/M +housework/ZSMR +housing/MS +Housman/M +Houston/M +Houyhnhnm/M +HOV +hovel/GSMD +hovercraft/M +hoverer/M +hover/GRD +hove/ZR +Howard/M +howbeit +howdah/M +howdahs +howdy/GSD +Howell/MS +Howe/M +however +Howey/M +Howie/M +howitzer/MS +howler/M +howl/GZSMDR +Howrah/M +how/SM +howsoever +hoyden/DMGS +hoydenish +Hoyle/SM +hoy/M +Hoyt/M +hp +HP +HQ +hr +HR +HRH +Hrothgar/M +hrs +h's +H's +HS +HST +ht +HTML +Hts/M +HTTP +Huang/M +huarache/SM +hubba +Hubbard/M +Hubble/M +hubbub/SM +hubby/SM +hubcap/SM +Huber/M +Hube/RM +Hubert/M +Huberto/M +Hubey/M +Hubie/M +hub/MS +hubris/SM +huckleberry/SM +Huck/M +huckster/SGMD +HUD +Huddersfield/M +huddler/M +huddle/RSDMG +Hudson/M +hue/MDS +Huerta/M +Huey/M +huffily +huffiness/SM +Huff/M +Huffman/M +huff/SGDM +huffy/TRP +hugeness/MS +huge/YP +hugged +hugger +hugging/S +Huggins +Hughie/M +Hugh/MS +Hugibert/M +Hugo/M +hug/RTS +Huguenot/SM +Hugues/M +huh +huhs +Hui/M +Huitzilopitchli/M +hula/MDSG +Hulda/M +hulk/GDMS +hullabaloo/SM +huller/M +hulling/M +Hull/M +hull/MDRGZS +hullo/GSDM +humane/IY +humaneness/SM +humaner +humanest +human/IPY +humanism/SM +humanistic +humanist/SM +humanitarianism/SM +humanitarian/S +humanity/ISM +humanization/CSM +humanized/C +humanizer/M +humanize/RSDZG +humanizes/IAC +humanizing/C +humankind/M +humannesses +humanness/IM +humanoid/S +humans +Humbert/M +Humberto/M +humbleness/SM +humble/TZGPRSDJ +humbly +Humboldt/M +humbugged +humbugging +humbug/MS +humdinger/MS +humdrum/S +Hume/M +humeral/S +humeri +humerus/M +Humfrey/M +Humfrid/M +Humfried/M +humidification/MC +humidifier/CM +humidify/RSDCXGNZ +humidistat/M +humidity/MS +humidor/MS +humid/Y +humiliate/SDXNG +humiliating/Y +humiliation/M +humility/MS +hummed +Hummel/M +hummer/SM +humming +hummingbird/SM +hummock/MDSG +hummocky +hummus/S +humongous +humored/U +humorist/MS +humorlessness/MS +humorless/PY +humorousness/MS +humorous/YP +humor/RDMZGS +humpback/SMD +hump/GSMD +humph/DG +Humphrey/SM +humphs +Humpty/M +hum/S +humus/SM +Humvee +hunchback/DSM +hunch/GMSD +hundredfold/S +hundred/SHRM +hundredths +hundredweight/SM +Hunfredo/M +hung/A +Hungarian/MS +Hungary/M +hunger/SDMG +Hung/M +hungover +hungrily +hungriness/SM +hungry/RTP +hunker/DG +hunky/RST +hunk/ZRMS +Hun/MS +hunter/M +Hunter/M +hunt/GZJDRS +hunting/M +Huntington/M +Huntlee/M +Huntley/M +Hunt/MR +huntress/MS +huntsman/M +huntsmen +Huntsville/M +hurdle/JMZGRSD +hurdler/M +hurl/DRGZJS +Hurlee/M +Hurleigh/M +hurler/M +Hurley/M +hurling/M +Huron/SM +hurray/SDG +hurricane/MS +hurriedness/M +hurried/UY +hurry/RSDG +Hurst/M +hurter/M +hurtfulness/MS +hurtful/PY +hurting/Y +hurtle/SDG +hurts +hurt/U +Hurwitz/M +Hus +Husain's +husbander/M +husband/GSDRYM +husbandman/M +husbandmen +husbandry/SM +Husein/M +hush/DSG +husker/M +huskily +huskiness/MS +husking/M +husk/SGZDRM +husky/RSPT +hussar/MS +Hussein/M +Husserl/M +hussy/SM +hustings/M +hustler/M +hustle/RSDZG +Huston/M +Hutchins/M +Hutchinson/M +Hutchison/M +hutch/MSDG +hut/MS +hutted +hutting +Hutton/M +Hutu/M +Huxley/M +Huygens/M +huzzah/GD +huzzahs +hwy +Hyacintha/M +Hyacinthe/M +Hyacinthia/M +Hyacinthie/M +hyacinth/M +Hyacinth/M +hyacinths +Hyades +hyaena's +Hyannis/M +Hyatt/M +hybridism/SM +hybridization/S +hybridize/GSD +hybrid/MS +Hyde/M +Hyderabad/M +Hydra/M +hydra/MS +hydrangea/SM +hydrant/SM +hydrate/CSDNGX +hydrate's +hydration/MC +hydraulically +hydraulicked +hydraulicking +hydraulic/S +hydraulics/M +hydrazine/M +hydride/MS +hydrocarbon/SM +hydrocephali +hydrocephalus/MS +hydrochemistry +hydrochloric +hydrochloride/M +hydrodynamical +hydrodynamic/S +hydrodynamics/M +hydroelectric +hydroelectrically +hydroelectricity/SM +hydrofluoric +hydrofoil/MS +hydrogenate/CDSGN +hydrogenate's +hydrogenation/MC +hydrogenations +hydrogen/MS +hydrogenous +hydrological/Y +hydrologist/MS +hydrology/SM +hydrolysis/M +hydrolyzed/U +hydrolyze/GSD +hydromagnetic +hydromechanics/M +hydrometer/SM +hydrometry/MS +hydrophilic +hydrophobia/SM +hydrophobic +hydrophone/SM +hydroplane/DSGM +hydroponic/S +hydroponics/M +hydro/SM +hydrosphere/MS +hydrostatic/S +hydrostatics/M +hydrotherapy/SM +hydrothermal/Y +hydrous +hydroxide/MS +hydroxy +hydroxylate/N +hydroxyl/SM +hydroxyzine/M +hyena/MS +hygiene/MS +hygienically +hygienic/S +hygienics/M +hygienist/MS +hygrometer/SM +hygroscopic +hying +Hy/M +Hyman/M +hymeneal/S +Hymen/M +hymen/MS +Hymie/M +hymnal/SM +hymnbook/S +hymn/GSDM +Hynda/M +hype/MZGDSR +hyperactive/S +hyperactivity/SM +hyperbola/MS +hyperbole/MS +hyperbolic +hyperbolically +hyperboloidal +hyperboloid/SM +hypercellularity +hypercritical/Y +hypercube/MS +hyperemia/M +hyperemic +hyperfine +hypergamous/Y +hypergamy/M +hyperglycemia/MS +hyperinflation +Hyperion/M +hypermarket/SM +hypermedia/S +hyperplane/SM +hyperplasia/M +hypersensitiveness/MS +hypersensitive/P +hypersensitivity/MS +hypersonic +hyperspace/M +hypersphere/M +hypertension/MS +hypertensive/S +hypertext/SM +hyperthyroid +hyperthyroidism/MS +hypertrophy/MSDG +hypervelocity +hyperventilate/XSDGN +hyperventilation/M +hyphenated/U +hyphenate/NGXSD +hyphenation/M +hyphen/DMGS +hypnoses +hypnosis/M +hypnotherapy/SM +hypnotically +hypnotic/S +hypnotism/MS +hypnotist/SM +hypnotize/SDG +hypoactive +hypoallergenic +hypocellularity +hypochondriac/SM +hypochondria/MS +hypocrisy/SM +hypocrite/MS +hypocritical/Y +hypodermic/S +hypo/DMSG +hypoglycemia/SM +hypoglycemic/S +hypophyseal +hypophysectomized +hypotenuse/MS +hypothalami +hypothalamic +hypothalamically +hypothalamus/M +hypothermia/SM +hypotheses +hypothesis/M +hypothesizer/M +hypothesize/ZGRSD +hypothetic +hypothetical/Y +hypothyroid +hypothyroidism/SM +hypoxia/M +hyssop/MS +hysterectomy/MS +hysteresis/M +hysteria/SM +hysterical/YU +hysteric/SM +Hyundai/M +Hz +i +I +IA +Iaccoca/M +Iago/M +Iain/M +Ia/M +iambi +iambic/S +iamb/MS +iambus/SM +Ian/M +Ianthe/M +Ibadan/M +Ibbie/M +Ibby/M +Iberia/M +Iberian/MS +Ibero/M +ibex/MS +ibid +ibidem +ibis/SM +IBM/M +Ibo/M +Ibrahim/M +Ibsen/M +ibuprofen/S +Icarus/M +ICBM/S +ICC +iceberg/SM +iceboat/MS +icebound +icebox/MS +icebreaker/SM +icecap/SM +ice/GDSC +Icelander/M +Icelandic +Iceland/MRZ +Ice/M +iceman/M +icemen +icepack +icepick/S +ice's +Ichabod/M +ichneumon/M +ichthyologist/MS +ichthyology/MS +icicle/SM +icily +iciness/SM +icing/MS +icky/RT +iconic +icon/MS +iconoclasm/MS +iconoclastic +iconoclast/MS +iconography/MS +icosahedra +icosahedral +icosahedron/M +ictus/SM +ICU +icy/RPT +I'd +ID +Idahoan/S +Idahoes +Idaho/MS +Idalia/M +Idalina/M +Idaline/M +Ida/M +idealism/MS +idealistic +idealistically +idealist/MS +idealization/MS +idealized/U +idealize/GDRSZ +idealizer/M +ideal/MYS +idealogical +idea/SM +ideate/SN +ideation/M +Idelle/M +Idell/M +idem +idempotent/S +identicalness/M +identical/YP +identifiability +identifiable/U +identifiably +identification/M +identified/U +identifier/M +identify/XZNSRDG +identity/SM +ideogram/MS +ideographic +ideograph/M +ideographs +ideological/Y +ideologist/SM +ideologue/S +ideology/SM +ides +Idette/M +idiocy/MS +idiolect/M +idiomatically +idiomatic/P +idiom/MS +idiopathic +idiosyncrasy/SM +idiosyncratic +idiosyncratically +idiotic +idiotically +idiot/MS +idleness/MS +idle/PZTGDSR +idler/M +id/MY +idolater/MS +idolatress/S +idolatrous +idolatry/SM +idolization/SM +idolized/U +idolizer/M +idolize/ZGDRS +idol/MS +ids +IDs +idyllic +idyllically +idyll/MS +IE +IEEE +Ieyasu/M +if +iffiness/S +iffy/TPR +Ifni/M +ifs +Iggie/M +Iggy/M +igloo/MS +Ignace/M +Ignacio/M +Ignacius/M +Ignatius/M +Ignazio/M +Ignaz/M +igneous +ignitable +ignite/ASDG +igniter/M +ignition/MS +ignobleness/M +ignoble/P +ignobly +ignominious/Y +ignominy/MS +ignoramus/SM +ignorance/MS +ignorantness/M +ignorant/SPY +ignorer/M +ignore/SRDGB +Igor/M +iguana/MS +Iguassu/M +ii +iii +Ijsselmeer/M +Ike/M +Ikey/M +Ikhnaton/M +ikon's +IL +Ilaire/M +Ila/M +Ilario/M +ilea +Ileana/M +Ileane/M +ileitides +ileitis/M +Ilene/M +ileum/M +ilia +iliac +Iliad/MS +Ilise/M +ilium/M +Ilka/M +ilk/MS +I'll +Illa/M +illegality/MS +illegal/YS +illegibility/MS +illegible +illegibly +illegitimacy/SM +illegitimate/SDGY +illiberality/SM +illiberal/Y +illicitness/MS +illicit/YP +illimitableness/M +illimitable/P +Illinoisan/MS +Illinois/M +illiquid +illiteracy/MS +illiterateness/M +illiterate/PSY +Ill/M +illness/MS +illogicality/SM +illogicalness/M +illogical/PY +illogic/M +ill/PS +illume/DG +illuminate/XSDVNG +Illuminati +illuminatingly +illuminating/U +illumination/M +illumine/BGSD +illusionary +illusion/ES +illusionist/MS +illusion's +illusiveness/M +illusive/PY +illusoriness/M +illusory/P +illustrated/U +illustrate/VGNSDX +illustration/M +illustrative/Y +illustrator/SM +illustriousness/SM +illustrious/PY +illus/V +illy +Ilona/M +Ilsa/M +Ilse/M +Ilysa/M +Ilyse/M +Ilyssa/M +Ilyushin/M +I'm +image/DSGM +Imagen/M +imagery/MS +imaginableness +imaginable/U +imaginably/U +imaginariness/M +imaginary/PS +imagination/MS +imaginativeness/M +imaginative/UY +imagined/U +imaginer/M +imagine/RSDJBG +imagoes +imago/M +imam/MS +imbalance/SDM +imbecile/YMS +imbecilic +imbecility/MS +imbiber/M +imbibe/ZRSDG +imbrication/SM +Imbrium/M +imbroglio/MS +imbruing +imbue/GDS +Imelda/M +IMF +IMHO +imitable/I +imitate/SDVNGX +imitation/M +imitativeness/MS +imitative/YP +imitator/SM +immaculateness/SM +immaculate/YP +immanence/S +immanency/MS +immanent/Y +Immanuel/M +immateriality/MS +immaterialness/MS +immaterial/PY +immatureness/M +immature/SPY +immaturity/MS +immeasurableness/M +immeasurable/P +immeasurably +immediacy/MS +immediateness/SM +immediate/YP +immemorial/Y +immenseness/M +immense/PRTY +immensity/MS +immerse/RSDXNG +immersible +immersion/M +immigrant/SM +immigrate/NGSDX +immigration/M +imminence/SM +imminentness/M +imminent/YP +immobile +immobility/MS +immobilization/MS +immobilize/DSRG +immoderateness/M +immoderate/NYP +immoderation/M +immodest/Y +immodesty/SM +immolate/SDNGX +immolation/M +immorality/MS +immoral/Y +immortality/SM +immortalized/U +immortalize/GDS +immortal/SY +immovability/SM +immovableness/M +immovable/PS +immovably +immune/S +immunity/SM +immunization/MS +immunize/GSD +immunoassay/M +immunodeficiency/S +immunodeficient +immunologic +immunological/Y +immunologist/SM +immunology/MS +immure/GSD +immutability/MS +immutableness/M +immutable/P +immutably +IMNSHO +IMO +Imogene/M +Imogen/M +Imojean/M +impaction/SM +impactor/SM +impact/VGMRDS +impaired/U +impairer/M +impair/LGRDS +impairment/SM +impala/MS +impale/GLRSD +impalement/SM +impaler/M +impalpable +impalpably +impanel/DGS +impartation/M +impart/GDS +impartiality/SM +impartial/Y +impassableness/M +impassable/P +impassably +impasse/SXBMVN +impassibility/SM +impassible +impassibly +impassion/DG +impassioned/U +impassiveness/MS +impassive/YP +impassivity/MS +impasto/SM +impatience/SM +impatiens/M +impatient/Y +impeachable/U +impeach/DRSZGLB +impeacher/M +impeachment/MS +impeccability/SM +impeccable/S +impeccably +impecuniousness/MS +impecunious/PY +impedance/MS +impeded/U +impeder/M +impede/S +imped/GRD +impedimenta +impediment/SM +impelled +impeller/MS +impelling +impel/S +impend/DGS +impenetrability/MS +impenetrableness/M +impenetrable/P +impenetrably +impenitence/MS +impenitent/YS +imperativeness/M +imperative/PSY +imperceivable +imperceptibility/MS +imperceptible +imperceptibly +imperceptive +imperf +imperfectability +imperfection/MS +imperfectness/SM +imperfect/YSVP +imperialism/MS +imperialistic +imperialistically +imperialist/SM +imperial/YS +imperil/GSLD +imperilment/SM +imperiousness/MS +imperious/YP +imperishableness/M +imperishable/SP +imperishably +impermanence/MS +impermanent/Y +impermeability/SM +impermeableness/M +impermeable/P +impermeably +impermissible +impersonality/M +impersonalized +impersonal/Y +impersonate/XGNDS +impersonation/M +impersonator/SM +impertinence/SM +impertinent/YS +imperturbability/SM +imperturbable +imperturbably +imperviousness/M +impervious/PY +impetigo/MS +impetuosity/MS +impetuousness/MS +impetuous/YP +impetus/MS +impiety/MS +impinge/LS +impingement/MS +imping/GD +impiousness/SM +impious/PY +impishness/MS +impish/YP +implacability/SM +implacableness/M +implacable/P +implacably +implantation/SM +implant/BGSDR +implanter/M +implausibility/MS +implausible +implausibly +implementability +implementable/U +implementation/A +implementations +implementation's +implemented/AU +implementer/M +implementing/A +implementor/MS +implement/SMRDGZB +implicant/SM +implicate/VGSD +implication/M +implicative/PY +implicitness/SM +implicit/YP +implied/Y +implode/GSD +implore/GSD +imploring/Y +implosion/SM +implosive/S +imply/GNSDX +impoliteness/MS +impolite/YP +impoliticness/M +impolitic/PY +imponderableness/M +imponderable/PS +importance/SM +important/Y +importation/MS +importer/M +importing/A +import/SZGBRD +importunateness/M +importunate/PYGDS +importuner/M +importune/SRDZYG +importunity/SM +imposable +impose/ASDG +imposer/SM +imposingly +imposing/U +imposition/SM +impossibility/SM +impossibleness/M +impossible/PS +impossibly +imposter's +impostor/SM +impost/SGMD +imposture/SM +impotence/MS +impotency/S +impotent/SY +impound/GDS +impoundments +impoverisher/M +impoverish/LGDRS +impoverishment/SM +impracticableness/M +impracticable/P +impracticably +impracticality/SM +impracticalness/M +impractical/PY +imprecate/NGXSD +imprecation/M +impreciseness/MS +imprecise/PYXN +imprecision/M +impregnability/MS +impregnableness/M +impregnable/P +impregnably +impregnate/DSXNG +impregnation/M +impresario/SM +impress/DRSGVL +impressed/U +impresser/M +impressibility/MS +impressible +impressionability/SM +impressionableness/M +impressionable/P +impression/BMS +impressionism/SM +impressionistic +impressionist/MS +impressiveness/MS +impressive/YP +impressment/M +imprimatur/SM +imprinter/M +imprinting/M +imprint/SZDRGM +imprison/GLDS +imprisonment/MS +improbability/MS +improbableness/M +improbable/P +improbably +impromptu/S +improperness/M +improper/PY +impropitious +impropriety/SM +improved/U +improvement/MS +improver/M +improve/SRDGBL +improvidence/SM +improvident/Y +improvisational +improvisation/MS +improvisatory +improviser/M +improvise/RSDZG +imprudence/SM +imprudent/Y +imp/SGMDRY +impudence/MS +impudent/Y +impugner/M +impugn/SRDZGB +impulse/XMVGNSD +impulsion/M +impulsiveness/MS +impulsive/YP +impunity/SM +impureness/M +impure/RPTY +impurity/MS +imputation/SM +impute/SDBG +Imus/M +IN +inaction +inactive +inadequate/S +inadvertence/MS +inadvertent/Y +inalienability/MS +inalienably +inalterableness/M +inalterable/P +Ina/M +inamorata/MS +inane/SRPYT +inanimateness/S +inanimate/P +inanity/MS +inappeasable +inappropriate/P +inarticulate/P +in/AS +inasmuch +inaugural/S +inaugurate/XSDNG +inauguration/M +inauthenticity +inbound/G +inbred/S +inbreed/JG +incalculableness/M +incalculably +incandescence/SM +incandescent/YS +incant +incantation/SM +incantatory +incapable/S +incapacitate/GNSD +incapacitation/M +incarcerate/XGNDS +incarceration/M +incarnadine/GDS +incarnate/AGSDNX +incarnation/AM +Inca/SM +incendiary/S +incense/MGDS +incentive/ESM +incentively +incept/DGVS +inception/MS +inceptive/Y +inceptor/M +incessant/Y +incest/SM +incestuousness/MS +incestuous/PY +inch/GMDS +inchoate/DSG +Inchon/M +inchworm/MS +incidence/MS +incidental/YS +incident/SM +incinerate/XNGSD +incineration/M +incinerator/SM +incipience/SM +incipiency/M +incipient/Y +incise/SDVGNX +incision/M +incisiveness/MS +incisive/YP +incisor/MS +incitement/MS +inciter/M +incite/RZL +incl +inclination/ESM +incline/EGSD +incliner/M +inclining/M +include/GDS +inclusion/MS +inclusiveness/MS +inclusive/PY +Inc/M +incognito/S +incoherency/M +income/M +incommode/DG +incommunicado +incomparable +incompetent/MS +incomplete/P +inconceivability/MS +inconceivableness/M +inconceivable/P +incondensable +incongruousness/S +inconsiderableness/M +inconsiderable/P +inconsistence +inconsolableness/M +inconsolable/P +inconsolably +incontestability/SM +incontestably +incontrovertibly +inconvenience/DG +inconvertibility +inconvertible +incorporable +incorporated/UE +incorporate/GASDXN +incorrect/P +incorrigibility/MS +incorrigibleness/M +incorrigible/SP +incorrigibly +incorruptible/S +incorruptibly +increase/JB +increaser/M +increasing/Y +incredibleness/M +incredible/P +incremental/Y +incrementation +increment/DMGS +incriminate/XNGSD +incrimination/M +incriminatory +incrustation/SM +inc/T +incubate/XNGVDS +incubation/M +incubator/MS +incubus/MS +inculcate/SDGNX +inculcation/M +inculpate/SDG +incumbency/MS +incumbent/S +incunabula +incunabulum +incurable/S +incurious +incursion/SM +ind +indebtedness/SM +indebted/P +indefatigableness/M +indefatigable/P +indefatigably +indefeasible +indefeasibly +indefinableness/M +indefinable/PS +indefinite/S +indelible +indelibly +indemnification/M +indemnify/NXSDG +indemnity/SM +indentation/SM +indented/U +indenter/M +indention/SM +indent/R +indenture/DG +Independence/M +indescribableness/M +indescribable/PS +indescribably +indestructibleness/M +indestructible/P +indestructibly +indeterminably +indeterminacy/MS +indeterminism +indexation/S +indexer/M +index/MRDZGB +India/M +Indiana/M +Indianan/S +Indianapolis/M +Indianian/S +Indian/SM +indicant/MS +indicate/DSNGVX +indication/M +indicative/SY +indicator/MS +indices's +indicter/M +indictment/SM +indict/SGLBDR +indifference +indigence/MS +indigenousness/M +indigenous/YP +indigent/SY +indigestible/S +indignant/Y +indignation/MS +indigo/SM +Indira/M +indirect/PG +indiscreet/P +indiscriminateness/M +indiscriminate/PY +indispensability/MS +indispensableness/M +indispensable/SP +indispensably +indisputableness/M +indisputable/P +indissolubleness/M +indissoluble/P +indissolubly +indistinguishableness/M +indistinguishable/P +indite/SDG +indium/SM +individualism/MS +individualistic +individualistically +individualist/MS +individuality/MS +individualization/SM +individualize/DRSGZ +individualized/U +individualizer/M +individualizes/U +individualizing/Y +individual/YMS +individuate/DSXGN +individuation/M +indivisibleness/M +indivisible/SP +indivisibly +Ind/M +Indochina/M +Indochinese +indoctrinate/GNXSD +indoctrination/M +indoctrinator/SM +indolence/SM +indolent/Y +indomitableness/M +indomitable/P +indomitably +Indonesia/M +Indonesian/S +indoor +Indore/M +Indra/M +indubitableness/M +indubitable/P +indubitably +inducement/MS +inducer/M +induce/ZGLSRD +inducible +inductance/MS +inductee/SM +induct/GV +induction/SM +inductiveness/M +inductive/PY +inductor/MS +indulge/GDRS +indulgence/SDGM +indulgent/Y +indulger/M +Indus/M +industrialism/MS +industrialist/MS +industrialization/MS +industrialized/U +industrialize/SDG +industrial/SY +industriousness/SM +industrious/YP +industry/SM +Indy/SM +inebriate/NGSDX +inebriation/M +inedible +ineducable +ineffability/MS +ineffableness/M +ineffable/P +ineffably +inelastic +ineligibly +ineluctable +ineluctably +ineptitude/SM +ineptness/MS +inept/YP +inequivalent +inerrant +inertial/Y +inertia/SM +inertness/MS +inert/SPY +Ines +inescapably +Inesita/M +Inessa/M +inestimably +inevitability/MS +inevitableness/M +inevitable/P +inevitably +inexact/P +inexhaustibleness/M +inexhaustible/P +inexhaustibly +inexorability/M +inexorableness/M +inexorable/P +inexorably +inexpedience/M +inexplicableness/M +inexplicable/P +inexplicably +inexplicit +inexpressibility/M +inexpressibleness/M +inexpressible/PS +inextricably +Inez/M +infamous +infamy/SM +infancy/M +infanticide/MS +infantile +infant/MS +infantryman/M +infantrymen +infantry/SM +infarction/SM +infarct/SM +infatuate/XNGSD +infatuation/M +infauna +infected/U +infecter +infect/ESGDA +infection/EASM +infectiousness/MS +infectious/PY +infective +infer/B +inference/GMSR +inferential/Y +inferiority/MS +inferior/SMY +infernal/Y +inferno/MS +inferred +inferring +infertile +infestation/MS +infester/M +infest/GSDR +infidel/SM +infighting/M +infill/MG +infiltrate/V +infiltrator/MS +infinitesimal/SY +infinite/V +infinitival +infinitive/YMS +infinitude/MS +infinitum +infinity/SM +infirmary/SM +infirmity/SM +infix/M +inflammableness/M +inflammable/P +inflammation/MS +inflammatory +inflatable/MS +inflate/NGBDRSX +inflater/M +inflationary +inflation/ESM +inflect/GVDS +inflectional/Y +inflection/SM +inflexibleness/M +inflexible/P +inflexion/SM +inflict/DRSGV +inflicter/M +infliction/SM +inflow/M +influenced/U +influencer/M +influence/SRDGM +influent +influential/SY +influenza/MS +infomercial/S +Informatica/M +informatics +informational +information/ES +informativeness/S +informative/UY +informatory +informed/U +informer/M +info/SM +infotainment/S +infra +infrared/SM +infrasonic +infrastructural +infrastructure/MS +infrequence/S +infringe/LR +infringement/SM +infringer/M +infuriate/GNYSD +infuriating/Y +infuriation/M +infuser/M +infuse/RZ +infusibleness/M +infusible/P +inf/ZT +Ingaberg/M +Ingaborg/M +Inga/M +Ingamar/M +Ingar/M +Ingeberg/M +Ingeborg/M +Ingelbert/M +Ingemar/M +ingeniousness/MS +ingenious/YP +ingénue/S +ingenuity/SM +ingenuous/EY +ingenuousness/MS +Inger/M +Inge/RM +Ingersoll/M +ingest/DGVS +ingestible +ingestion/SM +Inglebert/M +inglenook/MS +Inglewood/M +Inglis/M +Ingmar/M +ingoing +ingot/SMDG +ingrained/Y +Ingra/M +Ingram/M +ingrate/M +ingratiate/DSGNX +ingratiating/Y +ingratiation/M +ingredient/SM +Ingres/M +ingression/M +ingress/MS +Ingrid/M +Ingrim/M +ingrown/P +inguinal +Ingunna/M +inhabitable/U +inhabitance +inhabited/U +inhabiter/M +inhabit/R +inhalant/S +inhalation/SM +inhalator/SM +inhale/Z +inhere/DG +inherent/Y +inheritableness/M +inheritable/P +inheritance/EMS +inherit/BDSG +inherited/E +inheriting/E +inheritor/S +inheritress/MS +inheritrix/MS +inherits/E +inhibit/DVGS +inhibited/U +inhibiter's +inhibition/MS +inhibitor/MS +inhibitory +inhomogeneous +inhospitableness/M +inhospitable/P +inhospitality +Inigo/M +inimical/Y +inimitableness/M +inimitable/P +inimitably +inion +iniquitousness/M +iniquitous/PY +iniquity/MS +initialer/M +initial/GSPRDY +initialization/A +initializations +initialization's +initialize/ASDG +initialized/U +initializer/S +initiates +initiate/UD +initiating +initiation/SM +initiative/SM +initiator/MS +initiatory +injectable/U +inject/GVSDB +injection/MS +injector/SM +injunctive +injured/U +injurer/M +injure/SRDZG +injuriousness/M +injurious/YP +inkblot/SM +inker/M +inkiness/MS +inkling/SM +inkstand/SM +inkwell/SM +inky/TP +ink/ZDRJ +inland +inlander/M +inlay/RG +inletting +inly/G +inmost +Inna/M +innards +innateness/SM +innate/YP +innermost/S +innersole/S +innerspring +innervate/GNSDX +innervation/M +inner/Y +inning/M +Innis/M +innkeeper/MS +innocence/SM +Innocent/M +innocent/SYRT +innocuousness/MS +innocuous/PY +innovate/SDVNGX +innovation/M +innovative/P +innovator/MS +innovatory +Innsbruck/M +innuendo/MDGS +innumerability/M +innumerableness/M +innumerable/P +innumerably +innumerate +inn/ZGDRSJ +inoculate/ASDG +inoculation/MS +inoculative +inoffensive/P +Inonu/M +inopportuneness/M +inopportune/P +inordinateness/M +inordinate/PY +inorganic +inpatient +In/PM +input/MRDG +inquirer/M +inquire/ZR +inquiring/Y +inquiry/MS +inquisitional +inquisition/MS +Inquisition/MS +inquisitiveness/MS +inquisitive/YP +inquisitorial/Y +inquisitor/MS +INRI +inrush/M +ins +INS +insalubrious +insanitary +insatiability/MS +insatiableness/M +insatiable/P +insatiably +inscribe/Z +inscription/SM +inscrutability/SM +inscrutableness/SM +inscrutable/P +inscrutably +inseam +insecticidal +insecticide/MS +insectivore/SM +insectivorous +insecureness/M +insecure/P +inseminate/NGXSD +insemination/M +insensateness/M +insensate/P +insensible/P +insentient +inseparable/S +insert/ADSG +inserter/M +insertion/AMS +insetting +inshore +insider/M +inside/Z +insidiousness/MS +insidious/YP +insightful/Y +insigne's +insignia/SM +insignificant +insinuate/VNGXSD +insinuating/Y +insinuation/M +insinuator/SM +insipidity/MS +insipid/Y +insistence/SM +insistent/Y +insisting/Y +insist/SGD +insociable +insofar +insole/M +insolence/SM +insolent/YS +insolubleness/M +insoluble/P +insolubly +insomniac/S +insomnia/MS +insomuch +insouciance/SM +insouciant/Y +inspect/AGSD +inspection/SM +inspective +inspectorate/MS +inspector/SM +inspirational/Y +inspiration/MS +inspired/U +inspire/R +inspirer/M +inspiring/U +inspirit/DG +Inst +installable +install/ADRSG +installation/SM +installer/MS +installment/MS +instance/GD +instantaneousness/M +instantaneous/PY +instantiated/U +instantiate/SDXNG +instantiation/M +instant/SRYMP +instate/AGSD +inst/B +instead +instigate/XSDVGN +instigation/M +instigator/SM +instillation/SM +instinctive/Y +instinctual +instinct/VMS +instituter/M +institutes/M +institute/ZXVGNSRD +institutionalism/M +institutionalist/M +institutionalization/SM +institutionalize/GDS +institutional/Y +institution/AM +institutor's +instr +instruct/DSVG +instructed/U +instructional +instruction/MS +instructiveness/M +instructive/PY +instructor/MS +instrumentalist/MS +instrumentality/SM +instrumental/SY +instrumentation/SM +instrument/GMDS +insubordinate +insubstantial +insufferable +insufferably +insularity/MS +insular/YS +insulate/DSXNG +insulated/U +insulation/M +insulator/MS +insulin/MS +insult/DRSG +insulter/M +insulting/Y +insuperable +insuperably +insupportableness/M +insupportable/P +insurance/MS +insurance's/A +insure/BZGS +insured/S +insurer/M +insurgence/SM +insurgency/MS +insurgent/MS +insurmountably +insurrectionist/SM +insurrection/SM +intactness/M +intact/P +intaglio/GMDS +intake/M +intangible/M +integer/MS +integrability/M +integrable +integral/SYM +integrand/MS +integrate/AGNXEDS +integration/EMA +integrative/E +integrator/MS +integrity/SM +integument/SM +intellective/Y +intellect/MVS +intellectualism/MS +intellectuality/M +intellectualize/GSD +intellectualness/M +intellectual/YPS +intelligence/MSR +intelligencer/M +intelligentsia/MS +intelligent/UY +intelligibilities +intelligibility/UM +intelligibleness/MU +intelligible/PU +intelligibly/U +Intel/M +Intelsat/M +intemperate/P +intendant/MS +intendedness/M +intended/SYP +intender/M +intensification/M +intensifier/M +intensify/GXNZRSD +intensional/Y +intensiveness/MS +intensive/PSY +intentionality/M +intentional/UY +intention/SDM +intentness/SM +intent/YP +interaction/MS +interactive/PY +interactivity +interact/VGDS +interaxial +interbank +interbred +interbreed/GS +intercalate/GNVDS +intercalation/M +intercase +intercaste +interceder/M +intercede/SRDG +intercensal +intercept/DGS +interception/MS +interceptor/MS +intercession/MS +intercessor/SM +intercessory +interchangeability/M +interchangeableness/M +interchangeable/P +interchangeably +interchange/DSRGJ +interchanger/M +intercity +interclass +intercohort +intercollegiate +intercommunicate/SDXNG +intercommunication/M +intercom/SM +interconnectedness/M +interconnected/P +interconnect/GDS +interconnection/SM +interconnectivity +intercontinental +interconversion/M +intercorrelated +intercourse/SM +Interdata/M +interdenominational +interdepartmental/Y +interdependence/MS +interdependency/SM +interdependent/Y +interdiction/MS +interdict/MDVGS +interdisciplinary +interested/UYE +interest/GEMDS +interestingly/U +interestingness/M +interesting/YP +inter/ESTL +interface/SRDGM +interfacing/M +interfaith +interference/MS +interferer/M +interfere/SRDG +interfering/Y +interferometer/SM +interferometric +interferometry/M +interferon/MS +interfile/GSD +intergalactic +intergenerational +intergeneration/M +interglacial +intergovernmental +intergroup +interim/S +interindex +interindustry +interior/SMY +interj +interject/GDS +interjectional +interjection/MS +interlace/GSD +interlard/SGD +interlayer/G +interleave/SDG +interleukin/S +interlibrary +interlinear/S +interline/JGSD +interlingual +interlingua/M +interlining/M +interlink/GDS +interlisp/M +interlobular +interlocker/M +interlock/RDSG +interlocutor/MS +interlocutory +interlope/GZSRD +interloper/M +interlude/MSDG +intermarriage/MS +intermarry/GDS +intermediary/MS +intermediateness/M +intermediate/YMNGSDP +intermediation/M +interment/SME +intermeshed +intermetrics +intermezzi +intermezzo/SM +interminably +intermingle/DSG +intermission/MS +intermittent/Y +intermix/GSRD +intermodule +intermolecular/Y +internalization/SM +internalize/GDS +internal/SY +Internationale/M +internationalism/SM +internationalist/SM +internationality/M +internationalization/MS +internationalize/DSG +international/YS +internecine +internee/SM +interne's +Internet/M +INTERNET/M +internetwork +internist/SM +intern/L +internment/SM +internship/MS +internuclear +interocular +interoffice +interoperability +interpenetrates +interpersonal/Y +interplanetary +interplay/GSMD +interpol +interpolate/XGNVBDS +interpolation/M +Interpol/M +interpose/GSRD +interposer/M +interposition/MS +interpretable/U +interpret/AGSD +interpretation/MSA +interpretative/Y +interpreted/U +interpreter/SM +interpretive/Y +interpretor/S +interprocess +interprocessor +interquartile +interracial +interred/E +interregional +interregnum/MS +interrelatedness/M +interrelated/PY +interrelate/GNDSX +interrelation/M +interrelationship/SM +interring/E +interrogate/DSXGNV +interrogation/M +interrogative/SY +interrogator/SM +interrogatory/S +interrupted/U +interrupter/M +interruptibility +interruptible +interruption/MS +interrupt/VGZRDS +interscholastic +intersect/GDS +intersection/MS +intersession/MS +interspecies +intersperse/GNDSX +interspersion/M +interstage +interstate/S +interstellar +interstice/SM +interstitial/SY +intersurvey +intertask +intertwine/GSD +interurban/S +interval/MS +intervene/GSRD +intervener/M +intervenor/M +interventionism/MS +interventionist/S +intervention/MS +interview/AMD +interviewed/U +interviewee/SM +interviewer/SM +interviewing +interviews +intervocalic +interweave/GS +interwove +interwoven +intestacy/SM +intestinal/Y +intestine/SM +inti +intifada +intimacy/SM +intimal +intimateness/M +intimater/M +intimate/XYNGPDRS +intimation/M +intimidate/SDXNG +intimidating/Y +intimidation/M +into +intolerableness/M +intolerable/P +intolerant/PS +intonate/NX +intonation/M +intoxicant/MS +intoxicate/DSGNX +intoxicated/Y +intoxication/M +intra +intracellular +intracity +intraclass +intracohort +intractability/M +intractableness/M +intractable/P +intradepartmental +intrafamily +intragenerational +intraindustry +intraline +intrametropolitan +intramural/Y +intramuscular/Y +intranasal +intransigence/MS +intransigent/YS +intransitive/S +intraoffice +intraprocess +intrapulmonary +intraregional +intrasectoral +intrastate +intratissue +intrauterine +intravenous/YS +intrepidity/SM +intrepidness/M +intrepid/YP +intricacy/SM +intricateness/M +intricate/PY +intrigue/DRSZG +intriguer/M +intriguing/Y +intrinsically +intrinsic/S +introduce/ADSG +introducer/M +introduction/ASM +introductory +introit/SM +introject/SD +intro/S +introspection/MS +introspectiveness/M +introspective/YP +introspect/SGVD +introversion/SM +introvert/SMDG +intruder/M +intrude/ZGDSR +intrusion/SM +intrusiveness/MS +intrusive/SYP +intubate/NGDS +intubation/M +intuit/GVDSB +intuitionist/M +intuitiveness/MS +intuitive/YP +int/ZR +Inuit/MS +inundate/SXNG +inundation/M +inure/GDS +invader/M +invade/ZSRDG +invalid/GSDM +invalidism/MS +invariable/P +invariant/M +invasion/SM +invasive/P +invectiveness/M +invective/PSMY +inveigh/DRG +inveigher/M +inveighs +inveigle/DRSZG +inveigler/M +invent/ADGS +invented/U +invention/ASM +inventiveness/MS +inventive/YP +inventor/MS +inventory/SDMG +Inverness/M +inverse/YV +inverter/M +invertible +invert/ZSGDR +invest/ADSLG +investigate/XDSNGV +investigation/MA +investigator/MS +investigatory +investiture/SM +investment/ESA +investment's/A +investor/SM +inveteracy/MS +inveterate/Y +inviability +invidiousness/MS +invidious/YP +invigilate/GD +invigilator/SM +invigorate/ANGSD +invigorating/Y +invigoration/AM +invigorations +invincibility/SM +invincibleness/M +invincible/P +invincibly +inviolability/MS +inviolably +inviolateness/M +inviolate/YP +inviscid +invisibleness/M +invisible/S +invitational/S +invitation/MS +invited/U +invitee/S +inviter/M +invite/SRDG +inviting/Y +invocable +invocate +invoked/A +invoke/GSRDBZ +invoker/M +invokes/A +involuntariness/S +involuntary/P +involute/XYN +involution/M +involutorial +involvedly +involved/U +involve/GDSRL +involvement/SM +involver/M +invulnerability/M +invulnerableness/M +inwardness/M +inward/PY +ioctl +iodate/MGND +iodation/M +iodide/MS +iodinate/DNG +iodine/MS +iodize/GSD +Iolande/M +Iolanthe/M +Io/M +Iona/M +Ionesco/M +Ionian/M +ionic/S +Ionic/S +ionization's +ionization/SU +ionized/UC +ionize/GNSRDJXZ +ionizer's +ionizer/US +ionizes/U +ionizing/U +ionosphere/SM +ionospheric +ion's/I +ion/SMU +Iorgo/MS +Iormina/M +Iosep/M +iota/SM +IOU +Iowan/S +Iowa/SM +IPA +ipecac/MS +Iphigenia/M +ipso +Ipswich/M +IQ +Iqbal/M +Iquitos/M +Ira/M +Iranian/MS +Iran/M +Iraqi/SM +Iraq/M +IRA/S +irascibility/SM +irascible +irascibly +irateness/S +irate/RPYT +ireful +Ireland/M +ire/MGDS +Irena/M +Irene/M +irenic/S +iridescence/SM +iridescent/Y +irides/M +iridium/MS +irids +Irina/M +Iris +iris/GDSM +Irishman/M +Irishmen +Irish/R +Irishwoman/M +Irishwomen +Irita/M +irk/GDS +irksomeness/SM +irksome/YP +Irkutsk/M +Ir/M +Irma/M +ironclad/S +iron/DRMPSGJ +ironer/M +ironic +ironicalness/M +ironical/YP +ironing/M +ironmonger/M +ironmongery/M +ironside/MS +ironstone/MS +ironware/SM +ironwood/SM +ironworker/M +ironwork/MRS +irony/SM +Iroquoian/MS +Iroquois/M +irradiate/XSDVNG +irradiation/M +irrationality/MS +irrationalness/M +irrational/YSP +Irrawaddy/M +irreclaimable +irreconcilability/MS +irreconcilableness/M +irreconcilable/PS +irreconcilably +irrecoverableness/M +irrecoverable/P +irrecoverably +irredeemable/S +irredeemably +irredentism/M +irredentist/M +irreducibility/M +irreducible +irreducibly +irreflexive +irrefutable +irrefutably +irregardless +irregularity/SM +irregular/YS +irrelevance/SM +irrelevancy/MS +irrelevant/Y +irreligious +irremediableness/M +irremediable/P +irremediably +irremovable +irreparableness/M +irreparable/P +irreparably +irreplaceable/P +irrepressible +irrepressibly +irreproachableness/M +irreproachable/P +irreproachably +irreproducibility +irreproducible +irresistibility/M +irresistibleness/M +irresistible/P +irresistibly +irresoluteness/SM +irresolute/PNXY +irresolution/M +irresolvable +irrespective/Y +irresponsibility/SM +irresponsibleness/M +irresponsible/PS +irresponsibly +irretrievable +irretrievably +irreverence/MS +irreverent/Y +irreversible +irreversibly +irrevocableness/M +irrevocable/P +irrevocably +irrigable +irrigate/DSXNG +irrigation/M +irritability/MS +irritableness/M +irritable/P +irritably +irritant/S +irritate/DSXNGV +irritated/Y +irritating/Y +irritation/M +irrupt/GVSD +irruption/SM +IRS +Irtish/M +Irvine/M +Irving/M +Irvin/M +Irv/MG +Irwin/M +Irwinn/M +is +i's +Isaac/SM +Isaak/M +Isabelita/M +Isabella/M +Isabelle/M +Isabel/M +Isacco/M +Isac/M +Isadora/M +Isadore/M +Isador/M +Isahella/M +Isaiah/M +Isak/M +Isa/M +ISBN +Iscariot/M +Iseabal/M +Isfahan/M +Isherwood/M +Ishim/M +Ishmael/M +Ishtar/M +Isiahi/M +Isiah/M +Isidora/M +Isidore/M +Isidor/M +Isidoro/M +Isidro/M +isinglass/MS +Isis/M +Islamabad/M +Islamic/S +Islam/SM +islander/M +island/GZMRDS +Islandia/M +isle/MS +islet/SM +isl/GD +Ismael/M +ism/MCS +isn't +ISO +isobaric +isobar/MS +Isobel/M +isochronal/Y +isochronous/Y +isocline/M +isocyanate/M +isodine +isolate/SDXNG +isolationism/SM +isolationistic +isolationist/SM +isolation/M +isolator/MS +Isolde/M +isomeric +isomerism/SM +isomer/SM +isometrically +isometric/S +isometrics/M +isomorphic +isomorphically +isomorphism/MS +isomorph/M +isoperimetrical +isopleth/M +isopleths +isosceles +isostatic +isothermal/Y +isotherm/MS +isotonic +isotope/SM +isotopic +isotropic +isotropically +isotropy/M +Ispahan's +ispell/M +Ispell/M +Israeli/MS +Israelite/SM +Israel/MS +Issac/M +Issiah/M +Issie/M +Issi/M +issuable +issuance/MS +issuant +issued/A +issue/GMZDSR +issuer/AMS +issues/A +issuing/A +Issy/M +Istanbul/M +isthmian/S +isthmus/SM +Istvan/M +Isuzu/M +It +IT +Itaipu/M +ital +Italianate/GSD +Italian/MS +italicization/MS +italicized/U +italicize/GSD +italic/S +Ital/M +Italy/M +Itasca/M +itch/GMDS +itchiness/MS +Itch/M +itchy/RTP +ITcorp/M +ITCorp/M +it'd +Itel/M +itemization/SM +itemized/U +itemize/GZDRS +itemizer/M +itemizes/A +item/MDSG +iterate/ASDXVGN +iteration/M +iterative/YA +iterator/MS +Ithaca/M +Ithacan +itinerant/SY +itinerary/MS +it'll +it/MUS +Ito/M +its +itself +ITT +IUD/S +IV +Iva/M +Ivanhoe/M +Ivan/M +Ivar/M +I've +Ive/MRS +Iver/M +Ivette/M +Ivett/M +Ivie/M +iv/M +Ivonne/M +Ivor/M +Ivory/M +ivory/SM +IVs +Ivy/M +ivy/MDS +ix +Izaak/M +Izabel/M +Izak/M +Izanagi/M +Izanami/M +Izhevsk/M +Izmir/M +Izvestia/M +Izzy/M +jabbed +jabberer/M +jabber/JRDSZG +jabbing +Jabez/M +Jablonsky/M +jabot/MS +jab/SM +jacaranda/MS +Jacenta/M +Jacinda/M +Jacinta/M +Jacintha/M +Jacinthe/M +jackal/SM +jackass/SM +jackboot/DMS +jackdaw/SM +Jackelyn/M +jacketed/U +jacket/GSMD +jack/GDRMS +jackhammer/MDGS +Jackie/M +Jacki/M +jackknife/MGSD +jackknives +Jacklin/M +Jacklyn/M +Jack/M +Jackman/M +jackpot/MS +Jackqueline/M +Jackquelin/M +jackrabbit/DGS +Jacksonian +Jackson/SM +Jacksonville/M +jackstraw/MS +Jacky/M +Jaclin/M +Jaclyn/M +Jacobean +Jacobian/M +Jacobi/M +Jacobin/M +Jacobite/M +Jacobo/M +Jacobsen/M +Jacob/SM +Jacobs/N +Jacobson/M +Jacobus +Jacoby/M +jacquard/MS +Jacquard/SM +Jacqueline/M +Jacquelin/M +Jacquelyn/M +Jacquelynn/M +Jacquenetta/M +Jacquenette/M +Jacques/M +Jacquetta/M +Jacquette/M +Jacquie/M +Jacqui/M +jacuzzi +Jacuzzi/S +Jacynth/M +Jada/M +jadedness/SM +jaded/PY +jadeite/SM +Jade/M +jade/MGDS +Jaeger/M +Jae/M +jaggedness/SM +jagged/RYTP +Jagger/M +jaggers +jagging +jag/S +jaguar/MS +jailbird/MS +jailbreak/SM +jailer/M +jail/GZSMDR +Jaime/M +Jaimie/M +Jaine/M +Jainism/M +Jain/M +Jaipur/M +Jakarta/M +Jake/MS +Jakie/M +Jakob/M +jalapeño/S +jalopy/SM +jalousie/MS +Jamaal/M +Jamaica/M +Jamaican/S +Jamal/M +Jamar/M +jambalaya/MS +jamb/DMGS +jamboree/MS +Jamel/M +Jame/MS +Jameson/M +Jamestown/M +Jamesy/M +Jamey/M +Jamie/M +Jamill/M +Jamil/M +Jami/M +Jamima/M +Jamison/M +Jammal/M +jammed/U +Jammie/M +jamming/U +jam/SM +Janacek/M +Jana/M +Janaya/M +Janaye/M +Jandy/M +Janean/M +Janeczka/M +Janeen/M +Janeiro/M +Janek/M +Janela/M +Janella/M +Janelle/M +Janell/M +Janel/M +Jane/M +Janene/M +Janenna/M +Janessa/M +Janesville/M +Janeta/M +Janet/M +Janetta/M +Janette/M +Janeva/M +Janey/M +jangler/M +jangle/RSDGZ +jangly +Jania/M +Janice/M +Janie/M +Janifer/M +Janina/M +Janine/M +Janis/M +janissary/MS +Janith/M +janitorial +janitor/SM +Janka/M +Jan/M +Janna/M +Jannelle/M +Jannel/M +Jannie/M +Janos/M +Janot/M +Jansenist/M +Jansen/M +January/MS +Janus/M +Jany/M +Japanese/SM +Japan/M +japanned +japanner +japanning +japan/SM +jape/DSMG +Japura/M +Jaquelin/M +Jaquelyn/M +Jaquenetta/M +Jaquenette/M +Jaquith/M +Jarad/M +jardinière/MS +Jard/M +Jareb/M +Jared/M +jarful/S +jargon/SGDM +Jarib/M +Jarid/M +Jarlsberg +jar/MS +Jarrad/M +jarred +Jarred/M +Jarret/M +Jarrett/M +Jarrid/M +jarring/SY +Jarrod/M +Jarvis/M +Jase/M +Jasen/M +Jasmina/M +Jasmine/M +jasmine/MS +Jasmin/M +Jason/M +Jasper/M +jasper/MS +Jastrow/M +Jasun/M +jato/SM +jaundice/DSMG +jaundiced/U +jauntily +jauntiness/MS +jaunt/MDGS +jaunty/SRTP +Javanese +Java/SM +javelin/SDMG +Javier/M +jawbone/SDMG +jawbreaker/SM +jawline +jaw/SMDG +Jaxartes/M +Jayapura/M +jaybird/SM +Jaycee/SM +Jaye/M +Jay/M +Jaymee/M +Jayme/M +Jaymie/M +Jaynell/M +Jayne/M +jay/SM +Jayson/M +jaywalker/M +jaywalk/JSRDZG +Jazmin/M +jazziness/M +jazzmen +jazz/MGDS +jazzy/PTR +JCS +jct +JD +Jdavie/M +jealousness/M +jealous/PY +jealousy/MS +Jeana/M +Jeanelle/M +Jeane/M +Jeanette/M +Jeanie/M +Jeanine/M +Jean/M +jean/MS +Jeanna/M +Jeanne/M +Jeannette/M +Jeannie/M +Jeannine/M +Jecho/M +Jedd/M +Jeddy/M +Jedediah/M +Jedidiah/M +Jedi/M +Jed/M +jeep/GZSMD +Jeep/S +jeerer/M +jeering/Y +jeer/SJDRMG +Jeeves/M +jeez +Jefferey/M +Jeffersonian/S +Jefferson/M +Jeffery/M +Jeffie/M +Jeff/M +Jeffrey/SM +Jeffry/M +Jeffy/M +jehad's +Jehanna/M +Jehoshaphat/M +Jehovah/M +Jehu/M +jejuna +jejuneness/M +jejune/PY +jejunum/M +Jekyll/M +Jelene/M +jell/GSD +Jello/M +jello's +jellybean/SM +jellyfish/MS +jellying/M +jellylike +jellyroll/S +jelly/SDMG +Jemie/M +Jemimah/M +Jemima/M +Jemmie/M +jemmy/M +Jemmy/M +Jena/M +Jenda/M +Jenelle/M +Jenica/M +Jeniece/M +Jenifer/M +Jeniffer/M +Jenilee/M +Jeni/M +Jenine/M +Jenkins/M +Jen/M +Jenna/M +Jennee/M +Jenner/M +jennet/SM +Jennette/M +Jennica/M +Jennie/M +Jennifer/M +Jennilee/M +Jenni/M +Jennine/M +Jennings/M +Jenn/RMJ +Jenny/M +jenny/SM +Jeno/M +Jensen/M +Jens/N +jeopard +jeopardize/GSD +jeopardy/MS +Jephthah/M +Jerad/M +Jerald/M +Jeralee/M +Jeramey/M +Jeramie/M +Jere/M +Jereme/M +jeremiad/SM +Jeremiah/M +Jeremiahs +Jeremias/M +Jeremie/M +Jeremy/M +Jericho/M +Jeri/M +jerker/M +jerk/GSDRJ +jerkily +jerkiness/SM +jerkin/SM +jerkwater/S +jerky/RSTP +Jermaine/M +Jermain/M +Jermayne/M +Jeroboam/M +Jerold/M +Jerome/M +Jeromy/M +Jerrie/M +Jerrilee/M +Jerrilyn/M +Jerri/M +Jerrine/M +Jerrod/M +Jerrold/M +Jerrome/M +jerrybuilt +Jerrylee/M +jerry/M +Jerry/M +jersey/MS +Jersey/MS +Jerusalem/M +Jervis/M +Jes +Jessalin/M +Jessalyn/M +Jessa/M +Jessamine/M +jessamine's +Jessamyn/M +Jessee/M +Jesselyn/M +Jesse/M +Jessey/M +Jessica/M +Jessie/M +Jessika/M +Jessi/M +jess/M +Jess/M +Jessy/M +jest/DRSGZM +jester/M +jesting/Y +Jesuit/SM +Jesus +Jeth/M +Jethro/M +jetliner/MS +jet/MS +jetport/SM +jetsam/MS +jetted/M +jetting/M +jettison/DSG +jetty/RSDGMT +jeweler/M +jewelery/S +jewel/GZMRDS +Jewelled/M +Jewelle/M +jewellery's +Jewell/MD +Jewel/M +jewelry/MS +Jewess/SM +Jewishness/MS +Jewish/P +Jew/MS +Jewry/MS +Jezebel/MS +j/F +JFK/M +jg/M +jibbed +jibbing +jibe/S +jib/MDSG +Jidda/M +jiff/S +jiffy/SM +jigged +jigger/SDMG +jigging/M +jiggle/SDG +jiggly/TR +jig/MS +jigsaw/GSDM +jihad/SM +Jilin +Jillana/M +Jillane/M +Jillayne/M +Jilleen/M +Jillene/M +Jillian/M +Jillie/M +Jilli/M +Jill/M +Jilly/M +jilt/DRGS +jilter/M +Jimenez/M +Jim/M +Jimmie/M +jimmy/GSDM +Jimmy/M +jimsonweed/S +Jinan +jingler/M +jingle/RSDG +jingly/TR +jingoism/SM +jingoistic +jingoist/SM +jingo/M +Jinnah/M +jinni's +jinn/MS +Jinny/M +jinrikisha/SM +jinx/GMDS +jitney/MS +jitterbugged +jitterbugger +jitterbugging +jitterbug/SM +jitter/S +jittery/TR +jiujitsu's +Jivaro/M +jive/MGDS +Joachim/M +Joana/M +Joane/M +Joanie/M +Joan/M +Joanna/M +Joanne/SM +Joann/M +Joaquin/M +jobbed +jobber/MS +jobbery/M +jobbing/M +Jobey/M +jobholder/SM +Jobie/M +Jobi/M +Jobina/M +joblessness/MS +jobless/P +Jobrel/M +job/SM +Job/SM +Jobye/M +Joby/M +Jobyna/M +Jocasta/M +Joceline/M +Jocelin/M +Jocelyne/M +Jocelyn/M +jockey/SGMD +jock/GDMS +Jock/M +Jocko/M +jockstrap/MS +jocoseness/MS +jocose/YP +jocosity/SM +jocularity/SM +jocular/Y +jocundity/SM +jocund/Y +Jodee/M +jodhpurs +Jodie/M +Jodi/M +Jody/M +Joeann/M +Joela/M +Joelie/M +Joella/M +Joelle/M +Joellen/M +Joell/MN +Joelly/M +Joellyn/M +Joel/MY +Joelynn/M +Joe/M +Joesph/M +Joete/M +joey/M +Joey/M +jogged +jogger/SM +jogging/S +joggler/M +joggle/SRDG +Jogjakarta/M +jog/S +Johan/M +Johannah/M +Johanna/M +Johannes +Johannesburg/M +Johann/M +Johansen/M +Johanson/M +Johna/MH +Johnathan/M +Johnath/M +Johnathon/M +Johnette/M +Johnie/M +Johnna/M +Johnnie/M +johnnycake/SM +Johnny/M +johnny/SM +Johnsen/M +john/SM +John/SM +Johns/N +Johnson/M +Johnston/M +Johnstown/M +Johny/M +Joice/M +join/ADGFS +joined/U +joiner/FSM +joinery/MS +jointed/EYP +jointedness/ME +joint/EGDYPS +jointer/M +jointly/F +joint's +jointures +joist/GMDS +Jojo/M +joke/MZDSRG +joker/M +jokey +jokier +jokiest +jokily +joking/Y +Jolee/M +Joleen/M +Jolene/M +Joletta/M +Jolie/M +Joliet's +Joli/M +Joline/M +Jolla/M +jollification/MS +jollily +jolliness/SM +jollity/MS +jolly/TSRDGP +Jolson/M +jolt/DRGZS +jolter/M +Joly/M +Jolyn/M +Jolynn/M +Jo/MY +Jonah/M +Jonahs +Jonas +Jonathan/M +Jonathon/M +Jonell/M +Jone/MS +Jones/S +Jonie/M +Joni/MS +Jon/M +jonquil/MS +Jonson/M +Joplin/M +Jordain/M +Jordana/M +Jordanian/S +Jordan/M +Jordanna/M +Jordon/M +Jorey/M +Jorgan/M +Jorge/M +Jorgensen/M +Jorgenson/M +Jorie/M +Jori/M +Jorrie/M +Jorry/M +Jory/M +Joscelin/M +Josee/M +Josefa/M +Josefina/M +Josef/M +Joseito/M +Jose/M +Josepha/M +Josephina/M +Josephine/M +Joseph/M +Josephs +Josephson/M +Josephus/M +Josey/M +josh/DSRGZ +josher/M +Joshia/M +Josh/M +Joshuah/M +Joshua/M +Josiah/M +Josias/M +Josie/M +Josi/M +Josselyn/M +joss/M +jostle/SDG +Josue/M +Josy/M +jot/S +jotted +jotter/SM +jotting/SM +Joule/M +joule/SM +jounce/SDG +jouncy/RT +Jourdain/M +Jourdan/M +journalese/MS +journal/GSDM +journalism/SM +journalistic +journalist/SM +journalize/DRSGZ +journalized/U +journalizer/M +journey/DRMZSGJ +journeyer/M +journeyman/M +journeymen +jouster/M +joust/ZSMRDG +Jovanovich/M +Jove/M +joviality/SM +jovial/Y +Jovian +jowl/SMD +jowly/TR +Joya/M +Joyan/M +Joyann/M +Joycean +Joycelin/M +Joyce/M +Joye/M +joyfuller +joyfullest +joyfulness/SM +joyful/PY +joylessness/MS +joyless/PY +Joy/M +joy/MDSG +Joyner/M +joyousness/MS +joyous/YP +joyridden +joyride/SRZMGJ +joyrode +joystick/S +Jozef/M +JP +Jpn +Jr/M +j's +J's +Jsandye/M +Juana/M +Juanita/M +Juan/M +Juarez +Jubal/M +jubilant/Y +jubilate/XNGDS +jubilation/M +jubilee/SM +Judah/M +Judaic +Judaical +Judaism/SM +Judas/S +juddered +juddering +Judd/M +Judea/M +Jude/M +judge/AGDS +judger/M +judge's +judgeship/SM +judgmental/Y +judgment/MS +judicable +judicatory/S +judicature/MS +judicial/Y +judiciary/S +judicious/IYP +judiciousness/SMI +Judie/M +Judi/MH +Juditha/M +Judith/M +Jud/M +judo/MS +Judon/M +Judson/M +Judye/M +Judy/M +jugate/F +jugful/SM +jugged +Juggernaut/M +juggernaut/SM +jugging +juggler/M +juggle/RSDGZ +jugglery/MS +jug/MS +jugular/S +juice/GMZDSR +juicer/M +juicily +juiciness/MS +juicy/TRP +Juieta/M +jujitsu/MS +jujube/SM +juju/M +jujutsu's +jukebox/SM +juke/GS +Julee/M +Jule/MS +julep/SM +Julia/M +Juliana/M +Juliane/M +Julian/M +Julianna/M +Julianne/M +Juliann/M +Julie/M +julienne/GSD +Julienne/M +Julieta/M +Juliet/M +Julietta/M +Juliette/M +Juli/M +Julina/M +Juline/M +Julio/M +Julissa/M +Julita/M +Julius/M +Jul/M +Julys +July/SM +jumble/GSD +jumbo/MS +jumper/M +jump/GZDRS +jumpily +jumpiness/MS +jumpsuit/S +jumpy/PTR +jun +junco/MS +junction/IMESF +juncture/SFM +Juneau/M +June/MS +Junette/M +Jungfrau/M +Jungian +jungle/SDM +Jung/M +Junia/M +Junie/M +Junina/M +juniority/M +junior/MS +Junior/S +juniper/SM +junkerdom +Junker/SM +junketeer/SGDM +junket/SMDG +junk/GZDRMS +junkie/RSMT +junkyard/MS +Jun/M +Juno/M +junta/MS +Jupiter/M +Jurassic +juridic +juridical/Y +juried +jurisdictional/Y +jurisdiction/SM +jurisprudence/SM +jurisprudent +jurisprudential/Y +juristic +jurist/MS +juror/MS +Jurua/M +jury/IMS +jurying +juryman/M +jurymen +jurywoman/M +jurywomen +justed +Justen/M +juster/M +justest +Justice/M +justice/MIS +justiciable +justifiability/M +justifiable/U +justifiably/U +justification/M +justified/UA +justifier/M +justify/GDRSXZN +Justina/M +Justine/M +justing +Justinian/M +Justin/M +Justinn/M +Justino/M +Justis/M +justness/MS +justness's/U +justs +just/UPY +Justus/M +jute/SM +Jutish +Jutland/M +jut/S +jutted +jutting +Juvenal/M +juvenile/SM +juxtapose/SDG +juxtaposition/SM +JV +J/X +Jyoti/M +Kaaba/M +kabob/SM +kaboom +Kabuki +kabuki/SM +Kabul/M +Kacey/M +Kacie/M +Kacy/M +Kaddish/M +kaddish/S +Kaela/M +kaffeeklatch +kaffeeklatsch/S +Kafkaesque +Kafka/M +kaftan's +Kagoshima/M +Kahaleel/M +Kahlil/M +Kahlua/M +Kahn/M +Kaia/M +Kaifeng/M +Kaila/M +Kaile/M +Kailey/M +Kai/M +Kaine/M +Kain/M +kaiser/MS +Kaiser/SM +Kaitlin/M +Kaitlyn/M +Kaitlynn/M +Kaja/M +Kajar/M +Kakalina/M +Kalahari/M +Kala/M +Kalamazoo/M +Kalashnikov/M +Kalb/M +Kaleb/M +Kaleena/M +kaleidescope +kaleidoscope/SM +kaleidoscopic +kaleidoscopically +Kale/M +kale/MS +Kalgoorlie/M +Kalie/M +Kalila/M +Kalil/M +Kali/M +Kalina/M +Kalinda/M +Kalindi/M +Kalle/M +Kalli/M +Kally/M +Kalmyk +Kalvin/M +Kama/M +Kamchatka/M +Kamehameha/M +Kameko/M +Kamikaze/MS +kamikaze/SM +Kamilah/M +Kamila/M +Kamillah/M +Kampala/M +Kampuchea/M +Kanchenjunga/M +Kandace/M +Kandahar/M +Kandinsky/M +Kandy/M +Kane/M +kangaroo/SGMD +Kania/M +Kankakee/M +Kan/MS +Kannada/M +Kano/M +Kanpur/M +Kansan/S +Kansas +Kantian +Kant/M +Kanya/M +Kaohsiung/M +kaolinite/M +kaolin/MS +Kaplan/M +kapok/SM +Kaposi/M +kappa/MS +kaput/M +Karachi/M +Karaganda/M +Karakorum/M +karakul/MS +Karalee/M +Karalynn/M +Kara/M +Karamazov/M +karaoke/S +karate/MS +karat/SM +Karee/M +Kareem/M +Karel/M +Kare/M +Karena/M +Karenina/M +Karen/M +Karia/M +Karie/M +Karil/M +Karilynn/M +Kari/M +Karim/M +Karina/M +Karine/M +Karin/M +Kariotta/M +Karisa/M +Karissa/M +Karita/M +Karla/M +Karlan/M +Karlee/M +Karleen/M +Karlene/M +Karlen/M +Karlie/M +Karlik/M +Karlis +Karl/MNX +Karloff/M +Karlotta/M +Karlotte/M +Karly/M +Karlyn/M +karma/SM +Karmen/M +karmic +Karna/M +Karney/M +Karola/M +Karole/M +Karolina/M +Karoline/M +Karol/M +Karoly/M +Karon/M +Karo/YM +Karp/M +Karrah/M +Karrie/M +Karroo/M +Karry/M +kart/MS +Karylin/M +Karyl/M +Kary/M +Karyn/M +Kasai/M +Kasey/M +Kashmir/SM +Kaspar/M +Kasparov/M +Kasper/M +Kass +Kassandra/M +Kassey/M +Kassia/M +Kassie/M +Kassi/M +Katalin/M +Kata/M +Katee/M +Katelyn/M +Kate/M +Katerina/M +Katerine/M +Katey/M +Katha/M +Katharina/M +Katharine/M +Katharyn/M +Kathe/M +Katherina/M +Katherine/M +Katheryn/M +Kathiawar/M +Kathie/M +Kathi/M +Kathleen/M +Kathlin/M +Kath/M +Kathmandu +Kathrine/M +Kathryne/M +Kathryn/M +Kathye/M +Kathy/M +Katie/M +Kati/M +Katina/M +Katine/M +Katinka/M +Katleen/M +Katlin/M +Kat/M +Katmai/M +Katmandu's +Katowice/M +Katrina/M +Katrine/M +Katrinka/M +Kattie/M +Katti/M +Katuscha/M +Katusha/M +Katya/M +katydid/SM +Katy/M +Katz/M +Kauai/M +Kauffman/M +Kaufman/M +Kaunas/M +Kaunda/M +Kawabata/M +Kawasaki/M +kayak/SGDM +Kaycee/M +Kaye/M +Kayla/M +Kaylee/M +Kayle/M +Kayley/M +Kaylil/M +Kaylyn/M +Kay/M +Kayne/M +kayo/DMSG +Kazakh/M +Kazakhstan +Kazan/M +Kazantzakis/M +kazoo/SM +Kb +KB +KC +kcal/M +kc/M +Keane/M +Kean/M +Kearney/M +Keary/M +Keaton/M +Keats/M +kebab/SM +Keck/M +Keefe/MR +Keefer/M +Keegan/M +Keelby/M +Keeley/M +keel/GSMDR +keelhaul/SGD +Keelia/M +Keely/M +Keenan/M +Keene/M +keener/M +keen/GTSPYDR +keening/M +Keen/M +keenness/MS +keeper/M +keep/GZJSR +keeping/M +keepsake/SM +Keewatin/M +kegged +kegging +keg/MS +Keillor/M +Keir/M +Keisha/M +Keith/M +Kelbee/M +Kelby/M +Kelcey/M +Kelcie/M +Kelci/M +Kelcy/M +Kele/M +Kelila/M +Kellby/M +Kellen/M +Keller/M +Kelley/M +Kellia/M +Kellie/M +Kelli/M +Kellina/M +Kellogg/M +Kellsie/M +Kellyann/M +Kelly/M +kelp/GZMDS +Kelsey/M +Kelsi/M +Kelsy/M +Kelt's +Kelvin/M +kelvin/MS +Kelwin/M +Kemerovo/M +Kempis/M +Kemp/M +Kendall/M +Kendal/M +Kendell/M +Kendra/M +Kendre/M +Kendrick/MS +Kenilworth/M +Ken/M +Kenmore/M +ken/MS +Kenna/M +Kennan/M +Kennecott/M +kenned +Kennedy/M +kennel/GSMD +Kenneth/M +Kennett/M +Kennie/M +kenning +Kennith/M +Kenn/M +Kenny/M +keno/M +Kenon/M +Kenosha/M +Kensington/M +Kent/M +Kenton/M +Kentuckian/S +Kentucky/M +Kenya/M +Kenyan/S +Kenyatta/M +Kenyon/M +Keogh/M +Keokuk/M +kepi/SM +Kepler/M +kept +keratin/MS +kerbside +Kerby/M +kerchief/MDSG +Kerensky/M +Kerianne/M +Keriann/M +Keri/M +Kerk/M +Ker/M +Kermie/M +Kermit/M +Kermy/M +kerned +kernel/GSMD +kerning +Kern/M +kerosene/MS +Kerouac/M +Kerrie/M +Kerrill/M +Kerri/M +Kerrin/M +Kerr/M +Kerry/M +Kerstin/M +Kerwin/M +Kerwinn/M +Kesley/M +Keslie/M +Kessiah/M +Kessia/M +Kessler/M +kestrel/SM +ketch/MS +ketchup/SM +ketone/M +ketosis/M +Kettering/M +Kettie/M +Ketti/M +kettledrum/SM +kettleful +kettle/SM +Ketty/M +Kevan/M +Keven/M +Kevina/M +Kevin/M +Kevlar +Kev/MN +Kevon/M +Kevorkian/M +Kevyn/M +Kewaskum/M +Kewaunee/M +Kewpie/M +keyboardist/S +keyboard/RDMZGS +keyclick/SM +keyhole/MS +Key/M +Keynesian/M +Keynes/M +keynoter/M +keynote/SRDZMG +keypad/MS +keypuncher/M +keypunch/ZGRSD +keyring +key/SGMD +keystone/SM +keystroke/SDMG +keyword/SM +k/FGEIS +kg +K/G +KGB +Khabarovsk/M +Khachaturian/M +khaki/SM +Khalid/M +Khalil/M +Khan/M +khan/MS +Kharkov/M +Khartoum/M +Khayyam/M +Khmer/M +Khoisan/M +Khomeini/M +Khorana/M +Khrushchev/SM +Khufu/M +Khulna/M +Khwarizmi/M +Khyber/M +kHz/M +KIA +Kiah/M +Kial/M +kibble/GMSD +kibbutzim +kibbutz/M +kibitzer/M +kibitz/GRSDZ +kibosh/GMSD +Kickapoo/M +kickback/SM +kickball/MS +kicker/M +kick/GZDRS +kickoff/SM +kickstand/MS +kicky/RT +kidded +kidder/SM +kiddie/SD +kidding/YM +kiddish +Kidd/M +kiddo/SM +kiddying +kiddy's +kidless +kid/MS +kidnaper's +kidnaping's +kidnap/MSJ +kidnapped +kidnapper/SM +kidnapping/S +kidney/MS +kidskin/SM +Kieffer/M +kielbasa/SM +kielbasi +Kiele/M +Kiel/M +Kienan/M +kier/I +Kierkegaard/M +Kiersten/M +Kieth/M +Kiev/M +Kigali/M +Kikelia/M +Kikuyu/M +Kilauea/M +Kile/M +Kiley/M +Kilian/M +Kilimanjaro/M +kill/BJGZSDR +killdeer/SM +Killebrew/M +killer/M +Killian/M +Killie/M +killing/Y +killjoy/S +Killy/M +kiln/GDSM +kilobaud/M +kilobit/S +kilobuck +kilobyte/S +kilocycle/MS +kilogauss/M +kilogram/MS +kilohertz/M +kilohm/M +kilojoule/MS +kiloliter/MS +kilometer/SM +kilo/SM +kiloton/SM +kilovolt/SM +kilowatt/SM +kiloword +kilter/M +kilt/MDRGZS +Ki/M +Kimball/M +Kimbell/M +Kimberlee/M +Kimberley/M +Kimberli/M +Kimberly/M +Kimberlyn/M +Kimble/M +Kimbra/M +Kim/M +Kimmie/M +Kimmi/M +Kimmy/M +kimono/MS +Kincaid/M +kinda +kindergarten/MS +kindergärtner/SM +kinder/U +kindheartedness/MS +kindhearted/YP +kindle/AGRSD +kindler/M +kindliness/SM +kindliness's/U +kindling/M +kindly/TUPR +kindness's +kindness/US +kind/PSYRT +kindred/S +kinematic/S +kinematics/M +kinesics/M +kine/SM +kinesthesis +kinesthetically +kinesthetic/S +kinetically +kinetic/S +kinetics/M +kinfolk/S +kingbird/M +kingdom/SM +kingfisher/MS +kinglet/M +kingliness/M +kingly/TPR +King/M +kingpin/MS +Kingsbury/M +king/SGYDM +kingship/SM +Kingsley/M +Kingsly/M +Kingston/M +Kingstown/M +Kingwood/M +kink/GSDM +kinkily +kinkiness/SM +kinky/PRT +Kin/M +kin/MS +Kinna/M +Kinney/M +Kinnickinnic/M +Kinnie/M +Kinny/M +Kinsey/M +kinsfolk/S +Kinshasa/M +Kinshasha/M +kinship/SM +Kinsley/M +kinsman/M +kinsmen/M +kinswoman/M +kinswomen +kiosk/SM +Kiowa/SM +Kipling/M +Kip/M +kip/MS +Kippar/M +kipped +kipper/DMSG +Kipper/M +Kippie/M +kipping +Kipp/MR +Kippy/M +Kira/M +Kirbee/M +Kirbie/M +Kirby/M +Kirchhoff/M +Kirchner/M +Kirchoff/M +Kirghistan/M +Kirghizia/M +Kirghiz/M +Kiribati +Kiri/M +Kirinyaga/M +kirk/GDMS +Kirkland/M +Kirk/M +Kirkpatrick/M +Kirkwood/M +Kirov/M +kirsch/S +Kirsteni/M +Kirsten/M +Kirsti/M +Kirstin/M +Kirstyn/M +Kisangani/M +Kishinev/M +kismet/SM +kiss/DSRBJGZ +Kissee/M +kisser/M +Kissiah/M +Kissie/M +Kissinger/M +Kitakyushu/M +kitbag's +kitchener/M +Kitchener/M +kitchenette/SM +kitchen/GDRMS +kitchenware/SM +kiter/M +kite/SM +kith/MDG +kiths +Kit/M +kit/MDRGS +kitsch/MS +kitschy +kitted +kittenishness/M +kittenish/YP +kitten/SGDM +Kittie/M +Kitti/M +kitting +kittiwakes +Kitty/M +kitty/SM +Kiwanis/M +kiwifruit/S +kiwi/SM +Kizzee/M +Kizzie/M +KKK +kl +Klan/M +Klansman/M +Klara/M +Klarika/M +Klarrisa/M +Klaus/M +klaxon/M +Klee/M +Kleenex/SM +Klein/M +Kleinrock/M +Klemens/M +Klement/M +Kleon/M +kleptomaniac/SM +kleptomania/MS +Kliment/M +Kline/M +Klingon/M +Klondike/SDMG +kludger/M +kludge/RSDGMZ +kludgey +klutziness/S +klutz/SM +klutzy/TRP +Klux/M +klystron/MS +km +kn +knacker/M +knack/SGZRDM +knackwurst/MS +Knapp/M +knapsack/MS +Knauer/M +knavery/MS +knave/SM +knavish/Y +kneader/M +knead/GZRDS +kneecap/MS +kneecapped +kneecapping +knee/DSM +kneeing +kneeler/M +kneel/GRS +kneepad/SM +knell/SMDG +knelt +Knesset/M +knew +Kngwarreye/M +Knickerbocker/MS +knickerbocker/S +knickknack/SM +knick/ZR +Knievel/M +knife/DSGM +knighthood/MS +knightliness/MS +knightly/P +Knight/M +knight/MDYSG +knish/MS +knit/AU +knits +knitted +knitter/MS +knitting/SM +knitwear/M +knives/M +knobbly +knobby/RT +Knobeloch/M +knob/MS +knockabout/M +knockdown/S +knocker/M +knock/GZSJRD +knockoff/S +knockout/MS +knockwurst's +knoll/MDSG +Knopf/M +Knossos/M +knothole/SM +knot/MS +knotted +knottiness/M +knotting/M +knotty/TPR +knowable/U +knower/M +know/GRBSJ +knowhow +knowingly/U +knowing/RYT +knowings/U +knowledgeableness/M +knowledgeable/P +knowledgeably +knowledge/SM +Knowles +known/SU +Knox/M +Knoxville/M +knuckleball/R +knuckle/DSMG +knuckleduster +knucklehead/MS +Knudsen/M +Knudson/M +knurl/DSG +Knuth/M +Knutsen/M +Knutson/M +KO +koala/SM +Kobayashi/M +Kobe/M +Kochab/M +Koch/M +Kodachrome/M +Kodak/SM +Kodaly/M +Kodiak/M +Koenig/M +Koenigsberg/M +Koenraad/M +Koestler/M +Kohinoor/M +Kohler/M +Kohl/MR +kohlrabies +kohlrabi/M +kola/SM +Kolyma/M +Kommunizma/M +Kong/M +Kongo/M +Konrad/M +Konstance/M +Konstantine/M +Konstantin/M +Konstanze/M +kookaburra/SM +kook/GDMS +kookiness/S +kooky/PRT +Koo/M +Koontz/M +kopeck/MS +Koppers/M +Koralle/M +Koral/M +Kora/M +Koranic +Koran/SM +Kordula/M +Korea/M +Korean/S +Korella/M +Kore/M +Koren/M +Koressa/M +Korey/M +Korie/M +Kori/M +Kornberg/M +Korney/M +Korrie/M +Korry/M +Kort/M +Kory/M +Korzybski/M +Kosciusko/M +kosher/DGS +Kossuth/M +Kosygin/M +Kovacs/M +Kowalewski/M +Kowalski/M +Kowloon/M +kowtow/SGD +KP +kph +kraal/SMDG +Kraemer/M +kraft/M +Kraft/M +Krakatau's +Krakatoa/M +Krakow/M +Kramer/M +Krasnodar/M +Krasnoyarsk/M +Krause/M +kraut/S +Krebs/M +Kremlin/M +Kremlinologist/MS +Kremlinology/MS +Kresge/M +Krieger/M +kriegspiel/M +krill/MS +Kringle/M +Krisha/M +Krishnah/M +Krishna/M +Kris/M +Krispin/M +Krissie/M +Krissy/M +Kristal/M +Krista/M +Kristan/M +Kristel/M +Kriste/M +Kristen/M +Kristian/M +Kristie/M +Kristien/M +Kristi/MN +Kristina/M +Kristine/M +Kristin/M +Kristofer/M +Kristoffer/M +Kristofor/M +Kristoforo/M +Kristo/MS +Kristopher/M +Kristy/M +Kristyn/M +Kr/M +Kroc/M +Kroger/M +króna/M +Kronecker/M +krone/RM +kronor +krónur +Kropotkin/M +Krueger/M +Kruger/M +Krugerrand/S +Krupp/M +Kruse/M +krypton/SM +Krystalle/M +Krystal/M +Krysta/M +Krystle/M +Krystyna/M +ks +K's +KS +k's/IE +kt +Kublai/M +Kubrick/M +kuchen/MS +kudos/M +kudzu/SM +Kuenning/M +Kuhn/M +Kuibyshev/M +Ku/M +Kumar/M +kumquat/SM +Kunming/M +Kuomintang/M +Kurdish/M +Kurdistan/SM +Kurd/SM +Kurosawa/M +Kurtis/M +Kurt/M +kurtosis/M +Kusch/M +Kuwaiti/SM +Kuwait/M +Kuznetsk/M +Kuznets/M +kvetch/DSG +kw +kW +Kwakiutl/M +Kwangchow's +Kwangju/M +Kwanzaa/S +kWh +KY +Kyla/M +kyle/M +Kyle/M +Kylen/M +Kylie/M +Kylila/M +Kylynn/M +Ky/MH +Kym/M +Kynthia/M +Kyoto/M +Kyrgyzstan +Kyrstin/M +Kyushu/M +L +LA +Laban/M +labeled/U +labeler/M +label/GAZRDS +labellings/A +label's +labial/YS +labia/M +labile +labiodental +labium/M +laboratory/MS +laboredness/M +labored/PMY +labored's/U +laborer/M +laboring/MY +laborings/U +laboriousness/MS +laborious/PY +labor/RDMJSZG +laborsaving +Labradorean/S +Labrador/SM +lab/SM +Lab/SM +laburnum/SM +labyrinthine +labyrinth/M +labyrinths +laced/U +Lacee/M +lace/MS +lacerate/NGVXDS +laceration/M +lacer/M +laces/U +lacewing/MS +Lacey/M +Lachesis/M +lachrymal/S +lachrymose +Lacie/M +lacing/M +lackadaisic +lackadaisical/Y +Lackawanna/M +lacker/M +lackey/SMDG +lack/GRDMS +lackluster/S +Lac/M +laconic +laconically +lacquerer/M +lacquer/ZGDRMS +lacrosse/MS +lac/SGMDR +lactate/MNGSDX +lactational/Y +lactation/M +lacteal +lactic +lactose/MS +lacunae +lacuna/M +Lacy/M +lacy/RT +ladder/GDMS +laddie/MS +laded/U +ladened +ladening +laden/U +lade/S +lading/M +ladle/SDGM +Ladoga/M +Ladonna/M +lad/XGSJMND +ladybird/SM +ladybug/MS +ladyfinger/SM +ladylike/U +ladylove/MS +Ladyship/MS +ladyship/SM +lady/SM +Lady/SM +Laetitia/M +laetrile/S +Lafayette/M +Lafitte/M +lager/DMG +laggard/MYSP +laggardness/M +lagged +lagging/MS +lagniappe/SM +lagoon/MS +Lagos/M +Lagrange/M +Lagrangian/M +Laguerre/M +Laguna/M +lag/ZSR +Lahore/M +laid/AI +Laidlaw/M +lain +Laina/M +Lainey/M +Laird/M +laird/MS +lair/GDMS +laissez +laity/SM +Laius/M +lake/DSRMG +Lakehurst/M +Lakeisha/M +laker/M +lakeside +Lakewood/M +Lakisha/M +Lakshmi/M +lallygagged +lallygagging +lallygag/S +Lalo/M +La/M +Lamaism/SM +Lamarck/M +Lamar/M +lamasery/MS +lama/SM +Lamaze +lambada/S +lambaste/SDG +lambda/SM +lambency/MS +lambent/Y +Lambert/M +lambkin/MS +Lamb/M +Lamborghini/M +lambskin/MS +lamb/SRDMG +lambswool +lamebrain/SM +lamed/M +lameness/MS +lamentableness/M +lamentable/P +lamentably +lamentation/SM +lament/DGSB +lamented/U +lame/SPY +la/MHLG +laminae +lamina/M +laminar +laminate/XNGSD +lamination/M +lam/MDRSTG +lammed +lammer +lamming +Lammond/M +Lamond/M +Lamont/M +L'Amour +lampblack/SM +lamplighter/M +lamplight/ZRMS +lampooner/M +lampoon/RDMGS +Lamport/M +lamppost/SM +lamprey/MS +lamp/SGMRD +lampshade/MS +LAN +Lanae/M +Lanai/M +lanai/SM +Lana/M +Lancashire/M +Lancaster/M +Lancelot/M +Lance/M +lancer/M +lance/SRDGMZ +lancet/MS +landau/MS +lander/I +landfall/SM +landfill/DSG +landforms +landholder/M +landhold/JGZR +landing/M +Landis/M +landlady/MS +landless +landlines +landlocked +landlord/MS +landlubber/SM +Land/M +landmark/GSMD +landmass/MS +Landon/M +landowner/MS +landownership/M +landowning/SM +Landry/M +Landsat +landscape/GMZSRD +landscaper/M +lands/I +landslide/MS +landslid/G +landslip +landsman/M +landsmen +land/SMRDJGZ +Landsteiner/M +landward/S +Landwehr/M +Lane/M +lane/SM +Lanette/M +Laney/M +Langeland/M +Lange/M +Langerhans/M +Langford/M +Langland/M +Langley/M +Lang/M +Langmuir/M +Langsdon/M +Langston/M +language/MS +languidness/MS +languid/PY +languisher/M +languishing/Y +languish/SRDG +languorous/Y +languor/SM +Lanie/M +Lani/M +Lanita/M +lankiness/SM +lankness/MS +lank/PTYR +lanky/PRT +Lanna/M +Lannie/M +Lanni/M +Lanny/M +lanolin/MS +Lansing/M +lantern/GSDM +lanthanide/M +lanthanum/MS +lanyard/MS +Lanzhou +Laocoon/M +Lao/SM +Laotian/MS +lapboard/MS +lapdog/S +lapel/MS +lapidary/MS +lapin/MS +Laplace/M +Lapland/ZMR +lapped +lappet/MS +lapping +Lapp/SM +lapsed/A +lapse/KSDMG +lapser/MA +lapses/A +lapsing/A +lap/SM +laps/SRDG +laptop/SM +lapwing/MS +Laraine/M +Lara/M +Laramie/M +larboard/MS +larcenist/S +larcenous +larceny/MS +larch/MS +larder/M +lard/MRDSGZ +Lardner/M +lardy/RT +Laredo/M +largehearted +largemouth +largeness/SM +large/SRTYP +largess/SM +largish +largo/S +lariat/MDGS +Lari/M +Larina/M +Larine/M +Larisa/M +Larissa/M +larker/M +lark/GRDMS +Lark/M +larkspur/MS +Larousse/M +Larry/M +Larsen/M +Lars/NM +Larson/M +larvae +larval +larva/M +laryngeal/YS +larynges +laryngitides +laryngitis/M +larynx/M +Laryssa/M +lasagna/S +lasagne's +Lascaux/M +lasciviousness/MS +lascivious/YP +lase +laser/M +lashed/U +lasher/M +lashing/M +lash/JGMSRD +Lassa/M +Lassen/M +Lassie/M +lassie/SM +lassitude/MS +lassoer/M +lasso/GRDMS +las/SRZG +lass/SM +laster/M +lastingness/M +lasting/PY +last/JGSYRD +Laszlo/M +Latasha/M +Latashia/M +latching/M +latchkey/SM +latch's +latch/UGSD +latecomer/SM +lated/A +late/KA +lately +latency/MS +lateness/MS +latent/YS +later/A +lateral/GDYS +lateralization +Lateran/M +latest/S +LaTeX/M +latex/MS +lathe/M +latherer/M +lather/RDMG +lathery +lathing/M +lath/MSRDGZ +Lathrop/M +laths +Latia/M +latices/M +Latina/SM +Latinate +Latino/S +Latin/RMS +latish +Latisha/M +latitude/SM +latitudinal/Y +latitudinarian/S +latitudinary +Lat/M +Latonya/M +Latoya/M +Latrena/M +Latrina/M +latrine/MS +Latrobe/M +lat/SDRT +latter/YM +latte/SR +lattice/SDMG +latticework/MS +latticing/M +Lattimer/M +Latvia/M +Latvian/S +laudably +laudanum/MS +laudatory +Lauderdale/M +lauder/M +Lauder/M +Laud/MR +laud/RDSBG +lauds/M +Laue/M +laughableness/M +laughable/P +laughably +laugh/BRDZGJ +laugher/M +laughing/MY +laughingstock/SM +laughs +laughter/MS +Laughton/M +Launce/M +launch/AGSD +launcher/MS +launching/S +launchpad/S +laundered/U +launderer/M +launderette/MS +launder/SDRZJG +laundress/MS +laundrette/S +laundromat/S +Laundromat/SM +laundryman/M +laundrymen +laundry/MS +laundrywoman/M +laundrywomen +Lauraine/M +Lauralee/M +Laural/M +laura/M +Laura/M +Laurasia/M +laureate/DSNG +laureateship/SM +Lauree/M +Laureen/M +Laurella/M +Laurel/M +laurel/SGMD +Laure/M +Laurena/M +Laurence/M +Laurene/M +Lauren/SM +Laurentian +Laurent/M +Lauretta/M +Laurette/M +Laurianne/M +Laurice/M +Laurie/M +Lauri/M +Lauritz/M +Lauryn/M +Lausanne/M +lavage/MS +lavaliere/MS +Laval/M +lava/SM +lavatory/MS +lave/GDS +Lavena/M +lavender/MDSG +Laverna/M +Laverne/M +Lavern/M +Lavina/M +Lavinia/M +Lavinie/M +lavishness/MS +lavish/SRDYPTG +Lavoisier/M +Lavonne/M +Lawanda/M +lawbreaker/SM +lawbreaking/MS +Lawford/M +lawfulness/SMU +lawful/PUY +lawgiver/MS +lawgiving/M +lawlessness/MS +lawless/PY +Law/M +lawmaker/MS +lawmaking/SM +lawman/M +lawmen +lawnmower/S +lawn/SM +Lawrence/M +Lawrenceville/M +lawrencium/SM +Lawry/M +law/SMDG +Lawson/M +lawsuit/MS +Lawton/M +lawyer/DYMGS +laxativeness/M +laxative/PSYM +laxer/A +laxes/A +laxity/SM +laxness/SM +lax/PTSRY +layabout/MS +Layamon/M +layaway/S +lay/CZGSR +layered/C +layer/GJDM +layering/M +layer's/IC +layette/SM +Layla/M +Lay/M +layman/M +laymen +Layne/M +Layney/M +layoff/MS +layout/SM +layover/SM +laypeople +layperson/S +lays/AI +Layton/M +layup/MS +laywoman/M +laywomen +Lazare/M +Lazar/M +Lazaro/M +Lazarus/M +laze/DSG +lazily +laziness/MS +lazuli/M +lazybones/M +lazy/PTSRDG +lb +LBJ/M +lbs +LC +LCD +LCM +LDC +leachate +Leach/M +leach/SDG +Leadbelly/M +leaded/U +leadenness/M +leaden/PGDY +leaderless +leader/M +leadership/MS +lead/SGZXJRDN +leadsman/M +leadsmen +leafage/MS +leaf/GSDM +leafhopper/M +leafiness/M +leafless +leaflet/SDMG +leafstalk/SM +leafy/PTR +leaguer/M +league/RSDMZG +Leah/M +leakage/SM +leaker/M +Leakey/M +leak/GSRDM +leakiness/MS +leaky/PRT +Lea/M +lea/MS +Leander/M +Leandra/M +leaner/M +leaning/M +Lean/M +Leanna/M +Leanne/M +leanness/MS +Leann/M +Leanora/M +Leanor/M +lean/YRDGTJSP +leaper/M +leapfrogged +leapfrogging +leapfrog/SM +leap/RDGZS +Lear/M +learnedly +learnedness/M +learned/UA +learner/M +learning/M +learns/UA +learn/SZGJRD +Leary/M +lease/ARSDG +leaseback/MS +leaseholder/M +leasehold/SRMZ +leaser/MA +lease's +leash's +leash/UGSD +leasing/M +leas/SRDGZ +least/S +leastwise +leatherette/S +leather/MDSG +leathern +leatherneck/SM +leathery +leaven/DMJGS +leavened/U +leavening/M +Leavenworth/M +leaver/M +leaves/M +leave/SRDJGZ +leaving/M +Lebanese +Lebanon/M +Lebbie/M +lebensraum +Lebesgue/M +Leblanc/M +lecher/DMGS +lecherousness/MS +lecherous/YP +lechery/MS +lecithin/SM +lectern/SM +lecturer/M +lecture/RSDZMG +lectureship/SM +led +Leda/M +Lederberg/M +ledger/DMG +ledge/SRMZ +LED/SM +Leeanne/M +Leeann/M +leech/MSDG +Leeds/M +leek/SM +Leelah/M +Leela/M +Leeland/M +Lee/M +lee/MZRS +Leena/M +leer/DG +leeriness/MS +leering/Y +leery/PTR +Leesa/M +Leese/M +Leeuwenhoek/M +Leeward/M +leeward/S +leeway/MS +leftism/SM +leftist/SM +leftmost +leftover/MS +Left/S +left/TRS +leftward/S +Lefty/M +lefty/SM +legacy/MS +legalese/MS +legalism/SM +legalistic +legality/MS +legalization/MS +legalize/DSG +legalized/U +legal/SY +legate/AXCNGSD +legatee/MS +legate's/C +legation/AMC +legato/SM +legendarily +legendary/S +Legendre/M +legend/SM +legerdemain/SM +Leger/SM +legged +legginess/MS +legging/MS +leggy/PRT +leghorn/SM +Leghorn/SM +legibility/MS +legible +legibly +legionary/S +legionnaire/SM +legion/SM +legislate/SDXVNG +legislation/M +legislative/SY +legislator/SM +legislature/MS +legitimacy/MS +legitimate/SDNGY +legitimation/M +legitimatize/SDG +legitimization/MS +legitimize/RSDG +legit/S +legless +legman/M +legmen +leg/MS +Lego/M +Legra/M +Legree/M +legroom/MS +legstraps +legume/SM +leguminous +legwork/SM +Lehigh/M +Lehman/M +Leia/M +Leibniz/M +Leicester/SM +Leiden/M +Leif/M +Leigha/M +Leigh/M +Leighton/M +Leilah/M +Leila/M +lei/MS +Leipzig/M +Leisha/M +leisureliness/MS +leisurely/P +leisure/SDYM +leisurewear +leitmotif/SM +leitmotiv/MS +Lek/M +Lelah/M +Lela/M +Leland/M +Lelia/M +Lemaitre/M +Lemar/M +Lemke/M +Lem/M +lemma/MS +lemme/GJ +Lemmie/M +lemming/M +Lemmy/M +lemonade/SM +lemon/GSDM +lemony +Lemuel/M +Lemuria/M +lemur/MS +Lena/M +Lenard/M +Lenci/M +lender/M +lend/SRGZ +Lenee/M +Lenette/M +lengthener/M +lengthen/GRD +lengthily +lengthiness/MS +length/MNYX +lengths +lengthwise +lengthy/TRP +lenience/S +leniency/MS +lenient/SY +Leningrad/M +Leninism/M +Leninist +Lenin/M +lenitive/S +Lenka/M +Len/M +Le/NM +Lenna/M +Lennard/M +Lennie/M +Lennon/M +Lenny/M +Lenoir/M +Leno/M +Lenora/M +Lenore/M +lens/SRDMJGZ +lent/A +lenticular +lentil/SM +lento/S +Lent/SMN +Leodora/M +Leoine/M +Leola/M +Leoline/M +Leo/MS +Leona/M +Leonanie/M +Leonard/M +Leonardo/M +Leoncavallo/M +Leonelle/M +Leonel/M +Leone/M +Leonerd/M +Leonhard/M +Leonidas/M +Leonid/M +Leonie/M +leonine +Leon/M +Leonora/M +Leonore/M +Leonor/M +Leontine/M +Leontyne/M +leopardess/SM +leopard/MS +leopardskin +Leopold/M +Leopoldo/M +Leopoldville/M +Leora/M +leotard/MS +leper/SM +Lepidus/M +Lepke/M +leprechaun/SM +leprosy/MS +leprous +lepta +lepton/SM +Lepus/M +Lerner/M +Leroi/M +Leroy/M +Lesa/M +lesbianism/MS +lesbian/MS +Leshia/M +lesion/DMSG +Lesley/M +Leslie/M +Lesli/M +Lesly/M +Lesotho/M +lessee/MS +lessen/GDS +Lesseps/M +lesser +lesses +Lessie/M +lessing +lesson/DMSG +lessor/MS +less/U +Lester/M +lest/R +Les/Y +Lesya/M +Leta/M +letdown/SM +lethality/M +lethal/YS +Letha/M +lethargic +lethargically +lethargy/MS +Lethe/M +Lethia/M +Leticia/M +Letisha/M +let/ISM +Letitia/M +Letizia/M +Letta/M +letterbox/S +lettered/U +letterer/M +letterhead/SM +lettering/M +letter/JSZGRDM +letterman/M +Letterman/M +lettermen +letterpress/MS +Lettie/M +Letti/M +letting/S +lettuce/SM +Letty/M +letup/MS +leukemia/SM +leukemic/S +leukocyte/MS +Leupold/M +Levant/M +leveeing +levee/SDM +leveled/U +leveler/M +levelheadedness/S +levelheaded/P +leveling/U +levelness/SM +level/STZGRDYP +leverage/MGDS +lever/SDMG +Levesque/M +Levey/M +Leviathan +leviathan/MS +levier/M +Levi/MS +Levine/M +Levin/M +levitate/XNGDS +levitation/M +Leviticus/M +Levitt/M +levity/MS +Lev/M +Levon/M +Levy/M +levy/SRDZG +lewdness/MS +lewd/PYRT +Lewellyn/M +Lewes +Lewie/M +Lewinsky/M +lewis/M +Lewis/M +Lewiss +Lew/M +lex +lexeme/MS +lexical/Y +lexicographer/MS +lexicographic +lexicographical/Y +lexicography/SM +lexicon/SM +Lexie/M +Lexi/MS +Lexine/M +Lexington/M +Lexus/M +Lexy/M +Leyden/M +Leyla/M +Lezley/M +Lezlie/M +lg +Lhasa/SM +Lhotse/M +liability/SAM +liable/AP +liaise/GSD +liaison/SM +Lia/M +Liam/M +Liana/M +Liane/M +Lian/M +Lianna/M +Lianne/M +liar/MS +libation/SM +libbed +Libbey/M +Libbie/M +Libbi/M +libbing +Libby/M +libeler/M +libel/GMRDSZ +libelous/Y +Liberace/M +liberalism/MS +liberality/MS +liberalization/SM +liberalized/U +liberalize/GZSRD +liberalizer/M +liberalness/MS +liberal/YSP +liberate/NGDSCX +liberationists +liberation/MC +liberator/SCM +Liberia/M +Liberian/S +libertarianism/M +libertarian/MS +libertine/MS +liberty/MS +libidinal +libidinousness/M +libidinous/PY +libido/MS +Lib/M +lib/MS +librarian/MS +library/MS +Libra/SM +libretoes +libretos +librettist/MS +libretto/MS +Libreville/M +Librium/M +Libya/M +Libyan/S +lice/M +licensed/AU +licensee/SM +license/MGBRSD +licenser/M +licenses/A +licensing/A +licensor/M +licentiate/MS +licentiousness/MS +licentious/PY +Licha/M +lichee's +lichen/DMGS +Lichtenstein/M +Lichter/M +licit/Y +licked/U +lickerish +licker/M +lick/GRDSJ +licking/M +licorice/SM +Lida/M +lidded +lidding +Lidia/M +lidless +lid/MS +lido/MS +Lieberman/M +Liebfraumilch/M +Liechtenstein/RMZ +lied/MR +lie/DRS +Lief/M +liefs/A +lief/TSR +Liege/M +liege/SR +Lie/M +lien/SM +lier/IMA +lies/A +Liesa/M +lieu/SM +lieut +lieutenancy/MS +lieutenant/SM +Lieut/M +lifeblood/SM +lifeboat/SM +lifebuoy/S +lifeforms +lifeguard/MDSG +lifelessness/SM +lifeless/PY +lifelikeness/M +lifelike/P +lifeline/SM +lifelong +life/MZR +lifer/M +lifesaver/SM +lifesaving/S +lifespan/S +lifestyle/S +lifetaking +lifetime/MS +lifework/MS +LIFO +lifter/M +lift/GZMRDS +liftoff/MS +ligament/MS +ligand/MS +ligate/XSDNG +ligation/M +ligature/DSGM +light/ADSCG +lighted/U +lightener/M +lightening/M +lighten/ZGDRS +lighter/CM +lightered +lightering +lighters +lightest +lightface/SDM +lightheaded +lightheartedness/MS +lighthearted/PY +lighthouse/MS +lighting/MS +lightly +lightness/MS +lightning/SMD +lightproof +light's +lightship/SM +lightweight/S +ligneous +lignite/MS +lignum +likability/MS +likableness/MS +likable/P +likeability's +liked/E +likelihood/MSU +likely/UPRT +likeness/MSU +liken/GSD +liker/E +liker's +likes/E +likest +like/USPBY +likewise +liking/SM +lilac/MS +Lilah/M +Lila/SM +Lilia/MS +Liliana/M +Liliane/M +Lilian/M +Lilith/M +Liliuokalani/M +Lilla/M +Lille/M +Lillian/M +Lillie/M +Lilli/MS +lilliputian/S +Lilliputian/SM +Lilliput/M +Lilllie/M +Lilly/M +Lil/MY +Lilongwe/M +lilting/YP +lilt/MDSG +Lilyan/M +Lily/M +lily/MSD +Lima/M +Limbaugh/M +limbered/U +limberness/SM +limber/RDYTGP +limbers/U +limbic +limbless +Limbo +limbo/GDMS +limb/SGZRDM +Limburger/SM +limeade/SM +lime/DSMG +limekiln/M +limelight/DMGS +limerick/SM +limestone/SM +limitability +limitably +limitation/MCS +limit/CSZGRD +limitedly/U +limitedness/M +limited/PSY +limiter/M +limiting/S +limitlessness/SM +limitless/PY +limit's +limn/GSD +Limoges/M +limo/S +limousine/SM +limper/M +limpet/SM +limpidity/MS +limpidness/SM +limpid/YP +limpness/MS +Limpopo/M +limp/SGTPYRD +Li/MY +limy/TR +linage/MS +Lina/M +linchpin/MS +Linc/M +Lincoln/SM +Linda/M +Lindbergh/M +Lindberg/M +linden/MS +Lindholm/M +Lindie/M +Lindi/M +Lind/M +Lindon/M +Lindquist/M +Lindsay/M +Lindsey/M +Lindstrom/M +Lindsy/M +Lindy/M +line/AGDS +lineage/SM +lineal/Y +Linea/M +lineament/MS +linearity/MS +linearize/SDGNB +linear/Y +linebacker/SM +lined/U +linefeed +Linell/M +lineman/M +linemen +linen/SM +liner/SM +line's +linesman/M +linesmen +Linet/M +Linette/M +lineup/S +lingerer/M +lingerie/SM +lingering/Y +linger/ZGJRD +lingoes +lingo/M +lingual/SY +lingua/M +linguine +linguini's +linguistically +linguistic/S +linguistics/M +linguist/SM +ling/ZR +liniment/MS +lining/SM +linkable +linkage/SM +linked/A +linker/S +linking/S +Link/M +link's +linkup/S +link/USGD +Lin/M +Linnaeus/M +Linnea/M +Linnell/M +Linnet/M +linnet/SM +Linnie/M +Linn/M +Linoel/M +linoleum/SM +lino/M +Linotype/M +linseed/SM +lintel/SM +linter/M +Linton/M +lint/SMR +linty/RST +Linus/M +Linux/M +Linwood/M +Linzy/M +Lionello/M +Lionel/M +lioness/SM +lionhearted +lionization/SM +lionizer/M +lionize/ZRSDG +Lion/M +lion/MS +lipase/M +lipid/MS +lip/MS +liposuction/S +lipped +lipper +Lippi/M +lipping +Lippmann/M +lippy/TR +lipread/GSRJ +Lipschitz/M +Lipscomb/M +lipstick/MDSG +Lipton/M +liq +liquefaction/SM +liquefier/M +liquefy/DRSGZ +liqueur/DMSG +liquidate/GNXSD +liquidation/M +liquidator/SM +liquidity/SM +liquidizer/M +liquidize/ZGSRD +liquidness/M +liquid/SPMY +liquorice/SM +liquorish +liquor/SDMG +lira/M +Lira/M +lire +Lisabeth/M +Lisa/M +Lisbeth/M +Lisbon/M +Lise/M +Lisetta/M +Lisette/M +Lisha/M +Lishe/M +Lisle/M +lisle/SM +lisper/M +lisp/MRDGZS +Lissajous/M +Lissa/M +Lissie/M +Lissi/M +Liss/M +lissomeness/M +lissome/P +lissomness/M +Lissy/M +listed/U +listener/M +listen/ZGRD +Listerine/M +lister/M +Lister/M +listing/M +list/JMRDNGZXS +listlessness/SM +listless/PY +Liston/M +Liszt/M +Lita/M +litany/MS +litchi/SM +literacy/MS +literalism/M +literalistic +literalness/MS +literal/PYS +literariness/SM +literary/P +literate/YNSP +literati +literation/M +literature/SM +liter/M +lite/S +litheness/SM +lithe/PRTY +lithesome +lithium/SM +lithograph/DRMGZ +lithographer/M +lithographic +lithographically +lithographs +lithography/MS +lithology/M +lithosphere/MS +lithospheric +Lithuania/M +Lithuanian/S +litigant/MS +litigate/NGXDS +litigation/M +litigator/SM +litigiousness/MS +litigious/PY +litmus/SM +litotes/M +lit/RZS +littérateur/S +litterbug/SM +litter/SZGRDM +Little/M +littleneck/M +littleness/SM +little/RSPT +Littleton/M +Litton/M +littoral/S +liturgical/Y +liturgic/S +liturgics/M +liturgist/MS +liturgy/SM +Liuka/M +livability/MS +livableness/M +livable/U +livably +Liva/M +lived/A +livelihood/SM +liveliness/SM +livelong/S +lively/RTP +liveness/M +liven/SDG +liver/CSGD +liveried +liverish +Livermore/M +Liverpool/M +Liverpudlian/MS +liver's +liverwort/SM +liverwurst/SM +livery/CMS +liveryman/MC +liverymen/C +lives/A +lives's +livestock/SM +live/YHZTGJDSRPB +Livia/M +lividness/M +livid/YP +livingness/M +Livingstone/M +Livingston/M +living/YP +Liv/M +Livonia/M +Livvie/M +Livvy/M +Livvyy/M +Livy/M +Lizabeth/M +Liza/M +lizard/MS +Lizbeth/M +Lizette/M +Liz/M +Lizzie/M +Lizzy/M +l/JGVXT +Ljubljana/M +LL +llama/SM +llano/SM +LLB +ll/C +LLD +Llewellyn/M +Lloyd/M +Llywellyn/M +LNG +lo +loadable +loaded/A +loader/MU +loading/MS +load's/A +loads/A +loadstar's +loadstone's +load/SURDZG +loafer/M +Loafer/S +loaf/SRDMGZ +loam/SMDG +loamy/RT +loaner/M +loaning/M +loan/SGZRDMB +loansharking/S +loanword/S +loathe +loather/M +loathing/M +loath/JPSRDYZG +loathness/M +loathsomeness/MS +loathsome/PY +loaves/M +Lobachevsky/M +lobar +lobbed +lobber/MS +lobbing +lobby/GSDM +lobbyist/MS +lobe/SM +lob/MDSG +lobotomist +lobotomize/GDS +lobotomy/MS +lobster/MDGS +lobularity +lobular/Y +lobule/SM +locale/MS +localisms +locality/MS +localization/MS +localized/U +localizer/M +localizes/U +localize/ZGDRS +local/SGDY +locatable +locate/AXESDGN +locater/M +locational/Y +location/EMA +locative/S +locator's +Lochinvar/M +loch/M +lochs +loci/M +lockable +Lockean/M +locked/A +Locke/M +locker/SM +locket/SM +Lockhart/M +Lockheed/M +Lockian/M +locking/S +lockjaw/SM +Lock/M +locknut/M +lockout/MS +lock's +locksmithing/M +locksmith/MG +locksmiths +lockstep/S +lock/UGSD +lockup/MS +Lockwood/M +locomotion/SM +locomotive/YMS +locomotor +locomotory +loco/SDMG +locoweed/MS +locus/M +locust/SM +locution/MS +lode/SM +lodestar/MS +lodestone/MS +lodged/E +lodge/GMZSRDJ +Lodge/M +lodgepole +lodger/M +lodges/E +lodging/M +lodgment/M +Lodovico/M +Lodowick/M +Lodz +Loeb/M +Loella/M +Loewe/M +Loewi/M +lofter/M +loftily +loftiness/SM +loft/SGMRD +lofty/PTR +loganberry/SM +Logan/M +logarithmic +logarithmically +logarithm/MS +logbook/MS +loge/SMNX +logged/U +loggerhead/SM +logger/SM +loggia/SM +logging/MS +logicality/MS +logicalness/M +logical/SPY +logician/SM +logic/SM +login/S +logion/M +logistical/Y +logistic/MS +logjam/SM +LOGO +logo/SM +logotype/MS +logout +logrolling/SM +log's/K +log/SM +logy/RT +Lohengrin/M +loincloth/M +loincloths +loin/SM +Loire/M +Loise/M +Lois/M +loiterer/M +loiter/RDJSZG +Loki/M +Lola/M +Loleta/M +Lolita/M +loller/M +lollipop/MS +loll/RDGS +Lolly/M +lolly/SM +Lombardi/M +Lombard/M +Lombardy/M +Lomb/M +Lome +Lona/M +Londonderry/M +Londoner/M +London/RMZ +Lonee/M +loneliness/SM +lonely/TRP +loneness/M +lone/PYZR +loner/M +lonesomeness/MS +lonesome/PSY +longboat/MS +longbow/SM +longed/K +longeing +longer/K +longevity/MS +Longfellow/M +longhair/SM +longhand/SM +longhorn/SM +longing/MY +longish +longitude/MS +longitudinal/Y +long/JGTYRDPS +Long/M +longness/M +longshoreman/M +longshoremen +longsighted +longs/K +longstanding +Longstreet/M +longsword +longterm +longtime +Longueuil/M +longueur/SM +longways +longword/SM +Loni/M +Lon/M +Lonna/M +Lonnard/M +Lonnie/M +Lonni/M +Lonny/M +loofah/M +loofahs +lookahead +lookalike/S +looker/M +look/GZRDS +lookout/MS +lookup/SM +looming/M +Loomis/M +loom/MDGS +loon/MS +loony/SRT +looper/M +loophole/MGSD +loop/MRDGS +loopy/TR +loosed/U +looseleaf +loosener/M +looseness/MS +loosen/UDGS +loose/SRDPGTY +looses/U +loosing/M +looter/M +loot/MRDGZS +loper/M +lope/S +Lopez/M +lopped +lopper/MS +lopping +lop/SDRG +lopsidedness/SM +lopsided/YP +loquaciousness/MS +loquacious/YP +loquacity/SM +Loraine/M +Lorain/M +Loralee/M +Loralie/M +Loralyn/M +Lora/M +Lorant/M +lording/M +lordliness/SM +lordly/PTR +Lord/MS +lord/MYDGS +lordship/SM +Lordship/SM +Loree/M +Loreen/M +Lorelei/M +Lorelle/M +lore/MS +Lorena/M +Lorene/M +Loren/SM +Lorentzian/M +Lorentz/M +Lorenza/M +Lorenz/M +Lorenzo/M +Loretta/M +Lorette/M +lorgnette/SM +Loria/M +Lorianna/M +Lorianne/M +Lorie/M +Lorilee/M +Lorilyn/M +Lori/M +Lorinda/M +Lorine/M +Lorin/M +loris/SM +Lorita/M +lorn +Lorna/M +Lorne/M +Lorraine/M +Lorrayne/M +Lorre/M +Lorrie/M +Lorri/M +Lorrin/M +lorryload/S +Lorry/M +lorry/SM +Lory/M +Los +loser/M +lose/ZGJBSR +lossage +lossless +loss/SM +lossy/RT +lost/P +Lothaire/M +Lothario/MS +lotion/MS +Lot/M +lot/MS +Lotta/M +lotted +Lotte/M +lotter +lottery/MS +Lottie/M +Lotti/M +lotting +Lott/M +lotto/MS +Lotty/M +lotus/SM +louden/DG +loudhailer/S +loudly/RT +loudmouth/DM +loudmouths +loudness/MS +loudspeaker/SM +loudspeaking +loud/YRNPT +Louella/M +Louie/M +Louisa/M +Louise/M +Louisette/M +Louisiana/M +Louisianan/S +Louisianian/S +Louis/M +Louisville/M +Lou/M +lounger/M +lounge/SRDZG +Lourdes/M +lour/GSD +louse/CSDG +louse's +lousewort/M +lousily +lousiness/MS +lousy/PRT +loutishness/M +loutish/YP +Loutitia/M +lout/SGMD +louver/DMS +L'Ouverture +Louvre/M +lovableness/MS +lovable/U +lovably +lovebird/SM +lovechild +Lovecraft/M +love/DSRMYZGJB +loved/U +Lovejoy/M +Lovelace/M +Loveland/M +lovelessness/M +loveless/YP +lovelies +lovelinesses +loveliness/UM +Lovell/M +lovelornness/M +lovelorn/P +lovely/URPT +Love/M +lovemaking/SM +lover/YMG +lovesick +lovestruck +lovingly +lovingness/M +loving/U +lowborn +lowboy/SM +lowbrow/MS +lowdown/S +Lowell/M +Lowe/M +lowercase/GSD +lower/DG +lowermost +Lowery/M +lowish +lowland/RMZS +Lowlands/M +lowlife/SM +lowlight/MS +lowliness/MS +lowly/PTR +lowness/MS +low/PDRYSZTG +Lowrance/M +lox/MDSG +loyaler +loyalest +loyal/EY +loyalism/SM +loyalist/SM +loyalty/EMS +Loyang/M +Loydie/M +Loyd/M +Loy/M +Loyola/M +lozenge/SDM +LP +LPG +LPN/S +Lr +ls +l's +L's +LSD +ltd +Ltd/M +Lt/M +Luanda/M +Luann/M +luau/MS +lubber/YMS +Lubbock/M +lube/DSMG +lubricant/SM +lubricate/VNGSDX +lubrication/M +lubricator/MS +lubricious/Y +lubricity/SM +Lubumbashi/M +Lucais/M +Luca/MS +Luce/M +lucent/Y +Lucerne/M +Lucho/M +Lucia/MS +Luciana/M +Lucian/M +Luciano/M +lucidity/MS +lucidness/MS +lucid/YP +Lucie/M +Lucien/M +Lucienne/M +Lucifer/M +Lucila/M +Lucile/M +Lucilia/M +Lucille/M +Luci/MN +Lucina/M +Lucinda/M +Lucine/M +Lucio/M +Lucita/M +Lucite/MS +Lucius/M +luck/GSDM +luckier/U +luckily/U +luckiness/UMS +luckless +Lucknow/M +Lucky/M +lucky/RSPT +lucrativeness/SM +lucrative/YP +lucre/MS +Lucretia/M +Lucretius/M +lucubrate/GNSDX +lucubration/M +Lucy/M +Luddite/SM +Ludhiana/M +ludicrousness/SM +ludicrous/PY +Ludlow/M +Ludmilla/M +ludo/M +Ludovico/M +Ludovika/M +Ludvig/M +Ludwig/M +Luella/M +Luelle/M +luff/GSDM +Lufthansa/M +Luftwaffe/M +luge/MC +Luger/M +luggage/SM +lugged +lugger/SM +lugging +Lugosi/M +lug/RS +lugsail/SM +lugubriousness/MS +lugubrious/YP +Luigi/M +Luisa/M +Luise/M +Luis/M +Lukas/M +Luke/M +lukewarmness/SM +lukewarm/PY +Lula/M +Lulita/M +lullaby/GMSD +lull/SDG +lulu/M +Lulu/M +Lu/M +lumbago/SM +lumbar/S +lumberer/M +lumbering/M +lumberjack/MS +lumberman/M +lumbermen +lumber/RDMGZSJ +lumberyard/MS +lumen/M +Lumière/M +luminance/M +luminary/MS +luminescence/SM +luminescent +luminosity/MS +luminousness/M +luminous/YP +lummox/MS +lumper/M +lumpiness/MS +lumpishness/M +lumpish/YP +lump/SGMRDN +lumpy/TPR +lunacy/MS +Luna/M +lunar/S +lunary +lunate/YND +lunatic/S +lunation/M +luncheonette/SM +luncheon/SMDG +luncher/M +lunch/GMRSD +lunchpack +lunchroom/MS +lunchtime/MS +Lundberg/M +Lund/M +Lundquist/M +lune/M +lunge/MS +lunger/M +lungfish/SM +lungful +lung/SGRDM +lunkhead/SM +Lupe/M +lupine/SM +Lupus/M +lupus/SM +Lura/M +lurcher/M +lurch/RSDG +lure/DSRG +lurer/M +Lurette/M +lurex +Luria/M +luridness/SM +lurid/YP +lurker/M +lurk/GZSRD +Lurleen/M +Lurlene/M +Lurline/M +Lusaka/M +Lusa/M +lusciousness/MS +luscious/PY +lushness/MS +lush/YSRDGTP +Lusitania/M +luster/GDM +lustering/M +lusterless +lustfulness/M +lustful/PY +lustily +lustiness/MS +lust/MRDGZS +lustrousness/M +lustrous/PY +lusty/PRT +lutanist/MS +lute/DSMG +lutenist/MS +Lutero/M +lutetium/MS +Lutheranism/MS +Lutheran/SM +Luther/M +luting/M +Lutz +Luxembourgian +Luxembourg/RMZ +Luxemburg's +luxe/MS +luxuriance/MS +luxuriant/Y +luxuriate/GNSDX +luxuriation/M +luxuriousness/SM +luxurious/PY +luxury/MS +Luz/M +Luzon/M +L'vov +Lyallpur/M +lyceum/MS +lychee's +lycopodium/M +Lycra/S +Lycurgus/M +Lyda/M +Lydia/M +Lydian/S +Lydie/M +Lydon/M +lye/JSMG +Lyell/M +lying/Y +Lyle/M +Lyly/M +Lyman/M +Lyme/M +lymphatic/S +lymph/M +lymphocyte/SM +lymphoid +lymphoma/MS +lymphs +Ly/MY +Lynchburg/M +lyncher/M +lynching/M +Lynch/M +lynch/ZGRSDJ +Lynda/M +Lyndell/M +Lyndel/M +Lynde/M +Lyndon/M +Lyndsay/M +Lyndsey/M +Lyndsie/M +Lyndy/M +Lynea/M +Lynelle/M +Lynette/M +Lynett/M +Lyn/M +Lynna/M +Lynnea/M +Lynnelle/M +Lynnell/M +Lynne/M +Lynnet/M +Lynnette/M +Lynnett/M +Lynn/M +Lynsey/M +lynx/MS +Lyon/SM +Lyra/M +lyrebird/MS +lyre/SM +lyricalness/M +lyrical/YP +lyricism/SM +lyricist/SM +lyric/S +Lysenko/M +lysine/M +Lysistrata/M +Lysol/M +Lyssa/M +LyX/M +MA +Maalox/M +ma'am +Mabelle/M +Mabel/M +Mable/M +Mab/M +macabre/Y +macadamize/SDG +macadam/SM +Macao/M +macaque/SM +macaroni/SM +macaroon/MS +Macarthur/M +MacArthur/M +Macaulay/M +macaw/SM +Macbeth/M +Maccabees/M +Maccabeus/M +Macdonald/M +MacDonald/M +MacDraw/M +Macedonia/M +Macedonian/S +Macedon/M +mace/MS +Mace/MS +macerate/DSXNG +maceration/M +macer/M +Macgregor/M +MacGregor/M +machete/SM +Machiavellian/S +Machiavelli/M +machinate/SDXNG +machination/M +machinelike +machine/MGSDB +machinery/SM +machinist/MS +machismo/SM +Mach/M +macho/S +Machs +Macias/M +Macintosh/M +MacIntosh/M +macintosh's +Mackenzie/M +MacKenzie/M +mackerel/SM +Mackinac/M +Mackinaw +mackinaw/SM +mackintosh/SM +mack/M +Mack/M +MacLeish/M +Macmillan/M +MacMillan/M +Macon/SM +MacPaint/M +macramé/S +macrobiotic/S +macrobiotics/M +macrocosm/MS +macrodynamic +macroeconomic/S +macroeconomics/M +macromolecular +macromolecule/SM +macron/MS +macrophage/SM +macroscopic +macroscopically +macrosimulation +macro/SM +macrosocioeconomic +Mac/SGMD +mac/SGMDR +Macy/M +Madagascan/SM +Madagascar/M +Madalena/M +Madalyn/M +Mada/M +madame/M +Madame/MS +madam/SM +madcap/S +Maddalena/M +madded +madden/GSD +maddening/Y +Madden/M +madder/MS +maddest +Maddie/M +Maddi/M +madding +Maddox/M +Maddy/M +made/AU +Madeira/SM +Madelaine/M +Madeleine/M +Madelena/M +Madelene/M +Madelina/M +Madeline/M +Madelin/M +Madella/M +Madelle/M +Madel/M +Madelon/M +Madelyn/M +mademoiselle/MS +Madge/M +madhouse/SM +Madhya/M +Madison/M +Madlen/M +Madlin/M +madman/M +madmen +madness/SM +Madonna/MS +mad/PSY +Madras +madras/SM +Madrid/M +madrigal/MSG +Madsen/M +Madurai/M +madwoman/M +madwomen +Mady/M +Maegan/M +Maelstrom/M +maelstrom/SM +Mae/M +maestro/MS +Maeterlinck/M +Mafia/MS +mafia/S +mafiosi +mafioso/M +Mafioso/S +MAG +magazine/DSMG +Magdaia/M +Magdalena/M +Magdalene/M +Magdalen/M +Magda/M +Magellanic +Magellan/M +magenta/MS +magged +Maggee/M +Maggie/M +Maggi/M +magging +maggot/MS +maggoty/RT +Maggy/M +magi +magical/Y +magician/MS +magicked +magicking +magic/SM +Magill/M +Magi/M +Maginot/M +magisterial/Y +magistracy/MS +magistrate/MS +Mag/M +magma/SM +magnanimity/SM +magnanimosity +magnanimous/PY +magnate/SM +magnesia/MS +magnesite/M +magnesium/SM +magnetically +magnetic/S +magnetics/M +magnetism/SM +magnetite/SM +magnetizable +magnetization/ASCM +magnetize/CGDS +magnetized/U +magnetodynamics +magnetohydrodynamical +magnetohydrodynamics/M +magnetometer/MS +magneto/MS +magnetosphere/M +magnetron/M +magnet/SM +magnification/M +magnificence/SM +magnificent/Y +magnified/U +magnify/DRSGNXZ +magniloquence/MS +magniloquent +Magnitogorsk/M +magnitude/SM +magnolia/SM +Magnum +magnum/SM +Magnuson/M +Magog/M +Magoo/M +magpie/SM +Magritte/M +Magruder/M +mag/S +Magsaysay/M +Maguire/SM +Magus/M +Magyar/MS +Mahabharata +Mahala/M +Mahalia/M +maharajah/M +maharajahs +maharanee's +maharani/MS +Maharashtra/M +maharishi/SM +mahatma/SM +Mahavira/M +Mahayana/M +Mahayanist +Mahdi/M +Mahfouz/M +Mahican/SM +mahjong's +Mahler/M +Mahmoud/M +Mahmud/M +mahogany/MS +Mahomet's +mahout/SM +Maia/M +Maible/M +maidenhair/MS +maidenhead/SM +maidenhood/SM +maidenly/P +maiden/YM +maidservant/MS +maid/SMNX +maier +Maier/M +Maiga/M +Maighdiln/M +Maigret/M +mailbag/MS +mailbox/MS +mail/BSJGZMRD +mailer/M +Mailer/M +Maillol/M +maillot/SM +mailman/M +mailmen +Maiman/M +maimedness/M +maimed/P +maimer/M +Maimonides/M +Mai/MR +maim/SGZRD +mainbrace/M +Maine/MZR +Mainer/M +mainframe/MS +mainlander/M +mainland/SRMZ +mainliner/M +mainline/RSDZG +mainly +mainmast/SM +main/SA +mainsail/SM +mains/M +mainspring/SM +mainstay/MS +mainstream/DRMSG +maintainability +maintainable/U +maintain/BRDZGS +maintained/U +maintainer/M +maintenance/SM +maintop/SM +maiolica's +Maire/M +Mair/M +Maisey/M +Maisie/M +maisonette/MS +Maison/M +Maitilde/M +maize/MS +Maj +Maje/M +majestic +majestically +majesty/MS +Majesty/MS +majolica/SM +Majorca/M +major/DMGS +majordomo/S +majorette/SM +majority/SM +Major/M +Majuro/M +makable +Makarios/M +makefile/S +makeover/S +Maker/M +maker/SM +makeshift/S +make/UGSA +makeup/MS +making/SM +Malabar/M +Malabo/M +Malacca/M +Malachi/M +malachite/SM +maladapt/DV +maladjust/DLV +maladjustment/MS +maladministration +maladroitness/MS +maladroit/YP +malady/MS +Malagasy/M +malaise/SM +Mala/M +Malamud/M +malamute/SM +Malanie/M +malaprop +malapropism/SM +Malaprop/M +malarial +malaria/MS +malarious +malarkey/SM +malathion/S +Malawian/S +Malawi/M +Malayalam/M +Malaya/M +Malayan/MS +Malaysia/M +Malaysian/S +Malay/SM +Malchy/M +Malcolm/M +malcontentedness/M +malcontented/PY +malcontent/SMD +Maldive/SM +Maldivian/S +Maldonado/M +maledict +malediction/MS +malefaction/MS +malefactor/MS +malefic +maleficence/MS +maleficent +Male/M +Malena/M +maleness/MS +male/PSM +malevolence/S +malevolencies +malevolent/Y +malfeasance/SM +malfeasant +malformation/MS +malformed +malfunction/SDG +Malia/M +Malian/S +Malibu/M +malice/MGSD +maliciousness/MS +malicious/YU +malignancy/SM +malignant/YS +malign/GSRDYZ +malignity/MS +Mali/M +Malina/M +Malinda/M +Malinde/M +malingerer/M +malinger/GZRDS +Malinowski/M +Malissa/M +Malissia/M +mallard/SM +Mallarmé/M +malleability/SM +malleableness/M +malleable/P +mallet/MS +Mallissa/M +Mallorie/M +Mallory/M +mallow/MS +mall/SGMD +Mal/M +malnourished +malnutrition/SM +malocclusion/MS +malodorous +Malone/M +Malorie/M +Malory/M +malposed +malpractice/SM +Malraux/M +Malta/M +malted/S +Maltese +Malthusian/S +Malthus/M +malting/M +maltose/SM +maltreat/GDSL +maltreatment/S +malt/SGMD +malty/RT +Malva/M +Malvina/M +Malvin/M +Malynda/M +mama/SM +mamba/SM +mambo/GSDM +Mame/M +Mamet/M +ma/MH +Mamie/M +mammalian/SM +mammal/SM +mammary +mamma's +mammogram/S +mammography/S +Mammon's +mammon/SM +mammoth/M +mammoths +mammy/SM +Mamore/M +manacle/SDMG +manageability/S +manageableness +manageable/U +managed/U +management/SM +manageress/M +managerial/Y +manager/M +managership/M +manage/ZLGRSD +Managua/M +Manama/M +mañana/M +mananas +Manasseh/M +manatee/SM +Manaus's +Manchester/M +Manchu/MS +Manchuria/M +Manchurian/S +Mancini/M +manciple/M +Mancunian/MS +mandala/SM +Mandalay/M +Manda/M +mandamus/GMSD +Mandarin +mandarin/MS +mandate/SDMG +mandatory/S +Mandela +Mandelbrot/M +Mandel/M +mandible/MS +mandibular +Mandie/M +Mandi/M +Mandingo/M +mandolin/MS +mandrake/MS +mandrel/SM +mandrill/SM +Mandy/M +manège/GSD +mane/MDS +Manet/M +maneuverability/MS +maneuverer/M +maneuver/MRDSGB +Manfred/M +manful/Y +manganese/MS +mange/GMSRDZ +manger/M +manginess/S +mangler/M +mangle/RSDG +mangoes +mango/M +mangrove/MS +mangy/PRT +manhandle/GSD +Manhattan/SM +manhole/MS +manhood/MS +manhunt/SM +maniacal/Y +maniac/SM +mania/SM +manically +Manichean/M +manic/S +manicure/MGSD +manicurist/SM +manifestation/SM +manifesto/GSDM +manifest/YDPGS +manifolder/M +manifold/GPYRDMS +manifoldness/M +manikin/MS +Manila/MS +manila/S +manilla's +Mani/M +manioc/SM +manipulability +manipulable +manipulate/SDXBVGN +manipulative/PM +manipulator/MS +manipulatory +Manitoba/M +Manitoulin/M +Manitowoc/M +mankind/M +Mankowski/M +Manley/M +manlike +manliness/SM +manliness's/U +manly/URPT +manna/MS +manned/U +mannequin/MS +mannered/U +mannerism/SM +mannerist/M +mannerliness/MU +mannerly/UP +manner/SDYM +Mann/GM +Mannheim/M +Mannie/M +mannikin's +Manning/M +manning/U +mannishness/SM +mannish/YP +Manny/M +Manolo/M +Mano/M +manometer/SM +Manon/M +manorial +manor/MS +manpower/SM +manqué/M +man's +mansard/SM +manservant/M +manse/XNM +Mansfield/M +mansion/M +manslaughter/SM +Man/SM +Manson/M +mans/S +manta/MS +Mantegna/M +mantelpiece/MS +mantel/SM +mantes +mantilla/MS +mantissa/SM +mantis/SM +mantle/ESDG +Mantle/M +mantle's +mantling/M +mantra/MS +mantrap/SM +manual/SMY +Manuela/M +Manuel/M +manufacture/JZGDSR +manufacturer/M +manumission/MS +manumit/S +manumitted +manumitting +manure/RSDMZG +manuscript/MS +man/USY +Manville/M +Manx +many +Manya/M +Maoism/MS +Maoist/S +Mao/M +Maori/SM +Maplecrest/M +maple/MS +mapmaker/S +mappable +mapped/UA +mapper/S +mapping/MS +Mapplethorpe/M +maps/AU +map/SM +Maputo/M +Marabel/M +marabou/MS +marabout's +Maracaibo/M +maraca/MS +Mara/M +maraschino/SM +Marathi +marathoner/M +Marathon/M +marathon/MRSZ +Marat/M +marauder/M +maraud/ZGRDS +marbleize/GSD +marble/JRSDMG +marbler/M +marbling/M +Marceau/M +Marcela/M +Marcelia/M +Marcelino/M +Marcella/M +Marcelle/M +Marcellina/M +Marcelline/M +Marcello/M +Marcellus/M +Marcel/M +Marcelo/M +Marchall/M +Marchelle/M +marcher/M +marchioness/SM +March/MS +march/RSDZG +Marcia/M +Marciano/M +Marcie/M +Marcile/M +Marcille/M +Marci/M +Marc/M +Marconi/M +Marco/SM +Marcotte/M +Marcus/M +Marcy/M +Mardi/SM +Marduk/M +Mareah/M +mare/MS +Marena/M +Maren/M +Maressa/M +Margalit/M +Margalo/M +Marga/M +Margareta/M +Margarete/M +Margaretha/M +Margarethe/M +Margaret/M +Margaretta/M +Margarette/M +margarine/MS +Margarita/M +margarita/SM +Margarito/M +Margaux/M +Margeaux/M +Marge/M +Margery/M +Marget/M +Margette/M +Margie/M +Margi/M +marginalia +marginality +marginalization +marginalize/SDG +marginal/YS +margin/GSDM +Margit/M +Margo/M +Margot/M +Margrethe/M +Margret/M +Marguerite/M +Margy/M +mariachi/SM +maria/M +Maria/M +Mariam/M +Mariana/SM +Marian/MS +Marianna/M +Marianne/M +Mariann/M +Mariano/M +Maribelle/M +Maribel/M +Maribeth/M +Maricela/M +Marice/M +Maridel/M +Marieann/M +Mariejeanne/M +Mariele/M +Marielle/M +Mariellen/M +Mariel/M +Marie/M +Marietta/M +Mariette/M +Marigold/M +marigold/MS +Marijn/M +Marijo/M +marijuana/SM +Marika/M +Marilee/M +Marilin/M +Marillin/M +Marilyn/M +marimba/SM +Mari/MS +marinade/MGDS +Marina/M +marina/MS +marinara/SM +marinate/NGXDS +marination/M +mariner/M +Marine/S +marine/ZRS +Marin/M +Marinna/M +Marino/M +Mario/M +marionette/MS +Marion/M +Mariquilla/M +Marisa/M +Mariska/M +Marisol/M +Marissa/M +Maritain/M +marital/Y +Marita/M +maritime/R +Maritsa/M +Maritza/M +Mariupol/M +Marius/M +Mariya/M +Marja/M +Marje/M +Marjie/M +Marji/M +Marj/M +marjoram/SM +Marjorie/M +Marjory/M +Marjy/M +Markab/M +markdown/SM +marked/AU +markedly +marker/M +marketability/SM +marketable/U +Marketa/M +marketeer/S +marketer/M +market/GSMRDJBZ +marketing/M +marketplace/MS +mark/GZRDMBSJ +Markham/M +marking/M +Markism/M +markkaa +markka/M +Mark/MS +Markos +Markov +Markovian +Markovitz/M +marks/A +marksman/M +marksmanship/S +marksmen +markup/SM +Markus/M +Marla/M +Marlane/M +Marlboro/M +Marlborough/M +Marleah/M +Marlee/M +Marleen/M +Marlena/M +Marlene/M +Marley/M +Marlie/M +Marline/M +marlinespike/SM +Marlin/M +marlin/SM +marl/MDSG +Marlo/M +Marlon/M +Marlowe/M +Marlow/M +Marlyn/M +Marmaduke/M +marmalade/MS +Marmara/M +marmoreal +marmoset/MS +marmot/SM +Marna/M +Marne/M +Marney/M +Marnia/M +Marnie/M +Marni/M +maroon/GRDS +marquee/MS +Marquesas/M +marque/SM +marquess/MS +marquetry/SM +Marquette/M +Marquez/M +marquise/M +marquisette/MS +Marquis/M +marquis/SM +Marquita/M +Marrakesh/M +marred/U +marriageability/SM +marriageable +marriage/ASM +married/US +Marrilee/M +marring +Marriott/M +Marris/M +Marrissa/M +marrowbone/MS +marrow/GDMS +marry/SDGA +mar/S +Marseillaise/SM +Marseilles +Marseille's +marshal/GMDRSZ +Marshalled/M +marshaller +Marshall/GDM +Marshalling/M +marshallings +Marshal/M +Marsha/M +marshiness/M +marshland/MS +Marsh/M +marshmallow/SM +marsh/MS +marshy/PRT +Marsiella/M +Mar/SMN +marsupial/MS +Martainn/M +Marta/M +Martelle/M +Martel/M +marten/M +Marten/M +Martguerita/M +Martha/M +Marthe/M +Marthena/M +Martial +martial/Y +Martian/S +Martica/M +Martie/M +Marti/M +Martina/M +martinet/SM +Martinez/M +martingale/MS +martini/MS +Martinique/M +Martin/M +Martino/M +martin/SM +Martinson/M +Martita/M +mart/MDNGXS +Mart/MN +Marty/M +Martyn/M +Martynne/M +martyrdom/SM +martyr/GDMS +Marva/M +marvel/DGS +Marvell/M +marvelous/PY +Marve/M +Marven/M +Marvin/M +Marv/NM +Marwin/M +Marxian/S +Marxism/SM +Marxist/SM +Marx/M +Marya/M +Maryanna/M +Maryanne/M +Maryann/M +Marybelle/M +Marybeth/M +Maryellen/M +Maryjane/M +Maryjo/M +Maryland/MZR +Marylee/M +Marylinda/M +Marylin/M +Maryl/M +Marylou/M +Marylynne/M +Mary/M +Maryrose/M +Marys +Marysa/M +marzipan/SM +Masada/M +Masai/M +Masaryk/M +masc +Mascagni/M +mascara/SGMD +mascot/SM +masculineness/M +masculine/PYS +masculinity/SM +Masefield/M +maser/M +Maseru/M +MASH +Masha/M +Mashhad/M +mash/JGZMSRD +m/ASK +masked/U +masker/M +mask/GZSRDMJ +masks/U +masochism/MS +masochistic +masochistically +masochist/MS +masonic +Masonic +Masonite/M +masonry/MS +mason/SDMG +Mason/SM +masquerader/M +masquerade/RSDGMZ +masquer/M +masque/RSMZ +Massachusetts/M +massacre/DRSMG +massager/M +massage/SRDMG +Massasoit/M +Massenet/M +masseur/MS +masseuse/SM +Massey/M +massif/SM +Massimiliano/M +Massimo/M +massing/R +massiveness/SM +massive/YP +massless +mas/SRZ +Mass/S +mass/VGSD +mastectomy/MS +masterclass +mastered/A +masterfulness/M +masterful/YP +master/JGDYM +masterliness/M +masterly/P +mastermind/GDS +masterpiece/MS +mastership/M +Master/SM +masterstroke/MS +masterwork/S +mastery/MS +mast/GZSMRD +masthead/SDMG +masticate/SDXGN +mastication/M +mastic/SM +mastiff/MS +mastodon/MS +mastoid/S +masturbate/SDNGX +masturbation/M +masturbatory +matador/SM +Mata/M +matchable/U +match/BMRSDZGJ +matchbook/SM +matchbox/SM +matched/UA +matcher/M +matches/A +matchless/Y +matchlock/MS +matchmake/GZJR +matchmaker/M +matchmaking/M +matchplay +match's/A +matchstick/MS +matchwood/SM +mated/U +mate/IMS +Matelda/M +Mateo/M +materialism/SM +materialistic +materialistically +materialist/SM +materiality/M +materialization/SM +materialize/CDS +materialized/A +materializer/SM +materializes/A +materializing +materialness/M +material/SPYM +matériel/MS +mater/M +maternal/Y +maternity/MS +mates/U +mathematical/Y +Mathematica/M +mathematician/SM +mathematic/S +mathematics/M +Mathematik/M +Mather/M +Mathe/RM +Mathew/MS +Mathewson/M +Mathian/M +Mathias +Mathieu/M +Mathilda/M +Mathilde/M +Mathis +math/M +maths +Matias/M +Matilda/M +Matilde/M +matinée/S +mating/M +matins/M +Matisse/SM +matriarchal +matriarch/M +matriarchs +matriarchy/MS +matrices +matricidal +matricide/MS +matriculate/XSDGN +matriculation/M +matrimonial/Y +matrimony/SM +matrix/M +matron/YMS +mat/SJGMDR +Matsumoto/M +matte/JGMZSRD +Mattel/M +Matteo/M +matter/GDM +Matterhorn/M +Matthaeus/M +Mattheus/M +Matthew/MS +Matthias +Matthieu/M +Matthiew/M +Matthus/M +Mattias/M +Mattie/M +Matti/M +matting/M +mattins's +Matt/M +mattock/MS +mattress/MS +matt's +Matty/M +maturate/DSNGVX +maturational +maturation/M +matureness/M +maturer/M +mature/RSDTPYG +maturity/MS +matzo/SHM +matzot +Maude/M +Maudie/M +maudlin/Y +Maud/M +Maugham/M +Maui/M +mauler/M +maul/RDGZS +maunder/GDS +Maupassant/M +Maura/M +Maureene/M +Maureen/M +Maure/M +Maurene/M +Mauriac/M +Maurice/M +Mauricio/M +Maurie/M +Maurine/M +Maurise/M +Maurita/M +Mauritania/M +Mauritanian/S +Mauritian/S +Mauritius/M +Maurits/M +Maurizia/M +Maurizio/M +Maurois/M +Mauro/M +Maury/M +Mauser/M +mausoleum/SM +mauve/SM +maven/S +maverick/SMDG +mavin's +Mavis/M +Mavra/M +mawkishness/SM +mawkish/PY +Mawr/M +maw/SGMD +max/GDS +Maxie/M +maxillae +maxilla/M +maxillary/S +Maxi/M +maximality +maximal/SY +maxima's +Maximilian/M +Maximilianus/M +Maximilien/M +maximization/SM +maximizer/M +maximize/RSDZG +Maxim/M +Maximo/M +maxim/SM +maximum/MYS +Maxine/M +maxi/S +Max/M +Maxtor/M +Maxwellian +maxwell/M +Maxwell/M +Maxy/M +Maya/MS +Mayan/S +Maybelle/M +maybe/S +mayday/S +may/EGS +Maye/M +mayer +Mayer/M +mayest +Mayfair/M +Mayflower/M +mayflower/SM +mayfly/MS +mayhap +mayhem/MS +Maynard/M +Mayne/M +Maynord/M +mayn't +Mayo/M +mayonnaise/MS +mayoral +mayoralty/MS +mayoress/MS +Mayor/M +mayor/MS +mayorship/M +mayo/S +maypole/MS +Maypole/SM +Mayra/M +May/SMR +mayst +Mazama/M +Mazarin/M +Mazatlan/M +Mazda/M +mazedness/SM +mazed/YP +maze/MGDSR +mazurka/SM +Mazzini/M +Mb +MB +MBA +Mbabane/M +Mbini/M +MC +McAdam/MS +McAllister/M +McBride/M +McCabe/M +McCain/M +McCall/M +McCarthyism/M +McCarthy/M +McCartney/M +McCarty/M +McCauley/M +McClain/M +McClellan/M +McClure/M +McCluskey/M +McConnell/M +McCormick/M +McCoy/SM +McCracken/M +McCray/M +McCullough/M +McDaniel/M +McDermott/M +McDonald/M +McDonnell/M +McDougall/M +McDowell/M +McElhaney/M +McEnroe/M +McFadden/M +McFarland/M +McGee/M +McGill/M +McGovern/M +McGowan/M +McGrath/M +McGraw/M +McGregor/M +McGuffey/M +McGuire/M +MCI/M +McIntosh/M +McIntyre/M +McKay/M +McKee/M +McKenzie/M +McKesson/M +McKinley/M +McKinney/M +McKnight/M +McLanahan/M +McLaughlin/M +McLean/M +McLeod/M +McLuhan/M +McMahon/M +McMartin/M +McMillan/M +McNamara/M +McNaughton/M +McNeil/M +McPherson/M +MD +Md/M +mdse +MDT +ME +Meade/M +Mead/M +meadowland +meadowlark/SM +meadow/MS +Meadows +meadowsweet/M +mead/SM +Meagan/M +meagerness/SM +meager/PY +Meaghan/M +meagres +mealiness/MS +meal/MDGS +mealtime/MS +mealybug/S +mealymouthed +mealy/PRST +meander/JDSG +meaneing +meanie/MS +meaningfulness/SM +meaningful/YP +meaninglessness/SM +meaningless/PY +meaning/M +meanness/S +means/M +meantime/SM +meant/U +meanwhile/S +Meany/M +mean/YRGJTPS +meany's +Meara/M +measle/SD +measles/M +measly/TR +measurable/U +measurably +measure/BLMGRSD +measured/Y +measureless +measurement/SM +measurer/M +measures/A +measuring/A +meas/Y +meataxe +meatball/MS +meatiness/MS +meatless +meatloaf +meatloaves +meat/MS +meatpacking/S +meaty/RPT +Mecca/MS +mecca/S +mechanical/YS +mechanic/MS +mechanism/SM +mechanistic +mechanistically +mechanist/M +mechanization/SM +mechanized/U +mechanizer/M +mechanize/RSDZGB +mechanizes/U +mechanochemically +Mechelle/M +med +medalist/MS +medallion/MS +medal/SGMD +Medan/M +meddle/GRSDZ +meddlesome +Medea/M +Medellin +Medfield/M +mediaeval's +medial/AY +medials +median/YMS +media/SM +mediateness/M +mediate/PSDYVNGX +mediation/ASM +mediator/SM +Medicaid/SM +medical/YS +medicament/MS +Medicare/MS +medicate/DSXNGV +medication/M +Medici/MS +medicinal/SY +medicine/DSMG +medico/SM +medic/SM +medievalist/MS +medieval/YMS +Medina/M +mediocre +mediocrity/MS +meditate/NGVXDS +meditation/M +meditativeness/M +meditative/PY +Mediterranean/MS +mediumistic +medium/SM +medley/SM +medulla/SM +Medusa/M +meed/MS +meekness/MS +meek/TPYR +meerschaum/MS +meeter/M +meetinghouse/S +meeting/M +meet/JGSYR +me/G +mega +megabit/MS +megabuck/S +megabyte/S +megacycle/MS +megadeath/M +megadeaths +megahertz/M +megalithic +megalith/M +megaliths +megalomaniac/SM +megalomania/SM +megalopolis/SM +Megan/M +megaphone/SDGM +megaton/MS +megavolt/M +megawatt/SM +megaword/S +Megen/M +Meggie/M +Meggi/M +Meggy/M +Meghan/M +Meghann/M +Meg/MN +megohm/MS +Mehetabel/M +Meier/M +Meighen/M +Meiji/M +Mei/MR +meioses +meiosis/M +meiotic +Meir/M +Meister/M +Meistersinger/M +Mejia/M +Mekong/M +Mela/M +Melamie/M +melamine/SM +melancholia/SM +melancholic/S +melancholy/MS +Melanesia/M +Melanesian/S +melange/S +Melania/M +Melanie/M +melanin/MS +melanoma/SM +Melantha/M +Melany/M +Melba/M +Melbourne/M +Melcher/M +Melchior/M +meld/SGD +mêlée/MS +Melendez/M +Melesa/M +Melessa/M +Melicent/M +Melina/M +Melinda/M +Melinde/M +meliorate/XSDVNG +melioration/M +Melisa/M +Melisande/M +Melisandra/M +Melisenda/M +Melisent/M +Melissa/M +Melisse/M +Melita/M +Melitta/M +Mella/M +Mellicent/M +Mellie/M +mellifluousness/SM +mellifluous/YP +Melli/M +Mellisa/M +Mellisent/M +Melloney/M +Mellon/M +mellowness/MS +mellow/TGRDYPS +Melly/M +Mel/MY +Melodee/M +melodically +melodic/S +Melodie/M +melodiousness/S +melodious/YP +melodrama/SM +melodramatically +melodramatic/S +Melody/M +melody/MS +Melonie/M +melon/MS +Melony/M +Melosa/M +Melpomene/M +meltdown/S +melter/M +melting/Y +Melton/M +melt/SAGD +Melva/M +Melville/M +Melvin/M +Melvyn/M +Me/M +member/DMS +membered/AE +members/EA +membership/SM +membrane/MSD +membranous +memento/SM +Memling/M +memoir/MS +memorabilia +memorability/SM +memorableness/M +memorable/P +memorably +memorandum/SM +memorialize/DSG +memorialized/U +memorial/SY +memoriam +memorization/MS +memorized/U +memorizer/M +memorize/RSDZG +memorizes/A +memoryless +memory/MS +memo/SM +Memphis/M +menace/GSD +menacing/Y +menagerie/SM +menage/S +Menander/M +menarche/MS +Menard/M +Mencius/M +Mencken/M +mendaciousness/M +mendacious/PY +mendacity/MS +Mendeleev/M +mendelevium/SM +Mendelian +Mendel/M +Mendelssohn/M +mender/M +Mendez/M +mendicancy/MS +mendicant/S +Mendie/M +mending/M +Mendocino/M +Mendoza/M +mend/RDSJGZ +Mendy/M +Menelaus/M +Menes/M +menfolk/S +menhaden/M +menial/YS +meningeal +meninges +meningitides +meningitis/M +meninx +menisci +meniscus/M +Menkalinan/M +Menkar/M +Menkent/M +Menlo/M +men/MS +Mennonite/SM +Menominee +menopausal +menopause/SM +menorah/M +menorahs +Menotti/M +Mensa/M +Mensch/M +mensch/S +menservants/M +mens/SDG +menstrual +menstruate/NGDSX +menstruation/M +mensurable/P +mensuration/MS +menswear/M +mentalist/MS +mentality/MS +mental/Y +mentholated +menthol/SM +mentionable/U +mentioned/U +mentioner/M +mention/ZGBRDS +mentor/DMSG +Menuhin/M +menu/SM +Menzies/M +meow/DSG +Mephistopheles/M +Merak/M +Mercado/M +mercantile +Mercator/M +Mercedes +mercenariness/M +mercenary/SMP +mercerize/SDG +Mercer/M +mercer/SM +merchandiser/M +merchandise/SRDJMZG +merchantability +merchantman/M +merchantmen +merchant/SBDMG +Mercie/M +mercifully/U +mercifulness/M +merciful/YP +mercilessness/SM +merciless/YP +Merci/M +Merck/M +mercurial/SPY +mercuric +Mercurochrome/M +mercury/MS +Mercury/MS +Mercy/M +mercy/SM +Meredeth/M +Meredithe/M +Meredith/M +Merell/M +meretriciousness/SM +meretricious/YP +mere/YS +merganser/MS +merger/M +merge/SRDGZ +Meridel/M +meridian/MS +meridional +Meridith/M +Meriel/M +Merilee/M +Merill/M +Merilyn/M +meringue/MS +merino/MS +Meris +Merissa/M +merited/U +meritocracy/MS +meritocratic +meritocrats +meritoriousness/MS +meritorious/PY +merit/SCGMD +Meriwether/M +Merla/M +Merle/M +Merlina/M +Merline/M +merlin/M +Merlin/M +Merl/M +mermaid/MS +merman/M +mermen +Merna/M +Merola/M +meromorphic +Merralee/M +Merrel/M +Merriam/M +Merrick/M +Merridie/M +Merrielle/M +Merrie/M +Merrilee/M +Merrile/M +Merrili/M +Merrill/M +merrily +Merrily/M +Merrimack/M +Merrimac/M +merriment/MS +merriness/S +Merritt/M +Merry/M +merrymaker/MS +merrymaking/SM +merry/RPT +Mersey/M +mer/TGDR +Merton/M +Mervin/M +Merv/M +Merwin/M +Merwyn/M +Meryl/M +Mesa +Mesabi/M +mesa/SM +mescaline/SM +mescal/SM +mesdames/M +mesdemoiselles/M +Meshed's +meshed/U +mesh/GMSD +mesmeric +mesmerism/SM +mesmerized/U +mesmerizer/M +mesmerize/SRDZG +Mesolithic/M +mesomorph/M +mesomorphs +meson/MS +Mesopotamia/M +Mesopotamian/S +mesosphere/MS +mesozoic +Mesozoic +mesquite/MS +mes/S +message/SDMG +messeigneurs +messenger/GSMD +Messerschmidt/M +mess/GSDM +Messiaen/M +messiah +Messiah/M +messiahs +Messiahs +messianic +Messianic +messieurs/M +messily +messiness/MS +messmate/MS +Messrs/M +messy/PRT +mestizo/MS +meta +metabolic +metabolically +metabolism/MS +metabolite/SM +metabolize/GSD +metacarpal/S +metacarpi +metacarpus/M +metacircular +metacircularity +metalanguage/MS +metalization/SM +metalized +metallic/S +metalliferous +metallings +metallography/M +metalloid/M +metallurgic +metallurgical/Y +metallurgist/S +metallurgy/MS +metal/SGMD +metalsmith/MS +metalworking/M +metalwork/RMJGSZ +Meta/M +metamathematical +metamorphic +metamorphism/SM +metamorphose/GDS +metamorphosis/M +metaphoric +metaphorical/Y +metaphor/MS +metaphosphate/M +metaphysical/Y +metaphysic/SM +metastability/M +metastable +metastases +metastasis/M +metastasize/DSG +metastatic +metatarsal/S +metatarsi +metatarsus/M +metatheses +metathesis/M +metathesized +metathesizes +metathesizing +metavariable +metempsychoses +metempsychosis/M +meteoric +meteorically +meteorite/SM +meteoritic/S +meteoritics/M +meteoroid/SM +meteorologic +meteorological +meteorologist/S +meteorology/MS +meteor/SM +meter/GDM +mete/ZDGSR +methadone/SM +methane/MS +methanol/SM +methinks +methionine/M +methodicalness/SM +methodical/YP +methodism +Methodism/SM +methodist/MS +Methodist/MS +method/MS +methodological/Y +methodologists +methodology/MS +methought +Methuen/M +Methuselah/M +Methuselahs +methylated +methylene/M +methyl/SM +meticulousness/MS +meticulous/YP +métier/S +metonymy/M +Metrecal/M +metrical/Y +metricate/SDNGX +metricize/GSD +metrics/M +metric/SM +metronome/MS +metropolis/SM +metropolitanization +metropolitan/S +metro/SM +mets +Metternich/M +mettle/SDM +mettlesome +met/U +Metzler/M +Meuse/M +mewl/GSD +mew/SGD +mews/SM +Mex +Mexicali/M +Mexican/S +Mexico/M +Meyerbeer/M +Meyer/SM +mezzanine/MS +mezzo/S +MFA +mfg +mfr/S +mg +M/GB +Mg/M +MGM/M +mgr +Mgr +MHz +MI +MIA +Mia/M +Miami/SM +Miaplacidus/M +miasmal +miasma/SM +Micaela/M +Micah/M +mica/MS +micelles +mice/M +Michaela/M +Michaelangelo/M +Michaelina/M +Michaeline/M +Michaella/M +Michaelmas/MS +Michael/SM +Michaelson/M +Michail/M +Michale/M +Michal/M +Micheal/M +Micheil/M +Michelangelo/M +Michele/M +Michelina/M +Micheline/M +Michelin/M +Michelle/M +Michell/M +Michel/M +Michelson/M +Michigander/S +Michiganite/S +Michigan/M +Mich/M +Mickelson/M +Mickey/M +mickey/SM +Mickie/M +Micki/M +Mick/M +Micky/M +Mic/M +Micmac/M +micra's +microamp +microanalysis/M +microanalytic +microbe/MS +microbial +microbicidal +microbicide/M +microbiological +microbiologist/MS +microbiology/SM +microbrewery/S +microchemistry/M +microchip/S +microcircuit/MS +microcode/GSD +microcomputer/MS +microcosmic +microcosm/MS +microdensitometer +microdot/MS +microeconomic/S +microeconomics/M +microelectronic/S +microelectronics/M +microfiber/S +microfiche/M +microfilm/DRMSG +microfossils +micrography/M +microgroove/MS +microhydrodynamics +microinstruction/SM +microjoule +microlevel +microlight/S +micromanage/GDSL +micromanagement/S +micrometeorite/MS +micrometeoritic +micrometer/SM +Micronesia/M +Micronesian/S +micron/MS +microorganism/SM +microphone/SGM +Microport/M +microprocessing +microprocessor/SM +microprogrammed +microprogramming +microprogram/SM +micro/S +microscope/SM +microscopic +microscopical/Y +microscopy/MS +microsecond/MS +microsimulation/S +micros/M +Microsoft/M +microsomal +microstore +microsurgery/SM +MicroVAXes +MicroVAX/M +microvolt/SM +microwaveable +microwave/BMGSD +microword/S +midair/MS +midas +Midas/M +midband/M +midday/MS +midden/SM +middest +middlebrow/SM +Middlebury/M +middle/GJRSD +middleman/M +middlemen +middlemost +Middlesex/M +Middleton/M +Middletown/M +middleweight/SM +middling/Y +middy/SM +Mideastern +Mideast/M +midfield/RM +Midge/M +midge/SM +midget/MS +midi/S +midland/MRS +Midland/MS +midlife +midlives +midmorn/G +midmost/S +midnight/SYM +midpoint/MS +midrange +midrib/MS +midriff/MS +mid/S +midscale +midsection/M +midshipman/M +midshipmen +midship/S +midspan +midstream/MS +midst/SM +midsummer/MS +midterm/MS +midtown/MS +Midway/M +midway/S +midweek/SYM +Midwesterner/M +Midwestern/ZR +Midwest/M +midwicket +midwifery/SM +midwife/SDMG +midwinter/YMS +midwives +midyear/MS +mien/M +miff/GDS +mightily +mightiness/MS +mightn't +might/S +mighty/TPR +mignon +mignonette/SM +Mignon/M +Mignonne/M +migraine/SM +migrant/MS +migrate/ASDG +migration/MS +migrative +migratory/S +MIG/S +Miguela/M +Miguelita/M +Miguel/M +mikado/MS +Mikaela/M +Mikael/M +mike/DSMG +Mikel/M +Mike/M +Mikey/M +Mikhail/M +Mikkel/M +Mikol/M +Mikoyan/M +milady/MS +Milagros/M +Milanese +Milan/M +milch/M +mildew/DMGS +mildness/MS +Mildred/M +Mildrid/M +mild/STYRNP +mileage/SM +Milena/M +milepost/SM +miler/M +mile/SM +Mile/SM +milestone/MS +Milford/M +Milicent/M +milieu/SM +Milissent/M +militancy/MS +militantness/M +militant/YPS +militarily +militarism/SM +militaristic +militarist/MS +militarization/SCM +militarize/SDCG +military +militate/SDG +militiaman/M +militiamen +militia/SM +Milka/M +Milken/M +milker/M +milk/GZSRDM +milkiness/MS +milkmaid/SM +milkman/M +milkmen +milkshake/S +milksop/SM +milkweed/MS +milky/RPT +millage/S +Millard/M +Millay/M +millenarian +millenarianism/M +millennial +millennialism +millennium/MS +millepede's +miller/M +Miller/M +Millet/M +millet/MS +milliamp +milliampere/S +milliard/MS +millibar/MS +Millicent/M +millidegree/S +Millie/M +milligram/MS +millijoule/S +Millikan/M +milliliter/MS +Milli/M +millimeter/SM +milliner/SM +millinery/MS +milling/M +millionaire/MS +million/HDMS +millionth/M +millionths +millipede/SM +millisecond/MS +Millisent/M +millivoltmeter/SM +millivolt/SM +milliwatt/S +millpond/MS +millrace/SM +mill/SGZMRD +Mill/SMR +millstone/SM +millstream/SM +millwright/MS +Milly/M +mil/MRSZ +Mil/MY +Milne/M +Milo/M +Milquetoast/S +milquetoast/SM +Miltiades/M +Miltie/M +Milt/M +milt/MDSG +Miltonic +Milton/M +Miltown/M +Milty/M +Milwaukee/M +Milzie/M +MIMD +mime/DSRMG +mimeograph/GMDS +mimeographs +mimer/M +mimesis/M +mimetic +mimetically +mimicked +mimicker/SM +mimicking +mimicry/MS +mimic/S +Mimi/M +mi/MNX +Mimosa/M +mimosa/SM +Mina/M +minaret/MS +minatory +mincemeat/MS +mincer/M +mince/SRDGZJ +mincing/Y +Minda/M +Mindanao/M +mind/ARDSZG +mindbogglingly +minded/P +minder/M +mindfully +mindfulness/MS +mindful/U +mindlessness/SM +mindless/YP +Mindoro/M +min/DRZGJ +mind's +mindset/S +Mindy/M +minefield/MS +mineralization/C +mineralized/U +mineralogical +mineralogist/SM +mineralogy/MS +mineral/SM +miner/M +Miner/M +Minerva/M +mineshaft +mine/SNX +minestrone/MS +minesweeper/MS +Minetta/M +Minette/M +mineworkers +mingle/SDG +Ming/M +Mingus/M +miniature/GMSD +miniaturist/SM +miniaturization/MS +miniaturize/SDG +minibike/S +minibus/SM +minicab/M +minicam/MS +minicomputer/SM +minidress/SM +minify/GSD +minimalism/S +minimalistic +minimalist/MS +minimality +minimal/SY +minima's +minimax/M +minimization/MS +minimized/U +minimizer/M +minimize/RSDZG +minim/SM +minimum/MS +mining/M +minion/M +mini/S +miniseries +miniskirt/MS +ministerial/Y +minister/MDGS +ministrant/S +ministration/SM +ministry/MS +minivan/S +miniver/M +minke +mink/SM +Min/MR +Minna/M +Minnaminnie/M +Minneapolis/M +Minne/M +minnesinger/MS +Minnesota/M +Minnesotan/S +Minnie/M +Minni/M +Minn/M +Minnnie/M +minnow/SM +Minny/M +Minoan/S +Minolta/M +minor/DMSG +minority/MS +Minor/M +Minos +Minotaur/M +minotaur/S +Minot/M +minoxidil/S +Minsk/M +Minsky/M +minster/SM +minstrel/SM +minstrelsy/MS +mintage/SM +Mintaka/M +Minta/M +minter/M +mint/GZSMRD +minty/RT +minuend/SM +minuet/SM +Minuit/M +minuscule/SM +minus/S +minuteman +Minuteman/M +minutemen +minuteness/SM +minute/RSDPMTYG +minutiae +minutia/M +minx/MS +Miocene +MIPS +Miquela/M +Mirabeau/M +Mirabella/M +Mirabelle/M +Mirabel/M +Mirach/M +miracle/MS +miraculousness/M +miraculous/PY +mirage/GSDM +Mira/M +Miranda/M +Miran/M +Mireielle/M +Mireille/M +Mirella/M +Mirelle/M +mire/MGDS +Mirfak/M +Miriam/M +Mirilla/M +Mir/M +Mirna/M +Miro +mirror/DMGS +mirthfulness/SM +mirthful/PY +mirthlessness/M +mirthless/YP +mirth/M +mirths +MIRV/DSG +miry/RT +Mirzam/M +misaddress/SDG +misadventure/SM +misalign/DSGL +misalignment/MS +misalliance/MS +misanalysed +misanthrope/MS +misanthropic +misanthropically +misanthropist/S +misanthropy/SM +misapplier/M +misapply/GNXRSD +misapprehend/GDS +misapprehension/MS +misappropriate/GNXSD +misbegotten +misbehaver/M +misbehave/RSDG +misbehavior/SM +misbrand/DSG +misc +miscalculate/XGNSD +miscalculation/M +miscall/SDG +miscarriage/MS +miscarry/SDG +miscast/GS +miscegenation/SM +miscellanea +miscellaneous/PY +miscellany/MS +Mischa/M +mischance/MGSD +mischief/MDGS +mischievousness/MS +mischievous/PY +miscibility/S +miscible/C +misclassification/M +misclassified +misclassifying +miscode/SDG +miscommunicate/NDS +miscomprehended +misconceive/GDS +misconception/MS +misconduct/GSMD +misconfiguration +misconstruction/MS +misconstrue/DSG +miscopying +miscount/DGS +miscreant/MS +miscue/MGSD +misdeal/SG +misdealt +misdeed/MS +misdemeanant/SM +misdemeanor/SM +misdiagnose/GSD +misdid +misdirect/GSD +misdirection/MS +misdirector/S +misdoes +misdo/JG +misdone +miserableness/SM +miserable/SP +miserably +miser/KM +miserliness/MS +miserly/P +misery/MS +mises/KC +misfeasance/MS +misfeature/M +misfield +misfile/SDG +misfire/SDG +misfit/MS +misfitted +misfitting +misfortune/SM +misgauge/GDS +misgiving/MYS +misgovern/LDGS +misgovernment/S +misguidance/SM +misguidedness/M +misguided/PY +misguide/DRSG +misguider/M +Misha/M +mishandle/SDG +mishap/MS +mishapped +mishapping +misheard +mishear/GS +mishitting +mishmash/SM +misidentification/M +misidentify/GNSD +misinformation/SM +misinform/GDS +misinterpretation/MS +misinterpreter/M +misinterpret/RDSZG +misjudge/DSG +misjudging/Y +misjudgment/MS +Miskito +mislabel/DSG +mislaid +mislay/GS +misleader/M +mislead/GRJS +misleading/Y +misled +mismanage/LGSD +mismanagement/MS +mismatch/GSD +misname/GSD +misnomer/GSMD +misogamist/MS +misogamy/MS +misogynistic +misogynist/MS +misogynous +misogyny/MS +misperceive/SD +misplace/GLDS +misplacement/MS +misplay/GSD +mispositioned +misprint/SGDM +misprision/SM +mispronounce/DSG +mispronunciation/MS +misquotation/MS +misquote/GDS +misreader/M +misread/RSGJ +misrelated +misremember/DG +misreport/DGS +misrepresentation/MS +misrepresenter/M +misrepresent/SDRG +misroute/DS +misrule/SDG +missal/ESM +misshape/DSG +misshapenness/SM +misshapen/PY +Missie/M +missile/MS +missilery/SM +mission/AMS +missionary/MS +missioned +missioner/SM +missioning +missis's +Mississauga/M +Mississippian/S +Mississippi/M +missive/MS +Missoula/M +Missourian/S +Missouri/M +misspeak/SG +misspecification +misspecified +misspelling/M +misspell/SGJD +misspend/GS +misspent +misspoke +misspoken +mis/SRZ +miss/SDEGV +Miss/SM +misstate/GLDRS +misstatement/MS +misstater/M +misstep/MS +misstepped +misstepping +missus/SM +Missy/M +mistakable/U +mistake/BMGSR +mistaken/Y +mistaker/M +mistaking/Y +Mistassini/M +mister/GDM +Mister/SM +mistily +Misti/M +mistime/GSD +mistiness/S +mistletoe/MS +mist/MRDGZS +mistook +mistral/MS +mistranslated +mistranslates +mistranslating +mistranslation/SM +mistreat/DGSL +mistreatment/SM +Mistress/MS +mistress/MSY +mistrial/SM +mistruster/M +mistrustful/Y +mistrust/SRDG +Misty/M +mistype/SDGJ +misty/PRT +misunderstander/M +misunderstanding/M +misunderstand/JSRZG +misunderstood +misuser/M +misuse/RSDMG +miswritten +Mitchael/M +Mitchell/M +Mitchel/M +Mitch/M +miterer/M +miter/GRDM +mite/SRMZ +Mitford/M +Mithra/M +Mithridates/M +mitigated/U +mitigate/XNGVDS +mitigation/M +MIT/M +mitoses +mitosis/M +mitotic +MITRE/SM +Mitsubishi/M +mitten/M +Mitterrand/M +mitt/XSMN +Mitty/M +Mitzi/M +mitzvahs +mixable +mix/AGSD +mixed/U +mixer/SM +mixture/SM +Mizar/M +mizzenmast/SM +mizzen/MS +Mk +mks +ml +Mlle/M +mm +MM +MMe +Mme/SM +MN +mnemonically +mnemonics/M +mnemonic/SM +Mnemosyne/M +Mn/M +MO +moan/GSZRDM +moat/SMDG +mobbed +mobber +mobbing +mobcap/SM +Mobile/M +mobile/S +mobility/MS +mobilizable +mobilization/AMCS +mobilize/CGDS +mobilized/U +mobilizer/MS +mobilizes/A +Mobil/M +mob/MS +mobster/MS +Mobutu/M +moccasin/SM +mocha/SM +mockers/M +mockery/MS +mock/GZSRD +mockingbird/MS +mocking/Y +mo/CSK +modality/MS +modal/Y +modeled/A +modeler/M +modeling/M +models/A +model/ZGSJMRD +mode/MS +modem/SM +moderated/U +moderateness/SM +moderate/PNGDSXY +moderation/M +moderator/MS +modernism/MS +modernistic +modernist/S +modernity/SM +modernization/MS +modernized/U +modernizer/M +modernize/SRDGZ +modernizes/U +modernness/SM +modern/PTRYS +Modesta/M +Modestia/M +Modestine/M +Modesto/M +modest/TRY +Modesty/M +modesty/MS +modicum/SM +modifiability/M +modifiableness/M +modifiable/U +modification/M +modified/U +modifier/M +modify/NGZXRSD +Modigliani/M +modishness/MS +modish/YP +mod/TSR +Modula/M +modularity/SM +modularization +modularize/SDG +modular/SY +modulate/ADSNCG +modulation/CMS +modulator/ACSM +module/SM +moduli +modulo +modulus/M +modus +Moe/M +Moen/M +Mogadiscio's +Mogadishu +mogul/MS +Mogul/MS +mohair/SM +Mohamed/M +Mohammad/M +Mohammedanism/MS +Mohammedan/SM +Mohammed's +Mohandas/M +Mohandis/M +Mohawk/MS +Mohegan/S +Mohican's +Moho/M +Mohorovicic/M +Mohr/M +moiety/MS +moil/SGD +Moina/M +Moines/M +Moira/M +moire/MS +Moise/MS +Moiseyev/M +Moishe/M +moistener/M +moisten/ZGRD +moistness/MS +moist/TXPRNY +moisture/MS +moisturize/GZDRS +Mojave/M +molal +molarity/SM +molar/MS +molasses/MS +Moldavia/M +Moldavian/S +moldboard/SM +molder/DG +moldiness/SM +molding/M +mold/MRDJSGZ +Moldova +moldy/PTR +molecularity/SM +molecular/Y +molecule/MS +molehill/SM +mole/MTS +moleskin/MS +molestation/SM +molested/U +molester/M +molest/RDZGS +Moliere +Molina/M +Moline/M +Mollee/M +Mollie/M +mollification/M +mollify/XSDGN +Molli/M +Moll/M +moll/MS +mollusc's +mollusk/S +mollycoddler/M +mollycoddle/SRDG +Molly/M +molly/SM +Molnar/M +Moloch/M +Molokai/M +Molotov/M +molter/M +molt/RDNGZS +Moluccas +molybdenite/M +molybdenum/MS +Mombasa/M +momenta +momentarily +momentariness/SM +momentary/P +moment/MYS +momentousness/MS +momentous/YP +momentum/SM +momma/S +Mommy/M +mommy/SM +Mo/MN +mom/SM +Monaco/M +monadic +monad/SM +Monah/M +Mona/M +monarchic +monarchical +monarchism/MS +monarchistic +monarchist/MS +monarch/M +monarchs +monarchy/MS +Monash/M +monastery/MS +monastical/Y +monasticism/MS +monastic/S +monaural/Y +Mondale/M +Monday/MS +Mondrian/M +Monegasque/SM +Monera/M +monetarily +monetarism/S +monetarist/MS +monetary +monetization/CMA +monetize/CGADS +Monet/M +moneybag/SM +moneychangers +moneyer/M +moneylender/SM +moneymaker/MS +moneymaking/MS +money/SMRD +Monfort/M +monger/SGDM +Mongolia/M +Mongolian/S +Mongolic/M +mongolism/SM +mongoloid/S +Mongoloid/S +Mongol/SM +mongoose/SM +mongrel/SM +Monica/M +monies/M +Monika/M +moniker/MS +Monique/M +monism/MS +monist/SM +monition/SM +monitored/U +monitor/GSMD +monitory/S +monkeyshine/S +monkey/SMDG +monkish +Monk/M +monk/MS +monkshood/SM +Monmouth/M +monochromatic +monochromator +monochrome/MS +monocle/SDM +monoclinic +monoclonal/S +monocotyledonous +monocotyledon/SM +monocular/SY +monodic +monodist/S +monody/MS +monogamist/MS +monogamous/PY +monogamy/MS +monogrammed +monogramming +monogram/MS +monograph/GMDS +monographs +monolingualism +monolingual/S +monolithic +monolithically +monolith/M +monoliths +monologist/S +monologue/GMSD +monomaniacal +monomaniac/MS +monomania/MS +monomeric +monomer/SM +monomial/SM +mono/MS +Monongahela/M +mononuclear +mononucleoses +mononucleosis/M +monophonic +monoplane/MS +monopole/S +monopolistic +monopolist/MS +monopolization/MS +monopolized/U +monopolize/GZDSR +monopolizes/U +monopoly/MS +monorail/SM +monostable +monosyllabic +monosyllable/MS +monotheism/SM +monotheistic +monotheist/S +monotone/SDMG +monotonic +monotonically +monotonicity +monotonousness/MS +monotonous/YP +monotony/MS +monoxide/SM +Monroe/M +Monro/M +Monrovia/M +Monsanto/M +monseigneur +monsieur/M +Monsignori +Monsignor/MS +monsignor/S +Mon/SM +monsoonal +monsoon/MS +monster/SM +monstrance/ASM +monstrosity/SM +monstrousness/M +monstrous/YP +montage/SDMG +Montague/M +Montaigne/M +Montana/M +Montanan/MS +Montcalm/M +Montclair/M +Monte/M +Montenegrin +Montenegro/M +Monterey/M +Monterrey/M +Montesquieu/M +Montessori/M +Monteverdi/M +Montevideo/M +Montezuma +Montgomery/M +monthly/S +month/MY +months +Monticello/M +Monti/M +Mont/M +Montmartre/M +Montoya/M +Montpelier/M +Montrachet/M +Montreal/M +Montserrat/M +Monty/M +monumentality/M +monumental/Y +monument/DMSG +mooch/ZSRDG +moodily +moodiness/MS +mood/MS +Moody/M +moody/PTR +Moog +moo/GSD +moonbeam/SM +Mooney/M +moon/GDMS +moonless +moonlight/GZDRMS +moonlighting/M +moonlit +Moon/M +moonscape/MS +moonshiner/M +moonshine/SRZM +moonshot/MS +moonstone/SM +moonstruck +moonwalk/SDG +Moore/M +moor/GDMJS +mooring/M +Moorish +moorland/MS +Moor/MS +moose/M +moot/RDGS +moped/MS +moper/M +mope/S +mopey +mopier +mopiest +mopish +mopped +moppet/MS +mopping +mop/SZGMDR +moraine/MS +morale/MS +Morales/M +moralistic +moralistically +moralist/MS +morality/UMS +moralization/CS +moralize/CGDRSZ +moralled +moraller +moralling +moral/SMY +Mora/M +Moran/M +morass/SM +moratorium/SM +Moravia/M +Moravian +moray/SM +morbidity/SM +morbidness/S +morbid/YP +mordancy/MS +mordant/GDYS +Mordecai/M +Mord/M +Mordred/M +Mordy/M +more/DSN +Moreen/M +Morehouse/M +Moreland/M +morel/SM +More/M +Morena/M +Moreno/M +moreover +Morey/M +Morgana/M +Morganica/M +Morgan/MS +Morganne/M +morgen/M +Morgen/M +morgue/SM +Morgun/M +Moria/M +Moriarty/M +moribundity/M +moribund/Y +Morie/M +Morin/M +morion/M +Morison/M +Morissa/M +Morita/M +Moritz/M +Morlee/M +Morley/M +Morly/M +Mormonism/MS +Mormon/SM +Morna/M +morning/MY +morn/SGJDM +Moroccan/S +Morocco/M +morocco/SM +Moro/M +moronic +moronically +Moroni/M +moron/SM +moroseness/MS +morose/YP +morpheme/DSMG +morphemic/S +Morpheus/M +morph/GDJ +morphia/S +morphine/MS +morphism/MS +morphologic +morphological/Y +morphology/MS +morphophonemic/S +morphophonemics/M +morphs +Morrie/M +morris +Morris/M +Morrison/M +Morristown/M +Morrow/M +morrow/MS +Morry/M +morsel/GMDS +Morse/M +mortality/SM +mortal/SY +mortarboard/SM +mortar/GSDM +Morten/M +mortgageable +mortgagee/SM +mortgage/MGDS +mortgagor/SM +mortice's +mortician/SM +Mortie/M +mortification/M +mortified/Y +mortifier/M +mortify/DRSXGN +Mortimer/M +mortise/MGSD +Mort/MN +Morton/M +mortuary/MS +Morty/M +Mosaic +mosaicked +mosaicking +mosaic/MS +Moscone/M +Moscow/M +Moseley/M +Moselle/M +Mose/MSR +Moser/M +mosey/SGD +Moshe/M +Moslem's +Mosley/M +mosque/SM +mosquitoes +mosquito/M +mos/S +mossback/MS +Mossberg/M +Moss/M +moss/SDMG +mossy/SRT +most/SY +Mosul/M +mote/ASCNK +motel/MS +mote's +motet/SM +mothball/DMGS +motherboard/MS +motherfucker/MS +motherfucking +motherhood/SM +mothering/M +motherland/SM +motherless +motherliness/MS +motherly/P +mother/RDYMZG +moths +moth/ZMR +motif/MS +motile/S +motility/MS +motional/K +motioner/M +motion/GRDMS +motionlessness/S +motionless/YP +motion's/ACK +motions/K +motivated/U +motivate/XDSNGV +motivational/Y +motivation/M +motivator/S +motiveless +motive/MGSD +motley/S +motlier +motliest +mot/MSV +motocross/SM +motorbike/SDGM +motorboat/MS +motorcade/MSDG +motorcar/MS +motorcycle/GMDS +motorcyclist/SM +motor/DMSG +motoring/M +motorist/SM +motorization/SM +motorize/DSG +motorized/U +motorman/M +motormen +motormouth +motormouths +Motorola/M +motorway/SM +Motown/M +mottle/GSRD +mottler/M +Mott/M +mottoes +motto/M +moue/DSMG +moulder/DSG +moult/GSD +mound/GMDS +mountable +mountaineering/M +mountaineer/JMDSG +mountainousness/M +mountainous/PY +mountainside/MS +mountain/SM +mountaintop/SM +Mountbatten/M +mountebank/SGMD +mounted/U +mount/EGACD +mounter/SM +mounties +Mountie/SM +mounting/MS +Mount/M +mounts/AE +mourner/M +mournfuller +mournfullest +mournfulness/S +mournful/YP +mourning/M +mourn/ZGSJRD +mouser/M +mouse/SRDGMZ +mousetrapped +mousetrapping +mousetrap/SM +mousiness/MS +mousing/M +mousse/MGSD +Moussorgsky/M +mousy/PRT +Mouthe/M +mouthful/MS +mouthiness/SM +mouth/MSRDG +mouthorgan +mouthpiece/SM +mouths +mouthwash/SM +mouthwatering +mouthy/PTR +Mouton/M +mouton/SM +movable/ASP +movableness/AM +move/ARSDGZB +moved/U +movement/SM +mover/AM +moviegoer/S +movie/SM +moving/YS +mower/M +Mowgli/M +mowing/M +mow/SDRZG +moxie/MS +Moyer/M +Moyna/M +Moyra/M +Mozambican/S +Mozambique/M +Mozart/M +Mozelle/M +Mozes/M +mozzarella/MS +mp +MP +mpg +mph +MPH +MRI +Mr/M +Mrs +ms +M's +MS +MSG +Msgr/M +m's/K +Ms/S +MST +MSW +mt +MT +mtg +mtge +Mt/M +MTS +MTV +Muawiya/M +Mubarak/M +muchness/M +much/SP +mucilage/MS +mucilaginous +mucker/M +muck/GRDMS +muckraker/M +muckrake/ZMDRSG +mucky/RT +mucosa/M +mucous +mucus/SM +mudded +muddily +muddiness/SM +mudding +muddle/GRSDZ +muddleheaded/P +muddlehead/SMD +muddler/M +muddy/TPGRSD +mudflat/S +mudguard/SM +mudlarks +mud/MS +mudroom/S +mudslide/S +mudslinger/M +mudslinging/M +mudsling/JRGZ +Mueller/M +Muenster +muenster/MS +muesli/M +muezzin/MS +muff/GDMS +Muffin/M +muffin/SM +muffler/M +muffle/ZRSDG +Mufi/M +Mufinella/M +mufti/MS +Mugabe/M +mugged +mugger/SM +mugginess/S +mugging/S +muggy/RPT +mugshot/S +mug/SM +mugwump/MS +Muhammadanism/S +Muhammadan/SM +Muhammad/M +Muire/M +Muir/M +Mukden/M +mukluk/SM +mulattoes +mulatto/M +mulberry/MS +mulch/GMSD +mulct/SDG +Mulder/M +mule/MGDS +muleskinner/S +muleteer/MS +mulishness/MS +mulish/YP +mullah/M +mullahs +mullein/MS +Mullen/M +muller/M +Muller/M +mullet/MS +Mulligan/M +mulligan/SM +mulligatawny/SM +Mullikan/M +Mullins +mullion/MDSG +mull/RDSG +Multan/M +multi +Multibus/M +multicellular +multichannel/M +multicollinearity/M +multicolor/SDM +multicolumn +multicomponent +multicomputer/MS +Multics/M +MULTICS/M +multicultural +multiculturalism/S +multidimensional +multidimensionality +multidisciplinary +multifaceted +multifamily +multifariousness/SM +multifarious/YP +multifigure +multiform +multifunction/D +multilateral/Y +multilayer +multilevel/D +multilingual +multilingualism/S +multimedia/S +multimegaton/M +multimeter/M +multimillionaire/SM +multinational/S +multinomial/M +multiphase +multiple/SM +multiplet/SM +multiplex/GZMSRD +multiplexor's +multipliable +multiplicand/SM +multiplication/M +multiplicative/YS +multiplicity/MS +multiplier/M +multiply/ZNSRDXG +multiprocess/G +multiprocessor/MS +multiprogram +multiprogrammed +multiprogramming/MS +multipurpose +multiracial +multistage +multistory/S +multisyllabic +multitasking/S +multitude/MS +multitudinousness/M +multitudinous/YP +multiuser +multivalent +multivalued +multivariate +multiversity/M +multivitamin/S +mu/M +mumbler/M +mumbletypeg/S +mumble/ZJGRSD +Mumford/M +mummed +mummer/SM +mummery/MS +mummification/M +mummify/XSDGN +mumming +mum/MS +mummy/GSDM +mumps/M +muncher/M +Münchhausen/M +munchies +Munch/M +munch/ZRSDG +Muncie/M +mundane/YSP +Mundt/M +munge/JGZSRD +Munich/M +municipality/SM +municipal/YS +munificence/MS +munificent/Y +munition/SDG +Munmro/M +Munoz/M +Munroe/M +Munro/M +mun/S +Munsey/M +Munson/M +Munster/MS +Muong/M +muon/M +Muppet/M +muralist/SM +mural/SM +Murasaki/M +Murat/M +Murchison/M +Murcia/M +murderer/M +murderess/S +murder/GZRDMS +murderousness/M +murderous/YP +Murdoch/M +Murdock/M +Mureil/M +Murial/M +muriatic +Murielle/M +Muriel/M +Murillo/M +murkily +murkiness/S +murk/TRMS +murky/RPT +Murmansk/M +murmurer/M +murmuring/U +murmurous +murmur/RDMGZSJ +Murphy/M +murrain/SM +Murray/M +Murrow/M +Murrumbidgee/M +Murry/M +Murvyn/M +muscatel/MS +Muscat/M +muscat/SM +musclebound +muscle/SDMG +Muscovite/M +muscovite/MS +Muscovy/M +muscularity/SM +muscular/Y +musculature/SM +muse +Muse/M +muser/M +musette/SM +museum/MS +mus/GJDSR +musher/M +mushiness/MS +mush/MSRDG +mushroom/DMSG +mushy/PTR +Musial/M +musicale/SM +musicality/SM +musicals +musical/YU +musician/MYS +musicianship/MS +musicked +musicking +musicological +musicologist/MS +musicology/MS +music/SM +musing/Y +Muskegon/M +muskeg/SM +muskellunge/SM +musketeer/MS +musketry/MS +musket/SM +musk/GDMS +muskie/M +muskiness/MS +muskmelon/MS +muskox/N +muskrat/MS +musky/RSPT +Muslim/MS +muslin/MS +mussel/MS +Mussolini/MS +Mussorgsky/M +muss/SDG +mussy/RT +mustache/DSM +mustachio/MDS +mustang/MS +mustard/MS +muster/GD +mustily +mustiness/MS +mustn't +must/RDGZS +must've +musty/RPT +mutability/SM +mutableness/M +mutable/P +mutably +mutagen/SM +mutant/MS +mutate/XVNGSD +mutational/Y +mutation/M +mutator/S +muted/Y +muteness/S +mute/PDSRBYTG +mutilate/XDSNG +mutilation/M +mutilator/MS +mutineer/SMDG +mutinous/Y +mutiny/MGSD +Mutsuhito/M +mutterer/M +mutter/GZRDJ +muttonchops +mutton/SM +mutt/ZSMR +mutuality/S +mutual/SY +muumuu/MS +muzak +Muzak/SM +Muzo/M +muzzled/U +muzzle/MGRSD +muzzler/M +MVP +MW +Myanmar +Mycah/M +Myca/M +Mycenaean +Mycenae/M +Mychal/M +mycologist/MS +mycology/MS +myelitides +myelitis/M +Myer/MS +myers +mylar +Mylar/S +Myles/M +Mylo/M +My/M +myna/SM +Mynheer/M +myocardial +myocardium/M +myopia/MS +myopically +myopic/S +Myrah/M +Myra/M +Myranda/M +Myrdal/M +myriad/S +Myriam/M +Myrilla/M +Myrle/M +Myrlene/M +myrmidon/S +Myrna/M +Myron/M +myrrh/M +myrrhs +Myrta/M +Myrtia/M +Myrtice/M +Myrtie/M +Myrtle/M +myrtle/SM +Myrvyn/M +Myrwyn/M +mys +my/S +myself +Mysore/M +mysteriousness/MS +mysterious/YP +mystery/MDSG +mystical/Y +mysticism/MS +mystic/SM +mystification/M +mystifier/M +mystify/CSDGNX +mystifying/Y +mystique/MS +Myst/M +mythic +mythical/Y +myth/MS +mythographer/SM +mythography/M +mythological/Y +mythologist/MS +mythologize/CSDG +mythology/SM +myths +N +NAACP +nabbed +nabbing +Nabisco/M +nabob/SM +Nabokov/M +nab/S +nacelle/SM +nacho/S +NaCl/M +nacre/MS +nacreous +Nada/M +Nadean/M +Nadeen/M +Nader/M +Nadia/M +Nadine/M +nadir/SM +Nadiya/M +Nadya/M +Nady/M +nae/VM +Nagasaki/M +nagged +nagger/S +nagging/Y +nag/MS +Nagoya/M +Nagpur/M +Nagy/M +Nahuatl/SM +Nahum/M +naiad/SM +naifs +nailbrush/SM +nailer/M +nail/SGMRD +Naipaul/M +Nair/M +Nairobi/M +Naismith/M +naive/SRTYP +naiveté/SM +naivety/MS +Nakamura/M +Nakayama/M +nakedness/MS +naked/TYRP +Nakoma/M +Nalani/M +Na/M +Namath/M +nameable/U +name/ADSG +namedrop +namedropping +named's +named/U +nameless/PY +namely +nameplate/MS +namer/SM +name's +namesake/SM +Namibia/M +Namibian/S +naming/M +Nam/M +Nanak/M +Nana/M +Nananne/M +Nancee/M +Nance/M +Nancey/M +Nanchang/M +Nancie/M +Nanci/M +Nancy/M +Nanete/M +Nanette/M +Nanice/M +Nani/M +Nanine/M +Nanjing +Nanking's +Nan/M +Nannette/M +Nannie/M +Nanni/M +Nanny/M +nanny/SDMG +nanometer/MS +Nanon/M +Nanook/M +nanosecond/SM +Nansen/M +Nantes/M +Nantucket/M +Naoma/M +Naomi/M +napalm/MDGS +nape/SM +Naphtali/M +naphthalene/MS +naphtha/SM +Napier/M +napkin/SM +Naples/M +napless +Nap/M +Napoleonic +napoleon/MS +Napoleon/MS +napped +napper/MS +Nappie/M +napping +Nappy/M +nappy/TRSM +nap/SM +Nara/M +Narbonne/M +narc/DGS +narcissism/MS +narcissistic +narcissist/MS +narcissus/M +Narcissus/M +narcoleptic +narcoses +narcosis/M +narcotic/SM +narcotization/S +narcotize/GSD +Nariko/M +Nari/M +nark's +Narmada/M +Narragansett/M +narrate/VGNSDX +narration/M +narrative/MYS +narratology +narrator/SM +narrowing/P +narrowness/SM +narrow/RDYTGPS +narwhal/MS +nary +nasality/MS +nasalization/MS +nasalize/GDS +nasal/YS +NASA/MS +nascence/ASM +nascent/A +NASDAQ +Nash/M +Nashua/M +Nashville/M +Nassau/M +Nasser/M +nastily +nastiness/MS +nasturtium/SM +nasty/TRSP +natal +Natala/M +Natalee/M +Natale/M +Natalia/M +Natalie/M +Natalina/M +Nataline/M +natalist +natality/M +Natal/M +Natalya/M +Nata/M +Nataniel/M +Natasha/M +Natassia/M +Natchez +natch/S +Nate/XMN +Nathalia/M +Nathalie/M +Nathanael/M +Nathanial/M +Nathaniel/M +Nathanil/M +Nathan/MS +nationalism/SM +nationalistic +nationalistically +nationalist/MS +nationality/MS +nationalization/MS +nationalize/CSDG +nationalized/AU +nationalizer/SM +national/YS +nationhood/SM +nation/MS +nationwide +nativeness/M +native/PYS +Natividad/M +Nativity/M +nativity/MS +Natka/M +natl +Nat/M +NATO/SM +natter/SGD +nattily +nattiness/SM +Natty/M +natty/TRP +naturalism/MS +naturalistic +naturalist/MS +naturalization/SM +naturalized/U +naturalize/GSD +naturalness/US +natural/PUY +naturals +nature/ASDCG +nature's +naturist +Naugahyde/S +naughtily +naughtiness/SM +naught/MS +naughty/TPRS +Naur/M +Nauru/M +nausea/SM +nauseate/DSG +nauseating/Y +nauseousness/SM +nauseous/P +nautical/Y +nautilus/MS +Navaho's +Navajoes +Navajo/S +naval/Y +Navarro/M +navel/MS +nave/SM +navigability/SM +navigableness/M +navigable/P +navigate/DSXNG +navigational +navigation/M +navigator/MS +Navona/M +Navratilova/M +navvy/M +Navy/S +navy/SM +nay/MS +naysayer/S +Nazarene/MS +Nazareth/M +Nazi/SM +Nazism/S +NB +NBA +NBC +Nb/M +NBS +NC +NCAA +NCC +NCO +NCR +ND +N'Djamena +Ndjamena/M +Nd/M +Ne +NE +Neala/M +Neale/M +Neall/M +Neal/M +Nealon/M +Nealson/M +Nealy/M +Neanderthal/S +neap/DGS +Neapolitan/SM +nearby +nearly/RT +nearness/MS +nearside/M +nearsightedness/S +nearsighted/YP +near/TYRDPSG +neaten/DG +neath +neatness/MS +neat/YRNTXPS +Neb/M +Nebraska/M +Nebraskan/MS +Nebr/M +Nebuchadnezzar/MS +nebulae +nebula/M +nebular +nebulousness/SM +nebulous/PY +necessaries +necessarily/U +necessary/U +necessitate/DSNGX +necessitation/M +necessitous +necessity/SM +neckband/M +neckerchief/MS +neck/GRDMJS +necking/M +necklace/DSMG +neckline/MS +necktie/MS +necrology/SM +necromancer/MS +necromancy/MS +necromantic +necrophiliac/S +necrophilia/M +necropolis/SM +necropsy/M +necroses +necrosis/M +necrotic +nectarine/SM +nectarous +nectar/SM +nectary/MS +Neda/M +Nedda/M +Neddie/M +Neddy/M +Nedi/M +Ned/M +née +needed/U +needer/M +needful/YSP +Needham/M +neediness/MS +needlecraft/M +needle/GMZRSD +needlepoint/SM +needlessness/S +needless/YP +needlewoman/M +needlewomen +needlework/RMS +needn't +need/YRDGS +needy/TPR +Neel/M +Neely/M +ne'er +nefariousness/MS +nefarious/YP +Nefen/M +Nefertiti/M +negated/U +negater/M +negate/XRSDVNG +negation/M +negativeness/SM +negative/PDSYG +negativism/MS +negativity/MS +negator/MS +Negev/M +neglecter/M +neglectfulness/SM +neglectful/YP +neglect/SDRG +negligee/SM +negligence/MS +negligent/Y +negligibility/M +negligible +negligibly +negotiability/MS +negotiable/A +negotiant/M +negotiate/ASDXGN +negotiation/MA +negotiator/MS +Negress/MS +negritude/MS +Negritude/S +Negroes +negroid +Negroid/S +Negro/M +neg/S +Nehemiah/M +Nehru/M +neighbored/U +neighborer/M +neighborhood/SM +neighborlinesses +neighborliness/UM +neighborly/UP +neighbor/SMRDYZGJ +neigh/MDG +neighs +Neila/M +Neile/M +Neilla/M +Neille/M +Neill/M +Neil/SM +neither +Nelda/M +Nelia/M +Nelie/M +Nelle/M +Nellie/M +Nelli/M +Nell/M +Nelly/M +Nelsen/M +Nels/N +Nelson/M +nelson/MS +nematic +nematode/SM +Nembutal/M +nemeses +nemesis +Nemesis/M +neoclassical +neoclassicism/MS +neoclassic/M +neocolonialism/MS +neocortex/M +neodymium/MS +Neogene +neolithic +Neolithic/M +neologism/SM +neomycin/M +neonatal/Y +neonate/MS +neon/DMS +neophyte/MS +neoplasm/SM +neoplastic +neoprene/SM +Nepalese +Nepali/MS +Nepal/M +nepenthe/MS +nephew/MS +nephrite/SM +nephritic +nephritides +nephritis/M +nepotism/MS +nepotist/S +Neptune/M +neptunium/MS +nerd/S +nerdy/RT +Nereid/M +Nerf/M +Nerissa/M +Nerita/M +Nero/M +Neron/M +Nerta/M +Nerte/M +Nertie/M +Nerti/M +Nert/M +Nerty/M +Neruda/M +nervelessness/SM +nerveless/YP +nerve's +nerve/UGSD +nerviness/SM +nerving/M +nervousness/SM +nervous/PY +nervy/TPR +Nessa/M +Nessie/M +Nessi/M +Nessy/M +Nesta/M +nester/M +Nester/M +Nestle/M +nestler/M +nestle/RSDG +nestling/M +Nestorius/M +Nestor/M +nest/RDGSBM +netball/M +nether +Netherlander/SM +Netherlands/M +nethermost +netherworld/S +Netscape/M +net/SM +Netta/M +Nettie/M +Netti/M +netting/M +nett/JGRDS +Nettle/M +nettle/MSDG +nettlesome +Netty/M +network/SJMDG +Netzahualcoyotl/M +Neumann/M +neuralgia/MS +neuralgic +neural/Y +neurasthenia/MS +neurasthenic/S +neuritic/S +neuritides +neuritis/M +neuroanatomy +neurobiology/M +neurological/Y +neurologist/MS +neurology/SM +neuromuscular +neuronal +neurone/S +neuron/MS +neuropathology/M +neurophysiology/M +neuropsychiatric +neuroses +neurosis/M +neurosurgeon/MS +neurosurgery/SM +neurotically +neurotic/S +neurotransmitter/S +neuter/JZGRD +neutralise's +neutralism/MS +neutralist/S +neutrality/MS +neutralization/MS +neutralized/U +neutralize/GZSRD +neutral/PYS +neutrino/MS +neutron/MS +neut/ZR +Nevada/M +Nevadan/S +Nevadian/S +Neva/M +never +nevermore +nevertheless +nevi +Nevile/M +Neville/M +Nevil/M +Nevin/SM +Nevis/M +Nev/M +Nevsa/M +Nevsky/M +nevus/M +Newark/M +newbie/S +newborn/S +Newbury/M +Newburyport/M +Newcastle/M +newcomer/MS +newed/A +Newell/M +newel/MS +newer/A +newfangled +newfound +newfoundland +Newfoundlander/M +Newfoundland/SRMZ +newish +newline/SM +newlywed/MS +Newman/M +newness/MS +Newport/M +news/A +newsagent/MS +newsboy/SM +newscaster/M +newscasting/M +newscast/SRMGZ +newsdealer/MS +newsed +newses +newsflash/S +newsgirl/S +newsgroup/SM +newsing +newsletter/SM +NeWS/M +newsman/M +newsmen +newspaperman/M +newspapermen +newspaper/SMGD +newspaperwoman/M +newspaperwomen +newsprint/MS +new/SPTGDRY +newsreader/MS +newsreel/SM +newsroom/S +news's +newsstand/MS +Newsweekly/M +newsweekly/S +Newsweek/MY +newswire +newswoman/M +newswomen +newsworthiness/SM +newsworthy/RPT +newsy/TRS +newt/MS +Newtonian +Newton/M +newton/SM +Nexis/M +next +nexus/SM +Neysa/M +NF +NFC +NFL +NFS +Ngaliema/M +Nguyen/M +NH +NHL +niacin/SM +Niagara/M +Niall/M +Nial/M +Niamey/M +nibbed +nibbing +nibbler/M +nibble/RSDGZ +Nibelung/M +nib/SM +Nicaean +Nicaragua/M +Nicaraguan/S +Niccolo/M +Nice/M +Nicene +niceness/MS +nicety/MS +nice/YTPR +niche/SDGM +Nicholas +Nichole/M +Nicholle/M +Nichol/MS +Nicholson/M +nichrome +nickelodeon/SM +nickel/SGMD +nicker/GD +Nickey/M +nick/GZRDMS +Nickie/M +Nicki/M +Nicklaus/M +Nick/M +nicknack's +nickname/MGDRS +nicknamer/M +Nickolai/M +Nickola/MS +Nickolaus/M +Nicko/M +Nicky/M +Nicobar/M +Nicodemus/M +Nicolai/MS +Nicola/MS +Nicolea/M +Nicole/M +Nicolette/M +Nicoli/MS +Nicolina/M +Nicoline/M +Nicolle/M +Nicol/M +Nico/M +Nicosia/M +nicotine/MS +Niebuhr/M +niece/MS +Niel/MS +Nielsen/M +Niels/N +Nielson/M +Nietzsche/M +Nieves/M +nifty/TRS +Nigel/M +Nigeria/M +Nigerian/S +Nigerien +Niger/M +niggardliness/SM +niggardly/P +niggard/SGMDY +nigger/SGDM +niggler/M +niggle/RSDGZJ +niggling/Y +nigh/RDGT +nighs +nightcap/SM +nightclothes +nightclubbed +nightclubbing +nightclub/MS +nightdress/MS +nightfall/SM +nightgown/MS +nighthawk/MS +nightie/MS +Nightingale/M +nightingale/SM +nightlife/MS +nightlong +nightmare/MS +nightmarish/Y +nightshade/SM +nightshirt/MS +night/SMYDZ +nightspot/MS +nightstand/SM +nightstick/S +nighttime/S +nightwear/M +nighty's +NIH +nihilism/MS +nihilistic +nihilist/MS +Nijinsky/M +Nikaniki/M +Nike/M +Niki/M +Nikita/M +Nikkie/M +Nikki/M +Nikko/M +Nikolai/M +Nikola/MS +Nikolaos/M +Nikolaus/M +Nikolayev's +Nikoletta/M +Nikolia/M +Nikolos/M +Niko/MS +Nikon/M +Nile/SM +nilled +nilling +Nil/MS +nil/MYS +nilpotent +Nilsen/M +Nils/N +Nilson/M +Nilsson/M +Ni/M +nimbi +nimbleness/SM +nimble/TRP +nimbly +nimbus/DM +NIMBY +Nimitz/M +Nimrod/MS +Nina/M +nincompoop/MS +ninefold +nine/MS +ninepence/M +ninepin/S +ninepins/M +nineteen/SMH +nineteenths +ninetieths +Ninetta/M +Ninette/M +ninety/MHS +Nineveh/M +ninja/S +Ninnetta/M +Ninnette/M +ninny/SM +Ninon/M +Nintendo/M +ninth +ninths +Niobe/M +niobium/MS +nipped +nipper/DMGS +nippiness/S +nipping/Y +nipple/GMSD +Nipponese +Nippon/M +nippy/TPR +nip/S +Nirenberg/M +nirvana/MS +Nirvana/S +nisei +Nisei/MS +Nissa/M +Nissan/M +Nisse/M +Nissie/M +Nissy/M +Nita/M +niter/M +nitpick/DRSJZG +nitrate/MGNXSD +nitration/M +nitric +nitride/MGS +nitriding/M +nitrification/SM +nitrite/MS +nitrocellulose/MS +nitrogenous +nitrogen/SM +nitroglycerin/MS +nitrous +nitwit/MS +nit/ZSMR +Niven/M +nixer/M +nix/GDSR +Nixie/M +Nixon/M +NJ +Nkrumah/M +NLRB +nm +NM +no/A +NOAA +Noach/M +Noah/M +Noak/M +Noami/M +Noam/M +Nobelist/SM +nobelium/MS +Nobel/M +Nobe/M +Nobie/M +nobility/MS +Noble/M +nobleman/M +noblemen +nobleness/SM +noblesse/M +noble/TPSR +noblewoman +noblewomen +nob/MY +nobody/MS +Noby/M +nocturnal/SY +nocturne/SM +nodal/Y +nodded +nodding +noddle/MSDG +noddy/M +node/MS +NoDoz/M +nod/SM +nodular +nodule/SM +Noelani/M +Noella/M +Noelle/M +Noell/M +Noellyn/M +Noel/MS +noel/S +Noelyn/M +Noe/M +Noemi/M +noes/S +noggin/SM +nohow +noise/GMSD +noiselessness/SM +noiseless/YP +noisemaker/M +noisemake/ZGR +noisily +noisiness/MS +noisome +noisy/TPR +Nola/M +Nolana/M +Noland/M +Nolan/M +Nolie/M +Nollie/M +Noll/M +Nolly/M +No/M +nomadic +nomad/SM +Nome/M +nomenclature/MS +Nomi/M +nominalized +nominal/K +nominally +nominals +nominate/CDSAXNG +nomination/MAC +nominative/SY +nominator/CSM +nominee/MS +non +nonabrasive +nonabsorbent/S +nonacademic/S +nonacceptance/MS +nonacid/MS +nonactive +nonadaptive +nonaddictive +nonadhesive +nonadjacent +nonadjustable +nonadministrative +nonage/MS +nonagenarian/MS +nonaggression/SM +nonagricultural +Nonah/M +nonalcoholic/S +nonaligned +nonalignment/SM +nonallergic +Nona/M +nonappearance/MS +nonassignable +nonathletic +nonattendance/SM +nonautomotive +nonavailability/SM +nonbasic +nonbeliever/SM +nonbelligerent/S +nonblocking +nonbreakable +nonburnable +nonbusiness +noncaloric +noncancerous +noncarbohydrate/M +nonce/MS +nonchalance/SM +nonchalant/YP +nonchargeable +nonclerical/S +nonclinical +noncollectable +noncombatant/MS +noncombustible/S +noncommercial/S +noncommissioned +noncommittal/Y +noncom/MS +noncommunicable +noncompeting +noncompetitive +noncompliance/MS +noncomplying/S +noncomprehending +nonconducting +nonconductor/MS +nonconforming +nonconformist/SM +nonconformity/SM +nonconsecutive +nonconservative +nonconstructive +noncontagious +noncontiguous +noncontinuous +noncontributing +noncontributory +noncontroversial +nonconvertible +noncooperation/SM +noncorroding/S +noncorrosive +noncredit +noncriminal/S +noncritical +noncrystalline +noncumulative +noncustodial +noncyclic +nondairy +nondecreasing +nondeductible +nondelivery/MS +nondemocratic +nondenominational +nondepartmental +nondepreciating +nondescript/YS +nondestructive/Y +nondetachable +nondeterminacy +nondeterminate/Y +nondeterminism +nondeterministic +nondeterministically +nondisciplinary +nondisclosure/SM +nondiscrimination/SM +nondiscriminatory +nondramatic +nondrinker/SM +nondrying +nondurable +noneconomic +noneducational +noneffective/S +nonelastic +nonelectrical +nonelectric/S +nonemergency +nonempty +nonenforceable +nonentity/MS +nonequivalence/M +nonequivalent/S +none/S +nones/M +nonessential/S +nonesuch/SM +nonetheless +nonevent/MS +nonexchangeable +nonexclusive +nonexempt +nonexistence/MS +nonexistent +nonexplosive/S +nonextensible +nonfactual +nonfading +nonfat +nonfatal +nonfattening +nonferrous +nonfictional +nonfiction/SM +nonflammable +nonflowering +nonfluctuating +nonflying +nonfood/M +nonfreezing +nonfunctional +nongovernmental +nongranular +nonhazardous +nonhereditary +nonhuman +nonidentical +Nonie/M +Noni/M +noninclusive +nonindependent +nonindustrial +noninfectious +noninflammatory +noninflationary +noninflected +nonintellectual/S +noninteracting +noninterchangeable +noninterference/MS +nonintervention/SM +nonintoxicating +nonintuitive +noninvasive +nonionic +nonirritating +nonjudgmental +nonjudicial +nonlegal +nonlethal +nonlinearity/MS +nonlinear/Y +nonlinguistic +nonliterary +nonliving +nonlocal +nonmagical +nonmagnetic +nonmalignant +nonmember/SM +nonmetallic +nonmetal/MS +nonmigratory +nonmilitant/S +nonmilitary +Nonnah/M +Nonna/M +nonnarcotic/S +nonnative/S +nonnegative +nonnegotiable +nonnuclear +nonnumerical/S +nonobjective +nonobligatory +nonobservance/MS +nonobservant +nonoccupational +nonoccurence +nonofficial +nonogenarian +nonoperational +nonoperative +nonorthogonal +nonorthogonality +nonparallel/S +nonparametric +nonpareil/SM +nonparticipant/SM +nonparticipating +nonpartisan/S +nonpaying +nonpayment/SM +nonperformance/SM +nonperforming +nonperishable/S +nonperson/S +nonperturbing +nonphysical/Y +nonplus/S +nonplussed +nonplussing +nonpoisonous +nonpolitical +nonpolluting +nonporous +nonpracticing +nonprejudicial +nonprescription +nonprocedural/Y +nonproductive +nonprofessional/S +nonprofit/SB +nonprogrammable +nonprogrammer +nonproliferation/SM +nonpublic +nonpunishable +nonracial +nonradioactive +nonrandom +nonreactive +nonreciprocal/S +nonreciprocating +nonrecognition/SM +nonrecoverable +nonrecurring +nonredeemable +nonreducing +nonrefillable +nonrefundable +nonreligious +nonrenewable +nonrepresentational +nonresidential +nonresident/SM +nonresidual +nonresistance/SM +nonresistant/S +nonrespondent/S +nonresponse +nonrestrictive +nonreturnable/S +nonrhythmic +nonrigid +nonsalaried +nonscheduled +nonscientific +nonscoring +nonseasonal +nonsectarian +nonsecular +nonsegregated +nonsense/MS +nonsensicalness/M +nonsensical/PY +nonsensitive +nonsexist +nonsexual +nonsingular +nonskid +nonslip +nonsmoker/SM +nonsmoking +nonsocial +nonspeaking +nonspecialist/MS +nonspecializing +nonspecific +nonspiritual/S +nonstaining +nonstandard +nonstarter/SM +nonstick +nonstop +nonstrategic +nonstriking +nonstructural +nonsuccessive +nonsupervisory +nonsupport/GS +nonsurgical +nonsustaining +nonsympathizer/M +nontarnishable +nontaxable/S +nontechnical/Y +nontenured +nonterminal/MS +nonterminating +nontermination/M +nontheatrical +nonthinking/S +nonthreatening +nontoxic +nontraditional +nontransferable +nontransparent +nontrivial +nontropical +nonuniform +nonunion/S +nonuser/SM +nonvenomous +nonverbal/Y +nonveteran/MS +nonviable +nonviolence/SM +nonviolent/Y +nonvirulent +nonvocal +nonvocational +nonvolatile +nonvolunteer/S +nonvoter/MS +nonvoting +nonwhite/SM +nonworking +nonyielding +nonzero +noodle/GMSD +nook/MS +noonday/MS +noon/GDMS +nooning/M +noontide/MS +noontime/MS +noose/SDGM +nope/S +NORAD/M +noradrenalin +noradrenaline/M +Norah/M +Nora/M +Norbert/M +Norberto/M +Norbie/M +Norby/M +Nordhoff/M +Nordic/S +Nordstrom/M +Norean/M +Noreen/M +Norene/M +Norfolk/M +nor/H +Norina/M +Norine/M +normalcy/MS +normality/SM +normalization/A +normalizations +normalization's +normalized/AU +normalizes/AU +normalize/SRDZGB +normal/SY +Norma/M +Normand/M +Normandy/M +Norman/SM +normativeness/M +normative/YP +Normie/M +norm/SMGD +Normy/M +Norplant +Norrie/M +Norri/SM +Norristown/M +Norry/M +Norse +Norseman/M +Norsemen +Northampton/M +northbound +northeastern +northeaster/YM +Northeast/SM +northeastward/S +northeast/ZSMR +northerly/S +norther/MY +Northerner/M +northernmost +northern/RYZS +Northfield/M +northing/M +northland +North/M +northmen +north/MRGZ +Northrop/M +Northrup/M +norths +Norths +Northumberland/M +northward/S +northwestern +northwester/YM +northwest/MRZS +Northwest/MS +northwestward/S +Norton/M +Norwalk/M +Norway/M +Norwegian/S +Norwich/M +Norw/M +nosebag/M +nosebleed/SM +nosecone/S +nosedive/DSG +nosed/V +nosegay/MS +nose/M +Nosferatu/M +nos/GDS +nosh/MSDG +nosily +nosiness/MS +nosing/M +nostalgia/SM +nostalgically +nostalgic/S +Nostradamus/M +Nostrand/M +nostril/SM +nostrum/SM +nosy/SRPMT +notability/SM +notableness/M +notable/PS +notably +notarial +notarization/S +notarize/DSG +notary/MS +notate/VGNXSD +notational/CY +notation/CMSF +notative/CF +notch/MSDG +not/DRGB +notebook/MS +note/CSDFG +notedness/M +noted/YP +notepad/S +notepaper/MS +note's +noteworthiness/SM +noteworthy/P +nothingness/SM +nothing/PS +noticeable/U +noticeably +noticeboard/S +noticed/U +notice/MSDG +notifiable +notification/M +notifier/M +notify/NGXSRDZ +notional/Y +notion/MS +notoriety/S +notoriousness/M +notorious/YP +Notre/M +Nottingham/M +notwithstanding +Nouakchott/M +nougat/MS +Noumea/M +noun/SMK +nourish/DRSGL +nourished/U +nourisher/M +nourishment/SM +nous/M +nouveau +nouvelle +novae +Novak/M +Nova/M +nova/MS +novelette/SM +Novelia/M +novelist/SM +novelization/S +novelize/GDS +Novell/SM +novella/SM +novel/SM +novelty/MS +November/SM +novena/SM +novene +Novgorod/M +novice/MS +novitiate/MS +Nov/M +Novocaine/M +Novocain/S +Novokuznetsk/M +Novosibirsk/M +NOW +nowadays +noway/S +Nowell/M +nowhere/S +nowise +now/S +noxiousness/M +noxious/PY +Noyce/M +Noyes/M +nozzle/MS +Np +NP +NRA +nroff/M +N's +NS +n's/CI +NSF +n/T +NT +nth +nuance/SDM +nubbin/SM +nubby/RT +Nubia/M +Nubian/M +nubile +nub/MS +nuclear/K +nuclease/M +nucleated/A +nucleate/DSXNG +nucleation/M +nucleic +nuclei/M +nucleoli +nucleolus/M +nucleon/MS +nucleotide/MS +nucleus/M +nuclide/M +nude/CRS +nudely +nudeness/M +nudest +nudge/GSRD +nudger/M +nudism/MS +nudist/MS +nudity/MS +nugatory +Nugent/M +nugget/SM +nuisance/MS +nuke/DSMG +Nukualofa +null/DSG +nullification/M +nullifier/M +nullify/RSDXGNZ +nullity/SM +nu/M +numbered/UA +numberer/M +numberless +numberplate/M +number/RDMGJ +numbers/A +Numbers/M +numbing/Y +numbness/MS +numb/SGZTYRDP +numbskull's +numerable/IC +numeracy/SI +numeral/YMS +numerate/SDNGX +numerates/I +numeration/M +numerator/MS +numerical/Y +numeric/S +numerological +numerologist/S +numerology/MS +numerousness/M +numerous/YP +numinous/S +numismatic/S +numismatics/M +numismatist/MS +numskull/SM +Nunavut/M +nuncio/SM +Nunez/M +Nunki/M +nun/MS +nunnery/MS +nuptial/S +Nuremberg/M +Nureyev/M +nursemaid/MS +nurser/M +nurseryman/M +nurserymen +nursery/MS +nurse/SRDJGMZ +nursling/M +nurturer/M +nurture/SRDGZM +nus +nutate/NGSD +nutation/M +nutcracker/M +nutcrack/RZ +nuthatch/SM +nutmeat/SM +nutmegged +nutmegging +nutmeg/MS +nut/MS +nutpick/MS +Nutrasweet/M +nutria/SM +nutrient/MS +nutriment/MS +nutritional/Y +nutritionist/MS +nutrition/SM +nutritiousness/MS +nutritious/PY +nutritive/Y +nutshell/MS +nutted +nuttiness/SM +nutting +nutty/TRP +nuzzle/GZRSD +NV +NW +NWT +NY +Nyasa/M +NYC +Nydia/M +Nye/M +Nyerere/M +nylon/SM +nymphet/MS +nymph/M +nympholepsy/M +nymphomaniac/S +nymphomania/MS +nymphs +Nyquist/M +NYSE +Nyssa/M +NZ +o +O +oafishness/S +oafish/PY +oaf/MS +Oahu/M +Oakland/M +Oakley/M +Oakmont/M +oak/SMN +oakum/MS +oakwood +oar/GSMD +oarlock/MS +oarsman/M +oarsmen +oarswoman +oarswomen +OAS +oases +oasis/M +oatcake/MS +oater/M +Oates/M +oath/M +oaths +oatmeal/SM +oat/SMNR +Oaxaca/M +ob +OB +Obadiah/M +Obadias/M +obbligato/S +obduracy/S +obdurateness/S +obdurate/PDSYG +Obediah/M +obedience/EMS +obedient/EY +Obed/M +obeisance/MS +obeisant/Y +obelisk/SM +Oberlin/M +Oberon/M +obese +obesity/MS +obey/EDRGS +obeyer/EM +obfuscate/SRDXGN +obfuscation/M +obfuscatory +Obidiah/M +Obie/M +obi/MDGS +obit/SMR +obituary/SM +obj +objectify/GSDXN +objectionableness/M +objectionable/U +objectionably +objection/SMB +objectiveness/MS +objective/PYS +objectivity/MS +objector/SM +object/SGVMD +objurgate/GNSDX +objurgation/M +oblate/NYPSX +oblation/M +obligate/NGSDXY +obligational +obligation/M +obligatorily +obligatory +obliged/E +obliger/M +obliges/E +oblige/SRDG +obligingness/M +obliging/PY +oblique/DSYGP +obliqueness/S +obliquity/MS +obliterate/VNGSDX +obliteration/M +obliterative/Y +oblivion/MS +obliviousness/MS +oblivious/YP +oblongness/M +oblong/SYP +obloquies +obloquy/M +Ob/MD +obnoxiousness/MS +obnoxious/YP +oboe/SM +oboist/S +obos +O'Brien/M +obs +obscene/RYT +obscenity/MS +obscurantism/MS +obscurantist/MS +obscuration +obscureness/M +obscure/YTPDSRGL +obscurity/MS +obsequies +obsequiousness/S +obsequious/YP +obsequy +observability/M +observable/SU +observably +observance/MS +observantly +observants +observant/U +observational/Y +observation/MS +observatory/MS +observed/U +observer/M +observe/ZGDSRB +observing/Y +obsess/GVDS +obsessional +obsession/MS +obsessiveness/S +obsessive/PYS +obsidian/SM +obsolesce/GSD +obsolescence/S +obsolescent/Y +obsolete/GPDSY +obsoleteness/M +obstacle/SM +obstetrical +obstetrician/SM +obstetric/S +obstetrics/M +obstinacy/SM +obstinateness/M +obstinate/PY +obstreperousness/SM +obstreperous/PY +obstructed/U +obstructer/M +obstructionism/SM +obstructionist/MS +obstruction/SM +obstructiveness/MS +obstructive/PSY +obstruct/RDVGS +obtainable/U +obtainably +obtain/LSGDRB +obtainment/S +obtrude/DSRG +obtruder/M +obtrusion/S +obtrusiveness/MSU +obtrusive/UPY +obtuseness/S +obtuse/PRTY +obverse/YS +obviate/XGNDS +obviousness/SM +obvious/YP +Oby/M +ocarina/MS +O'Casey +Occam/M +occasional/Y +occasion/MDSJG +Occidental/S +occidental/SY +occident/M +Occident/SM +occipital/Y +occlude/GSD +occlusion/MS +occlusive/S +occulter/M +occultism/SM +occult/SRDYG +occupancy/SM +occupant/MS +occupational/Y +occupation/SAM +occupied/AU +occupier/M +occupies/A +occupy/RSDZG +occur/AS +occurred/A +occurrence/SM +occurring/A +oceanfront/MS +oceangoing +Oceania/M +oceanic +ocean/MS +oceanographer/SM +oceanographic +oceanography/SM +oceanology/MS +oceanside +Oceanside/M +Oceanus/M +ocelot/SM +ocher/DMGS +Ochoa/M +o'clock +O'Clock +O'Connell/M +O'Connor/M +Oconomowoc/M +OCR +octagonal/Y +octagon/SM +octahedral +octahedron/M +octal/S +octane/MS +octant/M +octave/MS +Octavia/M +Octavian/M +Octavio/M +Octavius/M +octavo/MS +octennial +octet/SM +octile +octillion/M +Oct/M +October/MS +octogenarian/MS +octopus/SM +octoroon/M +ocular/S +oculist/SM +OD +odalisque/SM +oddball/SM +oddity/MS +oddment/MS +oddness/MS +odd/TRYSPL +Odele/M +Odelia/M +Odelinda/M +Odella/M +Odelle/M +Odell/M +O'Dell/M +ode/MDRS +Ode/MR +Oderberg/MS +Oder/M +Odessa/M +Odets/M +Odetta/M +Odette/M +Odey/M +Odie/M +Odilia/M +Odille/M +Odin/M +odiousness/MS +odious/PY +Odis/M +odium/MS +Odo/M +odometer/SM +Odom/M +O'Donnell/M +odor/DMS +odoriferous +odorless +odorous/YP +ODs +O'Dwyer/M +Ody/M +Odysseus/M +Odyssey/M +odyssey/S +OE +OED +oedipal +Oedipal/Y +Oedipus/M +OEM/M +OEMS +oenology/MS +oenophile/S +o'er +O'Er +Oersted/M +oesophagi +oeuvre/SM +Ofelia/M +Ofella/M +offal/MS +offbeat/MS +offcuts +Offenbach/M +offender/M +offend/SZGDR +offense/MSV +offensively/I +offensiveness/MSI +offensive/YSP +offerer/M +offering/M +offer/RDJGZ +offertory/SM +offhand/D +offhandedness/S +offhanded/YP +officeholder/SM +officemate/S +officer/GMD +officership/S +office/SRMZ +officialdom/SM +officialism/SM +officially/U +official/PSYM +officiant/SM +officiate/XSDNG +officiation/M +officiator/MS +officio +officiousness/MS +officious/YP +offing/M +offish +offload/GDS +offprint/GSDM +offramp +offset/SM +offsetting +offshoot/MS +offshore +offside/RS +offspring/M +offstage/S +off/SZGDRJ +offtrack +Ofilia/M +of/K +often/RT +oftentimes +oft/NRT +ofttimes +Ogbomosho/M +Ogdan/M +Ogden/M +Ogdon/M +Ogilvy/M +ogive/M +Oglethorpe/M +ogle/ZGDSR +ogreish +ogre/MS +ogress/S +oh +OH +O'Hara +O'Hare/M +O'Higgins +Ohioan/S +Ohio/M +ohmic +ohmmeter/MS +ohm/SM +oho/S +ohs +OHSA/M +oilcloth/M +oilcloths +oiler/M +oilfield/MS +oiliness/SM +oilman/M +oil/MDRSZG +oilmen +oilseed/SM +oilskin/MS +oily/TPR +oink/GDS +ointment/SM +Oise/M +OJ +Ojibwa/SM +Okamoto/M +okapi/SM +Okayama/M +okay's +Okeechobee/M +O'Keeffe +Okefenokee +Okhotsk/M +Okinawa/M +Okinawan/S +Oklahoma/M +Oklahoman/SM +Okla/M +OK/MDG +okra/MS +OKs +Oktoberfest +Olaf/M +Olag/M +Ola/M +Olav/M +Oldenburg/M +olden/DG +Oldfield/M +oldie/MS +oldish +oldness/S +Oldsmobile/M +oldster/SM +Olduvai/M +old/XTNRPS +olé +oleaginous +oleander/SM +O'Leary/M +olefin/M +Oleg/M +Ole/MV +Olenek/M +Olenka/M +Olen/M +Olenolin/M +oleomargarine/SM +oleo/S +oles +olfactory +Olga/M +Olia/M +oligarchic +oligarchical +oligarch/M +oligarchs +oligarchy/SM +Oligocene +oligopolistic +oligopoly/MS +Olimpia/M +Olin/M +olive/MSR +Olive/MZR +Oliver/M +Olivero/M +Olivette/M +Olivetti/M +Olivia/M +Olivier/M +Olivie/RM +Oliviero/M +Oliy/M +Ollie/M +Olly/M +Olmec +Olmsted/M +Olsen/M +Olson/M +Olva/M +Olvan/M +Olwen/M +Olympe/M +Olympiad/MS +Olympian/S +Olympia/SM +Olympic/S +Olympie/M +Olympus/M +Omaha/SM +Oman/M +Omar/M +ombudsman/M +ombudsmen +Omdurman/M +omega/MS +omelet/SM +omelette's +omen/DMG +Omero/M +omicron/MS +ominousness/SM +ominous/YP +omission/MS +omit/S +omitted +omitting +omnibus/MS +omni/M +omnipotence/SM +Omnipotent +omnipotent/SY +omnipresence/MS +omnipresent/Y +omniscience/SM +omniscient/YS +omnivore/MS +omnivorousness/MS +omnivorous/PY +oms +Omsk/M +om/XN +ON +onanism/M +Onassis/M +oncer/M +once/SR +oncogene/S +oncologist/S +oncology/SM +oncoming/S +Ondrea/M +Oneal/M +Onega/M +Onegin/M +Oneida/SM +O'Neil +O'Neill +oneness/MS +one/NPMSX +oner/M +onerousness/SM +onerous/YP +oneself +onetime +oneupmanship +Onfre/M +Onfroi/M +ongoing/S +Onida/M +onion/GDM +onionskin/MS +onlooker/MS +onlooking +only/TP +Onofredo/M +Ono/M +onomatopoeia/SM +onomatopoeic +onomatopoetic +Onondaga/MS +onrush/GMS +on/RY +ons +Onsager/M +onset/SM +onsetting +onshore +onside +onslaught/MS +Ontarian/S +Ontario/M +Ont/M +onto +ontogeny/SM +ontological/Y +ontology/SM +onus/SM +onward/S +onyx/MS +oodles +ooh/GD +oohs +oolitic +Oona/M +oops/S +Oort/M +ooze/GDS +oozy/RT +opacity/SM +opalescence/S +opalescent/Y +Opalina/M +Opaline/M +Opal/M +opal/SM +opaque/GTPYRSD +opaqueness/SM +opcode/MS +OPEC +Opel/M +opencast +opened/AU +opener/M +openhandedness/SM +openhanded/P +openhearted +opening/M +openness/S +opens/A +openwork/MS +open/YRDJGZTP +operable/I +operandi +operand/SM +operant/YS +opera/SM +operate/XNGVDS +operatically +operatic/S +operationalization/S +operationalize/D +operational/Y +operation/M +operative/IP +operatively +operativeness/MI +operatives +operator/SM +operetta/MS +ope/S +Ophelia/M +Ophelie/M +Ophiuchus/M +ophthalmic/S +ophthalmologist/SM +ophthalmology/MS +opiate/GMSD +opine/XGNSD +opinionatedness/M +opinionated/PY +opinion/M +opioid +opium/MS +opossum/SM +opp +Oppenheimer/M +opponent/MS +opportune/IY +opportunism/SM +opportunistic +opportunistically +opportunist/SM +opportunity/MS +oppose/BRSDG +opposed/U +opposer/M +oppositeness/M +opposite/SXYNP +oppositional +opposition/M +oppress/DSGV +oppression/MS +oppressiveness/MS +oppressive/YP +oppressor/MS +opprobrious/Y +opprobrium/SM +Oprah/M +ops +opt/DSG +opthalmic +opthalmologic +opthalmology +optical/Y +optician/SM +optic/S +optics/M +optima +optimality +optimal/Y +optimise's +optimism/SM +optimistic +optimistically +optimist/SM +optimization/SM +optimize/DRSZG +optimized/U +optimizer/M +optimizes/U +optimum/SM +optionality/M +optional/YS +option/GDMS +optoelectronic +optometric +optometrist/MS +optometry/SM +opulence/SM +opulent/Y +opus/SM +op/XGDN +OR +oracle/GMSD +oracular +Oralee/M +Oralia/M +Oralie/M +Oralla/M +Oralle/M +oral/YS +Ora/M +orangeade/MS +Orange/M +orange/MS +orangery/SM +orangutan/MS +Oranjestad/M +Oran/M +orate/SDGNX +oration/M +oratorical/Y +oratorio/MS +orator/MS +oratory/MS +Orazio/M +Orbadiah/M +orbicular +orbiculares +orbital/MYS +orbit/MRDGZS +orb/SMDG +orchard/SM +orchestral/Y +orchestra/MS +orchestrate/GNSDX +orchestrater's +orchestration/M +orchestrator/M +orchid/SM +ordainer/M +ordainment/MS +ordain/SGLDR +ordeal/SM +order/AESGD +ordered/U +orderer +ordering/S +orderless +orderliness/SE +orderly/PS +order's/E +ordinal/S +ordinance/MS +ordinarily +ordinariness/S +ordinary/RSPT +ordinated +ordinate/I +ordinates +ordinate's +ordinating +ordination/SM +ordnance/SM +Ordovician +ordure/MS +oregano/SM +Oreg/M +Oregonian/S +Oregon/M +Orelee/M +Orelia/M +Orelie/M +Orella/M +Orelle/M +Orel/M +Oren/M +Ore/NM +ore/NSM +Oreo +Orestes +organdie's +organdy/MS +organelle/MS +organically/I +organic/S +organismic +organism/MS +organist/MS +organizable/UMS +organizational/MYS +organization/MEAS +organize/AGZDRS +organized/UE +organizer/MA +organizes/E +organizing/E +organ/MS +organometallic +organza/SM +orgasm/GSMD +orgasmic +orgiastic +orgy/SM +Oriana/M +oriel/MS +orientable +Oriental/S +oriental/SY +orientated/A +orientate/ESDXGN +orientates/A +orientation/AMES +orienteering/M +orienter +orient/GADES +orient's +Orient/SM +orifice/MS +orig +origami/MS +originality/SM +originally +original/US +originate/VGNXSD +origination/M +originative/Y +originator/SM +origin/MS +Orin/M +Orinoco/M +oriole/SM +Orion/M +orison/SM +Oriya/M +Orizaba/M +Orkney/M +Orland/M +Orlando/M +Orlan/M +Orleans +Orlick/M +Orlon/SM +Orly/M +ormolu/SM +or/MY +ornamental/SY +ornamentation/SM +ornament/GSDM +ornateness/SM +ornate/YP +orneriness/SM +ornery/PRT +ornithological +ornithologist/SM +ornithology/MS +orographic/M +orography/M +Orono/M +orotund +orotundity/MS +orphanage/MS +orphanhood/M +orphan/SGDM +Orpheus/M +Orphic +Orran/M +Orren/M +Orrin/M +orris/SM +Orr/MN +ors +Orsa/M +Orsola/M +Orson/M +Ortega/M +Ortensia/M +orthodontia/S +orthodontic/S +orthodontics/M +orthodontist/MS +orthodoxies +orthodoxly/U +Orthodox/S +orthodoxy's +orthodox/YS +orthodoxy/U +orthogonality/M +orthogonalization/M +orthogonalized +orthogonal/Y +orthographic +orthographically +orthography/MS +orthonormal +orthopedic/S +orthopedics/M +orthopedist/SM +orthophosphate/MS +orthorhombic +Ortiz/M +Orton/M +Orval/M +Orville/M +Orv/M +Orwellian +Orwell/M +o's +Osage/SM +Osaka/M +Osbert/M +Osborne/M +Osborn/M +Osbourne/M +Osbourn/M +Oscar/SM +Osceola/M +oscillate/SDXNG +oscillation/M +oscillator/SM +oscillatory +oscilloscope/SM +osculate/XDSNG +osculation/M +Osgood/M +OSHA +Oshawa/M +O'Shea/M +Oshkosh/M +osier/MS +Osiris/M +Oslo/M +Os/M +OS/M +Osman/M +osmium/MS +Osmond/M +osmoses +osmosis/M +osmotic +Osmund/M +osprey/SM +osseous/Y +Ossie/M +ossification/M +ossify/NGSDX +ostensible +ostensibly +ostentation/MS +ostentatiousness/M +ostentatious/PY +osteoarthritides +osteoarthritis/M +osteology/M +osteopathic +osteopath/M +osteopaths +osteopathy/MS +osteoporoses +osteoporosis/M +ostracise's +ostracism/MS +ostracize/GSD +Ostrander/M +ostrich/MS +Ostrogoth/M +Ostwald/M +O'Sullivan/M +Osvaldo/M +Oswald/M +Oswell/M +OT +OTB +OTC +Otes +Otha/M +Othelia/M +Othella/M +Othello/M +otherness/M +other/SMP +otherwise +otherworldly/P +otherworld/Y +Othilia/M +Othilie/M +Otho/M +otiose +Otis/M +OTOH +Ottawa/MS +otter/DMGS +Ottilie/M +Otto/M +Ottoman +ottoman/MS +Ouagadougou/M +oubliette/SM +ouch/SDG +oughtn't +ought/SGD +Ouija/MS +ounce/MS +our/S +ourself +ourselves +ouster/M +oust/RDGZS +outage/MS +outargue/GDS +outback/MRS +outbalance/GDS +outbidding +outbid/S +outboard/S +outboast/GSD +outbound/S +outbreak/SMG +outbroke +outbroken +outbuilding/SM +outburst/MGS +outcast/GSM +outclass/SDG +outcome/SM +outcropped +outcropping/S +outcrop/SM +outcry/MSDG +outdated/P +outdid +outdistance/GSD +outdoes +outdo/G +outdone +outdoor/S +outdoorsy +outdraw/GS +outdrawn +outdrew +outermost +outerwear/M +outface/SDG +outfall/MS +outfielder/M +outfield/RMSZ +outfight/SG +outfit/MS +outfitted +outfitter/MS +outfitting +outflank/SGD +outflow/SMDG +outfought +outfox/GSD +outgeneraled +outgoes +outgo/GJ +outgoing/P +outgrew +outgrip +outgrow/GSH +outgrown +outgrowth/M +outgrowths +outguess/SDG +outhit/S +outhitting +outhouse/SM +outing/M +outlaid +outlander/M +outlandishness/MS +outlandish/PY +outland/ZR +outlast/GSD +outlawry/M +outlaw/SDMG +outlay/GSM +outlet/SM +outliers +outline/SDGM +outlive/GSD +outlook/MDGS +outlying +outmaneuver/GSD +outmatch/SDG +outmigration +outmoded +outness/M +outnumber/GDS +outpaced +outpatient/SM +outperform/DGS +out/PJZGSDR +outplacement/S +outplay/GDS +outpoint/GDS +outpost/SM +outpouring/M +outpour/MJG +outproduce/GSD +output/SM +outputted +outputting +outrace/GSD +outrage/GSDM +outrageousness/M +outrageous/YP +outran +outrank/GSD +outré +outreach/SDG +outrider/MS +outrigger/SM +outright/Y +outrunning +outrun/S +outscore/GDS +outsell/GS +outset/MS +outsetting +outshine/SG +outshone +outshout/GDS +outsider/PM +outside/ZSR +outsize/S +outskirt/SM +outsmart/SDG +outsold +outsource/SDJG +outspend/SG +outspent +outspoke +outspokenness/SM +outspoken/YP +outspread/SG +outstanding/Y +outstate/NX +outstation/M +outstay/SDG +outstretch/GSD +outstripped +outstripping +outstrip/S +outtake/S +outvote/GSD +outwardness/M +outward/SYP +outwear/SG +outweigh/GD +outweighs +outwit/S +outwitted +outwitting +outwore +outwork/SMDG +outworn +ouzo/SM +oval/MYPS +ovalness/M +ova/M +ovarian +ovary/SM +ovate/SDGNX +ovation/GMD +ovenbird/SM +oven/MS +overabundance/MS +overabundant +overachieve/SRDGZ +overact/DGVS +overage/S +overaggressive +overallocation +overall/SM +overambitious +overanxious +overarching +overarm/GSD +overate +overattentive +overawe/GDS +overbalance/DSG +overbear/GS +overbearingness/M +overbearing/YP +overbidding +overbid/S +overbite/MS +overblown +overboard +overbold +overbook/SDG +overbore +overborne +overbought +overbuild/GS +overbuilt +overburdening/Y +overburden/SDG +overbuy/GS +overcame +overcapacity/M +overcapitalize/DSG +overcareful +overcast/GS +overcasting/M +overcautious +overcerebral +overcharge/DSG +overcloud/DSG +overcoating/M +overcoat/SMG +overcomer/M +overcome/RSG +overcommitment/S +overcompensate/XGNDS +overcompensation/M +overcomplexity/M +overcomplicated +overconfidence/MS +overconfident/Y +overconscientious +overconsumption/M +overcook/SDG +overcooled +overcorrection +overcritical +overcrowd/DGS +overcurious +overdecorate/SDG +overdependent +overdetermined +overdevelop/SDG +overdid +overdoes +overdo/G +overdone +overdose/DSMG +overdraft/SM +overdraw/GS +overdrawn +overdress/GDS +overdrew +overdrive/GSM +overdriven +overdrove +overdubbed +overdubbing +overdub/S +overdue +overeagerness/M +overeager/PY +overeater/M +overeat/GNRS +overeducated +overemotional +overemphases +overemphasis/M +overemphasize/GZDSR +overenthusiastic +overestimate/DSXGN +overestimation/M +overexcite/DSG +overexercise/SDG +overexert/GDS +overexertion/SM +overexploitation +overexploited +overexpose/GDS +overexposure/SM +overextend/DSG +overextension +overfall/M +overfed +overfeed/GS +overfill/GDS +overfishing +overflew +overflight/SM +overflow/DGS +overflown +overfly/GS +overfond +overfull +overgeneralize/GDS +overgenerous +overgraze/SDG +overgrew +overground +overgrow/GSH +overgrown +overgrowth/M +overgrowths +overhand/DGS +overhang/GS +overhasty +overhaul/GRDJS +overhead/S +overheard +overhearer/M +overhear/SRG +overheat/SGD +overhung +overincredulous +overindulgence/SM +overindulgent +overindulge/SDG +overinflated +overjoy/SGD +overkill/SDMG +overladed +overladen +overlaid +overlain +overland/S +overlap/MS +overlapped +overlapping +overlarge +overlay/GS +overleaf +overlie +overload/SDG +overlong +overlook/DSG +overlord/DMSG +overloud +overly/GRS +overmanning +overmaster/GSD +overmatching +overmodest +overmuch/S +overnice +overnight/SDRGZ +overoptimism/SM +overoptimistic +overpaid +overparticular +overpass/GMSD +overpay/LSG +overpayment/M +overplay/SGD +overpopulate/DSNGX +overpopulation/M +overpopulous +overpower/GSD +overpowering/Y +overpraise/DSG +overprecise +overpressure +overprice/SDG +overprint/DGS +overproduce/SDG +overproduction/S +overprotect/GVDS +overprotection/M +overqualified +overran +overrate/DSG +overreach/DSRG +overreaction/SM +overreact/SGD +overred +overrefined +overrepresented +overridden +overrider/M +override/RSG +overripe +overrode +overrule/GDS +overrunning +overrun/S +oversample/DG +oversaturate +oversaw +oversea/S +overseeing +overseen +overseer/M +oversee/ZRS +oversell/SG +oversensitiveness/S +oversensitive/P +oversensitivity +oversexed +overshadow/GSD +overshoe/SM +overshoot/SG +overshot/S +oversight/SM +oversimple +oversimplification/M +oversimplify/GXNDS +oversize/GS +oversleep/GS +overslept +oversoftness/M +oversoft/P +oversold +overspecialization/MS +overspecialize/GSD +overspend/SG +overspent +overspill/DMSG +overspread/SG +overstaffed +overstatement/SM +overstate/SDLG +overstay/GSD +overstepped +overstepping +overstep/S +overstimulate/DSG +overstock/SGD +overstraining +overstressed +overstretch/D +overstrict +overstrike/GS +overstrung +overstuffed +oversubscribe/SDG +oversubtle +oversupply/MDSG +oversuspicious +overtaken +overtake/RSZG +overtax/DSG +overthrew +overthrow/GS +overthrown +overtightened +overtime/MGDS +overtire/DSG +overtone/MS +overtook +overt/PY +overture/DSMG +overturn/SDG +overuse/DSG +overvalue/GSD +overview/MS +overweening +overweight/GSD +overwhelm/GDS +overwhelming/Y +overwinter/SDG +overwork/GSD +overwrap +overwrite/SG +overwritten +overwrote +overwrought +over/YGS +overzealousness/M +overzealous/P +Ovid/M +oviduct/SM +oviform +oviparous +ovoid/S +ovular +ovulate/GNXDS +ovulatory +ovule/MS +ovum/MS +ow/DYG +Owen/MS +owe/S +owlet/SM +owl/GSMDR +owlishness/M +owlish/PY +owned/U +own/EGDS +ownership/MS +owner/SM +oxalate/M +oxalic +oxaloacetic +oxblood/S +oxbow/SM +oxcart/MS +oxen/M +oxford/MS +Oxford/MS +oxidant/SM +oxidate/NVX +oxidation/M +oxidative/Y +oxide/SM +oxidization/MS +oxidized/U +oxidize/JDRSGZ +oxidizer/M +oxidizes/A +ox/MNS +Oxnard +Oxonian +oxtail/M +Oxus/M +oxyacetylene/MS +oxygenate/XSDMGN +oxygenation/M +oxygen/MS +oxyhydroxides +oxymora +oxymoron/M +oyster/GSDM +oystering/M +oz +Ozark/SM +Oz/M +ozone/SM +Ozymandias/M +Ozzie/M +Ozzy/M +P +PA +Pablo/M +Pablum/M +pablum/S +Pabst/M +pabulum/SM +PAC +pace/DRSMZG +Pace/M +pacemaker/SM +pacer/M +pacesetter/MS +pacesetting +Pacheco/M +pachyderm/MS +pachysandra/MS +pacific +pacifically +pacification/M +Pacific/M +pacifier/M +pacifism/MS +pacifistic +pacifist/MS +pacify/NRSDGXZ +package/ARSDG +packaged/U +packager/S +package's +packages/U +packaging/SM +Packard/SM +packed/AU +packer/MUS +packet/MSDG +pack/GZSJDRMB +packhorse/M +packinghouse/S +packing/M +packsaddle/SM +Packston/M +packs/UA +Packwood/M +Paco/M +Pacorro/M +pact/SM +Padang/M +padded/U +Paddie/M +padding/SM +paddle/MZGRSD +paddler/M +paddock/SDMG +Paddy/M +paddy/SM +Padget/M +Padgett/M +Padilla/M +padlock/SGDM +pad/MS +Padraic/M +Padraig/M +padre/MS +Padrewski/M +Padriac/M +paean/MS +paediatrician/MS +paediatrics/M +paedophilia's +paella/SM +paeony/M +Paganini/M +paganism/MS +pagan/SM +pageantry/SM +pageant/SM +pageboy/SM +paged/U +pageful +Page/M +page/MZGDRS +pager/M +paginate/DSNGX +Paglia/M +pagoda/MS +Pahlavi/M +paid/AU +Paige/M +pailful/SM +Pail/M +pail/SM +Paine/M +painfuller +painfullest +painfulness/MS +painful/YP +pain/GSDM +painkiller/MS +painkilling +painlessness/S +painless/YP +painstaking/SY +paint/ADRZGS +paintbox/M +paintbrush/SM +painted/U +painterly/P +painter/YM +painting/SM +paint's +paintwork +paired/UA +pair/JSDMG +pairs/A +pairwise +paisley/MS +pajama/MDS +Pakistani/S +Pakistan/M +palace/MS +paladin/MS +palaeolithic +palaeontologists +palaeontology/M +palanquin/MS +palatability/M +palatableness/M +palatable/P +palatalization/MS +palatalize/SDG +palatal/YS +palate/BMS +palatial/Y +palatinate/SM +Palatine +palatine/S +palaver/GSDM +paleface/SM +Palembang/M +paleness/S +Paleocene +Paleogene +paleographer/SM +paleography/SM +paleolithic +Paleolithic +paleontologist/S +paleontology/MS +Paleozoic +Palermo/M +pale/SPY +Palestine/M +Palestinian/S +Palestrina/M +palette/MS +Paley/M +palfrey/MS +palimony/S +palimpsest/MS +palindrome/MS +palindromic +paling/M +palisade/MGSD +Palisades/M +palish +Palladio/M +palladium/SM +pallbearer/SM +palletized +pallet/SMGD +pall/GSMD +palliate/SDVNGX +palliation/M +palliative/SY +pallidness/MS +pallid/PY +Pall/M +pallor/MS +palmate +palmer/M +Palmer/M +Palmerston/M +palmetto/MS +palm/GSMDR +palmist/MS +palmistry/MS +Palm/MR +Palmolive/M +palmtop/S +Palmyra/M +palmy/RT +Palo/M +Paloma/M +Palomar/M +palomino/MS +palpable +palpably +palpate/SDNGX +palpation/M +palpitate/NGXSD +palpitation/M +pal/SJMDRYTG +palsy/GSDM +paltriness/SM +paltry/TRP +paludal +Pa/M +Pamela/M +Pamelina/M +Pamella/M +pa/MH +Pamirs +Pam/M +Pammie/M +Pammi/M +Pammy/M +pampas/M +pamperer/M +pamper/RDSG +Pampers +pamphleteer/DMSG +pamphlet/SM +panacea/MS +panache/MS +Panama/MS +Panamanian/S +panama/S +pancake/MGSD +Panchito/M +Pancho/M +panchromatic +pancreas/MS +pancreatic +panda/SM +pandemic/S +pandemonium/SM +pander/ZGRDS +Pandora/M +panegyric/SM +pane/KMS +paneling/M +panelist/MS +panelization +panelized +panel/JSGDM +Pangaea/M +pang/GDMS +pangolin/M +panhandle/RSDGMZ +panicked +panicking +panicky/RT +panic/SM +panier's +panjandrum/M +Pankhurst/M +Pan/M +Panmunjom/M +panned +pannier/SM +panning +panoply/MSD +panorama/MS +panoramic +panpipes +Pansie/M +pan/SMD +Pansy/M +pansy/SM +Pantagruel/M +Pantaloon/M +pantaloons +pant/GDS +pantheism/MS +pantheistic +pantheist/S +pantheon/MS +panther/SM +pantie/SM +pantiled +pantograph/M +pantomime/SDGM +pantomimic +pantomimist/SM +pantry/SM +pantsuit/SM +pantyhose +pantyliner +pantywaist/SM +Panza/M +Paola/M +Paoli/M +Paolina/M +Paolo/M +papacy/SM +Papagena/M +Papageno/M +papal/Y +papa/MS +paparazzi +papaw/SM +papaya/MS +paperback/GDMS +paperboard/MS +paperboy/SM +paperer/M +papergirl/SM +paper/GJMRDZ +paperhanger/SM +paperhanging/SM +paperiness/M +paperless +paperweight/MS +paperwork/SM +papery/P +papillae +papilla/M +papillary +papist/MS +papoose/SM +Pappas/M +papped +papping +pappy/RST +paprika/MS +pap/SZMNR +papyri +papyrus/M +Paquito/M +parable/MGSD +parabola/MS +parabolic +paraboloidal/M +paraboloid/MS +Paracelsus/M +paracetamol/M +parachuter/M +parachute/RSDMG +parachutist/MS +Paraclete/M +parader/M +parade/RSDMZG +paradigmatic +paradigm/SM +paradisaic +paradisaical +Paradise/M +paradise/MS +paradoxic +paradoxicalness/M +paradoxical/YP +paradox/MS +paraffin/GSMD +paragon/SGDM +paragrapher/M +paragraph/MRDG +paragraphs +Paraguayan/S +Paraguay/M +parakeet/MS +paralegal/S +paralinguistic +parallax/SM +parallel/DSG +paralleled/U +parallelepiped/MS +parallelism/SM +parallelization/MS +parallelize/ZGDSR +parallelogram/MS +paralysis/M +paralytically +paralytic/S +paralyzedly/S +paralyzed/Y +paralyzer/M +paralyze/ZGDRS +paralyzingly/S +paralyzing/Y +paramagnetic +paramagnet/M +Paramaribo/M +paramecia +paramecium/M +paramedical/S +paramedic/MS +parameterization/SM +parameterize/BSDG +parameterized/U +parameterless +parameter/SM +parametric +parametrically +parametrization +parametrize/DS +paramilitary/S +paramount/S +paramour/MS +para/MS +Paramus/M +Paraná +paranoiac/S +paranoia/SM +paranoid/S +paranormal/SY +parapet/SMD +paraphernalia +paraphrase/GMSRD +paraphraser/M +paraplegia/MS +paraplegic/S +paraprofessional/SM +parapsychologist/S +parapsychology/MS +paraquat/S +parasite/SM +parasitically +parasitic/S +parasitism/SM +parasitologist/M +parasitology/M +parasol/SM +parasympathetic/S +parathion/SM +parathyroid/S +paratrooper/M +paratroop/RSZ +paratyphoid/S +parboil/DSG +parceled/U +parceling/M +parcel/SGMD +Parcheesi/M +parch/GSDL +parchment/SM +PARC/M +pardonableness/M +pardonable/U +pardonably/U +pardoner/M +pardon/ZBGRDS +paregoric/SM +parentage/MS +parental/Y +parenteral +parentheses +parenthesis/M +parenthesize/GSD +parenthetic +parenthetical/Y +parenthood/MS +parent/MDGJS +pare/S +paresis/M +pares/S +Pareto/M +parfait/SM +pariah/M +pariahs +parietal/S +parimutuel/S +paring/M +parishioner/SM +parish/MS +Parisian/SM +Paris/M +parity/ESM +parka/MS +Parke/M +Parker/M +Parkersburg/M +park/GJZDRMS +Parkhouse/M +parking/M +Parkinson/M +parkish +parkland/M +parklike +Parkman +Park/RMS +parkway/MS +parlance/SM +parlay/DGS +parley/MDSG +parliamentarian/SM +parliamentary/U +parliament/MS +Parliament/MS +parlor/SM +parlous +Parmesan/S +parmigiana +Parnassus/SM +Parnell/M +parochialism/SM +parochiality +parochial/Y +parodied/U +parodist/SM +parody/SDGM +parolee/MS +parole/MSDG +paroxysmal +paroxysm/MS +parquetry/SM +parquet/SMDG +parrakeet's +parred +parricidal +parricide/MS +parring +Parrish/M +Parr/M +Parrnell/M +parrot/GMDS +parrotlike +parry/GSD +Parry/M +parse +parsec/SM +parsed/U +Parsee's +parser/M +Parsifal/M +parsimonious/Y +parsimony/SM +pars/JDSRGZ +parsley/MS +parsnip/MS +parsonage/MS +parson/MS +Parsons/M +partaken +partaker/M +partake/ZGSR +part/CDGS +parterre/MS +parter/S +parthenogeneses +parthenogenesis/M +Parthenon/M +Parthia/M +partiality/MS +partial/SY +participant/MS +participate/NGVDSX +participation/M +participator/S +participatory +participial/Y +participle/MS +particleboard/S +particle/MS +particolored +particularistic +particularity/SM +particularization/MS +particularize/GSD +particular/SY +particulate/S +parting/MS +partisanship/SM +partisan/SM +partition/AMRDGS +partitioned/U +partitioner/M +partitive/S +partizan's +partly +partner/DMGS +partnership/SM +partook +partridge/MS +part's +parturition/SM +partway +party/RSDMG +parvenu/SM +par/ZGSJBMDR +Pasadena/M +PASCAL +Pascale/M +Pascal/M +pascal/SM +paschal/S +pasha/MS +Paso/M +Pasquale/M +pas/S +passably +passage/MGSD +passageway/MS +Passaic/M +passband +passbook/MS +passel/MS +passé/M +passenger/MYS +passerby +passer/M +passersby +passim +passing/Y +passionated +passionate/EYP +passionateness/EM +passionates +passionating +passioned +passionflower/MS +passioning +passionless +passion/SEM +Passion/SM +passivated +passiveness/S +passive/SYP +passivity/S +pass/JGVBZDSR +passkey/SM +passmark +passover +Passover/MS +passport/SM +password/SDM +pasta/MS +pasteboard/SM +pasted/UA +pastel/MS +paste/MS +Pasternak/M +pastern/SM +pasteup +pasteurization/MS +pasteurized/U +pasteurizer/M +pasteurize/RSDGZ +Pasteur/M +pastiche/MS +pastille/SM +pastime/SM +pastiness/SM +pastoralization/M +pastoral/SPY +pastorate/MS +pastor/GSDM +past/PGMDRS +pastrami/MS +pastry/SM +past's/A +pasts/A +pasturage/SM +pasture/MGSRD +pasturer/M +pasty/PTRS +Patagonia/M +Patagonian/S +patch/EGRSD +patcher/EM +patchily +patchiness/S +patch's +patchwork/RMSZ +patchy/PRT +patellae +patella/MS +Patel/M +Pate/M +paten/M +Paten/M +patentee/SM +patent/ZGMRDYSB +paterfamilias/SM +pater/M +paternalism/MS +paternalist +paternalistic +paternal/Y +paternity/SM +paternoster/SM +Paterson/M +pate/SM +pathetic +pathetically +pathfinder/MS +pathless/P +path/M +pathname/SM +pathogenesis/M +pathogenic +pathogen/SM +pathologic +pathological/Y +pathologist/MS +pathology/SM +pathos/SM +paths +pathway/MS +Patience/M +patience/SM +patient/MRYTS +patient's/I +patients/I +patina/SM +patine +Patin/M +patio/MS +Pat/MN +pat/MNDRS +Patna/M +patois/M +Paton/M +patresfamilias +patriarchal +patriarchate/MS +patriarch/M +patriarchs +patriarchy/MS +Patrica/M +Patrice/M +Patricia/M +patrician/MS +patricide/MS +Patricio/M +Patrick/M +Patric/M +patrimonial +patrimony/SM +patriotically +patriotic/U +patriotism/SM +patriot/SM +patristic/S +Patrizia/M +Patrizio/M +Patrizius/M +patrolled +patrolling +patrolman/M +patrolmen +patrol/MS +patrolwoman +patrolwomen +patronage/MS +patroness/S +patronization +patronized/U +patronize/GZRSDJ +patronizer/M +patronizes/A +patronizing's/U +patronizing/YM +patronymically +patronymic/S +patron/YMS +patroon/MS +patsy/SM +Patsy/SM +patted +Patten/M +patten/MS +patterer/M +pattern/GSDM +patternless +patter/RDSGJ +Patterson/M +Pattie/M +Patti/M +patting +Pattin/M +Patton/M +Patty/M +patty/SM +paucity/SM +Paula/M +Paule/M +Pauletta/M +Paulette/M +Paulie/M +Pauli/M +Paulina/M +Pauline +Pauling/M +Paulita/M +Paul/MG +Paulo/M +Paulsen/M +Paulson/M +Paulus/M +Pauly/M +paunch/GMSD +paunchiness/M +paunchy/RTP +pauperism/SM +pauperize/SDG +pauper/SGDM +pause/DSG +Pavarotti +paved/UA +pave/GDRSJL +Pavel/M +pavement/SGDM +paver/M +paves/A +Pavia/M +pavilion/SMDG +paving/A +paving's +Pavla/M +Pavlova/MS +Pavlovian +Pavlov/M +pawl/SM +paw/MDSG +pawnbroker/SM +pawnbroking/S +Pawnee/SM +pawner/M +pawn/GSDRM +pawnshop/MS +pawpaw's +Pawtucket/M +paxes +Paxon/M +Paxton/M +payable/S +pay/AGSLB +payback/S +paycheck/SM +payday/MS +payed +payee/SM +payer/SM +payload/SM +paymaster/SM +payment/ASM +Payne/SM +payoff/MS +payola/MS +payout/S +payroll/MS +payslip/S +Payson/M +Payton/M +Paz/M +Pb/M +PBS +PBX +PCB +PC/M +PCP +PCs +pct +pd +PD +Pd/M +PDP +PDQ +PDT +PE +Peabody/M +peaceableness/M +peaceable/P +peaceably +peacefuller +peacefullest +peacefulness/S +peaceful/PY +peace/GMDS +peacekeeping/S +Peace/M +peacemaker/MS +peacemaking/MS +peacetime/MS +peach/GSDM +Peachtree/M +peachy/RT +peacock/SGMD +Peadar/M +peafowl/SM +peahen/MS +peaked/P +peakiness/M +peak/SGDM +peaky/P +pealed/A +Peale/M +peal/MDSG +peals/A +pea/MS +peanut/SM +Pearce/M +Pearla/M +Pearle/M +pearler/M +Pearlie/M +Pearline/M +Pearl/M +pearl/SGRDM +pearly/TRS +Pearson/M +pear/SYM +peartrees +Peary/M +peasanthood +peasantry/SM +peasant/SM +peashooter/MS +peats/A +peat/SM +peaty/TR +pebble/MGSD +pebbling/M +pebbly/TR +Pebrook/M +pecan/SM +peccadilloes +peccadillo/M +peccary/MS +Pechora/M +pecker/M +peck/GZSDRM +Peckinpah/M +Peck/M +Pecos/M +pectic +pectin/SM +pectoral/S +peculate/NGDSX +peculator/S +peculiarity/MS +peculiar/SY +pecuniary +pedagogical/Y +pedagogic/S +pedagogics/M +pedagogue/SDGM +pedagogy/MS +pedal/SGRDM +pedantic +pedantically +pedantry/MS +pedant/SM +peddler/M +peddle/ZGRSD +pederast/SM +pederasty/SM +Peder/M +pedestal/GDMS +pedestrianization +pedestrianize/GSD +pedestrian/MS +pediatrician/SM +pediatric/S +pedicab/SM +pedicure/DSMG +pedicurist/SM +pedigree/DSM +pediment/DMS +pedlar's +pedometer/MS +pedophile/S +pedophilia +Pedro/M +peduncle/MS +peeing +peekaboo/SM +peek/GSD +peeler/M +peeling/M +Peel/M +peel/SJGZDR +peen/GSDM +peeper/M +peephole/SM +peep/SGZDR +peepshow/MS +peepy +peerage/MS +peer/DMG +peeress/MS +peerlessness/M +peerless/PY +peeve/GZMDS +peevers/M +peevishness/SM +peevish/YP +peewee/S +pee/ZDRS +Pegasus/MS +pegboard/SM +Pegeen/M +pegged +Peggie/M +Peggi/M +pegging +Peggy/M +Peg/M +peg/MS +peignoir/SM +Pei/M +Peiping/M +Peirce/M +pejoration/SM +pejorative/SY +peke/MS +Pekinese's +pekingese +Pekingese/SM +Peking/SM +pekoe/SM +pelagic +Pelee/M +Pele/M +pelf/SM +Pelham/M +pelican/SM +pellagra/SM +pellet/SGMD +pellucid +Peloponnese/M +pelter/M +pelt/GSDR +pelvic/S +pelvis/SM +Pembroke/M +pemmican/SM +penalization/SM +penalized/U +penalize/SDG +penalty/MS +penal/Y +Pena/M +penance/SDMG +pence/M +penchant/MS +pencil/SGJMD +pendant/SM +pend/DCGS +pendent/CS +Penderecki/M +Pendleton/M +pendulous +pendulum/MS +Penelopa/M +Penelope/M +penetrability/SM +penetrable +penetrate/SDVGNX +penetrating/Y +penetration/M +penetrativeness/M +penetrative/PY +penetrator/MS +penguin/MS +penicillin/SM +penile +peninsular +peninsula/SM +penis/MS +penitence/MS +penitential/YS +penitentiary/MS +penitent/SY +penknife/M +penknives +penlight/MS +pen/M +Pen/M +penman/M +penmanship/MS +penmen +Penna +pennant/SM +penned +Penney/M +Pennie/M +penniless +Penni/M +penning +Pennington/M +pennis +Penn/M +pennon/SM +Pennsylvania/M +Pennsylvanian/S +Penny/M +penny/SM +pennyweight/SM +pennyworth/M +penologist/MS +penology/MS +Penrod/M +Pensacola/M +pensioner/M +pension/ZGMRDBS +pensiveness/S +pensive/PY +pens/V +pentacle/MS +pentagonal/SY +Pentagon/M +pentagon/SM +pentagram/MS +pentameter/SM +pent/AS +Pentateuch/M +pentathlete/S +pentathlon/MS +pentatonic +pentecostal +Pentecostalism/S +Pentecostal/S +Pentecost/SM +penthouse/SDGM +Pentium/M +penuche/SM +penultimate/SY +penumbrae +penumbra/MS +penuriousness/MS +penurious/YP +penury/SM +peonage/MS +peon/MS +peony/SM +people/SDMG +Peoria/M +Pepe/M +Pepillo/M +Pepi/M +Pepin/M +Pepita/M +Pepito/M +pepped +peppercorn/MS +pepperer/M +peppergrass/M +peppermint/MS +pepperoni/S +pepper/SGRDM +peppery +peppiness/SM +pepping +peppy/PRT +Pepsico/M +PepsiCo/M +Pepsi/M +pepsin/SM +pep/SM +peptic/S +peptidase/SM +peptide/SM +peptizing +Pepys/M +Pequot/M +peradventure/S +perambulate/DSNGX +perambulation/M +perambulator/MS +percale/MS +perceivably +perceive/DRSZGB +perceived/U +perceiver/M +percentage/MS +percentile/SM +percent/MS +perceptible +perceptibly +perceptional +perception/MS +perceptiveness/MS +perceptive/YP +perceptual/Y +percept/VMS +Perceval/M +perchance +perch/GSDM +perchlorate/M +perchlorination +percipience/MS +percipient/S +Percival/M +percolate/NGSDX +percolation/M +percolator/MS +percuss/DSGV +percussionist/MS +percussion/SAM +percussiveness/M +percussive/PY +percutaneous/Y +Percy/M +perdition/MS +perdurable +peregrinate/XSDNG +peregrination/M +peregrine/S +Perelman/M +peremptorily +peremptory/P +perennial/SY +pères +perestroika/S +Perez/M +perfecta/S +perfect/DRYSTGVP +perfecter/M +perfectibility/MS +perfectible +perfectionism/MS +perfectionist/MS +perfection/MS +perfectiveness/M +perfective/PY +perfectness/MS +perfidiousness/M +perfidious/YP +perfidy/MS +perforated/U +perforate/XSDGN +perforation/M +perforce +performance/MS +performed/U +performer/M +perform/SDRZGB +perfumer/M +perfumery/SM +perfume/ZMGSRD +perfunctorily +perfunctoriness/M +perfunctory/P +perfused +perfusion/M +Pergamon/M +pergola/SM +perhaps/S +Peria/M +pericardia +pericardium/M +Perice/M +Periclean +Pericles/M +perigee/SM +perihelia +perihelion/M +peril/GSDM +Perilla/M +perilousness/M +perilous/PY +Peri/M +perimeter/MS +perinatal +perinea +perineum/M +periodic +periodical/YMS +periodicity/MS +period/MS +periodontal/Y +periodontics/M +periodontist/S +peripatetic/S +peripheral/SY +periphery/SM +periphrases +periphrasis/M +periphrastic +periscope/SDMG +perishable/SM +perish/BZGSRD +perishing/Y +peristalses +peristalsis/M +peristaltic +peristyle/MS +peritoneal +peritoneum/SM +peritonitis/MS +periwigged +periwigging +periwig/MS +periwinkle/SM +perjurer/M +perjure/SRDZG +perjury/MS +per/K +perk/GDS +perkily +perkiness/S +Perkin/SM +perky/TRP +Perla/M +Perle/M +Perl/M +permafrost/MS +permalloy/M +Permalloy/M +permanence/SM +permanency/MS +permanentness/M +permanent/YSP +permeability/SM +permeableness/M +permeable/P +permeate/NGVDSX +Permian +permissibility/M +permissibleness/M +permissible/P +permissibly +permission/SM +permissiveness/MS +permissive/YP +permit/SM +permitted +permitting +Perm/M +perm/MDGS +permutation/MS +permute/SDG +Pernell/M +perniciousness/MS +pernicious/PY +Pernod/M +Peron/M +peroration/SM +Perot/M +peroxidase/M +peroxide/MGDS +perpend/DG +perpendicularity/SM +perpendicular/SY +perpetrate/NGXSD +perpetration/M +perpetrator/SM +perpetual/SY +perpetuate/NGSDX +perpetuation/M +perpetuity/MS +perplex/DSG +perplexed/Y +perplexity/MS +perquisite/SM +Perren/M +Perri/M +Perrine/M +Perry/MR +persecute/XVNGSD +persecution/M +persecutor/MS +persecutory +Perseid/M +Persephone/M +Perseus/M +perseverance/MS +persevere/GSD +persevering/Y +Pershing/M +Persia/M +Persian/S +persiflage/MS +persimmon/SM +Persis/M +persist/DRSG +persistence/SM +persistent/Y +persnickety +personableness/M +personable/P +personae +personage/SM +personality/SM +personalization/CMS +personalize/CSDG +personalized/U +personalty/MS +personal/YS +persona/M +person/BMS +personification/M +personifier/M +personify/XNGDRS +personnel/SM +person's/U +persons/U +perspective/YMS +perspex +perspicaciousness/M +perspicacious/PY +perspicacity/S +perspicuity/SM +perspicuousness/M +perspicuous/YP +perspiration/MS +perspire/DSG +persuaded/U +persuader/M +persuade/ZGDRSB +persuasion/SM +persuasively +persuasiveness/MS +persuasive/U +pertain/GSD +Perth/M +pertinaciousness/M +pertinacious/YP +pertinacity/MS +pertinence/S +pertinent/YS +pertness/MS +perturbation/MS +perturbed/U +perturb/GDS +pertussis/SM +pert/YRTSP +peruke/SM +Peru/M +perusal/SM +peruser/M +peruse/RSDZG +Peruvian/S +pervade/SDG +pervasion/M +pervasiveness/MS +pervasive/PY +perverseness/SM +perverse/PXYNV +perversion/M +perversity/MS +pervert/DRSG +perverted/YP +perverter/M +perviousness +peseta/SM +Peshawar/M +peskily +peskiness/S +pesky/RTP +peso/MS +pessimal/Y +pessimism/SM +pessimistic +pessimistically +pessimist/SM +pester/DG +pesticide/MS +pestiferous +pestilence/SM +pestilential/Y +pestilent/Y +pestle/SDMG +pesto/S +pest/RZSM +PET +Pétain/M +petal/SDM +Peta/M +petard/MS +petcock/SM +Pete/M +peter/GD +Peter/M +Petersburg/M +Petersen/M +Peters/N +Peterson/M +Peterus/M +Petey/M +pethidine/M +petiole/SM +petiteness/M +petite/XNPS +petitioner/M +petition/GZMRD +petition's/A +petitions/A +petits +Petkiewicz/M +Pet/MRZ +Petra/M +Petrarch/M +petrel/SM +petri +petrifaction/SM +petrify/NDSG +Petrina/M +Petr/M +petrochemical/SM +petrodollar/MS +petroglyph/M +petrolatum/MS +petroleum/MS +petrolled +petrolling +petrol/MS +petrologist/MS +petrology/MS +Petronella/M +Petronia/M +Petronilla/M +Petronille/M +pet/SMRZ +petted +petter/MS +Pettibone/M +petticoat/SMD +pettifogged +pettifogger/SM +pettifogging +pettifog/S +pettily +pettiness/S +petting +pettis +pettishness/M +pettish/YP +Petty/M +petty/PRST +petulance/MS +petulant/Y +Petunia/M +petunia/SM +Peugeot/M +Pewaukee/M +pewee/MS +pewit/MS +pew/SM +pewter/SRM +peyote/SM +Peyter/M +Peyton/M +pf +Pfc +PFC +pfennig/SM +Pfizer/M +pg +PG +Phaedra/M +Phaethon/M +phaeton/MS +phage/M +phagocyte/SM +Phaidra/M +phalanger/MS +phalanges +phalanx/SM +phalli +phallic +phallus/M +Phanerozoic +phantasmagoria/SM +phantasmal +phantasm/SM +phantasy's +phantom/MS +pharaoh +Pharaoh/M +pharaohs +Pharaohs +pharisaic +Pharisaic +Pharisaical +pharisee/S +Pharisee/SM +pharmaceutical/SY +pharmaceutic/S +pharmaceutics/M +pharmacist/SM +pharmacological/Y +pharmacologist/SM +pharmacology/SM +pharmacopoeia/SM +pharmacy/SM +pharyngeal/S +pharynges +pharyngitides +pharyngitis/M +pharynx/M +phase/DSRGZM +phaseout/S +PhD +pheasant/SM +Phebe/M +Phedra/M +Phekda/M +Phelia/M +Phelps/M +phenacetin/MS +phenobarbital/SM +phenolic +phenol/MS +phenolphthalein/M +phenomenal/Y +phenomena/SM +phenomenological/Y +phenomenology/MS +phenomenon/SM +phenotype/MS +phenylalanine/M +phenyl/M +pheromone/MS +phew/S +phialled +phialling +phial/MS +Phidias/M +Philadelphia/M +philanderer/M +philander/SRDGZ +philanthropic +philanthropically +philanthropist/MS +philanthropy/SM +philatelic +philatelist/MS +philately/SM +Philbert/M +Philco/M +philharmonic/S +Philipa/M +Philip/M +Philippa/M +Philippe/M +Philippians/M +philippic/SM +Philippine/SM +Philis/M +philistine/S +Philistine/SM +philistinism/S +Phillida/M +Phillie/M +Phillipa/M +Phillipe/M +Phillip/MS +Phillipp/M +Phillis/M +Philly/SM +Phil/MY +philodendron/MS +philological/Y +philologist/MS +philology/MS +Philomena/M +philosopher/MS +philosophic +philosophical/Y +philosophized/U +philosophizer/M +philosophizes/U +philosophize/ZDRSG +philosophy/MS +philter/SGDM +philtre/DSMG +Phineas/M +Phip/M +Phipps/M +phi/SM +phlebitides +phlebitis/M +phlegmatic +phlegmatically +phlegm/SM +phloem/MS +phlox/M +pH/M +Ph/M +phobia/SM +phobic/S +Phobos/M +Phoebe/M +phoebe/SM +Phoenicia/M +Phoenician/SM +Phoenix/M +phoenix/MS +phone/DSGM +phoneme/SM +phonemically +phonemic/S +phonemics/M +phonetically +phonetician/SM +phonetic/S +phonetics/M +phonically +phonic/S +phonics/M +phoniness/MS +phonographer/M +phonographic +phonograph/RM +phonographs +phonologic +phonological/Y +phonologist/MS +phonology/MS +phonon/M +phony/PTRSDG +phooey/S +phosphatase/M +phosphate/MS +phosphide/M +phosphine/MS +phosphoresce +phosphorescence/SM +phosphorescent/Y +phosphoric +phosphor/MS +phosphorous +phosphorus/SM +photocell/MS +photochemical/Y +photochemistry/M +photocopier/M +photocopy/MRSDZG +photoelectric +photoelectrically +photoelectronic +photoelectrons +photoengraver/M +photoengrave/RSDJZG +photoengraving/M +photofinishing/MS +photogenic +photogenically +photograph/AGD +photographer/SM +photographic +photographically +photograph's +photographs/A +photography/MS +photojournalism/SM +photojournalist/SM +photoluminescence/M +photolysis/M +photolytic +photometer/SM +photometric +photometrically +photometry/M +photomicrograph/M +photomicrography/M +photomultiplier/M +photon/MS +photorealism +photosensitive +photo/SGMD +photosphere/M +photostatic +Photostat/MS +Photostatted +Photostatting +photosyntheses +photosynthesis/M +photosynthesize/DSG +photosynthetic +phototypesetter +phototypesetting/M +phrasal +phrase/AGDS +phrasebook +phrasemaking +phraseology/MS +phrase's +phrasing/SM +phrenological/Y +phrenologist/MS +phrenology/MS +phylactery/MS +phylae +phyla/M +Phylis/M +Phyllida/M +Phyllis/M +Phyllys/M +phylogeny/MS +phylum/M +Phylys/M +phys +physicality/M +physical/PYS +physician/SM +physicist/MS +physicked +physicking +physic/SM +physiochemical +physiognomy/SM +physiography/MS +physiologic +physiological/Y +physiologist/SM +physiology/MS +physiotherapist/MS +physiotherapy/SM +physique/MSD +phytoplankton/M +Piaf/M +Piaget/M +Pia/M +pianism/M +pianissimo/S +pianistic +pianist/SM +pianoforte/MS +pianola +Pianola/M +piano/SM +piaster/MS +piazza/SM +pibroch/M +pibrochs +picador/MS +picaresque/S +pica/SM +Picasso/M +picayune/S +Piccadilly/M +piccalilli/MS +piccolo/MS +pickaback's +pickaxe's +pickax/GMSD +pickerel/MS +Pickering/M +picker/MG +picketer/M +picket/MSRDZG +Pickett/M +Pickford/M +pick/GZSJDR +pickle/SDMG +Pickman/M +pickoff/S +pickpocket/GSM +pickup/SM +Pickwick/M +picky/RT +picnicked +picnicker/MS +picnicking +picnic/SM +picofarad/MS +picojoule +picoseconds +picot/DMGS +Pict/M +pictograph/M +pictographs +pictorialness/M +pictorial/PYS +picture/MGSD +picturesqueness/SM +picturesque/PY +piddle/GSD +piddly +pidgin/SM +piebald/S +piece/GMDSR +piecemeal +piecer/M +piecewise +pieceworker/M +piecework/ZSMR +piedmont +Piedmont/M +pieing +pie/MS +Pierce/M +piercer/M +pierce/RSDZGJ +piercing/Y +Pierette/M +pier/M +Pier/M +Pierre/M +Pierrette/M +Pierrot/M +Pierson/M +Pieter/M +Pietra/M +Pietrek/M +Pietro/M +piety/SM +piezoelectric +piezoelectricity/M +piffle/MGSD +pigeon/DMGS +pigeonhole/SDGM +pigged +piggery/M +pigging +piggishness/SM +piggish/YP +piggyback/MSDG +Piggy/M +piggy/RSMT +pigheadedness/S +pigheaded/YP +piglet/MS +pigmentation/MS +pigment/MDSG +pig/MLS +Pigmy's +pigpen/SM +pigroot +pigskin/MS +pigsty/SM +pigswill/M +pigtail/SMD +Pike/M +pike/MZGDRS +piker/M +pikestaff/MS +pilaf/MS +pilaster/SM +Pilate/M +pilau's +pilchard/SM +Pilcomayo/M +pile/JDSMZG +pileup/MS +pilferage/SM +pilferer/M +pilfer/ZGSRD +Pilgrim +pilgrimage/DSGM +pilgrim/MS +piling/M +pillage/RSDZG +pillar/DMSG +pillbox/MS +pill/GSMD +pillion/DMGS +pillory/MSDG +pillowcase/SM +pillow/GDMS +pillowslip/S +Pillsbury/M +pilot/DMGS +pilothouse/SM +piloting/M +pimento/MS +pimiento/SM +pimpernel/SM +pimp/GSMYD +pimple/SDM +pimplike +pimply/TRM +PIN +pinafore/MS +piñata/S +Pinatubo/M +pinball/MS +Pincas/M +pincer/GSD +Pinchas/M +pincher/M +pinch/GRSD +pincushion/SM +Pincus/M +Pindar/M +pineapple/MS +pined/A +Pinehurst/M +pine/MNGXDS +pines/A +pinfeather/SM +ping/GDRM +pinheaded/P +pinhead/SMD +pinhole/SM +pining/A +pinion/DMG +Pinkerton/M +pinkeye/MS +pink/GTYDRMPS +pinkie/SM +pinkish/P +pinkness/S +pinko/MS +pinky's +pinnacle/MGSD +pinnate +pinned/U +pinning/S +Pinocchio/M +Pinochet/M +pinochle/SM +piñon/S +pinpoint/SDG +pinprick/MDSG +pin's +pinsetter/SM +Pinsky/M +pinstripe/SDM +pintail/SM +Pinter/M +pint/MRS +pinto/S +pinup/MS +pin/US +pinwheel/DMGS +pinyin +Pinyin +piny/RT +pioneer/SDMG +pion/M +Piotr/M +piousness/MS +pious/YP +pipeline/DSMG +pipe/MS +piper/M +Piper/M +Pipestone/M +pipet's +pipette/MGSD +pipework +piping/YM +pipit/MS +pip/JSZMGDR +Pip/MR +Pippa/M +pipped +pipping +pippin/SM +Pippo/M +Pippy/M +pipsqueak/SM +piquancy/MS +piquantness/M +piquant/PY +pique/GMDS +piracy/MS +Piraeus/M +Pirandello/M +piranha/SM +pirate/MGSD +piratical/Y +pirogi +pirogies +pirouette/MGSD +pis +Pisa/M +piscatorial +Pisces/M +Pisistratus/M +pismire/SM +Pissaro/M +piss/DSRG +pistachio/MS +piste/SM +pistillate +pistil/MS +pistoleers +pistole/M +pistol/SMGD +piston/SM +pitapat/S +pitapatted +pitapatting +pita/SM +Pitcairn/M +pitchblende/SM +pitcher/M +pitchfork/GDMS +pitching/M +pitchman/M +pitchmen +pitch/RSDZG +pitchstone/M +piteousness/SM +piteous/YP +pitfall/SM +pithily +pithiness/SM +pith/MGDS +piths +pithy/RTP +pitiableness/M +pitiable/P +pitiably +pitier/M +pitifuller +pitifullest +pitifulness/M +pitiful/PY +pitilessness/SM +pitiless/PY +pitman/M +pit/MS +Pitney/M +piton/SM +pittance/SM +pitted +pitting +Pittman/M +Pittsburgh/ZM +Pittsfield/M +Pitt/SM +Pittston/M +pituitary/SM +pitying/Y +pity/ZDSRMG +Pius/M +pivotal/Y +pivot/DMSG +pivoting/M +pix/DSG +pixel/SM +pixie/MS +pixiness +pixmap/SM +Pizarro/M +pizazz/S +pi/ZGDRH +pizza/SM +pizzeria/SM +pizzicati +pizzicato +pj's +PJ's +pk +pkg +pkt +pkwy +Pkwy +pl +placard/DSMG +placate/NGVXDRS +placatory +placeable/A +placebo/SM +placed/EAU +place/DSRJLGZM +placeholder/S +placekick/DGS +placeless/Y +placement/AMES +placental/S +placenta/SM +placer/EM +places/EA +placidity/SM +placidness/M +placid/PY +placing/AE +placket/SM +plagiarism/MS +plagiarist/MS +plagiarize/GZDSR +plagiary/SM +plagued/U +plague/MGRSD +plaguer/M +plaice/M +plaid/DMSG +plainclothes +plainclothesman +plainclothesmen +Plainfield/M +plainness/MS +plainsman/M +plainsmen +plainsong/SM +plainspoken +plain/SPTGRDY +plaintiff/MS +plaintiveness/M +plaintive/YP +plaint/VMS +Plainview/M +plaiting/M +plait/SRDMG +planar +planarity +Planck/M +plan/DRMSGZ +planeload +planer/M +plane's +plane/SCGD +planetarium/MS +planetary +planetesimal/M +planet/MS +planetoid/SM +plangency/S +plangent +planking/M +plank/SJMDG +plankton/MS +planned/U +planner/SM +planning +Plano +planoconcave +planoconvex +Plantagenet/M +plantain/MS +plantar +plantation/MS +planter/MS +planting/S +plantlike +plant's +plant/SADG +plaque/MS +plash/GSDM +plasma/MS +plasmid/S +plasm/M +plasterboard/MS +plasterer/M +plastering/M +plaster/MDRSZG +plasterwork/M +plastically +plasticine +Plasticine/M +plasticity/SM +plasticize/GDS +plastic/MYS +plateau/GDMS +plateful/S +platelet/SM +platen/M +plater/M +plate/SM +platform/SGDM +Plath/M +plating/M +platinize/GSD +platinum/MS +platitude/SM +platitudinous/Y +plat/JDNRSGXZ +Plato/M +platonic +Platonic +Platonism/M +Platonist +platoon/MDSG +platted +Platte/M +platter/MS +Platteville/M +platting +platypus/MS +platys +platy/TR +plaudit/MS +plausibility/S +plausible/P +plausibly +Plautus/M +playability/U +playable/U +playacting/M +playact/SJDG +playback/MS +playbill/SM +Playboy/M +playboy/SM +play/DRSEBG +played/A +player's/E +player/SM +playfellow/S +playfulness/MS +playful/PY +playgirl/SM +playgoer/MS +playground/MS +playgroup/S +playhouse/SM +playing/S +playmate/MS +playoff/S +playpen/SM +playroom/SM +plays/A +Playtex/M +plaything/MS +playtime/SM +playwright/SM +playwriting/M +plaza/SM +pleader/MA +pleading/MY +plead/ZGJRDS +pleasanter +pleasantest +pleasantness/SMU +pleasantry/MS +pleasant/UYP +pleased/EU +pleaser/M +pleases/E +please/Y +pleasingness/M +pleasing/YP +plea/SM +pleas/RSDJG +pleasurableness/M +pleasurable/P +pleasurably +pleasureful +pleasure/MGBDS +pleasure's/E +pleasures/E +pleater/M +pleat/RDMGS +plebeian/SY +plebe/MS +plebiscite/SM +plectra +plectrum/SM +pledger/M +pledge/RSDMG +Pleiads +Pleistocene +plenary/S +plenipotentiary/S +plenitude/MS +plenteousness/M +plenteous/PY +plentifulness/M +plentiful/YP +plenty/SM +plenum/M +pleonasm/MS +plethora/SM +pleurae +pleural +pleura/M +pleurisy/SM +Plexiglas/MS +plexus/SM +pliability/MS +pliableness/M +pliable/P +pliancy/MS +pliantness/M +pliant/YP +plication/MA +plier/MA +plight/GMDRS +plimsolls +plinker/M +plink/GRDS +plinth/M +plinths +Pliny/M +Pliocene/S +PLO +plodded +plodder/SM +plodding/SY +plod/S +plopped +plopping +plop/SM +plosive +plot/SM +plotted/A +plotter/MDSG +plotting +plover/MS +plowed/U +plower/M +plowman/M +plowmen +plow/SGZDRM +plowshare/MS +ploy's +ploy/SCDG +plucker/M +pluckily +pluckiness/SM +pluck/SGRD +plucky/TPR +pluggable +plugged/UA +plugging/AU +plughole +plug's +plug/US +plumage/DSM +plumbago/M +plumbed/U +plumber/M +plumbing/M +plumb/JSZGMRD +plume/SM +plummer +plummest +plummet/DSG +plummy +plumper/M +plumpness/S +plump/RDNYSTGP +plum/SMDG +plumy/TR +plunder/GDRSZ +plunger/M +plunge/RSDZG +plunker/M +plunk/ZGSRD +pluperfect/S +pluralism/MS +pluralistic +pluralist/S +plurality/SM +pluralization/MS +pluralize/GZRSD +pluralizer/M +plural/SY +plushness/MS +plush/RSYMTP +plushy/RPT +plus/S +plussed +plussing +Plutarch/M +plutocracy/MS +plutocratic +plutocrat/SM +Pluto/M +plutonium/SM +pluvial/S +ply/AZNGRSD +Plymouth/M +plywood/MS +pm +PM +Pm/M +PMS +pneumatically +pneumatic/S +pneumatics/M +pneumonia/MS +PO +poacher/M +poach/ZGSRD +Pocahontas/M +pocketbook/SM +pocketful/SM +pocketing/M +pocketknife/M +pocketknives +pocket/MSRDG +pock/GDMS +pockmark/MDSG +Pocono/MS +podded +podding +podge/ZR +Podgorica/M +podiatrist/MS +podiatry/MS +podium/MS +pod/SM +Podunk/M +Poe/M +poem/MS +poesy/GSDM +poetaster/MS +poetess/MS +poetically +poeticalness +poetical/U +poetic/S +poetics/M +poet/MS +poetry/SM +pogo +Pogo/M +pogrom/GMDS +poignancy/MS +poignant/Y +Poincaré/M +poinciana/SM +Poindexter/M +poinsettia/SM +pointblank +pointedness/M +pointed/PY +pointer/M +pointillism/SM +pointillist/SM +pointing/M +pointlessness/SM +pointless/YP +point/RDMZGS +pointy/TR +poise/M +pois/GDS +poi/SM +poisoner/M +poisoning/M +poisonous/PY +poison/RDMZGSJ +Poisson/M +poke/DRSZG +Pokemon/M +pokerface/D +poker/M +poky/SRT +Poland/M +Polanski/M +polarimeter/SM +polarimetry +polariscope/M +Polaris/M +polarity/MS +polarization/CMS +polarized/UC +polarize/RSDZG +polarizes/C +polarizing/C +polarogram/SM +polarograph +polarography/M +Polaroid/SM +polar/S +polecat/SM +polemical/Y +polemicist/S +polemic/S +polemics/M +pole/MS +Pole/MS +poler/M +polestar/S +poleward/S +pol/GMDRS +policeman/M +policemen/M +police/MSDG +policewoman/M +policewomen +policyholder/MS +policymaker/S +policymaking +policy/SM +poliomyelitides +poliomyelitis/M +polio/SM +Polish +polished/U +polisher/M +polish/RSDZGJ +polis/M +Politburo/M +politburo/S +politeness/MS +polite/PRTY +politesse/SM +politically +political/U +politician/MS +politicization/S +politicize/CSDG +politicked +politicking/SM +politico/SM +politic/S +politics/M +polity/MS +polka/SDMG +Polk/M +pollack/SM +Pollard/M +polled/U +pollen/GDM +pollinate/XSDGN +pollination/M +pollinator/MS +polliwog/SM +poll/MDNRSGX +pollock's +Pollock/SM +pollster/MS +pollutant/MS +polluted/U +polluter/M +pollute/RSDXZVNG +pollution/M +Pollux/M +Pollyanna/M +Polly/M +pollywog's +Pol/MY +Polo/M +polo/MS +polonaise/MS +polonium/MS +poltergeist/SM +poltroon/MS +polyandrous +polyandry/MS +polyatomic +polybutene/MS +polycarbonate +polychemicals +polychrome +polyclinic/MS +polycrystalline +polyelectrolytes +polyester/SM +polyether/S +polyethylene/SM +polygamist/MS +polygamous/Y +polygamy/MS +polyglot/S +polygonal/Y +polygon/MS +polygraph/MDG +polygraphs +polygynous +polyhedral +polyhedron/MS +Polyhymnia/M +polyisobutylene +polyisocyanates +polymath/M +polymaths +polymerase/S +polymeric +polymerization/SM +polymerize/SDG +polymer/MS +polymorphic +polymorphisms +polymorph/M +polymyositis +Polynesia/M +Polynesian/S +polynomial/YMS +Polyphemus/M +polyphonic +polyphony/MS +polyphosphate/S +polyp/MS +polypropylene/MS +polystyrene/SM +polysyllabic +polysyllable/SM +polytechnic/MS +polytheism/SM +polytheistic +polytheist/SM +polythene/M +polytonal/Y +polytopes +polyunsaturated +polyurethane/SM +polyvinyl/MS +Po/M +pomade/MGSD +pomander/MS +pomegranate/SM +Pomerania/M +Pomeranian +pommel/GSMD +Pomona/M +Pompadour/M +pompadour/MDS +pompano/SM +Pompeian/S +Pompeii/M +Pompey/M +pompom/SM +pompon's +pomposity/MS +pompousness/S +pompous/YP +pomp/SM +ponce/M +Ponce/M +Ponchartrain/M +poncho/MS +ponderer/M +ponderousness/MS +ponderous/PY +ponder/ZGRD +pond/SMDRGZ +pone/SM +pongee/MS +poniard/GSDM +pons/M +Pontchartrain/M +Pontiac/M +Pontianak/M +pontiff/MS +pontifical/YS +pontificate/XGNDS +pontoon/SMDG +pony/DSMG +ponytail/SM +pooch/GSDM +poodle/MS +poof/MS +pooh/DG +Pooh/M +poohs +Poole/M +pool/MDSG +poolroom/MS +poolside +Poona/M +poop/MDSG +poorboy +poorhouse/MS +poorness/MS +poor/TYRP +popcorn/MS +Popek/MS +pope/SM +Pope/SM +Popeye/M +popgun/SM +popinjay/MS +poplar/SM +poplin/MS +Popocatepetl/M +popover/SM +poppa/MS +popped +Popper/M +popper/SM +poppet/M +popping +Poppins/M +poppycock/MS +Poppy/M +poppy/SDM +poppyseed +Popsicle/MS +pop/SM +populace/MS +popularism +popularity/UMS +popularization/SM +popularize/A +popularized +popularizer/MS +popularizes/U +popularizing +popular/YS +populate/CXNGDS +populated/UA +populates/A +populating/A +population/MC +populism/S +populist/SM +populousness/MS +populous/YP +porcelain/SM +porch/SM +porcine +porcupine/MS +pore/ZGDRS +Porfirio/M +porgy/SM +poring/Y +porker/M +porky/TSR +pork/ZRMS +pornographer/SM +pornographic +pornographically +pornography/SM +porno/S +porn/S +porosity/SM +porousness/MS +porous/PY +porphyritic +porphyry/MS +porpoise/DSGM +porridge/MS +Porrima/M +porringer/MS +Porsche/M +portability/S +portables +portable/U +portably +port/ABSGZMRD +portage/ASM +portaged +portaging +portal/SM +portamento/M +portcullis/MS +ported/CE +Porte/M +portend/SDG +portentousness/M +portentous/PY +portent/SM +porterage/M +porter/DMG +porterhouse/SM +Porter/M +porter's/A +portfolio/MS +porthole/SM +Portia/M +porticoes +portico/M +Portie/M +portière/SM +porting/E +portion/KGSMD +Portland/M +portliness/SM +portly/PTR +portmanteau/SM +Port/MR +Pôrto/M +portraitist/SM +portrait/MS +portraiture/MS +portrayal/SM +portrayer/M +portray/GDRS +ports/CE +Portsmouth/M +Portugal/M +Portuguese/M +portulaca/MS +Porty/M +posed/CA +Poseidon/M +poser/KME +poses/CA +poseur/MS +pose/ZGKDRSE +posh/DSRGT +posing/CA +positifs +positionable +positional/KY +position/KGASMD +position's/EC +positions/EC +positiveness/S +positive/RSPYT +positivism/M +positivist/S +positivity +positron/SM +posit/SCGD +Posner/M +posse/M +possess/AGEDS +possessed/PY +possession/AEMS +possessional +possessiveness/MS +possessive/PSMY +possessor/MS +possibility/SM +possible/TRS +possibly +poss/S +possum/MS +postage/MS +postal/S +post/ASDRJG +postbag/M +postbox/SM +postcard/SM +postcode/SM +postcondition/S +postconsonantal +postdate/DSG +postdoctoral +posteriori +posterior/SY +posterity/SM +poster/MS +postfix/GDS +postgraduate/SM +posthaste/S +posthumousness/M +posthumous/YP +posthypnotic +postilion/MS +postindustrial +posting/M +postlude/MS +Post/M +postman/M +postmarital +postmark/GSMD +postmaster/SM +postmen +postmeridian +postmistress/MS +postmodern +postmodernist +postmortem/S +postnasal +postnatal +postoperative/Y +postorder +postpaid +postpartum +postpone/GLDRS +postponement/S +postpositions +postprandial +post's +postscript/SM +postsecondary +postulate/XGNSD +postulation/M +postural +posture/MGSRD +posturer/M +postvocalic +postwar +posy/SM +potability/SM +potableness/M +potable/SP +potage/M +potash/MS +potassium/MS +potatoes +potato/M +potbelly/MSD +potboiler/M +potboil/ZR +pot/CMS +Potemkin/M +potency/MS +potentate/SM +potentiality/MS +potential/SY +potentiating +potentiometer/SM +potent/YS +potful/SM +pothead/MS +potherb/MS +pother/GDMS +potholder/MS +pothole/SDMG +potholing/M +pothook/SM +potion/SM +potlatch/SM +potluck/MS +Potomac/M +potpie/SM +potpourri/SM +Potsdam/M +potsherd/MS +potshot/S +pottage/SM +Pottawatomie/M +potted +Potter/M +potter/RDMSG +pottery/MS +potting +Potts/M +potty/SRT +pouch/SDMG +Poughkeepsie/M +Poul/M +poulterer/MS +poultice/DSMG +poultry/MS +pounce/SDG +poundage/MS +pounder/MS +pound/KRDGS +Pound/M +pour/DSG +pourer's +Poussin/MS +pouter/M +pout/GZDRS +poverty/MS +POW +powderpuff +powder/RDGMS +powdery +Powell/M +powerboat/MS +powerfulness/M +powerful/YP +power/GMD +powerhouse/MS +powerlessness/SM +powerless/YP +Powers +Powhatan/M +pow/RZ +powwow/GDMS +pox/GMDS +Poznan/M +pp +PP +ppm +ppr +PPS +pr +PR +practicability/S +practicable/P +practicably +practicality/SM +practicalness/M +practical/YPS +practice/BDRSMG +practiced/U +practicer/M +practicum/SM +practitioner/SM +Pradesh/M +Prado/M +Praetorian +praetorian/S +praetor/MS +pragmatical/Y +pragmatic/S +pragmatics/M +pragmatism/MS +pragmatist/MS +Prague/M +Praia +prairie/MS +praise/ESDG +praiser/S +praise's +praiseworthiness/MS +praiseworthy/P +praising/Y +Prakrit/M +praline/MS +pram/MS +prancer/M +prance/ZGSRD +prancing/Y +prank/SMDG +prankster/SM +praseodymium/SM +Pratchett/M +prate/DSRGZ +prater/M +pratfall/MS +prating/Y +prattle/DRSGZ +prattler/M +prattling/Y +Pratt/M +Prattville/M +Pravda/M +prawn/MDSG +praxes +praxis/M +Praxiteles/M +pray/DRGZS +prayerbook +prayerfulness/M +prayerful/YP +prayer/M +PRC +preach/DRSGLZJ +preacher/M +preaching/Y +preachment/MS +preachy/RT +preadolescence/S +Preakness/M +preallocate/XGNDS +preallocation/M +preallocator/S +preamble/MGDS +preamp +preamplifier/M +prearrange/LSDG +prearrangement/SM +preassign/SDG +preauthorize +prebendary/M +Precambrian +precancel/DGS +precancerous +precariousness/MS +precarious/PY +precautionary +precaution/SGDM +precede/DSG +precedence/SM +precedented/U +precedent/SDM +preceptive/Y +preceptor/MS +precept/SMV +precess/DSG +precession/M +precinct/MS +preciosity/MS +preciousness/S +precious/PYS +precipice/MS +precipitable +precipitant/S +precipitateness/M +precipitate/YNGVPDSX +precipitation/M +precipitousness/M +precipitous/YP +preciseness/SM +precise/XYTRSPN +precision/M +précis/MDG +preclude/GDS +preclusion/S +precociousness/MS +precocious/YP +precocity/SM +precode/D +precognition/SM +precognitive +precollege/M +precolonial +precomputed +preconceive/GSD +preconception/SM +precondition/GMDS +preconscious +precook/GDS +precursor/SM +precursory +precut +predate/NGDSX +predation/CMS +predator/SM +predatory +predecease/SDG +predecessor/MS +predeclared +predecline +predefine/GSD +predefinition/SM +predesignate/GDS +predestination/SM +predestine/SDG +predetermination/MS +predeterminer/M +predetermine/ZGSRD +predicable/S +predicament/SM +predicate/VGNXSD +predication/M +predicator +predictability/UMS +predictable/U +predictably/U +predict/BSDGV +predicted/U +prediction/MS +predictive/Y +predictor/MS +predigest/GDS +predilect +predilection/SM +predispose/SDG +predisposition/MS +predoctoral +predominance/SM +predominant/Y +predominate/YSDGN +predomination/M +preemie/MS +preeminence/SM +preeminent/Y +preemployment/M +preempt/GVSD +preemption/SM +preemptive/Y +preemptor/M +preener/M +preen/SRDG +preexist/DSG +preexistence/SM +preexistent +prefabbed +prefabbing +prefab/MS +prefabricate/XNGDS +prefabrication/M +preface/DRSGM +prefacer/M +prefatory +prefect/MS +prefecture/MS +preferableness/M +preferable/P +preferably +prefer/BL +preference/MS +preferential/Y +preferment/SM +preferred +preferring +prefiguration/M +prefigure/SDG +prefix/MDSG +preflight/SGDM +preform/DSG +pref/RZ +pregnancy/SM +pregnant/Y +preheat/GDS +prehensile +prehistoric +prehistorical/Y +prehistory/SM +preindustrial +preinitialize/SDG +preinterview/M +preisolated +prejudge/DRSG +prejudger/M +prejudgment/SM +prejudiced/U +prejudice/MSDG +prejudicial/PY +prekindergarten/MS +prelacy/MS +prelate/SM +preliminarily +preliminary/S +preliterate/S +preloaded +prelude/GMDRS +preluder/M +premarital/Y +premarket +prematureness/M +premature/SPY +prematurity/M +premedical +premeditated/Y +premeditate/XDSGNV +premeditation/M +premed/S +premenstrual +premiere/MS +premier/GSDM +premiership/SM +Preminger/M +premise/GMDS +premiss's +premium/MS +premix/GDS +premolar/S +premonition/SM +premonitory +prenatal/Y +Pren/M +Prenticed/M +Prentice/MGD +Prenticing/M +Prentiss/M +Prent/M +prenuptial +preoccupation/MS +preoccupy/DSG +preoperative +preordain/DSLG +prepackage/GSD +prepaid +preparation/SM +preparative/SYM +preparatory +preparedly +preparedness/USM +prepared/UP +prepare/ZDRSG +prepay/GLS +prepayment/SM +prepender/S +prepends +preplanned +preponderance/SM +preponderant/Y +preponderate/DSYGN +prepositional/Y +preposition/SDMG +prepossess/GSD +prepossessing/U +prepossession/MS +preposterousness/M +preposterous/PY +prepped +prepping +preppy/RST +preprepared +preprint/SGDM +preprocessed +preprocessing +preprocessor/S +preproduction +preprogrammed +prep/SM +prepubescence/S +prepubescent/S +prepublication/M +prepuce/SM +prequel/S +preradiation +prerecord/DGS +preregister/DSG +preregistration/MS +prerequisite/SM +prerogative/SDM +Pres +presage/GMDRS +presager/M +presbyopia/MS +presbyterian +Presbyterianism/S +Presbyterian/S +presbyter/MS +presbytery/MS +preschool/RSZ +prescience/SM +prescient/Y +Prescott/M +prescribed/U +prescriber/M +prescribe/RSDG +prescription/SM +prescriptive/Y +prescript/SVM +preselect/SGD +presence/SM +presentableness/M +presentable/P +presentably/A +presentational/A +presentation/AMS +presented/A +presenter/A +presentiment/MS +presentment/SM +presents/A +present/SLBDRYZGP +preservationist/S +preservation/SM +preservative/SM +preserve/DRSBZG +preserved/U +preserver/M +preset/S +presetting +preshrank +preshrink/SG +preshrunk +preside/DRSG +presidency/MS +presidential/Y +president/SM +presider/M +presidia +presidium/M +Presley/M +presoaks +presort/GDS +pres/S +press/ACDSG +pressed/U +presser/MS +pressingly/C +pressing/YS +pressman/M +pressmen +pressure/DSMG +pressurization/MS +pressurize/DSRGZ +pressurized/U +prestidigitate/NX +prestidigitation/M +prestidigitatorial +prestidigitator/M +prestige/MS +prestigious/PY +Preston/M +presto/S +presumably +presume/BGDRS +presumer/M +presuming/Y +presumption/MS +presumptive/Y +presumptuousness/SM +presumptuous/YP +presuppose/GDS +presupposition/S +pretax +preteen/S +pretended/Y +pretender/M +pretending/U +pretend/SDRZG +pretense/MNVSX +pretension/GDM +pretentiousness/S +pretentious/UYP +preterite's +preterit/SM +preternatural/Y +pretest/SDG +pretext/SMDG +Pretoria/M +pretreated +pretreatment/S +pretrial +prettify/SDG +prettily +prettiness/SM +pretty/TGPDRS +pretzel/SM +prevailing/Y +prevail/SGD +prevalence/MS +prevalent/SY +prevaricate/DSXNG +prevaricator/MS +preventable/U +preventably +preventative/S +prevent/BSDRGV +preventer/M +prevention/MS +preventiveness/M +preventive/SPY +preview/ZGSDRM +previous/Y +prevision/SGMD +prewar +prexes +preyer's +prey/SMDG +Priam/M +priapic +Pribilof/M +price/AGSD +priced/U +priceless +Price/M +pricer/MS +price's +pricey +pricier +priciest +pricker/M +pricking/M +prickle/GMDS +prickliness/S +prickly/RTP +prick/RDSYZG +prideful/Y +pride/GMDS +prier/M +priestess/MS +priesthood/SM +Priestley/M +priestliness/SM +priestly/PTR +priest/SMYDG +prigged +prigging +priggishness/S +priggish/PYM +prig/SM +primacy/MS +primal +primarily +primary/MS +primate/MS +primed/U +primely/M +primeness/M +prime/PYS +primer/M +Prime's +primeval/Y +priming/M +primitiveness/SM +primitive/YPS +primitivism/M +primmed +primmer +primmest +primming +primness/MS +primogenitor/MS +primogeniture/MS +primordial/YS +primp/DGS +primrose/MGSD +prim/SPJGZYDR +princedom/MS +princeliness/SM +princely/PRT +Prince/M +prince/SMY +princess/MS +Princeton/M +principality/MS +principal/SY +Principe/M +Principia/M +principled/U +principle/SDMG +printable/U +printably +print/AGDRS +printed/U +printer/AM +printers +printing/SM +printmaker/M +printmake/ZGR +printmaking/M +printout/S +Prinz/M +prioress/MS +priori +prioritize/DSRGZJ +priority/MS +prior/YS +priory/SM +Pris +Prisca/M +Priscella/M +Priscilla/M +prised +prise/GMAS +prismatic +prism/MS +prison/DRMSGZ +prisoner/M +Prissie/M +prissily +prissiness/SM +prissy/RSPT +pristine/Y +prithee/S +privacy/MS +privateer/SMDG +privateness/M +private/NVYTRSXP +privation/MCS +privative/Y +privatization/S +privatize/GSD +privet/SM +privileged/U +privilege/SDMG +privily +privy/SRMT +prized/A +prize/DSRGZM +prizefighter/M +prizefighting/M +prizefight/SRMGJZ +prizewinner/S +prizewinning +Pr/MN +PRO +proactive +probabilist +probabilistic +probabilistically +probability/SM +probable/S +probably +probated/A +probate/NVMX +probates/A +probating/A +probational +probationary/S +probationer/M +probation/MRZ +probation's/A +probative/A +prober/M +probity/SM +problematical/UY +problematic/S +problem/SM +proboscis/MS +prob/RBJ +procaine/MS +procedural/SY +procedure/MS +proceeder/M +proceeding/M +proceed/JRDSG +process/BSDMG +processed/UA +processes/A +processional/YS +procession/GD +processor/MS +proclamation/MS +proclivity/MS +proconsular +procrastinate/XNGDS +procrastination/M +procrastinator/MS +procreational +procreatory +procrustean +Procrustean +Procrustes/M +proctor/GSDM +proctorial +procurable/U +procure/L +procurement/MS +Procyon/M +prodded +prodding +prodigality/S +prodigal/SY +prodigiousness/M +prodigious/PY +prodigy/MS +prod/S +produce/AZGDRS +producer/AM +producible/A +production/ASM +productively/UA +productiveness/MS +productive/PY +productivities +productivity/A +productivity's +productize/GZRSD +product/V +Prof +profanation/S +profaneness/MS +profane/YPDRSG +profanity/MS +professed/Y +professionalism/SM +professionalize/GSD +professional/USY +profession/SM +professorial/Y +professorship/SM +professor/SM +proffer/GSD +proficiency/SM +proficient/YS +profitability/MS +profitableness/MU +profitable/UP +profitably/U +profiteer/GSMD +profiterole/MS +profit/GZDRB +profitless +profligacy/S +profligate/YS +proforma/S +profoundity +profoundness/SM +profound/PTYR +prof/S +profundity/MS +profuseness/MS +profuse/YP +progenitor/SM +progeny/M +progesterone/SM +prognathous +prognoses +prognosis/M +prognosticate/NGVXDS +prognostication/M +prognosticator/S +prognostic/S +program/CSA +programed +programing +programmability +programmable/S +programmed/CA +programmer/ASM +programming/CA +programmings +progression/SM +progressiveness/SM +progressive/SPY +progressivism +progress/MSDVG +prohibiter/M +prohibitionist/MS +prohibition/MS +Prohibition/MS +prohibitiveness/M +prohibitive/PY +prohibitory +prohibit/VGSRD +projected/AU +projectile/MS +projectionist/MS +projection/MS +projective/Y +project/MDVGS +projector/SM +Prokofieff/M +Prokofiev/M +prolegomena +proletarianization/M +proletarianized +proletarian/S +proletariat/SM +proliferate/GNVDSX +proliferation/M +prolifically +prolific/P +prolixity/MS +prolix/Y +prologize +prologue/MGSD +prologuize +prolongate/NGSDX +prolongation/M +prolonger/M +prolong/G +promenade/GZMSRD +promenader/M +Promethean +Prometheus/M +promethium/SM +prominence/MS +prominent/Y +promiscuity/MS +promiscuousness/M +promiscuous/PY +promise/GD +promising/UY +promissory +promontory/MS +promote/GVZBDR +promoter/M +promotiveness/M +promotive/P +prompted/U +prompter/M +promptitude/SM +promptness/MS +prompt/SGJTZPYDR +pro/MS +promulgate/NGSDX +promulgation/M +promulgator/MS +pron +proneness/MS +prone/PY +pronghorn/SM +prong/SGMD +pronominalization +pronominalize +pronounceable/U +pronouncedly +pronounced/U +pronounce/GLSRD +pronouncement/SM +pronouncer/M +pronto +pronunciation/SM +proofed/A +proofer +proofing/M +proofreader/M +proofread/GZSR +proof/SEAM +propaganda/SM +propagandistic +propagandist/SM +propagandize/DSG +propagated/U +propagate/SDVNGX +propagation/M +propagator/MS +propellant/MS +propelled +propeller/MS +propelling +propel/S +propensity/MS +properness/M +proper/PYRT +propertied/U +property/SDM +prophecy/SM +prophesier/M +prophesy/GRSDZ +prophetess/S +prophetic +prophetical/Y +prophet/SM +prophylactic/S +prophylaxes +prophylaxis/M +propinquity/MS +propionate/M +propitiate/GNXSD +propitiatory +propitiousness/M +propitious/YP +proponent/MS +proportionality/M +proportional/SY +proportionate/YGESD +proportioner/M +proportion/ESGDM +proportionment/M +proposal/SM +propped +propping +proprietary/S +proprietorial +proprietorship/SM +proprietor/SM +proprietress/MS +propriety/MS +proprioception +proprioceptive +prop/SZ +propulsion/MS +propulsive +propylene/M +prorogation/SM +prorogue +prosaic +prosaically +proscenium/MS +prosciutti +prosciutto/SM +proscription/SM +proscriptive +pros/DSRG +prosecute/SDBXNG +prosecution/M +prosecutor/MS +proselyte/SDGM +proselytism/MS +proselytize/ZGDSR +prose/M +proser/M +Proserpine/M +prosodic/S +prosody/MS +prospect/DMSVG +prospection/SM +prospectiveness/M +prospective/SYP +prospector/MS +prospectus/SM +prosper/GSD +prosperity/MS +prosperousness/M +prosperous/PY +prostate +prostheses +prosthesis/M +prosthetic/S +prosthetics/M +prostitute/DSXNGM +prostitution/M +prostrate/SDXNG +prostration/M +prosy/RT +protactinium/MS +protagonist/SM +Protagoras/M +protean/S +protease/M +protect/DVGS +protected/UY +protectionism/MS +protectionist/MS +protection/MS +protectiveness/S +protective/YPS +protectorate/SM +protector/MS +protégées +protégé/SM +protein/MS +proteolysis/M +proteolytic +Proterozoic/M +protestantism +Protestantism/MS +protestant/S +Protestant/SM +protestation/MS +protest/G +protesting/Y +Proteus/M +protocol/DMGS +protoplasmic +protoplasm/MS +prototype/SDGM +prototypic +prototypical/Y +protozoa +protozoan/MS +protozoic +protozoon's +protract/DG +protrude/SDG +protrusile +protrusion/MS +protrusive/PY +protuberance/S +protuberant +Proudhon/M +proud/TRY +Proust/M +provabilities +provability's +provability/U +provableness/M +provable/P +provably +prov/DRGZB +proved/U +prove/ESDAG +provenance/SM +Provençal +Provencals +Provence/M +provender/SDG +provenience/SM +provenly +proverb/DG +proverbial/Y +Proverbs/M +prover/M +provide/DRSBGZ +provided/U +providence/SM +Providence/SM +providential/Y +provident/Y +provider/M +province/SM +provincialism/SM +provincial/SY +provisional/YS +provisioner/M +provision/R +proviso/MS +provocateur/S +provocativeness/SM +provocative/P +provoked/U +provoke/GZDRS +provoking/Y +provolone/SM +Provo/M +provost/MS +prowess/SM +prowler/M +prowl/RDSZG +prow/TRMS +proximal/Y +proximateness/M +proximate/PY +proximity/MS +Proxmire/M +proxy/SM +Prozac +prude/MS +Prudence/M +prudence/SM +Prudential/M +prudential/SY +prudent/Y +prudery/MS +Prudi/M +prudishness/SM +prudish/YP +Prudy/M +Prue/M +Pruitt/M +Pru/M +prune/DSRGZM +pruner/M +prurience/MS +prurient/Y +Prussia/M +Prussian/S +prussic +Prut/M +Pryce/M +pry/DRSGTZ +pryer's +prying/Y +P's +PS +p's/A +psalmist/SM +psalm/SGDM +Psalms/M +psalter +Psalter/SM +psaltery/MS +psephologist/M +pseudonymous +pseudonym/SM +pseudopod +pseudo/S +pseudoscience/S +pshaw/SDG +psi/S +psittacoses +psittacosis/M +psoriases +psoriasis/M +psst/S +PST +psychedelically +psychedelic/S +psyche/M +Psyche/M +psychiatric +psychiatrist/SM +psychiatry/MS +psychical/Y +psychic/MS +psychoacoustic/S +psychoacoustics/M +psychoactive +psychoanalysis/M +psychoanalyst/S +psychoanalytic +psychoanalytical +psychoanalyze/SDG +psychobabble/S +psychobiology/M +psychocultural +psychodrama/MS +psychogenic +psychokinesis/M +psycholinguistic/S +psycholinguistics/M +psycholinguists +psychological/Y +psychologist/MS +psychology/MS +psychometric/S +psychometrics/M +psychometry/M +psychoneuroses +psychoneurosis/M +psychopathic/S +psychopath/M +psychopathology/M +psychopaths +psychopathy/SM +psychophysical/Y +psychophysic/S +psychophysics/M +psychophysiology/M +psychosis/M +psycho/SM +psychosocial/Y +psychosomatic/S +psychosomatics/M +psychos/S +psychotherapeutic/S +psychotherapist/MS +psychotherapy/SM +psychotically +psychotic/S +psychotropic/S +psychs +psych/SDG +PT +PTA +Ptah/M +ptarmigan/MS +pt/C +pterodactyl/SM +Pt/M +PTO +Ptolemaic +Ptolemaists +Ptolemy/MS +ptomaine/MS +Pu +pubbed +pubbing +pubertal +puberty/MS +pubes +pubescence/S +pubescent +pubic +pubis/M +publican/AMS +publication/AMS +publicist/SM +publicity/SM +publicized/U +publicize/SDG +publicness/M +publics/A +public/YSP +publishable/U +published/UA +publisher/ASM +publishes/A +publishing/M +publish/JDRSBZG +pub/MS +Puccini/M +puce/SM +pucker/DG +Puckett/M +puck/GZSDRM +puckishness/S +puckish/YP +Puck/M +pudding/MS +puddle/JMGRSD +puddler/M +puddling/M +puddly +pudenda +pudendum/M +pudginess/SM +pudgy/PRT +Puebla/M +Pueblo/MS +pueblo/SM +puerile/Y +puerility/SM +puerperal +puers +Puerto/M +puffball/SM +puffer/M +puffery/M +puffiness/S +puffin/SM +Puff/M +puff/SGZDRM +puffy/PRT +Puget/M +pugged +pugging +Pugh/M +pugilism/SM +pugilistic +pugilist/S +pug/MS +pugnaciousness/MS +pugnacious/YP +pugnacity/SM +puissant/Y +puke/GDS +pukka +Pulaski/SM +pulchritude/SM +pulchritudinous/M +pule/GDS +Pulitzer/SM +pullback/S +pull/DRGZSJ +pullet/SM +pulley/SM +Pullman/MS +pullout/S +pullover/SM +pulmonary +pulpiness/S +pulpit/MS +pulp/MDRGS +pulpwood/MS +pulpy/PTR +pulsar/MS +pulsate/NGSDX +pulsation/M +pulse/ADSG +pulser +pulse's +pulverable +pulverization/MS +pulverized/U +pulverize/GZSRD +pulverizer/M +pulverizes/UA +puma/SM +pumice/SDMG +pummel/SDG +pumpernickel/SM +pump/GZSMDR +pumping/M +pumpkin/MS +punchbowl/M +punched/U +puncheon/MS +puncher/M +punch/GRSDJBZ +punchline/S +Punch/M +punchy/RT +punctilio/SM +punctiliousness/SM +punctilious/PY +punctualities +punctuality/UM +punctualness/M +punctual/PY +punctuate/SDXNG +punctuational +punctuation/M +puncture/SDMG +punditry/S +pundit/SM +pungency/MS +pungent/Y +Punic +puniness/MS +punished/U +punisher/M +punishment/MS +punish/RSDGBL +punitiveness/M +punitive/YP +Punjabi/M +Punjab/M +punk/TRMS +punky/PRS +pun/MS +punned +punning +punster/SM +punter/M +punt/GZMDRS +puny/PTR +pupae +pupal +pupa/M +pupate/NGSD +pupillage/M +pupil/SM +pup/MS +pupped +puppeteer/SM +puppetry/MS +puppet/SM +pupping +puppy/GSDM +puppyish +purblind +Purcell/M +purchasable +purchase/GASD +purchaser/MS +purdah/M +purdahs +Purdue/M +purebred/S +puree/DSM +pureeing +pureness/MS +pure/PYTGDR +purgation/M +purgative/MS +purgatorial +purgatory/SM +purge/GZDSR +purger/M +purify/GSRDNXZ +Purim/SM +Purina/M +purine/SM +purism/MS +puristic +purist/MS +puritanic +puritanical/Y +Puritanism/MS +puritanism/S +puritan/SM +Puritan/SM +purity/SM +purlieu/SM +purl/MDGS +purloin/DRGS +purloiner/M +purple/MTGRSD +purplish +purport/DRSZG +purported/Y +purposefulness/S +purposeful/YP +purposelessness/M +purposeless/PY +purpose/SDVGYM +purposiveness/M +purposive/YP +purr/DSG +purring/Y +purse/DSRGZM +purser/M +pursuance/MS +pursuant +pursuer/M +pursue/ZGRSD +pursuit/MS +purulence/MS +purulent +Purus +purveyance/MS +purvey/DGS +purveyor/MS +purview/SM +Pusan/M +Pusey/M +pushbutton/S +pushcart/SM +pushchair/SM +pushdown +push/DSRBGZ +pusher/M +pushily +pushiness/MS +Pushkin/M +pushover/SM +Pushtu/M +pushy/PRT +pusillanimity/MS +pusillanimous/Y +pus/SM +puss/S +pussycat/S +pussyfoot/DSG +pussy/TRSM +pustular +pustule/MS +putative/Y +Putin/M +put/IS +Putnam/M +Putnem/M +putout/S +putrefaction/SM +putrefactive +putrefy/DSG +putrescence/MS +putrescent +putridity/M +putridness/M +putrid/YP +putsch/S +putted/I +puttee/MS +putter/RDMGZ +putting/I +putt/SGZMDR +puttying/M +putty/SDMG +puzzle/JRSDZLG +puzzlement/MS +puzzler/M +PVC +pvt +Pvt/M +PW +PX +p/XTGJ +Pygmalion/M +pygmy/SM +Pygmy/SM +Pyhrric/M +pyknotic +Pyle/M +pylon/SM +pylori +pyloric +pylorus/M +Pym/M +Pynchon/M +Pyongyang/M +pyorrhea/SM +Pyotr/M +pyramidal/Y +pyramid/GMDS +pyre/MS +Pyrenees +Pyrex/SM +pyridine/M +pyrimidine/SM +pyrite/MS +pyrolysis/M +pyrolyze/RSM +pyromaniac/SM +pyromania/MS +pyrometer/MS +pyrometry/M +pyrophosphate/M +pyrotechnical +pyrotechnic/S +pyrotechnics/M +pyroxene/M +pyroxenite/M +Pyrrhic +Pythagoras/M +Pythagorean/S +Pythias +Python/M +python/MS +pyx/MDSG +q +Q +QA +Qaddafi/M +Qantas/M +Qatar/M +QB +QC +QED +Qingdao +Qiqihar/M +QM +Qom/M +qr +q's +Q's +qt +qty +qua +Quaalude/M +quackery/MS +quackish +quack/SDG +quadded +quadding +quadrangle/MS +quadrangular/M +quadrant/MS +quadraphonic/S +quadrapole +quadratical/Y +quadratic/SM +quadrature/MS +quadrennial/SY +quadrennium/MS +quadric +quadriceps/SM +quadrilateral/S +quadrille/XMGNSD +quadrillion/MH +quadripartite/NY +quadriplegia/SM +quadriplegic/SM +quadrivia +quadrivium/M +quadrupedal +quadruped/MS +quadruple/GSD +quadruplet/SM +quadruplicate/GDS +quadruply/NX +quadrupole +quad/SM +quadword/MS +quaffer/M +quaff/SRDG +quagmire/DSMG +quahog/MS +quail/GSDM +quaintness/MS +quaint/PTYR +quake/GZDSR +Quakeress/M +Quakerism/S +Quaker/SM +quaky/RT +qualification/ME +qualified/UY +qualifier/SM +qualify/EGXSDN +qualitative/Y +quality/MS +qualmish +qualm/SM +quandary/MS +quangos +quanta/M +Quantico/M +quantifiable/U +quantified/U +quantifier/M +quantify/GNSRDZX +quantile/S +quantitativeness/M +quantitative/PY +quantity/MS +quantization/MS +quantizer/M +quantize/ZGDRS +quantum/M +quarantine/DSGM +quark/SM +quarreler/M +quarrellings +quarrelsomeness/MS +quarrelsome/PY +quarrel/SZDRMG +quarrier/M +quarryman/M +quarrymen +quarry/RSDGM +quarterback/SGMD +quarterdeck/MS +quarterer/M +quarterfinal/MS +quartering/M +quarterly/S +quartermaster/MS +quarter/MDRYG +quarterstaff/M +quarterstaves +quartet/SM +quartic/S +quartile/SM +quarto/SM +quart/RMSZ +quartzite/M +quartz/SM +quasar/SM +quash/GSD +quasi +quasilinear +Quasimodo/M +Quaternary +quaternary/S +quaternion/SM +quatrain/SM +quaver/GDS +quavering/Y +quavery +Quayle/M +quayside/M +quay/SM +queasily +queasiness/SM +queasy/TRP +Quebec/M +Quechua/M +Queenie/M +queenly/RT +queen/SGMDY +Queensland/M +Queen/SM +queerness/S +queer/STGRDYP +queller/M +quell/SRDG +Que/M +quenchable/U +quenched/U +quencher/M +quench/GZRSDB +quenchless +Quentin/M +Quent/M +Querida/M +quern/M +querulousness/S +querulous/YP +query/MGRSD +quested/A +quester/AS +quester's +quest/FSIM +questing +questionableness/M +questionable/P +questionably/U +questioned/UA +questioner/M +questioning/UY +questionnaire/MS +question/SMRDGBZJ +quests/A +Quetzalcoatl/M +queued/C +queue/GZMDSR +queuer/M +queues/C +queuing/C +Quezon/M +quibble/GZRSD +quibbler/M +quiche/SM +quicken/RDG +quickie/MS +quicklime/SM +quickness/MS +quick/RNYTXPS +quicksand/MS +quicksilver/GDMS +quickstep/SM +quid/SM +quiesce/D +quiescence/MS +quiescent/YP +quieted/E +quieten/SGD +quieter/E +quieter's +quieting/E +quietly/E +quietness/MS +quiets/E +quietude/IEMS +quietus/MS +quiet/UTGPSDRY +Quillan/M +quill/GSDM +Quill/M +quilter/M +quilting/M +quilt/SZJGRDM +quincentenary/M +quince/SM +Quincey/M +quincy/M +Quincy/M +quinine/MS +Quinlan/M +Quinn/M +quinquennial/Y +quinsy/SM +Quinta/M +Quintana/M +quintessence/SM +quintessential/Y +quintet/SM +quintic +quintile/SM +Quintilian/M +Quintilla/M +quintillion/MH +quintillionth/M +Quintina/M +Quintin/M +Quint/M +quint/MS +Quinton/M +quintuple/SDG +quintuplet/MS +Quintus/M +quip/MS +quipped +quipper +quipping +quipster/SM +quired/AI +quire/MDSG +quires/AI +Quirinal/M +quiring/IA +quirkiness/SM +quirk/SGMD +quirky/PTR +quirt/SDMG +Quisling/M +quisling/SM +quitclaim/GDMS +quit/DGS +quite/SADG +Quito/M +quittance/SM +quitter/SM +quitting +quiver/GDS +quivering/Y +quivery +Quixote/M +quixotic +quixotically +Quixotism/M +quiz/M +quizzed +quizzer/SM +quizzes +quizzical/Y +quizzing +quo/H +quoin/SGMD +quoit/GSDM +quondam +quonset +Quonset +quorate/I +quorum/MS +quotability/S +quota/MS +quotation/SM +quoter/M +quote/UGSD +quot/GDRB +quotidian/S +quotient/SM +qwerty +qwertys +Rabat/M +rabbet/GSMD +Rabbi/M +rabbi/MS +rabbinate/MS +rabbinic +rabbinical/Y +rabbiter/M +rabbit/MRDSG +rabble/GMRSD +rabbler/M +Rabelaisian +Rabelais/M +rabidness/SM +rabid/YP +rabies +Rabi/M +Rabin/M +rabis +Rab/M +raccoon/SM +racecourse/MS +racegoers +racehorse/SM +raceme/MS +race/MZGDRSJ +racer/M +racetrack/SMR +raceway/SM +Rachael/M +Rachele/M +Rachelle/M +Rachel/M +Rachmaninoff/M +racialism/MS +racialist/MS +racial/Y +racily +Racine/M +raciness/MS +racism/S +racist/MS +racketeer/MDSJG +racket/SMDG +rackety +rack/GDRMS +raconteur/SM +racoon's +racquetball/S +racquet's +racy/RTP +radarscope/MS +radar/SM +Radcliffe/M +radded +radder +raddest +Raddie/M +radding +Raddy/M +radial/SY +radiance/SM +radian/SM +radiant/YS +radiate/XSDYVNG +radiation/M +radiative/Y +radiator/MS +radicalism/MS +radicalization/S +radicalize/GSD +radicalness/M +radical/SPY +radices's +radii/M +radioactive/Y +radioactivity/MS +radioastronomical +radioastronomy +radiocarbon/MS +radiochemical/Y +radiochemistry/M +radiogalaxy/S +radiogram/SM +radiographer/MS +radiographic +radiography/MS +radioisotope/SM +radiologic +radiological/Y +radiologist/MS +radiology/MS +radioman/M +radiomen +radiometer/SM +radiometric +radiometry/MS +radionics +radionuclide/M +radiopasteurization +radiophone/MS +radiophysics +radioscopy/SM +radio/SMDG +radiosonde/SM +radiosterilization +radiosterilized +radiotelegraph +radiotelegraphs +radiotelegraphy/MS +radiotelephone/SM +radiotherapist/SM +radiotherapy/SM +radish/MS +radium/MS +radius/M +radix/SM +Rad/M +radon/SM +rad/S +Raeann/M +Rae/M +RAF +Rafaela/M +Rafaelia/M +Rafaelita/M +Rafaellle/M +Rafaello/M +Rafael/M +Rafa/M +Rafe/M +Raffaello/M +Raffarty/M +Rafferty/M +raffia/SM +raffishness/SM +raffish/PY +raffle/MSDG +Raff/M +Rafi/M +Raf/M +rafter/DM +raft/GZSMDR +raga/MS +ragamuffin/MS +ragbag/SM +rage/MS +raggedness/SM +ragged/PRYT +raggedy/TR +ragging +rag/GSMD +raging/Y +raglan/MS +Ragnar/M +Ragnarök +ragout/SMDG +ragtag/MS +ragtime/MS +ragweed/MS +ragwort/M +Rahal/M +rah/DG +Rahel/M +rahs +raider/M +raid/MDRSGZ +railbird/S +rail/CDGS +railer/SM +railhead/SM +railing/MS +raillery/MS +railroader/M +railroading/M +railroad/SZRDMGJ +rail's +railwaymen +railway/MS +raiment/SM +Raimondo/M +Raimund/M +Raimundo/M +Raina/M +rainbow/MS +raincloud/S +raincoat/SM +raindrop/SM +Raine/MR +Rainer/M +rainfall/SM +rainforest's +rain/GSDM +Rainier/M +rainless +rainmaker/SM +rainmaking/MS +rainproof/GSD +rainstorm/SM +rainwater/MS +rainy/RT +raise/DSRGZ +raiser/M +raising/M +raisin/MS +rajah/M +rajahs +Rajive/M +raj/M +Rakel/M +rake/MGDRS +raker/M +rakishness/MS +rakish/PY +Raleigh/M +Ralf/M +Ralina/M +rally/GSD +Ralph/M +Ralston/M +Ra/M +Ramada/M +Ramadan/SM +Ramakrishna/M +Rama/M +Raman/M +Ramayana/M +ramble/JRSDGZ +rambler/M +rambling/Y +Rambo/M +rambunctiousness/S +rambunctious/PY +ramekin/SM +ramie/MS +ramification/M +ramify/XNGSD +Ramirez/M +Ramiro/M +ramjet/SM +Ram/M +rammed +ramming +Ramo/MS +Ramona/M +Ramonda/M +Ramon/M +rampage/SDG +rampancy/S +rampant/Y +rampart/SGMD +ramp/GMDS +ramrodded +ramrodding +ramrod/MS +RAM/S +Ramsay/M +Ramses/M +Ramsey/M +ramshackle +ram/SM +rams/S +ran/A +Rana/M +Rancell/M +Rance/M +rancher/M +rancho/SM +ranch/ZRSDMJG +rancidity/MS +rancidness/SM +rancid/P +rancorous/Y +rancor/SM +Randall/M +Randal/M +Randa/M +Randee/M +Randell/M +Randene/M +Randie/M +Randi/M +randiness/S +Rand/M +rand/MDGS +Randolf/M +Randolph/M +randomization/SM +randomize/SRDG +randomness/SM +random/PYS +Randy/M +randy/PRST +Ranee/M +ranee/SM +ranged/C +rangeland/S +ranger/M +ranges/C +range/SM +rang/GZDR +ranginess/S +ranging/C +Rangoon/M +rangy/RPT +Rania/M +Ranice/M +Ranier/M +Rani/MR +Ranique/M +rani's +ranked/U +ranker/M +rank/GZTYDRMPJS +Rankine/M +ranking/M +Rankin/M +rankle/SDG +rankness/MS +Ranna/M +ransacker/M +ransack/GRDS +Ransell/M +ransomer/M +Ransom/M +ransom/ZGMRDS +ranter/M +rant/GZDRJS +ranting/Y +Raoul/M +rapaciousness/MS +rapacious/YP +rapacity/MS +rapeseed/M +rape/SM +Raphaela/M +Raphael/M +rapidity/MS +rapidness/S +rapid/YRPST +rapier/SM +rapine/SM +rapist/MS +rap/MDRSZG +rapped +rappelled +rappelling +rappel/S +rapper/SM +rapping/M +rapporteur/SM +rapport/SM +rapprochement/SM +rapscallion/MS +raptness/S +rapture/MGSD +rapturousness/M +rapturous/YP +rapt/YP +Rapunzel/M +Raquela/M +Raquel/M +rarebit/MS +rarefaction/MS +rarefy/GSD +rareness/MS +rare/YTPGDRS +rarity/SM +Rasalgethi/M +Rasalhague/M +rascal/SMY +rasher/M +rashness/S +rash/PZTYSR +Rasia/M +Rasla/M +Rasmussen/M +raspberry/SM +rasper/M +rasping/Y +rasp/SGJMDR +Rasputin/M +raspy/RT +Rastaban/M +Rastafarian/M +raster/MS +Rastus/M +ratchet/MDSG +rateable +rated/U +rate/KNGSD +ratepayer/SM +rater/M +rate's +Ratfor/M +rather +Rather/M +rathskeller/SM +ratifier/M +ratify/ZSRDGXN +rating/M +ratiocinate/VNGSDX +ratiocination/M +ratio/MS +rationale/SM +rationalism/SM +rationalistic +rationalist/S +rationality/MS +rationalization/SM +rationalizer/M +rationalize/ZGSRD +rationalness/M +rational/YPS +ration/DSMG +Ratliff/M +ratlike +ratline/SM +rat/MDRSJZGB +rattail +rattan/MS +ratted +ratter/MS +ratting +rattlebrain/DMS +rattle/RSDJGZ +rattlesnake/MS +rattletrap/MS +rattling/Y +rattly/TR +rattrap/SM +ratty/RT +raucousness/SM +raucous/YP +Raul/M +raunchily +raunchiness/S +raunchy/RTP +ravage/GZRSD +ravager/M +raveling/S +Ravel/M +ravel/UGDS +raven/JGMRDS +Raven/M +ravenous/YP +raver/M +rave/ZGDRSJ +Ravid/M +Ravi/M +ravine/SDGM +ravioli/SM +ravisher/M +ravishing/Y +ravish/LSRDZG +ravishment/SM +Raviv/M +Rawalpindi/M +rawboned +rawhide/SDMG +Rawley/M +Rawlings/M +Rawlins/M +Rawlinson/M +rawness/SM +raw/PSRYT +Rawson/M +Rayburn/M +Raychel/M +Raye/M +ray/GSMD +Rayleigh/M +Ray/M +Raymond/M +Raymondville/M +Raymund/M +Raymundo/M +Rayna/M +Raynard/M +Raynell/M +Rayner/M +Raynor/M +rayon/SM +Rayshell/M +Raytheon/M +raze/DRSG +razer/M +razorback/SM +razorblades +razor/MDGS +razz/GDS +razzmatazz/S +Rb +RBI/S +RC +RCA +rcpt +RCS +rd +RD +RDA +Rd/M +reabbreviate +reachability +reachable/U +reachably +reached/U +reacher/M +reach/GRB +reacquisition +reactant/SM +reacted/U +reaction +reactionary/SM +reactivity +readability/MS +readable/P +readably +readdress/G +Reade/M +reader/M +readership/MS +Read/GM +readied +readies +readily +readinesses +readiness/UM +reading/M +Reading/M +read/JGZBR +readopt/G +readout/MS +reads/A +readying +ready/TUPR +Reagan/M +Reagen/M +realisms +realism's +realism/U +realistically/U +realistic/U +realist/SM +reality/USM +realizability/MS +realizableness/M +realizable/SMP +realizably/S +realization/MS +realized/U +realize/JRSDBZG +realizer/M +realizes/U +realizing/MY +realm/M +realness/S +realpolitik/SM +real/RSTP +realtor's +Realtor/S +realty/SM +Rea/M +reamer/M +ream/MDRGZ +Reamonn/M +reanimate +reaper/M +reappraise/G +reap/SGZ +rear/DRMSG +rearguard/MS +rearmost +rearrange/L +rearward/S +reasonableness/SMU +reasonable/UP +reasonably/U +Reasoner/M +reasoner/SM +reasoning/MS +reasonless +reasons +reason/UBDMG +reassess/GL +reassuringly/U +reattach/GSL +reawakening/M +Reba/M +rebate/M +Rebbecca/M +Rebeca/M +Rebecca's +Rebecka/M +Rebekah/M +Rebeka/M +Rebekkah/M +rebeller +rebellion/SM +rebelliousness/MS +rebellious/YP +rebel/MS +Rebe/M +rebid +rebidding +rebind/G +rebirth +reboil/G +rebook +reboot/ZR +rebound/G +rebroadcast/MG +rebuke/RSDG +rebuking/Y +rebus +rebuttal/SM +rebutting +rec +recalcitrance/SM +recalcitrant/S +recalibrate/N +recantation/S +recant/G +recap +recappable +recapping +recast/G +recd +rec'd +recede +receipt/SGDM +receivable/S +received/U +receiver/M +receivership/SM +receive/ZGRSDB +recency/M +recension/M +recentness/SM +recent/YPT +receptacle/SM +receptionist/MS +reception/MS +receptiveness/S +receptive/YP +receptivity/S +receptor/MS +recessional/S +recessionary +recessiveness/M +recessive/YPS +recess/SDMVG +rechargeable +recheck/G +recherché +recherches +recidivism/MS +recidivist/MS +Recife/M +recipe/MS +recipiency +recipient/MS +reciprocal/SY +reciprocate/NGXVDS +reciprocation/M +reciprocity/MS +recitalist/S +recital/MS +recitative/MS +reciter/M +recite/ZR +recked +recking +recklessness/S +reckless/PY +reckoner/M +reckoning/M +reckon/SGRDJ +reclaim/B +reclamation/SM +recliner/M +recline/RSDZG +recluse/MVNS +reclusion/M +recode/G +recognizability +recognizable/U +recognizably +recognize/BZGSRD +recognizedly/S +recognized/U +recognizer/M +recognizingly/S +recognizing/UY +recoilless +recoinage +recolor/GD +recombinant +recombine +recommended/U +recompense/GDS +recompute/B +reconciled/U +reconciler/M +reconcile/SRDGB +reconditeness/M +recondite/YP +reconfigurability +reconfigure/R +reconnaissance/MS +reconnect/R +reconnoiter/GSD +reconquer/G +reconsecrate +reconstitute +reconstructed/U +Reconstruction/M +reconsult/G +recontact/G +recontaminate/N +recontribute +recook/G +recopy/G +recorded/AU +records/A +record/ZGJ +recourse +recoverability +recoverable/U +recover/B +recovery/MS +recreant/S +recreational +recriminate/GNVXDS +recrimination/M +recriminatory +recross/G +recrudesce/GDS +recrudescence/MS +recrudescent +recruiter/M +recruitment/MS +recruit/ZSGDRML +recrystallize +rectal/Y +rectangle/SM +rectangular/Y +recta's +rectifiable +rectification/M +rectifier/M +rectify/DRSGXZN +rectilinear/Y +rectitude/MS +recto/MS +rector/SM +rectory/MS +rectum/SM +recumbent/Y +recuperate/VGNSDX +recuperation/M +recur +recurrence/MS +recurrent +recurse/NX +recursion/M +recusant/M +recuse +recyclable/S +recycle/BZ +redact/DGS +redaction/SM +redactor/MS +redbird/SM +redbreast/SM +redbrick/M +redbud/M +redcap/MS +redcoat/SM +redcurrant/M +redden/DGS +redder +reddest +redding +reddish/P +Redd/M +redeclaration +redecorate +redeemable/U +redeem/BRZ +redeemed/U +redeemer/M +Redeemer/M +redemptioner/M +redemption/RMS +redemptive +redeposit/M +redetermination +Redford/M +Redgrave/M +redhead/DRMS +Redhook/M +redial/G +redirect/G +redirection +redlining/S +Redmond/M +redneck/SMD +redness/MS +redo/G +redolence/MS +redolent +Redondo/M +redouble/S +redoubtably +redound/GDS +red/PYS +redshift/S +redskin/SM +Redstone/M +reduced/U +reducer/M +reduce/RSDGZ +reducibility/M +reducible +reducibly +reductionism/M +reductionist/S +reduction/SM +reduct/V +redundancy/SM +redundant/Y +redwood/SM +redye +redyeing +Reeba/M +Reebok/M +Reece/M +reecho/G +reed/GMDR +reediness/SM +reeding/M +Reed/M +Reedville/M +reedy/PTR +reefer/M +reef/GZSDRM +reeker/M +reek/GSR +reeler/M +reel's +reel/USDG +Ree/MDS +Reena/M +reenforcement +reentrant +Reese/M +reestimate/M +Reeta/M +Reeva/M +reeve/G +Reeves +reexamine +refection/SM +refectory/SM +refer/B +refereed/U +refereeing +referee/MSD +reference/CGSRD +referenced/U +reference's +referencing/U +referendum/MS +referentiality +referential/YM +referent/SM +referral/SM +referred +referrer/S +referring +reffed +reffing +refile +refinance +refined/U +refine/LZ +refinement/MS +refinish/G +refit +reflectance/M +reflected/U +reflectional +reflection/SM +reflectiveness/M +reflective/YP +reflectivity/M +reflector/MS +reflect/SDGV +reflexion/MS +reflexiveness/M +reflexive/PSY +reflexivity/M +reflex/YV +reflooring +refluent +reflux/G +refocus/G +refold/G +reforestation +reforge/G +reformatory/SM +reform/B +reformed/U +reformer/M +reformism/M +reformist/S +refract/DGVS +refractiveness/M +refractive/PY +refractometer/MS +refractoriness/M +refractory/PS +refrain/DGS +refreshed/U +refreshing/Y +refresh/LB +refreshment/MS +refrigerant/MS +refrigerated/U +refrigerate/XDSGN +refrigeration/M +refrigerator/MS +refrozen +refry/GS +refugee/MS +refuge/SDGM +Refugio/M +refulgence/SM +refulgent +refund/B +refunder/M +refurbish/L +refurbishment/S +refusal/SM +refuse/R +refuser/M +refutation/MS +refute/GZRSDB +refuter/M +ref/ZS +reg +regale/L +regalement/S +regal/GYRD +regalia/M +Regan/M +regard/EGDS +regardless/PY +regather/G +regatta/MS +regency/MS +regeneracy/MS +regenerately +regenerateness/M +regenerate/U +Regen/M +reggae/SM +Reggie/M +Reggi/MS +Reggy/M +regicide/SM +regime/MS +regimen/MS +regimental/S +regimentation/MS +regiment/SDMG +Reginae +Reginald/M +Regina/M +Reginauld/M +Regine/M +regionalism/MS +regional/SY +region/SM +Regis/M +register's +register/UDSG +registrable +registrant/SM +registrar/SM +registration/AM +registrations +registry/MS +Reg/MN +regnant +Regor/M +regress/DSGV +regression/MS +regressiveness/M +regressive/PY +regressors +regretfulness/M +regretful/PY +regret/S +regrettable +regrettably +regretted +regretting +reground +regroup/G +regrow/G +regularity/MS +regularization/MS +regularize/SDG +regular/YS +regulate/CSDXNG +regulated/U +regulation/M +regulative +regulator/SM +regulatory +Regulus/M +regurgitate/XGNSD +regurgitation/M +rehabbed +rehabbing +rehabilitate/SDXVGN +rehabilitation/M +rehab/S +rehang/G +rehear/GJ +rehearsal/SM +rehearse +rehearsed/U +rehearser/M +rehears/R +reheat/G +reheating/M +Rehnquist +rehydrate +Reichenberg/M +Reich/M +Reichstags +Reichstag's +Reidar/M +Reider/M +Reid/MR +reign/MDSG +Reiko/M +Reilly/M +reimburse/GSDBL +reimbursement/MS +Reinald/M +Reinaldo/MS +Reina/M +reindeer/M +Reine/M +reinforced/U +reinforce/GSRDL +reinforcement/MS +reinforcer/M +rein/GDM +Reinhard/M +Reinhardt/M +Reinhold/M +Reinold/M +reinstate/L +reinstatement/MS +reinsurance +Reinwald/M +reissue +REIT +reiterative/SP +rejecter/M +rejecting/Y +rejection/SM +rejector/MS +reject/RDVGS +rejigger +rejoice/RSDJG +rejoicing/Y +rejoinder/SM +rejuvenate/NGSDX +rejuvenatory +relapse +relatedly +relatedness/MS +related/U +relater/M +relate/XVNGSZ +relational/Y +relation/M +relationship/MS +relativeness/M +relative/SPY +relativism/M +relativistic +relativistically +relativist/MS +relativity/MS +relator's +relaxant/SM +relaxation/MS +relaxedness/M +relaxed/YP +relax/GZD +relaxing/Y +relay/GDM +relearn/G +releasable/U +release/B +released/U +relenting/U +relentlessness/SM +relentless/PY +relent/SDG +relevance/SM +relevancy/MS +relevant/Y +reliability/UMS +reliables +reliable/U +reliably/U +reliance/MS +reliant/Y +relicense/R +relic/MS +relict/C +relict's +relief/M +relievedly +relieved/U +reliever/M +relieve/RSDZG +religionists +religion/SM +religiosity/M +religiousness/MS +religious/PY +relink/G +relinquish/GSDL +relinquishment/SM +reliquary/MS +relish/GSD +relive/GB +reload/GR +relocate/B +reluctance/MS +reluctant/Y +rel/V +rely/DG +rem +Re/M +remade/S +remainder/SGMD +remain/GD +remake/M +remand/DGS +remap +remapping +remarkableness/S +remarkable/U +remarkably +remark/BG +remarked/U +Remarque/M +rematch/G +Rembrandt/M +remeasure/D +remediableness/M +remediable/P +remedy/SDMG +remembered/U +rememberer/M +remember/GR +remembrance/MRS +remembrancer/M +Remington/M +reminisce/GSD +reminiscence/SM +reminiscent/Y +remissness/MS +remiss/YP +remit/S +remittance/MS +remitted +remitting/U +Rem/M +remnant/MS +remodel/G +remolding +remonstrant/MS +remonstrate/SDXVNG +remonstration/M +remonstrative/Y +remorsefulness/M +remorseful/PY +remorselessness/MS +remorseless/YP +remorse/SM +remoteness/MS +remote/RPTY +remoulds +removal/MS +REM/S +remunerated/U +remunerate/VNGXSD +remuneration/M +remunerativeness/M +remunerative/YP +Remus/M +Remy/M +Renado/M +Renae/M +renaissance/S +Renaissance/SM +renal +Renaldo/M +Rena/M +Renard/M +Renascence/SM +Renata/M +Renate/M +Renato/M +renaturation +Renaud/M +Renault/MS +rend +renderer/M +render/GJRD +rendering/M +rendezvous/DSMG +rendition/GSDM +rend/RGZS +Renee/M +renegade/SDMG +renege/GZRSD +reneger/M +Renelle/M +Renell/M +Rene/M +renewal/MS +renew/BG +renewer/M +Renie/M +rennet/MS +Rennie/M +rennin/SM +Renoir/M +Reno/M +renounce/LGRSD +renouncement/MS +renouncer/M +renovate/NGXSD +renovation/M +renovator/SM +renown/SGDM +Rensselaer/M +rentaller +rental/SM +renter/M +rent/GZMDRS +renumber/G +renumeration +renunciate/VNX +renunciation/M +Renville/M +reoccupy/G +reopen/G +reorganized/U +repack/G +repairable/U +repair/BZGR +repairer/M +repairman/M +repairmen +repairs/E +repaper +reparable +reparation/SM +reparteeing +repartee/MDS +repartition/Z +repast/G +repatriate/SDXNG +repave +repealer/M +repeal/GR +repeatability/M +repeatable/U +repeatably +repeated/Y +repeater/M +repeat/RDJBZG +repelled +repellent/SY +repelling/Y +repel/S +repentance/SM +repentant/SY +repent/RDG +repertoire/SM +repertory/SM +repetition +repetitiousness/S +repetitious/YP +repetitiveness/MS +repetitive/PY +repine/R +repiner/M +replace/RL +replay/GM +replenish/LRSDG +replenishment/S +repleteness/MS +replete/SDPXGN +repletion/M +replica/SM +replicate/SDVG +replicator/S +replug +reply/X +Rep/M +repopulate +reported/Y +reportorial/Y +reposeful +repose/M +repository/MS +reprehend/GDS +reprehensibility/MS +reprehensibleness/M +reprehensible/P +reprehensibly +reprehension/MS +representable/U +representational/Y +representativeness/M +Representative/S +representative/SYMP +representativity +represented/U +represent/GB +repression/SM +repressiveness/M +repressive/YP +repress/V +reprieve/GDS +reprimand/SGMD +reprint/M +reprisal/MS +reproacher/M +reproachfulness/M +reproachful/YP +reproach/GRSDB +reproaching/Y +reprobate/N +reprocess/G +reproducibility/MS +reproducible/S +reproducibly +reproductive/S +reproof/G +reprove/R +reproving/Y +rep/S +reptile/SM +reptilian/S +Republicanism/S +republicanism/SM +Republican/S +republic/M +republish/G +repudiate/XGNSD +repudiation/M +repudiator/S +repugnance/MS +repugnant/Y +repulse/VNX +repulsion/M +repulsiveness/MS +repulsive/PY +reputability/SM +reputably/E +reputation/SM +reputed/Y +repute/ESB +reputing +requested/U +request/G +Requiem/MS +requiem/SM +require/LR +requirement/MS +requisiteness/M +requisite/PNXS +requisitioner/M +requisition/GDRM +requital/MS +requited/U +requiter/M +requite/RZ +reread/G +rerecord/G +rerouteing +rerunning +res/C +rescale +rescind/SDRG +rescission/SM +rescue/GZRSD +reseal/BG +research/MB +reselect/G +resemblant +resemble/DSG +resend/G +resent/DSLG +resentfulness/SM +resentful/PY +resentment/MS +reserpine/MS +reservation/MS +reservednesses +reservedness/UM +reserved/UYP +reservist/SM +reservoir/MS +reset/RDG +resettle/L +reshipping +reshow/G +reshuffle/M +reside/G +residence/MS +residency/SM +residential/Y +resident/SM +resider/M +residua +residual/YS +residuary +residue/SM +residuum/M +resignation/MS +resigned/YP +resilience/MS +resiliency/S +resilient/Y +resin/D +resinlike +resinous +resiny +resistance/SM +Resistance/SM +resistantly +resistants +resistant/U +resisted/U +resistible +resistibly +resisting/U +resistiveness/M +resistive/PY +resistivity/M +resistless +resistor/MS +resist/RDZVGS +resize/G +resold +resole/G +resoluble +resoluteness/MS +resolute/PYTRV +resolvability/M +resolvable/U +resolved/U +resolvent +resonance/SM +resonant/YS +resonate/DSG +resonator/MS +resorption/MS +resort/R +resound/G +resourcefulness/SM +resourceful/PY +resp +respectability/SM +respectable/SP +respectably +respect/BSDRMZGV +respected/E +respectful/EY +respectfulness/SM +respecting/E +respectiveness/M +respective/PY +respect's/E +respects/E +respell/G +respiration/MS +respirator/SM +respiratory/M +resplendence/MS +resplendent/Y +respondent/MS +respond/SDRZG +responser/M +response/RSXMV +responsibility/MS +responsibleness/M +responsible/P +responsibly +responsiveness/MSU +responsive/YPU +respray/G +restart/B +restate/L +restaurant/SM +restaurateur/SM +rest/DRSGVM +rested/U +rester/M +restfuller +restfullest +restfulness/MS +restful/YP +restitution/SM +restiveness/SM +restive/PY +restlessness/MS +restless/YP +restorability +Restoration/M +restoration/MS +restorative/PYS +restorer/M +restore/Z +restrained/UY +restraint/MS +restrict/DVGS +restricted/YU +restriction/SM +restrictively +restrictiveness/MS +restrictives +restrictive/U +restroom/SM +restructurability +restructure +rest's/U +rests/U +restudy/M +restyle +resubstitute +resultant/YS +result/SGMD +resume/SDBG +resumption/MS +resurface +resurgence/MS +resurgent +resurrect/GSD +resurrection/SM +resurvey/G +resuscitate/XSDVNG +resuscitation/M +resuscitator/MS +retail/Z +retainer/M +retain/LZGSRD +retake +retaliate/VNGXSD +retaliation/M +retaliatory +Reta/M +retardant/SM +retardation/SM +retarder/M +retard/ZGRDS +retch/SDG +retention/SM +retentiveness/S +retentive/YP +retentivity/M +retest/G +Retha/M +rethought +reticence/S +reticent/Y +reticle/SM +reticular +reticulate/GNYXSD +reticulation/M +reticule/MS +reticulum/M +retinal/S +retina/SM +retinue/MS +retiredness/M +retiree/MS +retire/L +retirement/SM +retiring/YP +retort/GD +retract/DG +retractile +retrench/L +retrenchment/MS +retributed +retribution/MS +retributive +retrieval/SM +retriever/M +retrieve/ZGDRSB +retroactive/Y +retrofire/GMSD +retrofit/S +retrofitted +retrofitting +retroflection +retroflex/D +retroflexion/M +retrogradations +retrograde/GYDS +retrogression/MS +retrogressive/Y +retrogress/SDVG +retrorocket/MS +retro/SM +retrospection/MS +retrospective/SY +retrospect/SVGMD +retrovirus/S +retrovision +retry/G +retsina/SM +returnable/S +returned/U +returnee/SM +retype +Reube/M +Reuben/M +Reub/NM +Reunion/M +reuse/B +Reuters +Reuther/M +reutilization +Reuven/M +Reva/M +revanchist +revealed/U +revealingly +revealing/U +reveal/JBG +reveille/MS +revelation/MS +Revelation/MS +revelatory +revelry/MS +revel/SJRDGZ +revenge/MGSRD +revenger/M +revenuer/M +revenue/ZR +reverberant +reverberate/XVNGSD +reverberation/M +revere/GSD +Revere/M +reverencer/M +reverence/SRDGM +Reverend +reverend/SM +reverential/Y +reverent/Y +reverie/SM +reversal/MS +reverser/M +reverse/Y +reversibility/M +reversible/S +reversibly +reversioner/M +reversion/R +revers/M +reverter/M +revertible +revert/RDVGS +revet/L +revetment/SM +review/G +revile/GZSDL +revilement/MS +reviler/M +revise/BRZ +revised/U +revisionary +revisionism/SM +revisionist/SM +revitalize/ZR +revivalism/MS +revivalist/MS +revival/SM +reviver/M +revive/RSDG +revivification/M +revivify/X +Revkah/M +Revlon/M +Rev/M +revocable +revoke/GZRSD +revolter/M +revolt/GRD +revolting/Y +revolutionariness/M +revolutionary/MSP +revolutionist/MS +revolutionize/GDSRZ +revolutionizer/M +revolution/SM +revolve/BSRDZJG +revolver/M +revue/MS +revulsion/MS +revved +revving +rev/ZM +rewarded/U +rewarding/Y +rewarm/G +reweave +rewedding +reweigh/G +rewind/BGR +rewire/G +rework/G +rexes +Rex/M +Reyes +Reykjavik/M +re/YM +Rey/M +Reynaldo/M +Reyna/M +Reynard/M +Reynold/SM +rezone +Rf +RF +RFC +RFD +R/G +rhapsodic +rhapsodical +rhapsodize/GSD +rhapsody/SM +Rhea/M +rhea/SM +Rheba/M +Rhee/M +Rheims/M +Rheinholdt/M +Rhenish +rhenium/MS +rheology/M +rheostat/MS +rhesus/S +Rheta/M +rhetorical/YP +rhetorician/MS +rhetoric/MS +Rhetta/M +Rhett/M +rheumatically +rheumatic/S +rheumatics/M +rheumatism/SM +rheumatoid +rheum/MS +rheumy/RT +Rhiamon/M +Rhianna/M +Rhiannon/M +Rhianon/M +Rhinelander/M +Rhineland/RM +Rhine/M +rhinestone/SM +rhinitides +rhinitis/M +rhinoceros/MS +rhino/MS +rhinotracheitis +rhizome/MS +Rh/M +Rhoda/M +Rhodes +Rhodesia/M +Rhodesian/S +Rhodia/M +Rhodie/M +rhodium/MS +rhododendron/SM +rhodolite/M +rhodonite/M +Rhody/M +rhombic +rhomboidal +rhomboid/SM +rhombus/SM +rho/MS +Rhona/M +Rhonda/M +Rhone +rhubarb/MS +rhyme/DSRGZM +rhymester/MS +Rhys/M +rhythmical/Y +rhythmic/S +rhythmics/M +rhythm/MS +RI +rial/MS +Riane/M +Riannon/M +Rianon/M +ribaldry/MS +ribald/S +ribbed +Ribbentrop/M +ribber/S +ribbing/M +ribbon/DMSG +ribcage +rib/MS +riboflavin/MS +ribonucleic +ribosomal +ribosome/MS +Rica/M +Rican/SM +Ricard/M +Ricardo/M +Ricca/M +Riccardo/M +rice/DRSMZG +Rice/M +ricer/M +Richard/MS +Richardo/M +Richardson/M +Richart/M +Richelieu/M +richen/DG +Richey/M +Richfield/M +Richie/M +Richland/M +Rich/M +Richmond/M +Richmound/M +richness/MS +Richter/M +Richthofen/M +Richy/M +rich/YNSRPT +Rici/M +Rickard/M +Rickenbacker/M +Rickenbaugh/M +Rickert/M +rickets/M +rickety/RT +Rickey/M +rick/GSDM +Rickie/M +Ricki/M +Rick/M +Rickover/M +rickrack/MS +rickshaw/SM +Ricky/M +Ric/M +ricochet/GSD +Rico/M +Ricoriki/M +ricotta/MS +riddance/SM +ridden +ridding +riddle/GMRSD +Riddle/M +ride/CZSGR +Ride/M +rider/CM +riderless +ridership/S +ridge/DSGM +Ridgefield/M +ridgepole/SM +Ridgway/M +ridgy/RT +ridicule/MGDRS +ridiculer/M +ridiculousness/MS +ridiculous/PY +riding/M +rid/ZGRJSB +Riemann/M +Riesling/SM +rife/RT +riff/GSDM +riffle/SDG +riffraff/SM +rifled/U +rifle/GZMDSR +rifleman/M +riflemen +rifler/M +rifling/M +rift/GSMD +Riga/M +rigamarole's +rigatoni/M +Rigel/M +rigged +rigger/SM +rigging/MS +Riggs/M +righteousnesses/U +righteousness/MS +righteous/PYU +rightfulness/MS +rightful/PY +rightism/SM +rightist/S +rightmost +rightness/MS +Right/S +right/SGTPYRDN +rightsize/SDG +rights/M +rightward/S +rigidify/S +rigidity/S +rigidness/S +rigid/YP +rigmarole/MS +rig/MS +Rigoberto/M +Rigoletto/M +rigor/MS +rigorousness/S +rigorous/YP +Riki/M +Rikki/M +Rik/M +rile/DSG +Riley/M +Rilke/M +rill/GSMD +Rimbaud/M +rime/MS +rimer/M +rim/GSMDR +rimless +rimmed +rimming +Rinaldo/M +Rina/M +rind/MDGS +Rinehart/M +ringer/M +ring/GZJDRM +ringing/Y +ringleader/MS +ringlet/SM +ringlike +Ringling/M +Ring/M +ringmaster/MS +Ringo/M +ringside/ZMRS +ringworm/SM +rink/GDRMS +rinse/DSRG +Riobard/M +Rio/MS +Riordan/M +rioter/M +riotousness/M +riotous/PY +riot/SMDRGZJ +RIP +riparian/S +ripcord/SM +ripened/U +ripenesses +ripeness/UM +ripen/RDG +ripe/PSY +riper/U +ripest/U +Ripley/M +Rip/M +rip/NDRSXTG +ripoff/S +riposte/SDMG +ripped +ripper/SM +ripping +rippler/M +ripple/RSDGM +ripply/TR +ripsaw/GDMS +riptide/SM +Risa/M +RISC +risen +riser/M +rise/RSJZG +risibility/SM +risible/S +rising/M +risker/M +risk/GSDRM +riskily +riskiness/MS +risky/RTP +risotto/SM +risqué +rissole/M +Ritalin +Rita/M +Ritchie/M +rite/DSM +Ritter/M +ritualism/SM +ritualistic +ritualistically +ritualized +ritual/MSY +Ritz/M +ritzy/TR +rivaled/U +Rivalee/M +rivalry/MS +rival/SGDM +Riva/MS +rive/CSGRD +Rivera/M +riverbank/SM +riverbed/S +riverboat/S +river/CM +riverfront +riverine +Rivers +Riverside/M +riverside/S +Riverview/M +riveter/M +rivet/GZSRDM +riveting/Y +Riviera/MS +Rivi/M +Rivkah/M +rivulet/SM +Rivy/M +riv/ZGNDR +Riyadh/M +riyal/SM +rm +RMS +RN +RNA +Rn/M +roach/GSDM +Roach/M +roadbed/MS +roadblock/SMDG +roadhouse/SM +roadie/S +roadkill/S +road/MIS +roadrunner/MS +roadshow/S +roadside/S +roadsigns +roadster/SM +roadsweepers +roadway/SM +roadwork/SM +roadworthy +roam/DRGZS +Roana/M +Roanna/M +Roanne/M +Roanoke/M +roan/S +roar/DRSJGZ +roarer/M +roaring/T +Roarke/M +roaster/M +roast/SGJZRD +robbed +robber/SM +Robbert/M +robbery/SM +Robbie/M +Robbi/M +robbing +Robbin/MS +Robb/M +Robby/M +Robbyn/M +robe/ESDG +Robena/M +Robenia/M +Robers/M +Roberson/M +Roberta/M +Robert/MS +Roberto/M +Robertson/SM +robe's +Robeson/M +Robespierre/M +Robina/M +Robinet/M +Robinetta/M +Robinette/M +Robinett/M +Robinia/M +Robin/M +robin/MS +Robinson/M +Robinsonville/M +Robles/M +Rob/MZ +robotic/S +robotism +robotize/GDS +robot/MS +rob/SDG +Robson/M +Robt/M +robustness/SM +robust/RYPT +Roby/M +Robyn/M +Rocco/M +Rocha/M +Rochambeau/M +Rochella/M +Rochelle/M +Rochell/M +Roche/M +Rochester/M +Rochette/M +Roch/M +rockabilly/MS +rockabye +Rockaway/MS +rockbound +Rockefeller/M +rocker/M +rocketry/MS +rocket/SMDG +Rockey/M +rockfall/S +Rockford/M +rock/GZDRMS +Rockie/M +rockiness/MS +Rockland/M +Rock/M +Rockne/M +Rockville/M +Rockwell/M +Rocky/SM +rocky/SRTP +rococo/MS +Roda/M +rodded +Roddenberry/M +rodder +Roddie/M +rodding +Rodd/M +Roddy/M +rodent/MS +rodeo/SMDG +Roderich/M +Roderick/M +Roderic/M +Roderigo/M +rode/S +Rodger/M +Rodge/ZMR +Rodie/M +Rodi/M +Rodina/M +Rodin/M +Rod/M +Rodney/M +Rodolfo/M +Rodolphe/M +Rodolph/M +Rodrick/M +Rodrigo/M +Rodriguez/M +Rodrique/M +Rodriquez/M +rod/SGMD +roebuck/SM +Roentgen's +roentgen/SM +roe/SM +ROFL +Rogelio/M +roger/GSD +Rogerio/M +Roger/M +Roget/M +Rog/MRZ +rogued/K +rogue/GMDS +roguery/MS +rogues/K +roguing/K +roguishness/SM +roguish/PY +roil/SGD +Roi/SM +roisterer/M +roister/SZGRD +Rojas/M +Roland/M +Rolando/M +Roldan/M +role/MS +Roley/M +Rolfe/M +Rolf/M +Rolland/M +rollback/SM +rolled/A +Rollerblade/S +rollerskating +roller/SM +rollick/DGS +rollicking/Y +Rollie/M +rolling/S +Rollin/SM +Rollo/M +rollover/S +roll/UDSG +Rolodex +Rolph/M +Rolvaag/M +ROM +romaine/MS +Romain/M +Roma/M +romancer/M +romance/RSDZMG +Romanesque/S +Romania/M +Romanian/SM +Romano/MS +Romanov/M +roman/S +Romansh/M +Romans/M +Roman/SM +romantically/U +romanticism/MS +Romanticism/S +romanticist/S +romanticize/SDG +romantic/MS +Romany/SM +Romeo/MS +romeo/S +Romero/M +Rome/SM +Rommel/M +Romney/M +Romola/M +Romona/M +Romonda/M +romper/M +romp/GSZDR +Rom/SM +Romulus/M +Romy/M +Ronalda/M +Ronald/M +Rona/M +Ronda/M +rondo/SM +Ronica/M +Ron/M +Ronna/M +Ronnica/M +Ronnie/M +Ronni/M +Ronny/M +Ronstadt/M +Rontgen +Roobbie/M +rood/MS +roof/DRMJGZS +roofer/M +roofgarden +roofing/M +roofless +rooftop/S +rookery/MS +rook/GDMS +rookie/SRMT +roomer/M +roomette/SM +roomful/MS +roominess/MS +roommate/SM +room/MDRGZS +roomy/TPSR +Rooney/M +Rooseveltian +Roosevelt/M +rooster/M +roost/SGZRDM +rooted/P +rooter/M +rootlessness/M +rootless/P +rootlet/SM +Root/M +root/MGDRZS +rootstock/M +rope/DRSMZG +roper/M +roping/M +Roquefort/MS +Roquemore/M +Rora/M +Rorie/M +Rori/M +Rorke/M +Rorschach +Rory/M +Rosabella/M +Rosabelle/M +Rosabel/M +Rosaleen/M +Rosales/M +Rosalia/M +Rosalie/M +Rosalinda/M +Rosalinde/M +Rosalind/M +Rosaline/M +Rosalynd/M +Rosalyn/M +Rosa/M +Rosamond/M +Rosamund/M +Rosana/M +Rosanna/M +Rosanne/M +Rosario/M +rosary/SM +Roscoe/M +Rosco/M +Roseanna/M +Roseanne/M +Roseann/M +roseate/Y +Roseau +rosebud/MS +rosebush/SM +Rosecrans/M +Roseland/M +Roselia/M +Roseline/M +Roselin/M +Rosella/M +Roselle/M +Rose/M +Rosemaria/M +Rosemarie/M +Rosemary/M +rosemary/MS +rose/MGDS +Rosemonde/M +Rosenberg/M +Rosenblum/M +Rosendo/M +Rosene/M +Rosen/M +Rosenthal/M +Rosenzweig/M +Rosetta/M +Rosette/M +rosette/SDMG +rosewater +rosewood/SM +Roshelle/M +Rosicrucian/M +Rosie/M +rosily +Rosina/M +rosiness/MS +rosin/SMDG +Rosita/M +Roslyn/M +Rosmunda/M +Ros/N +Ross +Rossetti/M +Rossie/M +Rossi/M +Rossini/M +Rossy/M +Rostand/M +roster/DMGS +Rostov/M +rostra's +rostrum/SM +Roswell/M +Rosy/M +rosy/RTP +rota/MS +Rotarian/SM +rotary/S +rotated/U +rotate/VGNXSD +rotational/Y +rotation/M +rotative/Y +rotator/SM +rotatory +ROTC +rote/MS +rotgut/MS +Roth/M +Rothschild/M +rotisserie/MS +rotogravure/SM +rotor/MS +rototill/RZ +rot/SDG +rotted +rottenness/S +rotten/RYSTP +Rotterdam/M +rotter/M +rotting +rotunda/SM +rotundity/S +rotundness/S +rotund/SDYPG +Rouault/M +roué/MS +rouge/GMDS +roughage/SM +roughen/DG +rougher/M +roughhouse/GDSM +roughish +roughneck/MDSG +roughness/MS +roughs +roughshod +rough/XPYRDNGT +roulette/MGDS +roundabout/PSM +roundedness/M +rounded/P +roundelay/SM +roundels +rounder/M +roundhead/D +roundheadedness/M +roundheaded/P +roundhouse/SM +roundish +roundness/MS +roundoff +roundup/MS +roundworm/MS +round/YRDSGPZT +Rourke/M +rouse/DSRG +rouser/M +Rousseau/M +roustabout/SM +roust/SGD +route/ASRDZGJ +router/M +route's +rout/GZJMDRS +routine/SYM +routing/M +routinize/GSD +Rouvin/M +rover/M +Rover/M +rove/ZGJDRS +roving/M +Rowan/M +rowboat/SM +rowdily +rowdiness/MS +rowdyism/MS +rowdy/PTSR +rowel/DMSG +Rowe/M +Rowena/M +rowen/M +Rowen/M +rower/M +Rowland/M +Rowley/M +Row/MN +Rowney/M +row/SJZMGNDR +Roxana/M +Roxane/M +Roxanna/M +Roxanne/M +Roxie/M +Roxi/M +Roxine/M +Roxy/M +royalist/SM +Royall/M +Royal/M +royal/SY +royalty/MS +Royce/M +Roy/M +Rozalie/M +Rozalin/M +Rozamond/M +Rozanna/M +Rozanne/M +Rozele/M +Rozella/M +Rozelle/M +Roze/M +Rozina/M +Roz/M +RP +rpm +RPM +rps +RR +Rriocard/M +rs +r's +R's +RSFSR +RSI +RSV +RSVP +RSX +rt +rte +Rte +RTFM +r/TGVJ +Rubaiyat/M +rubato/MS +rubbed +rubberize/GSD +rubberneck/DRMGSZ +rubber/SDMG +rubbery/TR +rubbing/M +rubbish/DSMG +rubbishy +rubble/GMSD +rubdown/MS +rubella/MS +Rube/M +Ruben/MS +rube/SM +Rubetta/M +Rubia/M +Rubicon/SM +rubicund +rubidium/SM +Rubie/M +Rubik/M +Rubi/M +Rubina/M +Rubin/M +Rubinstein/M +ruble/MS +rubout +rubric/MS +rub/S +Ruby/M +ruby/MTGDSR +Ruchbah/M +ruck/M +rucksack/SM +ruckus/SM +ruction/SM +rudderless +rudder/MS +Ruddie/M +ruddiness/MS +Rudd/M +Ruddy/M +ruddy/PTGRSD +rudeness/MS +rude/PYTR +Rudie/M +Rudiger/M +rudimentariness/M +rudimentary/P +rudiment/SM +Rudolf/M +Rudolfo/M +Rudolph/M +Rudyard/M +Rudy/M +ruefulness/S +rueful/PY +rue/GDS +Rufe/M +ruff/GSYDM +ruffian/GSMDY +ruffled/U +ruffler/M +ruffle/RSDG +ruffly/TR +Rufus/M +Rugby's +rugby/SM +ruggedness/S +rugged/PYRT +Ruggiero/M +rugging +rug/MS +Ruhr/M +ruination/MS +ruiner/M +ruin/MGSDR +ruinousness/M +ruinous/YP +Ruiz/M +rulebook/S +ruled/U +rule/MZGJDRS +ruler/GMD +ruling/M +Rumanian's +Rumania's +rumba/GDMS +rumble/JRSDG +rumbler/M +rumbustious +rumen/M +Rumford/M +Ru/MH +ruminant/YMS +ruminate/VNGXSD +ruminative/Y +rummage/GRSD +rummager/M +Rummel/M +rummer +rummest +rummy/TRSM +rumored/U +rumorer/M +rumormonger/SGMD +rumor/ZMRDSG +Rumpelstiltskin/M +rump/GMYDS +rumple/SDG +rumply/TR +rumpus/SM +rum/XSMN +runabout/SM +runaround/S +run/AS +runaway/S +rundown/SM +rune/MS +Runge/M +rung/MS +runic +runlet/SM +runnable +runnel/SM +runner/MS +running/S +Runnymede/M +runny/RT +runoff/MS +runtime +runtiness/M +runt/MS +runty/RPT +runway/MS +Runyon/M +rupee/MS +Ruperta/M +Rupert/M +Ruperto/M +rupiah/M +rupiahs +Ruppert/M +Ruprecht/M +rupture/GMSD +rurality/M +rural/Y +Rurik/M +ruse/MS +Rushdie/M +rush/DSRGZ +rusher/M +rushes/I +rushing/M +Rush/M +Rushmore/M +rushy/RT +Ruskin/M +rusk/MS +Russell/M +Russel/M +russet/MDS +russetting +Russia/M +Russian/SM +Russo/M +Russ/S +Rustbelt/M +rustically +rusticate/GSD +rustication/M +rusticity/S +rustic/S +Rustie/M +rustiness/MS +Rustin/M +rustler/M +rustle/RSDGZ +rust/MSDG +rustproof/DGS +Rusty/M +rusty/XNRTP +rutabaga/SM +Rutger/SM +Ruthanne/M +Ruthann/M +Ruthe/M +ruthenium/MS +rutherfordium/SM +Rutherford/M +Ruthie/M +Ruthi/M +ruthlessness/MS +ruthless/YP +Ruth/M +Ruthy/M +Rutland/M +Rutledge/M +rut/MS +rutted +Rutter/M +Ruttger/M +rutting +rutty/RT +Ruy/M +RV +RVs +Rwandan/S +Rwanda/SM +Rwy/M +Rx/M +Ryan/M +Ryann/M +Rycca/M +Rydberg/M +Ryder/M +rye/MS +Ryley/M +Ry/M +Ryon/M +Ryukyu/M +Ryun/M +S +SA +Saab/M +Saar/M +Saba/M +sabbath +Sabbath/M +Sabbaths +sabbatical/S +sabered/U +saber/GSMD +Sabik/M +Sabina/M +Sabine/M +Sabin/M +sable/GMDS +sabotage/DSMG +saboteur/SM +sabot/MS +Sabra/M +sabra/MS +Sabrina/M +SAC +Sacajawea/M +saccharides +saccharine +saccharin/MS +Sacco/M +sacerdotal +Sacha/M +sachem/MS +sachet/SM +Sachs/M +sackcloth/M +sackcloths +sacker/M +sackful/MS +sack/GJDRMS +sacking/M +sacral +sacra/L +sacramental/S +sacrament/DMGS +Sacramento/M +sacredness/S +sacred/PY +sacrificer/M +sacrifice/RSDZMG +sacrificial/Y +sacrilege/MS +sacrilegious/Y +sacristan/SM +sacristy/MS +sacroiliac/S +sacrosanctness/MS +sacrosanct/P +sacrum/M +sac/SM +Sada/M +Sadat/M +Saddam/M +sadden/DSG +sadder +saddest +saddlebag/SM +saddler/M +saddle's +saddle/UGDS +Sadducee/M +Sadella/M +Sade/M +sades +Sadie/M +sadism/MS +sadistic +sadistically +sadist/MS +sadness/SM +sadomasochism/MS +sadomasochistic +sadomasochist/S +sad/PY +Sadr/M +Sadye/M +safari/GMDS +safeguard/MDSG +safekeeping/MS +safeness/MS +safeness's/U +safes +safety/SDMG +safe/URPTY +safflower/SM +saffron/MS +sagaciousness/M +sagacious/YP +sagacity/MS +saga/MS +Sagan/M +sagebrush/SM +sage/MYPS +sagged +sagger +sagging +saggy/RT +Saginaw/M +Sagittarius/MS +sago/MS +sag/TSR +saguaro/SM +Sahara/M +Saharan/M +Sahel +sahib/MS +Saidee/M +saids +said/U +Saigon/M +sailboard/DGS +sailboat/SRMZG +sailcloth/M +sailcloths +sailer/M +sailfish/SM +sail/GJMDRS +sailing/M +sailor/YMS +sailplane/SDMG +sainthood/MS +saintlike +saintliness/MS +saintly/RTP +saint/YDMGS +Saiph/M +saith +saiths +Sakai/M +sake/MRS +saker/M +Sakhalin/M +Sakharov/M +Saki/M +saki's +salaam/GMDS +salable/U +salaciousness/MS +salacious/YP +salacity/MS +Saladin/M +Salado/M +salad/SM +Salaidh/M +salamander/MS +salami/MS +salary/SDMG +Salas/M +Salazar/M +saleability/M +sale/ABMS +Saleem/M +Salem/M +Salerno/M +salesclerk/SM +salesgirl/SM +saleslady/S +salesman/M +salesmanship/SM +salesmen +salespeople/M +salesperson/MS +salesroom/M +saleswoman +saleswomen +salience/MS +saliency +salient/SY +Salim/M +Salina/MS +saline/S +salinger +Salinger/M +salinity/MS +Salisbury/M +Salish/M +saliva/MS +salivary +salivate/XNGSD +salivation/M +Salk/M +Sallee/M +Salle/M +Sallie/M +Salli/M +sallowness/MS +sallow/TGRDSP +Sallust/M +Sallyanne/M +Sallyann/M +sally/GSDM +Sally/M +salmonellae +salmonella/M +Salmon/M +salmon/SM +Sal/MY +Saloma/M +Salome/M +Salomi/M +Salomo/M +Salomone/M +Salomon/M +Salonika/M +salon/SM +saloonkeeper +saloon/MS +salsa/MS +salsify/M +SALT +saltcellar/SM +salted/UC +salter/M +salt/GZTPMDRS +saltine/MS +saltiness/SM +saltness/M +Salton/M +saltpeter/SM +salts/C +saltshaker/S +saltwater +salty/RSPT +salubriousness/M +salubrious/YP +salubrity/M +salutariness/M +salutary/P +salutation/SM +salutatory/S +saluter/M +salute/RSDG +Salvadoran/S +Salvadorian/S +Salvador/M +salvageable +salvage/MGRSD +salvager/M +salvation/MS +Salvatore/M +salve/GZMDSR +salver/M +Salvidor/M +salvo/GMDS +Salween/M +Salyut/M +Salz/M +SAM +Samantha/M +Samara/M +Samaria/M +Samaritan/MS +samarium/MS +Samarkand/M +samba/GSDM +sameness/MS +same/SP +Sam/M +Sammie/M +Sammy/M +Samoa +Samoan/S +Samoset/M +samovar/SM +Samoyed/M +sampan/MS +sampler/M +sample/RSDJGMZ +sampling/M +Sampson/M +Samsonite/M +Samson/M +Samuele/M +Samuel/SM +Samuelson/M +samurai/M +San'a +Sana/M +sanatorium/MS +Sanborn/M +Sanchez/M +Sancho/M +sanctification/M +sanctifier/M +sanctify/RSDGNX +sanctimoniousness/MS +sanctimonious/PY +sanctimony/MS +sanctioned/U +sanction/SMDG +sanctity/SM +sanctuary/MS +sanctum/SM +sandal/MDGS +sandalwood/SM +sandbagged +sandbagging +sandbag/MS +sandbank/SM +sandbar/S +sandblaster/M +sandblast/GZSMRD +sandbox/MS +Sandburg/M +sandcastle/S +Sande/M +Sanderling/M +sander/M +Sander/M +Sanderson/M +sandhill +sandhog/SM +Sandia/M +Sandie/M +Sandi/M +sandiness/S +Sandinista +sandlot/SM +sandlotter/S +sandman/M +sandmen +Sand/MRZ +Sandor/M +Sandoval/M +sandpaper/DMGS +sandpile +sandpiper/MS +sandpit/M +Sandra/M +Sandro/M +sand/SMDRGZ +sandstone/MS +sandstorm/SM +Sandusky/M +sandwich/SDMG +Sandye/M +Sandy/M +sandy/PRT +saned +sane/IRYTP +saneness/MS +saneness's/I +sanes +Sanford/M +Sanforized +Sanger/M +sangfroid/S +sangria/SM +Sang/RM +sang/S +sanguinary +sanguined +sanguine/F +sanguinely +sanguineness/M +sanguineous/F +sanguines +sanguining +Sanhedrin/M +saning +sanitarian/S +sanitarium/SM +sanitary/S +sanitate/NX +sanitation/M +sanitizer/M +sanitize/RSDZG +sanity/SIM +sank +Sankara/M +San/M +sans +sanserif +Sanskritic +Sanskritize/M +Sanskrit/M +Sansone/M +Sanson/M +Santa/M +Santana/M +Santayana/M +Santeria +Santiago/M +Santo/MS +sapience/MS +sapient +sapless +sapling/SM +sap/MS +sapped +sapper/SM +Sapphira/M +Sapphire/M +sapphire/MS +Sappho/M +sappiness/SM +sapping +Sapporo/M +sappy/RPT +saprophyte/MS +saprophytic +sapsucker/SM +sapwood/SM +Saraann/M +Saracen/MS +Saragossa/M +Sarah/M +Sarajane/M +Sarajevo/M +Sara/M +Saran/M +saran/SM +sarape's +Sarasota/M +Saratoga/M +Saratov/M +Sarawak/M +sarcasm/MS +sarcastic +sarcastically +sarcoma/MS +sarcophagi +sarcophagus/M +sardine/SDMG +Sardinia/M +sardonic +sardonically +Saree/M +Sarena/M +Sarene/M +Sarette/M +Sargasso/M +Sarge/M +Sargent/M +sarge/SM +Sargon/M +Sari/M +sari/MS +Sarina/M +Sarine/M +Sarita/M +Sarnoff/M +sarong/MS +Saroyan/M +sarsaparilla/MS +Sarto/M +sartorial/Y +sartorius/M +Sartre/M +Sascha/M +SASE +Sasha/M +sashay/GDS +Sashenka/M +sash/GMDS +Saskatchewan/M +Saskatoon/M +Sask/M +sassafras/MS +sass/GDSM +Sassoon/M +sassy/TRS +SAT +satanic +satanical/Y +Satanism/M +satanism/S +Satanist/M +satanist/S +Satan/M +satchel/SM +sat/DG +sateen/MS +satellite/GMSD +sate/S +satiable/I +satiate/GNXSD +satiation/M +satiety/MS +satin/MDSG +satinwood/MS +satiny +satire/SM +satiric +satirical/Y +satirist/SM +satirize/DSG +satirizes/U +satisfaction/ESM +satisfactorily/U +satisfactoriness/MU +satisfactory/UP +satisfiability/U +satisfiable/U +satisfied/UE +satisfier/M +satisfies/E +satisfy/GZDRS +satisfying/EU +satisfyingly +Sat/M +satori/SM +satrap/SM +saturated/CUA +saturater/M +saturates/A +saturate/XDRSNG +saturation/M +Saturday/MS +saturnalia +Saturnalia/M +saturnine/Y +Saturn/M +Satyanarayanan/M +satyriases +satyriasis/M +satyric +satyr/MS +sauce/DSRGZM +saucepan/SM +saucer/M +saucily +sauciness/S +saucy/TRP +Saudi/S +Saud/M +Saudra/M +sauerkraut/SM +Saukville/M +Saul/M +Sault/M +sauna/DMSG +Sauncho/M +Saunder/SM +Saunderson/M +Saundra/M +saunter/DRSG +saurian/S +sauropod/SM +sausage/MS +Saussure/M +sauté/DGS +Sauternes/M +Sauveur/M +savage/GTZYPRSD +Savage/M +savageness/SM +savagery/MS +Savannah/M +savanna/MS +savant/SM +saved/U +saveloy/M +saver/M +save/ZGJDRSB +Savina/M +Savior/M +savior/SM +Saviour/M +Savonarola/M +savored/U +savorer/M +savorier +savoriest +savoriness/S +savoringly/S +savoring/Y +savor/SMRDGZ +savory/UMPS +Savoyard/M +Savoy/M +savoy/SM +savvy/GTRSD +sawbones/M +sawbuck/SM +sawdust/MDSG +sawer/M +sawfly/SM +sawhorse/MS +Saw/M +sawmill/SM +saw/SMDRG +sawtooth +Sawyere/M +Sawyer/M +sawyer/MS +Saxe/M +saxifrage/SM +Sax/M +sax/MS +Saxon/SM +Saxony/M +saxophone/MS +saxophonist/SM +Saxton/M +Sayer/M +sayer/SM +sayest +saying/MS +Sayre/MS +says/M +say/USG +Say/ZMR +SBA +Sb/M +SC +scabbard/SGDM +scabbed +scabbiness/SM +scabbing +scabby/RTP +scabies/M +scabrousness/M +scabrous/YP +scab/SM +scad/SM +scaffolding/M +scaffold/JGDMS +scalability +Scala/M +scalar/SM +scalawag/SM +scald/GJRDS +scaled/AU +scale/JGZMBDSR +scaleless +scalene +scaler/M +scales/A +scaliness/MS +scaling/A +scallion/MS +scalloper/M +scallop/GSMDR +scalloping/M +scalpel/SM +scalper/M +scalp/GZRDMS +scalping/M +scaly/TPR +scammed +scamming +scamper/GD +scampi/M +scamp/RDMGZS +scam/SM +Scan +scan/AS +scandal/GMDS +scandalized/U +scandalize/GDS +scandalmonger/SM +scandalousness/M +scandalous/YP +Scandinavia/M +Scandinavian/S +scandium/MS +scanned/A +scanner/SM +scanning/A +scansion/SM +scant/CDRSG +scantest +scantily +scantiness/MS +scantly +scantness/MS +scanty/TPRS +scapegoat/SGDM +scapegrace/MS +scape/M +scapulae +scapula/M +scapular/S +scarab/SM +Scaramouch/M +Scarborough/M +scarceness/SM +scarce/RTYP +scarcity/MS +scar/DRMSG +scarecrow/MS +scaremongering/M +scaremonger/SGM +scarer/M +scare/S +scarface +Scarface/M +scarf/SDGM +scarification/M +scarify/DRSNGX +scarily +scariness/S +scarlatina/MS +Scarlatti/M +Scarlet/M +scarlet/MDSG +Scarlett/M +scarp/SDMG +scarred +scarring +scarves/M +scary/PTR +scathe/DG +scathed/U +scathing/Y +scatological +scatology/SM +scat/S +scatted +scatterbrain/MDS +scatter/DRJZSG +scatterer/M +scattergun +scattering/YM +scatting +scavenge/GDRSZ +scavenger/M +SCCS +scenario/SM +scenarist/MS +scene/GMDS +scenery/SM +scenically +scenic/S +scented/U +scent/GDMS +scentless +scent's/C +scents/C +scepter/DMSG +scepters/U +sceptically +sch +Schaefer/M +Schaeffer/M +Schafer/M +Schaffner/M +Schantz/M +Schapiro/M +Scheat/M +Schedar/M +schedule/ADSRG +scheduled/U +scheduler/MS +schedule's +Scheherazade/M +Scheherezade/M +Schelling/M +schema/M +schemata +schematically +schematic/S +scheme/JSRDGMZ +schemer/M +schemta +Schenectady/M +scherzo/MS +Schick/M +Schiller/M +schilling/SM +schismatic/S +schism/SM +schist/SM +schizoid/S +schizomycetes +schizophrenia/SM +schizophrenically +schizophrenic/S +schizo/S +schlemiel/MS +schlepped +schlepping +schlep/S +Schlesinger/M +Schliemann/M +Schlitz/M +schlock/SM +schlocky/TR +Schloss/M +schmaltz/MS +schmaltzy/TR +Schmidt/M +Schmitt/M +schmoes +schmo/M +schmooze/GSD +schmuck/MS +Schnabel/M +schnapps/M +schnauzer/MS +Schneider/M +schnitzel/MS +schnook/SM +schnoz/S +schnozzle/MS +Schoenberg/M +Schofield/M +scholarship/MS +scholar/SYM +scholastically +scholastic/S +schoolbag/SM +schoolbook/SM +schoolboy/MS +schoolchild/M +schoolchildren +schooldays +schooled/U +schoolfellow/S +schoolfriend +schoolgirlish +schoolgirl/MS +schoolhouse/MS +schooling/M +schoolmarmish +schoolmarm/MS +schoolmaster/SGDM +schoolmate/MS +schoolmistress/MS +schoolroom/SM +schoolteacher/MS +schoolwork/SM +schoolyard/SM +school/ZGMRDJS +schooner/SM +Schopenhauer/M +Schottky/M +Schrieffer/M +Schrödinger/M +Schroeder/M +Schroedinger/M +Schubert/M +Schultz/M +Schulz/M +Schumacher/M +Schuman/M +Schumann/M +schussboomer/S +schuss/SDMG +Schuster/M +Schuyler/M +Schuylkill/M +Schwab/M +Schwartzkopf/M +Schwartz/M +Schwarzenegger/M +schwa/SM +Schweitzer/M +Schweppes/M +Schwinger/M +Schwinn/M +sci +sciatica/SM +sciatic/S +science/FMS +scientifically/U +scientific/U +scientist/SM +Scientology/M +scimitar/SM +scintilla/MS +scintillate/GNDSX +scintillation/M +scintillator/SM +scion/SM +Scipio/M +scissor/SGD +scleroses +sclerosis/M +sclerotic/S +Sc/M +scoffer/M +scofflaw/MS +scoff/RDGZS +scolder/M +scold/GSJRD +scolioses +scoliosis/M +scollop's +sconce/SDGM +scone/SM +scooper/M +scoop/SRDMG +scooter/M +scoot/SRDGZ +scope/DSGM +Scopes/M +scops +scorbutic +scorcher/M +scorching/Y +scorch/ZGRSD +scoreboard/MS +scorecard/MS +scored/M +scorekeeper/SM +scoreless +scoreline +score/ZMDSRJG +scorner/M +scornfulness/M +scornful/PY +scorn/SGZMRD +scorpion/SM +Scorpio/SM +Scorpius/M +Scorsese/M +Scotchgard/M +Scotchman/M +Scotchmen +scotch/MSDG +scotchs +Scotch/S +Scotchwoman +Scotchwomen +Scotia/M +Scotian/M +Scotland/M +Scot/MS +Scotsman/M +Scotsmen +Scotswoman +Scotswomen +Scottie/SM +Scotti/M +Scottish +Scott/M +Scottsdale/M +Scotty's +scoundrel/YMS +scourer/M +scourge/MGRSD +scourger/M +scouring/M +scour/SRDGZ +scouter/M +scouting/M +scoutmaster/SM +Scout's +scout/SRDMJG +scow/DMGS +scowler/M +scowl/SRDG +scrabble/DRSZG +scrabbler/M +Scrabble/SM +scragged +scragging +scraggly/TR +scraggy/TR +scrag/SM +scrambler/MS +scrambler's/U +scramble/UDSRG +scrammed +scramming +scram/S +Scranton/M +scrapbook/SM +scraper/M +scrape/S +scrapheap/SM +scrapped +scrapper/SM +scrapping +scrappy/RT +scrap/SGZJRDM +scrapyard/S +scratched/U +scratcher/M +scratches/M +scratchily +scratchiness/S +scratch/JDRSZG +scratchy/TRP +scrawler/M +scrawl/GRDS +scrawly/RT +scrawniness/MS +scrawny/TRP +screamer/M +screaming/Y +scream/ZGSRD +screecher/M +screech/GMDRS +screechy/TR +screed/MS +scree/DSM +screened/U +screening/M +screenplay/MS +screen/RDMJSG +screenwriter/MS +screwball/SM +screwdriver/SM +screwer/M +screw/GUSD +screwiness/S +screw's +screwup +screwworm/MS +screwy/RTP +Scriabin/M +scribal +scribble/JZDRSG +scribbler/M +scribe/CDRSGIK +scriber/MKIC +scribe's +Scribner/MS +scrimmager/M +scrimmage/RSDMG +scrimp/DGS +scrimshaw/GSDM +scrim/SM +Scripps/M +scrip/SM +scripted/U +script/FGMDS +scriptural/Y +scripture/MS +Scripture/MS +scriptwriter/SM +scriptwriting/M +scrivener/M +scriven/ZR +scrod/M +scrofula/MS +scrofulous +scrollbar/SM +scroll/GMDSB +Scrooge/MS +scrooge/SDMG +scrota +scrotal +scrotum/M +scrounge/ZGDRS +scroungy/TR +scrubbed +scrubber/MS +scrubbing +scrubby/TR +scrub/S +scruffily +scruffiness/S +scruff/SM +scruffy/PRT +Scruggs/M +scrummage/MG +scrum/MS +scrumptious/Y +scrunch/DSG +scrunchy/S +scruple/SDMG +scrupulosity/SM +scrupulousness's +scrupulousness/US +scrupulous/UPY +scrutable/I +scrutinized/U +scrutinizer/M +scrutinize/RSDGZ +scrutinizingly/S +scrutinizing/UY +scrutiny/MS +SCSI +scuba/SDMG +scudded +scudding +Scud/M +scud/S +scuff/GSD +scuffle/SDG +sculler/M +scullery/MS +Sculley/M +scullion/MS +scull/SRDMGZ +sculptor/MS +sculptress/MS +sculpt/SDG +sculptural/Y +sculpture/SDGM +scumbag/S +scummed +scumming +scum/MS +scummy/TR +scupper/SDMG +scurf/MS +scurfy/TR +scurrility/MS +scurrilousness/MS +scurrilous/PY +scurry/GJSD +scurvily +scurviness/M +scurvy/SRTP +scutcheon/SM +scuttlebutt/MS +scuttle/MGSD +scuzzy/RT +Scylla/M +scythe/SDGM +Scythia/M +SD +SDI +SE +seabed/S +seabird/S +seaboard/MS +Seaborg/M +seaborne +Seabrook/M +seacoast/MS +seafare/JRZG +seafarer/M +seafood/MS +seafront/MS +Seagate/M +seagoing +Seagram/M +seagull/S +seahorse/S +sealant/MS +sealed/AU +sealer/M +seal/MDRSGZ +sealskin/SM +seals/UA +seamail +seamanship/SM +seaman/YM +seamer/M +seaminess/M +seamlessness/M +seamless/PY +seam/MNDRGS +seams/I +seamstress/MS +Seamus/M +sea/MYS +seamy/TRP +Seana/M +séance/SM +Sean/M +seaplane/SM +seaport/SM +seaquake/M +Seaquarium/M +searcher/AM +searching/YS +searchlight/SM +search/RSDAGZ +sear/DRSJGT +searing/Y +Sears/M +seascape/SM +seashell/MS +seashore/SM +seasickness/SM +seasick/P +seaside/SM +seasonableness/M +seasonable/UP +seasonably/U +seasonality +seasonal/Y +seasoned/U +seasoner/M +seasoning/M +season/JRDYMBZSG +seatbelt +seated/A +seater/M +seating/SM +SEATO +seat's +Seattle/M +seat/UDSG +seawall/S +seaward/S +seawater/S +seaway/MS +seaweed/SM +seaworthinesses +seaworthiness/MU +seaworthy/TRP +sebaceous +Sebastian/M +Sebastiano/M +Sebastien/M +seborrhea/SM +SEC +secant/SM +secede/GRSD +secessionist/MS +secession/MS +secludedness/M +secluded/YP +seclude/GSD +seclusion/SM +seclusive +Seconal +secondarily +secondary/PS +seconder/M +secondhand +second/RDYZGSL +secrecy/MS +secretarial +secretariat/MS +secretaryship/MS +secretary/SM +secrete/XNS +secretion/M +secretiveness/S +secretive/PY +secretory +secret/TVGRDYS +sec/S +sectarianism/MS +sectarian/S +sectary/MS +sectionalism/MS +sectionalized +sectional/SY +section/ASEM +sectioned +sectioning +sect/ISM +sectoral +sectored +sector/EMS +sectoring +sects/E +secularism/MS +secularist/MS +secularity/M +secularization/MS +secularized/U +secularize/GSD +secular/SY +secured/U +securely/I +secure/PGTYRSDJ +security/MSI +secy +sec'y +sedan/SM +sedateness/SM +sedate/PXVNGTYRSD +sedation/M +sedative/S +sedentary +Seder/SM +sedge/SM +Sedgwick/M +sedgy/RT +sedimentary +sedimentation/SM +sediment/SGDM +sedition/SM +seditiousness/M +seditious/PY +seducer/M +seduce/RSDGZ +seduction/MS +seductiveness/MS +seductive/YP +seductress/SM +sedulous/Y +Seebeck/M +seed/ADSG +seedbed/MS +seedcase/SM +seeded/U +seeder/MS +seediness/MS +seeding/S +seedless +seedling/SM +seedpod/S +seed's +seedy/TPR +seeings +seeing's +seeing/U +seeker/M +seek/GZSR +seeking/Y +Seeley/M +See/M +seem/GJSYD +seeming/Y +seemliness's +seemliness/US +seemly/UTPR +seen/U +seepage/MS +seep/GSD +seer/SM +seersucker/MS +sees +seesaw/DMSG +seethe/SDGJ +see/U +segmental/Y +segmentation/SM +segmented/U +segment/SGDM +Segovia/M +segregant +segregated/U +segregate/XCNGSD +segregation/CM +segregationist/SM +segregative +Segre/M +segue/DS +segueing +Segundo/M +Se/H +Seidel/M +seigneur/MS +seignior/SM +Seiko/M +seine/GZMDSR +Seine/M +seiner/M +Seinfeld/M +seismic +seismically +seismographer/M +seismographic +seismographs +seismography/SM +seismograph/ZMR +seismologic +seismological +seismologist/MS +seismology/SM +seismometer/S +seize/BJGZDSR +seizer/M +seizing/M +seizin/MS +seizor/MS +seizure/MS +Seka/M +Sela/M +Selassie/M +Selby/M +seldom +selected/UAC +selectional +selection/MS +selectiveness/M +selective/YP +selectivity/MS +selectman/M +selectmen +selectness/SM +selector/SM +select/PDSVGB +Selectric/M +selects/A +Selena/M +selenate/M +Selene/M +selenite/M +selenium/MS +selenographer/SM +selenography/MS +Selestina/M +Seleucid/M +Seleucus/M +self/GPDMS +selfishness/SU +selfish/PUY +selflessness/MS +selfless/YP +selfness/M +Selfridge/M +selfsameness/M +selfsame/P +Selia/M +Selie/M +Selig/M +Selim/M +Selina/M +Selinda/M +Seline/M +Seljuk/M +Selkirk/M +Sella/M +sell/AZGSR +seller/AM +Sellers/M +Selle/ZM +sellout/MS +Selma/M +seltzer/S +selvage/MGSD +selves/M +Selznick/M +semantical/Y +semanticist/SM +semantic/S +semantics/M +semaphore/GMSD +Semarang/M +semblance/ASME +semen/SM +semester/SM +semiannual/Y +semiarid +semiautomated +semiautomatic/S +semicircle/SM +semicircular +semicolon/MS +semiconductor/SM +semiconscious +semidefinite +semidetached +semidrying/M +semifinalist/MS +semifinal/MS +semilogarithmic +semimonthly/S +seminal/Y +seminarian/MS +seminar/SM +seminary/MS +Seminole/SM +semiofficial +semioticians +semiotic/S +semiotics/M +semipermanent/Y +semipermeable +semiprecious +semiprivate +semiprofessional/YS +semipublic +semiquantitative/Y +Semiramis/M +semiretired +semisecret +semiskilled +semi/SM +semisolid/S +semistructured +semisweet +Semite/SM +Semitic/MS +semitic/S +semitone/SM +semitrailer/SM +semitrance +semitransparent +semitropical +semivowel/MS +semiweekly/S +semiyearly +semolina/SM +sempiternal +sempstress/SM +Semtex +sen +Sen +Sena/M +senate/MS +Senate/MS +senatorial +senator/MS +Sendai/M +sender/M +sends/A +send/SRGZ +Seneca/MS +Senegalese +Senegal/M +senescence/SM +senescent +senile/SY +senility/MS +seniority/SM +senior/MS +Senior/S +Sennacherib/M +senna/MS +Sennett/M +Señora/M +senora/S +senorita/S +senor/MS +sensately/I +sensate/YNX +sensationalism/MS +sensationalist/S +sensationalize/GSD +sensational/Y +sensation/M +sens/DSG +senselessness/SM +senseless/PY +sense/M +sensibility/ISM +sensibleness/MS +sensible/PRST +sensibly/I +sensitiveness/MS +sensitiveness's/I +sensitives +sensitive/YIP +sensitivity/ISM +sensitization/CSM +sensitized/U +sensitizers +sensitize/SDCG +sensor/MS +sensory +sensualist/MS +sensuality/MS +sensual/YF +sensuousness/S +sensuous/PY +Sensurround/M +sentence/SDMG +sentential/Y +sententious/Y +sentience/ISM +sentient/YS +sentimentalism/SM +sentimentalist/SM +sentimentality/SM +sentimentalization/SM +sentimentalize/RSDZG +sentimentalizes/U +sentimental/Y +sentiment/MS +sentinel/GDMS +sentry/SM +sent/UFEA +Seoul/M +sepal/SM +separability/MSI +separableness/MI +separable/PI +separably/I +separateness/MS +separates/M +separate/YNGVDSXP +separation/M +separatism/SM +separatist/SM +separator/SM +Sephardi/M +Sephira/M +sepia/MS +Sepoy/M +sepses +sepsis/M +septa/M +septate/N +September/MS +septennial/Y +septet/MS +septicemia/SM +septicemic +septic/S +septillion/M +sept/M +Sept/M +septuagenarian/MS +Septuagint/MS +septum/M +sepulcher/MGSD +sepulchers/UA +sepulchral/Y +seq +sequel/MS +sequenced/A +sequence/DRSJZMG +sequencer/M +sequence's/F +sequences/F +sequent/F +sequentiality/FM +sequentialize/DSG +sequential/YF +sequester/SDG +sequestrate/XGNDS +sequestration/M +sequin/SDMG +Sequoia/M +sequoia/MS +Sequoya/M +Serafin/M +seraglio/SM +serape/S +seraphic +seraphically +seraphim's +seraph/M +seraphs +sera's +Serbia/M +Serbian/S +Serb/MS +Serbo/M +serenade/MGDRS +serenader/M +Serena/M +serendipitous/Y +serendipity/MS +serene/GTYRSDP +Serene/M +sereneness/SM +Serengeti/M +serenity/MS +sere/TGDRS +serfdom/MS +serf/MS +Sergeant/M +sergeant/SM +serge/DSGM +Sergei/M +Serge/M +Sergent/M +Sergio/M +serialization/MS +serialize/GSD +serial/MYS +series/M +serif/SMD +serigraph/M +serigraphs +seriousness/SM +serious/PY +sermonize/GSD +sermon/SGDM +serological/Y +serology/MS +serons +serous +Serpens/M +serpent/GSDM +serpentine/GYS +Serra/M +Serrano/M +serrate/GNXSD +serration/M +serried +serum/MS +servant/SDMG +serve/AGCFDSR +served/U +server/MCF +servers +serviceability/SM +serviceableness/M +serviceable/P +serviced/U +serviceman/M +servicemen +service/MGSRD +service's/E +services/E +servicewoman +servicewomen +serviette/MS +servilely +servileness/M +serviles +servile/U +servility/SM +serving/SM +servitor/SM +servitude/MS +servomechanism/MS +servomotor/MS +servo/S +sesame/MS +sesquicentennial/S +sessile +session/SM +setback/S +Seth/M +Set/M +Seton/M +set's +setscrew/SM +set/SIA +settable/A +sett/BJGZSMR +settee/MS +setter/M +setting/AS +setting's +settle/AUDSG +settlement/ASM +settler/MS +settling/S +setup/MS +Seumas/M +Seurat/M +Seuss/M +Sevastopol/M +sevenfold +sevenpence +seven/SMH +seventeen/HMS +seventeenths +sevenths +seventieths +seventy/MSH +severalfold +severalty/M +several/YS +severance/SM +severed/E +severeness/SM +severe/PY +severing/E +severity/MS +Severn/M +severs/E +sever/SGTRD +Severus/M +Seville/M +sewage/MS +Seward/M +sewerage/SM +sewer/GSMD +sewing/SM +sewn +sew/SAGD +sexagenarian/MS +sex/GMDS +sexily +sexiness/MS +sexism/SM +sexist/SM +sexless +sexologist/SM +sexology/MS +sexpot/SM +Sextans/M +sextant/SM +sextet/SM +sextillion/M +Sexton/M +sexton/MS +sextuple/MDG +sextuplet/MS +sexuality/MS +sexualized +sexual/Y +sexy/RTP +Seychelles +Seyfert +Seymour/M +sf +SF +Sgt +shabbily +shabbiness/SM +shabby/RTP +shack/GMDS +shackler/M +shackle's +Shackleton/M +shackle/UGDS +shad/DRJGSM +shaded/U +shadeless +shade/SM +shadily +shadiness/MS +shading/M +shadowbox/SDG +shadower/M +shadow/GSDRM +shadowiness/M +Shadow/M +shadowy/TRP +shady/TRP +Shae/M +Shafer/M +Shaffer/M +shafting/M +shaft/SDMG +shagged +shagginess/SM +shagging +shaggy/TPR +shag/MS +shah/M +shahs +Shaina/M +Shaine/M +shakable/U +shakably/U +shakeable +shakedown/S +shaken/U +shakeout/SM +shaker/M +Shaker/S +Shakespearean/S +Shakespeare/M +Shakespearian +shake/SRGZB +shakeup/S +shakily +shakiness/S +shaking/M +shaky/TPR +shale/SM +shall +shallot/SM +shallowness/SM +shallow/STPGDRY +Shalna/M +Shalne/M +shalom +Shalom/M +shalt +shamanic +shaman/SM +shamble/DSG +shambles/M +shamefaced/Y +shamefulness/S +shameful/YP +shamelessness/SM +shameless/PY +shame/SM +sham/MDSG +shammed +shammer +shamming +shammy's +shampoo/DRSMZG +shampooer/M +shamrock/SM +Shamus/M +Shana/M +Shanan/M +Shanda/M +Shandee/M +Shandeigh/M +Shandie/M +Shandra/M +shandy/M +Shandy/M +Shane/M +Shanghai/GM +Shanghaiing/M +shanghai/SDG +Shanie/M +Shani/M +shank/SMDG +Shannah/M +Shanna/M +Shannan/M +Shannen/M +Shannon/M +Shanon/M +shan't +Shanta/M +Shantee/M +shantis +Shantung/M +shantung/MS +shanty/SM +shantytown/SM +shape/AGDSR +shaped/U +shapelessness/SM +shapeless/PY +shapeliness/S +shapely/RPT +shaper/S +shape's +Shapiro/M +sharable/U +Sharai/M +Shara/M +shard/SM +shareable +sharecropped +sharecropper/MS +sharecropping +sharecrop/S +share/DSRGZMB +shared/U +shareholder/MS +shareholding/S +sharer/M +shareware/S +Shari'a +Sharia/M +sharia/SM +Shari/M +Sharity/M +shark/SGMD +sharkskin/SM +Sharla/M +Sharleen/M +Sharlene/M +Sharline/M +Sharl/M +Sharona/M +Sharon/M +Sharpe/M +sharpen/ASGD +sharpened/U +sharpener/S +sharper/M +sharpie/SM +Sharp/M +sharpness/MS +sharp/SGTZXPYRDN +sharpshooter/M +sharpshooting/M +sharpshoot/JRGZ +sharpy's +Sharron/M +Sharyl/M +Shasta/M +shat +shatter/DSG +shattering/Y +shatterproof +Shaughn/M +Shaula/M +Shauna/M +Shaun/M +shave/DSRJGZ +shaved/U +shaver/M +Shavian +shaving/M +Shavuot/M +Shawano/M +shawl/SDMG +shaw/M +Shaw/M +Shawna/M +Shawnee/SM +Shawn/M +Shaylah/M +Shayla/M +Shaylyn/M +Shaylynn/M +Shay/M +shay/MS +Shayna/M +Shayne/M +Shcharansky/M +sh/DRS +sheaf/MDGS +Shea/M +shearer/M +shear/RDGZS +sheather/M +sheathe/UGSD +sheath/GJMDRS +sheathing/M +sheaths +sheave/SDG +sheaves/M +Sheba/M +shebang/MS +Shebeli/M +Sheboygan/M +she'd +shedding +Shedir/M +sheds +shed's +shed/U +Sheelagh/M +Sheelah/M +Sheela/M +Sheena/M +sheen/MDGS +sheeny/TRSM +sheepdog/SM +sheepfold/MS +sheepherder/MS +sheepishness/SM +sheepish/YP +sheep/M +sheepskin/SM +Sheeree/M +sheerness/S +sheer/PGTYRDS +sheeting/M +sheetlike +sheet/RDMJSG +Sheetrock +Sheffielder/M +Sheffield/RMZ +Sheffie/M +Sheff/M +Sheffy/M +sheikdom/SM +sheikh's +sheik/SM +Sheilah/M +Sheila/M +shekel/MS +Shelagh/M +Shela/M +Shelba/M +Shelbi/M +Shelby/M +Shelden/M +Sheldon/M +shelf/MDGS +Shelia/M +she'll +shellacked +shellacking/MS +shellac/S +shelled/U +Shelley/M +shellfire/SM +shellfish/SM +Shellie/M +Shelli/M +Shell/M +shell/RDMGS +Shelly/M +Shel/MY +shelter/DRMGS +sheltered/U +shelterer/M +Shelton/M +shelve/JRSDG +shelver/M +shelves/M +shelving/M +she/M +Shem/M +Shena/M +Shenandoah/M +shenanigan/SM +Shenyang/M +Sheol/M +Shepard/M +shepherd/DMSG +shepherdess/S +Shepherd/M +Shep/M +Sheppard/M +Shepperd/M +Sheratan/M +Sheraton/M +sherbet/MS +sherd's +Sheree/M +Sheridan/M +Sherie/M +sheriff/SM +Sherill/M +Sherilyn/M +Sheri/M +Sherline/M +Sherlocke/M +sherlock/M +Sherlock/M +Sher/M +Sherman/M +Shermie/M +Sherm/M +Shermy/M +Sherpa/SM +Sherrie/M +Sherri/M +Sherry/M +sherry/MS +Sherwin/M +Sherwood/M +Sherwynd/M +Sherye/M +Sheryl/M +Shetland/S +Shevardnadze/M +shew/GSD +shewn +shh +shiatsu/S +shibboleth/M +shibboleths +shielded/U +shielder/M +shield/MDRSG +Shields/M +shiftily +shiftiness/SM +shiftlessness/S +shiftless/PY +shift/RDGZS +shifty/TRP +Shi'ite +Shiite/SM +Shijiazhuang +Shikoku/M +shill/DJSG +shillelagh/M +shillelaghs +shilling/M +Shillong/M +Shiloh/M +shimmed +shimmer/DGS +shimmery +shimming +shimmy/DSMG +shim/SM +Shina/M +shinbone/SM +shindig/MS +shiner/M +shine/S +shingle/MDRSG +shingler/M +shinguard +shininess/MS +shining/Y +shinned +shinning +shinny/GDSM +shin/SGZDRM +shinsplints +Shintoism/S +Shintoist/MS +Shinto/MS +shiny/PRT +shipboard/MS +shipborne +shipbuilder/M +shipbuild/RGZJ +shipload/SM +shipman/M +shipmate/SM +shipmen +shipment/AMS +shipowner/MS +shippable +shipped/A +shipper/SM +shipping/MS +ship's +shipshape +ship/SLA +shipwreck/GSMD +shipwright/MS +shipyard/MS +Shiraz/M +shire/MS +shirker/M +shirk/RDGZS +Shirlee/M +Shirleen/M +Shirlene/M +Shirley/M +Shirline/M +Shirl/M +Shir/M +shirr/GJDS +shirtfront/S +shirting/M +shirt/JDMSG +shirtless +shirtmake/R +shirtmaker/M +shirtsleeve/MS +shirttail/S +shirtwaist/SM +shit/S +shitting +shitty/RT +Shiva/M +shiverer/M +shiver/GDR +shivery +shiv/SZRM +shivved +shivving +shlemiel's +Shmuel/M +shoal/SRDMGT +shoat/SM +shocker/M +shocking/Y +Shockley/M +shockproof +shock/SGZRD +shoddily +shoddiness/SM +shoddy/RSTP +shod/U +shoehorn/GSMD +shoeing +shoelace/MS +shoemaker/M +shoemake/RZ +shoe/MS +shoer's +shoeshine/MS +shoestring/MS +shoetree/MS +shogunate/SM +shogun/MS +Shoji/M +Sholom/M +shone +shoo/DSG +shoofly +shook/SM +shooter/M +shootout/MS +shoot/SJRGZ +shopkeeper/M +shopkeep/RGZ +shoplifter/M +shoplifting/M +shoplift/SRDGZ +shop/MS +shopped/M +shopper/M +shoppe/RSDGZJ +shopping/M +shoptalk/SM +shopworn +shorebird/S +shore/DSRGMJ +shoreline/SM +Shorewood/M +shoring/M +shortage/MS +shortbread/MS +shortcake/SM +shortchange/DSG +shortcoming/MS +shortcrust +shortcut/MS +shortcutting +shortener/M +shortening/M +shorten/RDGJ +shortfall/SM +shorthand/DMS +Shorthorn/M +shorthorn/MS +shortie's +shortish +shortlist/GD +Short/M +shortness/MS +short/SGTXYRDNP +shortsightedness/S +shortsighted/YP +shortstop/MS +shortwave/SM +shorty/SM +Shoshana/M +Shoshanna/M +Shoshone/SM +Shostakovitch/M +shotgunned +shotgunner +shotgunning +shotgun/SM +shot/MS +shotted +shotting +shoulder/GMD +shouldn't +should/TZR +shout/SGZRDM +shove/DSRG +shoveler/M +shovelful/MS +shovel/MDRSZG +shover/M +showbiz +showbizzes +showboat/SGDM +showcase/MGSD +showdown/MS +shower/GDM +showery/TR +show/GDRZJS +showgirl/SM +showily +showiness/MS +showing/M +showman/M +showmanship/SM +showmen +shown +showoff/S +showpiece/SM +showplace/SM +showroom/MS +showy/RTP +shpt +shrank +shrapnel/SM +shredded +shredder/MS +shredding +shred/MS +Shreveport/M +shrewdness/SM +shrewd/RYTP +shrew/GSMD +shrewishness/M +shrewish/PY +shrieker/M +shriek/SGDRMZ +shrift/SM +shrike/SM +shrill/DRTGPS +shrillness/MS +shrilly +shrimp/MDGS +shrine/SDGM +shrinkage/SM +shrinker/M +shrinking/U +shrink/SRBG +shrivel/GSD +shriven +shrive/RSDG +Shropshire/M +shroud/GSMD +shrubbed +shrubbery/SM +shrubbing +shrubby/TR +shrub/SM +shrugged +shrugging +shrug/S +shrunk/N +shtick/S +shucker/M +shuck/SGMRD +shucks/S +shudder/DSG +shuddery +shuffleboard/MS +shuffled/A +shuffle/GDSRZ +shuffles/A +shuffling/A +Shulman/M +Shu/M +shunned +shunning +shun/S +shunter/M +shunt/GSRD +Shurlocke/M +Shurlock/M +Shurwood/M +shush/SDG +shutdown/MS +shuteye/SM +shutoff/M +shutout/SM +shut/S +shutterbug/S +shutter/DMGS +shuttering/M +shutting +shuttlecock/MDSG +shuttle/MGDS +shy/DRSGTZY +shyer +shyest +Shylockian/M +Shylock/M +shyness/SM +shyster/SM +Siamese/M +Siam/M +Siana/M +Sianna/M +Sian's +Sibbie/M +Sibby/M +Sibeal/M +Sibelius/M +Sibella/M +Sibelle/M +Sibel/M +Siberia/M +Siberian/S +sibilance/M +sibilancy/M +sibilant/SY +Sibilla/M +Sibley/M +sibling/SM +Sib/M +Sibylla/M +Sibylle/M +sibylline +Sibyl/M +sibyl/SM +Siciliana/M +Sicilian/S +Sicily/M +sickbay/M +sickbed/S +sickener/M +sickening/Y +sicken/JRDG +sicker/Y +sick/GXTYNDRSP +sickie/SM +sickish/PY +sickle/SDGM +sickliness/M +sickly/TRSDPG +sickness/MS +sicko/S +sickout/S +sickroom/SM +sic/S +sidearm/S +sideband/MS +sidebar/MS +sideboard/SM +sideburns +sidecar/MS +sided/A +sidedness +side/ISRM +sidekick/MS +sidelight/SM +sideline/MGDRS +sidelong +sideman/M +sidemen +sidepiece/S +sidereal +sider/FA +sides/A +sidesaddle/MS +sideshow/MS +sidesplitting +sidestepped +sidestepping +sidestep/S +sidestroke/GMSD +sideswipe/GSDM +sidetrack/SDG +sidewalk/MS +sidewall/MS +sidewards +sideway/SM +sidewinder/SM +siding/SM +sidle/DSG +Sid/M +Sidnee/M +Sidney/M +Sidoney/M +Sidonia/M +Sidonnie/M +SIDS +siege/GMDS +Siegel/M +Siegfried/M +Sieglinda/M +Siegmund/M +Siemens/M +Siena/M +sienna/SM +Sierpinski/M +sierra/SM +siesta/MS +sieve/GZMDS +Siffre/M +sifted/UA +sifter/M +sift/GZJSDR +Sigfrid/M +Sigfried/M +SIGGRAPH/M +sigh/DRG +sigher/M +sighs +sighted/P +sighter/M +sighting/S +sight/ISM +sightless/Y +sightliness/UM +sightly/TURP +sightread +sightseeing/S +sightsee/RZ +Sigismond/M +Sigismondo/M +Sigismund/M +Sigismundo/M +Sig/M +sigma/SM +sigmoid +Sigmund/M +signal/A +signaled +signaler/S +signaling +signalization/S +signalize/GSD +signally +signalman/M +signalmen +signals +signal's +signatory/SM +signature/MS +signboard/MS +signed/FU +signer/SC +signet/SGMD +sign/GARDCS +significance/IMS +significantly/I +significant/YS +signification/M +signify/DRSGNX +signing/S +Signora/M +signora/SM +signore/M +signori +signories +signorina/SM +signorine +Signor/M +signor/SFM +signpost/DMSG +sign's +signs/F +Sigrid/M +Sigurd/M +Sigvard/M +Sihanouk/M +Sikhism/MS +Sikh/MS +Sikhs +Sikkimese +Sikkim/M +Sikorsky/M +silage/GMSD +Silas/M +Sileas/M +siled +Sile/M +silence/MZGRSD +silencer/M +silentness/M +silent/TSPRY +Silesia/M +silhouette/GMSD +silica/SM +silicate/SM +siliceous +silicide/M +silicone/SM +silicon/MS +silicoses +silicosis/M +silken/DG +silk/GXNDMS +silkily +silkiness/SM +silkscreen/SM +silkworm/MS +silky/RSPT +silliness/SM +sill/MS +silly/PRST +silo/GSM +siltation/M +silt/MDGS +siltstone/M +silty/RT +Silurian/S +Silvain/M +Silva/M +Silvana/M +Silvan/M +Silvano/M +Silvanus/M +silverer/M +silverfish/MS +Silverman/M +silver/RDYMGS +silversmith/M +silversmiths +Silverstein/M +silverware/SM +silvery/RTP +Silvester/M +Silvia/M +Silvie/M +Silvio/M +Si/M +SIMD +Simenon/M +Simeon/M +simian/S +similar/EY +similarity/EMS +simile/SM +similitude/SME +Simla/M +simmer/GSD +Simmonds/M +Simmons/M +Simmonsville/M +Sim/MS +Simms/M +Simona/M +Simone/M +Simonette/M +simonize/SDG +Simon/M +Simonne/M +simony/MS +simpatico +simper/GDS +simpleminded/YP +simpleness/S +simple/RSDGTP +simpleton/SM +simplex/S +simplicity/MS +simplified/U +simplify/ZXRSDNG +simplistic +simplistically +simply +Simpson/M +simulacrum/M +Simula/M +SIMULA/M +simulate/XENGSD +simulation/ME +simulative +simulator/SEM +simulcast/GSD +simultaneity/SM +simultaneousness/M +simultaneous/YP +Sinai/M +Sinatra/M +since +sincere/IY +sincereness/M +sincerer +sincerest +sincerity/MIS +Sinclair/M +Sinclare/M +Sindbad/M +Sindee/M +Sindhi/M +sinecure/MS +sinecurist/M +sine/SM +sinew/SGMD +sinewy +sinfulness/SM +sinful/YP +Singaporean/S +Singapore/M +sing/BGJZYDR +Singborg/M +singeing +singer/M +Singer/M +singe/S +singing/Y +singlehanded/Y +singleness/SM +single/PSDG +Singleton/M +singleton/SM +singletree/SM +singlet/SM +singsong/GSMD +singularity/SM +singularization/M +singular/SY +Sinhalese/M +sinisterness/M +sinister/YP +sinistral/Y +sinkable/U +sinker/M +sink/GZSDRB +sinkhole/SM +Sinkiang/M +sinking/M +sinlessness/M +sinless/YP +sin/MAGS +sinned +sinner/MS +sinning +sinter/DM +sinuosity/MS +sinuousities +sinuousness/M +sinuous/PY +sinusitis/SM +sinus/MS +sinusoidal/Y +sinusoid/MS +Siobhan/M +Siouxie/M +Sioux/M +siphon/DMSG +siphons/U +sipped +sipper/SM +sipping +sip/S +sired/C +sire/MS +siren/M +sires/C +siring/C +Sirius/M +sirloin/MS +Sir/MS +sirocco/MS +sirred +sirring +sirup's +sir/XGMNDS +sisal/MS +Sisely/M +Sisile/M +sis/S +Sissie/M +sissified +Sissy/M +sissy/TRSM +sister/GDYMS +sisterhood/MS +sisterliness/MS +sisterly/P +sister's/A +Sistine +Sisyphean +Sisyphus/M +sit/AG +sitarist/SM +sitar/SM +sitcom/SM +site/DSJM +sits +sitter/MS +sitting/SM +situate/GNSDX +situational/Y +situationist +situation/M +situ/S +situs/M +Siusan/M +Siva/M +Siward/M +sixfold +sixgun +six/MRSH +sixpence/MS +sixpenny +sixshooter +sixteen/HRSM +sixteenths +sixths +sixth/Y +sixtieths +sixty/SMH +sizableness/M +sizable/P +sized/UA +size/GJDRSBMZ +sizer/M +sizes/A +sizing/M +sizzler/M +sizzle/RSDG +SJ +Sjaelland/M +SK +ska/S +skateboard/SJGZMDR +skater/M +skate/SM +skat/JMDRGZ +skedaddle/GSD +skeet/RMS +skein/MDGS +skeletal/Y +skeleton/MS +Skell/M +Skelly/M +skeptical/Y +skepticism/MS +skeptic/SM +sketchbook/SM +sketcher/M +sketchily +sketchiness/MS +sketch/MRSDZG +sketchpad +sketchy/PRT +skew/DRSPGZ +skewer/GDM +skewing/M +skewness/M +skidded +skidding +skid/S +skiff/GMDS +skiing/M +skilfully +skill/DMSG +skilled/U +skillet/MS +skillfulnesses +skillfulness/MU +skillful/YUP +skilling/M +skimmed +skimmer/MS +skimming/SM +ski/MNJSG +skimp/GDS +skimpily +skimpiness/MS +skimpy/PRT +skim/SM +skincare +skindive/G +skinflint/MS +skinhead/SM +skinless +skinned +Skinner/M +skinner/SM +skinniness/MS +skinning +skinny/TRSP +skin/SM +skintight +Skip/M +skipped +Skipper/M +skipper/SGDM +Skippie/M +skipping +Skipp/RM +Skippy/M +skip/S +Skipton/M +skirmisher/M +skirmish/RSDMZG +skirter/M +skirting/M +skirt/RDMGS +skit/GSMD +skitter/SDG +skittishness/SM +skittish/YP +skittle/SM +skivvy/GSDM +skoal/SDG +Skopje/M +skulduggery/MS +skulker/M +skulk/SRDGZ +skullcap/MS +skullduggery's +skull/SDM +skunk/GMDS +skycap/MS +skydiver/SM +skydiving/MS +Skye/M +skyhook +skyjacker/M +skyjack/ZSGRDJ +Skylab/M +skylarker/M +skylark/SRDMG +Skylar/M +Skyler/M +skylight/MS +skyline/MS +Sky/M +sky/MDRSGZ +skyrocket/GDMS +skyscraper/M +skyscrape/RZ +skyward/S +skywave +skyway/M +skywriter/MS +skywriting/MS +slabbed +slabbing +slab/MS +slacken/DG +slacker/M +slackness/MS +slack/SPGTZXYRDN +Slade/M +slagged +slagging +slag/MS +slain +slake/DSG +slaked/U +slalom/SGMD +slammed +slammer/S +slamming +slam/S +slander/MDRZSG +slanderousness/M +slanderous/PY +slang/SMGD +slangy/TR +slanting/Y +slant/SDG +slantwise +slapdash/S +slaphappy/TR +slap/MS +slapped +slapper +slapping +slapstick/MS +slash/GZRSD +slashing/Y +slater/M +Slater/M +slate/SM +slather/SMDG +slating/M +slat/MDRSGZ +slatted +slattern/MYS +slatting +slaughterer/M +slaughterhouse/SM +slaughter/SJMRDGZ +slave/DSRGZM +slaveholder/SM +slaver/GDM +slavery/SM +Slavic/M +slavishness/SM +slavish/YP +Slav/MS +Slavonic/M +slaw/MS +slay/RGZS +sleaze/S +sleazily +sleaziness/SM +sleazy/RTP +sledded +sledder/S +sledding +sledgehammer/MDGS +sledge/SDGM +sled/SM +sleekness/S +sleek/PYRDGTS +sleeper/M +sleepily +sleepiness/SM +sleeping/M +sleeplessness/SM +sleepless/YP +sleepover/S +sleep/RMGZS +sleepwalker/M +sleepwalk/JGRDZS +sleepwear/M +sleepyhead/MS +sleepy/PTR +sleet/DMSG +sleety/TR +sleeveless +sleeve/SDGM +sleeving/M +sleigh/GMD +sleighs +sleight/SM +sleken/DG +slenderize/DSG +slenderness/MS +slender/RYTP +slept +Slesinger/M +sleuth/GMD +sleuths +slew/DGS +slice/DSRGZM +sliced/U +slicer/M +slicker/M +slickness/MS +slick/PSYRDGTZ +slider/M +slide/S +slid/GZDR +slight/DRYPSTG +slighter/M +slighting/Y +slightness/S +slime/SM +sliminess/S +slimline +slimmed +slimmer/S +slimmest +slimming/S +slimness/S +slim/SPGYD +slimy/PTR +sling/GMRS +slingshot/MS +slings/U +slink/GS +slinky/RT +slipcase/MS +slipcover/GMDS +slipknot/SM +slippage/SM +slipped +slipper/GSMD +slipperiness/S +slippery/PRT +slipping +slipshod +slip/SM +slipstream/MDGS +slipway/SM +slither/DSG +slithery +slit/SM +slitted +slitter/S +slitting +sliver/GSDM +slivery +Sloane/M +Sloan/M +slobber/SDG +slobbery +slob/MS +Slocum/M +sloe/MS +sloganeer/MG +slogan/MS +slogged +slogging +slog/S +sloop/SM +slop/DRSGZ +sloped/U +slope/S +slopped +sloppily +sloppiness/SM +slopping +sloppy/RTP +slosh/GSDM +slothfulness/MS +slothful/PY +sloth/GDM +sloths +slot/MS +slotted +slotting +slouch/DRSZG +sloucher/M +slouchy/RT +slough/GMD +sloughs +Slovakia/M +Slovakian/S +Slovak/S +Slovene/S +Slovenia/M +Slovenian/S +slovenliness/SM +slovenly/TRP +sloven/YMS +slowcoaches +slowdown/MS +slowish +slowness/MS +slow/PGTYDRS +slowpoke/MS +SLR +sludge/SDGM +sludgy/TR +slue/MGDS +sluggard/MS +slugged +slugger/SM +slugging +sluggishness/SM +sluggish/YP +slug/MS +sluice/SDGM +slumberer/M +slumber/MDRGS +slumberous +slumlord/MS +slummed +slummer +slumming +slum/MS +slummy/TR +slump/DSG +slung/U +slunk +slur/MS +slurp/GSD +slurred +slurried/M +slurring +slurrying/M +slurry/MGDS +slushiness/SM +slush/SDMG +slushy/RTP +slut/MS +sluttish +slutty/TR +Sly/M +slyness/MS +sly/RTY +smacker/M +smack/SMRDGZ +smallholders +smallholding/MS +smallish +Small/M +smallness/S +smallpox/SM +small/SGTRDP +smalltalk +smalltime +Smallwood/M +smarmy/RT +smarten/GD +smartness/S +smartypants +smart/YRDNSGTXP +smasher/M +smash/GZRSD +smashing/Y +smashup/S +smattering/SM +smearer/M +smear/GRDS +smeary/TR +smeller/M +smelliness/MS +smell/SBRDG +smelly/TRP +smelter/M +smelt/SRDGZ +Smetana/M +smidgen/MS +smilax/MS +smile/GMDSR +smiley/M +smilies +smiling/UY +smirch/SDG +smirk/GSMD +Smirnoff/M +smite/GSR +smiter/M +smith/DMG +smithereens +Smithfield/M +Smith/M +smiths +Smithsonian/M +Smithson/M +Smithtown/M +smithy/SM +smitten +Smitty/M +Sm/M +smocking/M +smock/SGMDJ +smoggy/TR +smog/SM +smoke/GZMDSRBJ +smokehouse/MS +smokeless +smoker/M +smokescreen/S +smokestack/MS +Smokey/M +smokiness/S +smoking/M +smoky/RSPT +smoldering/Y +smolder/SGD +Smolensk/M +Smollett/M +smooch/SDG +smoothen/DG +smoother/M +smoothie/SM +smoothness/MS +smooths +smooth/TZGPRDNY +smörgåsbord/SM +smote +smother/GSD +SMSA/MS +SMTP +Smucker/M +smudge/GSD +smudginess/M +smudgy/TRP +smugged +smugger +smuggest +smugging +smuggle/JZGSRD +smuggler/M +smugness/MS +smug/YSP +smut/SM +Smuts/M +smutted +smuttiness/SM +smutting +smutty/TRP +Smyrna/M +snack/SGMD +snaffle/GDSM +snafu/DMSG +snagged +snagging +snag/MS +snail/GSDM +Snake +snakebird/M +snakebite/MS +snake/DSGM +snakelike +snakeroot/M +snaky/TR +snapback/M +snapdragon/MS +snapped/U +snapper/SM +snappily +snappiness/SM +snapping/U +snappishness/SM +snappish/PY +snappy/PTR +snapshot/MS +snapshotted +snapshotting +snap/US +snare/DSRGM +snarer/M +snarf/JSGD +snarler/M +snarling/Y +snarl/UGSD +snarly/RT +snatch/DRSZG +snatcher/M +snazzily +snazzy/TR +Snead/M +sneaker/MD +sneakily +sneakiness/SM +sneaking/Y +sneak/RDGZS +sneaky/PRT +Sneed/M +sneerer/M +sneer/GMRDJS +sneering/Y +sneeze/SRDG +Snell/M +snicker/GMRD +snick/MRZ +snideness/M +Snider/M +snide/YTSRP +sniffer/M +sniff/GZSRD +sniffle/GDRS +sniffler/M +sniffles/M +snifter/MDSG +snigger's +sniper/M +snipe/SM +snipped +snipper/SM +snippet/SM +snipping +snippy/RT +snip/SGDRZ +snitch/GDS +snit/SM +sniveler/M +snivel/JSZGDR +Sn/M +snobbery/SM +snobbishness/S +snobbish/YP +snobby/RT +snob/MS +Snodgrass/M +snood/SGDM +snooker/GMD +snook/SMRZ +snooper/M +snoop/SRDGZ +Snoopy/M +snoopy/RT +snootily +snootiness/MS +snoot/SDMG +snooty/TRP +snooze/GSD +snore/DSRGZ +snorkel/ZGSRDM +snorter/M +snort/GSZRD +snot/MS +snotted +snottily +snottiness/SM +snotting +snotty/TRP +snout/SGDM +snowball/SDMG +snowbank/SM +Snowbelt/SM +snowbird/SM +snowblower/S +snowboard/GZDRJS +snowbound +snowcapped +snowdrift/MS +snowdrop/MS +snowfall/MS +snowfield/MS +snowflake/MS +snow/GDMS +snowily +snowiness/MS +Snow/M +snowman/M +snowmen +snowmobile/GMDRS +snowplough/M +snowploughs +snowplow/SMGD +snowshed +snowshoeing +snowshoe/MRS +snowshoer/M +snowstorm/MS +snowsuit/S +snowy/RTP +snubbed +snubber +snubbing +snub/SP +snuffbox/SM +snuffer/M +snuff/GZSYRD +snuffle/GDSR +snuffler/M +snuffly/RT +snugged +snugger +snuggest +snugging +snuggle/GDS +snuggly +snugness/MS +snug/SYP +Snyder/M +so +SO +soaker/M +soak/GDRSJ +soapbox/DSMG +soapiness/S +soap/MDRGS +soapstone/MS +soapsud/S +soapy/RPT +soar/DRJSG +soarer/M +soaring/Y +sobbed +sobbing/Y +soberer/M +soberness/SM +sober/PGTYRD +sobriety/SIM +sobriquet/MS +sob/SZR +Soc +soccer/MS +sociabilities +sociability/IM +sociable/S +sociably/IU +socialism/SM +socialistic +socialist/SM +socialite/SM +sociality/M +socialization/SM +socialized/U +socializer/M +socialize/RSDG +socially/U +social/SY +societal/Y +society/MS +socio +sociobiology/M +sociocultural/Y +sociodemographic +socioeconomically +socioeconomic/S +sociolinguistics/M +sociological/MY +sociologist/SM +sociology/SM +sociometric +sociometry/M +sociopath/M +sociopaths +socket/SMDG +sock/GDMS +Socorro/M +Socrates/M +Socratic/S +soc/S +soda/SM +sodded +sodden/DYPSG +soddenness/M +sodding +Soddy/M +sodium/MS +sod/MS +sodomite/MS +sodomize/GDS +Sodom/M +sodomy/SM +soever +sofa/SM +Sofia/M +Sofie/M +softball/MS +softbound +softener/M +soften/ZGRD +softhearted +softie's +softness/MS +soft/SPXTYNR +software/MS +softwood/SM +softy/SM +soggily +sogginess/S +soggy/RPT +Soho/M +soigné +soiled/U +soil/SGMD +soirée/SM +sojourn/RDZGSM +solace/GMSRD +solacer/M +solaria +solarium/M +solar/S +solder/RDMSZG +soldier/MDYSG +soldiery/MS +sold/RU +solecism/MS +soled/FA +solemness +solemnify/GSD +solemnity/MS +solemnization/SM +solemnize/GSD +solemnness/SM +solemn/PTRY +solenoid/MS +soler/F +soles/IFA +sole/YSP +sol/GSMDR +solicitation/S +solicited/U +solicitor/MS +solicitousness/S +solicitous/YP +solicit/SDG +solicitude/MS +solidarity/MS +solidi +solidification/M +solidify/NXSDG +solidity/S +solidness/SM +solid/STYRP +solidus/M +soliloquies +soliloquize/DSG +soliloquy/M +soling/NM +solipsism/MS +solipsist/S +Solis/M +solitaire/SM +solitary/SP +solitude/SM +Sollie/M +Solly/M +Sol/MY +solo/DMSG +soloist/SM +Solomon/SM +Solon/M +Soloviev/M +solstice/SM +solubility/IMS +soluble/SI +solute/ENAXS +solute's +solution/AME +solvable/UI +solvating +solve/ABSRDZG +solved/EU +solvency/IMS +solvent/IS +solvently +solvent's +solver/MEA +solves/E +solving/E +Solzhenitsyn/M +Somalia/M +Somalian/S +Somali/MS +soma/M +somatic +somberness/SM +somber/PY +sombre +sombrero/SM +somebody'll +somebody/SM +someday +somehow +someone'll +someone/SM +someplace/M +somersault/DSGM +Somerset/M +somerset/S +somersetted +somersetting +Somerville/M +something/S +sometime/S +someway/S +somewhat/S +somewhere/S +some/Z +sommelier/SM +Somme/M +somnambulism/SM +somnambulist/SM +somnolence/MS +somnolent/Y +Somoza/M +sonar/SM +sonata/MS +sonatina/SM +Sondheim/M +Sondra/M +Sonenberg/M +songbag +songbird/SM +songbook/S +songfest/MS +songfulness/M +songful/YP +Songhai/M +Songhua/M +song/MS +songster/MS +songstress/SM +songwriter/SM +songwriting +Sonia/M +sonic/S +Sonja/M +Son/M +sonnet/MDSG +Sonnie/M +Sonni/M +Sonnnie/M +Sonny/M +sonny/SM +Sonoma/M +Sonora/M +sonority/S +sonorousness/SM +sonorous/PY +son/SMY +Sontag/M +sonuvabitch +Sonya/M +Sony/M +soonish +soon/TR +soothe +soother/M +sooth/GZTYSRDMJ +soothingness/M +soothing/YP +sooths +soothsayer/M +soothsay/JGZR +soot/MGDS +sooty/RT +SOP +Sophey/M +Sophia/SM +Sophie/M +Sophi/M +sophism/SM +sophister/M +sophistical +sophisticatedly +sophisticated/U +sophisticate/XNGDS +sophistication/MU +sophistic/S +sophist/RMS +sophistry/SM +Sophoclean +Sophocles/M +sophomore/SM +sophomoric +Sophronia/M +soporifically +soporific/SM +sopped +sopping/S +soppy/RT +soprano/SM +sop/SM +Sopwith/M +sorbet/SM +Sorbonne/M +sorcerer/MS +sorceress/S +sorcery/MS +Sorcha/M +sordidness/SM +sordid/PY +sorehead/SM +soreness/S +Sorensen/M +Sorenson/M +sore/PYTGDRS +sorghum/MS +sorority/MS +sorrel/SM +Sorrentine/M +sorrily +sorriness/SM +sorrower/M +sorrowfulness/SM +sorrowful/YP +sorrow/GRDMS +sorry/PTSR +sorta +sortable +sorted/U +sorter/MS +sort/FSAGD +sortieing +sortie/MSD +sort's +sos +SOS +Sosa/M +Sosanna/M +Soto/M +sot/SM +sottish +soubriquet's +soufflé/MS +sough/DG +soughs +sought/U +soulfulness/MS +soulful/YP +soulless/Y +soul/MDS +sound/AUD +soundboard/MS +sounders +sounder's +sounder/U +soundest +sounding/AY +soundings +sounding's +soundless/Y +soundly/U +soundness/UMS +soundproof/GSD +soundproofing/M +sound's +sounds/A +soundtrack/MS +soupçon/SM +soup/GMDS +Souphanouvong/M +soupy/RT +source/ASDMG +sourceless +sourdough +sourdoughs +sourish +sourness/MS +sourpuss/MS +sour/TYDRPSG +Sousa/M +sousaphone/SM +sous/DSG +souse +sou/SMH +Southampton/M +southbound +southeastern +southeaster/YM +Southeast/MS +southeast/RZMS +southeastward/S +southerly/S +souther/MY +southerner/M +Southerner/MS +southernisms +southernmost +southern/PZSYR +Southey/M +Southfield/M +southing/M +southland/M +South/M +southpaw/MS +south/RDMG +souths +Souths +southward/S +southwestern +southwester/YM +Southwest/MS +southwest/RMSZ +southwestward/S +souvenir/SM +sou'wester +sovereignty/MS +sovereign/YMS +soviet/MS +Soviet/S +sow/ADGS +sowbelly/M +sowens/M +sower/DS +Soweto/M +sown/A +sox's +soybean/MS +Soyinka/M +soy/MS +Soyuz/M +Spaatz/M +spacecraft/MS +space/DSRGZMJ +spaceflight/S +spaceman/M +spacemen +spaceport/SM +spacer/M +spaceship/MS +spacesuit/MS +spacewalk/GSMD +Spacewar/M +spacewoman +spacewomen +spacey +spacial +spacier +spaciest +spaciness +spacing/M +spaciousness/SM +spacious/PY +Spackle +spade/DSRGM +spadeful/SM +spader/M +spadework/SM +spadices +spadix/M +Spafford/M +spaghetti/SM +Spahn/M +Spain/M +spake +Spalding/M +Spam/M +spa/MS +Span +spandex/MS +spandrels +spangle/GMDS +Spanglish/S +Spaniard/SM +spanielled +spanielling +spaniel/SM +Spanish/M +spanker/M +spanking/M +spank/SRDJG +span/MS +spanned/U +spanner/SM +spanning +SPARC/M +SPARCstation/M +spar/DRMGTS +spareness/MS +spare/PSY +spareribs +sparer/M +sparing/UY +sparker/M +sparkle/DRSGZ +sparkler/M +Sparkman/M +Sparks +spark/SGMRD +sparky/RT +sparling/SM +sparred +sparrer +sparring/U +sparrow/MS +sparseness/S +sparse/YP +sparsity/S +spars/TR +Spartacus/M +Sparta/M +spartan +Spartan/S +spasm/GSDM +spasmodic +spasmodically +spastic/S +spate/SM +spathe/MS +spatiality/M +spatial/Y +spat/MS +spatted +spatter/DGS +spatterdock/M +spatting +spatula/SM +spavin/DMS +spawner/M +spawn/MRDSG +spay/DGS +SPCA +speakable/U +speakeasy/SM +speaker/M +Speaker's +speakership/M +speaking/U +speak/RBGZJS +spearer/M +spearfish/SDMG +spearhead/GSDM +spearmint/MS +spear/MRDGS +Spears +spec'd +specialism/MS +specialist/MS +specialization/SM +specialized/U +specialize/GZDSR +specializing/U +special/SRYP +specialty/MS +specie/MS +specif +specifiability +specifiable +specifiably +specifically +specification/SM +specificity/S +specific/SP +specified/U +specifier/SM +specifies +specify/AD +specifying +specimen/SM +spec'ing +speciousness/SM +specious/YP +speck/GMDS +speckle/GMDS +spec/SM +spectacle/MSD +spectacular/SY +spectator/SM +specter/DMS +specter's/A +spectralness/M +spectral/YP +spectra/M +spectrogram/MS +spectrographically +spectrograph/M +spectrography/M +spectrometer/MS +spectrometric +spectrometry/M +spectrophotometer/SM +spectrophotometric +spectrophotometry/M +spectroscope/SM +spectroscopic +spectroscopically +spectroscopy/SM +spectrum/M +specularity +specular/Y +speculate/VNGSDX +speculation/M +speculative/Y +speculator/SM +sped +speech/GMDS +speechlessness/SM +speechless/YP +speedboat/GSRM +speedboating/M +speeder/M +speedily +speediness/SM +speedometer/MS +speed/RMJGZS +speedster/SM +speedup/MS +speedway/SM +speedwell/MS +speedy/PTR +speer/M +speleological +speleologist/S +speleology/MS +spellbinder/M +spellbind/SRGZ +spellbound +spelldown/MS +spelled/A +speller/M +spelling/M +spell/RDSJGZ +spells/A +spelunker/MS +spelunking/S +Spencerian +Spencer/M +Spence/RM +spender/M +spend/SBJRGZ +spendthrift/MS +Spenglerian +Spengler/M +Spense/MR +Spenserian +Spenser/M +spent/U +spermatophyte/M +spermatozoa +spermatozoon/M +spermicidal +spermicide/MS +sperm/SM +Sperry/M +spew/DRGZJS +spewer/M +SPF +sphagnum/SM +sphere/SDGM +spherical/Y +spheric/S +spherics/M +spheroidal/Y +spheroid/SM +spherule/MS +sphincter/SM +Sphinx/M +sphinx/MS +Spica/M +spic/DGM +spicebush/M +spice/SM +spicily +spiciness/SM +spicule/MS +spicy/PTR +spider/SM +spiderweb/S +spiderwort/M +spidery/TR +Spiegel/M +Spielberg/M +spiel/GDMS +spier/M +spiffy/TDRSG +spigot/MS +spike/GMDSR +Spike/M +spiker/M +spikiness/SM +spiky/PTR +spillage/SM +Spillane/M +spillover/SM +spill/RDSG +spillway/SM +spinach/MS +spinal/YS +spindle/JGMDRS +spindly/RT +spinelessness/M +spineless/YP +spine/MS +spinet/SM +spininess/M +spinnability/M +spinnaker/SM +spinneret/MS +spinner/SM +spinning/SM +Spinoza/M +spin/S +spinsterhood/SM +spinsterish +spinster/MS +spiny/PRT +spiracle/SM +spiraea's +spiral/YDSG +spire/AIDSGF +spirea/MS +spire's +spiritedness/M +spirited/PY +spirit/GMDS +spiritless +spirits/I +spiritualism/SM +spiritualistic +spiritualist/SM +spirituality/SM +spiritual/SYP +spirituous +spirochete/SM +Spiro/M +spiry/TR +spitball/SM +spite/CSDAG +spitefuller +spitefullest +spitefulness/MS +spiteful/PY +spite's/A +spitfire/SM +spit/SGD +spitted +spitting +spittle/SM +spittoon/SM +Spitz/M +splashdown/MS +splasher/M +splash/GZDRS +splashily +splashiness/MS +splashy/RTP +splat/SM +splatted +splatter/DSG +splatting +splayfeet +splayfoot/MD +splay/SDG +spleen/SM +splendidness/M +splendid/YRPT +splendorous +splendor/SM +splenetic/S +splicer/M +splice/RSDGZJ +spline/MSD +splinter/GMD +splintery +splint/SGZMDR +splits/M +split/SM +splittable +splitter/MS +splitting/S +splodge/SM +splotch/MSDG +splotchy/RT +splurge/GMDS +splutterer/M +splutter/RDSG +Sp/M +Spock/M +spoilables +spoilage/SM +spoil/CSZGDR +spoiled/U +spoiler/MC +spoilsport/SM +Spokane/M +spoke/DSG +spoken/U +spokeshave/MS +spokesman/M +spokesmen +spokespeople +spokesperson/S +spokeswoman/M +spokeswomen +spoliation/MCS +spongecake +sponge/GMZRSD +sponger/M +sponginess/S +spongy/TRP +sponsor/DGMS +sponsorship/S +spontaneity/SM +spontaneousness/M +spontaneous/PY +spoof/SMDG +spookiness/MS +spook/SMDG +spooky/PRT +spool/SRDMGZ +spoonbill/SM +spoonerism/SM +spoonful/MS +spoon/GSMD +spoor/GSMD +sporadically +sporadic/Y +spore/DSGM +sporran/MS +sportiness/SM +sporting/Y +sportiveness/M +sportive/PY +sportscast/RSGZM +sportsmanlike/U +sportsman/MY +sportsmanship/MS +sportsmen +sportswear/M +sportswoman/M +sportswomen +sportswriter/S +sport/VGSRDM +sporty/PRT +Sposato/M +spotlessness/MS +spotless/YP +spotlight/GDMS +spotlit +spot/MSC +spotted/U +spotter/MS +spottily +spottiness/SM +spotting/M +spotty/RTP +spousal/MS +spouse/GMSD +spouter/M +spout/SGRD +sprain/SGD +sprang/S +sprat/SM +sprawl/GSD +sprayed/UA +sprayer/M +spray/GZSRDM +sprays/A +spreadeagled +spreader/M +spread/RSJGZB +spreadsheet/S +spreeing +spree/MDS +sprigged +sprigging +sprightliness/MS +sprightly/PRT +sprig/MS +springboard/MS +springbok/MS +springeing +springer/M +Springfield/M +springily +springiness/SM +springing/M +springlike +spring/SGZR +Springsteen/M +springtime/MS +springy/TRP +sprinkle/DRSJZG +sprinkler/DM +sprinkling/M +Sprint/M +sprint/SGZMDR +sprite/SM +spritz/GZDSR +sprocket/DMGS +sprocketed/U +Sproul/M +sprout/GSD +spruce/GMTYRSDP +spruceness/SM +sprue/M +sprung/U +spryness/S +spry/TRY +SPSS +spudded +spudding +spud/MS +Spuds/M +spume/DSGM +spumone's +spumoni/S +spumy/TR +spun +spunk/GSMD +spunky/SRT +spurge/MS +spuriousness/SM +spurious/PY +spur/MS +spurn/RDSG +spurred +spurring +spurt/SGD +sputa +Sputnik +sputnik/MS +sputter/DRGS +sputum/M +spy/DRSGM +spyglass/MS +sq +sqq +sqrt +squabbed +squabber +squabbest +squabbing +squabbler/M +squabble/ZGDRS +squab/SM +squadded +squadding +squadron/MDGS +squad/SM +squalidness/SM +squalid/PRYT +squaller/M +squall/GMRDS +squally/RT +squalor/SM +squamous/Y +squander/GSRD +Squanto +square/GMTYRSDP +squareness/SM +squarer/M +Squaresville/M +squarish +squash/GSRD +squashiness/M +squashy/RTP +squatness/MS +squat/SPY +squatted +squatter/SMDG +squattest +squatting +squawker/M +squawk/GRDMZS +squaw/SM +squeaker/M +squeakily +squeakiness/S +squeak/RDMGZS +squeaky/RPT +squealer/M +squeal/MRDSGZ +squeamishness/SM +squeamish/YP +squeegee/DSM +squeegeeing +squeeze/GZSRDB +squeezer/M +squelcher/M +squelch/GDRS +squelchy/RT +squibbed +Squibb/GM +squibbing +Squibbing/M +squib/SM +squidded +squidding +squid/SM +squiggle/MGDS +squiggly/RT +squinter/M +squint/GTSRD +squinting/Y +squirehood +squire/SDGM +squirm/SGD +squirmy/TR +squirrel/SGYDM +squirter/M +squirt/GSRD +squish/GSD +squishy/RTP +Sr +Srinagar/M +SRO +S's +SS +SSA +SSE +ssh +s's/KI +SSS +SST +SSW +ST +stabbed +stabber/S +stabbing/S +stability/ISM +stabilizability +stabilization/CS +stabilization's +stabilize/CGSD +stabilizer/MS +stableman/M +stablemate +stablemen +stableness/UM +stable/RSDGMTP +stabler/U +stable's/F +stables/F +stablest/U +stabling/M +stably/U +stab/YS +staccato/S +Stacee/M +Stace/M +Stacey/M +Stacia/M +Stacie/M +Staci/M +stackable +stacker/M +stack's +stack/USDG +Stacy/M +stadias +stadia's +stadium/MS +Stael/M +Stafani/M +staff/ADSG +Staffard/M +staffer/MS +Stafford/M +Staffordshire/M +staffroom +staff's +Staford/M +stag/DRMJSGZ +stagecoach/MS +stagecraft/MS +stagehand/MS +stager/M +stage/SM +stagestruck +stagflation/SM +stagged +staggerer/M +stagger/GSJDR +staggering/Y +staggers/M +stagging +staginess/M +staging/M +stagnancy/SM +stagnant/Y +stagnate/NGDSX +stagnation/M +stagy/PTR +Stahl/M +staidness/MS +staid/YRTP +stained/U +stainer/M +stainless/YS +stain/SGRD +staircase/SM +stair/MS +stairway/SM +stairwell/MS +stake/DSGM +stakeholder/S +stakeout/SM +stalactite/SM +stalag/M +stalagmite/SM +stalemate/SDMG +staleness/MS +stale/PGYTDSR +Staley/M +Stalingrad/M +Stalinist +Stalin/SM +stalker/M +stalk/MRDSGZJ +stall/DMSJG +stalled/I +stallholders +stallion/SM +Stallone/M +stalls/I +stalwartness/M +stalwart/PYS +Sta/M +stamen/MS +Stamford/M +stamina/SM +staminate +stammer/DRSZG +stammerer/M +stammering/Y +stampede/MGDRS +stampeder/M +stamped/U +stamper/M +stamp/RDSGZJ +stance/MIS +stancher/M +stanch/GDRST +stanchion/SGMD +standalone +standardization/AMS +standardized/U +standardize/GZDSR +standardizer/M +standardizes/A +standard/YMS +standby +standbys +standee/MS +Standford/M +standing/M +Standish/M +standoffish +standoff/SM +standout/MS +standpipe/MS +standpoint/SM +stand/SJGZR +standstill/SM +Stanfield/M +Stanford/M +Stanislas/M +Stanislaus/M +Stanislavsky/M +Stanislaw/M +stank/S +Stanleigh/M +Stanley/M +Stanly/M +stannic +stannous +Stanton/M +Stanwood/M +Stan/YMS +stanza/MS +staph/M +staphs +staphylococcal +staphylococci +staphylococcus/M +stapled/U +stapler/M +Stapleton/M +staple/ZRSDGM +starboard/SDMG +starchily +starchiness/MS +starch/MDSG +starchy/TRP +stardom/MS +star/DRMGZS +stardust/MS +stare/S +starfish/SM +Stargate/M +stargaze/ZGDRS +staring/U +Starkey/M +Stark/M +starkness/MS +stark/SPGTYRD +Starla/M +Starlene/M +starless +starlet/MS +starlight/MS +starling/MS +Starlin/M +starlit +Star/M +starred +starring +Starr/M +starry/TR +starship +starstruck +start/ASGDR +starter/MS +startle/GDS +startling/PY +startup/SM +starvation/MS +starveling/M +starver/M +starve/RSDG +stash/GSD +stasis/M +stat/DRSGV +statecraft/MS +stated/U +statehood/MS +statehouse/S +Statehouse's +state/IGASD +statelessness/MS +stateless/P +stateliness/MS +stately/PRT +statement/MSA +Staten/M +stater/M +stateroom/SM +stateside +state's/K +states/K +statesmanlike +statesman/MY +statesmanship/SM +statesmen +stateswoman +stateswomen +statewide +statical/Y +static/S +statics/M +stationarity +stationary/S +stationer/M +stationery/MS +stationmaster/M +station/SZGMDR +statistical/Y +statistician/MS +statistic/MS +Statler/M +stator/SM +statuary/SM +statue/MSD +statuesque/YP +statuette/MS +stature/MS +status/SM +statute/SM +statutorily +statutory/P +Stauffer/M +staunchness/S +staunch/PDRSYTG +stave/DGM +Stavro/MS +stay/DRGZS +stayer/M +std +STD +stdio +steadfastness/MS +steadfast/PY +steadily/U +steadiness's +steadiness/US +steading/M +stead/SGDM +steady/DRSUTGP +steakhouse/SM +steak/SM +stealer/M +stealing/M +steal/SRHG +stealthily +stealthiness/MS +stealth/M +stealths +stealthy/PTR +steamboat/MS +steamer/MDG +steamfitter/S +steamfitting/S +steamily +steaminess/SM +steamroller/DMG +steamroll/GZRDS +steam/SGZRDMJ +steamship/SM +steamy/RSTP +Stearne/M +Stearn/SM +steed/SM +Steele/M +steeliness/SM +steelmaker/M +steel/SDMGZ +steelworker/M +steelwork/ZSMR +steelyard/MS +steely/TPRS +Steen/M +steepen/GD +steeper/M +steeplebush/M +steeplechase/GMSD +steeplejack/MS +steeple/MS +steepness/S +steep/SYRNDPGTX +steerage/MS +steerer/M +steer/SGBRDJ +steersman/M +steersmen +steeves +Stefa/M +Stefania/M +Stefanie/M +Stefan/M +Stefano/M +Steffane/M +Steffen/M +Steffie/M +Steffi/M +stegosauri +stegosaurus/S +Steinbeck/SM +Steinberg/M +Steinem/M +Steiner/M +Steinmetz/M +Stein/RM +stein/SGZMRD +Steinway/M +Stella/M +stellar +stellated +Ste/M +stemless +stemmed/U +stemming +stem/MS +stemware/MS +stench/GMDS +stenciler/M +stencil/GDRMSZ +stencillings +Stendhal/M +Stendler/M +Stengel/M +stenographer/SM +stenographic +stenography/SM +steno/SM +stenotype/M +stentorian +stepbrother/MS +stepchild/M +stepchildren +stepdaughter/MS +stepfather/SM +Stepha/M +Stephana/M +Stephanie/M +Stephani/M +Stephan/M +Stephannie/M +Stephanus/M +Stephenie/M +Stephen/MS +Stephenson/M +Stephie/M +Stephi/M +Stephine/M +stepladder/SM +step/MIS +stepmother/SM +stepparent/SM +stepper/M +steppe/RSDGMZ +steppingstone/S +stepsister/SM +stepson/SM +stepwise +stereographic +stereography/M +stereo/GSDM +stereophonic +stereoscope/MS +stereoscopic +stereoscopically +stereoscopy/M +stereotype/GMZDRS +stereotypic +stereotypical/Y +sterile +sterility/SM +sterilization/SM +sterilized/U +sterilize/RSDGZ +sterilizes/A +Sterling/M +sterling/MPYS +sterlingness/M +sternal +Sternberg/M +Sterne/M +Stern/M +sternness/S +Sterno +stern/SYRDPGT +sternum/SM +steroidal +steroid/MS +stertorous +Stesha/M +stethoscope/SM +stet/MS +stetson/MS +Stetson/SM +stetted +stetting +Steuben/M +Stevana/M +stevedore/GMSD +Steve/M +Stevena/M +Steven/MS +Stevenson/M +Stevie/M +Stevy/M +steward/DMSG +stewardess/SM +Steward/M +stewardship/MS +Stewart/M +stew/GDMS +st/GBJ +sticker/M +stickily +stickiness/SM +stickleback/MS +stickle/GZDR +stickler/M +stick/MRDSGZ +stickpin/SM +stickup/SM +sticky/GPTDRS +Stieglitz/M +stiffen/JZRDG +stiff/GTXPSYRND +stiffness/MS +stifle/GJRSD +stifler/M +stifling/Y +stigma/MS +stigmata +stigmatic/S +stigmatization/C +stigmatizations +stigmatization's +stigmatize/DSG +stigmatized/U +stile/GMDS +stiletto/MDSG +stillbirth/M +stillbirths +stillborn/S +stiller/MI +stillest +Stillman/M +Stillmann/M +stillness/MS +still/RDIGS +Stillwell/M +stilted/PY +stilt/GDMS +Stilton/MS +Stimson/M +stimulant/MS +stimulated/U +stimulate/SDVGNX +stimulation/M +stimulative/S +stimulator/M +stimulatory +stimuli/M +stimulus/MS +Stine/M +stinger/M +sting/GZR +stingily +stinginess/MS +stinging/Y +stingray/MS +stingy/RTP +stinkbug/S +stinker/M +stink/GZRJS +stinking/Y +stinkpot/M +Stinky/M +stinky/RT +stinter/M +stinting/U +stint/JGRDMS +stipendiary +stipend/MS +stipple/JDRSG +stippler/M +stipulate/XNGSD +stipulation/M +Stirling/M +stirred/U +stirrer/SM +stirring/YS +stirrup/SM +stir/S +stitch/ASDG +stitcher/M +stitchery/S +stitching/MS +stitch's +St/M +stoat/SM +stochastic +stochastically +stochasticity +stockade/SDMG +stockbreeder/SM +stockbroker/MS +stockbroking/S +stocker/SM +Stockhausen/M +stockholder/SM +Stockholm/M +stockily +stockiness/SM +stockinet's +stockinette/S +stocking/MDS +stockist/MS +stockpile/GRSD +stockpiler/M +stockpot/MS +stockroom/MS +stock's +stock/SGAD +stocktaking/MS +Stockton/M +stockyard/SM +stocky/PRT +Stoddard/M +stodge/M +stodgily +stodginess/S +stodgy/TRP +stogy/SM +stoical/Y +stoichiometric +stoichiometry/M +stoicism/SM +Stoicism/SM +stoic/MS +Stoic/MS +stoke/DSRGZ +stoker/M +stokes/M +Stokes/M +STOL +stole/MDS +stolen +stolidity/S +stolidness/S +stolid/PTYR +stolon/SM +stomachache/MS +stomacher/M +stomach/RSDMZG +stomachs +stomp/DSG +stonecutter/SM +stone/DSRGM +Stonehenge/M +stoneless +Stone/M +stonemason/MS +stoner/M +stonewall/GDS +stoneware/MS +stonewashed +stonework/SM +stonewort/M +stonily +stoniness/MS +stony/TPR +stood +stooge/SDGM +stool/SDMG +stoop/SDG +stopcock/MS +stopgap/SM +stoplight/SM +stopover/MS +stoppable/U +stoppage/MS +Stoppard/M +stopped/U +stopper/GMDS +stopping/M +stopple/GDSM +stop's +stops/M +stop/US +stopwatch/SM +storage/SM +store/ADSRG +storefront/SM +storehouse/MS +storekeeper/M +storekeep/ZR +storeroom/SM +store's +stork/SM +stormbound +stormer/M +Stormie/M +stormily +Stormi/M +storminess/S +Storm/M +storm/SRDMGZ +stormtroopers +Stormy/M +stormy/PTR +storyboard/MDSG +storybook/MS +story/GSDM +storyline +storyteller/SM +storytelling/MS +Stouffer/M +stoup/SM +stouten/DG +stouthearted +Stout/M +stoutness/MS +stout/STYRNP +stove/DSRGM +stovepipe/SM +stover/M +stowage/SM +stowaway/MS +Stowe/M +stow/GDS +Strabo/M +straddler/M +straddle/ZDRSG +Stradivari/SM +Stradivarius/M +strafe/GRSD +strafer/M +straggle/GDRSZ +straggly/RT +straightaway/S +straightedge/MS +straightener/M +straighten/ZGDR +straightforwardness/MS +straightforward/SYP +straightjacket's +straightness/MS +straight/RNDYSTXGP +straightway/S +strain/ASGZDR +strained/UF +strainer/MA +straining/F +strains/F +straiten/DG +straitjacket/GDMS +straitlaced +straitness/M +strait/XTPSMGYDNR +stranded/P +strand/SDRG +strangeness/SM +strange/PYZTR +stranger/GMD +stranglehold/MS +strangle/JDRSZG +strangles/M +strangulate/NGSDX +strangulation/M +strapless/S +strapped/U +strapping/S +strap's +strap/US +Strasbourg/M +stratagem/SM +strata/MS +strategical/Y +strategic/S +strategics/M +strategist/SM +strategy/SM +Stratford/M +strati +stratification/M +stratified/U +stratify/NSDGX +stratigraphic +stratigraphical +stratigraphy/M +stratosphere/SM +stratospheric +stratospherically +stratum/M +stratus/M +Strauss +Stravinsky/M +strawberry/SM +strawflower/SM +straw/SMDG +strayer/M +stray/GSRDM +streak/DRMSGZ +streaker/M +streaky/TR +streamed/U +streamer/M +stream/GZSMDR +streaming/M +streamline/SRDGM +streetcar/MS +streetlight/SM +street/SMZ +streetwalker/MS +streetwise +Streisand/M +strengthen/AGDS +strengthener/MS +strength/NMX +strengths +strenuousness/SM +strenuous/PY +strep/MS +streptococcal +streptococci +streptococcus/M +streptomycin/SM +stress/DSMG +stressed/U +stressful/YP +stretchability/M +stretchable/U +stretch/BDRSZG +stretcher/DMG +stretchy/TRP +strew/GDHS +strewn +striae +stria/M +striate/DSXGN +striated/U +striation/M +stricken +Strickland/M +strict/AF +stricter +strictest +strictly +strictness/S +stricture/SM +stridden +stridency/S +strident/Y +strider/M +stride/RSGM +strife/SM +strikebreaker/M +strikebreaking/M +strikebreak/ZGR +strikeout/S +striker/M +strike/RSGZJ +striking/Y +Strindberg/M +stringed +stringency/S +stringent/Y +stringer/MS +stringiness/SM +stringing/M +string's +string/SAG +stringy/RTP +striper/M +stripe/SM +strip/GRDMS +stripling/M +stripped/U +stripper/MS +stripping +stripteaser/M +striptease/SRDGZM +stripy/RT +strive/JRSG +striven +striver/M +strobe/SDGM +stroboscope/SM +stroboscopic +strode +stroke/ZRSDGM +stroking/M +stroller/M +stroll/GZSDR +Stromberg/M +Stromboli/M +Strom/M +strongbow +strongbox/MS +Strongheart/M +stronghold/SM +strongish +Strong/M +strongman/M +strongmen +strongroom/MS +strong/YRT +strontium/SM +strophe/MS +strophic +stropped +stropping +strop/SM +strove +struck +structuralism/M +structuralist/SM +structural/Y +structured/AU +structureless +structures/A +structure/SRDMG +structuring/A +strudel/MS +struggle/GDRS +struggler/M +strummed +strumming +strumpet/GSDM +strum/S +strung/UA +strut/S +strutted +strutter/M +strutting +strychnine/MS +Stuart/MS +stubbed/M +stubbing +Stubblefield/MS +stubble/SM +stubbly/RT +stubbornness/SM +stubborn/SGTYRDP +stubby/SRT +stub/MS +stuccoes +stucco/GDM +stuck/U +studbook/SM +studded +studding/SM +Studebaker/M +studentship/MS +student/SM +studiedness/M +studied/PY +studier/SM +studio/MS +studiousness/SM +studious/PY +stud/MS +study/AGDS +stuffily +stuffiness/SM +stuffing/M +stuff/JGSRD +stuffy/TRP +stultify/NXGSD +Stu/M +stumble/GZDSR +stumbling/Y +stumpage/M +stumper/M +stump/RDMSG +stumpy/RT +stung +stunk +stunned +stunner/M +stunning/Y +stun/S +stunted/P +stunt/GSDM +stupefaction/SM +stupefy/DSG +stupendousness/M +stupendous/PY +stupidity/SM +stupidness/M +stupid/PTYRS +stupor/MS +sturdily +sturdiness/SM +sturdy/SRPT +sturgeon/SM +Sturm/M +stutter/DRSZG +Stuttgart/M +Stuyvesant/M +sty/DSGM +Stygian +styled/A +style/GZMDSR +styles/A +styli +styling/A +stylishness/S +stylish/PY +stylistically +stylistic/S +stylist/MS +stylites +stylization/MS +stylize/DSG +stylos +stylus/SM +stymieing +stymie/SD +stymy's +styptic/S +styrene/MS +Styrofoam/S +Styx/M +suable +Suarez/M +suasion/EMS +suaveness/S +suave/PRYT +suavity/SM +subaltern/SM +subarctic/S +subareas +Subaru/M +subassembly/M +subatomic/S +subbasement/SM +subbed +subbing +subbranch/S +subcaste/M +subcategorizing +subcategory/SM +subchain +subclassifications +subclass/MS +subclauses +subcommand/S +subcommittee/SM +subcompact/S +subcomponent/MS +subcomputation/MS +subconcept +subconsciousness/SM +subconscious/PSY +subconstituent +subcontinental +subcontinent/MS +subcontractor/SM +subcontract/SMDG +subcultural +subculture/GMDS +subcutaneous/Y +subdirectory/S +subdistrict/M +subdivide/SRDG +subdivision/SM +subdued/Y +subdue/GRSD +subduer/M +subexpression/MS +subfamily/SM +subfield/MS +subfile/SM +subfreezing +subgoal/SM +subgraph +subgraphs +subgroup/SGM +subharmonic/S +subheading/M +subhead/MGJS +subhuman/S +subindex/M +subinterval/MS +subj +subject/GVDMS +subjection/SM +subjectiveness/M +subjective/PSY +subjectivist/S +subjectivity/SM +subjoin/DSG +subjugate/NGXSD +subjugation/M +subjunctive/S +sublayer +sublease/DSMG +sublet/S +subletting +sublimate/GNSDX +sublimation/M +sublime/GRSDTYP +sublimeness/M +sublimer/M +subliminal/Y +sublimity/SM +sublist/SM +subliterary +sublunary +submachine +submarginal +submarine/MZGSRD +submariner/M +submerge/DSG +submergence/SM +submerse/XNGDS +submersible/S +submersion/M +submicroscopic +submission/SAM +submissiveness/MS +submissive/PY +submit/SA +submittable +submittal +submitted/A +submitter/S +submitting/A +submode/S +submodule/MS +sub/MS +subnational +subnet/SM +subnetwork/SM +subnormal/SY +suboptimal +suborbital +suborder/MS +subordinately/I +subordinates/I +subordinate/YVNGXPSD +subordination/IMS +subordinator +subornation/SM +suborn/GSD +subpage +subparagraph/M +subpart/MS +subplot/MS +subpoena/GSDM +subpopulation/MS +subproblem/SM +subprocess/SM +subprofessional/S +subprogram/SM +subproject +subproof/SM +subquestion/MS +subrange/SM +subregional/Y +subregion/MS +subrogation/M +subroutine/SM +subsample/MS +subschema/MS +subscribe/ASDG +subscriber/SM +subscripted/U +subscription/MS +subscript/SGD +subsection/SM +subsegment/SM +subsentence +subsequence/MS +subsequent/SYP +subservience/SM +subservient/SY +subset/MS +subsidence/MS +subside/SDG +subsidiarity +subsidiary/MS +subsidization/MS +subsidized/U +subsidizer/M +subsidize/ZRSDG +subsidy/MS +subsistence/MS +subsistent +subsist/SGD +subsocietal +subsoil/DRMSG +subsonic +subspace/MS +subspecies/M +substance/MS +substandard +substantially/IU +substantialness/M +substantial/PYS +substantiated/U +substantiate/VGNSDX +substantiation/MFS +substantiveness/M +substantive/PSYM +substantivity +substation/MS +substerilization +substitutability +substituted/U +substitute/NGVBXDRS +substitutionary +substitution/M +substitutive/Y +substrata +substrate/MS +substratum/M +substring/S +substructure/SM +subsume/SDG +subsurface/S +subsystem/MS +subtable/S +subtask/SM +subteen/SM +subtenancy/MS +subtenant/SM +subtend/DS +subterfuge/SM +subterranean/SY +subtest +subtext/SM +subtitle/DSMG +subtleness/M +subtle/RPT +subtlety/MS +subtly/U +subtopic/SM +subtotal/GSDM +subtracter/M +subtraction/MS +subtract/SRDZVG +subtrahend/SM +subtree/SM +subtropical +subtropic/S +subtype/MS +subunit/SM +suburbanite/MS +suburbanization/MS +suburbanized +suburbanizing +suburban/S +suburbia/SM +suburb/MS +subvention/MS +subversion/SM +subversiveness/MS +subversive/SPY +subverter/M +subvert/SGDR +subway/MDGS +subzero +succeeder/M +succeed/GDRS +successfulness/M +successful/UY +succession/SM +successiveness/M +successive/YP +success/MSV +successor/MS +successorship +succinctness/SM +succinct/RYPT +succored/U +succorer/M +succor/SGZRDM +succotash/SM +succubus/M +succulence/SM +succulency/MS +succulent/S +succumb/SDG +such +suchlike +sucker/DMG +suck/GZSDRB +suckle/SDJG +suckling/M +Sucre/M +sucrose/MS +suction/SMGD +Sudanese/M +Sudanic/M +Sudan/M +suddenness/SM +sudden/YPS +Sudetenland/M +sud/S +suds/DSRG +sudsy/TR +sued/DG +suede/SM +Suellen/M +Sue/M +suer/M +suet/MS +Suetonius/M +suety +sue/ZGDRS +Suez/M +sufferance/SM +sufferer/M +suffering/M +suffer/SJRDGZ +suffice/GRSD +sufficiency/SIM +sufficient/IY +suffixation/S +suffixed/U +suffix/GMRSD +suffocate/XSDVGN +suffocating/Y +Suffolk/M +suffragan/S +suffrage/MS +suffragette/MS +suffragist/SM +suffuse/VNGSDX +suffusion/M +Sufi/M +Sufism/M +sugarcane/S +sugarcoat/GDS +sugarless +sugarplum/MS +sugar/SJGMD +sugary/TR +suggest/DRZGVS +suggester/M +suggestibility/SM +suggestible +suggestion/MS +suggestiveness/MS +suggestive/PY +sugillate +Suharto/M +suicidal/Y +suicide/GSDM +Sui/M +suitability/SU +suitableness/S +suitable/P +suitably/U +suitcase/MS +suited/U +suite/SM +suiting/M +suit/MDGZBJS +suitor/SM +Sukarno/M +Sukey/M +Suki/M +sukiyaki/SM +Sukkoth's +Sukkot/S +Sula/M +Sulawesi/M +Suleiman/M +sulfaquinoxaline +sulfa/S +sulfate/MSDG +sulfide/S +sulfite/M +sulfonamide/SM +sulfur/DMSG +sulfuric +sulfurousness/M +sulfurous/YP +sulk/GDS +sulkily +sulkiness/S +sulky/RSPT +Sulla/M +sullenness/MS +sullen/TYRP +sullied/U +Sullivan/M +sully/GSD +Sully/M +sulphate/SM +sulphide/MS +sulphuric +sultana/SM +sultanate/MS +sultan/SM +sultrily +sultriness/SM +sultry/PRT +Sulzberger/M +sumach's +sumac/SM +Sumatra/M +Sumatran/S +sumer/F +Sumeria/M +Sumerian/M +summability/M +summable +summand/MS +summarily +summarization/MS +summarized/U +summarize/GSRDZ +summarizer/M +summary/MS +summation/FMS +summed +Summerdale/M +summerhouse/MS +summer/SGDM +Summer/SM +summertime/MS +summery/TR +summing +summit/GMDS +summitry/MS +summoner/M +summon/JSRDGZ +summons/MSDG +sum/MRS +Sumner/M +sumo/SM +sump/SM +sumptuousness/SM +sumptuous/PY +Sumter/M +Sun +sunbaked +sunbathe +sunbather/M +sunbathing/M +sunbaths +sunbath/ZRSDG +sunbeam/MS +Sunbelt/M +sunblock/S +sunbonnet/MS +sunburn/GSMD +sunburst/MS +suncream +sundae/MS +Sundanese/M +Sundas +Sunday/MS +sunder/SDG +sundial/MS +sundowner/M +sundown/MRDSZG +sundris +sundry/S +sunfish/SM +sunflower/MS +sunglass/MS +Sung/M +sung/U +sunk/SN +sunlamp/S +sunless +sunlight/MS +sunlit +sun/MS +sunned +Sunni/MS +sunniness/SM +sunning +Sunnite/SM +Sunny/M +sunny/RSTP +Sunnyvale/M +sunrise/GMS +sunroof/S +sunscreen/S +sunset/MS +sunsetting +sunshade/MS +Sunshine/M +sunshine/MS +sunshiny +sunspot/SM +sunstroke/MS +suntanned +suntanning +suntan/SM +sunup/MS +superabundance/MS +superabundant +superannuate/GNXSD +superannuation/M +superbness/M +superb/YRPT +supercargoes +supercargo/M +supercharger/M +supercharge/SRDZG +superciliousness/SM +supercilious/PY +supercity/S +superclass/M +supercomputer/MS +supercomputing +superconcept +superconducting +superconductivity/SM +superconductor/SM +supercooled +supercooling +supercritical +superdense +super/DG +superego/SM +supererogation/MS +supererogatory +superficiality/S +superficial/SPY +superfine +superfix/M +superfluity/MS +superfluousness/S +superfluous/YP +superheat/D +superheroes +superhero/SM +superhighway/MS +superhumanness/M +superhuman/YP +superimpose/SDG +superimposition/MS +superintendence/S +superintendency/SM +superintendent/SM +superintend/GSD +superiority/MS +Superior/M +superior/SMY +superlativeness/M +superlative/PYS +superlunary +supermachine +superman/M +Superman/M +supermarket/SM +supermen +supermodel +supermom/S +supernal +supernatant +supernaturalism/M +supernaturalness/M +supernatural/SPY +supernormal/Y +supernovae +supernova/MS +supernumerary/S +superordinate +superpose/BSDG +superposition/MS +superpower/MS +superpredicate +supersaturate/XNGDS +supersaturation/M +superscribe/GSD +superscript/DGS +superscription/SM +superseder/M +supersede/SRDG +supersensitiveness/M +supersensitive/P +superset/MS +supersonically +supersonic/S +supersonics/M +superstar/SM +superstition/SM +superstitious/YP +superstore/S +superstructural +superstructure/SM +supertanker/SM +supertitle/MSDG +superuser/MS +supervene/GSD +supervention/S +supervised/U +supervise/SDGNX +supervision/M +supervisor/SM +supervisory +superwoman/M +superwomen +supineness/M +supine/PSY +supper/DMG +supplanter/M +supplant/SGRD +supplemental/S +supplementary/S +supplementation/S +supplementer/M +supplement/SMDRG +suppleness/SM +supple/SPLY +suppliant/S +supplicant/MS +supplicate/NGXSD +supplication/M +supplier/AM +suppl/RDGT +supply/MAZGSRD +supportability/M +supportable/UI +supported/U +supporter/M +supporting/Y +supportive/Y +support/ZGVSBDR +supposed/Y +suppose/SRDBJG +supposition/MS +suppository/MS +suppressant/S +suppressed/U +suppressible/I +suppression/SM +suppressive/P +suppressor/S +suppress/VGSD +suppurate/NGXSD +suppuration/M +supp/YDRGZ +supra +supranational +supranationalism/M +suprasegmental +supremacist/SM +supremacy/SM +supremal +supremeness/M +supreme/PSRTY +supremo/M +sup/RSZ +supt +Supt/M +Surabaya/M +Surat/M +surcease/DSMG +surcharge/MGSD +surcingle/MGSD +surd/M +sured/I +surefire +surefooted +surely +sureness/MS +sureness's/U +sure/PU +surer/I +surest +surety/SM +surfaced/UA +surface/GSRDPZM +surfacer/AMS +surfaces/A +surfacing/A +surfactant/SM +surfboard/MDSG +surfeit/SDRMG +surfer/M +surfing/M +surf/SJDRGMZ +surged/A +surge/GYMDS +surgeon/MS +surgery/MS +surges/A +surgical/Y +Suriname +Surinamese +Surinam's +surliness/SM +surly/TPR +surmiser/M +surmise/SRDG +surmountable/IU +surmount/DBSG +surname/GSDM +surpassed/U +surpass/GDS +surpassing/Y +surplice/SM +surplus/MS +surplussed +surplussing +surprised/U +surprise/MGDRSJ +surpriser/M +surprising/YU +surrealism/MS +surrealistic +surrealistically +surrealist/S +surreality +surreal/S +surrender/DRSG +surrenderer/M +surreptitiousness/S +surreptitious/PY +surrey/SM +surrogacy/S +surrogate/SDMNG +surrogation/M +surrounding/M +surround/JGSD +surtax/SDGM +surveillance/SM +surveillant +surveyed/A +surveying/M +survey/JDSG +surveyor/MS +surveys/A +survivability/M +survivable/U +survivalist/S +survival/MS +survive/SRDBG +survivor/MS +survivorship/M +Surya/M +Sus +Susana/M +Susanetta/M +Susan/M +Susannah/M +Susanna/M +Susanne/M +Susann/M +susceptibilities +susceptibility/IM +susceptible/I +Susette/M +sushi/SM +Susie/M +Susi/M +suspected/U +suspecter/M +suspect/GSDR +suspecting/U +suspend/DRZGS +suspended/UA +suspender/M +suspenseful +suspense/MXNVS +suspension/AM +suspensive/Y +suspensor/M +suspicion/GSMD +suspiciousness/M +suspicious/YP +Susquehanna/M +Sussex/M +sustainability +sustainable/U +sustain/DRGLBS +sustainer/M +sustainment/M +sustenance/MS +Susy/M +Sutherland/M +Sutherlan/M +sutler/MS +Sutton/M +suture/GMSD +SUV +Suva/M +Suwanee/M +Suzanna/M +Suzanne/M +Suzann/M +suzerain/SM +suzerainty/MS +Suzette/M +Suzhou/M +Suzie/M +Suzi/M +Suzuki/M +Suzy/M +Svalbard/M +svelte/RPTY +Svend/M +Svengali +Sven/M +Sverdlovsk/M +Svetlana/M +SW +swabbed +swabbing +swabby/S +Swabian/SM +swab/MS +swaddle/SDG +swagged +swagger/GSDR +swagging +swag/GMS +Swahili/MS +swain/SM +SWAK +swallower/M +swallow/GDRS +swallowtail/SM +swam +swami/SM +swamper/M +swampland/MS +swamp/SRDMG +swampy/RPT +Swanee/M +swankily +swankiness/MS +swank/RDSGT +swanky/PTRS +swanlike +swan/MS +swanned +swanning +Swansea/M +Swanson/M +swappable/U +swapped +swapper/SM +swapping +swap/S +sward/MSGD +swarmer/M +swarm/GSRDM +swarthiness/M +Swarthmore/M +swarthy/RTP +swart/P +Swartz/M +swashbuckler/SM +swashbuckling/S +swash/GSRD +swastika/SM +SWAT +swatch/MS +swathe +swather/M +swaths +swath/SRDMGJ +swat/S +swatted +swatter/MDSG +swatting +swayback/SD +sway/DRGS +swayer/M +Swaziland/M +Swazi/SM +swearer/M +swear/SGZR +swearword/SM +sweatband/MS +sweater/M +sweatily +sweatiness/M +sweatpants +sweat/SGZRM +sweatshirt/S +sweatshop/MS +sweaty/TRP +Swedenborg/M +Sweden/M +swede/SM +Swede/SM +Swedish +Swed/MN +Sweeney/SM +sweeper/M +sweepingness/M +sweeping/PY +sweep/SBRJGZ +sweeps/M +sweepstakes +sweepstake's +sweetbread/SM +sweetbrier/SM +sweetcorn +sweetened/U +sweetener/M +sweetening/M +sweeten/ZDRGJ +sweetheart/MS +sweetie/MS +sweeting/M +sweetish/Y +Sweet/M +sweetmeat/MS +sweetness/MS +sweetshop +sweet/TXSYRNPG +swellhead/DS +swelling/M +swell/SJRDGT +swelter/DJGS +sweltering/Y +Swen/M +Swenson/M +swept +sweptback +swerve/GSD +swerving/U +swifter/M +swift/GTYRDPS +Swift/M +swiftness/MS +swigged +swigging +swig/SM +swill/SDG +swimmer/MS +swimming/MYS +swim/S +swimsuit/MS +Swinburne/M +swindle/GZRSD +swindler/M +swineherd/MS +swine/SM +swingeing +swinger/M +swinging/Y +swing/SGRZJB +swingy/R +swinishness/M +swinish/PY +Swink/M +swipe/DSG +swirling/Y +swirl/SGRD +swirly/TR +swish/GSRD +swishy/R +swiss +Swiss/S +switchback/GDMS +switchblade/SM +switchboard/MS +switcher/M +switch/GBZMRSDJ +switchgear +switchman/M +switchmen/M +switchover/M +Switzerland/M +Switzer/M +Switz/MR +swivel/GMDS +swizzle/RDGM +swob's +swollen +swoon/GSRD +swooning/Y +swoop/RDSG +swoosh/GSD +swop's +sword/DMSG +swordfish/SM +swordplayer/M +swordplay/RMS +swordsman/M +swordsmanship/SM +swordsmen +swordtail/M +swore +sworn +swot/S +swum +swung +s/XJBG +sybarite/MS +sybaritic +Sybila/M +Sybilla/M +Sybille/M +Sybil/M +Sybyl/M +sycamore/SM +sycophancy/S +sycophantic +sycophantically +sycophant/SYM +Sydelle/M +Sydel/M +Syd/M +Sydney/M +Sykes/M +Sylas/M +syllabicate/GNDSX +syllabication/M +syllabicity +syllabic/S +syllabification/M +syllabify/GSDXN +syllabi's +syllable/SDMG +syllabub/M +syllabus/MS +syllabusss +syllogism/MS +syllogistic +Sylow/M +sylphic +sylphlike +sylph/M +sylphs +Sylvania/M +Sylvan/M +sylvan/S +Sylvester/M +Sylvia/M +Sylvie/M +Syman/M +symbiont/M +symbioses +symbiosis/M +symbiotic +symbol/GMDS +symbolical/Y +symbolics/M +symbolic/SM +symbolism/MS +symbolist/MS +symbolization/MAS +symbolized/U +symbolize/GZRSD +symbolizes/A +Symington/M +symmetric +symmetrically/U +symmetricalness/M +symmetrical/PY +symmetrization/M +symmetrizing +symmetry/MS +Symon/M +sympathetically/U +sympathetic/S +sympathized/U +sympathizer/M +sympathize/SRDJGZ +sympathizing/MYUS +sympathy/MS +symphonic +symphonists +symphony/MS +symposium/MS +symptomatic +symptomatically +symptomatology/M +symptom/MS +syn +synagogal +synagogue/SM +synapse/SDGM +synaptic +synchronism/M +synchronization's +synchronization/SA +synchronize/AGCDS +synchronized/U +synchronizer/MS +synchronousness/M +synchronous/YP +synchrony +synchrotron/M +syncopate/VNGXSD +syncopation/M +syncope/MS +sync/SGD +syndicalist +syndicate/XSDGNM +syndic/SM +syndrome/SM +synergism/SM +synergistic +synergy/MS +synfuel/S +Synge/M +synod/SM +synonymic +synonymous/Y +synonym/SM +synonymy/MS +synopses +synopsis/M +synopsized +synopsizes +synopsizing +synoptic/S +syntactical/Y +syntactics/M +syntactic/SY +syntax/MS +syntheses +synthesis/M +synthesized/U +synthesize/GZSRD +synthesizer/M +synthesizes/A +synthetically +synthetic/S +syphilis/MS +syphilitic/S +syphilized +syphilizing +Syracuse/M +Syriac/M +Syria/M +Syrian/SM +syringe/GMSD +syrup/DMSG +syrupy +sys +systematical/Y +systematics/M +systematic/SP +systematization/SM +systematized/U +systematizer/M +systematize/ZDRSG +systematizing/U +systemically +systemic/S +systemization/SM +system/MS +systole/MS +systolic +Szilard/M +Szymborska/M +TA +Tabasco/MS +Tabatha/M +Tabbatha/M +tabbed +Tabbie/M +Tabbi/M +tabbing +Tabbitha/M +Tabb/M +tabbouleh +tabboulehs +tabby/GSD +Tabby/M +Taber/M +Tabernacle/S +tabernacle/SDGM +Tabina/M +Tabitha/M +tabla/MS +tableau/M +tableaux +tablecloth/M +tablecloths +table/GMSD +tableland/SM +tablespoonful/MS +tablespoon/SM +tablet/MDGS +tabletop/MS +tableware/SM +tabling/M +tabloid/MS +Tab/MR +taboo/GSMD +Tabor/M +tabor/MDGS +Tabriz/SM +tab/SM +tabula +tabular/Y +tabulate/XNGDS +tabulation/M +tabulator/MS +tachometer/SM +tachometry +tachycardia/MS +tachyon/SM +tacitness/MS +taciturnity/MS +taciturn/Y +Tacitus/M +tacit/YP +tacker/M +tack/GZRDMS +tackiness/MS +tackler/M +tackle/RSDMZG +tackling/M +tacky/RSTP +Tacoma/M +taco/MS +tact/FSM +tactfulness/S +tactful/YP +tactical/Y +tactician/MS +tactic/SM +tactile/Y +tactility/S +tactlessness/SM +tactless/PY +tactual/Y +Taddeo/M +Taddeusz/M +Tadd/M +Tadeas/M +Tadeo/M +Tades +Tadio/M +Tad/M +tadpole/MS +tad/SM +Tadzhikistan's +Tadzhikstan/M +Taegu/M +Taejon/M +taffeta/MS +taffrail/SM +Taffy/M +taffy/SM +Taft/M +Tagalog/SM +tagged/U +tagger/S +tagging +Tagore/M +tag/SM +Tagus/M +Tahitian/S +Tahiti/M +Tahoe/M +Taichung/M +taiga/MS +tailback/MS +tail/CMRDGAS +tailcoat/S +tailer/AM +tailgate/MGRSD +tailgater/M +tailing/MS +taillessness/M +tailless/P +taillight/MS +tailor/DMJSGB +Tailor/M +tailpipe/SM +tailspin/MS +tailwind/SM +Tainan/M +Taine/M +taint/DGS +tainted/U +Taipei/M +Taite/M +Tait/M +Taiwanese +Taiwan/M +Taiyuan/M +Tajikistan +takeaway/S +taken/A +takeoff/SM +takeout/S +takeover/SM +taker/M +take/RSHZGJ +takes/IA +taking/IA +Taklamakan/M +Talbert/M +Talbot/M +talcked +talcking +talc/SM +talcum/S +talebearer/SM +talented/M +talentless +talent/SMD +taler/M +tale/RSMN +tali +Talia/M +Taliesin/M +talion/M +talismanic +talisman/SM +talkativeness/MS +talkative/YP +talker/M +talk/GZSRD +talkie/M +talky/RST +Talladega/M +Tallahassee/M +Tallahatchie/M +Tallahoosa/M +tallboy/MS +Tallchief/M +Talley/M +Talleyrand/M +Tallia/M +Tallie/M +Tallinn/M +tallish +tallness/MS +Tallou/M +tallow/DMSG +tallowy +tall/TPR +Tallulah/M +tally/GRSDZ +tallyho/DMSG +Tally/M +Talmudic +Talmudist/MS +Talmud/MS +talon/SMD +talus/MS +Talyah/M +Talya/M +Ta/M +tamable/M +tamale/SM +tamarack/SM +Tamarah/M +Tamara/M +tamarind/MS +Tamar/M +Tamarra/M +Tamas +tambourine/MS +tamed/U +Tameka/M +tameness/S +Tamera/M +Tamerlane/M +tame/SYP +Tamika/M +Tamiko/M +Tamil/MS +Tami/M +Tam/M +Tamma/M +Tammany/M +Tammara/M +tam/MDRSTZGB +Tammie/M +Tammi/M +Tammy/M +Tampa/M +Tampax/M +tampered/U +tamperer/M +tamper/ZGRD +tampon/DMSG +tamp/SGZRD +Tamqrah/M +Tamra/M +tanager/MS +Tanaka/M +Tana/M +Tananarive/M +tanbark/SM +Tancred/M +tandem/SM +Tandie/M +Tandi/M +tandoori/S +Tandy/M +Taney/M +T'ang +Tanganyika/M +tangelo/SM +tangency/M +tangential/Y +tangent/SM +tangerine/MS +tang/GSYDM +tangibility/MIS +tangible/IPS +tangibleness's/I +tangibleness/SM +tangibly/I +Tangier/M +tangle's +tangle/UDSG +tango/MDSG +Tangshan/M +tangy/RST +Tanhya/M +Tania/M +Tani/M +Tanisha/M +Tanitansy/M +tankard/MS +tanker/M +tankful/MS +tank/GZSRDM +Tan/M +tan/MS +tanned/U +Tannenbaum/M +Tanner/M +tanner/SM +tannery/MS +tannest +Tanney/M +Tannhäuser/M +Tannie/M +tanning/SM +tannin/SM +Tann/RM +Tanny/M +Tansy/M +tansy/SM +tantalization/SM +tantalized/U +tantalize/GZSRD +tantalizingly/S +tantalizingness/S +tantalizing/YP +tantalum/MS +Tantalus/M +tantamount +tantra/S +tantrum/SM +Tanya/M +Tanzania/M +Tanzanian/S +taoism +Taoism/MS +Taoist/MS +taoist/S +Tao/M +tao/S +Tapdance/M +taped/U +tapeline/S +taperer/M +taper/GRD +tape/SM +tapestry/GMSD +tapeworm/MS +tapioca/MS +tapir/MS +tap/MSDRJZG +tapped/U +tapper/MS +tappet/MS +tapping/M +taproom/MS +taproot/SM +taps/M +Tarah/M +Tara/M +tarantella/MS +tarantula/MS +Tarawa/M +Tarazed/M +Tarbell/M +tardily +tardiness/S +tardy/TPRS +tare/MS +target/GSMD +tar/GSMD +tariff/DMSG +Tarim/M +Tarkington/M +tarmacked +tarmacking +tarmac/S +tarnished/U +tarnish/GDS +tarn/MS +taro/MS +tarot/MS +tarpapered +tarpaulin/MS +tarp/MS +tarpon/MS +tarragon/SM +Tarrah/M +Tarra/M +Tarrance/M +tarred/M +tarring/M +tarry/TGRSD +Tarrytown/M +tarsal/S +tarsi +tarsus/M +tartan/MS +tartaric +Tartar's +tartar/SM +Tartary/M +tartness/MS +tart/PMYRDGTS +Tartuffe/M +Taryn/M +Tarzan/M +Tasha/M +Tashkent/M +Tasia/M +task/GSDM +taskmaster/SM +taskmistress/MS +Tasmania/M +Tasmanian/S +tassellings +tassel/MDGS +Tass/M +tasted/EU +tastefulness/SME +tasteful/PEY +taste/GZMJSRD +tastelessness/SM +tasteless/YP +taster/M +taste's/E +tastes/E +tastily +tastiness/MS +tasting/E +tasty/RTP +tatami/MS +Tatar/SM +Tate/M +tater/M +Tatiana/M +Tatiania/M +tat/SRZ +tatted +tatterdemalion/SM +tattered/M +tatter/GDS +tatting/SM +tattler/M +tattle/RSDZG +tattletale/SM +tattooer/M +tattooist/MS +tattoo/ZRDMGS +tatty/R +Tatum/M +taught/AU +taunter/M +taunting/Y +taunt/ZGRDS +taupe/SM +Taurus/SM +tau/SM +tauten/GD +tautness/S +tautological/Y +tautologous +tautology/SM +taut/PGTXYRDNS +taverner/M +tavern/RMS +tawdrily +tawdriness/SM +tawdry/SRTP +Tawney/M +Tawnya/M +tawny/RSMPT +Tawsha/M +taxable/S +taxably +taxation/MS +taxed/U +taxicab/MS +taxidermist/SM +taxidermy/MS +taxi/MDGS +taximeter/SM +taxing/Y +taxiway/MS +taxonomic +taxonomically +taxonomist/SM +taxonomy/SM +taxpayer/MS +taxpaying/M +tax/ZGJMDRSB +Taylor/SM +Tb +TB +TBA +Tbilisi/M +tbs +tbsp +Tchaikovsky/M +Tc/M +TCP +TD +TDD +Te +teabag/S +teacake/MS +teacart/M +teachable/P +teach/AGS +teacher/MS +teaching/SM +teacloth +teacupful/MS +teacup/MS +Teador/M +teahouse/SM +teakettle/SM +teak/SM +teakwood/M +tealeaves +teal/MS +tea/MDGS +teammate/MS +team/MRDGS +teamster/MS +teamwork/SM +teapot/MS +tearaway +teardrop/MS +tearer/M +tearfulness/M +tearful/YP +teargas/S +teargassed +teargassing +tearjerker/S +tearoom/MS +tear/RDMSG +teary/RT +Teasdale/M +tease/KS +teasel/DGSM +teaser/M +teashop/SM +teasing/Y +teaspoonful/MS +teaspoon/MS +teas/SRDGZ +teatime/MS +teat/MDS +tech/D +technetium/SM +technicality/MS +technicalness/M +technical/YSP +technician/MS +Technicolor/MS +Technion/M +technique/SM +technocracy/MS +technocratic +technocrat/S +technological/Y +technologist/MS +technology/MS +technophobia +technophobic +techs +tectonically +tectonic/S +tectonics/M +Tecumseh/M +Tedda/M +Teddie/M +Teddi/M +Tedd/M +Teddy/M +teddy/SM +Tedie/M +Tedi/M +tediousness/SM +tedious/YP +tedium/MS +Ted/M +Tedman/M +Tedmund/M +Tedra/M +tee/DRSMH +teeing +teem/GSD +teemingness/M +teeming/PY +teenager/M +teenage/RZ +Teena/M +teen/SR +teenybopper/SM +teeny/RT +teepee's +teeshirt/S +teeter/GDS +teethe +teether/M +teething/M +teethmarks +teeth/RSDJMG +teetotaler/M +teetotalism/MS +teetotal/SRDGZ +TEFL +Teflon/MS +Tegucigalpa/M +Teheran's +Tehran +TEirtza/M +tektite/SM +Tektronix/M +telecast/SRGZ +telecommunicate/NX +telecommunication/M +telecommute/SRDZGJ +telecoms +teleconference/GMJSD +Teledyne/M +Telefunken/M +telegenic +telegrammed +telegramming +telegram/MS +telegraphic +telegraphically +telegraphist/MS +telegraph/MRDGZ +telegraphs +telegraphy/MS +telekineses +telekinesis/M +telekinetic +Telemachus/M +Telemann/M +telemarketer/S +telemarketing/S +telemeter/DMSG +telemetric +telemetry/MS +teleological/Y +teleology/M +telepathic +telepathically +telepathy/SM +telephone/SRDGMZ +telephonic +telephonist/SM +telephony/MS +telephotography/MS +telephoto/S +teleprinter/MS +teleprocessing/S +teleprompter +TelePrompter/M +TelePrompTer/S +telescope/GSDM +telescopic +telescopically +teletext/S +telethon/MS +teletype/SM +Teletype/SM +teletypewriter/SM +televangelism/S +televangelist/S +televise/SDXNG +television/M +televisor/MS +televisual +telex/GSDM +Telex/M +tell/AGS +Teller/M +teller/SDMG +telling/YS +Tell/MR +telltale/MS +tellurium/SM +telly/SM +Telnet/M +TELNET/M +telnet/S +telomeric +tel/SY +Telugu/M +temblor/SM +temerity/MS +Tempe/M +temperamental/Y +temperament/SM +temperance/IMS +tempera/SLM +temperately/I +temperateness's/I +temperateness/SM +temperate/SDGPY +temperature/MS +tempered/UE +temper/GRDM +tempering/E +temper's/E +tempers/E +tempest/DMSG +tempestuousness/SM +tempestuous/PY +template/FS +template's +Temple/M +Templeman/M +temple/SDM +Templeton/M +Temp/M +tempoes +tempo/MS +temporal/YS +temporarily +temporarinesses +temporariness/FM +temporary/SFP +temporize/GJZRSD +temporizer/M +temporizings/U +temporizing/YM +temp/SGZTMRD +temptation/MS +tempted +tempter/S +tempt/FS +tempting/YS +temptress/MS +tempura/SM +tenabilities +tenability/UM +tenableness/M +tenable/P +tenably +tenaciousness/S +tenacious/YP +tenacity/S +tenancy/MS +tenanted/U +tenant/MDSG +tenantry/MS +tench/M +tended/UE +tendency/MS +tendentiousness/SM +tendentious/PY +tendered +tenderer +tenderest +tenderfoot/MS +tender/FS +tenderheartedness/MS +tenderhearted/YP +tendering +tenderizer/M +tenderize/SRDGZ +tenderloin/SM +tenderly +tenderness/SM +tending/E +tendinitis/S +tend/ISFRDG +tendon/MS +tendril/SM +tends/E +tenebrous +tenement/MS +tenet/SM +Tenex/M +TENEX/M +tenfold/S +ten/MHB +Tenneco/M +tenner +Tennessean/S +Tennessee/M +Tenney/M +tennis/SM +Tenn/M +Tennyson/M +Tenochtitlan/M +tenon/GSMD +tenor/MS +tenpin/SM +tense/IPYTNVR +tenseness's/I +tenseness/SM +tensile +tensional/I +tension/GMRDS +tensionless +tensions/E +tension's/I +tensity/IMS +tensorial +tensor/MS +tenspot +tens/SRDVGT +tentacle/MSD +tentativeness/S +tentative/SPY +tented/UF +tenterhook/MS +tenter/M +tent/FSIM +tenths +tenth/SY +tenting/F +tenuity/S +tenuousness/SM +tenuous/YP +tenure/SDM +Teodoor/M +Teodora/M +Teodorico/M +Teodor/M +Teodoro/M +tepee/MS +tepidity/S +tepidness/S +tepid/YP +tequila/SM +Tera/M +teratogenic +teratology/MS +terbium/SM +tercel/M +tercentenary/S +tercentennial/S +Terence/M +Terencio/M +Teresa/M +Terese/M +Tereshkova/M +Teresina/M +Teresita/M +Teressa/M +Teriann/M +Teri/M +Terkel/M +termagant/SM +termcap +termer/M +terminable/CPI +terminableness/IMC +terminal/SYM +terminate/CXNV +terminated/U +terminates +terminating +termination/MC +terminative/YC +terminator/SM +termini +terminological/Y +terminology/MS +terminus/M +termite/SM +term/MYRDGS +ternary/S +tern/GIDS +tern's +terpsichorean +Terpsichore/M +terrace/MGSD +terracing/M +terracotta +terrain/MS +Terra/M +terramycin +Terrance/M +Terran/M +terrapin/MS +terrarium/MS +terrazzo/SM +Terrell/M +Terrel/M +Terre/M +Terrence/M +terrestrial/YMS +terribleness/SM +terrible/P +terribly +Terrie/M +terrier/M +terrifically +terrific/Y +terrify/GDS +terrifying/Y +Terrijo/M +Terrill/M +Terri/M +terrine/M +territoriality/M +Territorial/SM +territorial/SY +Territory's +territory/SM +terrorism/MS +terroristic +terrorist/MS +terrorized/U +terrorizer/M +terrorize/RSDZG +terror/MS +terr/S +terrycloth +Terrye/M +Terry/M +terry/ZMRS +terseness/SM +terse/RTYP +Tersina/M +tertian +Tertiary +tertiary/S +Terza/M +TESL +Tesla/M +TESOL +Tessa/M +tessellate/XDSNG +tessellation/M +tesseral +Tessie/M +Tessi/M +Tess/M +Tessy/M +testability/M +testable/U +testamentary +testament/SM +testate/IS +testator/MS +testatrices +testatrix +testbed/S +testcard +tested/AKU +tester/MFCKS +testes/M +testicle/SM +testicular +testifier/M +testify/GZDRS +testily +testimonial/SM +testimony/SM +testiness/S +testing/S +testis/M +testosterone/SM +test/RDBFZGSC +tests/AK +test's/AKF +testy/RTP +tetanus/MS +tetchy/TR +tether/DMSG +tethered/U +Tethys/M +Tetons +tetrachloride/M +tetracycline/SM +tetrafluoride +tetragonal/Y +tetrahalides +tetrahedral/Y +tetrahedron/SM +tetrameron +tetrameter/SM +tetra/MS +tetrasodium +tetravalent +Teutonic +Teuton/SM +Texaco/M +Texan/S +Texas/MS +Tex/M +TeX/M +textbook/SM +text/FSM +textile/SM +Textron/M +textual/FY +textural/Y +textured/U +texture/MGSD +T/G +Thacher/M +Thackeray/M +Thaddeus/M +Thaddus/M +Thadeus/M +Thad/M +Thailand/M +Thaine/M +Thain/M +Thai/S +thalami +thalamus/M +Thales/M +Thalia/M +thalidomide/MS +thallium/SM +thallophyte/M +Thames +than +Thane/M +thane/SM +Thanh/M +thanker/M +thankfuller +thankfullest +thankfulness/SM +thankful/YP +thanklessness/SM +thankless/PY +thanksgiving/MS +Thanksgiving/S +thank/SRDG +Thant/M +Thar/M +Thatcher/M +thatching/M +thatch/JMDRSZG +Thatch/MR +that'd +that'll +that/MS +thaumaturge/M +thaw/DGS +Thaxter/M +Thayer/M +Thayne/M +THC +the +Theadora/M +Thea/M +theatergoer/MS +theatergoing/MS +theater/SM +theatricality/SM +theatrical/YS +theatric/S +theatrics/M +Thebault/M +Thebes +Theda/M +Thedrick/M +Thedric/M +thee/DS +theeing +theft/MS +Theiler/M +their/MS +theism/SM +theistic +theist/SM +Thekla/M +Thelma/M +themas +thematically +thematics +thematic/U +theme/MS +them/GD +Themistocles/M +themselves +thence +thenceforth +thenceforward/S +Theobald/M +theocracy/SM +theocratic +Theocritus/M +theodolite/MS +Theodora/M +Theodore/M +Theodoric/M +Theodor/M +Theodosia/M +Theodosian +Theodosius/M +theologian/SM +theological/Y +theologists +theology/MS +Theo/M +theorem/MS +theoretical/Y +theoretician/MS +theoretic/S +theoretics/M +theorist/SM +theorization/SM +theorize/ZGDRS +theory/MS +theosophic +theosophical +theosophist/MS +Theosophy +theosophy/SM +therapeutically +therapeutic/S +therapeutics/M +therapist/MS +therapy/MS +Theravada/M +thereabout/S +thereafter +thereat +thereby +there'd +therefor +therefore +therefrom +therein +there'll +there/MS +thereof +thereon +Theresa/M +Therese/M +Theresina/M +Theresita/M +Theressa/M +thereto +theretofore +thereunder +thereunto +thereupon +therewith +Therine/M +thermal/YS +thermionic/S +thermionics/M +thermistor/MS +therm/MS +thermocouple/MS +thermodynamical/Y +thermodynamic/S +thermodynamics/M +thermoelastic +thermoelectric +thermoformed +thermoforming +thermogravimetric +thermoluminescence/M +thermometer/MS +thermometric +thermometry/M +thermonuclear +thermopile/M +thermoplastic/S +thermopower +thermo/S +thermosetting +thermos/S +Thermos/SM +thermostable +thermostatically +thermostatic/S +thermostatics/M +thermostat/SM +thermostatted +thermostatting +Theron/M +thesauri +thesaurus/MS +these/S +Theseus/M +thesis/M +thespian/S +Thespian/S +Thespis/M +Thessalonian +Thessaloníki/M +Thessaly/M +theta/MS +thew/SM +they +they'd +they'll +they're +they've +th/GNJX +Thia/M +thiamine/MS +Thibaud/M +Thibaut/M +thickener/M +thickening/M +thicken/RDJZG +thicket/SMD +thickheaded/M +thickish +thickness/MS +thickset/S +thick/TXPSRNY +thief/M +Thiensville/M +Thieu/M +thievery/MS +thieve/SDJG +thievishness/M +thievish/P +thighbone/SM +thigh/DM +thighs +thimble/DSMG +thimbleful/MS +Thimbu/M +Thimphu +thine +thingamabob/MS +thingamajig/SM +thing/MP +thinkableness/M +thinkable/U +thinkably/U +think/AGRS +thinker/MS +thinkingly/U +thinking/SMYP +thinned +thinner/MS +thinness/MS +thinnest +thinning +thinnish +thin/STPYR +thiocyanate/M +thiouracil/M +third/DYGS +thirster/M +thirst/GSMDR +thirstily +thirstiness/S +thirsty/TPR +thirteen/MHS +thirteenths +thirtieths +thirty/HMS +this +this'll +thistledown/MS +thistle/SM +thither +Th/M +tho +thole/GMSD +Thomasa/M +Thomasina/M +Thomasine/M +Thomasin/M +Thoma/SM +Thomism/M +Thomistic +Thom/M +Thompson/M +Thomson/M +thong/SMD +thoracic +thorax/MS +Thorazine +Thoreau/M +thoriate/D +Thorin/M +thorium/MS +Thor/M +Thornburg/M +Thorndike/M +Thornie/M +thorniness/S +Thorn/M +thorn/SMDG +Thornton/M +Thorny/M +thorny/PTR +thoroughbred/S +thoroughfare/MS +thoroughgoing +thoroughness/SM +thorough/PTYR +Thorpe/M +Thorstein/M +Thorsten/M +Thorvald/M +those +Thoth/M +thou/DSG +though +thoughtfully +thoughtfulness/S +thoughtful/U +thoughtlessness/MS +thoughtless/YP +thought/MS +thousandfold +thousand/SHM +thousandths +Thrace/M +Thracian/M +thralldom/S +thrall/GSMD +thrash/DSRZGJ +thrasher/M +thrashing/M +threadbare/P +threader/M +threading/A +threadlike +thread/MZDRGS +thready/RT +threatener/M +threaten/GJRD +threatening/Y +threat/MDNSXG +threefold +three/MS +threepence/M +threepenny +threescore/S +threesome/SM +threnody/SM +thresh/DSRZG +thresher/M +threshold/MDGS +threw +thrice +thriftily +thriftiness/S +thriftless +thrift/SM +thrifty/PTR +thriller/M +thrilling/Y +thrill/ZMGDRS +thriver/M +thrive/RSDJG +thriving/Y +throatily +throatiness/MS +throat/MDSG +throaty/PRT +throbbed +throbbing +throb/S +throeing +throe/SDM +thrombi +thromboses +thrombosis/M +thrombotic +thrombus/M +Throneberry/M +throne/CGSD +throne's +throng/GDSM +throttle/DRSZMG +throttler/M +throughout +throughput/SM +throughway's +through/Y +throwaway/SM +throwback/MS +thrower/M +thrown +throwout +throw/SZGR +thrummed +thrumming +thrum/S +thrush/MS +thruster/M +thrust/ZGSR +Thruway/MS +thruway/SM +Thu +Thucydides/M +thudded +thudding +thud/MS +thuggee/M +thuggery/SM +thuggish +thug/MS +Thule/M +thulium/SM +thumbnail/MS +thumbscrew/SM +thumb/SMDG +thumbtack/GMDS +thump/RDMSG +thunderbolt/MS +thunderclap/SM +thundercloud/SM +thunderer/M +thunderhead/SM +thundering/Y +thunderous/Y +thundershower/MS +thunderstorm/MS +thunderstruck +thundery +thunder/ZGJDRMS +thunk +Thurber/M +Thurman/M +Thur/MS +Thursday/SM +Thurstan/M +Thurston/M +thus/Y +thwack/DRSZG +thwacker/M +thwarter/M +thwart/GSDRY +thy +thyme/SM +thymine/MS +thymus/SM +thyratron/M +thyristor/MS +thyroglobulin +thyroidal +thyroid/S +thyronine +thyrotoxic +thyrotrophic +thyrotrophin +thyrotropic +thyrotropin/M +thyroxine/M +thyself +Tia/M +Tianjin +tiara/MS +Tiberius/M +Tiber/M +Tibetan/S +Tibet/M +tibiae +tibial +tibia/M +Tibold/M +Tiburon/M +ticker/M +ticket/SGMD +tick/GZJRDMS +ticking/M +tickler/M +tickle/RSDZG +ticklishness/MS +ticklish/PY +ticktacktoe/S +ticktock/SMDG +tic/MS +Ticonderoga/M +tidal/Y +tidbit/MS +tiddlywinks/M +tide/GJDS +tideland/MS +tidewater/SM +tideway/SM +tidily/U +tidiness/USM +tidying/M +tidy/UGDSRPT +tie/AUDS +tieback/MS +Tiebold/M +Tiebout/M +tiebreaker/SM +Tieck/M +Tiena/M +Tienanmen/M +Tientsin's +tier/DGM +Tierney/M +Tiertza/M +Tiffanie/M +Tiffani/M +tiffany/M +Tiffany/M +tiff/GDMS +Tiffie/M +Tiffi/M +Tiff/M +Tiffy/M +tigerish +tiger/SM +tightener/M +tighten/JZGDR +tightfisted +tightness/MS +tightrope/SM +tight/STXPRNY +tightwad/MS +tigress/SM +Tigris/M +Tijuana/M +tike's +Tilda/M +tilde/MS +Tildie/M +Tildi/M +Tildy/M +tile/DRSJMZG +tiled/UE +Tiler/M +tiles/U +tiling/M +tillable +tillage/SM +till/EGSZDR +tiller/GDM +tiller's/E +Tillich/M +Tillie/M +Tillman/M +Tilly/M +tilth/M +tilt/RDSGZ +Ti/M +timber/DMSG +timbering/M +timberland/SM +timberline/S +timbrel/SM +timbre/MS +Timbuktu/M +ti/MDRZ +timebase +time/DRSJMYZG +timekeeper/MS +timekeeping/SM +timelessness/S +timeless/PY +timeliness/SMU +timely/UTRP +timeout/S +timepiece/MS +timer/M +timescale/S +timeserver/MS +timeserving/S +timeshare/SDG +timespan +timestamped +timestamps +timetable/GMSD +timeworn +Timex/M +timezone/S +timidity/SM +timidness/MS +timid/RYTP +Timi/M +timing/M +Timmie/M +Timmi/M +Tim/MS +Timmy/M +Timofei/M +Timon/M +timorousness/MS +timorous/YP +Timoteo/M +Timothea/M +Timothee/M +Timotheus/M +Timothy/M +timothy/MS +timpani +timpanist/S +Timur/M +Tina/M +tincture/SDMG +tinderbox/MS +tinder/MS +Tine/M +tine/SM +tinfoil/MS +tingeing +tinge/S +ting/GYDM +tingle/SDG +tingling/Y +tingly/TR +Ting/M +tinily +tininess/MS +tinker/SRDMZG +Tinkertoy +tinkle/SDG +tinkling/M +tinkly +tin/MDGS +tinned +tinner/M +tinnily +tinniness/SM +tinning/M +tinnitus/MS +tinny/RSTP +tinplate/S +tinsel/GMDYS +Tinseltown/M +tinsmith/M +tinsmiths +tinter/M +tintinnabulation/MS +Tintoretto/M +tint/SGMRDB +tintype/SM +tinware/MS +tiny/RPT +Tioga/M +Tiphanie/M +Tiphani/M +Tiphany/M +tipi's +tip/MS +tipoff +Tippecanoe/M +tipped +Tipperary/M +tipper/MS +tippet/MS +tipping +tippler/M +tipple/ZGRSD +tippy/R +tipsily +tipsiness/SM +tipster/SM +tipsy/TPR +tiptoeing +tiptoe/SD +tiptop/S +tirade/SM +Tirana's +Tirane +tired/AYP +tireder +tiredest +tiredness/S +tirelessness/SM +tireless/PY +tire/MGDSJ +tires/A +Tiresias/M +tiresomeness/S +tiresome/PY +tiring/AU +Tirolean/S +Tirol/M +tiro's +Tirrell/M +tis +Tisha/M +Tish/M +tissue/MGSD +titanate/M +Titania/M +titanic +titanically +Titanic/M +titanium/SM +titan/SM +Titan/SM +titbit's +titer/M +tither/M +tithe/SRDGZM +tithing/M +Titian/M +titian/S +Titicaca/M +titillate/XSDVNG +titillating/Y +titillation/M +titivate/NGDSX +titivation/M +titled/AU +title/GMSRD +titleholder/SM +titling/A +titmice +titmouse/M +tit/MRZS +Tito/SM +titrate/SDGN +titration/M +titted +titter/GDS +titting +tittle/SDMG +titular/SY +Titus/M +tizzy/SM +TKO +Tlaloc/M +TLC +Tlingit/M +Tl/M +TM +Tm/M +tn +TN +tnpk +TNT +toad/SM +toadstool/SM +toady/GSDM +toadyism/M +toaster/M +toastmaster/MS +toastmistress/S +toast/SZGRDM +toasty/TRS +tobacconist/SM +tobacco/SM +tobaggon/SM +Tobago/M +Tobe/M +Tobey/M +Tobiah/M +Tobias/M +Tobie/M +Tobi/M +Tobin/M +Tobit/M +toboggan/MRDSZG +Tobye/M +Toby/M +Tocantins/M +toccata/M +Tocqueville +tocsin/MS +to/D +today'll +today/SM +Toddie/M +toddler/M +toddle/ZGSRD +Todd/M +Toddy/M +toddy/SM +Tod/M +toecap/SM +toeclip/S +TOEFL +toehold/MS +toeing +toe/MS +toenail/DMGS +toffee/SM +tofu/S +toga/SMD +toge +togetherness/MS +together/P +togged +togging +toggle/SDMG +Togolese/M +Togo/M +tog/SMG +Toiboid/M +toilet/GMDS +toiletry/MS +toilette/SM +toil/SGZMRD +toilsomeness/M +toilsome/PY +Toinette/M +Tojo/M +tokamak +Tokay/M +toke/GDS +tokenism/SM +tokenized +token/SMDG +Tokugawa/M +Tokyoite/MS +Tokyo/M +Toland/M +told/AU +Toledo/SM +tole/MGDS +tolerability/IM +tolerable/I +tolerably/I +tolerance/SIM +tolerant/IY +tolerate/XVNGSD +toleration/M +Tolkien +tollbooth/M +tollbooths +toll/DGS +Tolley/M +tollgate/MS +tollhouse/M +tollway/S +Tolstoy/M +toluene/MS +Tolyatti/M +tomahawk/SGMD +Tomasina/M +Tomasine/M +Toma/SM +Tomaso/M +tomatoes +tomato/M +Tombaugh/M +tomb/GSDM +Tombigbee/M +tomblike +tombola/M +tomboyish +tomboy/MS +tombstone/MS +tomcat/SM +tomcatted +tomcatting +Tome/M +tome/SM +tomfoolery/MS +tomfool/M +Tomi/M +Tomkin/M +Tomlin/M +Tom/M +tommed +Tommie/M +Tommi/M +tomming +tommy/M +Tommy/M +tomographic +tomography/MS +tomorrow/MS +Tompkins/M +Tomsk/M +tom/SM +tomtit/SM +tonality/MS +tonal/Y +tonearm/S +tone/ISRDZG +tonelessness/M +toneless/YP +toner/IM +tone's +Tonga/M +Tongan/SM +tong/GRDS +tongueless +tongue/SDMG +tonguing/M +Tonia/M +tonic/SM +Tonie/M +tonight/MS +Toni/M +Tonio/M +tonk/MS +tonnage/SM +tonne/MS +Tonnie/M +tonsillectomy/MS +tonsillitis/SM +tonsil/SM +ton/SKM +tonsorial +tonsure/SDGM +Tonto/M +Tonya/M +Tonye/M +Tony/M +tony/RT +toodle +too/H +took/A +tool/AGDS +toolbox/SM +tooler/SM +tooling/M +toolkit/SM +toolmaker/M +toolmake/ZRG +toolmaking/M +tool's +toolsmith +Toomey/M +tooter/M +toot/GRDZS +toothache/SM +toothbrush/MSG +tooth/DMG +toothily +toothless +toothmarks +toothpaste/SM +toothpick/MS +tooths +toothsome +toothy/TR +tootle/SRDG +tootsie +Tootsie/M +toots/M +tootsy/MS +topaz/MS +topcoat/MS +topdressing/S +Topeka/M +toper/M +topflight +topgallant/M +topiary/S +topicality/MS +topical/Y +topic/MS +topknot/MS +topless +topmast/MS +topmost +topnotch/R +topocentric +topographer/SM +topographic +topographical/Y +topography/MS +topological/Y +topologist/MS +topology/MS +topped +topper/MS +topping/MS +topple/GSD +topsail/MS +topside/SRM +top/SMDRG +topsoil/GDMS +topspin/MS +Topsy/M +toque/MS +Torah/M +Torahs +torchbearer/SM +torchlight/S +torch/SDMG +toreador/SM +Tore/M +tore/S +Torey/M +Torie/M +tori/M +Tori/M +Torin/M +torment/GSD +tormenting/Y +tormentor/MS +torn +tornadoes +tornado/M +toroidal/Y +toroid/MS +Toronto/M +torpedoes +torpedo/GMD +torpidity/S +torpid/SY +torpor/MS +Torquemada/M +torque/MZGSRD +Torrance/M +Torre/MS +torrence +Torrence/M +Torrens/M +torrential +torrent/MS +Torrey/M +Torricelli/M +torridity/SM +torridness/SM +torrid/RYTP +Torrie/M +Torrin/M +Torr/XM +Torry/M +torsional/Y +torsion/IAM +torsions +torsi's +tor/SLM +torso/SM +tors/S +tort/ASFE +tortellini/MS +torte/MS +torten +tortilla/MS +tortoiseshell/SM +tortoise/SM +Tortola/M +tortoni/MS +tort's +Tortuga/M +tortuousness/MS +tortuous/PY +torture/ZGSRD +torturous +torus/MS +Tory/SM +Tosca/M +Toscanini/M +Toshiba/M +toss/SRDGZ +tossup/MS +totaler/M +totalistic +totalitarianism/SM +totalitarian/S +totality/MS +totalizator/S +totalizing +total/ZGSRDYM +totemic +totem/MS +toter/M +tote/S +toting/M +tot/MDRSG +Toto/M +totted +totterer/M +tottering/Y +totter/ZGRDS +totting +toucan/MS +touchable/U +touch/ASDG +touchdown/SM +touché +touched/U +toucher/M +touchily +touchiness/SM +touching/SY +touchline/M +touchscreen +touchstone/SM +touchy/TPR +toughen/DRZG +toughener/M +toughness/SM +toughs +tough/TXGRDNYP +Toulouse/M +toupee/SM +toured/CF +tourer/M +tour/GZSRDM +touring/F +tourism/SM +touristic +tourist/SM +touristy +tourmaline/SM +tournament/MS +tourney/GDMS +tourniquet/MS +tour's/CF +tours/CF +tousle/GSD +touter/M +tout/SGRD +Tova/M +Tove/M +towardliness/M +towardly/P +towards +toward/YU +towboat/MS +tow/DRSZG +towelette/S +towel/GJDMS +toweling/M +tower/GMD +towering/Y +towhead/MSD +towhee/SM +towline/MS +towner/M +Townes +Towney/M +townhouse/S +Townie/M +townie/S +Townley/M +Town/M +Townsend/M +townsfolk +township/MS +townsman/M +townsmen +townspeople/M +town/SRM +townswoman/M +townswomen +Towny/M +towpath/M +towpaths +towrope/MS +Towsley/M +toxemia/MS +toxicity/MS +toxicological +toxicologist/SM +toxicology/MS +toxic/S +toxin/MS +toyer/M +toymaker +toy/MDRSG +Toynbee/M +Toyoda/M +Toyota/M +toyshop +tr +traceability/M +traceableness/M +traceable/P +trace/ASDG +traceback/MS +traced/U +Tracee/M +traceless/Y +Trace/M +tracepoint/SM +tracer/MS +tracery/MDS +trace's +Tracey/M +tracheae +tracheal/M +trachea/M +tracheotomy/SM +Tracie/M +Traci/M +tracing/SM +trackage +trackball/S +trackbed +tracked/U +tracker/M +trackless +tracksuit/SM +track/SZGMRD +tractability/SI +tractable/I +tractably/I +tract/ABS +Tractarians +traction/KSCEMAF +tractive/KFE +tractor/FKMASC +tract's +tracts/CEFK +Tracy/M +trademark/GSMD +trader/M +tradesman/M +tradesmen +tradespeople +tradespersons +trade/SRDGZM +tradeswoman/M +tradeswomen +traditionalism/MS +traditionalistic +traditionalist/MS +traditionalized +traditionally +traditional/U +tradition/SM +traduce/DRSGZ +Trafalgar/M +trafficked +trafficker/MS +trafficking/S +traffic/SM +tragedian/SM +tragedienne/MS +tragedy/MS +tragically +tragicomedy/SM +tragicomic +tragic/S +trailblazer/MS +trailblazing/S +trailer/GDM +trails/F +trailside +trail/SZGJRD +trainable +train/ASDG +trained/U +trainee/MS +traineeships +trainer/MS +training/SM +trainman/M +trainmen +trainspotter/S +traipse/DSG +trait/MS +traitorous/Y +traitor/SM +Trajan/M +trajectory/MS +trammed +trammeled/U +trammel/GSD +tramming +tram/MS +trample/DGRSZ +trampler/M +trampoline/GMSD +tramp/RDSZG +tramway/M +trance/MGSD +tranche/SM +Tran/M +tranquility/S +tranquilized/U +tranquilize/JGZDSR +tranquilizer/M +tranquilizes/A +tranquilizing/YM +tranquillize/GRSDZ +tranquillizer/M +tranquilness/M +tranquil/PTRY +transact/GSD +transactional +transaction/MS +transactor/SM +transalpine +transaminase +transatlantic +Transcaucasia/M +transceiver/SM +transcendence/MS +transcendentalism/SM +transcendentalist/SM +transcendental/YS +transcendent/Y +transcend/SDG +transconductance +transcontinental +transcribe/DSRGZ +transcriber/M +transcription/SM +transcript/SM +transcultural +transducer/SM +transduction/M +transect/DSG +transept/SM +transferability/M +transferal/MS +transfer/BSMD +transferee/M +transference/SM +transferor/MS +transferral/SM +transferred +transferrer/SM +transferring +transfiguration/SM +transfigure/SDG +transfinite/Y +transfix/SDG +transformational +transformation/MS +transform/DRZBSG +transformed/U +transformer/M +transfuse/XSDGNB +transfusion/M +transgression/SM +transgressor/S +transgress/VGSD +trans/I +transience/SM +transiency/S +transient/YS +transistorize/GDS +transistor/SM +Transite/M +transitional/Y +transition/MDGS +transitivenesses +transitiveness/IM +transitive/PIY +transitivity/MS +transitoriness/M +transitory/P +transit/SGVMD +transl +translatability/M +translatable/U +translated/AU +translate/VGNXSDB +translational +translation/M +translator/SM +transliterate/XNGSD +translucence/SM +translucency/MS +translucent/Y +transmigrate/XNGSD +transmissible +transmission/MSA +transmissive +transmit/AS +transmittable +transmittal/SM +transmittance/MS +transmitted/A +transmitter/SM +transmitting/A +transmogrification/M +transmogrify/GXDSN +transmutation/SM +transmute/GBSD +transnational/S +transoceanic +transom/SM +transonic +transpacific +transparency/MS +transparentness/M +transparent/YP +transpiration/SM +transpire/GSD +transplantation/S +transplant/GRDBS +transpolar +transponder/MS +transportability +transportable/U +transportation/SM +transport/BGZSDR +transpose/BGSD +transposed/U +transposition/SM +Transputer/M +transsexualism/MS +transsexual/SM +transship/LS +transshipment/SM +transshipped +transshipping +transubstantiation/MS +Transvaal/M +transversal/YM +transverse/GYDS +transvestism/SM +transvestite/SM +transvestitism +Transylvania/M +trapdoor/S +trapeze/DSGM +trapezium/MS +trapezoidal +trapezoid/MS +trap/MS +trappable/U +trapped +trapper/SM +trapping/S +Trappist/MS +trapshooting/SM +trashcan/SM +trashiness/SM +trash/SRDMG +trashy/TRP +Trastevere/M +trauma/MS +traumatic +traumatically +traumatize/SDG +travail/SMDG +traveled/U +traveler/M +travelog's +travelogue/S +travel/SDRGZJ +Traver/MS +traversal/SM +traverse/GBDRS +traverser/M +travertine/M +travesty/SDGM +Travis/M +Travus/M +trawler/M +trawl/RDMSZG +tray/SM +treacherousness/SM +treacherous/PY +treachery/SM +treacle/DSGM +treacly +treader/M +treadle/GDSM +treadmill/MS +tread/SAGD +Treadwell/M +treas +treason/BMS +treasonous +treasure/DRSZMG +treasurer/M +treasurership +treasury/SM +Treasury/SM +treatable +treated/U +treater/S +treatise/MS +treatment/MS +treat's +treat/SAGDR +treaty/MS +treble/SDG +Treblinka/M +treeing +treeless +treelike +tree/MDS +treetop/SM +trefoil/SM +Trefor/M +trekked +trekker/MS +Trekkie/M +trekking +trek/MS +trellis/GDSM +Tremaine/M +Tremain/M +trematode/SM +Tremayne/M +tremble/JDRSG +trembler/M +trembles/M +trembly +tremendousness/M +tremendous/YP +tremolo/MS +tremor/MS +tremulousness/SM +tremulous/YP +trenchancy/MS +trenchant/Y +trencherman/M +trenchermen +trencher/SM +trench/GASD +trench's +trendily +trendiness/S +trend/SDMG +trendy/PTRS +Trenna/M +Trent/M +Trenton/M +trepanned +trepidation/MS +Tresa/M +Trescha/M +trespasser/M +trespass/ZRSDG +Tressa/M +tressed/E +tresses/E +tressing/E +tress/MSDG +trestle/MS +Trevar/M +Trevelyan/M +Trever/M +Trevino/M +Trevor/M +Trev/RM +Trey/M +trey/MS +triableness/M +triable/P +triadic +triad/MS +triage/SDMG +trial/ASM +trialization +trialled +trialling +triamcinolone +triangle/SM +triangulable +triangularization/S +triangular/Y +triangulate/YGNXSD +triangulation/M +Triangulum/M +Trianon/M +Triassic +triathlon/S +triatomic +tribalism/MS +tribal/Y +tribe/MS +tribesman/M +tribesmen +tribeswoman +tribeswomen +tribulate/NX +tribulation/M +tribunal/MS +tribune/SM +tributary/MS +tribute/EGSF +tribute's +trice/GSDM +tricentennial/S +triceps/SM +triceratops/M +trichinae +trichina/M +trichinoses +trichinosis/M +trichloroacetic +trichloroethane +trichotomy/M +trichromatic +Tricia/M +trickery/MS +trick/GMSRD +trickily +trickiness/SM +trickle/DSG +trickster/MS +tricky/RPT +tricolor/SMD +tricycle/SDMG +trident/SM +tridiagonal +tried/UA +triennial/SY +trier/AS +trier's +tries/A +Trieste/M +triffid/S +trifle/MZGJSRD +trifler/M +trifluoride/M +trifocals +trigged +trigger/GSDM +triggest +trigging +triglyceride/MS +trigonal/Y +trigonometric +trigonometrical +trigonometry/MS +trigram/S +trig/S +trihedral +trike/GMSD +trilateral/S +trilby/SM +trilingual +trillion/SMH +trillionth/M +trillionths +trillium/SM +trill/RDMGS +trilobite/MS +trilogy/MS +trimaran/MS +Trimble/M +trimer/M +trimester/MS +trimmed/U +trimmer/MS +trimmest +trimming/MS +trimness/S +trimodal +trimonthly +trim/PSYR +Trimurti/M +Trina/M +Trinidad/M +trinitarian/S +trinitrotoluene/SM +trinity/MS +Trinity/MS +trinketer/M +trinket/MRDSG +triode/MS +trio/SM +trioxide/M +tripartite/N +tripartition/M +tripe/MS +triphenylarsine +triphenylphosphine +triphenylstibine +triphosphopyridine +triple/GSD +triplet/SM +triplex/S +triplicate/SDG +triplication/M +triply/GDSN +Trip/M +tripodal +tripod/MS +tripoli/M +Tripoli/M +tripolyphosphate +tripos/SM +tripped +Trippe/M +tripper/MS +tripping/Y +Tripp/M +trip/SMY +triptych/M +triptychs +tripwire/MS +trireme/SM +Tris +trisect/GSD +trisection/S +trisector +Trisha/M +Trish/M +trisodium +Trista/M +Tristam/M +Tristan/M +tristate +trisyllable/M +tritely/F +triteness/SF +trite/SRPTY +tritium/MS +triton/M +Triton/M +triumphal +triumphalism +triumphant/Y +triumph/GMD +triumphs +triumvirate/MS +triumvir/MS +triune +trivalent +trivet/SM +trivia +triviality/MS +trivialization/MS +trivialize/DSG +trivial/Y +trivium/M +Trixie/M +Trixi/M +Trix/M +Trixy/M +Trobriand/M +trochaic/S +trochee/SM +trod/AU +trodden/UA +trodes +troff/MR +troglodyte/MS +troika/SM +Trojan/MS +troll/DMSG +trolled/F +trolleybus/S +trolley/SGMD +trolling/F +trollish +Trollope/M +trollop/GSMD +trolly's +trombone/MS +trombonist/SM +tromp/DSG +Trondheim/M +trooper/M +troopship/SM +troop/SRDMZG +trope/SM +Tropez/M +trophic +trophy/MGDS +tropical/SY +tropic/MS +tropism/SM +tropocollagen +troposphere/MS +tropospheric +troth/GDM +troths +trot/S +Trotsky/M +trotted +trotter/SM +trotting +troubadour/SM +troubled/U +trouble/GDRSM +troublemaker/MS +troubler/M +troubleshooter/M +troubleshoot/SRDZG +troubleshot +troublesomeness/M +troublesome/YP +trough/M +troughs +trounce/GZDRS +trouncer/M +troupe/MZGSRD +trouper/M +trouser/DMGS +trousseau/M +trousseaux +Troutman/M +trout/SM +trove/SM +troweler/M +trowel/SMDRGZ +trow/SGD +Troyes +Troy/M +troy/S +Trstram/M +truancy/MS +truant/SMDG +truce/SDGM +Truckee/M +trucker/M +trucking/M +truckle/GDS +truckload/MS +truck/SZGMRDJ +truculence/SM +truculent/Y +Truda/M +Trudeau/M +Trude/M +Trudey/M +trudge/SRDG +Trudie/M +Trudi/M +Trudy/M +true/DRSPTG +truelove/MS +Trueman/M +trueness/M +truer/U +truest/U +truffle/MS +truism/SM +Trujillo/M +Trula/M +truly/U +Trumaine/M +Truman/M +Trumann/M +Trumbull/M +trump/DMSG +trumpery/SM +trumpeter/M +trumpet/MDRZGS +Trump/M +truncate/NGDSX +truncation/M +truncheon/MDSG +trundle/GZDSR +trundler/M +trunk/GSMD +trunnion/SM +trusser/M +trussing/M +truss/SRDG +trusted/EU +trusteeing +trustee/MDS +trusteeship/SM +truster/M +trustful/EY +trustfulness/SM +trustiness/M +trusting/Y +trust/RDMSG +trusts/E +trustworthier +trustworthiest +trustworthiness/MS +trustworthy/UP +trusty/PTMSR +Truth +truthfulness/US +truthful/UYP +truths/U +truth/UM +TRW +trying/Y +try/JGDRSZ +tryout/MS +trypsin/M +tryst/GDMS +ts +T's +tsarevich +tsarina's +tsarism/M +tsarist +tsetse/S +Tsimshian/M +Tsiolkovsky/M +Tsitsihar/M +tsp +tsunami/MS +Tsunematsu/M +Tswana/M +TTL +tty/M +ttys +Tuamotu/M +Tuareg/M +tubae +tubal +tuba/SM +tubbed +tubbing +tubby/TR +tubeless +tubercle/MS +tubercular/S +tuberculin/MS +tuberculoses +tuberculosis/M +tuberculous +tuber/M +tuberose/SM +tuberous +tube/SM +tubing/M +tub/JMDRSZG +Tubman/M +tubular/Y +tubule/SM +tucker/GDM +Tucker/M +tuck/GZSRD +Tuckie/M +Tuck/RM +Tucky/M +Tucson/M +Tucuman/M +Tudor/MS +Tue/S +Tuesday/SM +tufter/M +tuft/GZSMRD +tufting/M +tugboat/MS +tugged +tugging +tug/S +tuition/ISM +Tulane/M +tularemia/S +tulip/SM +tulle/SM +Tulley/M +Tull/M +Tully/M +Tulsa/M +tum +tumbledown +tumbler/M +tumbleweed/MS +tumble/ZGRSDJ +tumbrel/SM +tumescence/S +tumescent +tumidity/MS +tumid/Y +tummy/SM +tumor/MDS +tumorous +Tums/M +tumult/SGMD +tumultuousness/M +tumultuous/PY +tumulus/M +tunableness/M +tunable/P +tuna/SM +tundra/SM +tun/DRJZGBS +tune/CSDG +tunefulness/MS +tuneful/YP +tuneless/Y +tuner/M +tune's +tuneup/S +tung +tungstate/M +tungsten/SM +Tunguska/M +Tungus/M +tunic/MS +tuning/A +tuning's +Tunisia/M +Tunisian/S +Tunis/M +tunned +tunneler/M +tunnel/MRDSJGZ +tunning +tunny/SM +tupelo/M +Tupi/M +tuple/SM +tuppence/M +Tupperware +Tupungato/M +turban/SDM +turbid +turbidity/SM +turbinate/SD +turbine/SM +turbocharged +turbocharger/SM +turbofan/MS +turbojet/MS +turboprop/MS +turbo/SM +turbot/MS +turbulence/SM +turbulent/Y +turd/MS +tureen/MS +turf/DGSM +turfy/RT +Turgenev/M +turgidity/SM +turgidness/M +turgid/PY +Turing/M +Turin/M +Turkestan/M +Turkey/M +turkey/SM +Turkic/SM +Turkish +Turkmenistan/M +turk/S +Turk/SM +turmeric/MS +turmoil/SDMG +turnabout/SM +turnaround/MS +turn/AZGRDBS +turnbuckle/SM +turncoat/SM +turned/U +turner/M +Turner/M +turning/MS +turnip/SMDG +turnkey/MS +turnoff/MS +turnout/MS +turnover/SM +turnpike/MS +turnround/MS +turnstile/SM +turnstone/M +turntable/SM +turpentine/GMSD +Turpin/M +turpitude/SM +turquoise/SM +turret/SMD +turtleback/MS +turtledove/MS +turtleneck/SDM +turtle/SDMG +turves's +turvy +Tuscaloosa/M +Tuscan +Tuscany/M +Tuscarora/M +Tuscon/M +tush/SDG +Tuskegee/M +tusker/M +tusk/GZRDMS +tussle/GSD +tussock/MS +tussocky +Tussuad/M +Tutankhamen/M +tutelage/MS +tutelary/S +Tut/M +tutored/U +tutorial/MS +tutor/MDGS +tutorship/S +tut/S +Tutsi +tutted +tutting +tutti/S +Tuttle/M +tutu/SM +Tuvalu +tuxedo/SDM +tux/S +TVA +TV/M +TVs +twaddle/GZMRSD +twaddler/M +Twain/M +twain/S +TWA/M +twang/MDSG +twangy/TR +twas +tweak/SGRD +tweediness/M +Tweedledee/M +Tweedledum/M +Tweed/M +twee/DP +tweed/SM +tweedy/PTR +tween +tweeter/M +tweet/ZSGRD +tweezer/M +tweeze/ZGRD +twelfth +twelfths +twelvemonth/M +twelvemonths +twelve/MS +twentieths +twenty/MSH +twerp/MS +twice/R +twiddle/GRSD +twiddler/M +twiddly/RT +twigged +twigging +twiggy/RT +twig/SM +Twila/M +twilight/MS +twilit +twill/SGD +twiner/M +twine/SM +twinge/SDMG +Twinkie +twinkler/M +twinkle/RSDG +twinkling/M +twinkly +twinned +twinning +twin/RDMGZS +twirler/M +twirling/Y +twirl/SZGRD +twirly/TR +twisted/U +twister/M +twists/U +twist/SZGRD +twisty +twitch/GRSD +twitchy/TR +twit/S +twitted +twitterer/M +twitter/SGRD +twittery +twitting +twixt +twofer/MS +twofold/S +two/MS +twopence/SM +twopenny/S +twosome/MS +twp +Twp +TWX +Twyla/M +TX +t/XTJBG +Tybalt/M +Tybie/M +Tybi/M +tycoon/MS +tyeing +Tye/M +tying/UA +tyke/SM +Tylenol/M +Tyler/M +Ty/M +Tymon/M +Tymothy/M +tympani +tympanist/SM +tympanum/SM +Tynan/M +Tyndale/M +Tyndall/M +Tyne/M +typeahead +typecast/SG +typed/AU +typedef/S +typeface/MS +typeless +type/MGDRSJ +types/A +typescript/SM +typeset/S +typesetter/MS +typesetting/SM +typewriter/M +typewrite/SRJZG +typewriting/M +typewritten +typewrote +typhoid/SM +Typhon/M +typhoon/SM +typhus/SM +typicality/MS +typically +typicalness/M +typical/U +typification/M +typify/SDNXG +typing/A +typist/MS +typographer/SM +typographic +typographical/Y +typography/MS +typological/Y +typology/MS +typo/MS +tyrannic +tyrannicalness/M +tyrannical/PY +tyrannicide/M +tyrannizer/M +tyrannize/ZGJRSD +tyrannizing/YM +tyrannosaur/MS +tyrannosaurus/S +tyrannous +tyranny/MS +tyrant/MS +Tyree/M +tyreo +Tyrolean/S +Tyrol's +Tyrone/M +tyrosine/M +tyro/SM +Tyrus/M +Tyson/M +tzarina's +tzar's +Tzeltal/M +u +U +UAR +UART +UAW +Ubangi/M +ubiquitous/YP +ubiquity/S +Ucayali/M +Uccello/M +UCLA/M +Udale/M +Udall/M +udder/SM +Udell/M +Ufa/M +ufologist/S +ufology/MS +UFO/S +Uganda/M +Ugandan/S +ugh +ughs +uglification +ugliness/MS +uglis +ugly/PTGSRD +Ugo/M +uh +UHF +Uighur +Ujungpandang/M +UK +ukase/SM +Ukraine/M +Ukrainian/S +ukulele/SM +UL +Ula/M +Ulberto/M +ulcerate/NGVXDS +ulceration/M +ulcer/MDGS +ulcerous +Ulick/M +Ulises/M +Ulla/M +Ullman/M +ulnae +ulna/M +ulnar +Ulrica/M +Ulrich/M +Ulrick/M +Ulric/M +Ulrika/M +Ulrikaumeko/M +Ulrike/M +Ulster/M +ulster/MS +ult +ulterior/Y +ultimas +ultimate/DSYPG +ultimateness/M +ultimatum/MS +ultimo +ultracentrifugally +ultracentrifugation +ultracentrifuge/M +ultraconservative/S +ultrafast +ultrahigh +ultralight/S +ultramarine/SM +ultramodern +ultramontane +ultra/S +ultrashort +ultrasonically +ultrasonic/S +ultrasonics/M +ultrasound/SM +ultrastructure/M +Ultrasuede +ultraviolet/SM +Ultrix/M +ULTRIX/M +ululate/DSXGN +ululation/M +Ulyanovsk/M +Ulysses/M +um +umbel/MS +umber/GMDS +Umberto/M +umbilical/S +umbilici +umbilicus/M +umbrage/MGSD +umbrageous +umbra/MS +umbrella/GDMS +Umbriel/M +Umeko/M +umiak/MS +umlaut/GMDS +umpire/MGSD +ump/MDSG +umpteen/H +UN +unabated/Y +unabridged/S +unacceptability +unacceptable +unaccepted +unaccommodating +unaccountability +unaccustomed/Y +unadapted +unadulterated/Y +unadventurous +unalienability +unalterableness/M +unalterable/P +unalterably +Una/M +unambiguity +unambiguous +unambitious +unamused +unanimity/SM +unanimous/Y +unanticipated/Y +unapologetic +unapologizing/M +unappeasable +unappeasably +unappreciative +unary +unassailableness/M +unassailable/P +unassertive +unassumingness/M +unassuming/PY +unauthorized/PY +unavailing/PY +unaware/SPY +unbalanced/P +unbar +unbarring +unbecoming/P +unbeknown +unbelieving/Y +unbiased/P +unbid +unbind/G +unblessed +unblinking/Y +unbodied +unbolt/G +unbreakability +unbred +unbroken +unbuckle +unbudging/Y +unburnt +uncap +uncapping +uncatalogued +uncauterized/MS +unceasing/Y +uncelebrated +uncertain/P +unchallengeable +unchangingness/M +unchanging/PY +uncharacteristic +uncharismatic +unchastity +unchristian +uncial/S +uncivilized/Y +unclassified +uncle/MSD +unclouded/Y +uncodable +uncollected +uncoloredness/M +uncolored/PY +uncombable +uncommunicative +uncompetitive +uncomplicated +uncomprehending/Y +uncompromisable +unconcerned/P +unconcern/M +unconfirmed +unconfused +unconscionableness/M +unconscionable/P +unconscionably +unconstitutional +unconsumed +uncontentious +uncontrollability +unconvertible +uncool +uncooperative +uncork/G +uncouple/G +uncouthness/M +uncouth/YP +uncreate/V +uncritical +uncross/GB +uncrowded +unction/IM +unctions +unctuousness/MS +unctuous/PY +uncustomary +uncut +undated/I +undaunted/Y +undeceive +undecided/S +undedicated +undefinability +undefinedness/M +undefined/P +undelete +undeliverability +undeniableness/M +undeniable/P +undeniably +undependable +underachiever/M +underachieve/SRDGZ +underact/GDS +underadjusting +underage/S +underarm/DGS +underbedding +underbelly/MS +underbidding +underbid/S +underbracing +underbrush/MSDG +undercarriage/MS +undercharge/GSD +underclassman +underclassmen +underclass/S +underclothes +underclothing/MS +undercoating/M +undercoat/JMDGS +underconsumption/M +undercooked +undercount/S +undercover +undercurrent/SM +undercut/S +undercutting +underdeveloped +underdevelopment/MS +underdog/MS +underdone +undereducated +underemphasis +underemployed +underemployment/SM +underenumerated +underenumeration +underestimate/NGXSD +underexploited +underexpose/SDG +underexposure/SM +underfed +underfeed/SG +underfloor +underflow/GDMS +underfoot +underfund/DG +underfur/MS +undergarment/SM +undergirding +undergoes +undergo/G +undergone +undergrad/MS +undergraduate/MS +underground/RMS +undergrowth/M +undergrowths +underhand/D +underhandedness/MS +underhanded/YP +underheat +underinvestment +underlaid +underlain/S +underlay/GS +underlie +underline/GSDJ +underling/MS +underlip/SM +underloaded +underly/GS +undermanned +undermentioned +undermine/SDG +undermost +underneath +underneaths +undernourished +undernourishment/SM +underpaid +underpants +underpart/MS +underpass/SM +underpay/GSL +underpayment/SM +underperformed +underpinned +underpinning/MS +underpin/S +underplay/SGD +underpopulated +underpopulation/M +underpowered +underpricing +underprivileged +underproduction/MS +underrate/GSD +underregistration/M +underreported +underreporting +underrepresentation/M +underrepresented +underscore/SDG +undersealed +undersea/S +undersecretary/SM +undersell/SG +undersexed +undershirt/SM +undershoot/SG +undershorts +undershot +underside/SM +undersigned/M +undersign/SGD +undersized +undersizes +undersizing +underskirt/MS +undersold +underspecification +underspecified +underspend/G +understaffed +understandability/M +understandably +understanding/YM +understand/RGSJB +understate/GSDL +understatement/MS +understocked +understood +understrength +understructure/SM +understudy/GMSD +undertaken +undertaker/M +undertake/SRGZJ +undertaking/M +underthings +undertone/SM +undertook +undertow/MS +underused +underusing +underutilization/M +underutilized +undervaluation/S +undervalue/SDG +underwater/S +underway +underwear/M +underweight/S +underwent +underwhelm/DGS +underwood/M +Underwood/M +underworld/MS +underwrite/GZSR +underwriter/M +underwritten +underwrote +under/Y +undeserving +undesigned +undeviating/Y +undialyzed/SM +undiplomatic +undiscerning +undiscriminating +undo/GJ +undoubted/Y +undramatic +undramatized/SM +undress/G +undrinkability +undrinkable +undroppable +undue +undulant +undulate/XDSNG +undulation/M +unearthliness/S +unearthly/P +unearth/YG +unease +uneconomic +uneducated +unemployed/S +unencroachable +unending/Y +unendurable/P +unenergized/MS +unenforced +unenterprising +UNESCO +unethical +uneulogized/SM +unexacting +unexceptionably +unexcited +unexpectedness/MS +unfading/Y +unfailingness/M +unfailing/P +unfamiliar +unfashionable +unfathomably +unfavored +unfeeling +unfeigned/Y +unfelt +unfeminine +unfertile +unfetchable +unflagging +unflappability/S +unflappable +unflappably +unflinching/Y +unfold/LG +unfoldment/M +unforced +unforgeable +unfossilized/MS +unfraternizing/SM +unfrozen +unfulfillable +unfunny +unfussy +ungainliness/MS +ungainly/PRT +Ungava/M +ungenerous +ungentle +unglamorous +ungrammaticality +ungrudging +unguent/MS +ungulate/MS +unharmonious +unharness/G +unhistorical +unholy/TP +unhook/DG +unhydrolyzed/SM +unhygienic +Unibus/M +unicameral +UNICEF +unicellular +Unicode/M +unicorn/SM +unicycle/MGSD +unicyclist/MS +unideal +unidimensional +unidiomatic +unidirectionality +unidirectional/Y +unidolized/MS +unifiable +unification/MA +unifier/MS +unifilar +uniformity/MS +uniformness/M +uniform/TGSRDYMP +unify/AXDSNG +unilateralism/M +unilateralist +unilateral/Y +unimodal +unimpeachably +unimportance +unimportant +unimpressive +unindustrialized/MS +uninhibited/YP +uninominal +uninsured +unintellectual +unintended +uninteresting +uninterruptedness/M +uninterrupted/YP +unintuitive +uninviting +union/AEMS +unionism/SM +unionist/SM +Unionist/SM +unionize +Union/MS +UniPlus/M +unipolar +uniprocessor/SM +uniqueness/S +unique/TYSRP +Uniroyal/M +unisex/S +UniSoft/M +unison/MS +Unisys/M +unitarianism/M +Unitarianism/SM +unitarian/MS +Unitarian/MS +unitary +unite/AEDSG +united/Y +uniter/M +unitize/GDS +unit/VGRD +unity/SEM +univ +Univac/M +univalent/S +univalve/MS +univariate +universalism/M +universalistic +universality/SM +universalize/DSRZG +universalizer/M +universal/YSP +universe/MS +university/MS +Unix/M +UNIX/M +unjam +unkempt +unkind/TP +unkink +unknightly +unknowable/S +unknowing +unlabored +unlace/G +unlearn/G +unlikeable +unlikeliness/S +unlimber/G +unlimited +unlit +unliterary +unloose/G +unlucky/TP +unmagnetized/MS +unmanageably +unmannered/Y +unmask/G +unmeaning +unmeasured +unmeetable +unmelodious +unmemorable +unmemorialized/MS +unmentionable/S +unmerciful +unmeritorious +unmethodical +unmineralized/MS +unmissable +unmistakably +unmitigated/YP +unmnemonic +unmobilized/SM +unmoral +unmount/B +unmovable +unmoving +unnaturalness/M +unnavigable +unnerving/Y +unobliging +unoffensive +unofficial +unorganized/YP +unorthodox +unpack/G +unpaintable +unpalatability +unpalatable +unpartizan +unpatronizing +unpeople +unperceptive +unperson +unperturbed/Y +unphysical +unpick/G +unpicturesque +unpinning +unpleasing +unploughed +unpolarized/SM +unpopular +unpractical +unprecedented/Y +unpredictable/S +unpreemphasized +unpremeditated +unpretentiousness/M +unprincipled/P +unproblematic +unproductive +unpropitious +unprovable +unproven +unprovocative +unpunctual +unquestionable +unraisable +unravellings +unreadability +unread/B +unreal +unrealizable +unreasoning/Y +unreceptive +unrecordable +unreflective +unrelenting/Y +unremitting/Y +unrepeatability +unrepeated +unrepentant +unreported +unrepresentative +unreproducible +unrest/G +unrestrained/P +unrewarding +unriddle +unripe/P +unromantic +unruliness/SM +unruly/PTR +unsaleable +unsanitary +unsavored/YP +unsavoriness/M +unseal/GB +unsearchable +unseasonal +unseeing/Y +unseen/S +unselfconsciousness/M +unselfconscious/P +unselfishness/M +unsellable +unsentimental +unset +unsettledness/M +unsettled/P +unsettling/Y +unshapely +unshaven +unshorn +unsighted +unsightliness/S +unskilful +unsociability +unsociable/P +unsocial +unsound/PT +unspeakably +unspecific +unspectacular +unspoilt +unspoke +unsporting +unstable/P +unstigmatized/SM +unstilted +unstinting/Y +unstopping +unstrapping +unstudied +unstuffy +unsubdued +unsubstantial +unsubtle +unsuitable +unsuspecting/Y +unswerving/Y +unsymmetrical +unsympathetic +unsystematic +unsystematized/Y +untactful +untalented +untaxing +unteach/B +untellable +untenable +unthinking +until/G +untiring/Y +unto +untouchable/MS +untowardness/M +untoward/P +untraceable +untrue +untruthfulness/M +untwist/G +Unukalhai/M +unusualness/M +unutterable +unutterably +unvocalized/MS +unvulcanized/SM +unwaivering +unwarrantable +unwarrantably +unwashed/PS +unwearable +unwearied/Y +unwed +unwedge +unwelcome +unwell/M +unwieldiness/MS +unwieldy/TPR +unwind/B +unwomanly +unworkable/S +unworried +unwrap +unwrapping +unyielding/Y +unyoke +unzip +up +Upanishads +uparrow +upbeat/SM +upbraid/GDRS +upbringing/M +upbring/JG +UPC +upchuck/SDG +upcome/G +upcountry/S +updatability +updater/M +update/RSDG +Updike/M +updraft/SM +upend/SDG +upfield +upfront +upgradeable +upgrade/DSJG +upheaval/MS +upheld +uphill/S +upholder/M +uphold/RSGZ +upholster/ADGS +upholsterer/SM +upholstery/MS +UPI +upkeep/SM +uplander/M +upland/MRS +uplifter/M +uplift/SJDRG +upload/GSD +upmarket +upon +upped +uppercase/GSD +upperclassman/M +upperclassmen +uppercut/S +uppercutting +uppermost +upper/S +upping +uppish +uppity +upraise/GDS +uprated +uprating +uprear/DSG +upright/DYGSP +uprightness/S +uprise/RGJ +uprising/M +upriver/S +uproariousness/M +uproarious/PY +uproar/MS +uproot/DRGS +uprooter/M +ups +UPS +upscale/GDS +upset/S +upsetting/MS +upshot/SM +upside/MS +upsilon/MS +upslope +upstage/DSRG +upstairs +upstandingness/M +upstanding/P +upstart/MDGS +upstate/SR +upstream/DSG +upstroke/MS +upsurge/DSG +upswing/GMS +upswung +uptake/SM +upthrust/GMS +uptight +uptime +Upton/M +uptown/RS +uptrend/M +upturn/GDS +upwardness/M +upward/SYP +upwelling +upwind/S +uracil/MS +Ural/MS +Urania/M +uranium/MS +Uranus/M +uranyl/M +Urbain/M +Urbana/M +urbane/Y +urbanism/M +urbanite/SM +urbanity/SM +urbanization/MS +urbanize/DSG +Urban/M +urbanologist/S +urbanology/S +Urbano/M +urban/RT +Urbanus/M +urchin/SM +Urdu/M +urea/SM +uremia/MS +uremic +ureter/MS +urethane/MS +urethrae +urethral +urethra/M +urethritis/M +Urey/M +urge/GDRSJ +urgency/SM +urgent/Y +urger/M +Uriah/M +uric +Uriel/M +urinal/MS +urinalyses +urinalysis/M +urinary/MS +urinate/XDSNG +urination/M +urine/MS +Uri/SM +URL +Ur/M +urning/M +urn/MDGS +urogenital +urological +urologist/S +urology/MS +Urquhart/M +Ursala/M +Ursa/M +ursine +Ursola/M +Urson/M +Ursula/M +Ursulina/M +Ursuline/M +urticaria/MS +Uruguayan/S +Uruguay/M +Urumqi +US +USA +usability/S +usable/U +usably/U +USAF +usage/SM +USART +USCG +USC/M +USDA +us/DRSBZG +used/U +use/ESDAG +usefulness/SM +useful/YP +uselessness/MS +useless/PY +Usenet/M +Usenix/M +user/M +USG/M +usherette/SM +usher/SGMD +USIA +USMC +USN +USO +USP +USPS +USS +USSR +Ustinov/M +usu +usuals +usual/UPY +usurer/SM +usuriousness/M +usurious/PY +usurpation/MS +usurper/M +usurp/RDZSG +usury/SM +UT +Utahan/SM +Utah/M +Uta/M +Ute/M +utensil/SM +uteri +uterine +uterus/M +Utica/M +utile/I +utilitarianism/MS +utilitarian/S +utility/MS +utilization/MS +utilization's/A +utilize/GZDRS +utilizer/M +utilizes/A +utmost/S +Utopia/MS +utopianism/M +utopian's +Utopian/S +utopia/S +Utrecht/M +Utrillo/M +utterance/MS +uttered/U +utterer/M +uttermost/S +utter/TRDYGS +uucp/M +UV +uvula/MS +uvular/S +uxorious +Uzbekistan +Uzbek/M +Uzi/M +V +VA +vacancy/MS +vacantness/M +vacant/PY +vacate/NGXSD +vacationist/SM +vacationland +vacation/MRDZG +vaccinate/NGSDX +vaccination/M +vaccine/SM +vaccinial +vaccinia/M +Vachel/M +vacillate/XNGSD +vacillating/Y +vacillation/M +vacillator/SM +Vaclav/M +vacua's +vacuity/MS +vacuo +vacuolated/U +vacuolate/SDGN +vacuole/SM +vacuolization/SM +vacuousness/MS +vacuous/PY +vacuum/GSMD +Vader/M +Vaduz/M +vagabondage/MS +vagabond/DMSG +vagarious +vagary/MS +vaginae +vaginal/Y +vagina/M +vagrancy/MS +vagrant/SMY +vagueing +vagueness/MS +vague/TYSRDP +Vail/M +vaingloriousness/M +vainglorious/YP +vainglory/MS +vain/TYRP +val +valance/SDMG +Valaree/M +Valaria/M +Valarie/M +Valdemar/M +Valdez/M +Valeda/M +valediction/MS +valedictorian/MS +valedictory/MS +Vale/M +valence/SM +Valencia/MS +valency/MS +Valene/M +Valenka/M +Valentia/M +Valentijn/M +Valentina/M +Valentine/M +valentine/SM +Valentin/M +Valentino/M +Valenzuela/M +Valera/M +Valeria/M +Valerian/M +Valerie/M +Valerye/M +Valéry/M +vale/SM +valet/GDMS +valetudinarianism/MS +valetudinarian/MS +Valhalla/M +valiance/S +valiantness/M +valiant/SPY +Valida/M +validated/AU +validate/INGSDX +validates/A +validation/AMI +validity/IMS +validnesses +validness/MI +valid/PIY +Valina/M +valise/MS +Valium/S +Valkyrie/SM +Vallejo +Valle/M +Valletta/M +valley/SM +Vallie/M +Valli/M +Vally/M +Valma/M +Val/MY +Valois/M +valor/MS +valorous/Y +Valparaiso/M +Valry/M +valuable/IP +valuableness/IM +valuables +valuably/I +valuate/NGXSD +valuation/CSAM +valuator/SM +value/CGASD +valued/U +valuelessness/M +valueless/P +valuer/SM +value's +values/E +valve/GMSD +valveless +valvular +Va/M +vamoose/GSD +vamp/ADSG +vamper +vampire/MGSD +vamp's +vanadium/MS +Vance/M +Vancouver/M +vandalism/MS +vandalize/GSD +vandal/MS +Vandal/MS +Vanda/M +Vandenberg/M +Vanderbilt/M +Vanderburgh/M +Vanderpoel/M +Vandyke/SM +vane/MS +Vanessa/M +Vang/M +vanguard/MS +Vania/M +vanilla/MS +vanisher/M +vanish/GRSDJ +vanishing/Y +vanity/SM +Van/M +Vanna/M +vanned +Vannie/M +Vanni/M +vanning +Vanny/M +vanquisher/M +vanquish/RSDGZ +van/SMD +vantage/MS +Vanuatu +Vanya/M +Vanzetti/M +vapidity/MS +vapidness/SM +vapid/PY +vaporer/M +vaporing/MY +vaporisation +vaporise/DSG +vaporization/AMS +vaporize/DRSZG +vaporizer/M +vapor/MRDJGZS +vaporous +vapory +vaquero/SM +VAR +Varanasi/M +Varese/M +Vargas/M +variability/IMS +variableness/IM +variable/PMS +variables/I +variably/I +variance/I +variances +variance's +Varian/M +variant/ISY +variate/MGNSDX +variational +variation/M +varicolored/MS +varicose/S +variedly +varied/U +variegate/NGXSD +variegation/M +varier/M +varietal/S +variety/MS +various/PY +varistor/M +Varityping/M +varlet/MS +varmint/SM +varnished/U +varnisher/M +varnish/ZGMDRS +var/S +varsity/MS +varying/UY +vary/SRDJG +vascular +vasectomy/SM +Vaseline/DSMG +vase/SM +Vasili/MS +Vasily/M +vasomotor +Vasquez/M +vassalage/MS +vassal/GSMD +Vassar/M +Vassili/M +Vassily/M +vastness/MS +vast/PTSYR +v/ASV +VAT +Vatican/M +vat/SM +vatted +vatting +vaudeville/SM +vaudevillian/SM +Vaudois +Vaughan/M +Vaughn/M +vaulter/M +vaulting/M +vault/ZSRDMGJ +vaunter/M +vaunt/GRDS +VAXes +Vax/M +VAX/M +Vazquez/M +vb +VCR +VD +VDT +VDU +vealed/A +vealer/MA +veal/MRDGS +veals/A +Veblen/M +vectorial +vectorization +vectorized +vectorizing +vector's/F +vector/SGDM +Veda/MS +Vedanta/M +veejay/S +veep/S +veer/DSG +veering/Y +vegan/SM +Vega/SM +Vegemite/M +veges +vegetable/MS +vegetarianism/MS +vegetarian/SM +vegetate/DSNGVX +vegetation/M +vegetative/PY +vegged +veggie/S +vegging +veg/M +vehemence/MS +vehemency/S +vehement/Y +vehicle/SM +vehicular +veiling/MU +veil's +veil/UGSD +vein/GSRDM +veining/M +vela/M +Vela/M +velarize/SDG +velar/S +Velásquez/M +Velázquez +Velcro/SM +veld/SM +veldt's +Velez/M +Vella/M +vellum/MS +Velma/M +velocipede/SM +velocity/SM +velor/S +velour's +velum/M +Velveeta/M +velveteen/MS +velvet/GSMD +Velvet/M +velvety/RT +venality/MS +venal/Y +venation/SM +vend/DSG +vender's/K +vendetta/MS +vendible/S +vendor/MS +veneerer/M +veneer/GSRDM +veneering/M +venerability/S +venerable/P +venerate/XNGSD +veneration/M +venereal +venetian +Venetian/SM +Venezuela/M +Venezuelan/S +vengeance/MS +vengeful/APY +vengefulness/AM +venialness/M +venial/YP +Venice/M +venireman/M +veniremen +venison/SM +Venita/M +Venn/M +venomousness/M +venomous/YP +venom/SGDM +venous/Y +venter/M +ventilated/U +ventilate/XSDVGN +ventilation/M +ventilator/MS +vent/ISGFD +ventral/YS +ventricle/MS +ventricular +ventriloquies +ventriloquism/MS +ventriloquist/MS +ventriloquy +vent's/F +Ventura/M +venture/RSDJZG +venturesomeness/SM +venturesome/YP +venturi/S +venturousness/MS +venturous/YP +venue/MAS +Venusian/S +Venus/S +veraciousness/M +veracious/YP +veracities +veracity/IM +Veracruz/M +Veradis +Vera/M +verandahed +veranda/SDM +verbalization/MS +verbalized/U +verbalizer/M +verbalize/ZGRSD +verballed +verballing +verbal/SY +verbatim +verbena/MS +verbiage/SM +verb/KSM +verbose/YP +verbosity/SM +verboten +verdant/Y +Verde/M +Verderer/M +verdict/SM +verdigris/GSDM +Verdi/M +verdure/SDM +Vere/M +Verena/M +Verene/M +verge/FGSD +Verge/M +verger/SM +verge's +Vergil's +veridical/Y +Veriee/M +verifiability/M +verifiableness/M +verifiable/U +verification/S +verified/U +verifier/MS +verify/GASD +Verile/M +verily +Verina/M +Verine/M +verisimilitude/SM +veritableness/M +veritable/P +veritably +verity/MS +Verlag/M +Verlaine/M +Verla/M +Vermeer/M +vermicelli/MS +vermiculite/MS +vermiform +vermilion/MS +vermin/M +verminous +Vermonter/M +Vermont/ZRM +vermouth/M +vermouths +vernacular/YS +vernal/Y +Verna/M +Verne/M +Vernen/M +Verney/M +Vernice/M +vernier/SM +Vern/NM +Vernon/M +Vernor/M +Verona/M +Veronese/M +Veronica/M +veronica/SM +Veronika/M +Veronike/M +Veronique/M +verrucae +verruca/MS +versa +Versailles/M +Versatec/M +versatileness/M +versatile/YP +versatility/SM +versed/UI +verse's +verses/I +verse/XSRDAGNF +versicle/M +versification/M +versifier/M +versify/GDRSZXN +versing/I +version/MFISA +verso/SM +versus +vertebrae +vertebral/Y +vertebra/M +vertebrate/IMS +vertebration/M +vertex/SM +vertical/YPS +vertices's +vertiginous +vertigoes +vertigo/M +verve/SM +very/RT +Vesalius/M +vesicle/SM +vesicular/Y +vesiculate/GSD +Vespasian/M +vesper/SM +Vespucci/M +vessel/MS +vestal/YS +Vesta/M +vest/DIGSL +vestibular +vestibule/SDM +vestige/SM +vestigial/Y +vesting/SM +vestment/ISM +vestryman/M +vestrymen +vestry/MS +vest's +vesture/SDMG +Vesuvius/M +vetch/SM +veteran/SM +veterinarian/MS +veterinary/S +veter/M +veto/DMG +vetoes +vet/SMR +vetted +vetting/A +Vevay/M +vexation/SM +vexatiousness/M +vexatious/PY +vexed/Y +vex/GFSD +VF +VFW +VG +VGA +vhf +VHF +VHS +VI +via +viability/SM +viable/I +viably +viaduct/MS +Viagra/M +vial/MDGS +viand/SM +vibe/S +vibraharp/MS +vibrancy/MS +vibrant/YS +vibraphone/MS +vibraphonist/SM +vibrate/XNGSD +vibrational/Y +vibration/M +vibrato/MS +vibrator/SM +vibratory +vibrio/M +vibrionic +viburnum/SM +vicarage/SM +vicariousness/MS +vicarious/YP +vicar/SM +vice/CMS +viced +vicegerent/MS +vicennial +Vicente/M +viceregal +viceroy/SM +Vichy/M +vichyssoise/MS +vicing +vicinity/MS +viciousness/S +vicious/YP +vicissitude/MS +Vickers/M +Vickie/M +Vicki/M +Vicksburg/M +Vicky/M +Vick/ZM +Vic/M +victimization/SM +victimized/U +victimizer/M +victimize/SRDZG +victim/SM +Victoir/M +Victoria/M +Victorianism/S +Victorian/S +victoriousness/M +victorious/YP +Victor/M +victor/SM +victory/MS +Victrola/SM +victualer/M +victual/ZGSDR +vicuña/S +Vidal/M +Vida/M +videlicet +videocassette/S +videoconferencing +videodisc/S +videodisk/SM +video/GSMD +videophone/SM +videotape/SDGM +Vidovic/M +Vidovik/M +Vienna/M +Viennese/M +Vientiane/M +vier/M +vie/S +Vietcong/M +Viet/M +Vietminh/M +Vietnamese/M +Vietnam/M +viewed/A +viewer/AS +viewer's +viewfinder/MS +viewgraph/SM +viewing/M +viewless/Y +view/MBGZJSRD +viewpoint/SM +views/A +vigesimal +vigilance/MS +vigilante/SM +vigilantism/MS +vigilantist +vigilant/Y +vigil/SM +vignette/MGDRS +vignetter/M +vignetting/M +vignettist/MS +vigor/MS +vigorousness/M +vigorous/YP +vii +viii +Vijayawada/M +Viki/M +Viking/MS +viking/S +Vikki/M +Vikky/M +Vikram/M +Vila +vile/AR +vilely +vileness/MS +vilest +Vilhelmina/M +vilification/M +vilifier/M +vilify/GNXRSD +villager/M +village/RSMZ +villainousness/M +villainous/YP +villain/SM +villainy/MS +Villa/M +villa/MS +Villarreal/M +ville +villeinage/SM +villein/MS +villi +Villon/M +villus/M +Vilma/M +Vilnius/M +Vilyui/M +Vi/M +vi/MDR +vim/MS +vinaigrette/MS +Vina/M +Vince/M +Vincent/MS +Vincenty/M +Vincenz/M +vincible/I +Vinci/M +Vindemiatrix/M +vindicate/XSDVGN +vindication/M +vindicator/SM +vindictiveness/MS +vindictive/PY +vinegar/DMSG +vinegary +vine/MGDS +vineyard/SM +Vinita/M +Vin/M +Vinnie/M +Vinni/M +Vinny/M +vino/MS +vinous +Vinson/M +vintage/MRSDG +vintager/M +vintner/MS +vinyl/SM +violable/I +Viola/M +Violante/M +viola/SM +violate/VNGXSD +violator/MS +Viole/M +violence/SM +violent/Y +Violet/M +violet/SM +Violetta/M +Violette/M +violinist/SM +violin/MS +violist/MS +viol/MSB +violoncellist/S +violoncello/MS +viper/MS +viperous +VIP/S +viragoes +virago/M +viral/Y +vireo/SM +Virge/M +Virgie/M +Virgilio/M +Virgil/M +virginal/YS +Virgina/M +Virginia/M +Virginian/S +Virginie/M +virginity/SM +virgin/SM +Virgo/MS +virgule/MS +virile +virility/MS +virologist/S +virology/SM +virtual/Y +virtue/SM +virtuosity/MS +virtuosoes +virtuoso/MS +virtuousness/SM +virtuous/PY +virulence/SM +virulent/Y +virus/MS +visage/MSD +Visakhapatnam's +Visa/M +visa/SGMD +Visayans +viscera +visceral/Y +viscid/Y +viscoelastic +viscoelasticity +viscometer/SM +viscose/MS +viscosity/MS +viscountcy/MS +viscountess/SM +viscount/MS +viscousness/M +viscous/PY +viscus/M +vise/CAXNGSD +viselike +vise's +Vishnu/M +visibility/ISM +visible/PI +visibly/I +Visigoth/M +Visigoths +visionariness/M +visionary/PS +vision/KMDGS +vision's/A +visitable/U +visitant/SM +visitation/SM +visited/U +visit/GASD +visitor/MS +vis/MDSGV +visor/SMDG +VISTA +vista/GSDM +Vistula/M +visualization/AMS +visualized/U +visualizer/M +visualizes/A +visualize/SRDZG +visual/SY +vitae +vitality/MS +vitalization/AMS +vitalize/ASDGC +vital/SY +vita/M +Vita/M +vitamin/SM +Vite/M +Vitia/M +vitiate/XGNSD +vitiation/M +viticulture/SM +viticulturist/S +Vitim/M +Vito/M +Vitoria/M +vitreous/YSP +vitrifaction/S +vitrification/M +vitrify/XDSNG +vitrine/SM +vitriolic +vitriol/MDSG +vitro +vittles +Vittoria/M +Vittorio/M +vituperate/SDXVGN +vituperation/M +vituperative/Y +Vitus/M +vivace/S +vivaciousness/MS +vivacious/YP +vivacity/SM +viva/DGS +Vivaldi +Viva/M +vivaria +vivarium/MS +vivaxes +Vivekananda/M +vive/Z +Vivia/M +Viviana/M +Vivian/M +Vivianna/M +Vivianne/M +vividness/SM +vivid/PTYR +Vivie/M +Viviene/M +Vivien/M +Vivienne/M +vivifier +vivify/NGASD +Vivi/MN +viviparous +vivisect/DGS +vivisectional +vivisectionist/SM +vivisection/MS +Viviyan/M +Viv/M +vivo +Vivyan/M +Vivyanne/M +vixenish/Y +vixen/SM +viz +vizier/MS +vizor's +VJ +Vladamir/M +Vladimir/M +Vladivostok/M +Vlad/M +VLF +VLSI +VMS/M +VOA +vocable/SM +vocab/S +vocabularian +vocabularianism +vocabulary/MS +vocalic/S +vocalise's +vocalism/M +vocalist/MS +vocalization/SM +vocalized/U +vocalizer/M +vocalize/ZGDRS +vocal/SY +vocation/AKMISF +vocational/Y +vocative/KYS +vociferate/NGXSD +vociferation/M +vociferousness/MS +vociferous/YP +vocoded +vocoder +vodka/MS +voe/S +Vogel/M +vogue/GMSRD +vogueing +voguish +voiceband +voiced/CU +voice/IMGDS +voicelessness/SM +voiceless/YP +voicer/S +voices/C +voicing/C +voidable +void/C +voided +voider/M +voiding +voidness/M +voids +voilà +voile/MS +volar +volatileness/M +volatile/PS +volatility/MS +volatilization/MS +volatilize/SDG +volcanically +volcanic/S +volcanism/M +volcanoes +volcano/M +vole/MS +Volga/M +Volgograd/M +vol/GSD +volitionality +volitional/Y +volition/MS +Volkswagen/SM +volleyball/MS +volleyer/M +volley/SMRDG +Vol/M +Volstead/M +voltage/SM +voltaic +Voltaire/M +Volta/M +volt/AMS +Volterra/M +voltmeter/MS +volubility/S +voluble/P +volubly +volume/SDGM +volumetric +volumetrically +voluminousness/MS +voluminous/PY +voluntarily/I +voluntariness/MI +voluntarism/MS +voluntary/PS +volunteer/DMSG +voluptuary/SM +voluptuousness/S +voluptuous/YP +volute/S +Volvo/M +vomit/GRDS +Vonda/M +Von/M +Vonnegut/M +Vonnie/M +Vonni/M +Vonny/M +voodoo/GDMS +voodooism/S +voraciousness/MS +voracious/YP +voracity/MS +Voronezh/M +Vorster/M +vortex/SM +vortices's +vorticity/M +votary/MS +vote/CSDG +voter/SM +vote's +votive/YP +voucher/GMD +vouchsafe/SDG +vouch/SRDGZ +vowelled +vowelling +vowel/MS +vower/M +vow/SMDRG +voyage/GMZJSRD +voyager/M +voyageur/SM +voyeurism/MS +voyeuristic +voyeur/MS +VP +vs +V's +VT +Vt/M +VTOL +vulcanization/SM +vulcanized/U +vulcanize/SDG +Vulcan/M +vulgarian/MS +vulgarism/MS +vulgarity/MS +vulgarization/S +vulgarize/GZSRD +vulgar/TSYR +Vulgate/SM +Vulg/M +vulnerability/SI +vulnerable/IP +vulnerably/I +vulpine +vulturelike +vulture/SM +vulturous +vulvae +vulva/M +vying +Vyky/M +WA +Waals +Wabash/M +WAC +Wacke/M +wackes +wackiness/MS +wacko/MS +wacky/RTP +Waco/M +Wac/S +wadded +wadding/SM +waddle/GRSD +Wade/M +wader/M +wade/S +wadi/SM +wad/MDRZGS +Wadsworth/M +wafer/GSMD +waffle/GMZRSD +Wafs +wafter/M +waft/SGRD +wag/DRZGS +waged/U +wager/GZMRD +wage/SM +wagged +waggery/MS +wagging +waggishness/SM +waggish/YP +waggle/SDG +waggly +Wagnerian +Wagner/M +wagoner/M +wagon/SGZMRD +wagtail/SM +Wahl/M +waif/SGDM +Waikiki/M +wailer/M +wail/SGZRD +wain/GSDM +Wain/M +wainscot/SGJD +Wainwright/M +wainwright/SM +waistband/MS +waistcoat/GDMS +waister/M +waist/GSRDM +waistline/MS +Waite/M +waiter/DMG +Waiter/M +wait/GSZJRD +Wait/MR +waitpeople +waitperson/S +waitress/GMSD +waiver/MB +waive/SRDGZ +Wakefield/M +wakefulness/MS +wakeful/PY +Wake/M +wake/MGDRSJ +waken/SMRDG +waker/M +wakeup +Waksman/M +Walbridge/M +Walcott/M +Waldemar/M +Walden/M +Waldensian +Waldheim/M +Wald/MN +Waldo/M +Waldon/M +Waldorf/M +wale/DRSMG +Wales +Walesa/M +Walford/M +Walgreen/M +waling/M +walkabout/M +walkaway/SM +walker/M +Walker/M +walk/GZSBJRD +walkie +Walkman/S +walkout/SM +walkover/SM +walkway/MS +wallaby/MS +Wallace/M +Wallache/M +wallah/M +Wallas/M +wallboard/MS +Wallenstein/M +Waller/M +wallet/SM +walleye/MSD +wallflower/MS +Wallie/M +Wallis +Walliw/M +Walloon/SM +walloper/M +walloping/M +wallop/RDSJG +wallower/M +wallow/RDSG +wallpaper/DMGS +wall/SGMRD +Wall/SMR +Wally/M +wally/S +walnut/SM +Walpole/M +Walpurgisnacht +walrus/SM +Walsh/M +Walter/M +Walther/M +Walton/M +waltzer/M +Walt/ZMR +waltz/MRSDGZ +Walworth/M +Waly/M +wampum/SM +Wanamaker/M +Wanda/M +wanderer/M +wander/JZGRD +wanderlust/SM +Wandie/M +Wandis/M +wand/MRSZ +wane/S +Waneta/M +wangler/M +wangle/RSDGZ +Wang/M +Wanids/M +Wankel/M +wanna +wannabe/S +wanned +wanner +wanness/S +wannest +wanning +wan/PGSDY +Wansee/M +Wansley/M +wanted/U +wanter/M +want/GRDSJ +wantonness/S +wanton/PGSRDY +wapiti/MS +warble/GZRSD +warbler/M +warbonnet/S +ward/AGMRDS +Warde/M +warden/DMGS +Warden/M +warder/DMGS +Ward/MN +wardrobe/MDSG +wardroom/MS +wardship/M +wards/I +warehouseman/M +warehouse/MGSRD +Ware/MG +ware/MS +warfare/SM +Warfield/M +war/GSMD +warhead/MS +Warhol/M +warhorse/SM +warily/U +warinesses/U +wariness/MS +Waring/M +warless +warlike +warlock/SM +warlord/MS +warmblooded +warmed/A +warmer/M +warmheartedness/SM +warmhearted/PY +warmish +warmness/MS +warmongering/M +warmonger/JGSM +warms/A +warmth/M +warmths +warm/YRDHPGZTS +warned/U +warner/M +Warner/M +warn/GRDJS +warning/YM +Warnock/M +warpaint +warpath/M +warpaths +warper/M +warplane/MS +warp/MRDGS +warranted/U +warranter/M +warrant/GSMDR +warranty/SDGM +warred/M +warrener/M +Warren/M +warren/SZRM +warring/M +warrior/MS +Warsaw/M +wars/C +warship/MS +warthog/S +wartime/SM +wart/MDS +warty/RT +Warwick/M +wary/URPT +Wasatch/M +washable/S +wash/AGSD +washbasin/SM +washboard/SM +washbowl/SM +Washburn/M +washcloth/M +washcloths +washday/M +washed/U +washer/GDMS +washerwoman/M +washerwomen +washing/SM +Washingtonian/S +Washington/M +Wash/M +Washoe/M +washout/SM +washrag/SM +washroom/MS +washstand/SM +washtub/MS +washy/RT +wasn't +WASP +waspishness/SM +waspish/PY +Wasp's +wasp/SM +was/S +wassail/GMDS +Wasserman/M +Wassermann/M +wastage/SM +wastebasket/SM +wastefulness/S +wasteful/YP +wasteland/MS +wastepaper/MS +waster/DG +waste/S +wastewater +wast/GZSRD +wasting/Y +wastrel/MS +Watanabe/M +watchable/U +watchband/SM +watchdogged +watchdogging +watchdog/SM +watched/U +watcher/M +watchfulness/MS +watchful/PY +watch/JRSDGZB +watchmake/JRGZ +watchmaker/M +watchman/M +watchmen +watchpoints +watchtower/MS +watchword/MS +waterbird/S +waterborne +Waterbury/M +watercolor/DMGS +watercolorist/SM +watercourse/SM +watercraft/M +watercress/SM +waterer/M +waterfall/SM +waterfowl/M +waterfront/SM +Watergate/M +waterhole/S +Waterhouse/M +wateriness/SM +watering/M +water/JGSMRD +waterless +waterlily/S +waterline/S +waterlogged +waterloo +Waterloo/SM +waterman/M +watermark/GSDM +watermelon/SM +watermill/S +waterproof/PGRDSJ +watershed/SM +waterside/MSR +watersider/M +Waters/M +waterspout/MS +watertightness/M +watertight/P +Watertown/M +waterway/MS +waterwheel/S +waterworks/M +watery/PRT +Watkins +WATS +Watson/M +wattage/SM +Watteau/M +Wattenberg/M +Watterson/M +wattle/SDGM +Watt/MS +watt/TMRS +Watusi/M +Wat/ZM +Waugh/M +Waukesha/M +Waunona/M +Waupaca/M +Waupun/M +Wausau/M +Wauwatosa/M +waveband/MS +waveform/SM +wavefront/MS +waveguide/MS +Waveland/M +wavelength/M +wavelengths +wavelet/SM +wavelike +wavenumber +waver/GZRD +wavering/YU +Waverley/M +Waverly/M +Wave/S +wave/ZGDRS +wavily +waviness/MS +wavy/SRTP +waxer/M +waxiness/MS +wax/MNDRSZG +waxwing/MS +waxwork/MS +waxy/PRT +wayfarer/MS +wayfaring/S +waylaid +Wayland/M +Waylan/M +waylayer/M +waylay/GRSZ +wayleave/MS +Waylen/M +Waylin/M +Waylon/M +Way/M +waymarked +way/MS +Wayne/M +Waynesboro/M +wayside/MS +waywardness/S +wayward/YP +WC +we +weakener/M +weaken/ZGRD +weakfish/SM +weakish +weakliness/M +weakling/SM +weakly/RTP +weakness/MS +weak/TXPYRN +weal/MHS +wealthiness/MS +wealth/M +wealths +wealthy/PTR +weaner/M +weanling/M +wean/RDGS +weapon/GDMS +weaponless +weaponry/MS +wearable/S +wearer/M +wearied/U +wearily +weariness/MS +wearing/Y +wearisomeness/M +wearisome/YP +wear/RBSJGZ +wearying/Y +weary/TGPRSD +weasel/SGMDY +weatherbeaten +weathercock/SDMG +weatherer/M +Weatherford/M +weathering/M +weatherize/GSD +weatherman/M +weather/MDRYJGS +weathermen +weatherperson/S +weatherproof/SGPD +weatherstripped +weatherstripping/S +weatherstrip/S +weaver/M +Weaver/M +weaves/A +weave/SRDGZ +weaving/A +webbed +Webber/M +webbing/MS +Webb/RM +weber/M +Weber/M +Webern/M +webfeet +webfoot/M +Web/MR +website/S +web/SMR +Webster/MS +Websterville/M +we'd +wedded/A +Weddell/M +wedder +wedding/SM +wedge/SDGM +wedgie/RST +Wedgwood/M +wedlock/SM +Wed/M +Wednesday/SM +wed/SA +weeder/M +weediness/M +weedkiller/M +weedless +wee/DRST +weed/SGMRDZ +weedy/TRP +weeing +weekday/MS +weekender/M +weekend/SDRMG +weekly/S +weeknight/SM +Weeks/M +week/SYM +weenie/M +ween/SGD +weeny/RSMT +weeper/M +weep/SGZJRD +weepy/RST +weevil/MS +weft/SGMD +Wehr/M +Weibull/M +Weidar/M +Weider/M +Weidman/M +Weierstrass/M +weighed/UA +weigher/M +weigh/RDJG +weighs/A +weighted/U +weighter/M +weightily +weightiness/SM +weighting/M +weight/JMSRDG +weightlessness/SM +weightless/YP +weightlifter/S +weightlifting/MS +weighty/TPR +Weill/M +Wei/M +Weinberg/M +Weiner/M +Weinstein/M +weirdie/SM +weirdness/MS +weirdo/SM +weird/YRDPGTS +weir/SDMG +Weisenheimer/M +Weiss/M +Weissman/M +Weissmuller/M +Weizmann/M +Welbie/M +Welby/M +Welcher/M +Welches +welcomeness/M +welcome/PRSDYG +welcoming/U +welder/M +Weldon/M +weld/SBJGZRD +Weldwood/M +welfare/SM +welkin/SM +we'll +Welland/M +wellbeing/M +Weller/M +Wellesley/M +Welles/M +wellhead/SM +Wellington/MS +wellington/S +Wellman/M +wellness/MS +well/SGPD +Wells/M +wellspring/SM +Wellsville/M +Welmers/M +Welsh +welsher/M +Welshman/M +Welshmen +welsh/RSDGZ +Welshwoman/M +Welshwomen +welter/GD +welterweight/MS +welt/GZSMRD +wencher/M +wench/GRSDM +Wendall/M +Wenda/M +wend/DSG +Wendeline/M +Wendell/M +Wendel/M +Wendie/M +Wendi/M +Wendye/M +Wendy/M +wen/M +Wenonah/M +Wenona/M +went +Wentworth/M +wept/U +were +we're +weren't +werewolf/M +werewolves +Werner/M +Wernher/M +Werther/M +werwolf's +Wes +Wesleyan +Wesley/M +Wessex/M +Wesson/M +westbound +Westbrooke/M +Westbrook/M +Westchester/M +wester/DYG +westerly/S +westerner/M +westernization/MS +westernize/GSD +westernmost +Western/ZRS +western/ZSR +Westfield/M +Westhampton/M +Westinghouse/M +westing/M +Westleigh/M +Westley/M +Westminster/M +Westmore/M +West/MS +Weston/M +Westphalia/M +Westport/M +west/RDGSM +westward/S +Westwood/M +wetback/MS +wetland/S +wetness/MS +wet/SPY +wettable +wetter/S +wettest +wetting +we've +Weyden/M +Weyerhauser/M +Weylin/M +Wezen/M +WFF +whacker/M +whack/GZRDS +whaleboat/MS +whalebone/SM +whale/GSRDZM +Whalen/M +whaler/M +whaling/M +whammed +whamming/M +wham/MS +whammy/S +wharf/SGMD +Wharton/M +wharves +whatchamacallit/MS +what'd +whatever +what/MS +whatnot/MS +what're +whatsoever +wheal/MS +wheatgerm +Wheaties/M +Wheatland/M +wheat/NMXS +Wheaton/M +Wheatstone/M +wheedle/ZDRSG +wheelbarrow/GSDM +wheelbase/MS +wheelchair/MS +wheeler/M +Wheeler/M +wheelhouse/SM +wheelie/MS +wheeling/M +Wheeling/M +Wheelock/M +wheel/RDMJSGZ +wheelwright/MS +whee/S +wheeze/SDG +wheezily +wheeziness/SM +wheezy/PRT +Whelan/M +whelk/MDS +Wheller/M +whelm/DGS +whelp/DMGS +whence/S +whenever +when/S +whensoever +whereabout/S +whereas/S +whereat +whereby +where'd +wherefore/MS +wherein +where/MS +whereof +whereon +where're +wheresoever +whereto +whereupon +wherever +wherewith +wherewithal/SM +wherry/DSGM +whether +whet/S +whetstone/MS +whetted +whetting +whew/GSD +whey/MS +which +whichever +whiff/GSMD +whiffle/DRSG +whiffler/M +whiffletree/SM +whig/S +Whig/SM +while/GSD +whilom +whilst +whimmed +whimming +whimper/DSG +whimsey's +whimsicality/MS +whimsical/YP +whim/SM +whimsy/TMDRS +whine/GZMSRD +whining/Y +whinny/GTDRS +whiny/RT +whipcord/SM +whiplash/SDMG +Whippany/M +whipped +whipper/MS +whippersnapper/MS +whippet/MS +whipping/SM +Whipple/M +whippletree/SM +whippoorwill/SM +whipsaw/GDMS +whips/M +whip/SM +whirligig/MS +whirlpool/MS +whirl/RDGS +whirlwind/MS +whirlybird/MS +whirly/MS +whirred +whirring +whir/SY +whisker/DM +whiskery +whiskey/SM +whisk/GZRDS +whisperer/M +whisper/GRDJZS +whispering/YM +whist/GDMS +whistleable +whistle/DRSZG +whistler/M +Whistler/M +whistling/M +Whitaker/M +Whitby/M +Whitcomb/M +whitebait/M +whitecap/MS +whiteface/M +Whitefield/M +whitefish/SM +Whitehall/M +Whitehead/M +whitehead/S +Whitehorse/M +Whiteleaf/M +Whiteley/M +White/MS +whitener/M +whiteness/MS +whitening/M +whiten/JZDRG +whiteout/S +white/PYS +whitespace +whitetail/S +whitewall/SM +whitewash/GRSDM +whitewater +Whitewater/M +whitey/MS +Whitfield/M +whither/DGS +whitier +whitiest +whiting/M +whitish +Whitley/M +Whitlock/M +Whit/M +Whitman/M +Whitney/M +whit/SJGTXMRND +Whitsunday/MS +Whittaker/M +whitter +Whittier +whittle/JDRSZG +whittler/M +whiz +whizkid +whizzbang/S +whizzed +whizzes +whizzing +WHO +whoa/S +who'd +whodunit/SM +whoever +wholegrain +wholeheartedness/MS +wholehearted/PY +wholemeal +wholeness/S +wholesale/GZMSRD +wholesaler/M +wholesomeness/USM +wholesome/UYP +whole/SP +wholewheat +who'll +wholly +whom +who/M +whomever +whomsoever +whoopee/S +whooper/M +whoop/SRDGZ +whoosh/DSGM +whop +whopper/MS +whopping/S +who're +whorehouse/SM +whoreish +whore/SDGM +whorish +whorl/SDM +whose +whoso +whosoever +who've +why +whys +WI +Wiatt/M +Wichita/M +wickedness/MS +wicked/RYPT +wicker/M +wickerwork/MS +wicketkeeper/SM +wicket/SM +wick/GZRDMS +wicking/M +widemouthed +widener/M +wideness/S +widen/SGZRD +wide/RSYTP +widespread +widgeon's +widget/SM +widower/M +widowhood/S +widow/MRDSGZ +width/M +widths +widthwise +Wieland/M +wielder/M +wield/GZRDS +Wiemar/M +wiener/SM +wienie/SM +Wier/M +Wiesel/M +wife/DSMYG +wifeless +wifely/RPT +wigeon/MS +wigged +wigging/M +Wiggins +wiggler/M +wiggle/RSDGZ +wiggly/RT +wight/SGDM +wiglet/S +wigmaker +wig/MS +Wigner/M +wigwagged +wigwagging +wigwag/S +wigwam/MS +Wilberforce/M +Wilbert/M +Wilbur/M +Wilburn/M +Wilburt/M +Wilcox/M +Wilda/M +wildcat/SM +wildcatted +wildcatter/MS +wildcatting +wildebeest/SM +Wilde/MR +Wilden/M +Wilder/M +wilderness/SM +wilder/P +wildfire/MS +wildflower/S +wildfowl/M +wilding/M +wildlife/M +wildness/MS +Wildon/M +wild/SPGTYRD +wile/DSMG +Wileen/M +Wilek/M +Wiley/M +Wilford/M +Wilfred/M +Wilfredo/M +Wilfrid/M +wilfulness's +Wilhelmina/M +Wilhelmine/M +Wilhelm/M +Wilie/M +wilily +wiliness/MS +Wilkerson/M +Wilkes/M +Wilkins/M +Wilkinson/M +Willabella/M +Willa/M +Willamette/M +Willamina/M +Willard/M +Willcox/M +Willdon/M +willed/U +Willem/M +Willemstad/M +willer/M +Willetta/M +Willette/M +Willey/M +willfulness/S +willful/YP +Williamsburg/M +William/SM +Williamson/M +Willied/M +Willie/M +willies +Willi/MS +willinger +willingest +willingness's +willingness/US +willing/UYP +Willisson/M +williwaw/MS +Will/M +Willoughby/M +willower/M +Willow/M +willow/RDMSG +willowy/TR +willpower/MS +will/SGJRD +Willy/SDM +Willyt/M +Wilma/M +Wilmar/M +Wilmer/M +Wilmette/M +Wilmington/M +Wilona/M +Wilone/M +Wilow/M +Wilshire/M +Wilsonian +Wilson/M +wilt/DGS +Wilt/M +Wilton/M +wily/PTR +Wimbledon/M +wimp/GSMD +wimpish +wimple/SDGM +wimpy/RT +wince/SDG +Winchell/M +wincher/M +winchester/M +Winchester/MS +winch/GRSDM +windbag/SM +windblown +windbreak/MZSR +windburn/GSMD +winded +winder/UM +windfall/SM +windflower/MS +Windham/M +Windhoek/M +windily +windiness/SM +winding/MS +windjammer/SM +windlass/GMSD +windless/YP +windmill/GDMS +window/DMGS +windowless +windowpane/SM +Windows +windowsill/SM +windpipe/SM +windproof +windrow/GDMS +wind's +winds/A +windscreen/MS +windshield/SM +windsock/MS +Windsor/MS +windstorm/MS +windsurf/GZJSRD +windswept +windup/MS +wind/USRZG +Windward/M +windward/SY +Windy/M +windy/TPR +wineglass/SM +winegrower/SM +Winehead/M +winemake +winemaster +wine/MS +winery/MS +Winesap/M +wineskin/M +Winfield/M +Winfred/M +Winfrey/M +wingback/M +wingding/MS +wingeing +winger/M +wing/GZRDM +wingless +winglike +wingman +wingmen +wingspan/SM +wingspread/MS +wingtip/S +Winifield/M +Winifred/M +Wini/M +winker/M +wink/GZRDS +winking/U +Winkle/M +winkle/SDGM +winless +Win/M +winnable +Winnah/M +Winna/M +Winnebago/M +Winne/M +winner/MS +Winnetka/M +Winnie/M +Winnifred/M +Winni/M +winning/SY +Winnipeg/M +Winn/M +winnow/SZGRD +Winny/M +Winograd/M +wino/MS +Winonah/M +Winona/M +Winooski/M +Winsborough/M +Winsett/M +Winslow/M +winsomeness/SM +winsome/PRTY +Winston/M +winterer/M +wintergreen/SM +winterize/GSD +Winters +winter/SGRDYM +wintertime/MS +Winthrop/M +wintriness/M +wintry/TPR +winy/RT +win/ZGDRS +wipe/DRSZG +wiper/M +wirehair/MS +wireless/MSDG +wireman/M +wiremen +wirer/M +wire's +wires/A +wiretap/MS +wiretapped +wiretapper/SM +wiretapping +wire/UDA +wiriness/S +wiring/SM +wiry/RTP +Wisc +Wisconsinite/SM +Wisconsin/M +wisdoms +wisdom/UM +wiseacre/MS +wisecrack/GMRDS +wised +wisely/TR +Wise/M +wiseness +wisenheimer/M +Wisenheimer/M +wises +wise/URTY +wishbone/MS +wishfulness/M +wishful/PY +wish/GZSRD +wishy +wising +Wis/M +wisp/MDGS +wispy/RT +wist/DGS +wisteria/SM +wistfulness/MS +wistful/PY +witchcraft/SM +witchdoctor/S +witchery/MS +witch/SDMG +withal +withdrawal/MS +withdrawer/M +withdrawnness/M +withdrawn/P +withdraw/RGS +withdrew +withe/M +wither/GDJ +withering/Y +Witherspoon/M +with/GSRDZ +withheld +withholder/M +withhold/SJGZR +within/S +without/S +withs +withstand/SG +withstood +witlessness/MS +witless/PY +Wit/M +witness/DSMG +witnessed/U +wit/PSM +witted +witter/G +Wittgenstein/M +witticism/MS +Wittie/M +wittily +wittiness/SM +wittings +witting/UY +Witt/M +Witty/M +witty/RTP +Witwatersrand/M +wive/GDS +wives/M +wizard/MYS +wizardry/MS +wizen/D +wiz's +wk/Y +Wm/M +WNW +woad/MS +wobble/GSRD +wobbler/M +wobbliness/S +wobbly/PRST +Wodehouse/M +woebegone/P +woefuller +woefullest +woefulness/SM +woeful/PY +woe/PSM +woke +wok/SMN +Wolcott/M +wold/MS +Wolfe/M +wolfer/M +Wolff/M +Wolfgang/M +wolfhound/MS +Wolfie/M +wolfishness/M +wolfish/YP +Wolf/M +wolfram/MS +wolf/RDMGS +Wolfy/M +Wollongong/M +Wollstonecraft/M +Wolsey/M +Wolverhampton/M +wolverine/SM +Wolverton/M +wolves/M +woman/GSMYD +womanhood/MS +womanish +womanized/U +womanizer/M +womanize/RSDZG +womanizes/U +womankind/M +womanlike +womanliness/SM +womanly/PRT +wombat/MS +womb/SDM +womenfolk/MS +women/MS +wonderer/M +wonderfulness/SM +wonderful/PY +wonder/GLRDMS +wondering/Y +wonderland/SM +wonderment/SM +wondrousness/M +wondrous/YP +Wong/M +wonk/S +wonky/RT +wonned +wonning +won/SG +won't +wontedness/MU +wonted/PUY +wont/SGMD +Woodard/M +Woodberry/M +woodbine/SM +woodblock/S +Woodbury/M +woodcarver/S +woodcarving/MS +woodchopper/SM +woodchuck/MS +woodcock/MS +woodcraft/MS +woodcut/SM +woodcutter/MS +woodcutting/MS +woodenness/SM +wooden/TPRY +woodgrain/G +woodhen +Woodhull/M +Woodie/M +woodiness/MS +woodland/SRM +Woodlawn/M +woodlice +woodlot/S +woodlouse/M +woodman/M +Woodman/M +woodmen +woodpecker/SM +woodpile/SM +Woodrow/M +woodruff/M +woo/DRZGS +woodshedded +woodshedding +woodshed/SM +woodside +Wood/SM +woodsman/M +woodsmen +wood/SMNDG +woodsmoke +woods/R +Woodstock/M +woodsy/TRP +Woodward/MS +woodwind/S +woodworker/M +woodworking/M +woodwork/SMRGZJ +woodworm/M +woodyard +Woody/M +woody/TPSR +woofer/M +woof/SRDMGZ +Woolf/M +woolgatherer/M +woolgathering/M +woolgather/RGJ +woolliness/MS +woolly/RSPT +Woolongong/M +wool/SMYNDX +Woolworth/M +Woonsocket/M +Wooster/M +Wooten/M +woozily +wooziness/MS +woozy/RTP +wop/MS +Worcestershire/M +Worcester/SM +wordage/SM +word/AGSJD +wordbook/MS +Worden/M +wordily +wordiness/SM +wording/AM +wordless/Y +wordplay/SM +word's +Wordsworth/M +wordy/TPR +wore +workability's +workability/U +workableness/M +workable/U +workably +workaday +workaholic/S +workaround/SM +workbench/MS +workbook/SM +workday/SM +worked/A +worker/M +workfare/S +workforce/S +work/GZJSRDMB +workhorse/MS +workhouse/SM +working/M +workingman/M +workingmen +workingwoman/M +workingwomen +workload/SM +workmanlike +Workman/M +workman/MY +workmanship/MS +workmate/S +workmen/M +workout/SM +workpiece/SM +workplace/SM +workroom/MS +works/A +worksheet/S +workshop/MS +workspace/S +workstation/MS +worktable/SM +worktop/S +workup/S +workweek/SM +worldlier +worldliest +worldliness/USM +worldly/UP +worldwide +world/ZSYM +wormer/M +wormhole/SM +worm/SGMRD +Worms/M +wormwood/SM +wormy/RT +worn/U +worried/Y +worrier/M +worriment/MS +worrisome/YP +worrying/Y +worrywart/SM +worry/ZGSRD +worsen/GSD +worse/SR +worshiper/M +worshipfulness/M +worshipful/YP +worship/ZDRGS +worsted/MS +worst/SGD +worth/DG +worthily/U +worthinesses/U +worthiness/SM +Worthington/M +worthlessness/SM +worthless/PY +Worth/M +worths +worthwhile/P +Worthy/M +worthy/UTSRP +wort/SM +wost +wot +Wotan/M +wouldn't +would/S +wouldst +would've +wound/AU +wounded/U +wounder +wounding +wounds +wound's +wove/A +woven/AU +wovens +wow/SDG +Wozniak/M +WP +wpm +wrack/SGMD +wraith/M +wraiths +Wrangell/M +wrangle/GZDRS +wrangler/M +wraparound/S +wrap/MS +wrapped/U +wrapper/MS +wrapping/SM +wraps/U +wrasse/SM +wrathful/YP +wrath/GDM +wraths +wreak/SDG +wreathe +wreath/GMDS +wreaths +wreckage/MS +wrecker/M +wreck/GZRDS +wrenching/Y +wrench/MDSG +wren/MS +Wren/MS +Wrennie/M +wrester/M +wrestle/JGZDRS +wrestler/M +wrestling/M +wrest/SRDG +wretchedness/SM +wretched/TPYR +wretch/MDS +wriggle/DRSGZ +wriggler/M +wriggly/RT +Wright/M +wright/MS +Wrigley/M +wringer/M +wring/GZRS +wrinkled/U +wrinkle/GMDS +wrinkly/RST +wristband/SM +wrist/MS +wristwatch/MS +writable/U +write/ASBRJG +writer/MA +writeup +writhe/SDG +writing/M +writ/MRSBJGZ +written/UA +Wroclaw +wrongdoer/MS +wrongdoing/MS +wronger/M +wrongfulness/MS +wrongful/PY +wrongheadedness/MS +wrongheaded/PY +wrongness/MS +wrong/PSGTYRD +Wronskian/M +wrote/A +wroth +wrought/I +wrung +wry/DSGY +wryer +wryest +wryness/SM +W's +WSW +wt +W/T +Wuhan/M +Wu/M +Wurlitzer/M +wurst/SM +wuss/S +wussy/TRS +WV +WW +WWI +WWII +WWW +w/XTJGV +WY +Wyatan/M +Wyatt/M +Wycherley/M +Wycliffe/M +Wye/MH +Wyeth/M +Wylie/M +Wylma/M +Wyman/M +Wyndham/M +Wyn/M +Wynne/M +Wynnie/M +Wynn/M +Wynny/M +Wyo/M +Wyomingite/SM +Wyoming/M +WYSIWYG +x +X +Xanadu +Xanthippe/M +Xanthus/M +Xaviera/M +Xavier/M +Xebec/M +Xe/M +XEmacs/M +Xenakis/M +Xena/M +Xenia/M +Xenix/M +xenon/SM +xenophobe/MS +xenophobia/SM +xenophobic +Xenophon/M +Xenos +xerographic +xerography/MS +xerox/GSD +Xerox/MGSD +Xerxes/M +Xever/M +Xhosa/M +Xi'an +Xian/S +Xiaoping/M +xii +xiii +xi/M +Ximenes/M +Ximenez/M +Ximian/SM +Xingu/M +xis +xiv +xix +XL +Xmas/SM +XML +Xochipilli/M +XOR +X's +XS +xterm/M +Xuzhou/M +xv +xvi +xvii +xviii +xx +XXL +xylem/SM +xylene/M +Xylia/M +Xylina/M +xylophone/MS +xylophonist/S +Xymenes/M +Y +ya +yacc/M +Yacc/M +yachting/M +yachtsman +yachtsmen +yachtswoman/M +yachtswomen +yacht/ZGJSDM +yack's +Yagi/M +yahoo/MS +Yahweh/M +Yakima/M +yakked +yakking +yak/SM +Yakut/M +Yakutsk/M +Yale/M +Yalies/M +y'all +Yalonda/M +Yalow/M +Yalta/M +Yalu/M +Yamaha/M +yammer/RDZGS +Yamoussoukro +yam/SM +Yanaton/M +Yance/M +Yancey/M +Yancy/M +Yang/M +Yangon +yang/S +Yangtze/M +Yankee/SM +yank/GDS +Yank/MS +Yaounde/M +yapped +yapping +yap/S +Yaqui/M +yardage/SM +yardarm/SM +Yardley/M +Yard/M +yardman/M +yardmaster/S +yardmen +yard/SMDG +yardstick/SM +yarmulke/SM +yarn/SGDM +Yaroslavl/M +yarrow/MS +Yasmeen/M +Yasmin/M +Yates +yaw/DSG +yawl/SGMD +yawner/M +yawn/GZSDR +yawning/Y +Yb/M +yd +Yeager/M +yeah +yeahs +yearbook/SM +yearling/M +yearlong +yearly/S +yearner/M +yearning/MY +yearn/JSGRD +year/YMS +yea/S +yeastiness/M +yeast/SGDM +yeasty/PTR +Yeats/M +yecch +yegg/MS +Yehudi/M +Yehudit/M +Yekaterinburg/M +Yelena/M +yell/GSDR +yellowhammers +yellowish +Yellowknife/M +yellowness/MS +Yellowstone/M +yellow/TGPSRDM +yellowy +yelper/M +yelp/GSDR +Yeltsin +Yemeni/S +Yemenite/SM +Yemen/M +Yenisei/M +yenned +yenning +yen/SM +Yentl/M +yeomanry/MS +yeoman/YM +yeomen +yep/S +Yerevan/M +Yerkes/M +Yesenia/M +yeshiva/SM +yes/S +yessed +yessing +yesterday/MS +yesteryear/SM +yet +ye/T +yeti/SM +Yetta/M +Yettie/M +Yetty/M +Yevette/M +Yevtushenko/M +yew/SM +y/F +Yggdrasil/M +Yiddish/M +yielded/U +yielding/U +yield/JGRDS +yikes +yin/S +yipe/S +yipped +yippee/S +yipping +yip/S +YMCA +YMHA +Ymir/M +YMMV +Ynes/M +Ynez/M +yo +Yoda/M +yodeler/M +yodel/SZRDG +Yoder/M +yoga/MS +yoghurt's +yogi/MS +yogurt/SM +yoke/DSMG +yoked/U +yokel/SM +yokes/U +yoking/U +Yoknapatawpha/M +Yokohama/M +Yoko/M +Yolanda/M +Yolande/M +Yolane/M +Yolanthe/M +yolk/DMS +yon +yonder +Yong/M +Yonkers/M +yore/MS +Yorgo/MS +Yorick/M +Yorke/M +Yorker/M +yorker/SM +Yorkshire/MS +Yorktown/M +York/ZRMS +Yoruba/M +Yosemite/M +Yoshiko/M +Yoshi/M +Yost/M +you'd +you'll +youngish +Young/M +youngster/MS +Youngstown/M +young/TRYP +you're +your/MS +yourself +yourselves +you/SH +youthfulness/SM +youthful/YP +youths +youth/SM +you've +Yovonnda/M +yow +yowl/GSD +Ypres/M +Ypsilanti/M +yr +yrs +Y's +Ysabel/M +YT +ytterbium/MS +yttrium/SM +yuan/M +Yuba/M +Yucatan +yucca/MS +yuck/GSD +yucky/RT +Yugo/M +Yugoslavia/M +Yugoslavian/S +Yugoslav/M +Yuh/M +Yuki/M +yukked +yukking +Yukon/M +yuk/S +yule/MS +Yule/MS +yuletide/MS +Yuletide/S +Yul/M +Yulma/M +yum +Yuma/M +yummy/TRS +Yunnan/M +yuppie/SM +yup/S +Yurik/M +Yuri/M +yurt/SM +Yves/M +Yvette/M +Yvon/M +Yvonne/M +Yvor/M +YWCA +YWHA +Zabrina/M +Zaccaria/M +Zachariah/M +Zacharia/SM +Zacharie/M +Zachary/M +Zacherie/M +Zachery/M +Zach/M +Zackariah/M +Zack/M +zagging +Zagreb/M +zag/S +Zahara/M +Zaire/M +Zairian/S +Zak/M +Zambezi/M +Zambia/M +Zambian/S +Zamboni +Zamenhof/M +Zamora/M +Zandra/M +Zane/M +Zaneta/M +zaniness/MS +Zan/M +Zanuck/M +zany/PDSRTG +Zanzibar/M +Zapata/M +Zaporozhye/M +Zappa/M +zapped +zapper/S +zapping +zap/S +Zarah/M +Zara/M +Zared/M +Zaria/M +Zarla/M +Zealand/M +zeal/MS +zealot/MS +zealotry/MS +zealousness/SM +zealous/YP +Zea/M +Zebadiah/M +Zebedee/M +Zeb/M +zebra/MS +Zebulen/M +Zebulon/M +zebu/SM +Zechariah/M +Zedekiah/M +Zed/M +Zedong/M +zed/SM +Zeffirelli/M +Zeiss/M +zeitgeist/S +Zeke/M +Zelda/M +Zelig/M +Zellerbach/M +Zelma/M +Zena/M +Zenger/M +Zenia/M +zenith/M +zeniths +Zen/M +Zennist/M +Zeno/M +Zephaniah/M +zephyr/MS +Zephyrus/M +Zeppelin's +zeppelin/SM +Zerk/M +zeroed/M +zeroing/M +zero/SDHMG +zestfulness/MS +zestful/YP +zest/MDSG +zesty/RT +zeta/SM +zeugma/M +Zeus/M +Zhdanov/M +Zhengzhou +Zhivago/M +Zhukov/M +Zia/M +Zibo/M +Ziegfeld/MS +Ziegler/M +zig +zigged +zigging +Ziggy/M +zigzagged +zigzagger +zigzagging +zigzag/MS +zilch/S +zillion/MS +Zilvia/M +Zimbabwean/S +Zimbabwe/M +Zimmerman/M +zincked +zincking +zinc/MS +zing/GZDRM +zingy/RT +zinnia/SM +Zionism/MS +Zionist/MS +Zion/SM +zip/MS +zipped/U +zipper/GSDM +zipping/U +zippy/RT +zips/U +zirconium/MS +zircon/SM +Zita/M +Zitella/M +zither/SM +zit/S +zloty/SM +Zn/M +zodiacal +zodiac/SM +Zoe/M +Zola/M +Zollie/M +Zolly/M +Zomba/M +zombie/SM +zombi's +zonal/Y +Zonda/M +Zondra/M +zoned/A +zone/MYDSRJG +zones/A +zoning/A +zonked +Zonnya/M +zookeepers +zoological/Y +zoologist/SM +zoology/MS +zoom/DGS +zoophyte/SM +zoophytic +zoo/SM +Zorah/M +Zora/M +Zorana/M +Zorina/M +Zorine/M +Zorn/M +Zoroaster/M +Zoroastrianism/MS +Zoroastrian/S +Zorro/M +Zosma/M +zounds/S +Zr/M +Zs +Zsazsa/M +Zsigmondy/M +z/TGJ +Zubenelgenubi/M +Zubeneschamali/M +zucchini/SM +Zukor/M +Zulema/M +Zululand/M +Zulu/MS +Zuni/S +Zürich/M +Zuzana/M +zwieback/MS +Zwingli/M +Zworykin/M +Z/X +zydeco/S +zygote/SM +zygotic +zymurgy/S diff --git a/plugins/SpellChecker/ZIP/Icons/flags.dll b/plugins/SpellChecker/ZIP/Icons/flags.dll new file mode 100644 index 0000000000..6c99a02f40 Binary files /dev/null and b/plugins/SpellChecker/ZIP/Icons/flags.dll differ diff --git a/plugins/SpellChecker/ZIP/doit.bat b/plugins/SpellChecker/ZIP/doit.bat new file mode 100644 index 0000000000..73e7fd29d0 --- /dev/null +++ b/plugins/SpellChecker/ZIP/doit.bat @@ -0,0 +1,141 @@ +rem @echo off + +rem Batch file to build and upload files +rem +rem TODO: Integration with FL + +set name=spellchecker +set version=0.2.6.0 + +rem To upload, this var must be set here or in other batch +rem set ftp=ftp://:@/ + +echo Building %name% ... + +rem msdev ..\%name%.dsp /MAKE "%name% - Win32 Release" /REBUILD +rem msdev ..\%name%.dsp /MAKE "%name% - Win32 Unicode Release" /REBUILD + +echo Generating files for %name% ... + +del *.zip +del *.dll +del *.pdb +rd /S /Q Plugins +rd /S /Q Docs +rd /S /Q src + +copy "..\bin\Win32\Release\%name%.pdb" +copy "..\bin\Win32\Unicode Release\%name%W.pdb" +copy "..\bin\x64\Unicode Release\%name%64.pdb" +copy ..\Docs\%name%_changelog.txt +copy ..\Docs\%name%_version.txt +copy ..\Docs\%name%_readme.txt +mkdir Docs +cd Docs +del /Q *.* +copy ..\..\Docs\%name%_readme.txt +copy ..\..\Docs\langpack_%name%.txt +rem copy ..\..\Docs\helppack_%name%.txt +copy ..\..\m_%name%.h +cd .. +mkdir src +cd src +mkdir %name% +cd %name% +del /Q *.* +copy ..\..\..\*.h +copy ..\..\..\*.cpp +copy ..\..\..\*.rc +copy ..\..\..\*.dsp +copy ..\..\..\*.dsw +mkdir res +cd res +del /Q *.* +copy ..\..\..\..\res\*.* +cd .. +mkdir sdk +cd sdk +del /Q *.* +copy ..\..\..\..\sdk\*.* +cd .. +mkdir hunspell +cd hunspell +del /Q *.* +copy ..\..\..\..\hunspell\*.* +cd .. +mkdir Docs +cd Docs +del /Q *.* +copy ..\..\..\..\Docs\*.* +cd .. +cd .. +mkdir utils +cd utils +del /Q *.* +copy ..\..\..\..\utils\*.* +cd .. +cd .. + +mkdir Plugins +cd Plugins +del /Q *.dll +copy "..\..\bin\Win32\Release\%name%.dll" +cd .. + +zip -r -q %name%.%version%.zip Plugins Docs +copy %name%.%version%.zip %name%.zip +zip -r -q %name%.FL.zip Plugins Docs Dictionaries Icons + +cd Plugins +del /Q *.dll +copy "..\..\bin\Win32\Unicode Release\%name%W.dll" +cd .. + +zip -r -q %name%W.%version%.zip Plugins Docs +copy %name%W.%version%.zip %name%W.zip +zip -r -q %name%W.FL.zip Plugins Docs Dictionaries Icons + + +cd Plugins +del /Q *.dll +copy "..\..\bin\x64\Unicode Release\%name%64.dll" +cd .. + +zip -r -q %name%64.%version%.zip Plugins Docs +copy %name%64.%version%.zip %name%64.zip +zip -r -q %name%64.FL.zip Plugins Docs Dictionaries Icons + + +zip -r -q %name%.pdb.%version%.zip %name%.pdb +copy %name%.pdb.%version%.zip %name%.pdb.zip +zip -r -q %name%W.pdb.%version%.zip %name%W.pdb +copy %name%W.pdb.%version%.zip %name%W.pdb.zip +zip -r -q %name%64.pdb.%version%.zip %name%64.pdb +copy %name%64.pdb.%version%.zip %name%64.pdb.zip + +zip -r -q %name%_src.zip src\*.* + +del *.dll +del *.PDB + +rd /S /Q Plugins +rd /S /Q Docs +rd /S /Q src + +if "%ftp%"=="" GOTO END + +echo Going to upload files... +pause + +"C:\Program Files\FileZilla\FileZilla.exe" -u .\%name%.zip %ftp% -overwrite -close +"C:\Program Files\FileZilla\FileZilla.exe" -u .\%name%W.zip %ftp% -overwrite -close +"C:\Program Files\FileZilla\FileZilla.exe" -u .\%name%.pdb.zip %ftp% -overwrite -close +"C:\Program Files\FileZilla\FileZilla.exe" -u .\%name%W.pdb.zip %ftp% -overwrite -close +"C:\Program Files\FileZilla\FileZilla.exe" -u .\%name%_changelog.txt %ftp% -overwrite -close +"C:\Program Files\FileZilla\FileZilla.exe" -u .\%name%_version.txt %ftp% -overwrite -close +"C:\Program Files\FileZilla\FileZilla.exe" -u .\%name%_readme.txt %ftp% -overwrite -close +rem "C:\Program Files\FileZilla\FileZilla.exe" -u .\srmm.spellchecker.patch %ftp% -overwrite -close + +:END + +echo Done. diff --git a/plugins/SpellChecker/ZIP/zip.exe b/plugins/SpellChecker/ZIP/zip.exe new file mode 100644 index 0000000000..65de183062 Binary files /dev/null and b/plugins/SpellChecker/ZIP/zip.exe differ diff --git a/plugins/SpellChecker/ardialog.cpp b/plugins/SpellChecker/ardialog.cpp new file mode 100644 index 0000000000..dc8a24cd43 --- /dev/null +++ b/plugins/SpellChecker/ardialog.cpp @@ -0,0 +1,316 @@ +/* +Copyright (C) 2006-2010 Ricardo Pescuma Domenecci + +This 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 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 file; see the file license.txt. If +not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. +*/ + + +#include "commons.h" + + +static LRESULT CALLBACK EditProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); +static INT_PTR CALLBACK AddReplacementDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); + + +struct Data +{ + Dictionary *dict; + tstring find; + tstring replace; + BOOL useVariables; + + BOOL modal; + BOOL findReadOnly; + + AutoReplaceDialogCallback callback; + void *param; + + WNDPROC old_edit_proc; +}; + +BOOL ShowAutoReplaceDialog(HWND parent, BOOL modal, + Dictionary *dict, const TCHAR *find, const TCHAR *replace, BOOL useVariables, + BOOL findReadOnly, AutoReplaceDialogCallback callback, void *param) +{ + Data *data = new Data(); + data->dict = dict; + data->useVariables = useVariables; + data->modal = modal; + data->findReadOnly = findReadOnly; + data->callback = callback; + data->param = param; + + if (find != NULL) + data->find = find; + + if (replace != NULL) + data->replace = replace; + + if (modal) + { + return DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_ADD_REPLACEMENT), parent, + AddReplacementDlgProc, (LPARAM) data); + } + else + { + HWND hwnd = CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_ADD_REPLACEMENT), parent, + AddReplacementDlgProc, (LPARAM) data); + SetForegroundWindow(hwnd); + SetFocus(hwnd); + SetFocus(GetDlgItem(hwnd, IDC_NEW)); + ShowWindow(hwnd, SW_SHOW); + return TRUE; + } +} + + +static LRESULT CALLBACK OnlyCharsEditProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) +{ + Data *data = (Data *) GetWindowLongPtr(hwnd, GWLP_USERDATA); + + switch(msg) + { + case WM_CHAR: + { + if (wParam == VK_BACK) + break; + if (lParam & (1 << 28)) // ALT key + break; + if (GetKeyState(VK_CONTROL) & 0x8000) // CTRL key + break; + + TCHAR c = (TCHAR) wParam; + if (!data->dict->autoReplace->isWordChar(c)) + return 1; + + TCHAR tmp[2] = { c, 0 }; + CharLower(tmp); + wParam = tmp[0]; + + break; + } + } + + LRESULT ret = CallWindowProc(data->old_edit_proc, hwnd, msg, wParam, lParam); + + switch(msg) + { + case EM_PASTESPECIAL: + case WM_PASTE: + { + TCHAR text[256]; + GetWindowText(hwnd, text, MAX_REGS(text)); + + scoped_free dest = data->dict->autoReplace->filterText(text); + SetWindowText(hwnd, dest); + break; + } + } + + return ret; + +} + + +static BOOL CenterParent(HWND hwnd) +{ + HWND hwndParent = GetParent(hwnd); + if (hwndParent == NULL) + return FALSE; + + RECT rect, rectP; + GetWindowRect(hwnd, &rect); + GetWindowRect(hwndParent, &rectP); + + int width = rect.right - rect.left; + int height = rect.bottom - rect.top; + + int x = ((rectP.right-rectP.left) - width) / 2 + rectP.left; + int y = ((rectP.bottom-rectP.top) - height) / 2 + rectP.top; + + int screenwidth = GetSystemMetrics(SM_CXSCREEN); + int screenheight = GetSystemMetrics(SM_CYSCREEN); + + if(x + width > screenwidth) x = screenwidth - width; + if(y + height > screenheight) y = screenheight - height; + if(x < 0) x = 0; + if(y < 0) y = 0; + + MoveWindow(hwnd, x, y, width, height, FALSE); + + return TRUE; +} + +static void Close(HWND hwndDlg, int ret) +{ + Data *data = (Data *) GetWindowLongPtr(hwndDlg, GWLP_USERDATA); + + if (!ret) + { + data->callback(TRUE, data->dict, + data->find.c_str(), data->replace.c_str(), data->useVariables, + data->find.c_str(), data->param); + } + + SetWindowLongPtr(GetDlgItem(hwndDlg, IDC_OLD), GWLP_WNDPROC, (LONG_PTR) data->old_edit_proc); + data->old_edit_proc = NULL; + + if (data->modal) + EndDialog(hwndDlg, ret); + else + DestroyWindow(hwndDlg); + + delete data; +} + +static INT_PTR CALLBACK AddReplacementDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) +{ + switch (msg) + { + case WM_INITDIALOG: + { + TranslateDialogDefault(hwndDlg); + + Data *data = (Data *) lParam; + SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR) data); + + SetWindowLongPtr(GetDlgItem(hwndDlg, IDC_OLD), GWLP_USERDATA, (LONG_PTR) data); + data->old_edit_proc = (WNDPROC) SetWindowLongPtr(GetDlgItem(hwndDlg, IDC_OLD), GWLP_WNDPROC, + (LONG_PTR) OnlyCharsEditProc); + + HICON hIcon = IcoLib_LoadIcon("spellchecker_enabled"); + SendMessage(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM) hIcon); + IcoLib_ReleaseIcon(hIcon); + + SendDlgItemMessage(hwndDlg, IDC_OLD, EM_LIMITTEXT, 256, 0); + SendDlgItemMessage(hwndDlg, IDC_NEW, EM_LIMITTEXT, 256, 0); + + if (!data->find.empty()) + { + scoped_free tmp = data->dict->autoReplace->filterText(data->find.c_str()); + SetDlgItemText(hwndDlg, IDC_OLD, tmp); + } + if (!data->replace.empty()) + SetDlgItemText(hwndDlg, IDC_NEW, data->replace.c_str()); + + CheckDlgButton(hwndDlg, IDC_VARIABLES, data->useVariables ? BST_CHECKED : BST_UNCHECKED); + + if (data->findReadOnly) + { + SendDlgItemMessage(hwndDlg, IDC_OLD, EM_SETREADONLY, TRUE, 0); + EnableWindow(GetDlgItem(hwndDlg, IDC_OLD_PS), FALSE); + } + + if (!variables_enabled) + { + ShowWindow(GetDlgItem(hwndDlg, IDC_VARIABLES), FALSE); + ShowWindow(GetDlgItem(hwndDlg, IDC_VAR_HELP), FALSE); + + RECT rc_old; + GetWindowRect(GetDlgItem(hwndDlg, IDC_OLD), &rc_old); + RECT rc_new; + GetWindowRect(GetDlgItem(hwndDlg, IDC_NEW), &rc_new); + rc_new.right = rc_old.right; + + SetWindowPos(GetDlgItem(hwndDlg, IDC_NEW), NULL, 0, 0, + rc_new.right - rc_new.left, rc_new.bottom - rc_new.top, + SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOOWNERZORDER | SWP_NOREDRAW | SWP_NOZORDER); + } + else + { + variables_skin_helpbutton(hwndDlg, IDC_VAR_HELP); + EnableWindow(GetDlgItem(hwndDlg, IDC_VAR_HELP), IsDlgButtonChecked(hwndDlg, IDC_VARIABLES)); + } + + CenterParent(hwndDlg); + + return TRUE; + } + + case WM_COMMAND: + switch(wParam) + { + case IDOK: + { + Data *data = (Data *) GetWindowLongPtr(hwndDlg, GWLP_USERDATA); + + TCHAR find[256]; + if (data->findReadOnly) + { + lstrcpyn(find, data->find.c_str(), MAX_REGS(find)); + } + else + { + GetDlgItemText(hwndDlg, IDC_OLD, find, MAX_REGS(find)); + lstrtrim(find); + } + + TCHAR replace[256]; + GetDlgItemText(hwndDlg, IDC_NEW, replace, MAX_REGS(replace)); + lstrtrim(replace); + + if (!data->findReadOnly && find[0] == 0) + { + MessageBox(hwndDlg, TranslateT("The wrong word can't be empty!"), TranslateT("Wrong Correction"), + MB_OK | MB_ICONERROR); + } + else if (replace[0] == 0) + { + MessageBox(hwndDlg, TranslateT("The correction can't be empty!"), TranslateT("Wrong Correction"), + MB_OK | MB_ICONERROR); + } + else if (_tcscmp(find, replace) == 0) + { + MessageBox(hwndDlg, TranslateT("The correction can't be equal to the wrong word!"), TranslateT("Wrong Correction"), + MB_OK | MB_ICONERROR); + } + else + { + data->callback(FALSE, data->dict, + find, replace, IsDlgButtonChecked(hwndDlg, IDC_VARIABLES), + data->find.c_str(), data->param); + Close(hwndDlg, 1); + } + + break; + } + case IDCANCEL: + { + Close(hwndDlg, 0); + break; + } + case IDC_VARIABLES: + { + EnableWindow(GetDlgItem(hwndDlg, IDC_VAR_HELP), IsDlgButtonChecked(hwndDlg, IDC_VARIABLES)); + break; + } + case IDC_VAR_HELP: + { + variables_showhelp(hwndDlg, IDC_NEW, VHF_FULLDLG, NULL, "The wrong word typed by the user"); + break; + } + } + break; + + case WM_CLOSE: + { + Close(hwndDlg, 0); + break; + } + } + + return FALSE; +} diff --git a/plugins/SpellChecker/ardialog.h b/plugins/SpellChecker/ardialog.h new file mode 100644 index 0000000000..83f97c6026 --- /dev/null +++ b/plugins/SpellChecker/ardialog.h @@ -0,0 +1,33 @@ +/* +Copyright (C) 2009-2010 Ricardo Pescuma Domenecci + +This 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 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 file; see the file license.txt. If +not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. +*/ + +#ifndef __ARDIALOG_H__ +# define __ARDIALOG_H__ + + +typedef void (*AutoReplaceDialogCallback)(BOOL canceled, Dictionary *dict, + const TCHAR *find, const TCHAR *replace, BOOL useVariables, + const TCHAR *original_find, void *param); + +BOOL ShowAutoReplaceDialog(HWND parent, BOOL modal, + Dictionary *dict, const TCHAR *find, const TCHAR *replace, BOOL useVariables, + BOOL findReadOnly, AutoReplaceDialogCallback callback, void *param); + + +#endif // __ARDIALOG_H__ diff --git a/plugins/SpellChecker/autoreplace.cpp b/plugins/SpellChecker/autoreplace.cpp new file mode 100644 index 0000000000..bf72f46fd7 --- /dev/null +++ b/plugins/SpellChecker/autoreplace.cpp @@ -0,0 +1,229 @@ +/* +Copyright (C) 2009-2010 Ricardo Pescuma Domenecci + +This 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 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 file; see the file license.txt. If +not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. +*/ + + +#include "commons.h" + + +AutoReplacement::AutoReplacement() + : useVariables(FALSE) +{ +} + +AutoReplacement::AutoReplacement(const TCHAR *replace, BOOL useVariables) + : replace(replace), useVariables(useVariables) +{ +} + + +AutoReplaceMap::AutoReplaceMap(TCHAR *aFilename, Dictionary *dict) +{ + this->dict = dict; + lstrcpyn(filename, aFilename, MAX_REGS(filename)); + loadAutoReplaceMap(); +} + +void AutoReplaceMap::loadAutoReplaceMap() +{ + FILE *file = _tfopen(filename, _T("rb")); + if (file == NULL) + return; + + char tmp[1024]; + char c; + int pos = 0; + while((c = fgetc(file)) != EOF) + { + if (c == '\n' || c == '\r' || pos >= MAX_REGS(tmp) - 1) + { + if (pos > 0) + { + tmp[pos] = '\0'; + + // Get from + BOOL useVars; + char *p; + if ((p = strstr(tmp, "->")) != NULL) + { + *p = '\0'; + p += 2; + useVars = FALSE; + } + else if ((p = strstr(tmp, "-V>")) != NULL) + { + *p = '\0'; + p += 3; + useVars = TRUE; + } + + if (p != NULL) + { + Utf8ToTchar find(tmp); + Utf8ToTchar replace(p); + + lstrtrim(find); + lstrtrim(replace); + + if (find[0] != 0 && replace[0] != 0) + replacements[find.get()] = AutoReplacement(replace, useVars); + } + } + + pos = 0; + } + else + { + tmp[pos] = c; + pos ++; + } + } + fclose(file); +} + +void AutoReplaceMap::writeAutoReplaceMap() +{ + // Create path + TCHAR *p = _tcsrchr(filename, _T('\\')); + if (p != NULL) + { + *p = 0; + CreatePath(filename); + *p = _T('\\'); + } + + // Write it + FILE *file = _tfopen(filename, _T("wb")); + if (file != NULL) + { + map::iterator it = replacements.begin(); + for(; it != replacements.end(); it++) + { + AutoReplacement &ar = it->second; + + TcharToUtf8 find(it->first.c_str()); + TcharToUtf8 replace(ar.replace.c_str()); + + if (ar.useVariables) + fprintf(file, "%s-V>%s\n", (const char *)find, (const char *)replace); + else + fprintf(file, "%s->%s\n", (const char *)find, (const char *)replace); + } + fclose(file); + } +} + + +BOOL AutoReplaceMap::isWordChar(TCHAR c) +{ + if (IsNumber(c)) + return TRUE; + + if (_tcschr(_T("-_.!@#$%&*()[]{}<>:?/\\=+"), c) != NULL) + return TRUE; + + return dict->isWordChar(c); +} + + +TCHAR * AutoReplaceMap::autoReplace(const TCHAR * word) +{ + scoped_free from = _tcslwr(_tcsdup(word)); + + if (replacements.find(from.get()) == replacements.end()) + return NULL; + + AutoReplacement &ar = replacements[from.get()]; + + TCHAR *to; + if (ar.useVariables) + to = variables_parsedup((TCHAR *) ar.replace.c_str(), (TCHAR *) word, NULL); + else + to = _tcsdup(ar.replace.c_str()); + + // Wich case to use? + size_t len = lstrlen(word); + size_t i; + for (i = 0; i < len; i++) + if (IsCharLower(word[i])) + break; + + if (i <= 0) + { + // All lower + return to; + } + else if (i >= len) + { + // All upper + return CharUpper(to); + } + else + { + // First upper + TCHAR tmp[2]; + tmp[0] = to[0]; + tmp[1] = _T('\0'); + CharUpper(tmp); + to[0] = tmp[0]; + return to; + } +} + +TCHAR * AutoReplaceMap::filterText(const TCHAR *find) +{ + TCHAR *ret = _tcsdup(find); + int len = lstrlen(ret); + int pos = 0; + for(int i = 0; i < len; i++) + if (isWordChar(find[i])) + ret[pos++] = ret[i]; + ret[pos] = 0; + return CharLower(ret); +} + +void AutoReplaceMap::add(const TCHAR * aFrom, const TCHAR * to, BOOL useVariables) +{ + scoped_free from = filterText(aFrom); + + replacements[from.get()] = AutoReplacement(to, useVariables); + + writeAutoReplaceMap(); +} + +void AutoReplaceMap::copyMap(map *replacements) +{ + *replacements = this->replacements; +} + +void AutoReplaceMap::setMap(const map &replacements) +{ + this->replacements.clear(); + + map::const_iterator it = replacements.begin(); + for(; it != replacements.end(); it++) + { + scoped_free from = filterText(it->first.c_str()); + this->replacements[from.get()] = it->second; + } + + writeAutoReplaceMap(); +} + + + diff --git a/plugins/SpellChecker/autoreplace.h b/plugins/SpellChecker/autoreplace.h new file mode 100644 index 0000000000..e7e2efbb55 --- /dev/null +++ b/plugins/SpellChecker/autoreplace.h @@ -0,0 +1,70 @@ +/* +Copyright (C) 2009-2010 Ricardo Pescuma Domenecci + +This 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 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 file; see the file license.txt. If +not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. +*/ + + +#ifndef __AUTOREPLACE_H__ +# define __AUTOREPLACE_H__ + + +struct AutoReplacement +{ + tstring replace; + BOOL useVariables; + + AutoReplacement(); + AutoReplacement(const TCHAR *replace, BOOL useVariables); +}; + + +class Dictionary; + + +class AutoReplaceMap +{ +private: + TCHAR filename[1024]; + Dictionary *dict; + map replacements; + + void loadAutoReplaceMap(); + void writeAutoReplaceMap(); + +public: + AutoReplaceMap(TCHAR *filename, Dictionary *dict); + + TCHAR *filterText(const TCHAR *find); + BOOL isWordChar(TCHAR c); + + /// Return an auto replacement to a word or NULL if none exists. + /// You have to free the item. + TCHAR * autoReplace(const TCHAR * word); + + /// Add a word to the list of auto-replaced words + void add(const TCHAR * from, const TCHAR * to, BOOL useVariables = FALSE); + + /// Make a copy of the auto replace map + void copyMap(map *replacements); + + /// Make a copy of the auto replace map + void setMap(const map &replacements); +}; + + + +#endif // __AUTOREPLACE_H__ diff --git a/plugins/SpellChecker/codepages.cpp b/plugins/SpellChecker/codepages.cpp new file mode 100644 index 0000000000..6441cda1b0 --- /dev/null +++ b/plugins/SpellChecker/codepages.cpp @@ -0,0 +1,307 @@ + +struct { + char *name; + UINT codepage; +} codepages[] = { + { "ISO8859-1", 28591 }, + { "UTF-7", CP_UTF7 }, + { "UTF-8", CP_UTF8 }, + { "UTF7", CP_UTF7 }, + { "UTF8", CP_UTF8 }, + { "ISO8859-2", 28592 }, + { "ISO8859-3", 28593 }, + { "ISO8859-4", 28594 }, + { "ISO8859-5", 28595 }, + { "ISO8859-6", 28596 }, + { "ISO8859-7", 28597 }, + { "ISO8859-8", 28598 }, + { "ISO8859-9", 28599 }, + { "ASMO-708", 708 }, + { "DOS-720", 720 }, + { "iso-8859-6", 28596 }, + { "arabic", 28596 }, + { "csISOLatinArabic", 28596 }, + { "ECMA-114", 28596 }, + { "ISO_8859-6", 28596 }, + { "ISO_8859-6:1987", 28596 }, + { "iso-ir-127", 28596 }, + { "x-mac-arabic", 10004 }, + { "windows-1256", 1256 }, + { "cp1256", 1256 }, + { "ibm775", 775 }, + { "CP500", 775 }, + { "iso-8859-4", 28594 }, + { "csISOLatin4", 28594 }, + { "ISO_8859-4", 28594 }, + { "ISO_8859-4:1988", 28594 }, + { "iso-ir-110", 28594 }, + { "l4", 28594 }, + { "latin4", 28594 }, + { "windows-1257", 1257 }, + { "ibm852", 852 }, + { "cp852", 852 }, + { "iso-8859-2", 28592 }, + { "csISOLatin2", 28592 }, + { "iso_8859-2", 28592 }, + { "iso_8859-2:1987", 28592 }, + { "iso-ir-101", 28592 }, + { "l2", 28592 }, + { "latin2", 28592 }, + { "x-mac-ce", 10029 }, + { "windows-1250", 1250 }, + { "x-cp1250", 1250 }, + { "EUC-CN", 51936 }, + { "x-euc-cn", 51936 }, + { "gb2312", 936 }, + { "chinese", 936 }, + { "CN-GB", 936 }, + { "csGB2312", 936 }, + { "csGB231280", 936 }, + { "csISO58GB231280", 936 }, + { "GB_2312-80", 936 }, + { "GB231280", 936 }, + { "GB2312-80", 936 }, + { "GBK", 936 }, + { "iso-ir-58", 936 }, + { "hz-gb-2312", 52936 }, + { "x-mac-chinesesimp", 10008 }, + { "big5", 950 }, + { "cn-big5", 950 }, + { "csbig5", 950 }, + { "x-x-big5", 950 }, + { "x-Chinese-CNS", 20000 }, + { "x-Chinese-Eten", 20002 }, + { "x-mac-chinesetrad", 10002 }, + { "cp866", 866 }, + { "ibm866", 866 }, + { "iso-8859-5", 28595 }, + { "csISOLatin5", 28595 }, + { "csISOLatinCyrillic", 28595 }, + { "cyrillic", 28595 }, + { "ISO_8859-5", 28595 }, + { "ISO_8859-5:1988", 28595 }, + { "iso-ir-144", 28595 }, + { "l5", 28595 }, + { "KOI8-R", 20866 }, + { "csKOI8R", 20866 }, + { "koi", 20866 }, + { "koi8", 20866 }, + { "koi8r", 20866 }, + { "KOI8-U", 21866 }, + { "koi8-ru", 21866 }, + { "x-mac-cyrillic", 10007 }, + { "windows-1251", 1251 }, + { "Win1251", 1251 }, + { "x-cp1251", 1251 }, + { "x-Europa", 29001 }, + { "x-IA5-German", 20106 }, + { "ibm737", 737 }, + { "iso-8859-7", 28597 }, + { "csISOLatinGreek", 28597 }, + { "ECMA-118", 28597 }, + { "ELOT_928", 28597 }, + { "greek", 28597 }, + { "greek8", 28597 }, + { "ISO_8859-7", 28597 }, + { "ISO_8859-7:1987", 28597 }, + { "iso-ir-126", 28597 }, + { "x-mac-greek", 10006 }, + { "windows-1253", 1253 }, + { "ibm869", 869 }, + { "DOS-862", 862 }, + { "iso-8859-8-i", 38598 }, + { "logical", 38598 }, + { "iso-8859-8", 28598 }, + { "csISOLatinHebrew", 28598 }, + { "hebrew", 28598 }, + { "ISO_8859-8", 28598 }, + { "ISO_8859-8:1988", 28598 }, + { "ISO-8859-8", 28598 }, + { "iso-ir-138", 28598 }, + { "visual", 28598 }, + { "x-mac-hebrew", 10005 }, + { "windows-1255", 1255 }, + { "ISO_8859-8-I", 1255 }, + { "ISO-8859-8", 1255 }, + { "x-EBCDIC-Arabic", 20420 }, + { "x-EBCDIC-CyrillicRussian", 20880 }, + { "x-EBCDIC-CyrillicSerbianBulgarian", 21025 }, + { "x-EBCDIC-DenmarkNorway", 20277 }, + { "x-ebcdic-denmarknorway-euro", 1142 }, + { "x-EBCDIC-FinlandSweden", 20278 }, + { "x-ebcdic-finlandsweden-euro", 1143 }, + { "X-EBCDIC-France", 1143 }, + { "X-EBCDIC-France", 1143 }, + { "x-ebcdic-france-euro", 1147 }, + { "x-EBCDIC-Germany", 20273 }, + { "x-ebcdic-germany-euro", 1141 }, + { "x-EBCDIC-GreekModern", 875 }, + { "x-EBCDIC-Greek", 20423 }, + { "x-EBCDIC-Hebrew", 20424 }, + { "x-EBCDIC-Icelandic", 20871 }, + { "x-ebcdic-icelandic-euro", 1149 }, + { "x-ebcdic-international-euro", 1148 }, + { "x-EBCDIC-Italy", 20280 }, + { "x-ebcdic-italy-euro", 1144 }, + { "x-EBCDIC-JapaneseAndKana", 50930 }, + { "x-EBCDIC-JapaneseAndJapaneseLatin", 50939 }, + { "x-EBCDIC-JapaneseAndUSCanada", 50931 }, + { "x-EBCDIC-JapaneseKatakana", 20290 }, + { "x-EBCDIC-KoreanAndKoreanExtended", 50933 }, + { "x-EBCDIC-KoreanExtended", 20833 }, + { "CP870", 870 }, + { "x-EBCDIC-SimplifiedChinese", 50935 }, + { "X-EBCDIC-Spain", 20284 }, + { "x-ebcdic-spain-euro", 1145 }, + { "x-EBCDIC-Thai", 20838 }, + { "x-EBCDIC-TraditionalChinese", 50937 }, + { "CP1026", 1026 }, + { "x-EBCDIC-Turkish", 20905 }, + { "x-EBCDIC-UK", 20285 }, + { "x-ebcdic-uk-euro", 1146 }, + { "ebcdic-cp-us", 37 }, + { "x-ebcdic-cp-us-euro", 1140 }, + { "ibm861", 861 }, + { "x-mac-icelandic", 10079 }, + { "x-iscii-as", 57006 }, + { "x-iscii-be", 57003 }, + { "x-iscii-de", 57002 }, + { "x-iscii-gu", 57010 }, + { "x-iscii-ka", 57008 }, + { "x-iscii-ma", 57009 }, + { "x-iscii-or", 57007 }, + { "x-iscii-pa", 57011 }, + { "x-iscii-ta", 57004 }, + { "x-iscii-te", 57005 }, + { "euc-jp", 51932 }, + { "csEUCPkdFmtJapanese", 51932 }, + { "Extended_UNIX_Code_Packed_Format_for_Japanese", 51932 }, + { "x-euc", 51932 }, + { "x-euc-jp", 51932 }, + { "iso-2022-jp", 50220 }, + { "iso-2022-jp", 50222 }, + { "_iso-2022-jp$SIO", 50222 }, + { "csISO2022JP", 50221 }, + { "_iso-2022-jp", 50221 }, + { "x-mac-japanese", 10001 }, + { "shift_jis", 932 }, + { "csShiftJIS", 932 }, + { "csWindows31J", 932 }, + { "ms_Kanji", 932 }, + { "shift-jis", 932 }, + { "x-ms-cp932", 932 }, + { "x-sjis", 932 }, + { "ks_c_5601-1987", 949 }, + { "csKSC56011987", 949 }, + { "euc-kr", 949 }, + { "iso-ir-149", 949 }, + { "korean", 949 }, + { "ks_c_5601", 949 }, + { "ks_c_5601_1987", 949 }, + { "ks_c_5601-1989", 949 }, + { "KSC_5601", 949 }, + { "KSC5601", 949 }, + { "euc-kr", 51949 }, + { "csEUCKR", 51949 }, + { "iso-2022-kr", 50225 }, + { "csISO2022KR", 50225 }, + { "Johab", 1361 }, + { "x-mac-korean", 10003 }, + { "iso-8859-3", 28593 }, + { "csISO", 28593 }, + { "Latin3", 28593 }, + { "ISO_8859-3", 28593 }, + { "ISO_8859-3:1988", 28593 }, + { "iso-ir-109", 28593 }, + { "l3", 28593 }, + { "latin3", 28593 }, + { "iso-8859-15", 28605 }, + { "csISO", 28605 }, + { "Latin9", 28605 }, + { "ISO_8859-15", 28605 }, + { "l9", 28605 }, + { "latin9", 28605 }, + { "x-IA5-Norwegian", 20108 }, + { "IBM437", 437 }, + { "437", 437 }, + { "cp437", 437 }, + { "csPC8", 437 }, + { "CodePage437", 437 }, + { "x-IA5-Swedish", 20107 }, + { "windows-874", 874 }, + { "DOS-874", 874 }, + { "iso-8859-11", 874 }, + { "TIS-620", 874 }, + { "ibm857", 857 }, + { "iso-8859-9", 28599 }, + { "csISO", 28599 }, + { "Latin5", 28599 }, + { "ISO_8859-9", 28599 }, + { "ISO_8859-9:1989", 28599 }, + { "iso-ir-148", 28599 }, + { "l5", 28599 }, + { "latin5", 28599 }, + { "x-mac-turkish", 10081 }, + { "windows-1254", 1254 }, + { "ISO_8859-9", 1254 }, + { "ISO_8859-9:1989", 1254 }, + { "iso-8859-9", 1254 }, + { "iso-ir-148", 1254 }, + { "latin5", 1254 }, + { "unicode", 1200 }, + { "utf-16", 1200 }, + { "unicodeFFFE", 1201 }, + { "utf-7", 65000 }, + { "csUnicode11UTF7", 65000 }, + { "unicode-1-1-utf-7", 65000 }, + { "x-unicode-2-0-utf-7", 65000 }, + { "utf-8", 65001 }, + { "unicode-1-1-utf-8", 65001 }, + { "unicode-2-0-utf-8", 65001 }, + { "x-unicode-2-0-utf-8", 65001 }, + { "us-ascii", 20127 }, + { "ANSI_X3.4-1968", 20127 }, + { "ANSI_X3.4-1986", 20127 }, + { "ascii", 20127 }, + { "cp367", 20127 }, + { "csASCII", 20127 }, + { "IBM367", 20127 }, + { "ISO_646.irv:1991", 20127 }, + { "ISO646-US", 20127 }, + { "iso-ir-6us", 20127 }, + { "windows-1258", 1258 }, + { "ibm850", 850 }, + { "x-IA5", 20105 }, + { "iso-8859-1", 28591 }, + { "cp819", 28591 }, + { "csISO", 28591 }, + { "Latin1", 28591 }, + { "ibm819", 28591 }, + { "iso_8859-1", 28591 }, + { "iso_8859-1:1987", 28591 }, + { "iso-ir-100", 28591 }, + { "l1", 28591 }, + { "latin1", 28591 }, + { "macintosh", 10000 }, + { "Windows-1252", 1252 }, + { "ANSI_X3.4-1968", 1252 }, + { "ANSI_X3.4-1986", 1252 }, + { "ascii", 1252 }, + { "cp367", 1252 }, + { "cp819", 1252 }, + { "csASCII", 1252 }, + { "IBM367", 1252 }, + { "ibm819", 1252 }, + { "ISO_646.irv:1991", 1252 }, + { "iso_8859-1", 1252 }, + { "iso_8859-1:1987", 1252 }, + { "ISO646-US", 1252 }, + { "iso-ir-100", 1252 }, + { "iso-ir-6", 1252 }, + { "latin1", 1252 }, + { "us", 1252 }, + { "us-ascii", 1252 }, + { "x-ansi", 1252 }, + { "microsoft-cp1251", 1251 } +}; + diff --git a/plugins/SpellChecker/commons.h b/plugins/SpellChecker/commons.h new file mode 100644 index 0000000000..cf9ed36c97 --- /dev/null +++ b/plugins/SpellChecker/commons.h @@ -0,0 +1,154 @@ +/* +Copyright (C) 2006-2010 Ricardo Pescuma Domenecci + +This 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 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 file; see the file license.txt. If +not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. +*/ + +#ifndef __COMMONS_H__ +# define __COMMONS_H__ + + +#define OEMRESOURCE +#define _CRT_SECURE_NO_WARNINGS +#include +#include +#include +#include +#include +#include +#include +#include + +// Disable "...truncated to '255' characters in the debug information" warnings +#pragma warning(disable: 4786) + +#include +#include +#include +using namespace std; + + +// Miranda headers +#define MIRANDA_VER 0x0900 +#define MIRANDA_CUSTOM_LP +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//own includes +#include "m_folders.h" +#include "m_updater.h" +#include "m_metacontacts.h" +#include "m_variables.h" +#include "m_userinfoex.h" + +#include "../utils/mir_memory.h" +#include "../utils/mir_options.h" +#include "../utils/mir_icons.h" +#include "../utils/tstring.h" +#include "../utils/utf8_helpers.h" +#include "../utils/scope.h" + +#include "resource.h" +#include "m_spellchecker.h" +#include "options.h" +#include "autoreplace.h" +#include "dictionary.h" +#include "ardialog.h" +#include "RichEdit.h" + + +#define MODULE_NAME "SpellChecker" + +#define FLAGS_DLL_FOLDER _T("%miranda_path%\\Icons") +#define CUSTOM_DICTIONARIES_FOLDER _T("%miranda_userdata%\\Dictionaries") +#define DICTIONARIES_FOLDER _T("%miranda_path%\\Dictionaries") + +// Global Variables +extern HINSTANCE hInst; +extern BOOL uinfoex_enabled; +extern BOOL variables_enabled; + + +#define MAX_REGS(_A_) ( sizeof(_A_) / sizeof(_A_[0]) ) +#define FREE(_m_) if (_m_ != NULL) { free(_m_); _m_ = NULL; } + + +#define ICON_SIZE 16 + + +extern LIST languages; + +struct WrongWordPopupMenuData +{ + Suggestions suggestions; + TCHAR *word; + CHARRANGE pos; + HMENU hMeSubMenu; + HMENU hCorrectSubMenu; + HMENU hReplaceSubMenu; +}; + +struct Dialog +{ + HWND hwnd; + HWND hwnd_owner; + HANDLE hContact; + char name[64]; + Dictionary *lang; + TCHAR lang_name[32]; + WNDPROC old_edit_proc; + WNDPROC owner_old_edit_proc; + BOOL enabled; + BOOL srmm; + + RichEdit *re; + + HWND hwnd_menu_owner; + WNDPROC old_menu_proc; + + BOOL changed; + BOOL markedSomeWord; + int old_text_len; + + // Popup data + HMENU hLanguageSubMenu; + HMENU hWrongWordsSubMenu; + vector *wrong_words; +}; + +HICON IcoLib_LoadIcon(Dictionary *dict, BOOL copy = FALSE); + +BOOL CenterParent(HWND hwnd); +BOOL CreatePath(const TCHAR *path); +TCHAR *lstrtrim(TCHAR *str); +BOOL lstreq(TCHAR *a, TCHAR *b, size_t len = -1); +BOOL IsNumber(TCHAR c); + +#endif // __COMMONS_H__ diff --git a/plugins/SpellChecker/dictionary.cpp b/plugins/SpellChecker/dictionary.cpp new file mode 100644 index 0000000000..8d65763a8a --- /dev/null +++ b/plugins/SpellChecker/dictionary.cpp @@ -0,0 +1,735 @@ +/* +Copyright (C) 2006-2010 Ricardo Pescuma Domenecci + +This 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 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 file; see the file license.txt. If +not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. +*/ + + +#include "commons.h" + +#include "hunspell/config.h" +#include "hunspell/hunspell.hxx" +#include "hunspell/csutil.hxx" + + +#include "codepages.cpp" + + +DWORD WINAPI LoadThread(LPVOID hd); + +// Additional languages that i could not find in Windows +TCHAR *aditionalLanguages[] = { + _T("tl_PH"), _T("Tagalog (Philippines)"), + _T("de_frami_neu"), _T("German (Germany)") +}; + + + +#define LANGUAGE_NOT_LOADED 1 +#define LANGUAGE_LOADING -1 +#define LANGUAGE_LOADED 0 + + + +class HunspellDictionary : public Dictionary { +protected: + TCHAR fileWithoutExtension[1024]; + TCHAR userPath[1024]; + volatile int loaded; + Hunspell *hunspell; + TCHAR *wordChars; + UINT codePage; + + void loadCustomDict() + { + TCHAR filename[1024]; + mir_sntprintf(filename, MAX_REGS(filename), _T("%s\\%s.cdic"), userPath, language); + + FILE *file = _tfopen(filename, _T("rb")); + if (file != NULL) + { + char tmp[1024]; + char c; + int pos = 0; + while((c = fgetc(file)) != EOF) + { + if (c == '\n' || c == '\r' || pos >= MAX_REGS(tmp) - 1) + { + if (pos > 0) + { + tmp[pos] = '\0'; + hunspell->add(tmp); + } + + pos = 0; + } + else + { + tmp[pos] = c; + pos ++; + } + } + fclose(file); + } + } + + void appendToCustomDict(const TCHAR *word) + { + CreatePath(userPath); + + TCHAR filename[1024]; + mir_sntprintf(filename, MAX_REGS(filename), _T("%s\\%s.cdic"), userPath, language); + + FILE *file = _tfopen(filename, _T("ab")); + if (file != NULL) + { + char tmp[1024]; + toHunspell(tmp, word, MAX_REGS(tmp)); + fprintf(file, "%s\n", tmp); + fclose(file); + } + } + + virtual void addWordInternal(const TCHAR * word) + { + if (loaded != LANGUAGE_LOADED) + return; + + char hunspell_word[1024]; + toHunspell(hunspell_word, word, MAX_REGS(hunspell_word)); + + hunspell->add(hunspell_word); + } + + void toHunspell(char *hunspellWord, const TCHAR *word, size_t hunspellWordLen) + { +#ifdef UNICODE + WideCharToMultiByte(codePage, 0, word, -1, hunspellWord, hunspellWordLen, NULL, NULL); +#else + // TODO + strncpy(hunspellWord, word, hunspellWordLen); +#endif + } + + TCHAR * fromHunspell(const char *hunspellWord) + { +#ifdef UNICODE + int len = MultiByteToWideChar(codePage, 0, hunspellWord, -1, NULL, 0); + WCHAR *ret = (WCHAR *) malloc((len + 1) * sizeof(WCHAR)); + MultiByteToWideChar(codePage, 0, hunspellWord, -1, ret, len + 1); + return ret; +#else + // TODO + return strdup(hunspellWord); +#endif + } + + TCHAR * fromHunspellAndFree(char *hunspellWord) + { + if (hunspellWord == NULL) + return NULL; + + TCHAR *ret = fromHunspell(hunspellWord); + free(hunspellWord); + return ret; + } + +public: + HunspellDictionary(TCHAR *aLanguage, TCHAR *aFileWithoutExtension, TCHAR *anUserPath, TCHAR *aSource) + { + lstrcpyn(language, aLanguage, MAX_REGS(language)); + lstrcpyn(fileWithoutExtension, aFileWithoutExtension, MAX_REGS(fileWithoutExtension)); + lstrcpyn(userPath, anUserPath, MAX_REGS(userPath)); + if (aSource == NULL) + source[0] = _T('\0'); + else + lstrcpyn(source, aSource, MAX_REGS(source)); + + loaded = LANGUAGE_NOT_LOADED; + localized_name[0] = _T('\0'); + english_name[0] = _T('\0'); + full_name[0] = _T('\0'); + hunspell = NULL; + wordChars = NULL; + codePage = CP_ACP; + autoReplace = NULL; + } + + virtual ~HunspellDictionary() + { + if (hunspell != NULL) + delete hunspell; + if (wordChars != NULL) + free(wordChars); + } + + TCHAR * merge(TCHAR * s1, TCHAR *s2) + { + int len1 = (s1 == NULL ? 0 : lstrlen(s1)); + int len2 = (s2 == NULL ? 0 : lstrlen(s2)); + + TCHAR *ret; + if (len1 > 0 && len2 > 0) + { + ret = (TCHAR *) malloc(sizeof(TCHAR) * (len1 + len2 + 1)); + lstrcpyn(ret, s1, len1+1); + lstrcpyn(&ret[len1], s2, len2+1); + + FREE(s1); + FREE(s2); + } + else if (len1 > 0) + { + ret = s1; + FREE(s2); + } + else if (len2 > 0) + { + ret = s2; + FREE(s1); + } + else + { + ret = (TCHAR *) malloc(sizeof(TCHAR)); + ret[0] = 0; + + FREE(s1); + FREE(s2); + } + + // Remove duplicated chars + int last = lstrlen(ret) - 1; + for(int i = 0; i <= last; i++) + { + TCHAR c = ret[i]; + for(int j = last; j > i; j--) + { + if (c != ret[j]) + continue; + if (j != last) + ret[j] = ret[last]; + ret[last] = _T('\0'); + last--; + } + } + + return ret; + } + + + void loadThread() + { + char dic[1024]; + char aff[1024]; + +#ifdef UNICODE + mir_snprintf(dic, MAX_REGS(dic), "%S.dic", fileWithoutExtension); + mir_snprintf(aff, MAX_REGS(aff), "%S.aff", fileWithoutExtension); +#else + mir_snprintf(dic, MAX_REGS(dic), "%s.dic", fileWithoutExtension); + mir_snprintf(aff, MAX_REGS(aff), "%s.aff", fileWithoutExtension); +#endif + + hunspell = new Hunspell(aff, dic); + + // Get codepage + const char *dic_enc = hunspell->get_dic_encoding(); + + TCHAR *hwordchars; + if (strcmp(dic_enc, "UTF-8") == 0) + { + codePage = CP_UTF8; + +#ifdef UNICODE + int wcs_len; + hwordchars = fromHunspell((char *) hunspell->get_wordchars_utf16(&wcs_len)); +#else + // No option + hwordchars = NULL; +#endif + } + else + { + for (int i = 0; i < MAX_REGS(codepages); i++) + { + if (_strcmpi(codepages[i].name, dic_enc) == 0) + { + if (IsValidCodePage(codepages[i].codepage)) + codePage = codepages[i].codepage; + break; + } + } + + hwordchars = fromHunspell(hunspell->get_wordchars()); + } + + TCHAR *casechars = fromHunspellAndFree(get_casechars(dic_enc)); + TCHAR *try_string = fromHunspellAndFree(hunspell->get_try_string()); + + wordChars = merge(merge(casechars, hwordchars), try_string); + + // Make a suggestion to load hunspell internalls + char ** words = NULL; + int count = hunspell->suggest(&words, "asdf"); + for (int i = 0; i < count; i++) + free(words[i]); + if (words != NULL) + free(words); + + loadCustomDict(); + + loaded = LANGUAGE_LOADED; + } + + // Return TRUE if the word is correct + virtual BOOL spell(const TCHAR *word) + { + load(); + if (loaded != LANGUAGE_LOADED) + return TRUE; + + // TODO Check if it was generated by auto-replacement + + char hunspell_word[1024]; + toHunspell(hunspell_word, word, MAX_REGS(hunspell_word)); + + return hunspell->spell(hunspell_word); + } + + // Return a list of suggestions to a word + virtual Suggestions suggest(const TCHAR * word) + { + Suggestions ret = {0}; + + load(); + if (loaded != LANGUAGE_LOADED) + return ret; + + char hunspell_word[1024]; + toHunspell(hunspell_word, word, MAX_REGS(hunspell_word)); + + char ** words = NULL; + ret.count = hunspell->suggest(&words, hunspell_word); + + if (ret.count > 0) + { + // Oki, lets make our array + ret.words = (TCHAR **) malloc(ret.count * sizeof(TCHAR *)); + for (unsigned i = 0; i < ret.count; i++) + { + ret.words[i] = fromHunspell(words[i]); + free(words[i]); + } + } + + if (words != NULL) + free(words); + + return ret; + } + + // Return a list of auto suggestions to a word + virtual Suggestions autoSuggest(const TCHAR * word) + { + Suggestions ret = {0}; + + load(); + if (loaded != LANGUAGE_LOADED) + return ret; + + char hunspell_word[1024]; + toHunspell(hunspell_word, word, MAX_REGS(hunspell_word)); + + char ** words; + int count = hunspell->suggest_auto(&words, hunspell_word); + + if (count <= 0) + return ret; + + // Oki, lets make our array + ret.count = count; + ret.words = (TCHAR **) malloc(ret.count * sizeof(TCHAR *)); + for (int i = 0; i < count; i++) + { + ret.words[i] = fromHunspell(words[i]); + free(words[i]); + } + free(words); + + return ret; + } + + // Return a list of auto suggestions to a word + // You have to free the list AND each item + virtual TCHAR * autoSuggestOne(const TCHAR * word) + { + load(); + if (loaded != LANGUAGE_LOADED) + return NULL; + + char hunspell_word[1024]; + toHunspell(hunspell_word, word, MAX_REGS(hunspell_word)); + + char ** words; + int count = hunspell->suggest_auto(&words, hunspell_word); + + if (count <= 0) + return NULL; + + TCHAR *ret = fromHunspell(words[0]); + + // Oki, lets make our array + for (int i = 0; i < count; i++) + free(words[i]); + free(words); + + return ret; + } + + // Return TRUE if the char is a word char + virtual BOOL isWordChar(TCHAR c) + { + if (c == 0) + return FALSE; + + load(); + if (loaded != LANGUAGE_LOADED) + return TRUE; + + return _tcschr(wordChars, (_TINT) c) != NULL; + } + + // Assert that all needed data is loaded + virtual void load() + { + if (loaded == LANGUAGE_NOT_LOADED) + { + loaded = LANGUAGE_LOADING; + + DWORD thread_id; + CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) LoadThread, + (LPVOID) this, 0, &thread_id); + } + } + + virtual BOOL isLoaded() + { + return loaded == LANGUAGE_LOADED; + } + + + // Add a word to the user custom dict + virtual void addWord(const TCHAR * word) + { + addWordInternal(word); + appendToCustomDict(word); + } + + // Add a word to the list of ignored words + virtual void ignoreWord(const TCHAR * word) + { + addWordInternal(word); + } +}; + + +DWORD WINAPI LoadThread(LPVOID hd) +{ + HunspellDictionary *dict = (HunspellDictionary *) hd; + dict->loadThread(); + return 0; +} + + + +// To use with EnumLocalesProc :( +LIST *tmp_dicts; + +// To get the names of the languages +BOOL CALLBACK EnumLocalesProc(LPTSTR lpLocaleString) +{ + TCHAR *stopped = NULL; + USHORT langID = (USHORT) _tcstol(lpLocaleString, &stopped, 16); + + TCHAR ini[32]; + TCHAR end[32]; + GetLocaleInfo(MAKELCID(langID, 0), LOCALE_SISO639LANGNAME, ini, MAX_REGS(ini)); + GetLocaleInfo(MAKELCID(langID, 0), LOCALE_SISO3166CTRYNAME, end, MAX_REGS(end)); + + TCHAR name[64]; + mir_sntprintf(name, MAX_REGS(name), _T("%s_%s"), ini, end); + + for(int i = 0; i < tmp_dicts->getCount(); i++) + { + Dictionary *dict = (*tmp_dicts)[i]; + if (lstrcmpi(dict->language, name) == 0) + { +#define LOCALE_SLOCALIZEDLANGUAGENAME 0x0000006f +#define LOCALE_SNATIVEDISPLAYNAME 0x00000073 + + GetLocaleInfo(MAKELCID(langID, 0), LOCALE_SENGLANGUAGE, dict->english_name, MAX_REGS(dict->english_name)); + + GetLocaleInfo(MAKELCID(langID, 0), LOCALE_SLANGUAGE, dict->localized_name, MAX_REGS(dict->localized_name)); + if (dict->localized_name[0] == 0) + GetLocaleInfo(MAKELCID(langID, 0), LOCALE_SLOCALIZEDLANGUAGENAME, dict->localized_name, MAX_REGS(dict->localized_name)); + if (dict->localized_name[0] == 0) + GetLocaleInfo(MAKELCID(langID, 0), LOCALE_SNATIVEDISPLAYNAME, dict->localized_name, MAX_REGS(dict->localized_name)); + if (dict->localized_name[0] == 0 && dict->english_name[0] != 0) + { + TCHAR country[1024]; + GetLocaleInfo(MAKELCID(langID, 0), LOCALE_SENGCOUNTRY, country, MAX_REGS(country)); + + TCHAR name[1024]; + if (country[0] != 0) + mir_sntprintf(name, MAX_REGS(name), _T("%s (%s)"), dict->english_name, country); + else + lstrcpyn(name, dict->english_name, MAX_REGS(name)); + + lstrcpyn(dict->localized_name, TranslateTS(name), MAX_REGS(dict->localized_name)); + } + + if (dict->localized_name[0] != 0) + { + mir_sntprintf(dict->full_name, MAX_REGS(dict->full_name), _T("%s [%s]"), dict->localized_name, dict->language); + } + break; + } + } + return TRUE; +} + + +void GetDictsInfo(LIST &dicts) +{ + tmp_dicts = &dicts; + EnumSystemLocales(EnumLocalesProc, LCID_SUPPORTED); + + // Try to get name from DB + for(int i = 0; i < dicts.getCount(); i++) + { + Dictionary *dict = dicts[i]; + + if (dict->full_name[0] == _T('\0')) + { + DBVARIANT dbv; +#ifdef UNICODE + char lang[128]; + WideCharToMultiByte(CP_ACP, 0, dict->language, -1, lang, sizeof(lang), NULL, NULL); + if (!DBGetContactSettingTString(NULL, MODULE_NAME, lang, &dbv)) +#else + if (!DBGetContactSettingTString(NULL, MODULE_NAME, dict->language, &dbv)) +#endif + { + lstrcpyn(dict->localized_name, dbv.ptszVal, MAX_REGS(dict->localized_name)); + DBFreeVariant(&dbv); + } + + if (dict->localized_name[0] == _T('\0')) + { + for(size_t j = 0; j < MAX_REGS(aditionalLanguages); j+=2) + { + if (lstrcmp(aditionalLanguages[j], dict->language) == 0) + { + lstrcpyn(dict->localized_name, aditionalLanguages[j+1], MAX_REGS(dict->localized_name)); + break; + } + } + } + + if (dict->localized_name[0] != _T('\0')) + { + mir_sntprintf(dict->full_name, MAX_REGS(dict->full_name), _T("%s [%s]"), dict->localized_name, dict->language); + } + else + { + lstrcpyn(dict->full_name, dict->language, MAX_REGS(dict->full_name)); + } + } + } +} + + +void GetHunspellDictionariesFromFolder(LIST &dicts, TCHAR *path, TCHAR *user_path, TCHAR *source) +{ + // Load the language files and create an array with then + TCHAR file[1024]; + mir_sntprintf(file, MAX_REGS(file), _T("%s\\*.dic"), path); + + BOOL found = FALSE; + + WIN32_FIND_DATA ffd = {0}; + HANDLE hFFD = FindFirstFile(file, &ffd); + if (hFFD != INVALID_HANDLE_VALUE) + { + do + { + mir_sntprintf(file, MAX_REGS(file), _T("%s\\%s"), path, ffd.cFileName); + + // Check .dic + DWORD attrib = GetFileAttributes(file); + if (attrib == 0xFFFFFFFF || (attrib & FILE_ATTRIBUTE_DIRECTORY)) + continue; + + // See if .aff exists too + lstrcpy(&file[lstrlen(file) - 4], _T(".aff")); + attrib = GetFileAttributes(file); + if (attrib == 0xFFFFFFFF || (attrib & FILE_ATTRIBUTE_DIRECTORY)) + continue; + + ffd.cFileName[lstrlen(ffd.cFileName)-4] = _T('\0'); + + TCHAR *lang = ffd.cFileName; + + // Replace - for _ + int i; + for(i = 0; i < lstrlen(lang); i++) + if (lang[i] == _T('-')) + lang[i] = _T('_'); + + // Check if dict is new + BOOL exists = FALSE; + for(i = 0; i < dicts.getCount() && !exists; i++) + if (lstrcmp(dicts[i]->language, lang) == 0) + exists = TRUE; + + if (!exists) + { + found = TRUE; + file[lstrlen(file) - 4] = _T('\0'); + dicts.insert(new HunspellDictionary(lang, file, user_path, source)); + } + } + while(FindNextFile(hFFD, &ffd)); + + FindClose(hFFD); + } +} + + +// Return a list of avaible languages +void GetAvaibleDictionaries(LIST &dicts, TCHAR *path, TCHAR *user_path) +{ + // Get miranda folder dicts + GetHunspellDictionariesFromFolder(dicts, path, user_path, NULL); + + if (opts.use_other_apps_dicts) + { + TCHAR *otherHunspellApps[] = { _T("Thunderbird"), _T("thunderbird.exe"), + _T("Firefox"), _T("firefox.exe") }; + +#define APPPATH _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\%s") +#define MUICACHE _T("Software\\Microsoft\\Windows\\ShellNoRoam\\MUICache") + + // Get other apps dicts + for (int i = 0; i < MAX_REGS(otherHunspellApps); i += 2) + { + TCHAR key[1024]; + mir_sntprintf(key, MAX_REGS(key), APPPATH, otherHunspellApps[i+1]); + + HKEY hKey = 0; + LONG lResult = 0; + if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, key, 0, KEY_QUERY_VALUE, &hKey)) + { + DWORD size = MAX_REGS(key); + lResult = RegQueryValueEx(hKey, _T("Path"), NULL, NULL, (LPBYTE)key, &size); + RegCloseKey(hKey); + } + else + { + // Not found in installed apps - Try MUICache + lResult = RegOpenKeyEx(HKEY_CURRENT_USER, MUICACHE, 0, KEY_QUERY_VALUE, &hKey); + if (ERROR_SUCCESS == lResult) + { + DWORD numValues; + if (ERROR_SUCCESS != RegQueryInfoKey(hKey, NULL, NULL, NULL, NULL, NULL, NULL, &numValues, NULL, NULL, NULL, NULL)) + numValues = 0; + + lResult = ERROR_NO_MORE_ITEMS; + for (DWORD local = 0; local < numValues; local++) + { + DWORD cchValue = MAX_REGS(key); + if (ERROR_SUCCESS != RegEnumValue(hKey, local, key, &cchValue, NULL, NULL, NULL, NULL)) + break; + key[cchValue] = 0; + TCHAR *pos; + if (pos = _tcsrchr(key, _T('\\'))) + { + if (lstrcmpi(&pos[1], otherHunspellApps[i+1]) == 0) + { + pos[0] = 0; + lResult = ERROR_SUCCESS; + break; + } + } + } + RegCloseKey(hKey); + } + } + + if (ERROR_SUCCESS == lResult) + { + TCHAR folder[1024]; + mir_sntprintf(folder, MAX_REGS(folder), _T("%s\\Dictionaries"), key); + + GetHunspellDictionariesFromFolder(languages, folder, user_path, otherHunspellApps[i]); + } + } + } + + GetDictsInfo(dicts); + + // Yeah, yeah, yeah, I know, but this is the easiest way... + SortedList *sl = (SortedList *) &dicts; + + // Sort dicts + for(int i = 0; i < dicts.getCount(); i++) + { + for(int j = i + 1; j < dicts.getCount(); j++) + { + if (lstrcmp(dicts[i]->full_name, dicts[j]->full_name) > 0) + { + Dictionary *dict = dicts[i]; + sl->items[i] = dicts[j]; + sl->items[j] = dict; + } + } + } +} + + +// Free the list returned by GetAvaibleDictionaries +void FreeDictionaries(LIST &dicts) +{ + for (int i = 0; i < dicts.getCount(); i++) + { + delete dicts[i]; + } + dicts.destroy(); +} + + +// Free the list returned by GetAvaibleDictionaries +void FreeSuggestions(Suggestions &suggestions) +{ + for (size_t i = 0; i < suggestions.count; i++) + { + free(suggestions.words[i]); + } + free(suggestions.words); + + suggestions.words = NULL; + suggestions.count = 0; +} diff --git a/plugins/SpellChecker/dictionary.h b/plugins/SpellChecker/dictionary.h new file mode 100644 index 0000000000..b57aa730bd --- /dev/null +++ b/plugins/SpellChecker/dictionary.h @@ -0,0 +1,86 @@ +/* +Copyright (C) 2006-2010 Ricardo Pescuma Domenecci + +This 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 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 file; see the file license.txt. If +not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. +*/ + + +#ifndef __DICTIONARY_H__ +# define __DICTIONARY_H__ + + +struct Suggestions { + TCHAR ** words; + size_t count; +}; + + +// A Dictionary interface +// All dictionaries use a lazy interface +class Dictionary { +public: + TCHAR language[128]; + TCHAR localized_name[128]; + TCHAR english_name[128]; + TCHAR full_name[256]; + TCHAR source[128]; + AutoReplaceMap *autoReplace; + + virtual ~Dictionary() {} + + // Return TRUE if the word is correct + virtual BOOL spell(const TCHAR *) =0; + + // Return a list of suggestions to a word + virtual Suggestions suggest(const TCHAR * word) =0; + + // Return a list of auto suggestions to a word + virtual Suggestions autoSuggest(const TCHAR * word) =0; + + // Return a auto suggestions to a word + // You have to free the item + virtual TCHAR * autoSuggestOne(const TCHAR * word) =0; + + // Return TRUE if the char is a word char + virtual BOOL isWordChar(TCHAR c) =0; + + // Add a word to the user custom dict + virtual void addWord(const TCHAR * word) =0; + + // Add a word to the list of ignored words + virtual void ignoreWord(const TCHAR * word) =0; + + // Assert that all needed data is loaded + virtual void load() =0; + + // Return TRUE if the dict is fully loaded + virtual BOOL isLoaded() =0; +}; + + + +// Return a list of avaible languages +void GetAvaibleDictionaries(LIST &dicts, TCHAR *path, TCHAR *user_path); + +// Free the list returned by GetAvaibleDictionaries +void FreeDictionaries(LIST &dicts); + +// Free the list returned by GetAvaibleDictionaries +void FreeSuggestions(Suggestions &suggestions); + + + +#endif // __DICTIONARY_H__ diff --git a/plugins/SpellChecker/flags-angelika.rc b/plugins/SpellChecker/flags-angelika.rc new file mode 100644 index 0000000000..73d95036d3 --- /dev/null +++ b/plugins/SpellChecker/flags-angelika.rc @@ -0,0 +1,118 @@ +af ICON ".\\Flags-Angelika\\af_ZA.ico" +af_ZA ICON ".\\Flags-Angelika\\af_ZA.ico" +ar ICON ".\\Flags-Angelika\\ar_AR.ico" +ar_AR ICON ".\\Flags-Angelika\\ar_AR.ico" +az ICON ".\\Flags-Angelika\\az_AZ.ico" +az_AZ ICON ".\\Flags-Angelika\\az_AZ.ico" +bg ICON ".\\Flags-Angelika\\bg_BG.ico" +bg_BG ICON ".\\Flags-Angelika\\bg_BG.ico" +bn_IN ICON ".\\Flags-Angelika\\bn_IN.ico" +ca_ES ICON ".\\Flags-Angelika\\ca_ES.ico" +cs ICON ".\\Flags-Angelika\\cs_CZ.ico" +cs_CZ ICON ".\\Flags-Angelika\\cs_CZ.ico" +csb_PO ICON ".\\Flags-Angelika\\csb_PO.ico" +cy ICON ".\\Flags-Angelika\\cy_GB.ico" +cy_GB ICON ".\\Flags-Angelika\\cy_GB.ico" +da_DK ICON ".\\Flags-Angelika\\da_DK.ico" +de ICON ".\\Flags-Angelika\\de_DE.ico" +de_AT ICON ".\\Flags-Angelika\\de_AT.ico" +de_CH ICON ".\\Flags-Angelika\\de_CH.ico" +de_DE ICON ".\\Flags-Angelika\\de_DE.ico" +el ICON ".\\Flags-Angelika\\el_GR.ico" +el_GR ICON ".\\Flags-Angelika\\el_GR.ico" +em_ET ICON ".\\Flags-Angelika\\em_ET.ico" +en_AU ICON ".\\Flags-Angelika\\en_AU.ico" +en_CA ICON ".\\Flags-Angelika\\en_CA.ico" +en_GB ICON ".\\Flags-Angelika\\en_GB.ico" +en_UK ICON ".\\Flags-Angelika\\en_GB.ico" +en_NZ ICON ".\\Flags-Angelika\\en_NZ.ico" +en_US ICON ".\\Flags-Angelika\\en_US.ico" +en_ZA ICON ".\\Flags-Angelika\\en_ZA.ico" +es ICON ".\\Flags-Angelika\\es_ES.ico" +es_ES ICON ".\\Flags-Angelika\\es_ES.ico" +es_MX ICON ".\\Flags-Angelika\\es_MX.ico" +et_EE ICON ".\\Flags-Angelika\\et_EE.ico" +fa_IR ICON ".\\Flags-Angelika\\fa_IR.ico" +fi ICON ".\\Flags-Angelika\\fi_FI.ico" +fi_FI ICON ".\\Flags-Angelika\\fi_FI.ico" +fj ICON ".\\Flags-Angelika\\fj_FJ.ico" +fj_FJ ICON ".\\Flags-Angelika\\fj_FJ.ico" +fo ICON ".\\Flags-Angelika\\fo_FO.ico" +fo_FO ICON ".\\Flags-Angelika\\fo_FO.ico" +fr ICON ".\\Flags-Angelika\\fr_FR.ico" +fr_BE ICON ".\\Flags-Angelika\\fr_BE.ico" +fr_FR ICON ".\\Flags-Angelika\\fr_FR.ico" +ga_IE ICON ".\\Flags-Angelika\\ga_IE.ico" +gd_GB ICON ".\\Flags-Angelika\\gd_GB.ico" +gl_ES ICON ".\\Flags-Angelika\\gl_ES.ico" +he_IL ICON ".\\Flags-Angelika\\he_IL.ico" +hi ICON ".\\Flags-Angelika\\hi_IN.ico" +hi_IN ICON ".\\Flags-Angelika\\hi_IN.ico" +hr ICON ".\\Flags-Angelika\\hr_Hr.ico" +hr_Hr ICON ".\\Flags-Angelika\\hr_Hr.ico" +hu ICON ".\\Flags-Angelika\\hu_HU.ico" +hu_HU ICON ".\\Flags-Angelika\\hu_HU.ico" +id ICON ".\\Flags-Angelika\\id_ID.ico" +id_ID ICON ".\\Flags-Angelika\\id_ID.ico" +is ICON ".\\Flags-Angelika\\is_IS.ico" +is_IS ICON ".\\Flags-Angelika\\is_IS.ico" +it ICON ".\\Flags-Angelika\\it_IT.ico" +it_IT ICON ".\\Flags-Angelika\\it_IT.ico" +km_KH ICON ".\\Flags-Angelika\\km_KH.ico" +ku_TR ICON ".\\Flags-Angelika\\ku_TR.ico" +lt ICON ".\\Flags-Angelika\\lt_LT.ico" +lt_LT ICON ".\\Flags-Angelika\\lt_LT.ico" +lu ICON ".\\Flags-Angelika\\lu_LU.ico" +lu_LU ICON ".\\Flags-Angelika\\lu_LU.ico" +lv ICON ".\\Flags-Angelika\\lv_LV.ico" +lv_LV ICON ".\\Flags-Angelika\\lv_LV.ico" +mg ICON ".\\Flags-Angelika\\mg_MG.ico" +mg_MG ICON ".\\Flags-Angelika\\mg_MG.ico" +mi_NZ ICON ".\\Flags-Angelika\\mi_NZ.ico" +mn ICON ".\\Flags-Angelika\\mn_MN.ico" +mn_MN ICON ".\\Flags-Angelika\\mn_MN.ico" +mo_BF ICON ".\\Flags-Angelika\\mo_BF.ico" +mr_IN ICON ".\\Flags-Angelika\\mr_IN.ico" +ms_MY ICON ".\\Flags-Angelika\\ms_MY.ico" +nb ICON ".\\Flags-Angelika\\nb_NO.ico" +nb_NO ICON ".\\Flags-Angelika\\nb_NO.ico" +ne_NP ICON ".\\Flags-Angelika\\ne_NP.ico" +nl ICON ".\\Flags-Angelika\\nl_NL.ico" +nl_NL ICON ".\\Flags-Angelika\\nl_NL.ico" +nn_NO ICON ".\\Flags-Angelika\\nn_NO.ico" +no ICON ".\\Flags-Angelika\\nb_NO.ico" +nr_ZA ICON ".\\Flags-Angelika\\nr_ZA.ico" +ns_ZA ICON ".\\Flags-Angelika\\ns_ZA.ico" +or_IN ICON ".\\Flags-Angelika\\or_IN.ico" +pl ICON ".\\Flags-Angelika\\pl_PL.ico" +pl_PL ICON ".\\Flags-Angelika\\pl_PL.ico" +pt ICON ".\\Flags-Angelika\\pt_PT.ico" +pt_BR ICON ".\\Flags-Angelika\\pt_BR.ico" +pt_PT ICON ".\\Flags-Angelika\\pt_PT.ico" +qu_BO ICON ".\\Flags-Angelika\\qu_BO.ico" +ro ICON ".\\Flags-Angelika\\ro_RO.ico" +ro_RO ICON ".\\Flags-Angelika\\ro_RO.ico" +ru ICON ".\\Flags-Angelika\\ru_RU.ico" +ru_RU ICON ".\\Flags-Angelika\\ru_RU.ico" +rw ICON ".\\Flags-Angelika\\rw_RW.ico" +rw_RW ICON ".\\Flags-Angelika\\rw_RW.ico" +sk ICON ".\\Flags-Angelika\\sk_SK.ico" +sk_SK ICON ".\\Flags-Angelika\\sk_SK.ico" +sl_SI ICON ".\\Flags-Angelika\\sl_SI.ico" +ss_ZA ICON ".\\Flags-Angelika\\ss_ZA.ico" +st_ZA ICON ".\\Flags-Angelika\\st_ZA.ico" +sv ICON ".\\Flags-Angelika\\sv_SE.ico" +sv_SE ICON ".\\Flags-Angelika\\sv_SE.ico" +ta_IN ICON ".\\Flags-Angelika\\ta_IN.ico" +tet_ID ICON ".\\Flags-Angelika\\tet_ID.ico" +tl_PH ICON ".\\Flags-Angelika\\tl_PH.ico" +tn_ZA ICON ".\\Flags-Angelika\\tn_ZA.ico" +ts_ZA ICON ".\\Flags-Angelika\\ts_ZA.ico" +uk_UA ICON ".\\Flags-Angelika\\uk_UA.ico" +uz ICON ".\\Flags-Angelika\\uz_UZ.ico" +uz_UZ ICON ".\\Flags-Angelika\\uz_UZ.ico" +ve_ZA ICON ".\\Flags-Angelika\\ve_ZA.ico" +vi ICON ".\\Flags-Angelika\\vi_VI.ico" +vi_VI ICON ".\\Flags-Angelika\\vi_VI.ico" +xh_ZA ICON ".\\Flags-Angelika\\xh_ZA.ico" +zu_ZA ICON ".\\Flags-Angelika\\zu_ZA.ico" diff --git a/plugins/SpellChecker/flags-angelika.sln b/plugins/SpellChecker/flags-angelika.sln new file mode 100644 index 0000000000..b27be331f7 --- /dev/null +++ b/plugins/SpellChecker/flags-angelika.sln @@ -0,0 +1,40 @@ + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "flagsAngelika", "flags-angelika.vcproj", "{3096A0CE-0CC1-42BC-B19C-BE0985B4CDC5}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {3096A0CE-0CC1-42BC-B19C-BE0985B4CDC5}.Release|Win32.ActiveCfg = Release|Win32 + {3096A0CE-0CC1-42BC-B19C-BE0985B4CDC5}.Release|Win32.Build.0 = Release|Win32 + {3096A0CE-0CC1-42BC-B19C-BE0985B4CDC5}.Release|x64.ActiveCfg = Release|x64 + {3096A0CE-0CC1-42BC-B19C-BE0985B4CDC5}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "flagsAngelika", "flags-angelika.vcproj", "{3096A0CE-0CC1-42BC-B19C-BE0985B4CDC5}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {3096A0CE-0CC1-42BC-B19C-BE0985B4CDC5}.Release|Win32.ActiveCfg = Release|Win32 + {3096A0CE-0CC1-42BC-B19C-BE0985B4CDC5}.Release|Win32.Build.0 = Release|Win32 + {3096A0CE-0CC1-42BC-B19C-BE0985B4CDC5}.Release|x64.ActiveCfg = Release|x64 + {3096A0CE-0CC1-42BC-B19C-BE0985B4CDC5}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/plugins/SpellChecker/flags-angelika.vcproj b/plugins/SpellChecker/flags-angelika.vcproj new file mode 100644 index 0000000000..e6860f571f --- /dev/null +++ b/plugins/SpellChecker/flags-angelika.vcproj @@ -0,0 +1,508 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/SpellChecker/flags.rc b/plugins/SpellChecker/flags.rc new file mode 100644 index 0000000000..402f461de1 --- /dev/null +++ b/plugins/SpellChecker/flags.rc @@ -0,0 +1,119 @@ +af ICON ".\\Flags\\af_ZA.ico" +af_ZA ICON ".\\Flags\\af_ZA.ico" +az ICON ".\\Flags\\az_AZ.ico" +az_AZ ICON ".\\Flags\\az_AZ.ico" +bg ICON ".\\Flags\\bg_BG.ico" +bg_BG ICON ".\\Flags\\bg_BG.ico" +bn_IN ICON ".\\Flags\\bn_IN.ico" +cs ICON ".\\Flags\\cs_CZ.ico" +cs_CZ ICON ".\\Flags\\cs_CZ.ico" +cy ICON ".\\Flags\\cy_GB.ico" +cy_GB ICON ".\\Flags\\cy_GB.ico" +da_DK ICON ".\\Flags\\da_DK.ico" +de ICON ".\\Flags\\de_DE.ico" +de_AT ICON ".\\Flags\\de_AT.ico" +de_CH ICON ".\\Flags\\de_CH.ico" +de_DE ICON ".\\Flags\\de_DE.ico" +el ICON ".\\Flags\\el_GR.ico" +el_GR ICON ".\\Flags\\el_GR.ico" +em_ET ICON ".\\Flags\\em_ET.ico" +en_AU ICON ".\\Flags\\en_AU.ico" +en_CA ICON ".\\Flags\\en_CA.ico" +en_GB ICON ".\\Flags\\en_GB.ico" +en_UK ICON ".\\Flags\\en_GB.ico" +en_NZ ICON ".\\Flags\\en_NZ.ico" +en_US ICON ".\\Flags\\en_US.ico" +en_ZA ICON ".\\Flags\\en_ZA.ico" +es ICON ".\\Flags\\es_ES.ico" +es_ES ICON ".\\Flags\\es_ES.ico" +es_MX ICON ".\\Flags\\es_MX.ico" +et_EE ICON ".\\Flags\\et_EE.ico" +fa_IR ICON ".\\Flags\\fa_IR.ico" +fi ICON ".\\Flags\\fi_FI.ico" +fi_FI ICON ".\\Flags\\fi_FI.ico" +fj ICON ".\\Flags\\fj_FJ.ico" +fj_FJ ICON ".\\Flags\\fj_FJ.ico" +fo ICON ".\\Flags\\fo_FO.ico" +fo_FO ICON ".\\Flags\\fo_FO.ico" +fr ICON ".\\Flags\\fr_FR.ico" +fr_BE ICON ".\\Flags\\fr_BE.ico" +fr_FR ICON ".\\Flags\\fr_FR.ico" +ga_IE ICON ".\\Flags\\ga_IE.ico" +gd_GB ICON ".\\Flags\\gd_GB.ico" +he_IL ICON ".\\Flags\\he_IL.ico" +hi ICON ".\\Flags\\hi_IN.ico" +hi_IN ICON ".\\Flags\\hi_IN.ico" +hr ICON ".\\Flags\\hr_HR.ico" +hr_HR ICON ".\\Flags\\hr_HR.ico" +hu ICON ".\\Flags\\hu_HU.ico" +hu_HU ICON ".\\Flags\\hu_HU.ico" +id ICON ".\\Flags\\id_ID.ico" +id_ID ICON ".\\Flags\\id_ID.ico" +is ICON ".\\Flags\\is_IS.ico" +is_IS ICON ".\\Flags\\is_IS.ico" +it ICON ".\\Flags\\it_IT.ico" +it_IT ICON ".\\Flags\\it_IT.ico" +km_KH ICON ".\\Flags\\km_KH.ico" +ku_TR ICON ".\\Flags\\ku_TR.ico" +lt ICON ".\\Flags\\lt_LT.ico" +lt_LT ICON ".\\Flags\\lt_LT.ico" +lu ICON ".\\Flags\\lu_LU.ico" +lu_LU ICON ".\\Flags\\lu_LU.ico" +lv ICON ".\\Flags\\lv_LV.ico" +lv_LV ICON ".\\Flags\\lv_LV.ico" +mg ICON ".\\Flags\\mg_MG.ico" +mg_MG ICON ".\\Flags\\mg_MG.ico" +mi_NZ ICON ".\\Flags\\mi_NZ.ico" +mn ICON ".\\Flags\\mn_MN.ico" +mn_MN ICON ".\\Flags\\mn_MN.ico" +mo_BF ICON ".\\Flags\\mo_BF.ico" +mr_IN ICON ".\\Flags\\mr_IN.ico" +ms_MY ICON ".\\Flags\\ms_MY.ico" +nb ICON ".\\Flags\\nb_NO.ico" +nb_NO ICON ".\\Flags\\nb_NO.ico" +ne_NP ICON ".\\Flags\\ne_NP.ico" +nl ICON ".\\Flags\\nl_NL.ico" +nl_NL ICON ".\\Flags\\nl_NL.ico" +nn_NO ICON ".\\Flags\\nn_NO.ico" +no ICON ".\\Flags\\nb_NO.ico" +nr_ZA ICON ".\\Flags\\nr_ZA.ico" +ns_ZA ICON ".\\Flags\\ns_ZA.ico" +ny_MW ICON ".\\Flags\\ny_MW.ico" +or_IN ICON ".\\Flags\\or_IN.ico" +pl ICON ".\\Flags\\pl_PL.ico" +pl_PL ICON ".\\Flags\\pl_PL.ico" +pt ICON ".\\Flags\\pt_PT.ico" +pt_BR ICON ".\\Flags\\pt_BR.ico" +pt_PT ICON ".\\Flags\\pt_PT.ico" +qu_BO ICON ".\\Flags\\qu_BO.ico" +ro ICON ".\\Flags\\ro_RO.ico" +ro_BO ICON ".\\Flags\\ro_BO.ico" +ro_RO ICON ".\\Flags\\ro_RO.ico" +ru ICON ".\\Flags\\ru_RU.ico" +ru_RU ICON ".\\Flags\\ru_RU.ico" +rw ICON ".\\Flags\\rw_RW.ico" +rw_RW ICON ".\\Flags\\rw_RW.ico" +sk ICON ".\\Flags\\sk_SK.ico" +sk_SK ICON ".\\Flags\\sk_SK.ico" +sl_SI ICON ".\\Flags\\sl_SI.ico" +sr_CS ICON ".\\Flags\\sr_CS.ico" +ss_ZA ICON ".\\Flags\\ss_ZA.ico" +st_ZA ICON ".\\Flags\\st_ZA.ico" +sv ICON ".\\Flags\\sv_SE.ico" +sv_SE ICON ".\\Flags\\sv_SE.ico" +tet_ID ICON ".\\Flags\\tet_ID.ico" +tl_PH ICON ".\\Flags\\tl_PH.ico" +tn_ZA ICON ".\\Flags\\tn_ZA.ico" +ts_ZA ICON ".\\Flags\\ts_ZA.ico" +uk_UA ICON ".\\Flags\\uk_UA.ico" +uz ICON ".\\Flags\\uz_UZ.ico" +uz_UZ ICON ".\\Flags\\uz_UZ.ico" +ve_ZA ICON ".\\Flags\\ve_ZA.ico" +vi ICON ".\\Flags\\vi_VI.ico" +vi_VI ICON ".\\Flags\\vi_VI.ico" +xh_ZA ICON ".\\Flags\\xh_ZA.ico" +zu_ZA ICON ".\\Flags\\zu_ZA.ico" +mk ICON ".\\Flags\\mk.ico" +bs ICON ".\\Flags\\ba.ico" +zh ICON ".\\Flags\\cn.ico" +en ICON ".\\Flags\\en.ico" diff --git a/plugins/SpellChecker/flags.sln b/plugins/SpellChecker/flags.sln new file mode 100644 index 0000000000..f9c9712d40 --- /dev/null +++ b/plugins/SpellChecker/flags.sln @@ -0,0 +1,40 @@ + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "flags", "flags.vcproj", "{3B8B2642-716E-437C-B341-279B08FDC2C0}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {3B8B2642-716E-437C-B341-279B08FDC2C0}.Release|Win32.ActiveCfg = Release|Win32 + {3B8B2642-716E-437C-B341-279B08FDC2C0}.Release|Win32.Build.0 = Release|Win32 + {3B8B2642-716E-437C-B341-279B08FDC2C0}.Release|x64.ActiveCfg = Release|x64 + {3B8B2642-716E-437C-B341-279B08FDC2C0}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "flags", "flags.vcproj", "{3B8B2642-716E-437C-B341-279B08FDC2C0}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {3B8B2642-716E-437C-B341-279B08FDC2C0}.Release|Win32.ActiveCfg = Release|Win32 + {3B8B2642-716E-437C-B341-279B08FDC2C0}.Release|Win32.Build.0 = Release|Win32 + {3B8B2642-716E-437C-B341-279B08FDC2C0}.Release|x64.ActiveCfg = Release|x64 + {3B8B2642-716E-437C-B341-279B08FDC2C0}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/plugins/SpellChecker/flags.vcproj b/plugins/SpellChecker/flags.vcproj new file mode 100644 index 0000000000..630bab9108 --- /dev/null +++ b/plugins/SpellChecker/flags.vcproj @@ -0,0 +1,508 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/SpellChecker/hunspell/README b/plugins/SpellChecker/hunspell/README new file mode 100644 index 0000000000..b452096282 --- /dev/null +++ b/plugins/SpellChecker/hunspell/README @@ -0,0 +1,21 @@ +Hunspell spell checker and morphological analyser library + +Documentation, tests, examples: http://hunspell.sourceforge.net + +Author of Hunspell: +László Németh (nemethl (at) gyorsposta.hu) + +Hunspell based on OpenOffice.org's Myspell. MySpell's author: +Kevin Hendricks (kevin.hendricks (at) sympatico.ca) + +License: GPL 2.0/LGPL 2.1/MPL 1.1 tri-license + +The contents of this library may be used under the terms of +the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL", +see http://gnu.org/copyleft/lesser.html) or the Mozilla Public License +Version 1.1 or later (the "MPL", see http://mozilla.org/MPL/MPL-1.1.html). + +Software distributed under these licenses is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the licences +for the specific language governing rights and limitations under the licenses. diff --git a/plugins/SpellChecker/hunspell/affentry.cxx b/plugins/SpellChecker/hunspell/affentry.cxx new file mode 100644 index 0000000000..fef0cca5f5 --- /dev/null +++ b/plugins/SpellChecker/hunspell/affentry.cxx @@ -0,0 +1,962 @@ +#include "license.hunspell" +#include "license.myspell" + +#include +#include +#include +#include + +#include "affentry.hxx" +#include "csutil.hxx" + +PfxEntry::PfxEntry(AffixMgr* pmgr, affentry* dp) +{ + // register affix manager + pmyMgr = pmgr; + + // set up its initial values + + aflag = dp->aflag; // flag + strip = dp->strip; // string to strip + appnd = dp->appnd; // string to append + stripl = dp->stripl; // length of strip string + appndl = dp->appndl; // length of append string + numconds = dp->numconds; // length of the condition + opts = dp->opts; // cross product flag + // then copy over all of the conditions + if (opts & aeLONGCOND) { + memcpy(c.conds, dp->c.l.conds1, MAXCONDLEN_1); + c.l.conds2 = dp->c.l.conds2; + } else memcpy(c.conds, dp->c.conds, MAXCONDLEN); + next = NULL; + nextne = NULL; + nexteq = NULL; + morphcode = dp->morphcode; + contclass = dp->contclass; + contclasslen = dp->contclasslen; +} + + +PfxEntry::~PfxEntry() +{ + aflag = 0; + if (appnd) free(appnd); + if (strip) free(strip); + pmyMgr = NULL; + appnd = NULL; + strip = NULL; + if (opts & aeLONGCOND) free(c.l.conds2); + if (morphcode && !(opts & aeALIASM)) free(morphcode); + if (contclass && !(opts & aeALIASF)) free(contclass); +} + +// add prefix to this word assuming conditions hold +char * PfxEntry::add(const char * word, int len) +{ + char tword[MAXWORDUTF8LEN + 4]; + + if ((len > stripl || (len == 0 && pmyMgr->get_fullstrip())) && + (len >= numconds) && test_condition(word) && + (!stripl || (strncmp(word, strip, stripl) == 0)) && + ((MAXWORDUTF8LEN + 4) > (len + appndl - stripl))) { + /* we have a match so add prefix */ + char * pp = tword; + if (appndl) { + strcpy(tword,appnd); + pp += appndl; + } + strcpy(pp, (word + stripl)); + return mystrdup(tword); + } + return NULL; +} + +inline char * PfxEntry::nextchar(char * p) { + if (p) { + p++; + if (opts & aeLONGCOND) { + // jump to the 2nd part of the condition + if (p == c.conds + MAXCONDLEN_1) return c.l.conds2; + // end of the MAXCONDLEN length condition + } else if (p == c.conds + MAXCONDLEN) return NULL; + return *p ? p : NULL; + } + return NULL; +} + +inline int PfxEntry::test_condition(const char * st) +{ + const char * pos = NULL; // group with pos input position + bool neg = false; // complementer + bool ingroup = false; // character in the group + if (numconds == 0) return 1; + char * p = c.conds; + while (1) { + switch (*p) { + case '\0': return 1; + case '[': { + neg = false; + ingroup = false; + p = nextchar(p); + pos = st; break; + } + case '^': { p = nextchar(p); neg = true; break; } + case ']': { + if ((neg && ingroup) || (!neg && !ingroup)) return 0; + pos = NULL; + p = nextchar(p); + // skip the next character + if (!ingroup && *st) for (st++; (opts & aeUTF8) && (*st & 0xc0) == 0x80; st++); + if (*st == '\0' && p) return 0; // word <= condition + break; + } + case '.': if (!pos) { // dots are not metacharacters in groups: [.] + p = nextchar(p); + // skip the next character + for (st++; (opts & aeUTF8) && (*st & 0xc0) == 0x80; st++); + if (*st == '\0' && p) return 0; // word <= condition + break; + } + default: { + if (*st == *p) { + st++; + p = nextchar(p); + if ((opts & aeUTF8) && (*(st - 1) & 0x80)) { // multibyte + while (p && (*p & 0xc0) == 0x80) { // character + if (*p != *st) { + if (!pos) return 0; + st = pos; + break; + } + p = nextchar(p); + st++; + } + if (pos && st != pos) { + ingroup = true; + while (p && *p != ']' && (p = nextchar(p))); + } + } else if (pos) { + ingroup = true; + while (p && *p != ']' && (p = nextchar(p))); + } + } else if (pos) { // group + p = nextchar(p); + } else return 0; + } + } + if (!p) return 1; + } +} + +// check if this prefix entry matches +struct hentry * PfxEntry::checkword(const char * word, int len, char in_compound, const FLAG needflag) +{ + int tmpl; // length of tmpword + struct hentry * he; // hash entry of root word or NULL + char tmpword[MAXWORDUTF8LEN + 4]; + + // on entry prefix is 0 length or already matches the beginning of the word. + // So if the remaining root word has positive length + // and if there are enough chars in root word and added back strip chars + // to meet the number of characters conditions, then test it + + tmpl = len - appndl; + + if (tmpl > 0 || (tmpl == 0 && pmyMgr->get_fullstrip())) { + + // generate new root word by removing prefix and adding + // back any characters that would have been stripped + + if (stripl) strcpy (tmpword, strip); + strcpy ((tmpword + stripl), (word + appndl)); + + // now make sure all of the conditions on characters + // are met. Please see the appendix at the end of + // this file for more info on exactly what is being + // tested + + // if all conditions are met then check if resulting + // root word in the dictionary + + if (test_condition(tmpword)) { + tmpl += stripl; + if ((he = pmyMgr->lookup(tmpword)) != NULL) { + do { + if (TESTAFF(he->astr, aflag, he->alen) && + // forbid single prefixes with needaffix flag + ! TESTAFF(contclass, pmyMgr->get_needaffix(), contclasslen) && + // needflag + ((!needflag) || TESTAFF(he->astr, needflag, he->alen) || + (contclass && TESTAFF(contclass, needflag, contclasslen)))) + return he; + he = he->next_homonym; // check homonyms + } while (he); + } + + // prefix matched but no root word was found + // if aeXPRODUCT is allowed, try again but now + // ross checked combined with a suffix + + //if ((opts & aeXPRODUCT) && in_compound) { + if ((opts & aeXPRODUCT)) { + he = pmyMgr->suffix_check(tmpword, tmpl, aeXPRODUCT, this, NULL, + 0, NULL, FLAG_NULL, needflag, in_compound); + if (he) return he; + } + } + } + return NULL; +} + +// check if this prefix entry matches +struct hentry * PfxEntry::check_twosfx(const char * word, int len, + char in_compound, const FLAG needflag) +{ + int tmpl; // length of tmpword + struct hentry * he; // hash entry of root word or NULL + char tmpword[MAXWORDUTF8LEN + 4]; + + // on entry prefix is 0 length or already matches the beginning of the word. + // So if the remaining root word has positive length + // and if there are enough chars in root word and added back strip chars + // to meet the number of characters conditions, then test it + + tmpl = len - appndl; + + if ((tmpl > 0 || (tmpl == 0 && pmyMgr->get_fullstrip())) && + (tmpl + stripl >= numconds)) { + + // generate new root word by removing prefix and adding + // back any characters that would have been stripped + + if (stripl) strcpy (tmpword, strip); + strcpy ((tmpword + stripl), (word + appndl)); + + // now make sure all of the conditions on characters + // are met. Please see the appendix at the end of + // this file for more info on exactly what is being + // tested + + // if all conditions are met then check if resulting + // root word in the dictionary + + if (test_condition(tmpword)) { + tmpl += stripl; + + // prefix matched but no root word was found + // if aeXPRODUCT is allowed, try again but now + // cross checked combined with a suffix + + if ((opts & aeXPRODUCT) && (in_compound != IN_CPD_BEGIN)) { + he = pmyMgr->suffix_check_twosfx(tmpword, tmpl, aeXPRODUCT, this, needflag); + if (he) return he; + } + } + } + return NULL; +} + +// check if this prefix entry matches +char * PfxEntry::check_twosfx_morph(const char * word, int len, + char in_compound, const FLAG needflag) +{ + int tmpl; // length of tmpword + char tmpword[MAXWORDUTF8LEN + 4]; + + // on entry prefix is 0 length or already matches the beginning of the word. + // So if the remaining root word has positive length + // and if there are enough chars in root word and added back strip chars + // to meet the number of characters conditions, then test it + + tmpl = len - appndl; + + if ((tmpl > 0 || (tmpl == 0 && pmyMgr->get_fullstrip())) && + (tmpl + stripl >= numconds)) { + + // generate new root word by removing prefix and adding + // back any characters that would have been stripped + + if (stripl) strcpy (tmpword, strip); + strcpy ((tmpword + stripl), (word + appndl)); + + // now make sure all of the conditions on characters + // are met. Please see the appendix at the end of + // this file for more info on exactly what is being + // tested + + // if all conditions are met then check if resulting + // root word in the dictionary + + if (test_condition(tmpword)) { + tmpl += stripl; + + // prefix matched but no root word was found + // if aeXPRODUCT is allowed, try again but now + // ross checked combined with a suffix + + if ((opts & aeXPRODUCT) && (in_compound != IN_CPD_BEGIN)) { + return pmyMgr->suffix_check_twosfx_morph(tmpword, tmpl, + aeXPRODUCT, this, needflag); + } + } + } + return NULL; +} + +// check if this prefix entry matches +char * PfxEntry::check_morph(const char * word, int len, char in_compound, const FLAG needflag) +{ + int tmpl; // length of tmpword + struct hentry * he; // hash entry of root word or NULL + char tmpword[MAXWORDUTF8LEN + 4]; + char result[MAXLNLEN]; + char * st; + + *result = '\0'; + + // on entry prefix is 0 length or already matches the beginning of the word. + // So if the remaining root word has positive length + // and if there are enough chars in root word and added back strip chars + // to meet the number of characters conditions, then test it + + tmpl = len - appndl; + + if ((tmpl > 0 || (tmpl == 0 && pmyMgr->get_fullstrip())) && + (tmpl + stripl >= numconds)) { + + // generate new root word by removing prefix and adding + // back any characters that would have been stripped + + if (stripl) strcpy (tmpword, strip); + strcpy ((tmpword + stripl), (word + appndl)); + + // now make sure all of the conditions on characters + // are met. Please see the appendix at the end of + // this file for more info on exactly what is being + // tested + + // if all conditions are met then check if resulting + // root word in the dictionary + + if (test_condition(tmpword)) { + tmpl += stripl; + if ((he = pmyMgr->lookup(tmpword)) != NULL) { + do { + if (TESTAFF(he->astr, aflag, he->alen) && + // forbid single prefixes with needaffix flag + ! TESTAFF(contclass, pmyMgr->get_needaffix(), contclasslen) && + // needflag + ((!needflag) || TESTAFF(he->astr, needflag, he->alen) || + (contclass && TESTAFF(contclass, needflag, contclasslen)))) { + if (morphcode) { + mystrcat(result, " ", MAXLNLEN); + mystrcat(result, morphcode, MAXLNLEN); + } else mystrcat(result,getKey(), MAXLNLEN); + if (!HENTRY_FIND(he, MORPH_STEM)) { + mystrcat(result, " ", MAXLNLEN); + mystrcat(result, MORPH_STEM, MAXLNLEN); + mystrcat(result, HENTRY_WORD(he), MAXLNLEN); + } + // store the pointer of the hash entry + if (HENTRY_DATA(he)) { + mystrcat(result, " ", MAXLNLEN); + mystrcat(result, HENTRY_DATA2(he), MAXLNLEN); + } else { + // return with debug information + char * flag = pmyMgr->encode_flag(getFlag()); + mystrcat(result, " ", MAXLNLEN); + mystrcat(result, MORPH_FLAG, MAXLNLEN); + mystrcat(result, flag, MAXLNLEN); + free(flag); + } + mystrcat(result, "\n", MAXLNLEN); + } + he = he->next_homonym; + } while (he); + } + + // prefix matched but no root word was found + // if aeXPRODUCT is allowed, try again but now + // ross checked combined with a suffix + + if ((opts & aeXPRODUCT) && (in_compound != IN_CPD_BEGIN)) { + st = pmyMgr->suffix_check_morph(tmpword, tmpl, aeXPRODUCT, this, + FLAG_NULL, needflag); + if (st) { + mystrcat(result, st, MAXLNLEN); + free(st); + } + } + } + } + + if (*result) return mystrdup(result); + return NULL; +} + +SfxEntry::SfxEntry(AffixMgr * pmgr, affentry* dp) +{ + // register affix manager + pmyMgr = pmgr; + + // set up its initial values + aflag = dp->aflag; // char flag + strip = dp->strip; // string to strip + appnd = dp->appnd; // string to append + stripl = dp->stripl; // length of strip string + appndl = dp->appndl; // length of append string + numconds = dp->numconds; // length of the condition + opts = dp->opts; // cross product flag + + // then copy over all of the conditions + if (opts & aeLONGCOND) { + memcpy(c.l.conds1, dp->c.l.conds1, MAXCONDLEN_1); + c.l.conds2 = dp->c.l.conds2; + } else memcpy(c.conds, dp->c.conds, MAXCONDLEN); + + rappnd = myrevstrdup(appnd); + morphcode = dp->morphcode; + contclass = dp->contclass; + contclasslen = dp->contclasslen; +} + + +SfxEntry::~SfxEntry() +{ + aflag = 0; + if (appnd) free(appnd); + if (rappnd) free(rappnd); + if (strip) free(strip); + pmyMgr = NULL; + appnd = NULL; + strip = NULL; + if (opts & aeLONGCOND) free(c.l.conds2); + if (morphcode && !(opts & aeALIASM)) free(morphcode); + if (contclass && !(opts & aeALIASF)) free(contclass); +} + +// add suffix to this word assuming conditions hold +char * SfxEntry::add(const char * word, int len) +{ + char tword[MAXWORDUTF8LEN + 4]; + + /* make sure all conditions match */ + if ((len > stripl || (len == 0 && pmyMgr->get_fullstrip())) && + (len >= numconds) && test_condition(word + len, word) && + (!stripl || (strcmp(word + len - stripl, strip) == 0)) && + ((MAXWORDUTF8LEN + 4) > (len + appndl - stripl))) { + /* we have a match so add suffix */ + strcpy(tword,word); + if (appndl) { + strcpy(tword + len - stripl, appnd); + } else { + *(tword + len - stripl) = '\0'; + } + return mystrdup(tword); + } + return NULL; +} + +inline char * SfxEntry::nextchar(char * p) { + if (p) { + p++; + if (opts & aeLONGCOND) { + // jump to the 2nd part of the condition + if (p == c.l.conds1 + MAXCONDLEN_1) return c.l.conds2; + // end of the MAXCONDLEN length condition + } else if (p == c.conds + MAXCONDLEN) return NULL; + return *p ? p : NULL; + } + return NULL; +} + +inline int SfxEntry::test_condition(const char * st, const char * beg) +{ + const char * pos = NULL; // group with pos input position + bool neg = false; // complementer + bool ingroup = false; // character in the group + if (numconds == 0) return 1; + char * p = c.conds; + st--; + int i = 1; + while (1) { + switch (*p) { + case '\0': return 1; + case '[': { p = nextchar(p); pos = st; break; } + case '^': { p = nextchar(p); neg = true; break; } + case ']': { if (!neg && !ingroup) return 0; + i++; + // skip the next character + if (!ingroup) { + for (; (opts & aeUTF8) && (st >= beg) && (*st & 0xc0) == 0x80; st--); + st--; + } + pos = NULL; + neg = false; + ingroup = false; + p = nextchar(p); + if (st < beg && p) return 0; // word <= condition + break; + } + case '.': if (!pos) { // dots are not metacharacters in groups: [.] + p = nextchar(p); + // skip the next character + for (st--; (opts & aeUTF8) && (st >= beg) && (*st & 0xc0) == 0x80; st--); + if (st < beg) { // word <= condition + if (p) return 0; else return 1; + } + if ((opts & aeUTF8) && (*st & 0x80)) { // head of the UTF-8 character + st--; + if (st < beg) { // word <= condition + if (p) return 0; else return 1; + } + } + break; + } + default: { + if (*st == *p) { + p = nextchar(p); + if ((opts & aeUTF8) && (*st & 0x80)) { + st--; + while (p && (st >= beg)) { + if (*p != *st) { + if (!pos) return 0; + st = pos; + break; + } + // first byte of the UTF-8 multibyte character + if ((*p & 0xc0) != 0x80) break; + p = nextchar(p); + st--; + } + if (pos && st != pos) { + if (neg) return 0; + else if (i == numconds) return 1; + ingroup = true; + while (p && *p != ']' && (p = nextchar(p))); + st--; + } + if (p && *p != ']') p = nextchar(p); + } else if (pos) { + if (neg) return 0; + else if (i == numconds) return 1; + ingroup = true; + while (p && *p != ']' && (p = nextchar(p))); +// if (p && *p != ']') p = nextchar(p); + st--; + } + if (!pos) { + i++; + st--; + } + if (st < beg && p && *p != ']') return 0; // word <= condition + } else if (pos) { // group + p = nextchar(p); + } else return 0; + } + } + if (!p) return 1; + } +} + +// see if this suffix is present in the word +struct hentry * SfxEntry::checkword(const char * word, int len, int optflags, + PfxEntry* ppfx, char ** wlst, int maxSug, int * ns, const FLAG cclass, const FLAG needflag, + const FLAG badflag) +{ + int tmpl; // length of tmpword + struct hentry * he; // hash entry pointer + unsigned char * cp; + char tmpword[MAXWORDUTF8LEN + 4]; + PfxEntry* ep = ppfx; + + // if this suffix is being cross checked with a prefix + // but it does not support cross products skip it + + if (((optflags & aeXPRODUCT) != 0) && ((opts & aeXPRODUCT) == 0)) + return NULL; + + // upon entry suffix is 0 length or already matches the end of the word. + // So if the remaining root word has positive length + // and if there are enough chars in root word and added back strip chars + // to meet the number of characters conditions, then test it + + tmpl = len - appndl; + // the second condition is not enough for UTF-8 strings + // it checked in test_condition() + + if ((tmpl > 0 || (tmpl == 0 && pmyMgr->get_fullstrip())) && + (tmpl + stripl >= numconds)) { + + // generate new root word by removing suffix and adding + // back any characters that would have been stripped or + // or null terminating the shorter string + + strcpy (tmpword, word); + cp = (unsigned char *)(tmpword + tmpl); + if (stripl) { + strcpy ((char *)cp, strip); + tmpl += stripl; + cp = (unsigned char *)(tmpword + tmpl); + } else *cp = '\0'; + + // now make sure all of the conditions on characters + // are met. Please see the appendix at the end of + // this file for more info on exactly what is being + // tested + + // if all conditions are met then check if resulting + // root word in the dictionary + + if (test_condition((char *) cp, (char *) tmpword)) { + +#ifdef SZOSZABLYA_POSSIBLE_ROOTS + fprintf(stdout,"%s %s %c\n", word, tmpword, aflag); +#endif + if ((he = pmyMgr->lookup(tmpword)) != NULL) { + do { + // check conditional suffix (enabled by prefix) + if ((TESTAFF(he->astr, aflag, he->alen) || (ep && ep->getCont() && + TESTAFF(ep->getCont(), aflag, ep->getContLen()))) && + (((optflags & aeXPRODUCT) == 0) || + (ep && TESTAFF(he->astr, ep->getFlag(), he->alen)) || + // enabled by prefix + ((contclass) && (ep && TESTAFF(contclass, ep->getFlag(), contclasslen))) + ) && + // handle cont. class + ((!cclass) || + ((contclass) && TESTAFF(contclass, cclass, contclasslen)) + ) && + // check only in compound homonyms (bad flags) + (!badflag || !TESTAFF(he->astr, badflag, he->alen) + ) && + // handle required flag + ((!needflag) || + (TESTAFF(he->astr, needflag, he->alen) || + ((contclass) && TESTAFF(contclass, needflag, contclasslen))) + ) + ) return he; + he = he->next_homonym; // check homonyms + } while (he); + + // obsolote stemming code (used only by the + // experimental SuffixMgr:suggest_pos_stems) + // store resulting root in wlst + } else if (wlst && (*ns < maxSug)) { + int cwrd = 1; + for (int k=0; k < *ns; k++) + if (strcmp(tmpword, wlst[k]) == 0) cwrd = 0; + if (cwrd) { + wlst[*ns] = mystrdup(tmpword); + if (wlst[*ns] == NULL) { + for (int j=0; j<*ns; j++) free(wlst[j]); + *ns = -1; + return NULL; + } + (*ns)++; + } + } + } + } + return NULL; +} + +// see if two-level suffix is present in the word +struct hentry * SfxEntry::check_twosfx(const char * word, int len, int optflags, + PfxEntry* ppfx, const FLAG needflag) +{ + int tmpl; // length of tmpword + struct hentry * he; // hash entry pointer + unsigned char * cp; + char tmpword[MAXWORDUTF8LEN + 4]; + PfxEntry* ep = ppfx; + + + // if this suffix is being cross checked with a prefix + // but it does not support cross products skip it + + if ((optflags & aeXPRODUCT) != 0 && (opts & aeXPRODUCT) == 0) + return NULL; + + // upon entry suffix is 0 length or already matches the end of the word. + // So if the remaining root word has positive length + // and if there are enough chars in root word and added back strip chars + // to meet the number of characters conditions, then test it + + tmpl = len - appndl; + + if ((tmpl > 0 || (tmpl == 0 && pmyMgr->get_fullstrip())) && + (tmpl + stripl >= numconds)) { + + // generate new root word by removing suffix and adding + // back any characters that would have been stripped or + // or null terminating the shorter string + + strcpy (tmpword, word); + cp = (unsigned char *)(tmpword + tmpl); + if (stripl) { + strcpy ((char *)cp, strip); + tmpl += stripl; + cp = (unsigned char *)(tmpword + tmpl); + } else *cp = '\0'; + + // now make sure all of the conditions on characters + // are met. Please see the appendix at the end of + // this file for more info on exactly what is being + // tested + + // if all conditions are met then recall suffix_check + + if (test_condition((char *) cp, (char *) tmpword)) { + if (ppfx) { + // handle conditional suffix + if ((contclass) && TESTAFF(contclass, ep->getFlag(), contclasslen)) + he = pmyMgr->suffix_check(tmpword, tmpl, 0, NULL, NULL, 0, NULL, (FLAG) aflag, needflag); + else + he = pmyMgr->suffix_check(tmpword, tmpl, optflags, ppfx, NULL, 0, NULL, (FLAG) aflag, needflag); + } else { + he = pmyMgr->suffix_check(tmpword, tmpl, 0, NULL, NULL, 0, NULL, (FLAG) aflag, needflag); + } + if (he) return he; + } + } + return NULL; +} + +// see if two-level suffix is present in the word +char * SfxEntry::check_twosfx_morph(const char * word, int len, int optflags, + PfxEntry* ppfx, const FLAG needflag) +{ + int tmpl; // length of tmpword + unsigned char * cp; + char tmpword[MAXWORDUTF8LEN + 4]; + PfxEntry* ep = ppfx; + char * st; + + char result[MAXLNLEN]; + + *result = '\0'; + + // if this suffix is being cross checked with a prefix + // but it does not support cross products skip it + + if ((optflags & aeXPRODUCT) != 0 && (opts & aeXPRODUCT) == 0) + return NULL; + + // upon entry suffix is 0 length or already matches the end of the word. + // So if the remaining root word has positive length + // and if there are enough chars in root word and added back strip chars + // to meet the number of characters conditions, then test it + + tmpl = len - appndl; + + if ((tmpl > 0 || (tmpl == 0 && pmyMgr->get_fullstrip())) && + (tmpl + stripl >= numconds)) { + + // generate new root word by removing suffix and adding + // back any characters that would have been stripped or + // or null terminating the shorter string + + strcpy (tmpword, word); + cp = (unsigned char *)(tmpword + tmpl); + if (stripl) { + strcpy ((char *)cp, strip); + tmpl += stripl; + cp = (unsigned char *)(tmpword + tmpl); + } else *cp = '\0'; + + // now make sure all of the conditions on characters + // are met. Please see the appendix at the end of + // this file for more info on exactly what is being + // tested + + // if all conditions are met then recall suffix_check + + if (test_condition((char *) cp, (char *) tmpword)) { + if (ppfx) { + // handle conditional suffix + if ((contclass) && TESTAFF(contclass, ep->getFlag(), contclasslen)) { + st = pmyMgr->suffix_check_morph(tmpword, tmpl, 0, NULL, aflag, needflag); + if (st) { + if (ppfx->getMorph()) { + mystrcat(result, ppfx->getMorph(), MAXLNLEN); + mystrcat(result, " ", MAXLNLEN); + } + mystrcat(result,st, MAXLNLEN); + free(st); + mychomp(result); + } + } else { + st = pmyMgr->suffix_check_morph(tmpword, tmpl, optflags, ppfx, aflag, needflag); + if (st) { + mystrcat(result, st, MAXLNLEN); + free(st); + mychomp(result); + } + } + } else { + st = pmyMgr->suffix_check_morph(tmpword, tmpl, 0, NULL, aflag, needflag); + if (st) { + mystrcat(result, st, MAXLNLEN); + free(st); + mychomp(result); + } + } + if (*result) return mystrdup(result); + } + } + return NULL; +} + +// get next homonym with same affix +struct hentry * SfxEntry::get_next_homonym(struct hentry * he, int optflags, PfxEntry* ppfx, + const FLAG cclass, const FLAG needflag) +{ + PfxEntry* ep = ppfx; + FLAG eFlag = ep ? ep->getFlag() : FLAG_NULL; + + while (he->next_homonym) { + he = he->next_homonym; + if ((TESTAFF(he->astr, aflag, he->alen) || (ep && ep->getCont() && TESTAFF(ep->getCont(), aflag, ep->getContLen()))) && + ((optflags & aeXPRODUCT) == 0 || + TESTAFF(he->astr, eFlag, he->alen) || + // handle conditional suffix + ((contclass) && TESTAFF(contclass, eFlag, contclasslen)) + ) && + // handle cont. class + ((!cclass) || + ((contclass) && TESTAFF(contclass, cclass, contclasslen)) + ) && + // handle required flag + ((!needflag) || + (TESTAFF(he->astr, needflag, he->alen) || + ((contclass) && TESTAFF(contclass, needflag, contclasslen))) + ) + ) return he; + } + return NULL; +} + + +#if 0 + +Appendix: Understanding Affix Code + + +An affix is either a prefix or a suffix attached to root words to make +other words. + +Basically a Prefix or a Suffix is set of AffEntry objects +which store information about the prefix or suffix along +with supporting routines to check if a word has a particular +prefix or suffix or a combination. + +The structure affentry is defined as follows: + +struct affentry +{ + unsigned short aflag; // ID used to represent the affix + char * strip; // string to strip before adding affix + char * appnd; // the affix string to add + unsigned char stripl; // length of the strip string + unsigned char appndl; // length of the affix string + char numconds; // the number of conditions that must be met + char opts; // flag: aeXPRODUCT- combine both prefix and suffix + char conds[SETSIZE]; // array which encodes the conditions to be met +}; + + +Here is a suffix borrowed from the en_US.aff file. This file +is whitespace delimited. + +SFX D Y 4 +SFX D 0 e d +SFX D y ied [^aeiou]y +SFX D 0 ed [^ey] +SFX D 0 ed [aeiou]y + +This information can be interpreted as follows: + +In the first line has 4 fields + +Field +----- +1 SFX - indicates this is a suffix +2 D - is the name of the character flag which represents this suffix +3 Y - indicates it can be combined with prefixes (cross product) +4 4 - indicates that sequence of 4 affentry structures are needed to + properly store the affix information + +The remaining lines describe the unique information for the 4 SfxEntry +objects that make up this affix. Each line can be interpreted +as follows: (note fields 1 and 2 are as a check against line 1 info) + +Field +----- +1 SFX - indicates this is a suffix +2 D - is the name of the character flag for this affix +3 y - the string of chars to strip off before adding affix + (a 0 here indicates the NULL string) +4 ied - the string of affix characters to add +5 [^aeiou]y - the conditions which must be met before the affix + can be applied + +Field 5 is interesting. Since this is a suffix, field 5 tells us that +there are 2 conditions that must be met. The first condition is that +the next to the last character in the word must *NOT* be any of the +following "a", "e", "i", "o" or "u". The second condition is that +the last character of the word must end in "y". + +So how can we encode this information concisely and be able to +test for both conditions in a fast manner? The answer is found +but studying the wonderful ispell code of Geoff Kuenning, et.al. +(now available under a normal BSD license). + +If we set up a conds array of 256 bytes indexed (0 to 255) and access it +using a character (cast to an unsigned char) of a string, we have 8 bits +of information we can store about that character. Specifically we +could use each bit to say if that character is allowed in any of the +last (or first for prefixes) 8 characters of the word. + +Basically, each character at one end of the word (up to the number +of conditions) is used to index into the conds array and the resulting +value found there says whether the that character is valid for a +specific character position in the word. + +For prefixes, it does this by setting bit 0 if that char is valid +in the first position, bit 1 if valid in the second position, and so on. + +If a bit is not set, then that char is not valid for that postion in the +word. + +If working with suffixes bit 0 is used for the character closest +to the front, bit 1 for the next character towards the end, ..., +with bit numconds-1 representing the last char at the end of the string. + +Note: since entries in the conds[] are 8 bits, only 8 conditions +(read that only 8 character positions) can be examined at one +end of a word (the beginning for prefixes and the end for suffixes. + +So to make this clearer, lets encode the conds array values for the +first two affentries for the suffix D described earlier. + + + For the first affentry: + numconds = 1 (only examine the last character) + + conds['e'] = (1 << 0) (the word must end in an E) + all others are all 0 + + For the second affentry: + numconds = 2 (only examine the last two characters) + + conds[X] = conds[X] | (1 << 0) (aeiou are not allowed) + where X is all characters *but* a, e, i, o, or u + + + conds['y'] = (1 << 1) (the last char must be a y) + all other bits for all other entries in the conds array are zero + + +#endif + diff --git a/plugins/SpellChecker/hunspell/affentry.hxx b/plugins/SpellChecker/hunspell/affentry.hxx new file mode 100644 index 0000000000..eaf361fcce --- /dev/null +++ b/plugins/SpellChecker/hunspell/affentry.hxx @@ -0,0 +1,136 @@ +#ifndef _AFFIX_HXX_ +#define _AFFIX_HXX_ + +#include "hunvisapi.h" + +#include "atypes.hxx" +#include "baseaffix.hxx" +#include "affixmgr.hxx" + +/* A Prefix Entry */ + +class LIBHUNSPELL_DLL_EXPORTED PfxEntry : protected AffEntry +{ + AffixMgr* pmyMgr; + + PfxEntry * next; + PfxEntry * nexteq; + PfxEntry * nextne; + PfxEntry * flgnxt; + +public: + + PfxEntry(AffixMgr* pmgr, affentry* dp ); + ~PfxEntry(); + + inline bool allowCross() { return ((opts & aeXPRODUCT) != 0); } + struct hentry * checkword(const char * word, int len, char in_compound, + const FLAG needflag = FLAG_NULL); + + struct hentry * check_twosfx(const char * word, int len, char in_compound, const FLAG needflag = NULL); + + char * check_morph(const char * word, int len, char in_compound, + const FLAG needflag = FLAG_NULL); + + char * check_twosfx_morph(const char * word, int len, + char in_compound, const FLAG needflag = FLAG_NULL); + + inline FLAG getFlag() { return aflag; } + inline const char * getKey() { return appnd; } + char * add(const char * word, int len); + + inline short getKeyLen() { return appndl; } + + inline const char * getMorph() { return morphcode; } + + inline const unsigned short * getCont() { return contclass; } + inline short getContLen() { return contclasslen; } + + inline PfxEntry * getNext() { return next; } + inline PfxEntry * getNextNE() { return nextne; } + inline PfxEntry * getNextEQ() { return nexteq; } + inline PfxEntry * getFlgNxt() { return flgnxt; } + + inline void setNext(PfxEntry * ptr) { next = ptr; } + inline void setNextNE(PfxEntry * ptr) { nextne = ptr; } + inline void setNextEQ(PfxEntry * ptr) { nexteq = ptr; } + inline void setFlgNxt(PfxEntry * ptr) { flgnxt = ptr; } + + inline char * nextchar(char * p); + inline int test_condition(const char * st); +}; + + + + +/* A Suffix Entry */ + +class LIBHUNSPELL_DLL_EXPORTED SfxEntry : protected AffEntry +{ + AffixMgr* pmyMgr; + char * rappnd; + + SfxEntry * next; + SfxEntry * nexteq; + SfxEntry * nextne; + SfxEntry * flgnxt; + + SfxEntry * l_morph; + SfxEntry * r_morph; + SfxEntry * eq_morph; + +public: + + SfxEntry(AffixMgr* pmgr, affentry* dp ); + ~SfxEntry(); + + inline bool allowCross() { return ((opts & aeXPRODUCT) != 0); } + struct hentry * checkword(const char * word, int len, int optflags, + PfxEntry* ppfx, char ** wlst, int maxSug, int * ns, +// const FLAG cclass = FLAG_NULL, const FLAG needflag = FLAG_NULL, char in_compound=IN_CPD_NOT); + const FLAG cclass = FLAG_NULL, const FLAG needflag = FLAG_NULL, const FLAG badflag = 0); + + struct hentry * check_twosfx(const char * word, int len, int optflags, PfxEntry* ppfx, const FLAG needflag = NULL); + + char * check_twosfx_morph(const char * word, int len, int optflags, + PfxEntry* ppfx, const FLAG needflag = FLAG_NULL); + struct hentry * get_next_homonym(struct hentry * he); + struct hentry * get_next_homonym(struct hentry * word, int optflags, PfxEntry* ppfx, + const FLAG cclass, const FLAG needflag); + + + inline FLAG getFlag() { return aflag; } + inline const char * getKey() { return rappnd; } + char * add(const char * word, int len); + + + inline const char * getMorph() { return morphcode; } + + inline const unsigned short * getCont() { return contclass; } + inline short getContLen() { return contclasslen; } + inline const char * getAffix() { return appnd; } + + inline short getKeyLen() { return appndl; } + + inline SfxEntry * getNext() { return next; } + inline SfxEntry * getNextNE() { return nextne; } + inline SfxEntry * getNextEQ() { return nexteq; } + + inline SfxEntry * getLM() { return l_morph; } + inline SfxEntry * getRM() { return r_morph; } + inline SfxEntry * getEQM() { return eq_morph; } + inline SfxEntry * getFlgNxt() { return flgnxt; } + + inline void setNext(SfxEntry * ptr) { next = ptr; } + inline void setNextNE(SfxEntry * ptr) { nextne = ptr; } + inline void setNextEQ(SfxEntry * ptr) { nexteq = ptr; } + inline void setFlgNxt(SfxEntry * ptr) { flgnxt = ptr; } + + inline char * nextchar(char * p); + inline int test_condition(const char * st, const char * begin); + +}; + +#endif + + diff --git a/plugins/SpellChecker/hunspell/affixmgr.cxx b/plugins/SpellChecker/hunspell/affixmgr.cxx new file mode 100644 index 0000000000..b9108d45e3 --- /dev/null +++ b/plugins/SpellChecker/hunspell/affixmgr.cxx @@ -0,0 +1,4521 @@ +#include "license.hunspell" +#include "license.myspell" + +#include +#include +#include +#include + +#include + +#include "affixmgr.hxx" +#include "affentry.hxx" +#include "langnum.hxx" + +#include "csutil.hxx" + +AffixMgr::AffixMgr(const char * affpath, HashMgr** ptr, int * md, const char * key) +{ + // register hash manager and load affix data from aff file + pHMgr = ptr[0]; + alldic = ptr; + maxdic = md; + keystring = NULL; + trystring = NULL; + encoding=NULL; + csconv=NULL; + utf8 = 0; + complexprefixes = 0; + maptable = NULL; + nummap = 0; + breaktable = NULL; + numbreak = -1; + reptable = NULL; + numrep = 0; + iconvtable = NULL; + oconvtable = NULL; + checkcpdtable = NULL; + // allow simplified compound forms (see 3rd field of CHECKCOMPOUNDPATTERN) + simplifiedcpd = 0; + numcheckcpd = 0; + defcpdtable = NULL; + numdefcpd = 0; + phone = NULL; + compoundflag = FLAG_NULL; // permits word in compound forms + compoundbegin = FLAG_NULL; // may be first word in compound forms + compoundmiddle = FLAG_NULL; // may be middle word in compound forms + compoundend = FLAG_NULL; // may be last word in compound forms + compoundroot = FLAG_NULL; // compound word signing flag + compoundpermitflag = FLAG_NULL; // compound permitting flag for suffixed word + compoundforbidflag = FLAG_NULL; // compound fordidden flag for suffixed word + checkcompounddup = 0; // forbid double words in compounds + checkcompoundrep = 0; // forbid bad compounds (may be non compound word with a REP substitution) + checkcompoundcase = 0; // forbid upper and lowercase combinations at word bounds + checkcompoundtriple = 0; // forbid compounds with triple letters + simplifiedtriple = 0; // allow simplified triple letters in compounds (Schiff+fahrt -> Schiffahrt) + forbiddenword = FORBIDDENWORD; // forbidden word signing flag + nosuggest = FLAG_NULL; // don't suggest words signed with NOSUGGEST flag + nongramsuggest = FLAG_NULL; + lang = NULL; // language + langnum = 0; // language code (see http://l10n.openoffice.org/languages.html) + needaffix = FLAG_NULL; // forbidden root, allowed only with suffixes + cpdwordmax = -1; // default: unlimited wordcount in compound words + cpdmin = -1; // undefined + cpdmaxsyllable = 0; // default: unlimited syllablecount in compound words + cpdvowels=NULL; // vowels (for calculating of Hungarian compounding limit, O(n) search! XXX) + cpdvowels_utf16=NULL; // vowels for UTF-8 encoding (bsearch instead of O(n) search) + cpdvowels_utf16_len=0; // vowels + pfxappnd=NULL; // previous prefix for counting the syllables of prefix BUG + sfxappnd=NULL; // previous suffix for counting a special syllables BUG + cpdsyllablenum=NULL; // syllable count incrementing flag + checknum=0; // checking numbers, and word with numbers + wordchars=NULL; // letters + spec. word characters + wordchars_utf16=NULL; // letters + spec. word characters + wordchars_utf16_len=0; // letters + spec. word characters + ignorechars=NULL; // letters + spec. word characters + ignorechars_utf16=NULL; // letters + spec. word characters + ignorechars_utf16_len=0; // letters + spec. word characters + version=NULL; // affix and dictionary file version string + havecontclass=0; // flags of possible continuing classes (double affix) + // LEMMA_PRESENT: not put root into the morphological output. Lemma presents + // in morhological description in dictionary file. It's often combined with PSEUDOROOT. + lemma_present = FLAG_NULL; + circumfix = FLAG_NULL; + onlyincompound = FLAG_NULL; + maxngramsugs = -1; // undefined + maxdiff = -1; // undefined + onlymaxdiff = 0; + maxcpdsugs = -1; // undefined + nosplitsugs = 0; + sugswithdots = 0; + keepcase = 0; + forceucase = 0; + warn = 0; + forbidwarn = 0; + checksharps = 0; + substandard = FLAG_NULL; + fullstrip = 0; + + sfx = NULL; + pfx = NULL; + + for (int i=0; i < SETSIZE; i++) { + pStart[i] = NULL; + sStart[i] = NULL; + pFlag[i] = NULL; + sFlag[i] = NULL; + } + + for (int j=0; j < CONTSIZE; j++) { + contclasses[j] = 0; + } + + if (parse_file(affpath, key)) { + HUNSPELL_WARNING(stderr, "Failure loading aff file %s\n",affpath); + } + + if (cpdmin == -1) cpdmin = MINCPDLEN; + +} + + +AffixMgr::~AffixMgr() +{ + // pass through linked prefix entries and clean up + for (int i=0; i < SETSIZE ;i++) { + pFlag[i] = NULL; + PfxEntry * ptr = pStart[i]; + PfxEntry * nptr = NULL; + while (ptr) { + nptr = ptr->getNext(); + delete(ptr); + ptr = nptr; + nptr = NULL; + } + } + + // pass through linked suffix entries and clean up + for (int j=0; j < SETSIZE ; j++) { + sFlag[j] = NULL; + SfxEntry * ptr = sStart[j]; + SfxEntry * nptr = NULL; + while (ptr) { + nptr = ptr->getNext(); + delete(ptr); + ptr = nptr; + nptr = NULL; + } + sStart[j] = NULL; + } + + if (keystring) free(keystring); + keystring=NULL; + if (trystring) free(trystring); + trystring=NULL; + if (encoding) free(encoding); + encoding=NULL; + if (maptable) { + for (int j=0; j < nummap; j++) { + for (int k=0; k < maptable[j].len; k++) { + if (maptable[j].set[k]) free(maptable[j].set[k]); + } + free(maptable[j].set); + maptable[j].set = NULL; + maptable[j].len = 0; + } + free(maptable); + maptable = NULL; + } + nummap = 0; + if (breaktable) { + for (int j=0; j < numbreak; j++) { + if (breaktable[j]) free(breaktable[j]); + breaktable[j] = NULL; + } + free(breaktable); + breaktable = NULL; + } + numbreak = 0; + if (reptable) { + for (int j=0; j < numrep; j++) { + free(reptable[j].pattern); + free(reptable[j].pattern2); + } + free(reptable); + reptable = NULL; + } + if (iconvtable) delete iconvtable; + if (oconvtable) delete oconvtable; + if (phone && phone->rules) { + for (int j=0; j < phone->num + 1; j++) { + free(phone->rules[j * 2]); + free(phone->rules[j * 2 + 1]); + } + free(phone->rules); + free(phone); + phone = NULL; + } + + if (defcpdtable) { + for (int j=0; j < numdefcpd; j++) { + free(defcpdtable[j].def); + defcpdtable[j].def = NULL; + } + free(defcpdtable); + defcpdtable = NULL; + } + numrep = 0; + if (checkcpdtable) { + for (int j=0; j < numcheckcpd; j++) { + free(checkcpdtable[j].pattern); + free(checkcpdtable[j].pattern2); + free(checkcpdtable[j].pattern3); + checkcpdtable[j].pattern = NULL; + checkcpdtable[j].pattern2 = NULL; + checkcpdtable[j].pattern3 = NULL; + } + free(checkcpdtable); + checkcpdtable = NULL; + } + numcheckcpd = 0; + FREE_FLAG(compoundflag); + FREE_FLAG(compoundbegin); + FREE_FLAG(compoundmiddle); + FREE_FLAG(compoundend); + FREE_FLAG(compoundpermitflag); + FREE_FLAG(compoundforbidflag); + FREE_FLAG(compoundroot); + FREE_FLAG(forbiddenword); + FREE_FLAG(nosuggest); + FREE_FLAG(nongramsuggest); + FREE_FLAG(needaffix); + FREE_FLAG(lemma_present); + FREE_FLAG(circumfix); + FREE_FLAG(onlyincompound); + + cpdwordmax = 0; + pHMgr = NULL; + cpdmin = 0; + cpdmaxsyllable = 0; + if (cpdvowels) free(cpdvowels); + if (cpdvowels_utf16) free(cpdvowels_utf16); + if (cpdsyllablenum) free(cpdsyllablenum); + free_utf_tbl(); + if (lang) free(lang); + if (wordchars) free(wordchars); + if (wordchars_utf16) free(wordchars_utf16); + if (ignorechars) free(ignorechars); + if (ignorechars_utf16) free(ignorechars_utf16); + if (version) free(version); + checknum=0; +#ifdef MOZILLA_CLIENT + delete [] csconv; +#endif +} + + +// read in aff file and build up prefix and suffix entry objects +int AffixMgr::parse_file(const char * affpath, const char * key) +{ + char * line; // io buffers + char ft; // affix type + + // checking flag duplication + char dupflags[CONTSIZE]; + char dupflags_ini = 1; + + // first line indicator for removing byte order mark + int firstline = 1; + + // open the affix file + FileMgr * afflst = new FileMgr(affpath, key); + if (!afflst) { + HUNSPELL_WARNING(stderr, "error: could not open affix description file %s\n",affpath); + return 1; + } + + // step one is to parse the affix file building up the internal + // affix data structures + + // read in each line ignoring any that do not + // start with a known line type indicator + while ((line = afflst->getline())) { + mychomp(line); + + /* remove byte order mark */ + if (firstline) { + firstline = 0; + // Affix file begins with byte order mark: possible incompatibility with old Hunspell versions + if (strncmp(line,"\xEF\xBB\xBF",3) == 0) { + memmove(line, line+3, strlen(line+3)+1); + } + } + + /* parse in the keyboard string */ + if (strncmp(line,"KEY",3) == 0) { + if (parse_string(line, &keystring, afflst->getlinenum())) { + delete afflst; + return 1; + } + } + + /* parse in the try string */ + if (strncmp(line,"TRY",3) == 0) { + if (parse_string(line, &trystring, afflst->getlinenum())) { + delete afflst; + return 1; + } + } + + /* parse in the name of the character set used by the .dict and .aff */ + if (strncmp(line,"SET",3) == 0) { + if (parse_string(line, &encoding, afflst->getlinenum())) { + delete afflst; + return 1; + } + if (strcmp(encoding, "UTF-8") == 0) { + utf8 = 1; +#ifndef OPENOFFICEORG +#ifndef MOZILLA_CLIENT + if (initialize_utf_tbl()) return 1; +#endif +#endif + } + } + + /* parse COMPLEXPREFIXES for agglutinative languages with right-to-left writing system */ + if (strncmp(line,"COMPLEXPREFIXES",15) == 0) + complexprefixes = 1; + + /* parse in the flag used by the controlled compound words */ + if (strncmp(line,"COMPOUNDFLAG",12) == 0) { + if (parse_flag(line, &compoundflag, afflst)) { + delete afflst; + return 1; + } + } + + /* parse in the flag used by compound words */ + if (strncmp(line,"COMPOUNDBEGIN",13) == 0) { + if (complexprefixes) { + if (parse_flag(line, &compoundend, afflst)) { + delete afflst; + return 1; + } + } else { + if (parse_flag(line, &compoundbegin, afflst)) { + delete afflst; + return 1; + } + } + } + + /* parse in the flag used by compound words */ + if (strncmp(line,"COMPOUNDMIDDLE",14) == 0) { + if (parse_flag(line, &compoundmiddle, afflst)) { + delete afflst; + return 1; + } + } + /* parse in the flag used by compound words */ + if (strncmp(line,"COMPOUNDEND",11) == 0) { + if (complexprefixes) { + if (parse_flag(line, &compoundbegin, afflst)) { + delete afflst; + return 1; + } + } else { + if (parse_flag(line, &compoundend, afflst)) { + delete afflst; + return 1; + } + } + } + + /* parse in the data used by compound_check() method */ + if (strncmp(line,"COMPOUNDWORDMAX",15) == 0) { + if (parse_num(line, &cpdwordmax, afflst)) { + delete afflst; + return 1; + } + } + + /* parse in the flag sign compounds in dictionary */ + if (strncmp(line,"COMPOUNDROOT",12) == 0) { + if (parse_flag(line, &compoundroot, afflst)) { + delete afflst; + return 1; + } + } + + /* parse in the flag used by compound_check() method */ + if (strncmp(line,"COMPOUNDPERMITFLAG",18) == 0) { + if (parse_flag(line, &compoundpermitflag, afflst)) { + delete afflst; + return 1; + } + } + + /* parse in the flag used by compound_check() method */ + if (strncmp(line,"COMPOUNDFORBIDFLAG",18) == 0) { + if (parse_flag(line, &compoundforbidflag, afflst)) { + delete afflst; + return 1; + } + } + + if (strncmp(line,"CHECKCOMPOUNDDUP",16) == 0) { + checkcompounddup = 1; + } + + if (strncmp(line,"CHECKCOMPOUNDREP",16) == 0) { + checkcompoundrep = 1; + } + + if (strncmp(line,"CHECKCOMPOUNDTRIPLE",19) == 0) { + checkcompoundtriple = 1; + } + + if (strncmp(line,"SIMPLIFIEDTRIPLE",16) == 0) { + simplifiedtriple = 1; + } + + if (strncmp(line,"CHECKCOMPOUNDCASE",17) == 0) { + checkcompoundcase = 1; + } + + if (strncmp(line,"NOSUGGEST",9) == 0) { + if (parse_flag(line, &nosuggest, afflst)) { + delete afflst; + return 1; + } + } + + if (strncmp(line,"NONGRAMSUGGEST",14) == 0) { + if (parse_flag(line, &nongramsuggest, afflst)) { + delete afflst; + return 1; + } + } + + /* parse in the flag used by forbidden words */ + if (strncmp(line,"FORBIDDENWORD",13) == 0) { + if (parse_flag(line, &forbiddenword, afflst)) { + delete afflst; + return 1; + } + } + + /* parse in the flag used by forbidden words */ + if (strncmp(line,"LEMMA_PRESENT",13) == 0) { + if (parse_flag(line, &lemma_present, afflst)) { + delete afflst; + return 1; + } + } + + /* parse in the flag used by circumfixes */ + if (strncmp(line,"CIRCUMFIX",9) == 0) { + if (parse_flag(line, &circumfix, afflst)) { + delete afflst; + return 1; + } + } + + /* parse in the flag used by fogemorphemes */ + if (strncmp(line,"ONLYINCOMPOUND",14) == 0) { + if (parse_flag(line, &onlyincompound, afflst)) { + delete afflst; + return 1; + } + } + + /* parse in the flag used by `needaffixs' */ + if (strncmp(line,"PSEUDOROOT",10) == 0) { + if (parse_flag(line, &needaffix, afflst)) { + delete afflst; + return 1; + } + } + + /* parse in the flag used by `needaffixs' */ + if (strncmp(line,"NEEDAFFIX",9) == 0) { + if (parse_flag(line, &needaffix, afflst)) { + delete afflst; + return 1; + } + } + + /* parse in the minimal length for words in compounds */ + if (strncmp(line,"COMPOUNDMIN",11) == 0) { + if (parse_num(line, &cpdmin, afflst)) { + delete afflst; + return 1; + } + if (cpdmin < 1) cpdmin = 1; + } + + /* parse in the max. words and syllables in compounds */ + if (strncmp(line,"COMPOUNDSYLLABLE",16) == 0) { + if (parse_cpdsyllable(line, afflst)) { + delete afflst; + return 1; + } + } + + /* parse in the flag used by compound_check() method */ + if (strncmp(line,"SYLLABLENUM",11) == 0) { + if (parse_string(line, &cpdsyllablenum, afflst->getlinenum())) { + delete afflst; + return 1; + } + } + + /* parse in the flag used by the controlled compound words */ + if (strncmp(line,"CHECKNUM",8) == 0) { + checknum=1; + } + + /* parse in the extra word characters */ + if (strncmp(line,"WORDCHARS",9) == 0) { + if (parse_array(line, &wordchars, &wordchars_utf16, &wordchars_utf16_len, utf8, afflst->getlinenum())) { + delete afflst; + return 1; + } + } + + /* parse in the ignored characters (for example, Arabic optional diacretics charachters */ + if (strncmp(line,"IGNORE",6) == 0) { + if (parse_array(line, &ignorechars, &ignorechars_utf16, &ignorechars_utf16_len, utf8, afflst->getlinenum())) { + delete afflst; + return 1; + } + } + + /* parse in the typical fault correcting table */ + if (strncmp(line,"REP",3) == 0) { + if (parse_reptable(line, afflst)) { + delete afflst; + return 1; + } + } + + /* parse in the input conversion table */ + if (strncmp(line,"ICONV",5) == 0) { + if (parse_convtable(line, afflst, &iconvtable, "ICONV")) { + delete afflst; + return 1; + } + } + + /* parse in the input conversion table */ + if (strncmp(line,"OCONV",5) == 0) { + if (parse_convtable(line, afflst, &oconvtable, "OCONV")) { + delete afflst; + return 1; + } + } + + /* parse in the phonetic translation table */ + if (strncmp(line,"PHONE",5) == 0) { + if (parse_phonetable(line, afflst)) { + delete afflst; + return 1; + } + } + + /* parse in the checkcompoundpattern table */ + if (strncmp(line,"CHECKCOMPOUNDPATTERN",20) == 0) { + if (parse_checkcpdtable(line, afflst)) { + delete afflst; + return 1; + } + } + + /* parse in the defcompound table */ + if (strncmp(line,"COMPOUNDRULE",12) == 0) { + if (parse_defcpdtable(line, afflst)) { + delete afflst; + return 1; + } + } + + /* parse in the related character map table */ + if (strncmp(line,"MAP",3) == 0) { + if (parse_maptable(line, afflst)) { + delete afflst; + return 1; + } + } + + /* parse in the word breakpoints table */ + if (strncmp(line,"BREAK",5) == 0) { + if (parse_breaktable(line, afflst)) { + delete afflst; + return 1; + } + } + + /* parse in the language for language specific codes */ + if (strncmp(line,"LANG",4) == 0) { + if (parse_string(line, &lang, afflst->getlinenum())) { + delete afflst; + return 1; + } + langnum = get_lang_num(lang); + } + + if (strncmp(line,"VERSION",7) == 0) { + for(line = line + 7; *line == ' ' || *line == '\t'; line++); + version = mystrdup(line); + } + + if (strncmp(line,"MAXNGRAMSUGS",12) == 0) { + if (parse_num(line, &maxngramsugs, afflst)) { + delete afflst; + return 1; + } + } + + if (strncmp(line,"ONLYMAXDIFF", 11) == 0) + onlymaxdiff = 1; + + if (strncmp(line,"MAXDIFF",7) == 0) { + if (parse_num(line, &maxdiff, afflst)) { + delete afflst; + return 1; + } + } + + if (strncmp(line,"MAXCPDSUGS",10) == 0) { + if (parse_num(line, &maxcpdsugs, afflst)) { + delete afflst; + return 1; + } + } + + if (strncmp(line,"NOSPLITSUGS",11) == 0) { + nosplitsugs=1; + } + + if (strncmp(line,"FULLSTRIP",9) == 0) { + fullstrip=1; + } + + if (strncmp(line,"SUGSWITHDOTS",12) == 0) { + sugswithdots=1; + } + + /* parse in the flag used by forbidden words */ + if (strncmp(line,"KEEPCASE",8) == 0) { + if (parse_flag(line, &keepcase, afflst)) { + delete afflst; + return 1; + } + } + + /* parse in the flag used by `forceucase' */ + if (strncmp(line,"FORCEUCASE",10) == 0) { + if (parse_flag(line, &forceucase, afflst)) { + delete afflst; + return 1; + } + } + + /* parse in the flag used by `warn' */ + if (strncmp(line,"WARN",4) == 0) { + if (parse_flag(line, &warn, afflst)) { + delete afflst; + return 1; + } + } + + if (strncmp(line,"FORBIDWARN",10) == 0) { + forbidwarn=1; + } + + /* parse in the flag used by the affix generator */ + if (strncmp(line,"SUBSTANDARD",11) == 0) { + if (parse_flag(line, &substandard, afflst)) { + delete afflst; + return 1; + } + } + + if (strncmp(line,"CHECKSHARPS",11) == 0) { + checksharps=1; + } + + /* parse this affix: P - prefix, S - suffix */ + ft = ' '; + if (strncmp(line,"PFX",3) == 0) ft = complexprefixes ? 'S' : 'P'; + if (strncmp(line,"SFX",3) == 0) ft = complexprefixes ? 'P' : 'S'; + if (ft != ' ') { + if (dupflags_ini) { + memset(dupflags, 0, sizeof(dupflags)); + dupflags_ini = 0; + } + if (parse_affix(line, ft, afflst, dupflags)) { + delete afflst; + process_pfx_tree_to_list(); + process_sfx_tree_to_list(); + return 1; + } + } + + } + delete afflst; + + // convert affix trees to sorted list + process_pfx_tree_to_list(); + process_sfx_tree_to_list(); + + // now we can speed up performance greatly taking advantage of the + // relationship between the affixes and the idea of "subsets". + + // View each prefix as a potential leading subset of another and view + // each suffix (reversed) as a potential trailing subset of another. + + // To illustrate this relationship if we know the prefix "ab" is found in the + // word to examine, only prefixes that "ab" is a leading subset of need be examined. + // Furthermore is "ab" is not present then none of the prefixes that "ab" is + // is a subset need be examined. + // The same argument goes for suffix string that are reversed. + + // Then to top this off why not examine the first char of the word to quickly + // limit the set of prefixes to examine (i.e. the prefixes to examine must + // be leading supersets of the first character of the word (if they exist) + + // To take advantage of this "subset" relationship, we need to add two links + // from entry. One to take next if the current prefix is found (call it nexteq) + // and one to take next if the current prefix is not found (call it nextne). + + // Since we have built ordered lists, all that remains is to properly initialize + // the nextne and nexteq pointers that relate them + + process_pfx_order(); + process_sfx_order(); + + /* get encoding for CHECKCOMPOUNDCASE */ + if (!utf8) { + char * enc = get_encoding(); + csconv = get_current_cs(enc); + free(enc); + enc = NULL; + + char expw[MAXLNLEN]; + if (wordchars) { + strcpy(expw, wordchars); + free(wordchars); + } else *expw = '\0'; + + for (int i = 0; i <= 255; i++) { + if ( (csconv[i].cupper != csconv[i].clower) && + (! strchr(expw, (char) i))) { + *(expw + strlen(expw) + 1) = '\0'; + *(expw + strlen(expw)) = (char) i; + } + } + + wordchars = mystrdup(expw); + } + + // default BREAK definition + if (numbreak == -1) { + breaktable = (char **) malloc(sizeof(char *) * 3); + if (!breaktable) return 1; + breaktable[0] = mystrdup("-"); + breaktable[1] = mystrdup("^-"); + breaktable[2] = mystrdup("-$"); + if (breaktable[0] && breaktable[1] && breaktable[2]) numbreak = 3; + } + return 0; +} + + +// we want to be able to quickly access prefix information +// both by prefix flag, and sorted by prefix string itself +// so we need to set up two indexes + +int AffixMgr::build_pfxtree(PfxEntry* pfxptr) +{ + PfxEntry * ptr; + PfxEntry * pptr; + PfxEntry * ep = pfxptr; + + // get the right starting points + const char * key = ep->getKey(); + const unsigned char flg = (unsigned char) (ep->getFlag() & 0x00FF); + + // first index by flag which must exist + ptr = pFlag[flg]; + ep->setFlgNxt(ptr); + pFlag[flg] = ep; + + + // handle the special case of null affix string + if (strlen(key) == 0) { + // always inset them at head of list at element 0 + ptr = pStart[0]; + ep->setNext(ptr); + pStart[0] = ep; + return 0; + } + + // now handle the normal case + ep->setNextEQ(NULL); + ep->setNextNE(NULL); + + unsigned char sp = *((const unsigned char *)key); + ptr = pStart[sp]; + + // handle the first insert + if (!ptr) { + pStart[sp] = ep; + return 0; + } + + + // otherwise use binary tree insertion so that a sorted + // list can easily be generated later + pptr = NULL; + for (;;) { + pptr = ptr; + if (strcmp(ep->getKey(), ptr->getKey() ) <= 0) { + ptr = ptr->getNextEQ(); + if (!ptr) { + pptr->setNextEQ(ep); + break; + } + } else { + ptr = ptr->getNextNE(); + if (!ptr) { + pptr->setNextNE(ep); + break; + } + } + } + return 0; +} + +// we want to be able to quickly access suffix information +// both by suffix flag, and sorted by the reverse of the +// suffix string itself; so we need to set up two indexes +int AffixMgr::build_sfxtree(SfxEntry* sfxptr) +{ + SfxEntry * ptr; + SfxEntry * pptr; + SfxEntry * ep = sfxptr; + + /* get the right starting point */ + const char * key = ep->getKey(); + const unsigned char flg = (unsigned char) (ep->getFlag() & 0x00FF); + + // first index by flag which must exist + ptr = sFlag[flg]; + ep->setFlgNxt(ptr); + sFlag[flg] = ep; + + // next index by affix string + + // handle the special case of null affix string + if (strlen(key) == 0) { + // always inset them at head of list at element 0 + ptr = sStart[0]; + ep->setNext(ptr); + sStart[0] = ep; + return 0; + } + + // now handle the normal case + ep->setNextEQ(NULL); + ep->setNextNE(NULL); + + unsigned char sp = *((const unsigned char *)key); + ptr = sStart[sp]; + + // handle the first insert + if (!ptr) { + sStart[sp] = ep; + return 0; + } + + // otherwise use binary tree insertion so that a sorted + // list can easily be generated later + pptr = NULL; + for (;;) { + pptr = ptr; + if (strcmp(ep->getKey(), ptr->getKey() ) <= 0) { + ptr = ptr->getNextEQ(); + if (!ptr) { + pptr->setNextEQ(ep); + break; + } + } else { + ptr = ptr->getNextNE(); + if (!ptr) { + pptr->setNextNE(ep); + break; + } + } + } + return 0; +} + +// convert from binary tree to sorted list +int AffixMgr::process_pfx_tree_to_list() +{ + for (int i=1; i< SETSIZE; i++) { + pStart[i] = process_pfx_in_order(pStart[i],NULL); + } + return 0; +} + + +PfxEntry* AffixMgr::process_pfx_in_order(PfxEntry* ptr, PfxEntry* nptr) +{ + if (ptr) { + nptr = process_pfx_in_order(ptr->getNextNE(), nptr); + ptr->setNext(nptr); + nptr = process_pfx_in_order(ptr->getNextEQ(), ptr); + } + return nptr; +} + + +// convert from binary tree to sorted list +int AffixMgr:: process_sfx_tree_to_list() +{ + for (int i=1; i< SETSIZE; i++) { + sStart[i] = process_sfx_in_order(sStart[i],NULL); + } + return 0; +} + +SfxEntry* AffixMgr::process_sfx_in_order(SfxEntry* ptr, SfxEntry* nptr) +{ + if (ptr) { + nptr = process_sfx_in_order(ptr->getNextNE(), nptr); + ptr->setNext(nptr); + nptr = process_sfx_in_order(ptr->getNextEQ(), ptr); + } + return nptr; +} + + +// reinitialize the PfxEntry links NextEQ and NextNE to speed searching +// using the idea of leading subsets this time +int AffixMgr::process_pfx_order() +{ + PfxEntry* ptr; + + // loop through each prefix list starting point + for (int i=1; i < SETSIZE; i++) { + + ptr = pStart[i]; + + // look through the remainder of the list + // and find next entry with affix that + // the current one is not a subset of + // mark that as destination for NextNE + // use next in list that you are a subset + // of as NextEQ + + for (; ptr != NULL; ptr = ptr->getNext()) { + + PfxEntry * nptr = ptr->getNext(); + for (; nptr != NULL; nptr = nptr->getNext()) { + if (! isSubset( ptr->getKey() , nptr->getKey() )) break; + } + ptr->setNextNE(nptr); + ptr->setNextEQ(NULL); + if ((ptr->getNext()) && isSubset(ptr->getKey() , (ptr->getNext())->getKey())) + ptr->setNextEQ(ptr->getNext()); + } + + // now clean up by adding smart search termination strings: + // if you are already a superset of the previous prefix + // but not a subset of the next, search can end here + // so set NextNE properly + + ptr = pStart[i]; + for (; ptr != NULL; ptr = ptr->getNext()) { + PfxEntry * nptr = ptr->getNext(); + PfxEntry * mptr = NULL; + for (; nptr != NULL; nptr = nptr->getNext()) { + if (! isSubset(ptr->getKey(),nptr->getKey())) break; + mptr = nptr; + } + if (mptr) mptr->setNextNE(NULL); + } + } + return 0; +} + +// initialize the SfxEntry links NextEQ and NextNE to speed searching +// using the idea of leading subsets this time +int AffixMgr::process_sfx_order() +{ + SfxEntry* ptr; + + // loop through each prefix list starting point + for (int i=1; i < SETSIZE; i++) { + + ptr = sStart[i]; + + // look through the remainder of the list + // and find next entry with affix that + // the current one is not a subset of + // mark that as destination for NextNE + // use next in list that you are a subset + // of as NextEQ + + for (; ptr != NULL; ptr = ptr->getNext()) { + SfxEntry * nptr = ptr->getNext(); + for (; nptr != NULL; nptr = nptr->getNext()) { + if (! isSubset(ptr->getKey(),nptr->getKey())) break; + } + ptr->setNextNE(nptr); + ptr->setNextEQ(NULL); + if ((ptr->getNext()) && isSubset(ptr->getKey(),(ptr->getNext())->getKey())) + ptr->setNextEQ(ptr->getNext()); + } + + + // now clean up by adding smart search termination strings: + // if you are already a superset of the previous suffix + // but not a subset of the next, search can end here + // so set NextNE properly + + ptr = sStart[i]; + for (; ptr != NULL; ptr = ptr->getNext()) { + SfxEntry * nptr = ptr->getNext(); + SfxEntry * mptr = NULL; + for (; nptr != NULL; nptr = nptr->getNext()) { + if (! isSubset(ptr->getKey(),nptr->getKey())) break; + mptr = nptr; + } + if (mptr) mptr->setNextNE(NULL); + } + } + return 0; +} + +// add flags to the result for dictionary debugging +void AffixMgr::debugflag(char * result, unsigned short flag) { + char * st = encode_flag(flag); + mystrcat(result, " ", MAXLNLEN); + mystrcat(result, MORPH_FLAG, MAXLNLEN); + if (st) { + mystrcat(result, st, MAXLNLEN); + free(st); + } +} + +// calculate the character length of the condition +int AffixMgr::condlen(char * st) +{ + int l = 0; + bool group = false; + for(; *st; st++) { + if (*st == '[') { + group = true; + l++; + } else if (*st == ']') group = false; + else if (!group && (!utf8 || + (!(*st & 0x80) || ((*st & 0xc0) == 0x80)))) l++; + } + return l; +} + +int AffixMgr::encodeit(affentry &entry, char * cs) +{ + if (strcmp(cs,".") != 0) { + entry.numconds = (char) condlen(cs); + strncpy(entry.c.conds, cs, MAXCONDLEN); + // long condition (end of conds padded by strncpy) + if (entry.c.conds[MAXCONDLEN - 1] && cs[MAXCONDLEN]) { + entry.opts += aeLONGCOND; + entry.c.l.conds2 = mystrdup(cs + MAXCONDLEN_1); + if (!entry.c.l.conds2) return 1; + } + } else { + entry.numconds = 0; + entry.c.conds[0] = '\0'; + } + return 0; +} + +// return 1 if s1 is a leading subset of s2 (dots are for infixes) +inline int AffixMgr::isSubset(const char * s1, const char * s2) + { + while (((*s1 == *s2) || (*s1 == '.')) && (*s1 != '\0')) { + s1++; + s2++; + } + return (*s1 == '\0'); + } + + +// check word for prefixes +struct hentry * AffixMgr::prefix_check(const char * word, int len, char in_compound, + const FLAG needflag) +{ + struct hentry * rv= NULL; + + pfx = NULL; + pfxappnd = NULL; + sfxappnd = NULL; + + // first handle the special case of 0 length prefixes + PfxEntry * pe = pStart[0]; + while (pe) { + if ( + // fogemorpheme + ((in_compound != IN_CPD_NOT) || !(pe->getCont() && + (TESTAFF(pe->getCont(), onlyincompound, pe->getContLen())))) && + // permit prefixes in compounds + ((in_compound != IN_CPD_END) || (pe->getCont() && + (TESTAFF(pe->getCont(), compoundpermitflag, pe->getContLen())))) + ) { + // check prefix + rv = pe->checkword(word, len, in_compound, needflag); + if (rv) { + pfx=pe; // BUG: pfx not stateless + return rv; + } + } + pe = pe->getNext(); + } + + // now handle the general case + unsigned char sp = *((const unsigned char *)word); + PfxEntry * pptr = pStart[sp]; + + while (pptr) { + if (isSubset(pptr->getKey(),word)) { + if ( + // fogemorpheme + ((in_compound != IN_CPD_NOT) || !(pptr->getCont() && + (TESTAFF(pptr->getCont(), onlyincompound, pptr->getContLen())))) && + // permit prefixes in compounds + ((in_compound != IN_CPD_END) || (pptr->getCont() && + (TESTAFF(pptr->getCont(), compoundpermitflag, pptr->getContLen())))) + ) { + // check prefix + rv = pptr->checkword(word, len, in_compound, needflag); + if (rv) { + pfx=pptr; // BUG: pfx not stateless + return rv; + } + } + pptr = pptr->getNextEQ(); + } else { + pptr = pptr->getNextNE(); + } + } + + return NULL; +} + +// check word for prefixes +struct hentry * AffixMgr::prefix_check_twosfx(const char * word, int len, + char in_compound, const FLAG needflag) +{ + struct hentry * rv= NULL; + + pfx = NULL; + sfxappnd = NULL; + + // first handle the special case of 0 length prefixes + PfxEntry * pe = pStart[0]; + + while (pe) { + rv = pe->check_twosfx(word, len, in_compound, needflag); + if (rv) return rv; + pe = pe->getNext(); + } + + // now handle the general case + unsigned char sp = *((const unsigned char *)word); + PfxEntry * pptr = pStart[sp]; + + while (pptr) { + if (isSubset(pptr->getKey(),word)) { + rv = pptr->check_twosfx(word, len, in_compound, needflag); + if (rv) { + pfx = pptr; + return rv; + } + pptr = pptr->getNextEQ(); + } else { + pptr = pptr->getNextNE(); + } + } + + return NULL; +} + +// check word for prefixes +char * AffixMgr::prefix_check_morph(const char * word, int len, char in_compound, + const FLAG needflag) +{ + char * st; + + char result[MAXLNLEN]; + result[0] = '\0'; + + pfx = NULL; + sfxappnd = NULL; + + // first handle the special case of 0 length prefixes + PfxEntry * pe = pStart[0]; + while (pe) { + st = pe->check_morph(word,len,in_compound, needflag); + if (st) { + mystrcat(result, st, MAXLNLEN); + free(st); + } + // if (rv) return rv; + pe = pe->getNext(); + } + + // now handle the general case + unsigned char sp = *((const unsigned char *)word); + PfxEntry * pptr = pStart[sp]; + + while (pptr) { + if (isSubset(pptr->getKey(),word)) { + st = pptr->check_morph(word,len,in_compound, needflag); + if (st) { + // fogemorpheme + if ((in_compound != IN_CPD_NOT) || !((pptr->getCont() && + (TESTAFF(pptr->getCont(), onlyincompound, pptr->getContLen()))))) { + mystrcat(result, st, MAXLNLEN); + pfx = pptr; + } + free(st); + } + pptr = pptr->getNextEQ(); + } else { + pptr = pptr->getNextNE(); + } + } + + if (*result) return mystrdup(result); + return NULL; +} + + +// check word for prefixes +char * AffixMgr::prefix_check_twosfx_morph(const char * word, int len, + char in_compound, const FLAG needflag) +{ + char * st; + + char result[MAXLNLEN]; + result[0] = '\0'; + + pfx = NULL; + sfxappnd = NULL; + + // first handle the special case of 0 length prefixes + PfxEntry * pe = pStart[0]; + while (pe) { + st = pe->check_twosfx_morph(word,len,in_compound, needflag); + if (st) { + mystrcat(result, st, MAXLNLEN); + free(st); + } + pe = pe->getNext(); + } + + // now handle the general case + unsigned char sp = *((const unsigned char *)word); + PfxEntry * pptr = pStart[sp]; + + while (pptr) { + if (isSubset(pptr->getKey(),word)) { + st = pptr->check_twosfx_morph(word, len, in_compound, needflag); + if (st) { + mystrcat(result, st, MAXLNLEN); + free(st); + pfx = pptr; + } + pptr = pptr->getNextEQ(); + } else { + pptr = pptr->getNextNE(); + } + } + + if (*result) return mystrdup(result); + return NULL; +} + +// Is word a non compound with a REP substitution (see checkcompoundrep)? +int AffixMgr::cpdrep_check(const char * word, int wl) +{ + char candidate[MAXLNLEN]; + const char * r; + int lenr, lenp; + + if ((wl < 2) || !numrep) return 0; + + for (int i=0; i < numrep; i++ ) { + r = word; + lenr = strlen(reptable[i].pattern2); + lenp = strlen(reptable[i].pattern); + // search every occurence of the pattern in the word + while ((r=strstr(r, reptable[i].pattern)) != NULL) { + strcpy(candidate, word); + if (r-word + lenr + strlen(r+lenp) >= MAXLNLEN) break; + strcpy(candidate+(r-word),reptable[i].pattern2); + strcpy(candidate+(r-word)+lenr, r+lenp); + if (candidate_check(candidate,strlen(candidate))) return 1; + r++; // search for the next letter + } + } + return 0; +} + +// forbid compoundings when there are special patterns at word bound +int AffixMgr::cpdpat_check(const char * word, int pos, hentry * r1, hentry * r2, const char affixed) +{ + int len; + for (int i = 0; i < numcheckcpd; i++) { + if (isSubset(checkcpdtable[i].pattern2, word + pos) && + (!r1 || !checkcpdtable[i].cond || + (r1->astr && TESTAFF(r1->astr, checkcpdtable[i].cond, r1->alen))) && + (!r2 || !checkcpdtable[i].cond2 || + (r2->astr && TESTAFF(r2->astr, checkcpdtable[i].cond2, r2->alen))) && + // zero length pattern => only TESTAFF + // zero pattern (0/flag) => unmodified stem (zero affixes allowed) + (!*(checkcpdtable[i].pattern) || ( + (*(checkcpdtable[i].pattern)=='0' && r1->blen <= pos && strncmp(word + pos - r1->blen, r1->word, r1->blen) == 0) || + (*(checkcpdtable[i].pattern)!='0' && (len = strlen(checkcpdtable[i].pattern)) && + strncmp(word + pos - len, checkcpdtable[i].pattern, len) == 0)))) { + return 1; + } + } + return 0; +} + +// forbid compounding with neighbouring upper and lower case characters at word bounds +int AffixMgr::cpdcase_check(const char * word, int pos) +{ + if (utf8) { + w_char u, w; + const char * p; + u8_u16(&u, 1, word + pos); + for (p = word + pos - 1; (*p & 0xc0) == 0x80; p--); + u8_u16(&w, 1, p); + unsigned short a = (u.h << 8) + u.l; + unsigned short b = (w.h << 8) + w.l; + if (((unicodetoupper(a, langnum) == a) || (unicodetoupper(b, langnum) == b)) && + (a != '-') && (b != '-')) return 1; + } else { + unsigned char a = *(word + pos - 1); + unsigned char b = *(word + pos); + if ((csconv[a].ccase || csconv[b].ccase) && (a != '-') && (b != '-')) return 1; + } + return 0; +} + +// check compound patterns +int AffixMgr::defcpd_check(hentry *** words, short wnum, hentry * rv, hentry ** def, char all) +{ + signed short btpp[MAXWORDLEN]; // metacharacter (*, ?) positions for backtracking + signed short btwp[MAXWORDLEN]; // word positions for metacharacters + int btnum[MAXWORDLEN]; // number of matched characters in metacharacter positions + short bt = 0; + int i, j; + int ok; + int w = 0; + + if (!*words) { + w = 1; + *words = def; + } + + if (!*words) { + return 0; + } + + (*words)[wnum] = rv; + + // has the last word COMPOUNDRULE flag? + if (rv->alen == 0) { + (*words)[wnum] = NULL; + if (w) *words = NULL; + return 0; + } + ok = 0; + for (i = 0; i < numdefcpd; i++) { + for (j = 0; j < defcpdtable[i].len; j++) { + if (defcpdtable[i].def[j] != '*' && defcpdtable[i].def[j] != '?' && + TESTAFF(rv->astr, defcpdtable[i].def[j], rv->alen)) ok = 1; + } + } + if (ok == 0) { + (*words)[wnum] = NULL; + if (w) *words = NULL; + return 0; + } + + for (i = 0; i < numdefcpd; i++) { + signed short pp = 0; // pattern position + signed short wp = 0; // "words" position + int ok2; + ok = 1; + ok2 = 1; + do { + while ((pp < defcpdtable[i].len) && (wp <= wnum)) { + if (((pp+1) < defcpdtable[i].len) && + ((defcpdtable[i].def[pp+1] == '*') || (defcpdtable[i].def[pp+1] == '?'))) { + int wend = (defcpdtable[i].def[pp+1] == '?') ? wp : wnum; + ok2 = 1; + pp+=2; + btpp[bt] = pp; + btwp[bt] = wp; + while (wp <= wend) { + if (!(*words)[wp]->alen || + !TESTAFF((*words)[wp]->astr, defcpdtable[i].def[pp-2], (*words)[wp]->alen)) { + ok2 = 0; + break; + } + wp++; + } + if (wp <= wnum) ok2 = 0; + btnum[bt] = wp - btwp[bt]; + if (btnum[bt] > 0) bt++; + if (ok2) break; + } else { + ok2 = 1; + if (!(*words)[wp] || !(*words)[wp]->alen || + !TESTAFF((*words)[wp]->astr, defcpdtable[i].def[pp], (*words)[wp]->alen)) { + ok = 0; + break; + } + pp++; + wp++; + if ((defcpdtable[i].len == pp) && !(wp > wnum)) ok = 0; + } + } + if (ok && ok2) { + int r = pp; + while ((defcpdtable[i].len > r) && ((r+1) < defcpdtable[i].len) && + ((defcpdtable[i].def[r+1] == '*') || (defcpdtable[i].def[r+1] == '?'))) r+=2; + if (defcpdtable[i].len <= r) return 1; + } + // backtrack + if (bt) do { + ok = 1; + btnum[bt - 1]--; + pp = btpp[bt - 1]; + wp = btwp[bt - 1] + (signed short) btnum[bt - 1]; + } while ((btnum[bt - 1] < 0) && --bt); + } while (bt); + + if (ok && ok2 && (!all || (defcpdtable[i].len <= pp))) return 1; + + // check zero ending + while (ok && ok2 && (defcpdtable[i].len > pp) && ((pp+1) < defcpdtable[i].len) && + ((defcpdtable[i].def[pp+1] == '*') || (defcpdtable[i].def[pp+1] == '?'))) pp+=2; + if (ok && ok2 && (defcpdtable[i].len <= pp)) return 1; + } + (*words)[wnum] = NULL; + if (w) *words = NULL; + return 0; +} + +inline int AffixMgr::candidate_check(const char * word, int len) +{ + struct hentry * rv=NULL; + + rv = lookup(word); + if (rv) return 1; + +// rv = prefix_check(word,len,1); +// if (rv) return 1; + + rv = affix_check(word,len); + if (rv) return 1; + return 0; +} + +// calculate number of syllable for compound-checking +short AffixMgr::get_syllable(const char * word, int wlen) +{ + if (cpdmaxsyllable==0) return 0; + + short num=0; + + if (!utf8) { + for (int i=0; i 0; i--) { + if (flag_bsearch((unsigned short *) cpdvowels_utf16, + ((unsigned short *) w)[i - 1], cpdvowels_utf16_len)) num++; + } + } + return num; +} + +void AffixMgr::setcminmax(int * cmin, int * cmax, const char * word, int len) { + if (utf8) { + int i; + for (*cmin = 0, i = 0; (i < cpdmin) && word[*cmin]; i++) { + for ((*cmin)++; (word[*cmin] & 0xc0) == 0x80; (*cmin)++); + } + for (*cmax = len, i = 0; (i < (cpdmin - 1)) && *cmax; i++) { + for ((*cmax)--; (word[*cmax] & 0xc0) == 0x80; (*cmax)--); + } + } else { + *cmin = cpdmin; + *cmax = len - cpdmin + 1; + } +} + + +// check if compound word is correctly spelled +// hu_mov_rule = spec. Hungarian rule (XXX) +struct hentry * AffixMgr::compound_check(const char * word, int len, + short wordnum, short numsyllable, short maxwordnum, short wnum, hentry ** words = NULL, + char hu_mov_rule = 0, char is_sug = 0, int * info = NULL) +{ + int i; + short oldnumsyllable, oldnumsyllable2, oldwordnum, oldwordnum2; + struct hentry * rv = NULL; + struct hentry * rv_first; + struct hentry * rwords[MAXWORDLEN]; // buffer for COMPOUND pattern checking + char st [MAXWORDUTF8LEN + 4]; + char ch = '\0'; + int cmin; + int cmax; + int striple = 0; + int scpd = 0; + int soldi = 0; + int oldcmin = 0; + int oldcmax = 0; + int oldlen = 0; + int checkedstriple = 0; + int onlycpdrule; + int affixed = 0; + hentry ** oldwords = words; + + int checked_prefix; + + setcminmax(&cmin, &cmax, word, len); + + strcpy(st, word); + + for (i = cmin; i < cmax; i++) { + // go to end of the UTF-8 character + if (utf8) { + for (; (st[i] & 0xc0) == 0x80; i++); + if (i >= cmax) return NULL; + } + + words = oldwords; + onlycpdrule = (words) ? 1 : 0; + + do { // onlycpdrule loop + + oldnumsyllable = numsyllable; + oldwordnum = wordnum; + checked_prefix = 0; + + + do { // simplified checkcompoundpattern loop + + if (scpd > 0) { + for (; scpd <= numcheckcpd && (!checkcpdtable[scpd-1].pattern3 || + strncmp(word + i, checkcpdtable[scpd-1].pattern3, strlen(checkcpdtable[scpd-1].pattern3)) != 0); scpd++); + + if (scpd > numcheckcpd) break; // break simplified checkcompoundpattern loop + strcpy(st + i, checkcpdtable[scpd-1].pattern); + soldi = i; + i += strlen(checkcpdtable[scpd-1].pattern); + strcpy(st + i, checkcpdtable[scpd-1].pattern2); + strcpy(st + i + strlen(checkcpdtable[scpd-1].pattern2), word + soldi + strlen(checkcpdtable[scpd-1].pattern3)); + + oldlen = len; + len += strlen(checkcpdtable[scpd-1].pattern) + strlen(checkcpdtable[scpd-1].pattern2) - strlen(checkcpdtable[scpd-1].pattern3); + oldcmin = cmin; + oldcmax = cmax; + setcminmax(&cmin, &cmax, st, len); + + cmax = len - cpdmin + 1; + } + + ch = st[i]; + st[i] = '\0'; + + sfx = NULL; + pfx = NULL; + + // FIRST WORD + + affixed = 1; + rv = lookup(st); // perhaps without prefix + + // search homonym with compound flag + while ((rv) && !hu_mov_rule && + ((needaffix && TESTAFF(rv->astr, needaffix, rv->alen)) || + !((compoundflag && !words && !onlycpdrule && TESTAFF(rv->astr, compoundflag, rv->alen)) || + (compoundbegin && !wordnum && !onlycpdrule && + TESTAFF(rv->astr, compoundbegin, rv->alen)) || + (compoundmiddle && wordnum && !words && !onlycpdrule && + TESTAFF(rv->astr, compoundmiddle, rv->alen)) || + (numdefcpd && onlycpdrule && + ((!words && !wordnum && defcpd_check(&words, wnum, rv, (hentry **) &rwords, 0)) || + (words && defcpd_check(&words, wnum, rv, (hentry **) &rwords, 0))))) || + (scpd != 0 && checkcpdtable[scpd-1].cond != FLAG_NULL && + !TESTAFF(rv->astr, checkcpdtable[scpd-1].cond, rv->alen))) + ) { + rv = rv->next_homonym; + } + + if (rv) affixed = 0; + + if (!rv) { + if (onlycpdrule) break; + if (compoundflag && + !(rv = prefix_check(st, i, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN, compoundflag))) { + if ((rv = suffix_check(st, i, 0, NULL, NULL, 0, NULL, + FLAG_NULL, compoundflag, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN)) && !hu_mov_rule && + sfx->getCont() && + ((compoundforbidflag && TESTAFF(sfx->getCont(), compoundforbidflag, + sfx->getContLen())) || (compoundend && + TESTAFF(sfx->getCont(), compoundend, + sfx->getContLen())))) { + rv = NULL; + } + } + + if (rv || + (((wordnum == 0) && compoundbegin && + ((rv = suffix_check(st, i, 0, NULL, NULL, 0, NULL, FLAG_NULL, compoundbegin, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN)) || + (rv = prefix_check(st, i, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN, compoundbegin)))) || + ((wordnum > 0) && compoundmiddle && + ((rv = suffix_check(st, i, 0, NULL, NULL, 0, NULL, FLAG_NULL, compoundmiddle, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN)) || + (rv = prefix_check(st, i, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN, compoundmiddle))))) + ) checked_prefix = 1; + // else check forbiddenwords and needaffix + } else if (rv->astr && (TESTAFF(rv->astr, forbiddenword, rv->alen) || + TESTAFF(rv->astr, needaffix, rv->alen) || + TESTAFF(rv->astr, ONLYUPCASEFLAG, rv->alen) || + (is_sug && nosuggest && TESTAFF(rv->astr, nosuggest, rv->alen)) + )) { + st[i] = ch; + //continue; + break; + } + + // check non_compound flag in suffix and prefix + if ((rv) && !hu_mov_rule && + ((pfx && pfx->getCont() && + TESTAFF(pfx->getCont(), compoundforbidflag, + pfx->getContLen())) || + (sfx && sfx->getCont() && + TESTAFF(sfx->getCont(), compoundforbidflag, + sfx->getContLen())))) { + rv = NULL; + } + + // check compoundend flag in suffix and prefix + if ((rv) && !checked_prefix && compoundend && !hu_mov_rule && + ((pfx && pfx->getCont() && + TESTAFF(pfx->getCont(), compoundend, + pfx->getContLen())) || + (sfx && sfx->getCont() && + TESTAFF(sfx->getCont(), compoundend, + sfx->getContLen())))) { + rv = NULL; + } + + // check compoundmiddle flag in suffix and prefix + if ((rv) && !checked_prefix && (wordnum==0) && compoundmiddle && !hu_mov_rule && + ((pfx && pfx->getCont() && + TESTAFF(pfx->getCont(), compoundmiddle, + pfx->getContLen())) || + (sfx && sfx->getCont() && + TESTAFF(sfx->getCont(), compoundmiddle, + sfx->getContLen())))) { + rv = NULL; + } + + // check forbiddenwords + if ((rv) && (rv->astr) && (TESTAFF(rv->astr, forbiddenword, rv->alen) || + TESTAFF(rv->astr, ONLYUPCASEFLAG, rv->alen) || + (is_sug && nosuggest && TESTAFF(rv->astr, nosuggest, rv->alen)))) { + return NULL; + } + + // increment word number, if the second root has a compoundroot flag + if ((rv) && compoundroot && + (TESTAFF(rv->astr, compoundroot, rv->alen))) { + wordnum++; + } + + // first word is acceptable in compound words? + if (((rv) && + ( checked_prefix || (words && words[wnum]) || + (compoundflag && TESTAFF(rv->astr, compoundflag, rv->alen)) || + ((oldwordnum == 0) && compoundbegin && TESTAFF(rv->astr, compoundbegin, rv->alen)) || + ((oldwordnum > 0) && compoundmiddle && TESTAFF(rv->astr, compoundmiddle, rv->alen))// || +// (numdefcpd && ) + +// LANG_hu section: spec. Hungarian rule + || ((langnum == LANG_hu) && hu_mov_rule && ( + TESTAFF(rv->astr, 'F', rv->alen) || // XXX hardwired Hungarian dictionary codes + TESTAFF(rv->astr, 'G', rv->alen) || + TESTAFF(rv->astr, 'H', rv->alen) + ) + ) +// END of LANG_hu section + ) && + ( + // test CHECKCOMPOUNDPATTERN conditions + scpd == 0 || checkcpdtable[scpd-1].cond == FLAG_NULL || + TESTAFF(rv->astr, checkcpdtable[scpd-1].cond, rv->alen) + ) + && ! (( checkcompoundtriple && scpd == 0 && !words && // test triple letters + (word[i-1]==word[i]) && ( + ((i>1) && (word[i-1]==word[i-2])) || + ((word[i-1]==word[i+1])) // may be word[i+1] == '\0' + ) + ) || + ( + checkcompoundcase && scpd == 0 && !words && cpdcase_check(word, i) + )) + ) +// LANG_hu section: spec. Hungarian rule + || ((!rv) && (langnum == LANG_hu) && hu_mov_rule && (rv = affix_check(st,i)) && + (sfx && sfx->getCont() && ( // XXX hardwired Hungarian dic. codes + TESTAFF(sfx->getCont(), (unsigned short) 'x', sfx->getContLen()) || + TESTAFF(sfx->getCont(), (unsigned short) '%', sfx->getContLen()) + ) + ) + ) + ) { // first word is ok condition + +// LANG_hu section: spec. Hungarian rule + if (langnum == LANG_hu) { + // calculate syllable number of the word + numsyllable += get_syllable(st, i); + // + 1 word, if syllable number of the prefix > 1 (hungarian convention) + if (pfx && (get_syllable(pfx->getKey(),strlen(pfx->getKey())) > 1)) wordnum++; + } +// END of LANG_hu section + + // NEXT WORD(S) + rv_first = rv; + st[i] = ch; + + do { // striple loop + + // check simplifiedtriple + if (simplifiedtriple) { + if (striple) { + checkedstriple = 1; + i--; // check "fahrt" instead of "ahrt" in "Schiffahrt" + } else if (i > 2 && *(word+i - 1) == *(word + i - 2)) striple = 1; + } + + rv = lookup((st+i)); // perhaps without prefix + + // search homonym with compound flag + while ((rv) && ((needaffix && TESTAFF(rv->astr, needaffix, rv->alen)) || + !((compoundflag && !words && TESTAFF(rv->astr, compoundflag, rv->alen)) || + (compoundend && !words && TESTAFF(rv->astr, compoundend, rv->alen)) || + (numdefcpd && words && defcpd_check(&words, wnum + 1, rv, NULL,1))) || + (scpd != 0 && checkcpdtable[scpd-1].cond2 != FLAG_NULL && + !TESTAFF(rv->astr, checkcpdtable[scpd-1].cond2, rv->alen)) + )) { + rv = rv->next_homonym; + } + + // check FORCEUCASE + if (rv && forceucase && (rv) && + (TESTAFF(rv->astr, forceucase, rv->alen)) && !(info && *info & SPELL_ORIGCAP)) rv = NULL; + + if (rv && words && words[wnum + 1]) return rv_first; + + oldnumsyllable2 = numsyllable; + oldwordnum2 = wordnum; + + +// LANG_hu section: spec. Hungarian rule, XXX hardwired dictionary code + if ((rv) && (langnum == LANG_hu) && (TESTAFF(rv->astr, 'I', rv->alen)) && !(TESTAFF(rv->astr, 'J', rv->alen))) { + numsyllable--; + } +// END of LANG_hu section + + // increment word number, if the second root has a compoundroot flag + if ((rv) && (compoundroot) && + (TESTAFF(rv->astr, compoundroot, rv->alen))) { + wordnum++; + } + + // check forbiddenwords + if ((rv) && (rv->astr) && (TESTAFF(rv->astr, forbiddenword, rv->alen) || + TESTAFF(rv->astr, ONLYUPCASEFLAG, rv->alen) || + (is_sug && nosuggest && TESTAFF(rv->astr, nosuggest, rv->alen)))) return NULL; + + // second word is acceptable, as a root? + // hungarian conventions: compounding is acceptable, + // when compound forms consist of 2 words, or if more, + // then the syllable number of root words must be 6, or lesser. + + if ((rv) && ( + (compoundflag && TESTAFF(rv->astr, compoundflag, rv->alen)) || + (compoundend && TESTAFF(rv->astr, compoundend, rv->alen)) + ) + && ( + ((cpdwordmax==-1) || (wordnum+1clen)<=cpdmaxsyllable)) + ) && + ( + // test CHECKCOMPOUNDPATTERN + !numcheckcpd || scpd != 0 || !cpdpat_check(word, i, rv_first, rv, 0) + ) && + ( + (!checkcompounddup || (rv != rv_first)) + ) + // test CHECKCOMPOUNDPATTERN conditions + && (scpd == 0 || checkcpdtable[scpd-1].cond2 == FLAG_NULL || + TESTAFF(rv->astr, checkcpdtable[scpd-1].cond2, rv->alen)) + ) + { + // forbid compound word, if it is a non compound word with typical fault + if (checkcompoundrep && cpdrep_check(word,len)) return NULL; + return rv_first; + } + + numsyllable = oldnumsyllable2; + wordnum = oldwordnum2; + + // perhaps second word has prefix or/and suffix + sfx = NULL; + sfxflag = FLAG_NULL; + rv = (compoundflag && !onlycpdrule) ? affix_check((word+i),strlen(word+i), compoundflag, IN_CPD_END) : NULL; + if (!rv && compoundend && !onlycpdrule) { + sfx = NULL; + pfx = NULL; + rv = affix_check((word+i),strlen(word+i), compoundend, IN_CPD_END); + } + + if (!rv && numdefcpd && words) { + rv = affix_check((word+i),strlen(word+i), 0, IN_CPD_END); + if (rv && defcpd_check(&words, wnum + 1, rv, NULL, 1)) return rv_first; + rv = NULL; + } + + // test CHECKCOMPOUNDPATTERN conditions (allowed forms) + if (rv && !(scpd == 0 || checkcpdtable[scpd-1].cond2 == FLAG_NULL || + TESTAFF(rv->astr, checkcpdtable[scpd-1].cond2, rv->alen))) rv = NULL; + + // test CHECKCOMPOUNDPATTERN conditions (forbidden compounds) + if (rv && numcheckcpd && scpd == 0 && cpdpat_check(word, i, rv_first, rv, affixed)) rv = NULL; + + // check non_compound flag in suffix and prefix + if ((rv) && + ((pfx && pfx->getCont() && + TESTAFF(pfx->getCont(), compoundforbidflag, + pfx->getContLen())) || + (sfx && sfx->getCont() && + TESTAFF(sfx->getCont(), compoundforbidflag, + sfx->getContLen())))) { + rv = NULL; + } + + // check FORCEUCASE + if (rv && forceucase && (rv) && + (TESTAFF(rv->astr, forceucase, rv->alen)) && !(info && *info & SPELL_ORIGCAP)) rv = NULL; + + // check forbiddenwords + if ((rv) && (rv->astr) && (TESTAFF(rv->astr, forbiddenword, rv->alen) || + TESTAFF(rv->astr, ONLYUPCASEFLAG, rv->alen) || + (is_sug && nosuggest && TESTAFF(rv->astr, nosuggest, rv->alen)))) return NULL; + + // pfxappnd = prefix of word+i, or NULL + // calculate syllable number of prefix. + // hungarian convention: when syllable number of prefix is more, + // than 1, the prefix+word counts as two words. + + if (langnum == LANG_hu) { + // calculate syllable number of the word + numsyllable += get_syllable(word + i, strlen(word + i)); + + // - affix syllable num. + // XXX only second suffix (inflections, not derivations) + if (sfxappnd) { + char * tmp = myrevstrdup(sfxappnd); + numsyllable -= get_syllable(tmp, strlen(tmp)); + free(tmp); + } + + // + 1 word, if syllable number of the prefix > 1 (hungarian convention) + if (pfx && (get_syllable(pfx->getKey(),strlen(pfx->getKey())) > 1)) wordnum++; + + // increment syllable num, if last word has a SYLLABLENUM flag + // and the suffix is beginning `s' + + if (cpdsyllablenum) { + switch (sfxflag) { + case 'c': { numsyllable+=2; break; } + case 'J': { numsyllable += 1; break; } + case 'I': { if (rv && TESTAFF(rv->astr, 'J', rv->alen)) numsyllable += 1; break; } + } + } + } + + // increment word number, if the second word has a compoundroot flag + if ((rv) && (compoundroot) && + (TESTAFF(rv->astr, compoundroot, rv->alen))) { + wordnum++; + } + + // second word is acceptable, as a word with prefix or/and suffix? + // hungarian conventions: compounding is acceptable, + // when compound forms consist 2 word, otherwise + // the syllable number of root words is 6, or lesser. + if ((rv) && + ( + ((cpdwordmax == -1) || (wordnum + 1 < cpdwordmax)) || + ((cpdmaxsyllable != 0) && + (numsyllable <= cpdmaxsyllable)) + ) + && ( + (!checkcompounddup || (rv != rv_first)) + )) { + // forbid compound word, if it is a non compound word with typical fault + if (checkcompoundrep && cpdrep_check(word, len)) return NULL; + return rv_first; + } + + numsyllable = oldnumsyllable2; + wordnum = oldwordnum2; + + // perhaps second word is a compound word (recursive call) + if (wordnum < maxwordnum) { + rv = compound_check((st+i),strlen(st+i), wordnum+1, + numsyllable, maxwordnum, wnum + 1, words, 0, is_sug, info); + + if (rv && numcheckcpd && ((scpd == 0 && cpdpat_check(word, i, rv_first, rv, affixed)) || + (scpd != 0 && !cpdpat_check(word, i, rv_first, rv, affixed)))) rv = NULL; + } else { + rv=NULL; + } + if (rv) { + // forbid compound word, if it is a non compound word with typical fault + if (checkcompoundrep || forbiddenword) { + struct hentry * rv2 = NULL; + + if (checkcompoundrep && cpdrep_check(word, len)) return NULL; + + // check first part + if (strncmp(rv->word, word + i, rv->blen) == 0) { + char r = *(st + i + rv->blen); + *(st + i + rv->blen) = '\0'; + + if (checkcompoundrep && cpdrep_check(st, i + rv->blen)) { + *(st + i + rv->blen) = r; + continue; + } + + if (forbiddenword) { + rv2 = lookup(word); + if (!rv2) rv2 = affix_check(word, len); + if (rv2 && rv2->astr && TESTAFF(rv2->astr, forbiddenword, rv2->alen) && + (strncmp(rv2->word, st, i + rv->blen) == 0)) { + return NULL; + } + } + *(st + i + rv->blen) = r; + } + } + return rv_first; + } + } while (striple && !checkedstriple); // end of striple loop + + if (checkedstriple) { + i++; + checkedstriple = 0; + striple = 0; + } + + } // first word is ok condition + + if (soldi != 0) { + i = soldi; + soldi = 0; + len = oldlen; + cmin = oldcmin; + cmax = oldcmax; + } + scpd++; + + + } while (!onlycpdrule && simplifiedcpd && scpd <= numcheckcpd); // end of simplifiedcpd loop + + scpd = 0; + wordnum = oldwordnum; + numsyllable = oldnumsyllable; + + if (soldi != 0) { + i = soldi; + strcpy(st, word); // XXX add more optim. + soldi = 0; + } else st[i] = ch; + + } while (numdefcpd && oldwordnum == 0 && !onlycpdrule && (onlycpdrule = 1)); // end of onlycpd loop + + } + + return NULL; +} + +// check if compound word is correctly spelled +// hu_mov_rule = spec. Hungarian rule (XXX) +int AffixMgr::compound_check_morph(const char * word, int len, + short wordnum, short numsyllable, short maxwordnum, short wnum, hentry ** words, + char hu_mov_rule = 0, char ** result = NULL, char * partresult = NULL) +{ + int i; + short oldnumsyllable, oldnumsyllable2, oldwordnum, oldwordnum2; + int ok = 0; + + struct hentry * rv = NULL; + struct hentry * rv_first; + struct hentry * rwords[MAXWORDLEN]; // buffer for COMPOUND pattern checking + char st [MAXWORDUTF8LEN + 4]; + char ch; + + int checked_prefix; + char presult[MAXLNLEN]; + + int cmin; + int cmax; + + int onlycpdrule; + int affixed = 0; + hentry ** oldwords = words; + + setcminmax(&cmin, &cmax, word, len); + + strcpy(st, word); + + for (i = cmin; i < cmax; i++) { + oldnumsyllable = numsyllable; + oldwordnum = wordnum; + checked_prefix = 0; + + // go to end of the UTF-8 character + if (utf8) { + for (; (st[i] & 0xc0) == 0x80; i++); + if (i >= cmax) return 0; + } + + words = oldwords; + onlycpdrule = (words) ? 1 : 0; + + do { // onlycpdrule loop + + oldnumsyllable = numsyllable; + oldwordnum = wordnum; + checked_prefix = 0; + + ch = st[i]; + st[i] = '\0'; + sfx = NULL; + + // FIRST WORD + + affixed = 1; + + *presult = '\0'; + if (partresult) mystrcat(presult, partresult, MAXLNLEN); + + rv = lookup(st); // perhaps without prefix + + // search homonym with compound flag + while ((rv) && !hu_mov_rule && + ((needaffix && TESTAFF(rv->astr, needaffix, rv->alen)) || + !((compoundflag && !words && !onlycpdrule && TESTAFF(rv->astr, compoundflag, rv->alen)) || + (compoundbegin && !wordnum && !onlycpdrule && + TESTAFF(rv->astr, compoundbegin, rv->alen)) || + (compoundmiddle && wordnum && !words && !onlycpdrule && + TESTAFF(rv->astr, compoundmiddle, rv->alen)) || + (numdefcpd && onlycpdrule && + ((!words && !wordnum && defcpd_check(&words, wnum, rv, (hentry **) &rwords, 0)) || + (words && defcpd_check(&words, wnum, rv, (hentry **) &rwords, 0)))) + ))) { + rv = rv->next_homonym; + } + + if (rv) affixed = 0; + + if (rv) { + sprintf(presult + strlen(presult), "%c%s%s", MSEP_FLD, MORPH_PART, st); + if (!HENTRY_FIND(rv, MORPH_STEM)) { + sprintf(presult + strlen(presult), "%c%s%s", MSEP_FLD, MORPH_STEM, st); + } + // store the pointer of the hash entry +// sprintf(presult + strlen(presult), "%c%s%p", MSEP_FLD, MORPH_HENTRY, rv); + if (HENTRY_DATA(rv)) { + sprintf(presult + strlen(presult), "%c%s", MSEP_FLD, HENTRY_DATA2(rv)); + } + } + + if (!rv) { + if (onlycpdrule) break; + if (compoundflag && + !(rv = prefix_check(st, i, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN, compoundflag))) { + if ((rv = suffix_check(st, i, 0, NULL, NULL, 0, NULL, + FLAG_NULL, compoundflag, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN)) && !hu_mov_rule && + sfx->getCont() && + ((compoundforbidflag && TESTAFF(sfx->getCont(), compoundforbidflag, + sfx->getContLen())) || (compoundend && + TESTAFF(sfx->getCont(), compoundend, + sfx->getContLen())))) { + rv = NULL; + } + } + + if (rv || + (((wordnum == 0) && compoundbegin && + ((rv = suffix_check(st, i, 0, NULL, NULL, 0, NULL, FLAG_NULL, compoundbegin, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN)) || + (rv = prefix_check(st, i, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN, compoundbegin)))) || + ((wordnum > 0) && compoundmiddle && + ((rv = suffix_check(st, i, 0, NULL, NULL, 0, NULL, FLAG_NULL, compoundmiddle, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN)) || + (rv = prefix_check(st, i, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN, compoundmiddle))))) + ) { + // char * p = prefix_check_morph(st, i, 0, compound); + char * p = NULL; + if (compoundflag) p = affix_check_morph(st, i, compoundflag); + if (!p || (*p == '\0')) { + if (p) free(p); + p = NULL; + if ((wordnum == 0) && compoundbegin) { + p = affix_check_morph(st, i, compoundbegin); + } else if ((wordnum > 0) && compoundmiddle) { + p = affix_check_morph(st, i, compoundmiddle); + } + } + if (p && (*p != '\0')) { + sprintf(presult + strlen(presult), "%c%s%s%s", MSEP_FLD, + MORPH_PART, st, line_uniq_app(&p, MSEP_REC)); + } + if (p) free(p); + checked_prefix = 1; + } + // else check forbiddenwords + } else if (rv->astr && (TESTAFF(rv->astr, forbiddenword, rv->alen) || + TESTAFF(rv->astr, ONLYUPCASEFLAG, rv->alen) || + TESTAFF(rv->astr, needaffix, rv->alen))) { + st[i] = ch; + continue; + } + + // check non_compound flag in suffix and prefix + if ((rv) && !hu_mov_rule && + ((pfx && pfx->getCont() && + TESTAFF(pfx->getCont(), compoundforbidflag, + pfx->getContLen())) || + (sfx && sfx->getCont() && + TESTAFF(sfx->getCont(), compoundforbidflag, + sfx->getContLen())))) { + continue; + } + + // check compoundend flag in suffix and prefix + if ((rv) && !checked_prefix && compoundend && !hu_mov_rule && + ((pfx && pfx->getCont() && + TESTAFF(pfx->getCont(), compoundend, + pfx->getContLen())) || + (sfx && sfx->getCont() && + TESTAFF(sfx->getCont(), compoundend, + sfx->getContLen())))) { + continue; + } + + // check compoundmiddle flag in suffix and prefix + if ((rv) && !checked_prefix && (wordnum==0) && compoundmiddle && !hu_mov_rule && + ((pfx && pfx->getCont() && + TESTAFF(pfx->getCont(), compoundmiddle, + pfx->getContLen())) || + (sfx && sfx->getCont() && + TESTAFF(sfx->getCont(), compoundmiddle, + sfx->getContLen())))) { + rv = NULL; + } + + // check forbiddenwords + if ((rv) && (rv->astr) && (TESTAFF(rv->astr, forbiddenword, rv->alen) + || TESTAFF(rv->astr, ONLYUPCASEFLAG, rv->alen))) continue; + + // increment word number, if the second root has a compoundroot flag + if ((rv) && (compoundroot) && + (TESTAFF(rv->astr, compoundroot, rv->alen))) { + wordnum++; + } + + // first word is acceptable in compound words? + if (((rv) && + ( checked_prefix || (words && words[wnum]) || + (compoundflag && TESTAFF(rv->astr, compoundflag, rv->alen)) || + ((oldwordnum == 0) && compoundbegin && TESTAFF(rv->astr, compoundbegin, rv->alen)) || + ((oldwordnum > 0) && compoundmiddle && TESTAFF(rv->astr, compoundmiddle, rv->alen)) +// LANG_hu section: spec. Hungarian rule + || ((langnum == LANG_hu) && // hu_mov_rule + hu_mov_rule && ( + TESTAFF(rv->astr, 'F', rv->alen) || + TESTAFF(rv->astr, 'G', rv->alen) || + TESTAFF(rv->astr, 'H', rv->alen) + ) + ) +// END of LANG_hu section + ) + && ! (( checkcompoundtriple && !words && // test triple letters + (word[i-1]==word[i]) && ( + ((i>1) && (word[i-1]==word[i-2])) || + ((word[i-1]==word[i+1])) // may be word[i+1] == '\0' + ) + ) || + ( + // test CHECKCOMPOUNDPATTERN + numcheckcpd && !words && cpdpat_check(word, i, rv, NULL, affixed) + ) || + ( + checkcompoundcase && !words && cpdcase_check(word, i) + )) + ) +// LANG_hu section: spec. Hungarian rule + || ((!rv) && (langnum == LANG_hu) && hu_mov_rule && (rv = affix_check(st,i)) && + (sfx && sfx->getCont() && ( + TESTAFF(sfx->getCont(), (unsigned short) 'x', sfx->getContLen()) || + TESTAFF(sfx->getCont(), (unsigned short) '%', sfx->getContLen()) + ) + ) + ) +// END of LANG_hu section + ) { + +// LANG_hu section: spec. Hungarian rule + if (langnum == LANG_hu) { + // calculate syllable number of the word + numsyllable += get_syllable(st, i); + + // + 1 word, if syllable number of the prefix > 1 (hungarian convention) + if (pfx && (get_syllable(pfx->getKey(),strlen(pfx->getKey())) > 1)) wordnum++; + } +// END of LANG_hu section + + // NEXT WORD(S) + rv_first = rv; + rv = lookup((word+i)); // perhaps without prefix + + // search homonym with compound flag + while ((rv) && ((needaffix && TESTAFF(rv->astr, needaffix, rv->alen)) || + !((compoundflag && !words && TESTAFF(rv->astr, compoundflag, rv->alen)) || + (compoundend && !words && TESTAFF(rv->astr, compoundend, rv->alen)) || + (numdefcpd && words && defcpd_check(&words, wnum + 1, rv, NULL,1))))) { + rv = rv->next_homonym; + } + + if (rv && words && words[wnum + 1]) { + mystrcat(*result, presult, MAXLNLEN); + mystrcat(*result, " ", MAXLNLEN); + mystrcat(*result, MORPH_PART, MAXLNLEN); + mystrcat(*result, word+i, MAXLNLEN); + if (complexprefixes && HENTRY_DATA(rv)) mystrcat(*result, HENTRY_DATA2(rv), MAXLNLEN); + if (!HENTRY_FIND(rv, MORPH_STEM)) { + mystrcat(*result, " ", MAXLNLEN); + mystrcat(*result, MORPH_STEM, MAXLNLEN); + mystrcat(*result, HENTRY_WORD(rv), MAXLNLEN); + } + // store the pointer of the hash entry +// sprintf(*result + strlen(*result), " %s%p", MORPH_HENTRY, rv); + if (!complexprefixes && HENTRY_DATA(rv)) { + mystrcat(*result, " ", MAXLNLEN); + mystrcat(*result, HENTRY_DATA2(rv), MAXLNLEN); + } + mystrcat(*result, "\n", MAXLNLEN); + ok = 1; + return 0; + } + + oldnumsyllable2 = numsyllable; + oldwordnum2 = wordnum; + +// LANG_hu section: spec. Hungarian rule + if ((rv) && (langnum == LANG_hu) && (TESTAFF(rv->astr, 'I', rv->alen)) && !(TESTAFF(rv->astr, 'J', rv->alen))) { + numsyllable--; + } +// END of LANG_hu section + // increment word number, if the second root has a compoundroot flag + if ((rv) && (compoundroot) && + (TESTAFF(rv->astr, compoundroot, rv->alen))) { + wordnum++; + } + + // check forbiddenwords + if ((rv) && (rv->astr) && (TESTAFF(rv->astr, forbiddenword, rv->alen) || + TESTAFF(rv->astr, ONLYUPCASEFLAG, rv->alen))) { + st[i] = ch; + continue; + } + + // second word is acceptable, as a root? + // hungarian conventions: compounding is acceptable, + // when compound forms consist of 2 words, or if more, + // then the syllable number of root words must be 6, or lesser. + if ((rv) && ( + (compoundflag && TESTAFF(rv->astr, compoundflag, rv->alen)) || + (compoundend && TESTAFF(rv->astr, compoundend, rv->alen)) + ) + && ( + ((cpdwordmax==-1) || (wordnum+1blen)<=cpdmaxsyllable)) + ) + && ( + (!checkcompounddup || (rv != rv_first)) + ) + ) + { + // bad compound word + mystrcat(*result, presult, MAXLNLEN); + mystrcat(*result, " ", MAXLNLEN); + mystrcat(*result, MORPH_PART, MAXLNLEN); + mystrcat(*result, word+i, MAXLNLEN); + + if (HENTRY_DATA(rv)) { + if (complexprefixes) mystrcat(*result, HENTRY_DATA2(rv), MAXLNLEN); + if (! HENTRY_FIND(rv, MORPH_STEM)) { + mystrcat(*result, " ", MAXLNLEN); + mystrcat(*result, MORPH_STEM, MAXLNLEN); + mystrcat(*result, HENTRY_WORD(rv), MAXLNLEN); + } + // store the pointer of the hash entry +// sprintf(*result + strlen(*result), " %s%p", MORPH_HENTRY, rv); + if (!complexprefixes) { + mystrcat(*result, " ", MAXLNLEN); + mystrcat(*result, HENTRY_DATA2(rv), MAXLNLEN); + } + } + mystrcat(*result, "\n", MAXLNLEN); + ok = 1; + } + + numsyllable = oldnumsyllable2 ; + wordnum = oldwordnum2; + + // perhaps second word has prefix or/and suffix + sfx = NULL; + sfxflag = FLAG_NULL; + + if (compoundflag && !onlycpdrule) rv = affix_check((word+i),strlen(word+i), compoundflag); else rv = NULL; + + if (!rv && compoundend && !onlycpdrule) { + sfx = NULL; + pfx = NULL; + rv = affix_check((word+i),strlen(word+i), compoundend); + } + + if (!rv && numdefcpd && words) { + rv = affix_check((word+i),strlen(word+i), 0, IN_CPD_END); + if (rv && words && defcpd_check(&words, wnum + 1, rv, NULL, 1)) { + char * m = NULL; + if (compoundflag) m = affix_check_morph((word+i),strlen(word+i), compoundflag); + if ((!m || *m == '\0') && compoundend) { + if (m) free(m); + m = affix_check_morph((word+i),strlen(word+i), compoundend); + } + mystrcat(*result, presult, MAXLNLEN); + if (m || (*m != '\0')) { + sprintf(*result + strlen(*result), "%c%s%s%s", MSEP_FLD, + MORPH_PART, word + i, line_uniq_app(&m, MSEP_REC)); + } + if (m) free(m); + mystrcat(*result, "\n", MAXLNLEN); + ok = 1; + } + } + + // check non_compound flag in suffix and prefix + if ((rv) && + ((pfx && pfx->getCont() && + TESTAFF(pfx->getCont(), compoundforbidflag, + pfx->getContLen())) || + (sfx && sfx->getCont() && + TESTAFF(sfx->getCont(), compoundforbidflag, + sfx->getContLen())))) { + rv = NULL; + } + + // check forbiddenwords + if ((rv) && (rv->astr) && (TESTAFF(rv->astr,forbiddenword,rv->alen) || + TESTAFF(rv->astr, ONLYUPCASEFLAG, rv->alen)) + && (! TESTAFF(rv->astr, needaffix, rv->alen))) { + st[i] = ch; + continue; + } + + if (langnum == LANG_hu) { + // calculate syllable number of the word + numsyllable += get_syllable(word + i, strlen(word + i)); + + // - affix syllable num. + // XXX only second suffix (inflections, not derivations) + if (sfxappnd) { + char * tmp = myrevstrdup(sfxappnd); + numsyllable -= get_syllable(tmp, strlen(tmp)); + free(tmp); + } + + // + 1 word, if syllable number of the prefix > 1 (hungarian convention) + if (pfx && (get_syllable(pfx->getKey(),strlen(pfx->getKey())) > 1)) wordnum++; + + // increment syllable num, if last word has a SYLLABLENUM flag + // and the suffix is beginning `s' + + if (cpdsyllablenum) { + switch (sfxflag) { + case 'c': { numsyllable+=2; break; } + case 'J': { numsyllable += 1; break; } + case 'I': { if (rv && TESTAFF(rv->astr, 'J', rv->alen)) numsyllable += 1; break; } + } + } + } + + // increment word number, if the second word has a compoundroot flag + if ((rv) && (compoundroot) && + (TESTAFF(rv->astr, compoundroot, rv->alen))) { + wordnum++; + } + // second word is acceptable, as a word with prefix or/and suffix? + // hungarian conventions: compounding is acceptable, + // when compound forms consist 2 word, otherwise + // the syllable number of root words is 6, or lesser. + if ((rv) && + ( + ((cpdwordmax==-1) || (wordnum+1 0) && *s1 && (*s1 == *end_of_s2)) { + s1++; + end_of_s2--; + len--; + } + return (*s1 == '\0'); + } + */ + +inline int AffixMgr::isRevSubset(const char * s1, const char * end_of_s2, int len) + { + while ((len > 0) && (*s1 != '\0') && ((*s1 == *end_of_s2) || (*s1 == '.'))) { + s1++; + end_of_s2--; + len--; + } + return (*s1 == '\0'); + } + +// check word for suffixes + +struct hentry * AffixMgr::suffix_check (const char * word, int len, + int sfxopts, PfxEntry * ppfx, char ** wlst, int maxSug, int * ns, + const FLAG cclass, const FLAG needflag, char in_compound) +{ + struct hentry * rv = NULL; + PfxEntry* ep = ppfx; + + // first handle the special case of 0 length suffixes + SfxEntry * se = sStart[0]; + + while (se) { + if (!cclass || se->getCont()) { + // suffixes are not allowed in beginning of compounds + if ((((in_compound != IN_CPD_BEGIN)) || // && !cclass + // except when signed with compoundpermitflag flag + (se->getCont() && compoundpermitflag && + TESTAFF(se->getCont(),compoundpermitflag,se->getContLen()))) && (!circumfix || + // no circumfix flag in prefix and suffix + ((!ppfx || !(ep->getCont()) || !TESTAFF(ep->getCont(), + circumfix, ep->getContLen())) && + (!se->getCont() || !(TESTAFF(se->getCont(),circumfix,se->getContLen())))) || + // circumfix flag in prefix AND suffix + ((ppfx && (ep->getCont()) && TESTAFF(ep->getCont(), + circumfix, ep->getContLen())) && + (se->getCont() && (TESTAFF(se->getCont(),circumfix,se->getContLen()))))) && + // fogemorpheme + (in_compound || + !(se->getCont() && (TESTAFF(se->getCont(), onlyincompound, se->getContLen())))) && + // needaffix on prefix or first suffix + (cclass || + !(se->getCont() && TESTAFF(se->getCont(), needaffix, se->getContLen())) || + (ppfx && !((ep->getCont()) && + TESTAFF(ep->getCont(), needaffix, + ep->getContLen()))) + )) { + rv = se->checkword(word,len, sfxopts, ppfx, wlst, maxSug, ns, (FLAG) cclass, + needflag, (in_compound ? 0 : onlyincompound)); + if (rv) { + sfx=se; // BUG: sfx not stateless + return rv; + } + } + } + se = se->getNext(); + } + + // now handle the general case + if (len == 0) return NULL; // FULLSTRIP + unsigned char sp= *((const unsigned char *)(word + len - 1)); + SfxEntry * sptr = sStart[sp]; + + while (sptr) { + if (isRevSubset(sptr->getKey(), word + len - 1, len) + ) { + // suffixes are not allowed in beginning of compounds + if ((((in_compound != IN_CPD_BEGIN)) || // && !cclass + // except when signed with compoundpermitflag flag + (sptr->getCont() && compoundpermitflag && + TESTAFF(sptr->getCont(),compoundpermitflag,sptr->getContLen()))) && (!circumfix || + // no circumfix flag in prefix and suffix + ((!ppfx || !(ep->getCont()) || !TESTAFF(ep->getCont(), + circumfix, ep->getContLen())) && + (!sptr->getCont() || !(TESTAFF(sptr->getCont(),circumfix,sptr->getContLen())))) || + // circumfix flag in prefix AND suffix + ((ppfx && (ep->getCont()) && TESTAFF(ep->getCont(), + circumfix, ep->getContLen())) && + (sptr->getCont() && (TESTAFF(sptr->getCont(),circumfix,sptr->getContLen()))))) && + // fogemorpheme + (in_compound || + !((sptr->getCont() && (TESTAFF(sptr->getCont(), onlyincompound, sptr->getContLen()))))) && + // needaffix on prefix or first suffix + (cclass || + !(sptr->getCont() && TESTAFF(sptr->getCont(), needaffix, sptr->getContLen())) || + (ppfx && !((ep->getCont()) && + TESTAFF(ep->getCont(), needaffix, + ep->getContLen()))) + ) + ) if (in_compound != IN_CPD_END || ppfx || !(sptr->getCont() && TESTAFF(sptr->getCont(), onlyincompound, sptr->getContLen()))) { + rv = sptr->checkword(word,len, sfxopts, ppfx, wlst, + maxSug, ns, cclass, needflag, (in_compound ? 0 : onlyincompound)); + if (rv) { + sfx=sptr; // BUG: sfx not stateless + sfxflag = sptr->getFlag(); // BUG: sfxflag not stateless + if (!sptr->getCont()) sfxappnd=sptr->getKey(); // BUG: sfxappnd not stateless + return rv; + } + } + sptr = sptr->getNextEQ(); + } else { + sptr = sptr->getNextNE(); + } + } + + return NULL; +} + +// check word for two-level suffixes + +struct hentry * AffixMgr::suffix_check_twosfx(const char * word, int len, + int sfxopts, PfxEntry * ppfx, const FLAG needflag) +{ + struct hentry * rv = NULL; + + // first handle the special case of 0 length suffixes + SfxEntry * se = sStart[0]; + while (se) { + if (contclasses[se->getFlag()]) + { + rv = se->check_twosfx(word,len, sfxopts, ppfx, needflag); + if (rv) return rv; + } + se = se->getNext(); + } + + // now handle the general case + if (len == 0) return NULL; // FULLSTRIP + unsigned char sp = *((const unsigned char *)(word + len - 1)); + SfxEntry * sptr = sStart[sp]; + + while (sptr) { + if (isRevSubset(sptr->getKey(), word + len - 1, len)) { + if (contclasses[sptr->getFlag()]) + { + rv = sptr->check_twosfx(word,len, sfxopts, ppfx, needflag); + if (rv) { + sfxflag = sptr->getFlag(); // BUG: sfxflag not stateless + if (!sptr->getCont()) sfxappnd=sptr->getKey(); // BUG: sfxappnd not stateless + return rv; + } + } + sptr = sptr->getNextEQ(); + } else { + sptr = sptr->getNextNE(); + } + } + + return NULL; +} + +char * AffixMgr::suffix_check_twosfx_morph(const char * word, int len, + int sfxopts, PfxEntry * ppfx, const FLAG needflag) +{ + char result[MAXLNLEN]; + char result2[MAXLNLEN]; + char result3[MAXLNLEN]; + + char * st; + + result[0] = '\0'; + result2[0] = '\0'; + result3[0] = '\0'; + + // first handle the special case of 0 length suffixes + SfxEntry * se = sStart[0]; + while (se) { + if (contclasses[se->getFlag()]) + { + st = se->check_twosfx_morph(word,len, sfxopts, ppfx, needflag); + if (st) { + if (ppfx) { + if (ppfx->getMorph()) { + mystrcat(result, ppfx->getMorph(), MAXLNLEN); + mystrcat(result, " ", MAXLNLEN); + } else debugflag(result, ppfx->getFlag()); + } + mystrcat(result, st, MAXLNLEN); + free(st); + if (se->getMorph()) { + mystrcat(result, " ", MAXLNLEN); + mystrcat(result, se->getMorph(), MAXLNLEN); + } else debugflag(result, se->getFlag()); + mystrcat(result, "\n", MAXLNLEN); + } + } + se = se->getNext(); + } + + // now handle the general case + if (len == 0) return NULL; // FULLSTRIP + unsigned char sp = *((const unsigned char *)(word + len - 1)); + SfxEntry * sptr = sStart[sp]; + + while (sptr) { + if (isRevSubset(sptr->getKey(), word + len - 1, len)) { + if (contclasses[sptr->getFlag()]) + { + st = sptr->check_twosfx_morph(word,len, sfxopts, ppfx, needflag); + if (st) { + sfxflag = sptr->getFlag(); // BUG: sfxflag not stateless + if (!sptr->getCont()) sfxappnd=sptr->getKey(); // BUG: sfxappnd not stateless + strcpy(result2, st); + free(st); + + result3[0] = '\0'; + + if (sptr->getMorph()) { + mystrcat(result3, " ", MAXLNLEN); + mystrcat(result3, sptr->getMorph(), MAXLNLEN); + } else debugflag(result3, sptr->getFlag()); + strlinecat(result2, result3); + mystrcat(result2, "\n", MAXLNLEN); + mystrcat(result, result2, MAXLNLEN); + } + } + sptr = sptr->getNextEQ(); + } else { + sptr = sptr->getNextNE(); + } + } + if (*result) return mystrdup(result); + return NULL; +} + +char * AffixMgr::suffix_check_morph(const char * word, int len, + int sfxopts, PfxEntry * ppfx, const FLAG cclass, const FLAG needflag, char in_compound) +{ + char result[MAXLNLEN]; + + struct hentry * rv = NULL; + + result[0] = '\0'; + + PfxEntry* ep = ppfx; + + // first handle the special case of 0 length suffixes + SfxEntry * se = sStart[0]; + while (se) { + if (!cclass || se->getCont()) { + // suffixes are not allowed in beginning of compounds + if (((((in_compound != IN_CPD_BEGIN)) || // && !cclass + // except when signed with compoundpermitflag flag + (se->getCont() && compoundpermitflag && + TESTAFF(se->getCont(),compoundpermitflag,se->getContLen()))) && (!circumfix || + // no circumfix flag in prefix and suffix + ((!ppfx || !(ep->getCont()) || !TESTAFF(ep->getCont(), + circumfix, ep->getContLen())) && + (!se->getCont() || !(TESTAFF(se->getCont(),circumfix,se->getContLen())))) || + // circumfix flag in prefix AND suffix + ((ppfx && (ep->getCont()) && TESTAFF(ep->getCont(), + circumfix, ep->getContLen())) && + (se->getCont() && (TESTAFF(se->getCont(),circumfix,se->getContLen()))))) && + // fogemorpheme + (in_compound || + !((se->getCont() && (TESTAFF(se->getCont(), onlyincompound, se->getContLen()))))) && + // needaffix on prefix or first suffix + (cclass || + !(se->getCont() && TESTAFF(se->getCont(), needaffix, se->getContLen())) || + (ppfx && !((ep->getCont()) && + TESTAFF(ep->getCont(), needaffix, + ep->getContLen()))) + ) + )) + rv = se->checkword(word, len, sfxopts, ppfx, NULL, 0, 0, cclass, needflag); + while (rv) { + if (ppfx) { + if (ppfx->getMorph()) { + mystrcat(result, ppfx->getMorph(), MAXLNLEN); + mystrcat(result, " ", MAXLNLEN); + } else debugflag(result, ppfx->getFlag()); + } + if (complexprefixes && HENTRY_DATA(rv)) mystrcat(result, HENTRY_DATA2(rv), MAXLNLEN); + if (! HENTRY_FIND(rv, MORPH_STEM)) { + mystrcat(result, " ", MAXLNLEN); + mystrcat(result, MORPH_STEM, MAXLNLEN); + mystrcat(result, HENTRY_WORD(rv), MAXLNLEN); + } + // store the pointer of the hash entry +// sprintf(result + strlen(result), " %s%p", MORPH_HENTRY, rv); + + if (!complexprefixes && HENTRY_DATA(rv)) { + mystrcat(result, " ", MAXLNLEN); + mystrcat(result, HENTRY_DATA2(rv), MAXLNLEN); + } + if (se->getMorph()) { + mystrcat(result, " ", MAXLNLEN); + mystrcat(result, se->getMorph(), MAXLNLEN); + } else debugflag(result, se->getFlag()); + mystrcat(result, "\n", MAXLNLEN); + rv = se->get_next_homonym(rv, sfxopts, ppfx, cclass, needflag); + } + } + se = se->getNext(); + } + + // now handle the general case + if (len == 0) return NULL; // FULLSTRIP + unsigned char sp = *((const unsigned char *)(word + len - 1)); + SfxEntry * sptr = sStart[sp]; + + while (sptr) { + if (isRevSubset(sptr->getKey(), word + len - 1, len) + ) { + // suffixes are not allowed in beginning of compounds + if (((((in_compound != IN_CPD_BEGIN)) || // && !cclass + // except when signed with compoundpermitflag flag + (sptr->getCont() && compoundpermitflag && + TESTAFF(sptr->getCont(),compoundpermitflag,sptr->getContLen()))) && (!circumfix || + // no circumfix flag in prefix and suffix + ((!ppfx || !(ep->getCont()) || !TESTAFF(ep->getCont(), + circumfix, ep->getContLen())) && + (!sptr->getCont() || !(TESTAFF(sptr->getCont(),circumfix,sptr->getContLen())))) || + // circumfix flag in prefix AND suffix + ((ppfx && (ep->getCont()) && TESTAFF(ep->getCont(), + circumfix, ep->getContLen())) && + (sptr->getCont() && (TESTAFF(sptr->getCont(),circumfix,sptr->getContLen()))))) && + // fogemorpheme + (in_compound || + !((sptr->getCont() && (TESTAFF(sptr->getCont(), onlyincompound, sptr->getContLen()))))) && + // needaffix on first suffix + (cclass || !(sptr->getCont() && + TESTAFF(sptr->getCont(), needaffix, sptr->getContLen()))) + )) rv = sptr->checkword(word,len, sfxopts, ppfx, NULL, 0, 0, cclass, needflag); + while (rv) { + if (ppfx) { + if (ppfx->getMorph()) { + mystrcat(result, ppfx->getMorph(), MAXLNLEN); + mystrcat(result, " ", MAXLNLEN); + } else debugflag(result, ppfx->getFlag()); + } + if (complexprefixes && HENTRY_DATA(rv)) mystrcat(result, HENTRY_DATA2(rv), MAXLNLEN); + if (! HENTRY_FIND(rv, MORPH_STEM)) { + mystrcat(result, " ", MAXLNLEN); + mystrcat(result, MORPH_STEM, MAXLNLEN); + mystrcat(result, HENTRY_WORD(rv), MAXLNLEN); + } + // store the pointer of the hash entry +// sprintf(result + strlen(result), " %s%p", MORPH_HENTRY, rv); + + if (!complexprefixes && HENTRY_DATA(rv)) { + mystrcat(result, " ", MAXLNLEN); + mystrcat(result, HENTRY_DATA2(rv), MAXLNLEN); + } + + if (sptr->getMorph()) { + mystrcat(result, " ", MAXLNLEN); + mystrcat(result, sptr->getMorph(), MAXLNLEN); + } else debugflag(result, sptr->getFlag()); + mystrcat(result, "\n", MAXLNLEN); + rv = sptr->get_next_homonym(rv, sfxopts, ppfx, cclass, needflag); + } + sptr = sptr->getNextEQ(); + } else { + sptr = sptr->getNextNE(); + } + } + + if (*result) return mystrdup(result); + return NULL; +} + +// check if word with affixes is correctly spelled +struct hentry * AffixMgr::affix_check (const char * word, int len, const FLAG needflag, char in_compound) +{ + struct hentry * rv= NULL; + + // check all prefixes (also crossed with suffixes if allowed) + rv = prefix_check(word, len, in_compound, needflag); + if (rv) return rv; + + // if still not found check all suffixes + rv = suffix_check(word, len, 0, NULL, NULL, 0, NULL, FLAG_NULL, needflag, in_compound); + + if (havecontclass) { + sfx = NULL; + pfx = NULL; + + if (rv) return rv; + // if still not found check all two-level suffixes + rv = suffix_check_twosfx(word, len, 0, NULL, needflag); + + if (rv) return rv; + // if still not found check all two-level suffixes + rv = prefix_check_twosfx(word, len, IN_CPD_NOT, needflag); + } + + return rv; +} + +// check if word with affixes is correctly spelled +char * AffixMgr::affix_check_morph(const char * word, int len, const FLAG needflag, char in_compound) +{ + char result[MAXLNLEN]; + char * st = NULL; + + *result = '\0'; + + // check all prefixes (also crossed with suffixes if allowed) + st = prefix_check_morph(word, len, in_compound); + if (st) { + mystrcat(result, st, MAXLNLEN); + free(st); + } + + // if still not found check all suffixes + st = suffix_check_morph(word, len, 0, NULL, '\0', needflag, in_compound); + if (st) { + mystrcat(result, st, MAXLNLEN); + free(st); + } + + if (havecontclass) { + sfx = NULL; + pfx = NULL; + // if still not found check all two-level suffixes + st = suffix_check_twosfx_morph(word, len, 0, NULL, needflag); + if (st) { + mystrcat(result, st, MAXLNLEN); + free(st); + } + + // if still not found check all two-level suffixes + st = prefix_check_twosfx_morph(word, len, IN_CPD_NOT, needflag); + if (st) { + mystrcat(result, st, MAXLNLEN); + free(st); + } + } + + return mystrdup(result); +} + +char * AffixMgr::morphgen(char * ts, int wl, const unsigned short * ap, + unsigned short al, char * morph, char * targetmorph, int level) +{ + // handle suffixes + char * stemmorph; + char * stemmorphcatpos; + char mymorph[MAXLNLEN]; + + if (!morph) return NULL; + + // check substandard flag + if (TESTAFF(ap, substandard, al)) return NULL; + + if (morphcmp(morph, targetmorph) == 0) return mystrdup(ts); + +// int targetcount = get_sfxcount(targetmorph); + + // use input suffix fields, if exist + if (strstr(morph, MORPH_INFL_SFX) || strstr(morph, MORPH_DERI_SFX)) { + stemmorph = mymorph; + strcpy(stemmorph, morph); + mystrcat(stemmorph, " ", MAXLNLEN); + stemmorphcatpos = stemmorph + strlen(stemmorph); + } else { + stemmorph = morph; + stemmorphcatpos = NULL; + } + + for (int i = 0; i < al; i++) { + const unsigned char c = (unsigned char) (ap[i] & 0x00FF); + SfxEntry * sptr = sFlag[c]; + while (sptr) { + if (sptr->getFlag() == ap[i] && sptr->getMorph() && ((sptr->getContLen() == 0) || + // don't generate forms with substandard affixes + !TESTAFF(sptr->getCont(), substandard, sptr->getContLen()))) { + + if (stemmorphcatpos) strcpy(stemmorphcatpos, sptr->getMorph()); + else stemmorph = (char *) sptr->getMorph(); + + int cmp = morphcmp(stemmorph, targetmorph); + + if (cmp == 0) { + char * newword = sptr->add(ts, wl); + if (newword) { + hentry * check = pHMgr->lookup(newword); // XXX extra dic + if (!check || !check->astr || + !(TESTAFF(check->astr, forbiddenword, check->alen) || + TESTAFF(check->astr, ONLYUPCASEFLAG, check->alen))) { + return newword; + } + free(newword); + } + } + + // recursive call for secondary suffixes + if ((level == 0) && (cmp == 1) && (sptr->getContLen() > 0) && +// (get_sfxcount(stemmorph) < targetcount) && + !TESTAFF(sptr->getCont(), substandard, sptr->getContLen())) { + char * newword = sptr->add(ts, wl); + if (newword) { + char * newword2 = morphgen(newword, strlen(newword), sptr->getCont(), + sptr->getContLen(), stemmorph, targetmorph, 1); + + if (newword2) { + free(newword); + return newword2; + } + free(newword); + newword = NULL; + } + } + } + sptr = sptr->getFlgNxt(); + } + } + return NULL; +} + + +int AffixMgr::expand_rootword(struct guessword * wlst, int maxn, const char * ts, + int wl, const unsigned short * ap, unsigned short al, char * bad, int badl, + char * phon) +{ + int nh=0; + // first add root word to list + if ((nh < maxn) && !(al && ((needaffix && TESTAFF(ap, needaffix, al)) || + (onlyincompound && TESTAFF(ap, onlyincompound, al))))) { + wlst[nh].word = mystrdup(ts); + if (!wlst[nh].word) return 0; + wlst[nh].allow = (1 == 0); + wlst[nh].orig = NULL; + nh++; + // add special phonetic version + if (phon && (nh < maxn)) { + wlst[nh].word = mystrdup(phon); + if (!wlst[nh].word) return nh - 1; + wlst[nh].allow = (1 == 0); + wlst[nh].orig = mystrdup(ts); + if (!wlst[nh].orig) return nh - 1; + nh++; + } + } + + // handle suffixes + for (int i = 0; i < al; i++) { + const unsigned char c = (unsigned char) (ap[i] & 0x00FF); + SfxEntry * sptr = sFlag[c]; + while (sptr) { + if ((sptr->getFlag() == ap[i]) && (!sptr->getKeyLen() || ((badl > sptr->getKeyLen()) && + (strcmp(sptr->getAffix(), bad + badl - sptr->getKeyLen()) == 0))) && + // check needaffix flag + !(sptr->getCont() && ((needaffix && + TESTAFF(sptr->getCont(), needaffix, sptr->getContLen())) || + (circumfix && + TESTAFF(sptr->getCont(), circumfix, sptr->getContLen())) || + (onlyincompound && + TESTAFF(sptr->getCont(), onlyincompound, sptr->getContLen())))) + ) { + char * newword = sptr->add(ts, wl); + if (newword) { + if (nh < maxn) { + wlst[nh].word = newword; + wlst[nh].allow = sptr->allowCross(); + wlst[nh].orig = NULL; + nh++; + // add special phonetic version + if (phon && (nh < maxn)) { + char st[MAXWORDUTF8LEN]; + strcpy(st, phon); + strcat(st, sptr->getKey()); + reverseword(st + strlen(phon)); + wlst[nh].word = mystrdup(st); + if (!wlst[nh].word) return nh - 1; + wlst[nh].allow = (1 == 0); + wlst[nh].orig = mystrdup(newword); + if (!wlst[nh].orig) return nh - 1; + nh++; + } + } else { + free(newword); + } + } + } + sptr = sptr->getFlgNxt(); + } + } + + int n = nh; + + // handle cross products of prefixes and suffixes + for (int j=1;jgetFlag() == ap[k]) && cptr->allowCross() && (!cptr->getKeyLen() || ((badl > cptr->getKeyLen()) && + (strncmp(cptr->getKey(), bad, cptr->getKeyLen()) == 0)))) { + int l1 = strlen(wlst[j].word); + char * newword = cptr->add(wlst[j].word, l1); + if (newword) { + if (nh < maxn) { + wlst[nh].word = newword; + wlst[nh].allow = cptr->allowCross(); + wlst[nh].orig = NULL; + nh++; + } else { + free(newword); + } + } + } + cptr = cptr->getFlgNxt(); + } + } + } + + + // now handle pure prefixes + for (int m = 0; m < al; m ++) { + const unsigned char c = (unsigned char) (ap[m] & 0x00FF); + PfxEntry * ptr = pFlag[c]; + while (ptr) { + if ((ptr->getFlag() == ap[m]) && (!ptr->getKeyLen() || ((badl > ptr->getKeyLen()) && + (strncmp(ptr->getKey(), bad, ptr->getKeyLen()) == 0))) && + // check needaffix flag + !(ptr->getCont() && ((needaffix && + TESTAFF(ptr->getCont(), needaffix, ptr->getContLen())) || + (circumfix && + TESTAFF(ptr->getCont(), circumfix, ptr->getContLen())) || + (onlyincompound && + TESTAFF(ptr->getCont(), onlyincompound, ptr->getContLen())))) + ) { + char * newword = ptr->add(ts, wl); + if (newword) { + if (nh < maxn) { + wlst[nh].word = newword; + wlst[nh].allow = ptr->allowCross(); + wlst[nh].orig = NULL; + nh++; + } else { + free(newword); + } + } + } + ptr = ptr->getFlgNxt(); + } + } + + return nh; +} + +// return length of replacing table +int AffixMgr::get_numrep() const +{ + return numrep; +} + +// return replacing table +struct replentry * AffixMgr::get_reptable() const +{ + if (! reptable ) return NULL; + return reptable; +} + +// return iconv table +RepList * AffixMgr::get_iconvtable() const +{ + if (! iconvtable ) return NULL; + return iconvtable; +} + +// return oconv table +RepList * AffixMgr::get_oconvtable() const +{ + if (! oconvtable ) return NULL; + return oconvtable; +} + +// return replacing table +struct phonetable * AffixMgr::get_phonetable() const +{ + if (! phone ) return NULL; + return phone; +} + +// return length of character map table +int AffixMgr::get_nummap() const +{ + return nummap; +} + +// return character map table +struct mapentry * AffixMgr::get_maptable() const +{ + if (! maptable ) return NULL; + return maptable; +} + +// return length of word break table +int AffixMgr::get_numbreak() const +{ + return numbreak; +} + +// return character map table +char ** AffixMgr::get_breaktable() const +{ + if (! breaktable ) return NULL; + return breaktable; +} + +// return text encoding of dictionary +char * AffixMgr::get_encoding() +{ + if (! encoding ) encoding = mystrdup(SPELL_ENCODING); + return mystrdup(encoding); +} + +// return text encoding of dictionary +int AffixMgr::get_langnum() const +{ + return langnum; +} + +// return double prefix option +int AffixMgr::get_complexprefixes() const +{ + return complexprefixes; +} + +// return FULLSTRIP option +int AffixMgr::get_fullstrip() const +{ + return fullstrip; +} + +FLAG AffixMgr::get_keepcase() const +{ + return keepcase; +} + +FLAG AffixMgr::get_forceucase() const +{ + return forceucase; +} + +FLAG AffixMgr::get_warn() const +{ + return warn; +} + +int AffixMgr::get_forbidwarn() const +{ + return forbidwarn; +} + +int AffixMgr::get_checksharps() const +{ + return checksharps; +} + +char * AffixMgr::encode_flag(unsigned short aflag) const +{ + return pHMgr->encode_flag(aflag); +} + + +// return the preferred ignore string for suggestions +char * AffixMgr::get_ignore() const +{ + if (!ignorechars) return NULL; + return ignorechars; +} + +// return the preferred ignore string for suggestions +unsigned short * AffixMgr::get_ignore_utf16(int * len) const +{ + *len = ignorechars_utf16_len; + return ignorechars_utf16; +} + +// return the keyboard string for suggestions +char * AffixMgr::get_key_string() +{ + if (! keystring ) keystring = mystrdup(SPELL_KEYSTRING); + return mystrdup(keystring); +} + +// return the preferred try string for suggestions +char * AffixMgr::get_try_string() const +{ + if (! trystring ) return NULL; + return mystrdup(trystring); +} + +// return the preferred try string for suggestions +const char * AffixMgr::get_wordchars() const +{ + return wordchars; +} + +unsigned short * AffixMgr::get_wordchars_utf16(int * len) const +{ + *len = wordchars_utf16_len; + return wordchars_utf16; +} + +// is there compounding? +int AffixMgr::get_compound() const +{ + return compoundflag || compoundbegin || numdefcpd; +} + +// return the compound words control flag +FLAG AffixMgr::get_compoundflag() const +{ + return compoundflag; +} + +// return the forbidden words control flag +FLAG AffixMgr::get_forbiddenword() const +{ + return forbiddenword; +} + +// return the forbidden words control flag +FLAG AffixMgr::get_nosuggest() const +{ + return nosuggest; +} + +// return the forbidden words control flag +FLAG AffixMgr::get_nongramsuggest() const +{ + return nongramsuggest; +} + +// return the forbidden words flag modify flag +FLAG AffixMgr::get_needaffix() const +{ + return needaffix; +} + +// return the onlyincompound flag +FLAG AffixMgr::get_onlyincompound() const +{ + return onlyincompound; +} + +// return the compound word signal flag +FLAG AffixMgr::get_compoundroot() const +{ + return compoundroot; +} + +// return the compound begin signal flag +FLAG AffixMgr::get_compoundbegin() const +{ + return compoundbegin; +} + +// return the value of checknum +int AffixMgr::get_checknum() const +{ + return checknum; +} + +// return the value of prefix +const char * AffixMgr::get_prefix() const +{ + if (pfx) return pfx->getKey(); + return NULL; +} + +// return the value of suffix +const char * AffixMgr::get_suffix() const +{ + return sfxappnd; +} + +// return the value of suffix +const char * AffixMgr::get_version() const +{ + return version; +} + +// return lemma_present flag +FLAG AffixMgr::get_lemma_present() const +{ + return lemma_present; +} + +// utility method to look up root words in hash table +struct hentry * AffixMgr::lookup(const char * word) +{ + int i; + struct hentry * he = NULL; + for (i = 0; i < *maxdic && !he; i++) { + he = (alldic[i])->lookup(word); + } + return he; +} + +// return the value of suffix +int AffixMgr::have_contclass() const +{ + return havecontclass; +} + +// return utf8 +int AffixMgr::get_utf8() const +{ + return utf8; +} + +int AffixMgr::get_maxngramsugs(void) const +{ + return maxngramsugs; +} + +int AffixMgr::get_maxcpdsugs(void) const +{ + return maxcpdsugs; +} + +int AffixMgr::get_maxdiff(void) const +{ + return maxdiff; +} + +int AffixMgr::get_onlymaxdiff(void) const +{ + return onlymaxdiff; +} + +// return nosplitsugs +int AffixMgr::get_nosplitsugs(void) const +{ + return nosplitsugs; +} + +// return sugswithdots +int AffixMgr::get_sugswithdots(void) const +{ + return sugswithdots; +} + +/* parse flag */ +int AffixMgr::parse_flag(char * line, unsigned short * out, FileMgr * af) { + char * s = NULL; + if (*out != FLAG_NULL && !(*out >= DEFAULTFLAGS)) { + HUNSPELL_WARNING(stderr, "error: line %d: multiple definitions of an affix file parameter\n", af->getlinenum()); + return 1; + } + if (parse_string(line, &s, af->getlinenum())) return 1; + *out = pHMgr->decode_flag(s); + free(s); + return 0; +} + +/* parse num */ +int AffixMgr::parse_num(char * line, int * out, FileMgr * af) { + char * s = NULL; + if (*out != -1) { + HUNSPELL_WARNING(stderr, "error: line %d: multiple definitions of an affix file parameter\n", af->getlinenum()); + return 1; + } + if (parse_string(line, &s, af->getlinenum())) return 1; + *out = atoi(s); + free(s); + return 0; +} + +/* parse in the max syllablecount of compound words and */ +int AffixMgr::parse_cpdsyllable(char * line, FileMgr * af) +{ + char * tp = line; + char * piece; + int i = 0; + int np = 0; + w_char w[MAXWORDLEN]; + piece = mystrsep(&tp, 0); + while (piece) { + if (*piece != '\0') { + switch(i) { + case 0: { np++; break; } + case 1: { cpdmaxsyllable = atoi(piece); np++; break; } + case 2: { + if (!utf8) { + cpdvowels = mystrdup(piece); + } else { + int n = u8_u16(w, MAXWORDLEN, piece); + if (n > 0) { + flag_qsort((unsigned short *) w, 0, n); + cpdvowels_utf16 = (w_char *) malloc(n * sizeof(w_char)); + if (!cpdvowels_utf16) return 1; + memcpy(cpdvowels_utf16, w, n * sizeof(w_char)); + } + cpdvowels_utf16_len = n; + } + np++; + break; + } + default: break; + } + i++; + } + piece = mystrsep(&tp, 0); + } + if (np < 2) { + HUNSPELL_WARNING(stderr, "error: line %d: missing compoundsyllable information\n", af->getlinenum()); + return 1; + } + if (np == 2) cpdvowels = mystrdup("aeiouAEIOU"); + return 0; +} + +/* parse in the typical fault correcting table */ +int AffixMgr::parse_reptable(char * line, FileMgr * af) +{ + if (numrep != 0) { + HUNSPELL_WARNING(stderr, "error: line %d: multiple table definitions\n", af->getlinenum()); + return 1; + } + char * tp = line; + char * piece; + int i = 0; + int np = 0; + piece = mystrsep(&tp, 0); + while (piece) { + if (*piece != '\0') { + switch(i) { + case 0: { np++; break; } + case 1: { + numrep = atoi(piece); + if (numrep < 1) { + HUNSPELL_WARNING(stderr, "error: line %d: incorrect entry number\n", af->getlinenum()); + return 1; + } + reptable = (replentry *) malloc(numrep * sizeof(struct replentry)); + if (!reptable) return 1; + np++; + break; + } + default: break; + } + i++; + } + piece = mystrsep(&tp, 0); + } + if (np != 2) { + HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", af->getlinenum()); + return 1; + } + + /* now parse the numrep lines to read in the remainder of the table */ + char * nl; + for (int j=0; j < numrep; j++) { + if (!(nl = af->getline())) return 1; + mychomp(nl); + tp = nl; + i = 0; + reptable[j].pattern = NULL; + reptable[j].pattern2 = NULL; + piece = mystrsep(&tp, 0); + while (piece) { + if (*piece != '\0') { + switch(i) { + case 0: { + if (strncmp(piece,"REP",3) != 0) { + HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); + numrep = 0; + return 1; + } + break; + } + case 1: { + if (*piece == '^') reptable[j].start = true; else reptable[j].start = false; + reptable[j].pattern = mystrrep(mystrdup(piece + int(reptable[j].start)),"_"," "); + int lr = strlen(reptable[j].pattern) - 1; + if (reptable[j].pattern[lr] == '$') { + reptable[j].end = true; + reptable[j].pattern[lr] = '\0'; + } else reptable[j].end = false; + break; + } + case 2: { reptable[j].pattern2 = mystrrep(mystrdup(piece),"_"," "); break; } + default: break; + } + i++; + } + piece = mystrsep(&tp, 0); + } + if ((!(reptable[j].pattern)) || (!(reptable[j].pattern2))) { + HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); + numrep = 0; + return 1; + } + } + return 0; +} + +/* parse in the typical fault correcting table */ +int AffixMgr::parse_convtable(char * line, FileMgr * af, RepList ** rl, const char * keyword) +{ + if (*rl) { + HUNSPELL_WARNING(stderr, "error: line %d: multiple table definitions\n", af->getlinenum()); + return 1; + } + char * tp = line; + char * piece; + int i = 0; + int np = 0; + int numrl = 0; + piece = mystrsep(&tp, 0); + while (piece) { + if (*piece != '\0') { + switch(i) { + case 0: { np++; break; } + case 1: { + numrl = atoi(piece); + if (numrl < 1) { + HUNSPELL_WARNING(stderr, "error: line %d: incorrect entry number\n", af->getlinenum()); + return 1; + } + *rl = new RepList(numrl); + if (!*rl) return 1; + np++; + break; + } + default: break; + } + i++; + } + piece = mystrsep(&tp, 0); + } + if (np != 2) { + HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", af->getlinenum()); + return 1; + } + + /* now parse the num lines to read in the remainder of the table */ + char * nl; + for (int j=0; j < numrl; j++) { + if (!(nl = af->getline())) return 1; + mychomp(nl); + tp = nl; + i = 0; + char * pattern = NULL; + char * pattern2 = NULL; + piece = mystrsep(&tp, 0); + while (piece) { + if (*piece != '\0') { + switch(i) { + case 0: { + if (strncmp(piece, keyword, sizeof(keyword)) != 0) { + HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); + delete *rl; + *rl = NULL; + return 1; + } + break; + } + case 1: { pattern = mystrrep(mystrdup(piece),"_"," "); break; } + case 2: { + pattern2 = mystrrep(mystrdup(piece),"_"," "); + break; + } + default: break; + } + i++; + } + piece = mystrsep(&tp, 0); + } + if (!pattern || !pattern2) { + if (pattern) + free(pattern); + if (pattern2) + free(pattern2); + HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); + return 1; + } + (*rl)->add(pattern, pattern2); + } + return 0; +} + + +/* parse in the typical fault correcting table */ +int AffixMgr::parse_phonetable(char * line, FileMgr * af) +{ + if (phone) { + HUNSPELL_WARNING(stderr, "error: line %d: multiple table definitions\n", af->getlinenum()); + return 1; + } + char * tp = line; + char * piece; + int i = 0; + int np = 0; + piece = mystrsep(&tp, 0); + while (piece) { + if (*piece != '\0') { + switch(i) { + case 0: { np++; break; } + case 1: { + phone = (phonetable *) malloc(sizeof(struct phonetable)); + if (!phone) return 1; + phone->num = atoi(piece); + phone->rules = NULL; + phone->utf8 = (char) utf8; + if (phone->num < 1) { + HUNSPELL_WARNING(stderr, "error: line %d: bad entry number\n", af->getlinenum()); + return 1; + } + phone->rules = (char * *) malloc(2 * (phone->num + 1) * sizeof(char *)); + if (!phone->rules) { + free(phone); + phone = NULL; + return 1; + } + np++; + break; + } + default: break; + } + i++; + } + piece = mystrsep(&tp, 0); + } + if (np != 2) { + HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", af->getlinenum()); + return 1; + } + + /* now parse the phone->num lines to read in the remainder of the table */ + char * nl; + for (int j=0; j < phone->num; j++) { + if (!(nl = af->getline())) return 1; + mychomp(nl); + tp = nl; + i = 0; + phone->rules[j * 2] = NULL; + phone->rules[j * 2 + 1] = NULL; + piece = mystrsep(&tp, 0); + while (piece) { + if (*piece != '\0') { + switch(i) { + case 0: { + if (strncmp(piece,"PHONE",5) != 0) { + HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); + phone->num = 0; + return 1; + } + break; + } + case 1: { phone->rules[j * 2] = mystrrep(mystrdup(piece),"_",""); break; } + case 2: { phone->rules[j * 2 + 1] = mystrrep(mystrdup(piece),"_",""); break; } + default: break; + } + i++; + } + piece = mystrsep(&tp, 0); + } + if ((!(phone->rules[j * 2])) || (!(phone->rules[j * 2 + 1]))) { + HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); + phone->num = 0; + return 1; + } + } + phone->rules[phone->num * 2] = mystrdup(""); + phone->rules[phone->num * 2 + 1] = mystrdup(""); + init_phonet_hash(*phone); + return 0; +} + +/* parse in the checkcompoundpattern table */ +int AffixMgr::parse_checkcpdtable(char * line, FileMgr * af) +{ + if (numcheckcpd != 0) { + HUNSPELL_WARNING(stderr, "error: line %d: multiple table definitions\n", af->getlinenum()); + return 1; + } + char * tp = line; + char * piece; + int i = 0; + int np = 0; + piece = mystrsep(&tp, 0); + while (piece) { + if (*piece != '\0') { + switch(i) { + case 0: { np++; break; } + case 1: { + numcheckcpd = atoi(piece); + if (numcheckcpd < 1) { + HUNSPELL_WARNING(stderr, "error: line %d: bad entry number\n", af->getlinenum()); + return 1; + } + checkcpdtable = (patentry *) malloc(numcheckcpd * sizeof(struct patentry)); + if (!checkcpdtable) return 1; + np++; + break; + } + default: break; + } + i++; + } + piece = mystrsep(&tp, 0); + } + if (np != 2) { + HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", af->getlinenum()); + return 1; + } + + /* now parse the numcheckcpd lines to read in the remainder of the table */ + char * nl; + for (int j=0; j < numcheckcpd; j++) { + if (!(nl = af->getline())) return 1; + mychomp(nl); + tp = nl; + i = 0; + checkcpdtable[j].pattern = NULL; + checkcpdtable[j].pattern2 = NULL; + checkcpdtable[j].pattern3 = NULL; + checkcpdtable[j].cond = FLAG_NULL; + checkcpdtable[j].cond2 = FLAG_NULL; + piece = mystrsep(&tp, 0); + while (piece) { + if (*piece != '\0') { + switch(i) { + case 0: { + if (strncmp(piece,"CHECKCOMPOUNDPATTERN",20) != 0) { + HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); + numcheckcpd = 0; + return 1; + } + break; + } + case 1: { + checkcpdtable[j].pattern = mystrdup(piece); + char * p = strchr(checkcpdtable[j].pattern, '/'); + if (p) { + *p = '\0'; + checkcpdtable[j].cond = pHMgr->decode_flag(p + 1); + } + break; } + case 2: { + checkcpdtable[j].pattern2 = mystrdup(piece); + char * p = strchr(checkcpdtable[j].pattern2, '/'); + if (p) { + *p = '\0'; + checkcpdtable[j].cond2 = pHMgr->decode_flag(p + 1); + } + break; + } + case 3: { checkcpdtable[j].pattern3 = mystrdup(piece); simplifiedcpd = 1; break; } + default: break; + } + i++; + } + piece = mystrsep(&tp, 0); + } + if ((!(checkcpdtable[j].pattern)) || (!(checkcpdtable[j].pattern2))) { + HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); + numcheckcpd = 0; + return 1; + } + } + return 0; +} + +/* parse in the compound rule table */ +int AffixMgr::parse_defcpdtable(char * line, FileMgr * af) +{ + if (numdefcpd != 0) { + HUNSPELL_WARNING(stderr, "error: line %d: multiple table definitions\n", af->getlinenum()); + return 1; + } + char * tp = line; + char * piece; + int i = 0; + int np = 0; + piece = mystrsep(&tp, 0); + while (piece) { + if (*piece != '\0') { + switch(i) { + case 0: { np++; break; } + case 1: { + numdefcpd = atoi(piece); + if (numdefcpd < 1) { + HUNSPELL_WARNING(stderr, "error: line %d: bad entry number\n", af->getlinenum()); + return 1; + } + defcpdtable = (flagentry *) malloc(numdefcpd * sizeof(flagentry)); + if (!defcpdtable) return 1; + np++; + break; + } + default: break; + } + i++; + } + piece = mystrsep(&tp, 0); + } + if (np != 2) { + HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", af->getlinenum()); + return 1; + } + + /* now parse the numdefcpd lines to read in the remainder of the table */ + char * nl; + for (int j=0; j < numdefcpd; j++) { + if (!(nl = af->getline())) return 1; + mychomp(nl); + tp = nl; + i = 0; + defcpdtable[j].def = NULL; + piece = mystrsep(&tp, 0); + while (piece) { + if (*piece != '\0') { + switch(i) { + case 0: { + if (strncmp(piece, "COMPOUNDRULE", 12) != 0) { + HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); + numdefcpd = 0; + return 1; + } + break; + } + case 1: { // handle parenthesized flags + if (strchr(piece, '(')) { + defcpdtable[j].def = (FLAG *) malloc(strlen(piece) * sizeof(FLAG)); + defcpdtable[j].len = 0; + int end = 0; + FLAG * conv; + while (!end) { + char * par = piece + 1; + while (*par != '(' && *par != ')' && *par != '\0') par++; + if (*par == '\0') end = 1; else *par = '\0'; + if (*piece == '(') piece++; + if (*piece == '*' || *piece == '?') { + defcpdtable[j].def[defcpdtable[j].len++] = (FLAG) *piece; + } else if (*piece != '\0') { + int l = pHMgr->decode_flags(&conv, piece, af); + for (int k = 0; k < l; k++) defcpdtable[j].def[defcpdtable[j].len++] = conv[k]; + free(conv); + } + piece = par + 1; + } + } else { + defcpdtable[j].len = pHMgr->decode_flags(&(defcpdtable[j].def), piece, af); + } + break; + } + default: break; + } + i++; + } + piece = mystrsep(&tp, 0); + } + if (!defcpdtable[j].len) { + HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); + numdefcpd = 0; + return 1; + } + } + return 0; +} + + +/* parse in the character map table */ +int AffixMgr::parse_maptable(char * line, FileMgr * af) +{ + if (nummap != 0) { + HUNSPELL_WARNING(stderr, "error: line %d: multiple table definitions\n", af->getlinenum()); + return 1; + } + char * tp = line; + char * piece; + int i = 0; + int np = 0; + piece = mystrsep(&tp, 0); + while (piece) { + if (*piece != '\0') { + switch(i) { + case 0: { np++; break; } + case 1: { + nummap = atoi(piece); + if (nummap < 1) { + HUNSPELL_WARNING(stderr, "error: line %d: bad entry number\n", af->getlinenum()); + return 1; + } + maptable = (mapentry *) malloc(nummap * sizeof(struct mapentry)); + if (!maptable) return 1; + np++; + break; + } + default: break; + } + i++; + } + piece = mystrsep(&tp, 0); + } + if (np != 2) { + HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", af->getlinenum()); + return 1; + } + + /* now parse the nummap lines to read in the remainder of the table */ + char * nl; + for (int j=0; j < nummap; j++) { + if (!(nl = af->getline())) return 1; + mychomp(nl); + tp = nl; + i = 0; + maptable[j].set = NULL; + maptable[j].len = 0; + piece = mystrsep(&tp, 0); + while (piece) { + if (*piece != '\0') { + switch(i) { + case 0: { + if (strncmp(piece,"MAP",3) != 0) { + HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); + nummap = 0; + return 1; + } + break; + } + case 1: { + int setn = 0; + maptable[j].len = strlen(piece); + maptable[j].set = (char **) malloc(maptable[j].len * sizeof(char*)); + if (!maptable[j].set) return 1; + for (int k = 0; k < maptable[j].len; k++) { + int chl = 1; + int chb = k; + if (piece[k] == '(') { + char * parpos = strchr(piece + k, ')'); + if (parpos != NULL) { + chb = k + 1; + chl = (int)(parpos - piece) - k - 1; + k = k + chl + 1; + } + } else { + if (utf8 && (piece[k] & 0xc0) == 0xc0) { + for (k++; utf8 && (piece[k] & 0xc0) == 0x80; k++); + chl = k - chb; + k--; + } + } + maptable[j].set[setn] = (char *) malloc(chl + 1); + if (!maptable[j].set[setn]) return 1; + strncpy(maptable[j].set[setn], piece + chb, chl); + maptable[j].set[setn][chl] = '\0'; + setn++; + } + maptable[j].len = setn; + break; } + default: break; + } + i++; + } + piece = mystrsep(&tp, 0); + } + if (!maptable[j].set || !maptable[j].len) { + HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); + nummap = 0; + return 1; + } + } + return 0; +} + +/* parse in the word breakpoint table */ +int AffixMgr::parse_breaktable(char * line, FileMgr * af) +{ + if (numbreak > -1) { + HUNSPELL_WARNING(stderr, "error: line %d: multiple table definitions\n", af->getlinenum()); + return 1; + } + char * tp = line; + char * piece; + int i = 0; + int np = 0; + piece = mystrsep(&tp, 0); + while (piece) { + if (*piece != '\0') { + switch(i) { + case 0: { np++; break; } + case 1: { + numbreak = atoi(piece); + if (numbreak < 0) { + HUNSPELL_WARNING(stderr, "error: line %d: bad entry number\n", af->getlinenum()); + return 1; + } + if (numbreak == 0) return 0; + breaktable = (char **) malloc(numbreak * sizeof(char *)); + if (!breaktable) return 1; + np++; + break; + } + default: break; + } + i++; + } + piece = mystrsep(&tp, 0); + } + if (np != 2) { + HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", af->getlinenum()); + return 1; + } + + /* now parse the numbreak lines to read in the remainder of the table */ + char * nl; + for (int j=0; j < numbreak; j++) { + if (!(nl = af->getline())) return 1; + mychomp(nl); + tp = nl; + i = 0; + piece = mystrsep(&tp, 0); + while (piece) { + if (*piece != '\0') { + switch(i) { + case 0: { + if (strncmp(piece,"BREAK",5) != 0) { + HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); + numbreak = 0; + return 1; + } + break; + } + case 1: { + breaktable[j] = mystrdup(piece); + break; + } + default: break; + } + i++; + } + piece = mystrsep(&tp, 0); + } + if (!breaktable) { + HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); + numbreak = 0; + return 1; + } + } + return 0; +} + +void AffixMgr::reverse_condition(char * piece) { + int neg = 0; + for (char * k = piece + strlen(piece) - 1; k >= piece; k--) { + switch(*k) { + case '[': { + if (neg) *(k+1) = '['; else *k = ']'; + break; + } + case ']': { + *k = '['; + if (neg) *(k+1) = '^'; + neg = 0; + break; + } + case '^': { + if (*(k+1) == ']') neg = 1; else *(k+1) = *k; + break; + } + default: { + if (neg) *(k+1) = *k; + } + } + } +} + +int AffixMgr::parse_affix(char * line, const char at, FileMgr * af, char * dupflags) +{ + int numents = 0; // number of affentry structures to parse + + unsigned short aflag = 0; // affix char identifier + + char ff=0; + std::vector affentries; + + char * tp = line; + char * nl = line; + char * piece; + int i = 0; + + // checking lines with bad syntax +#ifdef DEBUG + int basefieldnum = 0; +#endif + + // split affix header line into pieces + + int np = 0; + + piece = mystrsep(&tp, 0); + while (piece) { + if (*piece != '\0') { + switch(i) { + // piece 1 - is type of affix + case 0: { np++; break; } + + // piece 2 - is affix char + case 1: { + np++; + aflag = pHMgr->decode_flag(piece); + if (((at == 'S') && (dupflags[aflag] & dupSFX)) || + ((at == 'P') && (dupflags[aflag] & dupPFX))) { + HUNSPELL_WARNING(stderr, "error: line %d: multiple definitions of an affix flag\n", + af->getlinenum()); + // return 1; XXX permissive mode for bad dictionaries + } + dupflags[aflag] += (char) ((at == 'S') ? dupSFX : dupPFX); + break; + } + // piece 3 - is cross product indicator + case 2: { np++; if (*piece == 'Y') ff = aeXPRODUCT; break; } + + // piece 4 - is number of affentries + case 3: { + np++; + numents = atoi(piece); + if (numents == 0) { + char * err = pHMgr->encode_flag(aflag); + if (err) { + HUNSPELL_WARNING(stderr, "error: line %d: bad entry number\n", + af->getlinenum()); + free(err); + } + return 1; + } + affentries.resize(numents); + affentries[0].opts = ff; + if (utf8) affentries[0].opts += aeUTF8; + if (pHMgr->is_aliasf()) affentries[0].opts += aeALIASF; + if (pHMgr->is_aliasm()) affentries[0].opts += aeALIASM; + affentries[0].aflag = aflag; + } + + default: break; + } + i++; + } + piece = mystrsep(&tp, 0); + } + // check to make sure we parsed enough pieces + if (np != 4) { + char * err = pHMgr->encode_flag(aflag); + if (err) { + HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", af->getlinenum()); + free(err); + } + return 1; + } + + // now parse numents affentries for this affix + std::vector::iterator start = affentries.begin(); + std::vector::iterator end = affentries.end(); + for (std::vector::iterator entry = start; entry != end; ++entry) { + if (!(nl = af->getline())) return 1; + mychomp(nl); + tp = nl; + i = 0; + np = 0; + + // split line into pieces + piece = mystrsep(&tp, 0); + while (piece) { + if (*piece != '\0') { + switch(i) { + // piece 1 - is type + case 0: { + np++; + if (entry != start) entry->opts = start->opts & + (char) (aeXPRODUCT + aeUTF8 + aeALIASF + aeALIASM); + break; + } + + // piece 2 - is affix char + case 1: { + np++; + if (pHMgr->decode_flag(piece) != aflag) { + char * err = pHMgr->encode_flag(aflag); + if (err) { + HUNSPELL_WARNING(stderr, "error: line %d: affix %s is corrupt\n", + af->getlinenum(), err); + free(err); + } + return 1; + } + + if (entry != start) entry->aflag = start->aflag; + break; + } + + // piece 3 - is string to strip or 0 for null + case 2: { + np++; + if (complexprefixes) { + if (utf8) reverseword_utf(piece); else reverseword(piece); + } + entry->strip = mystrdup(piece); + entry->stripl = (unsigned char) strlen(entry->strip); + if (strcmp(entry->strip,"0") == 0) { + free(entry->strip); + entry->strip=mystrdup(""); + entry->stripl = 0; + } + break; + } + + // piece 4 - is affix string or 0 for null + case 3: { + char * dash; + entry->morphcode = NULL; + entry->contclass = NULL; + entry->contclasslen = 0; + np++; + dash = strchr(piece, '/'); + if (dash) { + *dash = '\0'; + + if (ignorechars) { + if (utf8) { + remove_ignored_chars_utf(piece, ignorechars_utf16, ignorechars_utf16_len); + } else { + remove_ignored_chars(piece,ignorechars); + } + } + + if (complexprefixes) { + if (utf8) reverseword_utf(piece); else reverseword(piece); + } + entry->appnd = mystrdup(piece); + + if (pHMgr->is_aliasf()) { + int index = atoi(dash + 1); + entry->contclasslen = (unsigned short) pHMgr->get_aliasf(index, &(entry->contclass), af); + if (!entry->contclasslen) HUNSPELL_WARNING(stderr, "error: bad affix flag alias: \"%s\"\n", dash+1); + } else { + entry->contclasslen = (unsigned short) pHMgr->decode_flags(&(entry->contclass), dash + 1, af); + flag_qsort(entry->contclass, 0, entry->contclasslen); + } + *dash = '/'; + + havecontclass = 1; + for (unsigned short _i = 0; _i < entry->contclasslen; _i++) { + contclasses[(entry->contclass)[_i]] = 1; + } + } else { + if (ignorechars) { + if (utf8) { + remove_ignored_chars_utf(piece, ignorechars_utf16, ignorechars_utf16_len); + } else { + remove_ignored_chars(piece,ignorechars); + } + } + + if (complexprefixes) { + if (utf8) reverseword_utf(piece); else reverseword(piece); + } + entry->appnd = mystrdup(piece); + } + + entry->appndl = (unsigned char) strlen(entry->appnd); + if (strcmp(entry->appnd,"0") == 0) { + free(entry->appnd); + entry->appnd=mystrdup(""); + entry->appndl = 0; + } + break; + } + + // piece 5 - is the conditions descriptions + case 4: { + np++; + if (complexprefixes) { + if (utf8) reverseword_utf(piece); else reverseword(piece); + reverse_condition(piece); + } + if (entry->stripl && (strcmp(piece, ".") != 0) && + redundant_condition(at, entry->strip, entry->stripl, piece, af->getlinenum())) + strcpy(piece, "."); + if (at == 'S') { + reverseword(piece); + reverse_condition(piece); + } + if (encodeit(*entry, piece)) return 1; + break; + } + + case 5: { + np++; + if (pHMgr->is_aliasm()) { + int index = atoi(piece); + entry->morphcode = pHMgr->get_aliasm(index); + } else { + if (complexprefixes) { // XXX - fix me for morph. gen. + if (utf8) reverseword_utf(piece); else reverseword(piece); + } + // add the remaining of the line + if (*tp) { + *(tp - 1) = ' '; + tp = tp + strlen(tp); + } + entry->morphcode = mystrdup(piece); + if (!entry->morphcode) return 1; + } + break; + } + default: break; + } + i++; + } + piece = mystrsep(&tp, 0); + } + // check to make sure we parsed enough pieces + if (np < 4) { + char * err = pHMgr->encode_flag(aflag); + if (err) { + HUNSPELL_WARNING(stderr, "error: line %d: affix %s is corrupt\n", + af->getlinenum(), err); + free(err); + } + return 1; + } + +#ifdef DEBUG + // detect unnecessary fields, excepting comments + if (basefieldnum) { + int fieldnum = !(entry->morphcode) ? 5 : ((*(entry->morphcode)=='#') ? 5 : 6); + if (fieldnum != basefieldnum) + HUNSPELL_WARNING(stderr, "warning: line %d: bad field number\n", af->getlinenum()); + } else { + basefieldnum = !(entry->morphcode) ? 5 : ((*(entry->morphcode)=='#') ? 5 : 6); + } +#endif + } + + // now create SfxEntry or PfxEntry objects and use links to + // build an ordered (sorted by affix string) list + for (std::vector::iterator entry = start; entry != end; ++entry) { + if (at == 'P') { + PfxEntry * pfxptr = new PfxEntry(this,&(*entry)); + build_pfxtree(pfxptr); + } else { + SfxEntry * sfxptr = new SfxEntry(this,&(*entry)); + build_sfxtree(sfxptr); + } + } + return 0; +} + +int AffixMgr::redundant_condition(char ft, char * strip, int stripl, const char * cond, int linenum) { + int condl = strlen(cond); + int i; + int j; + int neg; + int in; + if (ft == 'P') { // prefix + if (strncmp(strip, cond, condl) == 0) return 1; + if (utf8) { + } else { + for (i = 0, j = 0; (i < stripl) && (j < condl); i++, j++) { + if (cond[j] != '[') { + if (cond[j] != strip[i]) { + HUNSPELL_WARNING(stderr, "warning: line %d: incompatible stripping characters and condition\n", linenum); + return 0; + } + } else { + neg = (cond[j+1] == '^') ? 1 : 0; + in = 0; + do { + j++; + if (strip[i] == cond[j]) in = 1; + } while ((j < (condl - 1)) && (cond[j] != ']')); + if (j == (condl - 1) && (cond[j] != ']')) { + HUNSPELL_WARNING(stderr, "error: line %d: missing ] in condition:\n%s\n", linenum, cond); + return 0; + } + if ((!neg && !in) || (neg && in)) { + HUNSPELL_WARNING(stderr, "warning: line %d: incompatible stripping characters and condition\n", linenum); + return 0; + } + } + } + if (j >= condl) return 1; + } + } else { // suffix + if ((stripl >= condl) && strcmp(strip + stripl - condl, cond) == 0) return 1; + if (utf8) { + } else { + for (i = stripl - 1, j = condl - 1; (i >= 0) && (j >= 0); i--, j--) { + if (cond[j] != ']') { + if (cond[j] != strip[i]) { + HUNSPELL_WARNING(stderr, "warning: line %d: incompatible stripping characters and condition\n", linenum); + return 0; + } + } else { + in = 0; + do { + j--; + if (strip[i] == cond[j]) in = 1; + } while ((j > 0) && (cond[j] != '[')); + if ((j == 0) && (cond[j] != '[')) { + HUNSPELL_WARNING(stderr, "error: line: %d: missing ] in condition:\n%s\n", linenum, cond); + return 0; + } + neg = (cond[j+1] == '^') ? 1 : 0; + if ((!neg && !in) || (neg && in)) { + HUNSPELL_WARNING(stderr, "warning: line %d: incompatible stripping characters and condition\n", linenum); + return 0; + } + } + } + if (j < 0) return 1; + } + } + return 0; +} diff --git a/plugins/SpellChecker/hunspell/affixmgr.hxx b/plugins/SpellChecker/hunspell/affixmgr.hxx new file mode 100644 index 0000000000..d9c625aed0 --- /dev/null +++ b/plugins/SpellChecker/hunspell/affixmgr.hxx @@ -0,0 +1,250 @@ +#ifndef _AFFIXMGR_HXX_ +#define _AFFIXMGR_HXX_ + +#include "hunvisapi.h" + +#include + +#include "atypes.hxx" +#include "baseaffix.hxx" +#include "hashmgr.hxx" +#include "phonet.hxx" +#include "replist.hxx" + +// check flag duplication +#define dupSFX (1 << 0) +#define dupPFX (1 << 1) + +class PfxEntry; +class SfxEntry; + +class LIBHUNSPELL_DLL_EXPORTED AffixMgr +{ + + PfxEntry * pStart[SETSIZE]; + SfxEntry * sStart[SETSIZE]; + PfxEntry * pFlag[SETSIZE]; + SfxEntry * sFlag[SETSIZE]; + HashMgr * pHMgr; + HashMgr ** alldic; + int * maxdic; + char * keystring; + char * trystring; + char * encoding; + struct cs_info * csconv; + int utf8; + int complexprefixes; + FLAG compoundflag; + FLAG compoundbegin; + FLAG compoundmiddle; + FLAG compoundend; + FLAG compoundroot; + FLAG compoundforbidflag; + FLAG compoundpermitflag; + int checkcompounddup; + int checkcompoundrep; + int checkcompoundcase; + int checkcompoundtriple; + int simplifiedtriple; + FLAG forbiddenword; + FLAG nosuggest; + FLAG nongramsuggest; + FLAG needaffix; + int cpdmin; + int numrep; + replentry * reptable; + RepList * iconvtable; + RepList * oconvtable; + int nummap; + mapentry * maptable; + int numbreak; + char ** breaktable; + int numcheckcpd; + patentry * checkcpdtable; + int simplifiedcpd; + int numdefcpd; + flagentry * defcpdtable; + phonetable * phone; + int maxngramsugs; + int maxcpdsugs; + int maxdiff; + int onlymaxdiff; + int nosplitsugs; + int sugswithdots; + int cpdwordmax; + int cpdmaxsyllable; + char * cpdvowels; + w_char * cpdvowels_utf16; + int cpdvowels_utf16_len; + char * cpdsyllablenum; + const char * pfxappnd; // BUG: not stateless + const char * sfxappnd; // BUG: not stateless + FLAG sfxflag; // BUG: not stateless + char * derived; // BUG: not stateless + SfxEntry * sfx; // BUG: not stateless + PfxEntry * pfx; // BUG: not stateless + int checknum; + char * wordchars; + unsigned short * wordchars_utf16; + int wordchars_utf16_len; + char * ignorechars; + unsigned short * ignorechars_utf16; + int ignorechars_utf16_len; + char * version; + char * lang; + int langnum; + FLAG lemma_present; + FLAG circumfix; + FLAG onlyincompound; + FLAG keepcase; + FLAG forceucase; + FLAG warn; + int forbidwarn; + FLAG substandard; + int checksharps; + int fullstrip; + + int havecontclass; // boolean variable + char contclasses[CONTSIZE]; // flags of possible continuing classes (twofold affix) + +public: + + AffixMgr(const char * affpath, HashMgr** ptr, int * md, + const char * key = NULL); + ~AffixMgr(); + struct hentry * affix_check(const char * word, int len, + const unsigned short needflag = (unsigned short) 0, + char in_compound = IN_CPD_NOT); + struct hentry * prefix_check(const char * word, int len, + char in_compound, const FLAG needflag = FLAG_NULL); + inline int isSubset(const char * s1, const char * s2); + struct hentry * prefix_check_twosfx(const char * word, int len, + char in_compound, const FLAG needflag = FLAG_NULL); + inline int isRevSubset(const char * s1, const char * end_of_s2, int len); + struct hentry * suffix_check(const char * word, int len, int sfxopts, + PfxEntry* ppfx, char ** wlst, int maxSug, int * ns, + const FLAG cclass = FLAG_NULL, const FLAG needflag = FLAG_NULL, + char in_compound = IN_CPD_NOT); + struct hentry * suffix_check_twosfx(const char * word, int len, + int sfxopts, PfxEntry* ppfx, const FLAG needflag = FLAG_NULL); + + char * affix_check_morph(const char * word, int len, + const FLAG needflag = FLAG_NULL, char in_compound = IN_CPD_NOT); + char * prefix_check_morph(const char * word, int len, + char in_compound, const FLAG needflag = FLAG_NULL); + char * suffix_check_morph (const char * word, int len, int sfxopts, + PfxEntry * ppfx, const FLAG cclass = FLAG_NULL, + const FLAG needflag = FLAG_NULL, char in_compound = IN_CPD_NOT); + + char * prefix_check_twosfx_morph(const char * word, int len, + char in_compound, const FLAG needflag = FLAG_NULL); + char * suffix_check_twosfx_morph(const char * word, int len, + int sfxopts, PfxEntry * ppfx, const FLAG needflag = FLAG_NULL); + + char * morphgen(char * ts, int wl, const unsigned short * ap, + unsigned short al, char * morph, char * targetmorph, int level); + + int expand_rootword(struct guessword * wlst, int maxn, const char * ts, + int wl, const unsigned short * ap, unsigned short al, char * bad, + int, char *); + + short get_syllable (const char * word, int wlen); + int cpdrep_check(const char * word, int len); + int cpdpat_check(const char * word, int len, hentry * r1, hentry * r2, + const char affixed); + int defcpd_check(hentry *** words, short wnum, hentry * rv, + hentry ** rwords, char all); + int cpdcase_check(const char * word, int len); + inline int candidate_check(const char * word, int len); + void setcminmax(int * cmin, int * cmax, const char * word, int len); + struct hentry * compound_check(const char * word, int len, short wordnum, + short numsyllable, short maxwordnum, short wnum, hentry ** words, + char hu_mov_rule, char is_sug, int * info); + + int compound_check_morph(const char * word, int len, short wordnum, + short numsyllable, short maxwordnum, short wnum, hentry ** words, + char hu_mov_rule, char ** result, char * partresult); + + struct hentry * lookup(const char * word); + int get_numrep() const; + struct replentry * get_reptable() const; + RepList * get_iconvtable() const; + RepList * get_oconvtable() const; + struct phonetable * get_phonetable() const; + int get_nummap() const; + struct mapentry * get_maptable() const; + int get_numbreak() const; + char ** get_breaktable() const; + char * get_encoding(); + int get_langnum() const; + char * get_key_string(); + char * get_try_string() const; + const char * get_wordchars() const; + unsigned short * get_wordchars_utf16(int * len) const; + char * get_ignore() const; + unsigned short * get_ignore_utf16(int * len) const; + int get_compound() const; + FLAG get_compoundflag() const; + FLAG get_compoundbegin() const; + FLAG get_forbiddenword() const; + FLAG get_nosuggest() const; + FLAG get_nongramsuggest() const; + FLAG get_needaffix() const; + FLAG get_onlyincompound() const; + FLAG get_compoundroot() const; + FLAG get_lemma_present() const; + int get_checknum() const; + const char * get_prefix() const; + const char * get_suffix() const; + const char * get_derived() const; + const char * get_version() const; + int have_contclass() const; + int get_utf8() const; + int get_complexprefixes() const; + char * get_suffixed(char ) const; + int get_maxngramsugs() const; + int get_maxcpdsugs() const; + int get_maxdiff() const; + int get_onlymaxdiff() const; + int get_nosplitsugs() const; + int get_sugswithdots(void) const; + FLAG get_keepcase(void) const; + FLAG get_forceucase(void) const; + FLAG get_warn(void) const; + int get_forbidwarn(void) const; + int get_checksharps(void) const; + char * encode_flag(unsigned short aflag) const; + int get_fullstrip() const; + +private: + int parse_file(const char * affpath, const char * key); + int parse_flag(char * line, unsigned short * out, FileMgr * af); + int parse_num(char * line, int * out, FileMgr * af); + int parse_cpdsyllable(char * line, FileMgr * af); + int parse_reptable(char * line, FileMgr * af); + int parse_convtable(char * line, FileMgr * af, RepList ** rl, const char * keyword); + int parse_phonetable(char * line, FileMgr * af); + int parse_maptable(char * line, FileMgr * af); + int parse_breaktable(char * line, FileMgr * af); + int parse_checkcpdtable(char * line, FileMgr * af); + int parse_defcpdtable(char * line, FileMgr * af); + int parse_affix(char * line, const char at, FileMgr * af, char * dupflags); + + void reverse_condition(char *); + void debugflag(char * result, unsigned short flag); + int condlen(char *); + int encodeit(affentry &entry, char * cs); + int build_pfxtree(PfxEntry* pfxptr); + int build_sfxtree(SfxEntry* sfxptr); + int process_pfx_order(); + int process_sfx_order(); + PfxEntry * process_pfx_in_order(PfxEntry * ptr, PfxEntry * nptr); + SfxEntry * process_sfx_in_order(SfxEntry * ptr, SfxEntry * nptr); + int process_pfx_tree_to_list(); + int process_sfx_tree_to_list(); + int redundant_condition(char, char * strip, int stripl, + const char * cond, int); +}; + +#endif + diff --git a/plugins/SpellChecker/hunspell/atypes.hxx b/plugins/SpellChecker/hunspell/atypes.hxx new file mode 100644 index 0000000000..df27c4d1cb --- /dev/null +++ b/plugins/SpellChecker/hunspell/atypes.hxx @@ -0,0 +1,107 @@ +#ifndef _ATYPES_HXX_ +#define _ATYPES_HXX_ + +#ifndef HUNSPELL_WARNING +#include +#ifdef HUNSPELL_WARNING_ON +#define HUNSPELL_WARNING fprintf +#else +// empty inline function to switch off warnings (instead of the C99 standard variadic macros) +static inline void HUNSPELL_WARNING(FILE *, const char *, ...) {} +#endif +#endif + +// HUNSTEM def. +#define HUNSTEM + +#include "hashmgr.hxx" +#include "w_char.hxx" + +#define SETSIZE 256 +#define CONTSIZE 65536 +#define MAXWORDLEN 100 +#define MAXWORDUTF8LEN 256 + +// affentry options +#define aeXPRODUCT (1 << 0) +#define aeUTF8 (1 << 1) +#define aeALIASF (1 << 2) +#define aeALIASM (1 << 3) +#define aeLONGCOND (1 << 4) + +// compound options +#define IN_CPD_NOT 0 +#define IN_CPD_BEGIN 1 +#define IN_CPD_END 2 +#define IN_CPD_OTHER 3 + +// info options +#define SPELL_COMPOUND (1 << 0) +#define SPELL_FORBIDDEN (1 << 1) +#define SPELL_ALLCAP (1 << 2) +#define SPELL_NOCAP (1 << 3) +#define SPELL_INITCAP (1 << 4) +#define SPELL_ORIGCAP (1 << 5) +#define SPELL_WARN (1 << 6) + +#define MAXLNLEN 8192 + +#define MINCPDLEN 3 +#define MAXCOMPOUND 10 +#define MAXCONDLEN 20 +#define MAXCONDLEN_1 (MAXCONDLEN - sizeof(char *)) + +#define MAXACC 1000 + +#define FLAG unsigned short +#define FLAG_NULL 0x00 +#define FREE_FLAG(a) a = 0 + +#define TESTAFF( a, b , c ) flag_bsearch((unsigned short *) a, (unsigned short) b, c) + +struct affentry +{ + char * strip; + char * appnd; + unsigned char stripl; + unsigned char appndl; + char numconds; + char opts; + unsigned short aflag; + unsigned short * contclass; + short contclasslen; + union { + char conds[MAXCONDLEN]; + struct { + char conds1[MAXCONDLEN_1]; + char * conds2; + } l; + } c; + char * morphcode; +}; + +struct guessword { + char * word; + bool allow; + char * orig; +}; + +struct mapentry { + char ** set; + int len; +}; + +struct flagentry { + FLAG * def; + int len; +}; + +struct patentry { + char * pattern; + char * pattern2; + char * pattern3; + FLAG cond; + FLAG cond2; +}; + +#endif diff --git a/plugins/SpellChecker/hunspell/baseaffix.hxx b/plugins/SpellChecker/hunspell/baseaffix.hxx new file mode 100644 index 0000000000..ed64f3d84f --- /dev/null +++ b/plugins/SpellChecker/hunspell/baseaffix.hxx @@ -0,0 +1,28 @@ +#ifndef _BASEAFF_HXX_ +#define _BASEAFF_HXX_ + +#include "hunvisapi.h" + +class LIBHUNSPELL_DLL_EXPORTED AffEntry +{ +protected: + char * appnd; + char * strip; + unsigned char appndl; + unsigned char stripl; + char numconds; + char opts; + unsigned short aflag; + union { + char conds[MAXCONDLEN]; + struct { + char conds1[MAXCONDLEN_1]; + char * conds2; + } l; + } c; + char * morphcode; + unsigned short * contclass; + short contclasslen; +}; + +#endif diff --git a/plugins/SpellChecker/hunspell/config.h b/plugins/SpellChecker/hunspell/config.h new file mode 100644 index 0000000000..8c84118f6d --- /dev/null +++ b/plugins/SpellChecker/hunspell/config.h @@ -0,0 +1,215 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP + systems. This function is required for `alloca.c' support on those systems. + */ +#define CRAY_STACKSEG_END 1 + +/* Define to 1 if using `alloca.c'. */ +#define C_ALLOCA 1 + +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +#undef ENABLE_NLS + +/* Define to 1 if you have `alloca', as a function or macro. */ +#define HAVE_ALLOCA 1 + +/* Define to 1 if you have and it should be used (not on Ultrix). + */ +#define HAVE_ALLOCA_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_ARGZ_H 1 + +/* "Define if you have the header" */ +#undef HAVE_CURSES_H + +/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +#define HAVE_DCGETTEXT 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_ERROR_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define to 1 if you have the `feof_unlocked' function. */ +#define HAVE_FEOF_UNLOCKED 1 + +/* Define to 1 if you have the `fgets_unlocked' function. */ +#define HAVE_FGETS_UNLOCKED 1 + +/* Define to 1 if you have the `getcwd' function. */ +#define HAVE_GETCWD 1 + +/* Define to 1 if you have the `getc_unlocked' function. */ +#define HAVE_GETC_UNLOCKED 1 + +/* Define to 1 if you have the `getegid' function. */ +#define HAVE_GETEGID 1 + +/* Define to 1 if you have the `geteuid' function. */ +#define HAVE_GETEUID 1 + +/* Define to 1 if you have the `getgid' function. */ +#define HAVE_GETGID 1 + +/* Define to 1 if you have the `getpagesize' function. */ +#define HAVE_GETPAGESIZE 1 + +/* Define if the GNU gettext() function is already present or preinstalled. */ +#define HAVE_GETTEXT 1 + +/* Define to 1 if you have the `getuid' function. */ +#define HAVE_GETUID 1 + +/* Define if you have the iconv() function. */ +#undef HAVE_ICONV + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define if you have and nl_langinfo(CODESET). */ +#define HAVE_LANGINFO_CODESET 1 + +/* Define if your file defines LC_MESSAGES. */ +#define HAVE_LC_MESSAGES 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LIBINTL_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LOCALE_H 1 + +/* Define to 1 if your system has a GNU libc compatible `malloc' function, and + to 0 otherwise. */ +#define HAVE_MALLOC 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MALLOC_H 1 + +/* Define to 1 if you have the `memchr' function. */ +#define HAVE_MEMCHR 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `mempcpy' function. */ +#define HAVE_MEMPCPY 1 + +/* Define to 1 if you have a working `mmap' system call. */ +#define HAVE_MMAP 1 + +/* Define to 1 if you have the `munmap' function. */ +#define HAVE_MUNMAP 1 + +/* "Define if you have the header" */ +#define HAVE_NCURSESW_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_NL_TYPES_H 1 + +/* Define to 1 if you have the `putenv' function. */ +#define HAVE_PUTENV 1 + +/* "Define if you have fancy command input editing with Readline" */ +#undef HAVE_READLINE + +/* Define to 1 if you have the `setenv' function. */ +#define HAVE_SETENV 1 + +/* Define to 1 if you have the `setlocale' function. */ +#define HAVE_SETLOCALE 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDDEF_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `stpcpy' function. */ +#define HAVE_STPCPY 1 + +/* Define to 1 if you have the `strcasecmp' function. */ +#define HAVE_STRCASECMP 1 + +/* Define to 1 if you have the `strchr' function. */ +#define HAVE_STRCHR 1 + +/* Define to 1 if you have the `strdup' function. */ +#define HAVE_STRDUP 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `strstr' function. */ +#define HAVE_STRSTR 1 + +/* Define to 1 if you have the `strtoul' function. */ +#define HAVE_STRTOUL 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the `tsearch' function. */ +#define HAVE_TSEARCH 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to 1 if you have the `__argz_count' function. */ +#define HAVE___ARGZ_COUNT 1 + +/* Define to 1 if you have the `__argz_next' function. */ +#define HAVE___ARGZ_NEXT 1 + +/* Define to 1 if you have the `__argz_stringify' function. */ +#define HAVE___ARGZ_STRINGIFY 1 + +/* "Define if you use exterimental functions" */ +#define HUNSPELL_EXPERIMENTAL 1 + +/* "Define if you need warning messages" */ +#define HUNSPELL_WARNING_ON + +/* Define as const if the declaration of iconv() needs const. */ +#define ICONV_CONST 1 + +/* Name of package */ +#define PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#define PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "1.3.1" +#define VERSION "1.3.1" diff --git a/plugins/SpellChecker/hunspell/csutil.cxx b/plugins/SpellChecker/hunspell/csutil.cxx new file mode 100644 index 0000000000..dd89c19090 --- /dev/null +++ b/plugins/SpellChecker/hunspell/csutil.cxx @@ -0,0 +1,5834 @@ +#include "license.hunspell" +#include "license.myspell" + +#include +#include +#include +#include + +#include "csutil.hxx" +#include "atypes.hxx" +#include "langnum.hxx" + +// Unicode character encoding information +struct unicode_info { + unsigned short c; + unsigned short cupper; + unsigned short clower; +}; + +#ifdef OPENOFFICEORG +# include +#else +# ifndef MOZILLA_CLIENT +# include "utf_info.cxx" +# define UTF_LST_LEN (sizeof(utf_lst) / (sizeof(unicode_info))) +# endif +#endif + +#ifdef MOZILLA_CLIENT +#include "nsCOMPtr.h" +#include "nsServiceManagerUtils.h" +#include "nsIUnicodeEncoder.h" +#include "nsIUnicodeDecoder.h" +#include "nsUnicharUtils.h" +#include "nsICharsetConverterManager.h" + +static NS_DEFINE_CID(kCharsetConverterManagerCID, NS_ICHARSETCONVERTERMANAGER_CID); +#endif + +struct unicode_info2 { + char cletter; + unsigned short cupper; + unsigned short clower; +}; + +static struct unicode_info2 * utf_tbl = NULL; +static int utf_tbl_count = 0; // utf_tbl can be used by multiple Hunspell instances + +/* only UTF-16 (BMP) implementation */ +char * u16_u8(char * dest, int size, const w_char * src, int srclen) { + signed char * u8 = (signed char *)dest; + signed char * u8_max = (signed char *)(u8 + size); + const w_char * u2 = src; + const w_char * u2_max = src + srclen; + while ((u2 < u2_max) && (u8 < u8_max)) { + if (u2->h) { // > 0xFF + // XXX 4-byte haven't implemented yet. + if (u2->h >= 0x08) { // >= 0x800 (3-byte UTF-8 character) + *u8 = 0xe0 + (u2->h >> 4); + u8++; + if (u8 < u8_max) { + *u8 = 0x80 + ((u2->h & 0xf) << 2) + (u2->l >> 6); + u8++; + if (u8 < u8_max) { + *u8 = 0x80 + (u2->l & 0x3f); + u8++; + } + } + } else { // < 0x800 (2-byte UTF-8 character) + *u8 = 0xc0 + (u2->h << 2) + (u2->l >> 6); + u8++; + if (u8 < u8_max) { + *u8 = 0x80 + (u2->l & 0x3f); + u8++; + } + } + } else { // <= 0xFF + if (u2->l & 0x80) { // >0x80 (2-byte UTF-8 character) + *u8 = 0xc0 + (u2->l >> 6); + u8++; + if (u8 < u8_max) { + *u8 = 0x80 + (u2->l & 0x3f); + u8++; + } + } else { // < 0x80 (1-byte UTF-8 character) + *u8 = u2->l; + u8++; + } + } + u2++; + } + *u8 = '\0'; + return dest; +} + + +/* only UTF-16 (BMP) implementation */ +int u8_u16(w_char * dest, int size, const char * src) { + const signed char * u8 = (const signed char *)src; + w_char * u2 = dest; + w_char * u2_max = u2 + size; + + while ((u2 < u2_max) && *u8) { + switch ((*u8) & 0xf0) { + case 0x00: + case 0x10: + case 0x20: + case 0x30: + case 0x40: + case 0x50: + case 0x60: + case 0x70: { + u2->h = 0; + u2->l = *u8; + break; + } + case 0x80: + case 0x90: + case 0xa0: + case 0xb0: { + HUNSPELL_WARNING(stderr, "UTF-8 encoding error. Unexpected continuation bytes in %ld. character position\n%s\n", static_cast(u8 - (signed char *)src), src); + u2->h = 0xff; + u2->l = 0xfd; + break; + } + case 0xc0: + case 0xd0: { // 2-byte UTF-8 codes + if ((*(u8+1) & 0xc0) == 0x80) { + u2->h = (*u8 & 0x1f) >> 2; + u2->l = (*u8 << 6) + (*(u8+1) & 0x3f); + u8++; + } else { + HUNSPELL_WARNING(stderr, "UTF-8 encoding error. Missing continuation byte in %ld. character position:\n%s\n", static_cast(u8 - (signed char *)src), src); + u2->h = 0xff; + u2->l = 0xfd; + } + break; + } + case 0xe0: { // 3-byte UTF-8 codes + if ((*(u8+1) & 0xc0) == 0x80) { + u2->h = ((*u8 & 0x0f) << 4) + ((*(u8+1) & 0x3f) >> 2); + u8++; + if ((*(u8+1) & 0xc0) == 0x80) { + u2->l = (*u8 << 6) + (*(u8+1) & 0x3f); + u8++; + } else { + HUNSPELL_WARNING(stderr, "UTF-8 encoding error. Missing continuation byte in %ld. character position:\n%s\n", static_cast(u8 - (signed char *)src), src); + u2->h = 0xff; + u2->l = 0xfd; + } + } else { + HUNSPELL_WARNING(stderr, "UTF-8 encoding error. Missing continuation byte in %ld. character position:\n%s\n", static_cast(u8 - (signed char *)src), src); + u2->h = 0xff; + u2->l = 0xfd; + } + break; + } + case 0xf0: { // 4 or more byte UTF-8 codes + HUNSPELL_WARNING(stderr, "This UTF-8 encoding can't convert to UTF-16:\n%s\n", src); + u2->h = 0xff; + u2->l = 0xfd; + return -1; + } + } + u8++; + u2++; + } + return (int)(u2 - dest); +} + +void flag_qsort(unsigned short flags[], int begin, int end) { + unsigned short reg; + if (end > begin) { + unsigned short pivot = flags[begin]; + int l = begin + 1; + int r = end; + while(l < r) { + if (flags[l] <= pivot) { + l++; + } else { + r--; + reg = flags[l]; + flags[l] = flags[r]; + flags[r] = reg; + } + } + l--; + reg = flags[begin]; + flags[begin] = flags[l]; + flags[l] = reg; + + flag_qsort(flags, begin, l); + flag_qsort(flags, r, end); + } + } + +int flag_bsearch(unsigned short flags[], unsigned short flag, int length) { + int mid; + int left = 0; + int right = length - 1; + while (left <= right) { + mid = (left + right) / 2; + if (flags[mid] == flag) return 1; + if (flag < flags[mid]) right = mid - 1; + else left = mid + 1; + } + return 0; +} + + // strip strings into token based on single char delimiter + // acts like strsep() but only uses a delim char and not + // a delim string + // default delimiter: white space characters + + char * mystrsep(char ** stringp, const char delim) + { + char * mp = *stringp; + if (*mp != '\0') { + char * dp; + if (delim) { + dp = strchr(mp, delim); + } else { + // don't use isspace() here, the string can be in some random charset + // that's way different than the locale's + for (dp = mp; (*dp && *dp != ' ' && *dp != '\t'); dp++); + if (!*dp) dp = NULL; + } + if (dp) { + *stringp = dp+1; + *dp = '\0'; + } else { + *stringp = mp + strlen(mp); + } + return mp; + } + return NULL; + } + + // replaces strdup with ansi version + char * mystrdup(const char * s) + { + char * d = NULL; + if (s) { + size_t sl = strlen(s)+1; + d = (char *) malloc(sl); + if (d) { + memcpy(d,s,sl); + } else { + HUNSPELL_WARNING(stderr, "Can't allocate memory.\n"); + } + } + return d; + } + + // strcat for limited length destination string + char * mystrcat(char * dest, const char * st, int max) { + int len; + int len2; + if (dest == NULL || st == NULL) return dest; + len = strlen(dest); + len2 = strlen(st); + if (len + len2 + 1 > max) return dest; + strcpy(dest + len, st); + return dest; + } + + // remove cross-platform text line end characters + void mychomp(char * s) + { + size_t k = strlen(s); + if ((k > 0) && ((*(s+k-1)=='\r') || (*(s+k-1)=='\n'))) *(s+k-1) = '\0'; + if ((k > 1) && (*(s+k-2) == '\r')) *(s+k-2) = '\0'; + } + + + // does an ansi strdup of the reverse of a string + char * myrevstrdup(const char * s) + { + char * d = NULL; + if (s) { + size_t sl = strlen(s); + d = (char *) malloc(sl+1); + if (d) { + const char * p = s + sl - 1; + char * q = d; + while (p >= s) *q++ = *p--; + *q = '\0'; + } else { + HUNSPELL_WARNING(stderr, "Can't allocate memory.\n"); + } + } + return d; + } + +// break text to lines +// return number of lines +int line_tok(const char * text, char *** lines, char breakchar) { + int linenum = 0; + if (!text) { + return linenum; + } + char * dup = mystrdup(text); + char * p = strchr(dup, breakchar); + while (p) { + linenum++; + *p = '\0'; + p++; + p = strchr(p, breakchar); + } + linenum++; + *lines = (char **) malloc(linenum * sizeof(char *)); + if (!(*lines)) { + free(dup); + return 0; + } + + p = dup; + int l = 0; + for (int i = 0; i < linenum; i++) { + if (*p != '\0') { + (*lines)[l] = mystrdup(p); + if (!(*lines)[l]) { + for (i = 0; i < l; i++) free((*lines)[i]); + free(dup); + return 0; + } + l++; + } + p += strlen(p) + 1; + } + free(dup); + if (!l) free(*lines); + return l; +} + +// uniq line in place +char * line_uniq(char * text, char breakchar) { + char ** lines; + int linenum = line_tok(text, &lines, breakchar); + int i; + strcpy(text, lines[0]); + for ( i = 1; i < linenum; i++ ) { + int dup = 0; + for (int j = 0; j < i; j++) { + if (strcmp(lines[i], lines[j]) == 0) dup = 1; + } + if (!dup) { + if ((i > 1) || (*(lines[0]) != '\0')) { + sprintf(text + strlen(text), "%c", breakchar); + } + strcat(text, lines[i]); + } + } + for ( i = 0; i < linenum; i++ ) { + if (lines[i]) free(lines[i]); + } + if (lines) free(lines); + return text; +} + +// uniq and boundary for compound analysis: "1\n\2\n\1" -> " ( \1 | \2 ) " +char * line_uniq_app(char ** text, char breakchar) { + if (!strchr(*text, breakchar)) { + return *text; + } + + char ** lines; + int i; + int linenum = line_tok(*text, &lines, breakchar); + int dup = 0; + for (i = 0; i < linenum; i++) { + for (int j = 0; j < (i - 1); j++) { + if (strcmp(lines[i], lines[j]) == 0) { + *(lines[i]) = '\0'; + dup++; + break; + } + } + } + if ((linenum - dup) == 1) { + strcpy(*text, lines[0]); + freelist(&lines, linenum); + return *text; + } + char * newtext = (char *) malloc(strlen(*text) + 2 * linenum + 3 + 1); + if (newtext) { + free(*text); + *text = newtext; + } else { + freelist(&lines, linenum); + return *text; + } + strcpy(*text," ( "); + for (i = 0; i < linenum; i++) if (*(lines[i])) { + sprintf(*text + strlen(*text), "%s%s", lines[i], " | "); + } + (*text)[strlen(*text) - 2] = ')'; // " ) " + freelist(&lines, linenum); + return *text; +} + + // append s to ends of every lines in text + void strlinecat(char * dest, const char * s) + { + char * dup = mystrdup(dest); + char * source = dup; + int len = strlen(s); + if (dup) { + while (*source) { + if (*source == '\n') { + strncpy(dest, s, len); + dest += len; + } + *dest = *source; + source++; dest++; + } + strcpy(dest, s); + free(dup); + } + } + +// change \n to char c +char * tr(char * text, char oldc, char newc) { + char * p; + for (p = text; *p; p++) if (*p == oldc) *p = newc; + return text; +} + +// morphcmp(): compare MORPH_DERI_SFX, MORPH_INFL_SFX and MORPH_TERM_SFX fields +// in the first line of the inputs +// return 0, if inputs equal +// return 1, if inputs may equal with a secondary suffix +// otherwise return -1 +int morphcmp(const char * s, const char * t) +{ + int se = 0; + int te = 0; + const char * sl; + const char * tl; + const char * olds; + const char * oldt; + if (!s || !t) return 1; + olds = s; + sl = strchr(s, '\n'); + s = strstr(s, MORPH_DERI_SFX); + if (!s || (sl && sl < s)) s = strstr(olds, MORPH_INFL_SFX); + if (!s || (sl && sl < s)) { + s= strstr(olds, MORPH_TERM_SFX); + olds = NULL; + } + oldt = t; + tl = strchr(t, '\n'); + t = strstr(t, MORPH_DERI_SFX); + if (!t || (tl && tl < t)) t = strstr(oldt, MORPH_INFL_SFX); + if (!t || (tl && tl < t)) { + t = strstr(oldt, MORPH_TERM_SFX); + oldt = NULL; + } + while (s && t && (!sl || sl > s) && (!tl || tl > t)) { + s += MORPH_TAG_LEN; + t += MORPH_TAG_LEN; + se = 0; + te = 0; + while ((*s == *t) && !se && !te) { + s++; + t++; + switch(*s) { + case ' ': + case '\n': + case '\t': + case '\0': se = 1; + } + switch(*t) { + case ' ': + case '\n': + case '\t': + case '\0': te = 1; + } + } + if (!se || !te) { + // not terminal suffix difference + if (olds) return -1; + return 1; + } + olds = s; + s = strstr(s, MORPH_DERI_SFX); + if (!s || (sl && sl < s)) s = strstr(olds, MORPH_INFL_SFX); + if (!s || (sl && sl < s)) { + s = strstr(olds, MORPH_TERM_SFX); + olds = NULL; + } + oldt = t; + t = strstr(t, MORPH_DERI_SFX); + if (!t || (tl && tl < t)) t = strstr(oldt, MORPH_INFL_SFX); + if (!t || (tl && tl < t)) { + t = strstr(oldt, MORPH_TERM_SFX); + oldt = NULL; + } + } + if (!s && !t && se && te) return 0; + return 1; +} + +int get_sfxcount(const char * morph) +{ + if (!morph || !*morph) return 0; + int n = 0; + const char * old = morph; + morph = strstr(morph, MORPH_DERI_SFX); + if (!morph) morph = strstr(old, MORPH_INFL_SFX); + if (!morph) morph = strstr(old, MORPH_TERM_SFX); + while (morph) { + n++; + old = morph; + morph = strstr(morph + 1, MORPH_DERI_SFX); + if (!morph) morph = strstr(old + 1, MORPH_INFL_SFX); + if (!morph) morph = strstr(old + 1, MORPH_TERM_SFX); + } + return n; +} + + +int fieldlen(const char * r) +{ + int n = 0; + while (r && *r != ' ' && *r != '\t' && *r != '\0' && *r != '\n') { + r++; + n++; + } + return n; +} + +char * copy_field(char * dest, const char * morph, const char * var) +{ + if (!morph) return NULL; + const char * beg = strstr(morph, var); + if (beg) { + char * d = dest; + for (beg += MORPH_TAG_LEN; *beg != ' ' && *beg != '\t' && + *beg != '\n' && *beg != '\0'; d++, beg++) { + *d = *beg; + } + *d = '\0'; + return dest; + } + return NULL; +} + +char * mystrrep(char * word, const char * pat, const char * rep) { + char * pos = strstr(word, pat); + if (pos) { + int replen = strlen(rep); + int patlen = strlen(pat); + while (pos) { + if (replen < patlen) { + char * end = word + strlen(word); + char * next = pos + replen; + char * prev = pos + strlen(pat); + for (; prev < end; *next = *prev, prev++, next++); + *next = '\0'; + } else if (replen > patlen) { + char * end = pos + patlen; + char * next = word + strlen(word) + replen - patlen; + char * prev = next - replen + patlen; + for (; prev >= end; *next = *prev, prev--, next--); + } + strncpy(pos, rep, replen); + pos = strstr(word, pat); + } + } + return word; +} + + // reverse word + int reverseword(char * word) { + char r; + for (char * dest = word + strlen(word) - 1; word < dest; word++, dest--) { + r=*word; + *word = *dest; + *dest = r; + } + return 0; + } + + // reverse word (error: 1) + int reverseword_utf(char * word) { + w_char w[MAXWORDLEN]; + w_char * p; + w_char r; + int l = u8_u16(w, MAXWORDLEN, word); + if (l == -1) return 1; + p = w; + for (w_char * dest = w + l - 1; p < dest; p++, dest--) { + r=*p; + *p = *dest; + *dest = r; + } + u16_u8(word, MAXWORDUTF8LEN, w, l); + return 0; + } + + int uniqlist(char ** list, int n) { + int i; + if (n < 2) return n; + for (i = 0; i < n; i++) { + for (int j = 0; j < i; j++) { + if (list[j] && list[i] && (strcmp(list[j], list[i]) == 0)) { + free(list[i]); + list[i] = NULL; + break; + } + } + } + int m = 1; + for (i = 1; i < n; i++) if (list[i]) { + list[m] = list[i]; + m++; + } + return m; + } + + void freelist(char *** list, int n) { + if (list && *list && n > 0) { + for (int i = 0; i < n; i++) if ((*list)[i]) free((*list)[i]); + free(*list); + *list = NULL; + } + } + + // convert null terminated string to all caps + void mkallcap(char * p, const struct cs_info * csconv) + { + while (*p != '\0') { + *p = csconv[((unsigned char) *p)].cupper; + p++; + } + } + + // convert null terminated string to all little + void mkallsmall(char * p, const struct cs_info * csconv) + { + while (*p != '\0') { + *p = csconv[((unsigned char) *p)].clower; + p++; + } + } + +void mkallsmall_utf(w_char * u, int nc, int langnum) { + for (int i = 0; i < nc; i++) { + unsigned short idx = (u[i].h << 8) + u[i].l; + if (idx != unicodetolower(idx, langnum)) { + u[i].h = (unsigned char) (unicodetolower(idx, langnum) >> 8); + u[i].l = (unsigned char) (unicodetolower(idx, langnum) & 0x00FF); + } + } +} + +void mkallcap_utf(w_char * u, int nc, int langnum) { + for (int i = 0; i < nc; i++) { + unsigned short idx = (u[i].h << 8) + u[i].l; + if (idx != unicodetoupper(idx, langnum)) { + u[i].h = (unsigned char) (unicodetoupper(idx, langnum) >> 8); + u[i].l = (unsigned char) (unicodetoupper(idx, langnum) & 0x00FF); + } + } +} + + // convert null terminated string to have initial capital + void mkinitcap(char * p, const struct cs_info * csconv) + { + if (*p != '\0') *p = csconv[((unsigned char)*p)].cupper; + } + + // conversion function for protected memory + void store_pointer(char * dest, char * source) + { + memcpy(dest, &source, sizeof(char *)); + } + + // conversion function for protected memory + char * get_stored_pointer(const char * s) + { + char * p; + memcpy(&p, s, sizeof(char *)); + return p; + } + +#ifndef MOZILLA_CLIENT + // convert null terminated string to all caps using encoding + void enmkallcap(char * d, const char * p, const char * encoding) + + { + struct cs_info * csconv = get_current_cs(encoding); + while (*p != '\0') { + *d++ = csconv[((unsigned char) *p)].cupper; + p++; + } + *d = '\0'; + } + + // convert null terminated string to all little using encoding + void enmkallsmall(char * d, const char * p, const char * encoding) + { + struct cs_info * csconv = get_current_cs(encoding); + while (*p != '\0') { + *d++ = csconv[((unsigned char) *p)].clower; + p++; + } + *d = '\0'; + } + + // convert null terminated string to have initial capital using encoding + void enmkinitcap(char * d, const char * p, const char * encoding) + { + struct cs_info * csconv = get_current_cs(encoding); + memcpy(d,p,(strlen(p)+1)); + if (*p != '\0') *d= csconv[((unsigned char)*p)].cupper; + } + +// these are simple character mappings for the +// encodings supported +// supplying isupper, tolower, and toupper + +static struct cs_info iso1_tbl[] = { +{ 0x00, 0x00, 0x00 }, +{ 0x00, 0x01, 0x01 }, +{ 0x00, 0x02, 0x02 }, +{ 0x00, 0x03, 0x03 }, +{ 0x00, 0x04, 0x04 }, +{ 0x00, 0x05, 0x05 }, +{ 0x00, 0x06, 0x06 }, +{ 0x00, 0x07, 0x07 }, +{ 0x00, 0x08, 0x08 }, +{ 0x00, 0x09, 0x09 }, +{ 0x00, 0x0a, 0x0a }, +{ 0x00, 0x0b, 0x0b }, +{ 0x00, 0x0c, 0x0c }, +{ 0x00, 0x0d, 0x0d }, +{ 0x00, 0x0e, 0x0e }, +{ 0x00, 0x0f, 0x0f }, +{ 0x00, 0x10, 0x10 }, +{ 0x00, 0x11, 0x11 }, +{ 0x00, 0x12, 0x12 }, +{ 0x00, 0x13, 0x13 }, +{ 0x00, 0x14, 0x14 }, +{ 0x00, 0x15, 0x15 }, +{ 0x00, 0x16, 0x16 }, +{ 0x00, 0x17, 0x17 }, +{ 0x00, 0x18, 0x18 }, +{ 0x00, 0x19, 0x19 }, +{ 0x00, 0x1a, 0x1a }, +{ 0x00, 0x1b, 0x1b }, +{ 0x00, 0x1c, 0x1c }, +{ 0x00, 0x1d, 0x1d }, +{ 0x00, 0x1e, 0x1e }, +{ 0x00, 0x1f, 0x1f }, +{ 0x00, 0x20, 0x20 }, +{ 0x00, 0x21, 0x21 }, +{ 0x00, 0x22, 0x22 }, +{ 0x00, 0x23, 0x23 }, +{ 0x00, 0x24, 0x24 }, +{ 0x00, 0x25, 0x25 }, +{ 0x00, 0x26, 0x26 }, +{ 0x00, 0x27, 0x27 }, +{ 0x00, 0x28, 0x28 }, +{ 0x00, 0x29, 0x29 }, +{ 0x00, 0x2a, 0x2a }, +{ 0x00, 0x2b, 0x2b }, +{ 0x00, 0x2c, 0x2c }, +{ 0x00, 0x2d, 0x2d }, +{ 0x00, 0x2e, 0x2e }, +{ 0x00, 0x2f, 0x2f }, +{ 0x00, 0x30, 0x30 }, +{ 0x00, 0x31, 0x31 }, +{ 0x00, 0x32, 0x32 }, +{ 0x00, 0x33, 0x33 }, +{ 0x00, 0x34, 0x34 }, +{ 0x00, 0x35, 0x35 }, +{ 0x00, 0x36, 0x36 }, +{ 0x00, 0x37, 0x37 }, +{ 0x00, 0x38, 0x38 }, +{ 0x00, 0x39, 0x39 }, +{ 0x00, 0x3a, 0x3a }, +{ 0x00, 0x3b, 0x3b }, +{ 0x00, 0x3c, 0x3c }, +{ 0x00, 0x3d, 0x3d }, +{ 0x00, 0x3e, 0x3e }, +{ 0x00, 0x3f, 0x3f }, +{ 0x00, 0x40, 0x40 }, +{ 0x01, 0x61, 0x41 }, +{ 0x01, 0x62, 0x42 }, +{ 0x01, 0x63, 0x43 }, +{ 0x01, 0x64, 0x44 }, +{ 0x01, 0x65, 0x45 }, +{ 0x01, 0x66, 0x46 }, +{ 0x01, 0x67, 0x47 }, +{ 0x01, 0x68, 0x48 }, +{ 0x01, 0x69, 0x49 }, +{ 0x01, 0x6a, 0x4a }, +{ 0x01, 0x6b, 0x4b }, +{ 0x01, 0x6c, 0x4c }, +{ 0x01, 0x6d, 0x4d }, +{ 0x01, 0x6e, 0x4e }, +{ 0x01, 0x6f, 0x4f }, +{ 0x01, 0x70, 0x50 }, +{ 0x01, 0x71, 0x51 }, +{ 0x01, 0x72, 0x52 }, +{ 0x01, 0x73, 0x53 }, +{ 0x01, 0x74, 0x54 }, +{ 0x01, 0x75, 0x55 }, +{ 0x01, 0x76, 0x56 }, +{ 0x01, 0x77, 0x57 }, +{ 0x01, 0x78, 0x58 }, +{ 0x01, 0x79, 0x59 }, +{ 0x01, 0x7a, 0x5a }, +{ 0x00, 0x5b, 0x5b }, +{ 0x00, 0x5c, 0x5c }, +{ 0x00, 0x5d, 0x5d }, +{ 0x00, 0x5e, 0x5e }, +{ 0x00, 0x5f, 0x5f }, +{ 0x00, 0x60, 0x60 }, +{ 0x00, 0x61, 0x41 }, +{ 0x00, 0x62, 0x42 }, +{ 0x00, 0x63, 0x43 }, +{ 0x00, 0x64, 0x44 }, +{ 0x00, 0x65, 0x45 }, +{ 0x00, 0x66, 0x46 }, +{ 0x00, 0x67, 0x47 }, +{ 0x00, 0x68, 0x48 }, +{ 0x00, 0x69, 0x49 }, +{ 0x00, 0x6a, 0x4a }, +{ 0x00, 0x6b, 0x4b }, +{ 0x00, 0x6c, 0x4c }, +{ 0x00, 0x6d, 0x4d }, +{ 0x00, 0x6e, 0x4e }, +{ 0x00, 0x6f, 0x4f }, +{ 0x00, 0x70, 0x50 }, +{ 0x00, 0x71, 0x51 }, +{ 0x00, 0x72, 0x52 }, +{ 0x00, 0x73, 0x53 }, +{ 0x00, 0x74, 0x54 }, +{ 0x00, 0x75, 0x55 }, +{ 0x00, 0x76, 0x56 }, +{ 0x00, 0x77, 0x57 }, +{ 0x00, 0x78, 0x58 }, +{ 0x00, 0x79, 0x59 }, +{ 0x00, 0x7a, 0x5a }, +{ 0x00, 0x7b, 0x7b }, +{ 0x00, 0x7c, 0x7c }, +{ 0x00, 0x7d, 0x7d }, +{ 0x00, 0x7e, 0x7e }, +{ 0x00, 0x7f, 0x7f }, +{ 0x00, 0x80, 0x80 }, +{ 0x00, 0x81, 0x81 }, +{ 0x00, 0x82, 0x82 }, +{ 0x00, 0x83, 0x83 }, +{ 0x00, 0x84, 0x84 }, +{ 0x00, 0x85, 0x85 }, +{ 0x00, 0x86, 0x86 }, +{ 0x00, 0x87, 0x87 }, +{ 0x00, 0x88, 0x88 }, +{ 0x00, 0x89, 0x89 }, +{ 0x00, 0x8a, 0x8a }, +{ 0x00, 0x8b, 0x8b }, +{ 0x00, 0x8c, 0x8c }, +{ 0x00, 0x8d, 0x8d }, +{ 0x00, 0x8e, 0x8e }, +{ 0x00, 0x8f, 0x8f }, +{ 0x00, 0x90, 0x90 }, +{ 0x00, 0x91, 0x91 }, +{ 0x00, 0x92, 0x92 }, +{ 0x00, 0x93, 0x93 }, +{ 0x00, 0x94, 0x94 }, +{ 0x00, 0x95, 0x95 }, +{ 0x00, 0x96, 0x96 }, +{ 0x00, 0x97, 0x97 }, +{ 0x00, 0x98, 0x98 }, +{ 0x00, 0x99, 0x99 }, +{ 0x00, 0x9a, 0x9a }, +{ 0x00, 0x9b, 0x9b }, +{ 0x00, 0x9c, 0x9c }, +{ 0x00, 0x9d, 0x9d }, +{ 0x00, 0x9e, 0x9e }, +{ 0x00, 0x9f, 0x9f }, +{ 0x00, 0xa0, 0xa0 }, +{ 0x00, 0xa1, 0xa1 }, +{ 0x00, 0xa2, 0xa2 }, +{ 0x00, 0xa3, 0xa3 }, +{ 0x00, 0xa4, 0xa4 }, +{ 0x00, 0xa5, 0xa5 }, +{ 0x00, 0xa6, 0xa6 }, +{ 0x00, 0xa7, 0xa7 }, +{ 0x00, 0xa8, 0xa8 }, +{ 0x00, 0xa9, 0xa9 }, +{ 0x00, 0xaa, 0xaa }, +{ 0x00, 0xab, 0xab }, +{ 0x00, 0xac, 0xac }, +{ 0x00, 0xad, 0xad }, +{ 0x00, 0xae, 0xae }, +{ 0x00, 0xaf, 0xaf }, +{ 0x00, 0xb0, 0xb0 }, +{ 0x00, 0xb1, 0xb1 }, +{ 0x00, 0xb2, 0xb2 }, +{ 0x00, 0xb3, 0xb3 }, +{ 0x00, 0xb4, 0xb4 }, +{ 0x00, 0xb5, 0xb5 }, +{ 0x00, 0xb6, 0xb6 }, +{ 0x00, 0xb7, 0xb7 }, +{ 0x00, 0xb8, 0xb8 }, +{ 0x00, 0xb9, 0xb9 }, +{ 0x00, 0xba, 0xba }, +{ 0x00, 0xbb, 0xbb }, +{ 0x00, 0xbc, 0xbc }, +{ 0x00, 0xbd, 0xbd }, +{ 0x00, 0xbe, 0xbe }, +{ 0x00, 0xbf, 0xbf }, +{ 0x01, 0xe0, 0xc0 }, +{ 0x01, 0xe1, 0xc1 }, +{ 0x01, 0xe2, 0xc2 }, +{ 0x01, 0xe3, 0xc3 }, +{ 0x01, 0xe4, 0xc4 }, +{ 0x01, 0xe5, 0xc5 }, +{ 0x01, 0xe6, 0xc6 }, +{ 0x01, 0xe7, 0xc7 }, +{ 0x01, 0xe8, 0xc8 }, +{ 0x01, 0xe9, 0xc9 }, +{ 0x01, 0xea, 0xca }, +{ 0x01, 0xeb, 0xcb }, +{ 0x01, 0xec, 0xcc }, +{ 0x01, 0xed, 0xcd }, +{ 0x01, 0xee, 0xce }, +{ 0x01, 0xef, 0xcf }, +{ 0x01, 0xf0, 0xd0 }, +{ 0x01, 0xf1, 0xd1 }, +{ 0x01, 0xf2, 0xd2 }, +{ 0x01, 0xf3, 0xd3 }, +{ 0x01, 0xf4, 0xd4 }, +{ 0x01, 0xf5, 0xd5 }, +{ 0x01, 0xf6, 0xd6 }, +{ 0x00, 0xd7, 0xd7 }, +{ 0x01, 0xf8, 0xd8 }, +{ 0x01, 0xf9, 0xd9 }, +{ 0x01, 0xfa, 0xda }, +{ 0x01, 0xfb, 0xdb }, +{ 0x01, 0xfc, 0xdc }, +{ 0x01, 0xfd, 0xdd }, +{ 0x01, 0xfe, 0xde }, +{ 0x00, 0xdf, 0xdf }, +{ 0x00, 0xe0, 0xc0 }, +{ 0x00, 0xe1, 0xc1 }, +{ 0x00, 0xe2, 0xc2 }, +{ 0x00, 0xe3, 0xc3 }, +{ 0x00, 0xe4, 0xc4 }, +{ 0x00, 0xe5, 0xc5 }, +{ 0x00, 0xe6, 0xc6 }, +{ 0x00, 0xe7, 0xc7 }, +{ 0x00, 0xe8, 0xc8 }, +{ 0x00, 0xe9, 0xc9 }, +{ 0x00, 0xea, 0xca }, +{ 0x00, 0xeb, 0xcb }, +{ 0x00, 0xec, 0xcc }, +{ 0x00, 0xed, 0xcd }, +{ 0x00, 0xee, 0xce }, +{ 0x00, 0xef, 0xcf }, +{ 0x00, 0xf0, 0xd0 }, +{ 0x00, 0xf1, 0xd1 }, +{ 0x00, 0xf2, 0xd2 }, +{ 0x00, 0xf3, 0xd3 }, +{ 0x00, 0xf4, 0xd4 }, +{ 0x00, 0xf5, 0xd5 }, +{ 0x00, 0xf6, 0xd6 }, +{ 0x00, 0xf7, 0xf7 }, +{ 0x00, 0xf8, 0xd8 }, +{ 0x00, 0xf9, 0xd9 }, +{ 0x00, 0xfa, 0xda }, +{ 0x00, 0xfb, 0xdb }, +{ 0x00, 0xfc, 0xdc }, +{ 0x00, 0xfd, 0xdd }, +{ 0x00, 0xfe, 0xde }, +{ 0x00, 0xff, 0xff } +}; + + +static struct cs_info iso2_tbl[] = { +{ 0x00, 0x00, 0x00 }, +{ 0x00, 0x01, 0x01 }, +{ 0x00, 0x02, 0x02 }, +{ 0x00, 0x03, 0x03 }, +{ 0x00, 0x04, 0x04 }, +{ 0x00, 0x05, 0x05 }, +{ 0x00, 0x06, 0x06 }, +{ 0x00, 0x07, 0x07 }, +{ 0x00, 0x08, 0x08 }, +{ 0x00, 0x09, 0x09 }, +{ 0x00, 0x0a, 0x0a }, +{ 0x00, 0x0b, 0x0b }, +{ 0x00, 0x0c, 0x0c }, +{ 0x00, 0x0d, 0x0d }, +{ 0x00, 0x0e, 0x0e }, +{ 0x00, 0x0f, 0x0f }, +{ 0x00, 0x10, 0x10 }, +{ 0x00, 0x11, 0x11 }, +{ 0x00, 0x12, 0x12 }, +{ 0x00, 0x13, 0x13 }, +{ 0x00, 0x14, 0x14 }, +{ 0x00, 0x15, 0x15 }, +{ 0x00, 0x16, 0x16 }, +{ 0x00, 0x17, 0x17 }, +{ 0x00, 0x18, 0x18 }, +{ 0x00, 0x19, 0x19 }, +{ 0x00, 0x1a, 0x1a }, +{ 0x00, 0x1b, 0x1b }, +{ 0x00, 0x1c, 0x1c }, +{ 0x00, 0x1d, 0x1d }, +{ 0x00, 0x1e, 0x1e }, +{ 0x00, 0x1f, 0x1f }, +{ 0x00, 0x20, 0x20 }, +{ 0x00, 0x21, 0x21 }, +{ 0x00, 0x22, 0x22 }, +{ 0x00, 0x23, 0x23 }, +{ 0x00, 0x24, 0x24 }, +{ 0x00, 0x25, 0x25 }, +{ 0x00, 0x26, 0x26 }, +{ 0x00, 0x27, 0x27 }, +{ 0x00, 0x28, 0x28 }, +{ 0x00, 0x29, 0x29 }, +{ 0x00, 0x2a, 0x2a }, +{ 0x00, 0x2b, 0x2b }, +{ 0x00, 0x2c, 0x2c }, +{ 0x00, 0x2d, 0x2d }, +{ 0x00, 0x2e, 0x2e }, +{ 0x00, 0x2f, 0x2f }, +{ 0x00, 0x30, 0x30 }, +{ 0x00, 0x31, 0x31 }, +{ 0x00, 0x32, 0x32 }, +{ 0x00, 0x33, 0x33 }, +{ 0x00, 0x34, 0x34 }, +{ 0x00, 0x35, 0x35 }, +{ 0x00, 0x36, 0x36 }, +{ 0x00, 0x37, 0x37 }, +{ 0x00, 0x38, 0x38 }, +{ 0x00, 0x39, 0x39 }, +{ 0x00, 0x3a, 0x3a }, +{ 0x00, 0x3b, 0x3b }, +{ 0x00, 0x3c, 0x3c }, +{ 0x00, 0x3d, 0x3d }, +{ 0x00, 0x3e, 0x3e }, +{ 0x00, 0x3f, 0x3f }, +{ 0x00, 0x40, 0x40 }, +{ 0x01, 0x61, 0x41 }, +{ 0x01, 0x62, 0x42 }, +{ 0x01, 0x63, 0x43 }, +{ 0x01, 0x64, 0x44 }, +{ 0x01, 0x65, 0x45 }, +{ 0x01, 0x66, 0x46 }, +{ 0x01, 0x67, 0x47 }, +{ 0x01, 0x68, 0x48 }, +{ 0x01, 0x69, 0x49 }, +{ 0x01, 0x6a, 0x4a }, +{ 0x01, 0x6b, 0x4b }, +{ 0x01, 0x6c, 0x4c }, +{ 0x01, 0x6d, 0x4d }, +{ 0x01, 0x6e, 0x4e }, +{ 0x01, 0x6f, 0x4f }, +{ 0x01, 0x70, 0x50 }, +{ 0x01, 0x71, 0x51 }, +{ 0x01, 0x72, 0x52 }, +{ 0x01, 0x73, 0x53 }, +{ 0x01, 0x74, 0x54 }, +{ 0x01, 0x75, 0x55 }, +{ 0x01, 0x76, 0x56 }, +{ 0x01, 0x77, 0x57 }, +{ 0x01, 0x78, 0x58 }, +{ 0x01, 0x79, 0x59 }, +{ 0x01, 0x7a, 0x5a }, +{ 0x00, 0x5b, 0x5b }, +{ 0x00, 0x5c, 0x5c }, +{ 0x00, 0x5d, 0x5d }, +{ 0x00, 0x5e, 0x5e }, +{ 0x00, 0x5f, 0x5f }, +{ 0x00, 0x60, 0x60 }, +{ 0x00, 0x61, 0x41 }, +{ 0x00, 0x62, 0x42 }, +{ 0x00, 0x63, 0x43 }, +{ 0x00, 0x64, 0x44 }, +{ 0x00, 0x65, 0x45 }, +{ 0x00, 0x66, 0x46 }, +{ 0x00, 0x67, 0x47 }, +{ 0x00, 0x68, 0x48 }, +{ 0x00, 0x69, 0x49 }, +{ 0x00, 0x6a, 0x4a }, +{ 0x00, 0x6b, 0x4b }, +{ 0x00, 0x6c, 0x4c }, +{ 0x00, 0x6d, 0x4d }, +{ 0x00, 0x6e, 0x4e }, +{ 0x00, 0x6f, 0x4f }, +{ 0x00, 0x70, 0x50 }, +{ 0x00, 0x71, 0x51 }, +{ 0x00, 0x72, 0x52 }, +{ 0x00, 0x73, 0x53 }, +{ 0x00, 0x74, 0x54 }, +{ 0x00, 0x75, 0x55 }, +{ 0x00, 0x76, 0x56 }, +{ 0x00, 0x77, 0x57 }, +{ 0x00, 0x78, 0x58 }, +{ 0x00, 0x79, 0x59 }, +{ 0x00, 0x7a, 0x5a }, +{ 0x00, 0x7b, 0x7b }, +{ 0x00, 0x7c, 0x7c }, +{ 0x00, 0x7d, 0x7d }, +{ 0x00, 0x7e, 0x7e }, +{ 0x00, 0x7f, 0x7f }, +{ 0x00, 0x80, 0x80 }, +{ 0x00, 0x81, 0x81 }, +{ 0x00, 0x82, 0x82 }, +{ 0x00, 0x83, 0x83 }, +{ 0x00, 0x84, 0x84 }, +{ 0x00, 0x85, 0x85 }, +{ 0x00, 0x86, 0x86 }, +{ 0x00, 0x87, 0x87 }, +{ 0x00, 0x88, 0x88 }, +{ 0x00, 0x89, 0x89 }, +{ 0x00, 0x8a, 0x8a }, +{ 0x00, 0x8b, 0x8b }, +{ 0x00, 0x8c, 0x8c }, +{ 0x00, 0x8d, 0x8d }, +{ 0x00, 0x8e, 0x8e }, +{ 0x00, 0x8f, 0x8f }, +{ 0x00, 0x90, 0x90 }, +{ 0x00, 0x91, 0x91 }, +{ 0x00, 0x92, 0x92 }, +{ 0x00, 0x93, 0x93 }, +{ 0x00, 0x94, 0x94 }, +{ 0x00, 0x95, 0x95 }, +{ 0x00, 0x96, 0x96 }, +{ 0x00, 0x97, 0x97 }, +{ 0x00, 0x98, 0x98 }, +{ 0x00, 0x99, 0x99 }, +{ 0x00, 0x9a, 0x9a }, +{ 0x00, 0x9b, 0x9b }, +{ 0x00, 0x9c, 0x9c }, +{ 0x00, 0x9d, 0x9d }, +{ 0x00, 0x9e, 0x9e }, +{ 0x00, 0x9f, 0x9f }, +{ 0x00, 0xa0, 0xa0 }, +{ 0x01, 0xb1, 0xa1 }, +{ 0x00, 0xa2, 0xa2 }, +{ 0x01, 0xb3, 0xa3 }, +{ 0x00, 0xa4, 0xa4 }, +{ 0x01, 0xb5, 0xa5 }, +{ 0x01, 0xb6, 0xa6 }, +{ 0x00, 0xa7, 0xa7 }, +{ 0x00, 0xa8, 0xa8 }, +{ 0x01, 0xb9, 0xa9 }, +{ 0x01, 0xba, 0xaa }, +{ 0x01, 0xbb, 0xab }, +{ 0x01, 0xbc, 0xac }, +{ 0x00, 0xad, 0xad }, +{ 0x01, 0xbe, 0xae }, +{ 0x01, 0xbf, 0xaf }, +{ 0x00, 0xb0, 0xb0 }, +{ 0x00, 0xb1, 0xa1 }, +{ 0x00, 0xb2, 0xb2 }, +{ 0x00, 0xb3, 0xa3 }, +{ 0x00, 0xb4, 0xb4 }, +{ 0x00, 0xb5, 0xa5 }, +{ 0x00, 0xb6, 0xa6 }, +{ 0x00, 0xb7, 0xb7 }, +{ 0x00, 0xb8, 0xb8 }, +{ 0x00, 0xb9, 0xa9 }, +{ 0x00, 0xba, 0xaa }, +{ 0x00, 0xbb, 0xab }, +{ 0x00, 0xbc, 0xac }, +{ 0x00, 0xbd, 0xbd }, +{ 0x00, 0xbe, 0xae }, +{ 0x00, 0xbf, 0xaf }, +{ 0x01, 0xe0, 0xc0 }, +{ 0x01, 0xe1, 0xc1 }, +{ 0x01, 0xe2, 0xc2 }, +{ 0x01, 0xe3, 0xc3 }, +{ 0x01, 0xe4, 0xc4 }, +{ 0x01, 0xe5, 0xc5 }, +{ 0x01, 0xe6, 0xc6 }, +{ 0x01, 0xe7, 0xc7 }, +{ 0x01, 0xe8, 0xc8 }, +{ 0x01, 0xe9, 0xc9 }, +{ 0x01, 0xea, 0xca }, +{ 0x01, 0xeb, 0xcb }, +{ 0x01, 0xec, 0xcc }, +{ 0x01, 0xed, 0xcd }, +{ 0x01, 0xee, 0xce }, +{ 0x01, 0xef, 0xcf }, +{ 0x01, 0xf0, 0xd0 }, +{ 0x01, 0xf1, 0xd1 }, +{ 0x01, 0xf2, 0xd2 }, +{ 0x01, 0xf3, 0xd3 }, +{ 0x01, 0xf4, 0xd4 }, +{ 0x01, 0xf5, 0xd5 }, +{ 0x01, 0xf6, 0xd6 }, +{ 0x00, 0xd7, 0xd7 }, +{ 0x01, 0xf8, 0xd8 }, +{ 0x01, 0xf9, 0xd9 }, +{ 0x01, 0xfa, 0xda }, +{ 0x01, 0xfb, 0xdb }, +{ 0x01, 0xfc, 0xdc }, +{ 0x01, 0xfd, 0xdd }, +{ 0x01, 0xfe, 0xde }, +{ 0x00, 0xdf, 0xdf }, +{ 0x00, 0xe0, 0xc0 }, +{ 0x00, 0xe1, 0xc1 }, +{ 0x00, 0xe2, 0xc2 }, +{ 0x00, 0xe3, 0xc3 }, +{ 0x00, 0xe4, 0xc4 }, +{ 0x00, 0xe5, 0xc5 }, +{ 0x00, 0xe6, 0xc6 }, +{ 0x00, 0xe7, 0xc7 }, +{ 0x00, 0xe8, 0xc8 }, +{ 0x00, 0xe9, 0xc9 }, +{ 0x00, 0xea, 0xca }, +{ 0x00, 0xeb, 0xcb }, +{ 0x00, 0xec, 0xcc }, +{ 0x00, 0xed, 0xcd }, +{ 0x00, 0xee, 0xce }, +{ 0x00, 0xef, 0xcf }, +{ 0x00, 0xf0, 0xd0 }, +{ 0x00, 0xf1, 0xd1 }, +{ 0x00, 0xf2, 0xd2 }, +{ 0x00, 0xf3, 0xd3 }, +{ 0x00, 0xf4, 0xd4 }, +{ 0x00, 0xf5, 0xd5 }, +{ 0x00, 0xf6, 0xd6 }, +{ 0x00, 0xf7, 0xf7 }, +{ 0x00, 0xf8, 0xd8 }, +{ 0x00, 0xf9, 0xd9 }, +{ 0x00, 0xfa, 0xda }, +{ 0x00, 0xfb, 0xdb }, +{ 0x00, 0xfc, 0xdc }, +{ 0x00, 0xfd, 0xdd }, +{ 0x00, 0xfe, 0xde }, +{ 0x00, 0xff, 0xff } +}; + + +static struct cs_info iso3_tbl[] = { +{ 0x00, 0x00, 0x00 }, +{ 0x00, 0x01, 0x01 }, +{ 0x00, 0x02, 0x02 }, +{ 0x00, 0x03, 0x03 }, +{ 0x00, 0x04, 0x04 }, +{ 0x00, 0x05, 0x05 }, +{ 0x00, 0x06, 0x06 }, +{ 0x00, 0x07, 0x07 }, +{ 0x00, 0x08, 0x08 }, +{ 0x00, 0x09, 0x09 }, +{ 0x00, 0x0a, 0x0a }, +{ 0x00, 0x0b, 0x0b }, +{ 0x00, 0x0c, 0x0c }, +{ 0x00, 0x0d, 0x0d }, +{ 0x00, 0x0e, 0x0e }, +{ 0x00, 0x0f, 0x0f }, +{ 0x00, 0x10, 0x10 }, +{ 0x00, 0x11, 0x11 }, +{ 0x00, 0x12, 0x12 }, +{ 0x00, 0x13, 0x13 }, +{ 0x00, 0x14, 0x14 }, +{ 0x00, 0x15, 0x15 }, +{ 0x00, 0x16, 0x16 }, +{ 0x00, 0x17, 0x17 }, +{ 0x00, 0x18, 0x18 }, +{ 0x00, 0x19, 0x19 }, +{ 0x00, 0x1a, 0x1a }, +{ 0x00, 0x1b, 0x1b }, +{ 0x00, 0x1c, 0x1c }, +{ 0x00, 0x1d, 0x1d }, +{ 0x00, 0x1e, 0x1e }, +{ 0x00, 0x1f, 0x1f }, +{ 0x00, 0x20, 0x20 }, +{ 0x00, 0x21, 0x21 }, +{ 0x00, 0x22, 0x22 }, +{ 0x00, 0x23, 0x23 }, +{ 0x00, 0x24, 0x24 }, +{ 0x00, 0x25, 0x25 }, +{ 0x00, 0x26, 0x26 }, +{ 0x00, 0x27, 0x27 }, +{ 0x00, 0x28, 0x28 }, +{ 0x00, 0x29, 0x29 }, +{ 0x00, 0x2a, 0x2a }, +{ 0x00, 0x2b, 0x2b }, +{ 0x00, 0x2c, 0x2c }, +{ 0x00, 0x2d, 0x2d }, +{ 0x00, 0x2e, 0x2e }, +{ 0x00, 0x2f, 0x2f }, +{ 0x00, 0x30, 0x30 }, +{ 0x00, 0x31, 0x31 }, +{ 0x00, 0x32, 0x32 }, +{ 0x00, 0x33, 0x33 }, +{ 0x00, 0x34, 0x34 }, +{ 0x00, 0x35, 0x35 }, +{ 0x00, 0x36, 0x36 }, +{ 0x00, 0x37, 0x37 }, +{ 0x00, 0x38, 0x38 }, +{ 0x00, 0x39, 0x39 }, +{ 0x00, 0x3a, 0x3a }, +{ 0x00, 0x3b, 0x3b }, +{ 0x00, 0x3c, 0x3c }, +{ 0x00, 0x3d, 0x3d }, +{ 0x00, 0x3e, 0x3e }, +{ 0x00, 0x3f, 0x3f }, +{ 0x00, 0x40, 0x40 }, +{ 0x01, 0x61, 0x41 }, +{ 0x01, 0x62, 0x42 }, +{ 0x01, 0x63, 0x43 }, +{ 0x01, 0x64, 0x44 }, +{ 0x01, 0x65, 0x45 }, +{ 0x01, 0x66, 0x46 }, +{ 0x01, 0x67, 0x47 }, +{ 0x01, 0x68, 0x48 }, +{ 0x01, 0x69, 0x49 }, +{ 0x01, 0x6a, 0x4a }, +{ 0x01, 0x6b, 0x4b }, +{ 0x01, 0x6c, 0x4c }, +{ 0x01, 0x6d, 0x4d }, +{ 0x01, 0x6e, 0x4e }, +{ 0x01, 0x6f, 0x4f }, +{ 0x01, 0x70, 0x50 }, +{ 0x01, 0x71, 0x51 }, +{ 0x01, 0x72, 0x52 }, +{ 0x01, 0x73, 0x53 }, +{ 0x01, 0x74, 0x54 }, +{ 0x01, 0x75, 0x55 }, +{ 0x01, 0x76, 0x56 }, +{ 0x01, 0x77, 0x57 }, +{ 0x01, 0x78, 0x58 }, +{ 0x01, 0x79, 0x59 }, +{ 0x01, 0x7a, 0x5a }, +{ 0x00, 0x5b, 0x5b }, +{ 0x00, 0x5c, 0x5c }, +{ 0x00, 0x5d, 0x5d }, +{ 0x00, 0x5e, 0x5e }, +{ 0x00, 0x5f, 0x5f }, +{ 0x00, 0x60, 0x60 }, +{ 0x00, 0x61, 0x41 }, +{ 0x00, 0x62, 0x42 }, +{ 0x00, 0x63, 0x43 }, +{ 0x00, 0x64, 0x44 }, +{ 0x00, 0x65, 0x45 }, +{ 0x00, 0x66, 0x46 }, +{ 0x00, 0x67, 0x47 }, +{ 0x00, 0x68, 0x48 }, +{ 0x00, 0x69, 0x49 }, +{ 0x00, 0x6a, 0x4a }, +{ 0x00, 0x6b, 0x4b }, +{ 0x00, 0x6c, 0x4c }, +{ 0x00, 0x6d, 0x4d }, +{ 0x00, 0x6e, 0x4e }, +{ 0x00, 0x6f, 0x4f }, +{ 0x00, 0x70, 0x50 }, +{ 0x00, 0x71, 0x51 }, +{ 0x00, 0x72, 0x52 }, +{ 0x00, 0x73, 0x53 }, +{ 0x00, 0x74, 0x54 }, +{ 0x00, 0x75, 0x55 }, +{ 0x00, 0x76, 0x56 }, +{ 0x00, 0x77, 0x57 }, +{ 0x00, 0x78, 0x58 }, +{ 0x00, 0x79, 0x59 }, +{ 0x00, 0x7a, 0x5a }, +{ 0x00, 0x7b, 0x7b }, +{ 0x00, 0x7c, 0x7c }, +{ 0x00, 0x7d, 0x7d }, +{ 0x00, 0x7e, 0x7e }, +{ 0x00, 0x7f, 0x7f }, +{ 0x00, 0x80, 0x80 }, +{ 0x00, 0x81, 0x81 }, +{ 0x00, 0x82, 0x82 }, +{ 0x00, 0x83, 0x83 }, +{ 0x00, 0x84, 0x84 }, +{ 0x00, 0x85, 0x85 }, +{ 0x00, 0x86, 0x86 }, +{ 0x00, 0x87, 0x87 }, +{ 0x00, 0x88, 0x88 }, +{ 0x00, 0x89, 0x89 }, +{ 0x00, 0x8a, 0x8a }, +{ 0x00, 0x8b, 0x8b }, +{ 0x00, 0x8c, 0x8c }, +{ 0x00, 0x8d, 0x8d }, +{ 0x00, 0x8e, 0x8e }, +{ 0x00, 0x8f, 0x8f }, +{ 0x00, 0x90, 0x90 }, +{ 0x00, 0x91, 0x91 }, +{ 0x00, 0x92, 0x92 }, +{ 0x00, 0x93, 0x93 }, +{ 0x00, 0x94, 0x94 }, +{ 0x00, 0x95, 0x95 }, +{ 0x00, 0x96, 0x96 }, +{ 0x00, 0x97, 0x97 }, +{ 0x00, 0x98, 0x98 }, +{ 0x00, 0x99, 0x99 }, +{ 0x00, 0x9a, 0x9a }, +{ 0x00, 0x9b, 0x9b }, +{ 0x00, 0x9c, 0x9c }, +{ 0x00, 0x9d, 0x9d }, +{ 0x00, 0x9e, 0x9e }, +{ 0x00, 0x9f, 0x9f }, +{ 0x00, 0xa0, 0xa0 }, +{ 0x01, 0xb1, 0xa1 }, +{ 0x00, 0xa2, 0xa2 }, +{ 0x00, 0xa3, 0xa3 }, +{ 0x00, 0xa4, 0xa4 }, +{ 0x00, 0xa5, 0xa5 }, +{ 0x01, 0xb6, 0xa6 }, +{ 0x00, 0xa7, 0xa7 }, +{ 0x00, 0xa8, 0xa8 }, +{ 0x01, 0x69, 0xa9 }, +{ 0x01, 0xba, 0xaa }, +{ 0x01, 0xbb, 0xab }, +{ 0x01, 0xbc, 0xac }, +{ 0x00, 0xad, 0xad }, +{ 0x00, 0xae, 0xae }, +{ 0x01, 0xbf, 0xaf }, +{ 0x00, 0xb0, 0xb0 }, +{ 0x00, 0xb1, 0xa1 }, +{ 0x00, 0xb2, 0xb2 }, +{ 0x00, 0xb3, 0xb3 }, +{ 0x00, 0xb4, 0xb4 }, +{ 0x00, 0xb5, 0xb5 }, +{ 0x00, 0xb6, 0xa6 }, +{ 0x00, 0xb7, 0xb7 }, +{ 0x00, 0xb8, 0xb8 }, +{ 0x00, 0xb9, 0x49 }, +{ 0x00, 0xba, 0xaa }, +{ 0x00, 0xbb, 0xab }, +{ 0x00, 0xbc, 0xac }, +{ 0x00, 0xbd, 0xbd }, +{ 0x00, 0xbe, 0xbe }, +{ 0x00, 0xbf, 0xaf }, +{ 0x01, 0xe0, 0xc0 }, +{ 0x01, 0xe1, 0xc1 }, +{ 0x01, 0xe2, 0xc2 }, +{ 0x00, 0xc3, 0xc3 }, +{ 0x01, 0xe4, 0xc4 }, +{ 0x01, 0xe5, 0xc5 }, +{ 0x01, 0xe6, 0xc6 }, +{ 0x01, 0xe7, 0xc7 }, +{ 0x01, 0xe8, 0xc8 }, +{ 0x01, 0xe9, 0xc9 }, +{ 0x01, 0xea, 0xca }, +{ 0x01, 0xeb, 0xcb }, +{ 0x01, 0xec, 0xcc }, +{ 0x01, 0xed, 0xcd }, +{ 0x01, 0xee, 0xce }, +{ 0x01, 0xef, 0xcf }, +{ 0x00, 0xd0, 0xd0 }, +{ 0x01, 0xf1, 0xd1 }, +{ 0x01, 0xf2, 0xd2 }, +{ 0x01, 0xf3, 0xd3 }, +{ 0x01, 0xf4, 0xd4 }, +{ 0x01, 0xf5, 0xd5 }, +{ 0x01, 0xf6, 0xd6 }, +{ 0x00, 0xd7, 0xd7 }, +{ 0x01, 0xf8, 0xd8 }, +{ 0x01, 0xf9, 0xd9 }, +{ 0x01, 0xfa, 0xda }, +{ 0x01, 0xfb, 0xdb }, +{ 0x01, 0xfc, 0xdc }, +{ 0x01, 0xfd, 0xdd }, +{ 0x01, 0xfe, 0xde }, +{ 0x00, 0xdf, 0xdf }, +{ 0x00, 0xe0, 0xc0 }, +{ 0x00, 0xe1, 0xc1 }, +{ 0x00, 0xe2, 0xc2 }, +{ 0x00, 0xe3, 0xe3 }, +{ 0x00, 0xe4, 0xc4 }, +{ 0x00, 0xe5, 0xc5 }, +{ 0x00, 0xe6, 0xc6 }, +{ 0x00, 0xe7, 0xc7 }, +{ 0x00, 0xe8, 0xc8 }, +{ 0x00, 0xe9, 0xc9 }, +{ 0x00, 0xea, 0xca }, +{ 0x00, 0xeb, 0xcb }, +{ 0x00, 0xec, 0xcc }, +{ 0x00, 0xed, 0xcd }, +{ 0x00, 0xee, 0xce }, +{ 0x00, 0xef, 0xcf }, +{ 0x00, 0xf0, 0xf0 }, +{ 0x00, 0xf1, 0xd1 }, +{ 0x00, 0xf2, 0xd2 }, +{ 0x00, 0xf3, 0xd3 }, +{ 0x00, 0xf4, 0xd4 }, +{ 0x00, 0xf5, 0xd5 }, +{ 0x00, 0xf6, 0xd6 }, +{ 0x00, 0xf7, 0xf7 }, +{ 0x00, 0xf8, 0xd8 }, +{ 0x00, 0xf9, 0xd9 }, +{ 0x00, 0xfa, 0xda }, +{ 0x00, 0xfb, 0xdb }, +{ 0x00, 0xfc, 0xdc }, +{ 0x00, 0xfd, 0xdd }, +{ 0x00, 0xfe, 0xde }, +{ 0x00, 0xff, 0xff } +}; + +static struct cs_info iso4_tbl[] = { +{ 0x00, 0x00, 0x00 }, +{ 0x00, 0x01, 0x01 }, +{ 0x00, 0x02, 0x02 }, +{ 0x00, 0x03, 0x03 }, +{ 0x00, 0x04, 0x04 }, +{ 0x00, 0x05, 0x05 }, +{ 0x00, 0x06, 0x06 }, +{ 0x00, 0x07, 0x07 }, +{ 0x00, 0x08, 0x08 }, +{ 0x00, 0x09, 0x09 }, +{ 0x00, 0x0a, 0x0a }, +{ 0x00, 0x0b, 0x0b }, +{ 0x00, 0x0c, 0x0c }, +{ 0x00, 0x0d, 0x0d }, +{ 0x00, 0x0e, 0x0e }, +{ 0x00, 0x0f, 0x0f }, +{ 0x00, 0x10, 0x10 }, +{ 0x00, 0x11, 0x11 }, +{ 0x00, 0x12, 0x12 }, +{ 0x00, 0x13, 0x13 }, +{ 0x00, 0x14, 0x14 }, +{ 0x00, 0x15, 0x15 }, +{ 0x00, 0x16, 0x16 }, +{ 0x00, 0x17, 0x17 }, +{ 0x00, 0x18, 0x18 }, +{ 0x00, 0x19, 0x19 }, +{ 0x00, 0x1a, 0x1a }, +{ 0x00, 0x1b, 0x1b }, +{ 0x00, 0x1c, 0x1c }, +{ 0x00, 0x1d, 0x1d }, +{ 0x00, 0x1e, 0x1e }, +{ 0x00, 0x1f, 0x1f }, +{ 0x00, 0x20, 0x20 }, +{ 0x00, 0x21, 0x21 }, +{ 0x00, 0x22, 0x22 }, +{ 0x00, 0x23, 0x23 }, +{ 0x00, 0x24, 0x24 }, +{ 0x00, 0x25, 0x25 }, +{ 0x00, 0x26, 0x26 }, +{ 0x00, 0x27, 0x27 }, +{ 0x00, 0x28, 0x28 }, +{ 0x00, 0x29, 0x29 }, +{ 0x00, 0x2a, 0x2a }, +{ 0x00, 0x2b, 0x2b }, +{ 0x00, 0x2c, 0x2c }, +{ 0x00, 0x2d, 0x2d }, +{ 0x00, 0x2e, 0x2e }, +{ 0x00, 0x2f, 0x2f }, +{ 0x00, 0x30, 0x30 }, +{ 0x00, 0x31, 0x31 }, +{ 0x00, 0x32, 0x32 }, +{ 0x00, 0x33, 0x33 }, +{ 0x00, 0x34, 0x34 }, +{ 0x00, 0x35, 0x35 }, +{ 0x00, 0x36, 0x36 }, +{ 0x00, 0x37, 0x37 }, +{ 0x00, 0x38, 0x38 }, +{ 0x00, 0x39, 0x39 }, +{ 0x00, 0x3a, 0x3a }, +{ 0x00, 0x3b, 0x3b }, +{ 0x00, 0x3c, 0x3c }, +{ 0x00, 0x3d, 0x3d }, +{ 0x00, 0x3e, 0x3e }, +{ 0x00, 0x3f, 0x3f }, +{ 0x00, 0x40, 0x40 }, +{ 0x01, 0x61, 0x41 }, +{ 0x01, 0x62, 0x42 }, +{ 0x01, 0x63, 0x43 }, +{ 0x01, 0x64, 0x44 }, +{ 0x01, 0x65, 0x45 }, +{ 0x01, 0x66, 0x46 }, +{ 0x01, 0x67, 0x47 }, +{ 0x01, 0x68, 0x48 }, +{ 0x01, 0x69, 0x49 }, +{ 0x01, 0x6a, 0x4a }, +{ 0x01, 0x6b, 0x4b }, +{ 0x01, 0x6c, 0x4c }, +{ 0x01, 0x6d, 0x4d }, +{ 0x01, 0x6e, 0x4e }, +{ 0x01, 0x6f, 0x4f }, +{ 0x01, 0x70, 0x50 }, +{ 0x01, 0x71, 0x51 }, +{ 0x01, 0x72, 0x52 }, +{ 0x01, 0x73, 0x53 }, +{ 0x01, 0x74, 0x54 }, +{ 0x01, 0x75, 0x55 }, +{ 0x01, 0x76, 0x56 }, +{ 0x01, 0x77, 0x57 }, +{ 0x01, 0x78, 0x58 }, +{ 0x01, 0x79, 0x59 }, +{ 0x01, 0x7a, 0x5a }, +{ 0x00, 0x5b, 0x5b }, +{ 0x00, 0x5c, 0x5c }, +{ 0x00, 0x5d, 0x5d }, +{ 0x00, 0x5e, 0x5e }, +{ 0x00, 0x5f, 0x5f }, +{ 0x00, 0x60, 0x60 }, +{ 0x00, 0x61, 0x41 }, +{ 0x00, 0x62, 0x42 }, +{ 0x00, 0x63, 0x43 }, +{ 0x00, 0x64, 0x44 }, +{ 0x00, 0x65, 0x45 }, +{ 0x00, 0x66, 0x46 }, +{ 0x00, 0x67, 0x47 }, +{ 0x00, 0x68, 0x48 }, +{ 0x00, 0x69, 0x49 }, +{ 0x00, 0x6a, 0x4a }, +{ 0x00, 0x6b, 0x4b }, +{ 0x00, 0x6c, 0x4c }, +{ 0x00, 0x6d, 0x4d }, +{ 0x00, 0x6e, 0x4e }, +{ 0x00, 0x6f, 0x4f }, +{ 0x00, 0x70, 0x50 }, +{ 0x00, 0x71, 0x51 }, +{ 0x00, 0x72, 0x52 }, +{ 0x00, 0x73, 0x53 }, +{ 0x00, 0x74, 0x54 }, +{ 0x00, 0x75, 0x55 }, +{ 0x00, 0x76, 0x56 }, +{ 0x00, 0x77, 0x57 }, +{ 0x00, 0x78, 0x58 }, +{ 0x00, 0x79, 0x59 }, +{ 0x00, 0x7a, 0x5a }, +{ 0x00, 0x7b, 0x7b }, +{ 0x00, 0x7c, 0x7c }, +{ 0x00, 0x7d, 0x7d }, +{ 0x00, 0x7e, 0x7e }, +{ 0x00, 0x7f, 0x7f }, +{ 0x00, 0x80, 0x80 }, +{ 0x00, 0x81, 0x81 }, +{ 0x00, 0x82, 0x82 }, +{ 0x00, 0x83, 0x83 }, +{ 0x00, 0x84, 0x84 }, +{ 0x00, 0x85, 0x85 }, +{ 0x00, 0x86, 0x86 }, +{ 0x00, 0x87, 0x87 }, +{ 0x00, 0x88, 0x88 }, +{ 0x00, 0x89, 0x89 }, +{ 0x00, 0x8a, 0x8a }, +{ 0x00, 0x8b, 0x8b }, +{ 0x00, 0x8c, 0x8c }, +{ 0x00, 0x8d, 0x8d }, +{ 0x00, 0x8e, 0x8e }, +{ 0x00, 0x8f, 0x8f }, +{ 0x00, 0x90, 0x90 }, +{ 0x00, 0x91, 0x91 }, +{ 0x00, 0x92, 0x92 }, +{ 0x00, 0x93, 0x93 }, +{ 0x00, 0x94, 0x94 }, +{ 0x00, 0x95, 0x95 }, +{ 0x00, 0x96, 0x96 }, +{ 0x00, 0x97, 0x97 }, +{ 0x00, 0x98, 0x98 }, +{ 0x00, 0x99, 0x99 }, +{ 0x00, 0x9a, 0x9a }, +{ 0x00, 0x9b, 0x9b }, +{ 0x00, 0x9c, 0x9c }, +{ 0x00, 0x9d, 0x9d }, +{ 0x00, 0x9e, 0x9e }, +{ 0x00, 0x9f, 0x9f }, +{ 0x00, 0xa0, 0xa0 }, +{ 0x01, 0xb1, 0xa1 }, +{ 0x00, 0xa2, 0xa2 }, +{ 0x01, 0xb3, 0xa3 }, +{ 0x00, 0xa4, 0xa4 }, +{ 0x01, 0xb5, 0xa5 }, +{ 0x01, 0xb6, 0xa6 }, +{ 0x00, 0xa7, 0xa7 }, +{ 0x00, 0xa8, 0xa8 }, +{ 0x01, 0xb9, 0xa9 }, +{ 0x01, 0xba, 0xaa }, +{ 0x01, 0xbb, 0xab }, +{ 0x01, 0xbc, 0xac }, +{ 0x00, 0xad, 0xad }, +{ 0x01, 0xbe, 0xae }, +{ 0x00, 0xaf, 0xaf }, +{ 0x00, 0xb0, 0xb0 }, +{ 0x00, 0xb1, 0xa1 }, +{ 0x00, 0xb2, 0xb2 }, +{ 0x00, 0xb3, 0xa3 }, +{ 0x00, 0xb4, 0xb4 }, +{ 0x00, 0xb5, 0xa5 }, +{ 0x00, 0xb6, 0xa6 }, +{ 0x00, 0xb7, 0xb7 }, +{ 0x00, 0xb8, 0xb8 }, +{ 0x00, 0xb9, 0xa9 }, +{ 0x00, 0xba, 0xaa }, +{ 0x00, 0xbb, 0xab }, +{ 0x00, 0xbc, 0xac }, +{ 0x00, 0xbd, 0xbd }, +{ 0x00, 0xbe, 0xae }, +{ 0x00, 0xbf, 0xbf }, +{ 0x01, 0xe0, 0xc0 }, +{ 0x01, 0xe1, 0xc1 }, +{ 0x01, 0xe2, 0xc2 }, +{ 0x01, 0xe3, 0xc3 }, +{ 0x01, 0xe4, 0xc4 }, +{ 0x01, 0xe5, 0xc5 }, +{ 0x01, 0xe6, 0xc6 }, +{ 0x01, 0xe7, 0xc7 }, +{ 0x01, 0xe8, 0xc8 }, +{ 0x01, 0xe9, 0xc9 }, +{ 0x01, 0xea, 0xca }, +{ 0x01, 0xeb, 0xcb }, +{ 0x01, 0xec, 0xcc }, +{ 0x01, 0xed, 0xcd }, +{ 0x01, 0xee, 0xce }, +{ 0x01, 0xef, 0xcf }, +{ 0x01, 0xf0, 0xd0 }, +{ 0x01, 0xf1, 0xd1 }, +{ 0x01, 0xf2, 0xd2 }, +{ 0x01, 0xf3, 0xd3 }, +{ 0x01, 0xf4, 0xd4 }, +{ 0x01, 0xf5, 0xd5 }, +{ 0x01, 0xf6, 0xd6 }, +{ 0x00, 0xd7, 0xd7 }, +{ 0x01, 0xf8, 0xd8 }, +{ 0x01, 0xf9, 0xd9 }, +{ 0x01, 0xfa, 0xda }, +{ 0x01, 0xfb, 0xdb }, +{ 0x01, 0xfc, 0xdc }, +{ 0x01, 0xfd, 0xdd }, +{ 0x01, 0xfe, 0xde }, +{ 0x00, 0xdf, 0xdf }, +{ 0x00, 0xe0, 0xc0 }, +{ 0x00, 0xe1, 0xc1 }, +{ 0x00, 0xe2, 0xc2 }, +{ 0x00, 0xe3, 0xc3 }, +{ 0x00, 0xe4, 0xc4 }, +{ 0x00, 0xe5, 0xc5 }, +{ 0x00, 0xe6, 0xc6 }, +{ 0x00, 0xe7, 0xc7 }, +{ 0x00, 0xe8, 0xc8 }, +{ 0x00, 0xe9, 0xc9 }, +{ 0x00, 0xea, 0xca }, +{ 0x00, 0xeb, 0xcb }, +{ 0x00, 0xec, 0xcc }, +{ 0x00, 0xed, 0xcd }, +{ 0x00, 0xee, 0xce }, +{ 0x00, 0xef, 0xcf }, +{ 0x00, 0xf0, 0xd0 }, +{ 0x00, 0xf1, 0xd1 }, +{ 0x00, 0xf2, 0xd2 }, +{ 0x00, 0xf3, 0xd3 }, +{ 0x00, 0xf4, 0xd4 }, +{ 0x00, 0xf5, 0xd5 }, +{ 0x00, 0xf6, 0xd6 }, +{ 0x00, 0xf7, 0xf7 }, +{ 0x00, 0xf8, 0xd8 }, +{ 0x00, 0xf9, 0xd9 }, +{ 0x00, 0xfa, 0xda }, +{ 0x00, 0xfb, 0xdb }, +{ 0x00, 0xfc, 0xdc }, +{ 0x00, 0xfd, 0xdd }, +{ 0x00, 0xfe, 0xde }, +{ 0x00, 0xff, 0xff } +}; + +static struct cs_info iso5_tbl[] = { +{ 0x00, 0x00, 0x00 }, +{ 0x00, 0x01, 0x01 }, +{ 0x00, 0x02, 0x02 }, +{ 0x00, 0x03, 0x03 }, +{ 0x00, 0x04, 0x04 }, +{ 0x00, 0x05, 0x05 }, +{ 0x00, 0x06, 0x06 }, +{ 0x00, 0x07, 0x07 }, +{ 0x00, 0x08, 0x08 }, +{ 0x00, 0x09, 0x09 }, +{ 0x00, 0x0a, 0x0a }, +{ 0x00, 0x0b, 0x0b }, +{ 0x00, 0x0c, 0x0c }, +{ 0x00, 0x0d, 0x0d }, +{ 0x00, 0x0e, 0x0e }, +{ 0x00, 0x0f, 0x0f }, +{ 0x00, 0x10, 0x10 }, +{ 0x00, 0x11, 0x11 }, +{ 0x00, 0x12, 0x12 }, +{ 0x00, 0x13, 0x13 }, +{ 0x00, 0x14, 0x14 }, +{ 0x00, 0x15, 0x15 }, +{ 0x00, 0x16, 0x16 }, +{ 0x00, 0x17, 0x17 }, +{ 0x00, 0x18, 0x18 }, +{ 0x00, 0x19, 0x19 }, +{ 0x00, 0x1a, 0x1a }, +{ 0x00, 0x1b, 0x1b }, +{ 0x00, 0x1c, 0x1c }, +{ 0x00, 0x1d, 0x1d }, +{ 0x00, 0x1e, 0x1e }, +{ 0x00, 0x1f, 0x1f }, +{ 0x00, 0x20, 0x20 }, +{ 0x00, 0x21, 0x21 }, +{ 0x00, 0x22, 0x22 }, +{ 0x00, 0x23, 0x23 }, +{ 0x00, 0x24, 0x24 }, +{ 0x00, 0x25, 0x25 }, +{ 0x00, 0x26, 0x26 }, +{ 0x00, 0x27, 0x27 }, +{ 0x00, 0x28, 0x28 }, +{ 0x00, 0x29, 0x29 }, +{ 0x00, 0x2a, 0x2a }, +{ 0x00, 0x2b, 0x2b }, +{ 0x00, 0x2c, 0x2c }, +{ 0x00, 0x2d, 0x2d }, +{ 0x00, 0x2e, 0x2e }, +{ 0x00, 0x2f, 0x2f }, +{ 0x00, 0x30, 0x30 }, +{ 0x00, 0x31, 0x31 }, +{ 0x00, 0x32, 0x32 }, +{ 0x00, 0x33, 0x33 }, +{ 0x00, 0x34, 0x34 }, +{ 0x00, 0x35, 0x35 }, +{ 0x00, 0x36, 0x36 }, +{ 0x00, 0x37, 0x37 }, +{ 0x00, 0x38, 0x38 }, +{ 0x00, 0x39, 0x39 }, +{ 0x00, 0x3a, 0x3a }, +{ 0x00, 0x3b, 0x3b }, +{ 0x00, 0x3c, 0x3c }, +{ 0x00, 0x3d, 0x3d }, +{ 0x00, 0x3e, 0x3e }, +{ 0x00, 0x3f, 0x3f }, +{ 0x00, 0x40, 0x40 }, +{ 0x01, 0x61, 0x41 }, +{ 0x01, 0x62, 0x42 }, +{ 0x01, 0x63, 0x43 }, +{ 0x01, 0x64, 0x44 }, +{ 0x01, 0x65, 0x45 }, +{ 0x01, 0x66, 0x46 }, +{ 0x01, 0x67, 0x47 }, +{ 0x01, 0x68, 0x48 }, +{ 0x01, 0x69, 0x49 }, +{ 0x01, 0x6a, 0x4a }, +{ 0x01, 0x6b, 0x4b }, +{ 0x01, 0x6c, 0x4c }, +{ 0x01, 0x6d, 0x4d }, +{ 0x01, 0x6e, 0x4e }, +{ 0x01, 0x6f, 0x4f }, +{ 0x01, 0x70, 0x50 }, +{ 0x01, 0x71, 0x51 }, +{ 0x01, 0x72, 0x52 }, +{ 0x01, 0x73, 0x53 }, +{ 0x01, 0x74, 0x54 }, +{ 0x01, 0x75, 0x55 }, +{ 0x01, 0x76, 0x56 }, +{ 0x01, 0x77, 0x57 }, +{ 0x01, 0x78, 0x58 }, +{ 0x01, 0x79, 0x59 }, +{ 0x01, 0x7a, 0x5a }, +{ 0x00, 0x5b, 0x5b }, +{ 0x00, 0x5c, 0x5c }, +{ 0x00, 0x5d, 0x5d }, +{ 0x00, 0x5e, 0x5e }, +{ 0x00, 0x5f, 0x5f }, +{ 0x00, 0x60, 0x60 }, +{ 0x00, 0x61, 0x41 }, +{ 0x00, 0x62, 0x42 }, +{ 0x00, 0x63, 0x43 }, +{ 0x00, 0x64, 0x44 }, +{ 0x00, 0x65, 0x45 }, +{ 0x00, 0x66, 0x46 }, +{ 0x00, 0x67, 0x47 }, +{ 0x00, 0x68, 0x48 }, +{ 0x00, 0x69, 0x49 }, +{ 0x00, 0x6a, 0x4a }, +{ 0x00, 0x6b, 0x4b }, +{ 0x00, 0x6c, 0x4c }, +{ 0x00, 0x6d, 0x4d }, +{ 0x00, 0x6e, 0x4e }, +{ 0x00, 0x6f, 0x4f }, +{ 0x00, 0x70, 0x50 }, +{ 0x00, 0x71, 0x51 }, +{ 0x00, 0x72, 0x52 }, +{ 0x00, 0x73, 0x53 }, +{ 0x00, 0x74, 0x54 }, +{ 0x00, 0x75, 0x55 }, +{ 0x00, 0x76, 0x56 }, +{ 0x00, 0x77, 0x57 }, +{ 0x00, 0x78, 0x58 }, +{ 0x00, 0x79, 0x59 }, +{ 0x00, 0x7a, 0x5a }, +{ 0x00, 0x7b, 0x7b }, +{ 0x00, 0x7c, 0x7c }, +{ 0x00, 0x7d, 0x7d }, +{ 0x00, 0x7e, 0x7e }, +{ 0x00, 0x7f, 0x7f }, +{ 0x00, 0x80, 0x80 }, +{ 0x00, 0x81, 0x81 }, +{ 0x00, 0x82, 0x82 }, +{ 0x00, 0x83, 0x83 }, +{ 0x00, 0x84, 0x84 }, +{ 0x00, 0x85, 0x85 }, +{ 0x00, 0x86, 0x86 }, +{ 0x00, 0x87, 0x87 }, +{ 0x00, 0x88, 0x88 }, +{ 0x00, 0x89, 0x89 }, +{ 0x00, 0x8a, 0x8a }, +{ 0x00, 0x8b, 0x8b }, +{ 0x00, 0x8c, 0x8c }, +{ 0x00, 0x8d, 0x8d }, +{ 0x00, 0x8e, 0x8e }, +{ 0x00, 0x8f, 0x8f }, +{ 0x00, 0x90, 0x90 }, +{ 0x00, 0x91, 0x91 }, +{ 0x00, 0x92, 0x92 }, +{ 0x00, 0x93, 0x93 }, +{ 0x00, 0x94, 0x94 }, +{ 0x00, 0x95, 0x95 }, +{ 0x00, 0x96, 0x96 }, +{ 0x00, 0x97, 0x97 }, +{ 0x00, 0x98, 0x98 }, +{ 0x00, 0x99, 0x99 }, +{ 0x00, 0x9a, 0x9a }, +{ 0x00, 0x9b, 0x9b }, +{ 0x00, 0x9c, 0x9c }, +{ 0x00, 0x9d, 0x9d }, +{ 0x00, 0x9e, 0x9e }, +{ 0x00, 0x9f, 0x9f }, +{ 0x00, 0xa0, 0xa0 }, +{ 0x01, 0xf1, 0xa1 }, +{ 0x01, 0xf2, 0xa2 }, +{ 0x01, 0xf3, 0xa3 }, +{ 0x01, 0xf4, 0xa4 }, +{ 0x01, 0xf5, 0xa5 }, +{ 0x01, 0xf6, 0xa6 }, +{ 0x01, 0xf7, 0xa7 }, +{ 0x01, 0xf8, 0xa8 }, +{ 0x01, 0xf9, 0xa9 }, +{ 0x01, 0xfa, 0xaa }, +{ 0x01, 0xfb, 0xab }, +{ 0x01, 0xfc, 0xac }, +{ 0x00, 0xad, 0xad }, +{ 0x01, 0xfe, 0xae }, +{ 0x01, 0xff, 0xaf }, +{ 0x01, 0xd0, 0xb0 }, +{ 0x01, 0xd1, 0xb1 }, +{ 0x01, 0xd2, 0xb2 }, +{ 0x01, 0xd3, 0xb3 }, +{ 0x01, 0xd4, 0xb4 }, +{ 0x01, 0xd5, 0xb5 }, +{ 0x01, 0xd6, 0xb6 }, +{ 0x01, 0xd7, 0xb7 }, +{ 0x01, 0xd8, 0xb8 }, +{ 0x01, 0xd9, 0xb9 }, +{ 0x01, 0xda, 0xba }, +{ 0x01, 0xdb, 0xbb }, +{ 0x01, 0xdc, 0xbc }, +{ 0x01, 0xdd, 0xbd }, +{ 0x01, 0xde, 0xbe }, +{ 0x01, 0xdf, 0xbf }, +{ 0x01, 0xe0, 0xc0 }, +{ 0x01, 0xe1, 0xc1 }, +{ 0x01, 0xe2, 0xc2 }, +{ 0x01, 0xe3, 0xc3 }, +{ 0x01, 0xe4, 0xc4 }, +{ 0x01, 0xe5, 0xc5 }, +{ 0x01, 0xe6, 0xc6 }, +{ 0x01, 0xe7, 0xc7 }, +{ 0x01, 0xe8, 0xc8 }, +{ 0x01, 0xe9, 0xc9 }, +{ 0x01, 0xea, 0xca }, +{ 0x01, 0xeb, 0xcb }, +{ 0x01, 0xec, 0xcc }, +{ 0x01, 0xed, 0xcd }, +{ 0x01, 0xee, 0xce }, +{ 0x01, 0xef, 0xcf }, +{ 0x00, 0xd0, 0xb0 }, +{ 0x00, 0xd1, 0xb1 }, +{ 0x00, 0xd2, 0xb2 }, +{ 0x00, 0xd3, 0xb3 }, +{ 0x00, 0xd4, 0xb4 }, +{ 0x00, 0xd5, 0xb5 }, +{ 0x00, 0xd6, 0xb6 }, +{ 0x00, 0xd7, 0xb7 }, +{ 0x00, 0xd8, 0xb8 }, +{ 0x00, 0xd9, 0xb9 }, +{ 0x00, 0xda, 0xba }, +{ 0x00, 0xdb, 0xbb }, +{ 0x00, 0xdc, 0xbc }, +{ 0x00, 0xdd, 0xbd }, +{ 0x00, 0xde, 0xbe }, +{ 0x00, 0xdf, 0xbf }, +{ 0x00, 0xe0, 0xc0 }, +{ 0x00, 0xe1, 0xc1 }, +{ 0x00, 0xe2, 0xc2 }, +{ 0x00, 0xe3, 0xc3 }, +{ 0x00, 0xe4, 0xc4 }, +{ 0x00, 0xe5, 0xc5 }, +{ 0x00, 0xe6, 0xc6 }, +{ 0x00, 0xe7, 0xc7 }, +{ 0x00, 0xe8, 0xc8 }, +{ 0x00, 0xe9, 0xc9 }, +{ 0x00, 0xea, 0xca }, +{ 0x00, 0xeb, 0xcb }, +{ 0x00, 0xec, 0xcc }, +{ 0x00, 0xed, 0xcd }, +{ 0x00, 0xee, 0xce }, +{ 0x00, 0xef, 0xcf }, +{ 0x00, 0xf0, 0xf0 }, +{ 0x00, 0xf1, 0xa1 }, +{ 0x00, 0xf2, 0xa2 }, +{ 0x00, 0xf3, 0xa3 }, +{ 0x00, 0xf4, 0xa4 }, +{ 0x00, 0xf5, 0xa5 }, +{ 0x00, 0xf6, 0xa6 }, +{ 0x00, 0xf7, 0xa7 }, +{ 0x00, 0xf8, 0xa8 }, +{ 0x00, 0xf9, 0xa9 }, +{ 0x00, 0xfa, 0xaa }, +{ 0x00, 0xfb, 0xab }, +{ 0x00, 0xfc, 0xac }, +{ 0x00, 0xfd, 0xfd }, +{ 0x00, 0xfe, 0xae }, +{ 0x00, 0xff, 0xaf } +}; + +static struct cs_info iso6_tbl[] = { +{ 0x00, 0x00, 0x00 }, +{ 0x00, 0x01, 0x01 }, +{ 0x00, 0x02, 0x02 }, +{ 0x00, 0x03, 0x03 }, +{ 0x00, 0x04, 0x04 }, +{ 0x00, 0x05, 0x05 }, +{ 0x00, 0x06, 0x06 }, +{ 0x00, 0x07, 0x07 }, +{ 0x00, 0x08, 0x08 }, +{ 0x00, 0x09, 0x09 }, +{ 0x00, 0x0a, 0x0a }, +{ 0x00, 0x0b, 0x0b }, +{ 0x00, 0x0c, 0x0c }, +{ 0x00, 0x0d, 0x0d }, +{ 0x00, 0x0e, 0x0e }, +{ 0x00, 0x0f, 0x0f }, +{ 0x00, 0x10, 0x10 }, +{ 0x00, 0x11, 0x11 }, +{ 0x00, 0x12, 0x12 }, +{ 0x00, 0x13, 0x13 }, +{ 0x00, 0x14, 0x14 }, +{ 0x00, 0x15, 0x15 }, +{ 0x00, 0x16, 0x16 }, +{ 0x00, 0x17, 0x17 }, +{ 0x00, 0x18, 0x18 }, +{ 0x00, 0x19, 0x19 }, +{ 0x00, 0x1a, 0x1a }, +{ 0x00, 0x1b, 0x1b }, +{ 0x00, 0x1c, 0x1c }, +{ 0x00, 0x1d, 0x1d }, +{ 0x00, 0x1e, 0x1e }, +{ 0x00, 0x1f, 0x1f }, +{ 0x00, 0x20, 0x20 }, +{ 0x00, 0x21, 0x21 }, +{ 0x00, 0x22, 0x22 }, +{ 0x00, 0x23, 0x23 }, +{ 0x00, 0x24, 0x24 }, +{ 0x00, 0x25, 0x25 }, +{ 0x00, 0x26, 0x26 }, +{ 0x00, 0x27, 0x27 }, +{ 0x00, 0x28, 0x28 }, +{ 0x00, 0x29, 0x29 }, +{ 0x00, 0x2a, 0x2a }, +{ 0x00, 0x2b, 0x2b }, +{ 0x00, 0x2c, 0x2c }, +{ 0x00, 0x2d, 0x2d }, +{ 0x00, 0x2e, 0x2e }, +{ 0x00, 0x2f, 0x2f }, +{ 0x00, 0x30, 0x30 }, +{ 0x00, 0x31, 0x31 }, +{ 0x00, 0x32, 0x32 }, +{ 0x00, 0x33, 0x33 }, +{ 0x00, 0x34, 0x34 }, +{ 0x00, 0x35, 0x35 }, +{ 0x00, 0x36, 0x36 }, +{ 0x00, 0x37, 0x37 }, +{ 0x00, 0x38, 0x38 }, +{ 0x00, 0x39, 0x39 }, +{ 0x00, 0x3a, 0x3a }, +{ 0x00, 0x3b, 0x3b }, +{ 0x00, 0x3c, 0x3c }, +{ 0x00, 0x3d, 0x3d }, +{ 0x00, 0x3e, 0x3e }, +{ 0x00, 0x3f, 0x3f }, +{ 0x00, 0x40, 0x40 }, +{ 0x01, 0x61, 0x41 }, +{ 0x01, 0x62, 0x42 }, +{ 0x01, 0x63, 0x43 }, +{ 0x01, 0x64, 0x44 }, +{ 0x01, 0x65, 0x45 }, +{ 0x01, 0x66, 0x46 }, +{ 0x01, 0x67, 0x47 }, +{ 0x01, 0x68, 0x48 }, +{ 0x01, 0x69, 0x49 }, +{ 0x01, 0x6a, 0x4a }, +{ 0x01, 0x6b, 0x4b }, +{ 0x01, 0x6c, 0x4c }, +{ 0x01, 0x6d, 0x4d }, +{ 0x01, 0x6e, 0x4e }, +{ 0x01, 0x6f, 0x4f }, +{ 0x01, 0x70, 0x50 }, +{ 0x01, 0x71, 0x51 }, +{ 0x01, 0x72, 0x52 }, +{ 0x01, 0x73, 0x53 }, +{ 0x01, 0x74, 0x54 }, +{ 0x01, 0x75, 0x55 }, +{ 0x01, 0x76, 0x56 }, +{ 0x01, 0x77, 0x57 }, +{ 0x01, 0x78, 0x58 }, +{ 0x01, 0x79, 0x59 }, +{ 0x01, 0x7a, 0x5a }, +{ 0x00, 0x5b, 0x5b }, +{ 0x00, 0x5c, 0x5c }, +{ 0x00, 0x5d, 0x5d }, +{ 0x00, 0x5e, 0x5e }, +{ 0x00, 0x5f, 0x5f }, +{ 0x00, 0x60, 0x60 }, +{ 0x00, 0x61, 0x41 }, +{ 0x00, 0x62, 0x42 }, +{ 0x00, 0x63, 0x43 }, +{ 0x00, 0x64, 0x44 }, +{ 0x00, 0x65, 0x45 }, +{ 0x00, 0x66, 0x46 }, +{ 0x00, 0x67, 0x47 }, +{ 0x00, 0x68, 0x48 }, +{ 0x00, 0x69, 0x49 }, +{ 0x00, 0x6a, 0x4a }, +{ 0x00, 0x6b, 0x4b }, +{ 0x00, 0x6c, 0x4c }, +{ 0x00, 0x6d, 0x4d }, +{ 0x00, 0x6e, 0x4e }, +{ 0x00, 0x6f, 0x4f }, +{ 0x00, 0x70, 0x50 }, +{ 0x00, 0x71, 0x51 }, +{ 0x00, 0x72, 0x52 }, +{ 0x00, 0x73, 0x53 }, +{ 0x00, 0x74, 0x54 }, +{ 0x00, 0x75, 0x55 }, +{ 0x00, 0x76, 0x56 }, +{ 0x00, 0x77, 0x57 }, +{ 0x00, 0x78, 0x58 }, +{ 0x00, 0x79, 0x59 }, +{ 0x00, 0x7a, 0x5a }, +{ 0x00, 0x7b, 0x7b }, +{ 0x00, 0x7c, 0x7c }, +{ 0x00, 0x7d, 0x7d }, +{ 0x00, 0x7e, 0x7e }, +{ 0x00, 0x7f, 0x7f }, +{ 0x00, 0x80, 0x80 }, +{ 0x00, 0x81, 0x81 }, +{ 0x00, 0x82, 0x82 }, +{ 0x00, 0x83, 0x83 }, +{ 0x00, 0x84, 0x84 }, +{ 0x00, 0x85, 0x85 }, +{ 0x00, 0x86, 0x86 }, +{ 0x00, 0x87, 0x87 }, +{ 0x00, 0x88, 0x88 }, +{ 0x00, 0x89, 0x89 }, +{ 0x00, 0x8a, 0x8a }, +{ 0x00, 0x8b, 0x8b }, +{ 0x00, 0x8c, 0x8c }, +{ 0x00, 0x8d, 0x8d }, +{ 0x00, 0x8e, 0x8e }, +{ 0x00, 0x8f, 0x8f }, +{ 0x00, 0x90, 0x90 }, +{ 0x00, 0x91, 0x91 }, +{ 0x00, 0x92, 0x92 }, +{ 0x00, 0x93, 0x93 }, +{ 0x00, 0x94, 0x94 }, +{ 0x00, 0x95, 0x95 }, +{ 0x00, 0x96, 0x96 }, +{ 0x00, 0x97, 0x97 }, +{ 0x00, 0x98, 0x98 }, +{ 0x00, 0x99, 0x99 }, +{ 0x00, 0x9a, 0x9a }, +{ 0x00, 0x9b, 0x9b }, +{ 0x00, 0x9c, 0x9c }, +{ 0x00, 0x9d, 0x9d }, +{ 0x00, 0x9e, 0x9e }, +{ 0x00, 0x9f, 0x9f }, +{ 0x00, 0xa0, 0xa0 }, +{ 0x00, 0xa1, 0xa1 }, +{ 0x00, 0xa2, 0xa2 }, +{ 0x00, 0xa3, 0xa3 }, +{ 0x00, 0xa4, 0xa4 }, +{ 0x00, 0xa5, 0xa5 }, +{ 0x00, 0xa6, 0xa6 }, +{ 0x00, 0xa7, 0xa7 }, +{ 0x00, 0xa8, 0xa8 }, +{ 0x00, 0xa9, 0xa9 }, +{ 0x00, 0xaa, 0xaa }, +{ 0x00, 0xab, 0xab }, +{ 0x00, 0xac, 0xac }, +{ 0x00, 0xad, 0xad }, +{ 0x00, 0xae, 0xae }, +{ 0x00, 0xaf, 0xaf }, +{ 0x00, 0xb0, 0xb0 }, +{ 0x00, 0xb1, 0xb1 }, +{ 0x00, 0xb2, 0xb2 }, +{ 0x00, 0xb3, 0xb3 }, +{ 0x00, 0xb4, 0xb4 }, +{ 0x00, 0xb5, 0xb5 }, +{ 0x00, 0xb6, 0xb6 }, +{ 0x00, 0xb7, 0xb7 }, +{ 0x00, 0xb8, 0xb8 }, +{ 0x00, 0xb9, 0xb9 }, +{ 0x00, 0xba, 0xba }, +{ 0x00, 0xbb, 0xbb }, +{ 0x00, 0xbc, 0xbc }, +{ 0x00, 0xbd, 0xbd }, +{ 0x00, 0xbe, 0xbe }, +{ 0x00, 0xbf, 0xbf }, +{ 0x00, 0xc0, 0xc0 }, +{ 0x00, 0xc1, 0xc1 }, +{ 0x00, 0xc2, 0xc2 }, +{ 0x00, 0xc3, 0xc3 }, +{ 0x00, 0xc4, 0xc4 }, +{ 0x00, 0xc5, 0xc5 }, +{ 0x00, 0xc6, 0xc6 }, +{ 0x00, 0xc7, 0xc7 }, +{ 0x00, 0xc8, 0xc8 }, +{ 0x00, 0xc9, 0xc9 }, +{ 0x00, 0xca, 0xca }, +{ 0x00, 0xcb, 0xcb }, +{ 0x00, 0xcc, 0xcc }, +{ 0x00, 0xcd, 0xcd }, +{ 0x00, 0xce, 0xce }, +{ 0x00, 0xcf, 0xcf }, +{ 0x00, 0xd0, 0xd0 }, +{ 0x00, 0xd1, 0xd1 }, +{ 0x00, 0xd2, 0xd2 }, +{ 0x00, 0xd3, 0xd3 }, +{ 0x00, 0xd4, 0xd4 }, +{ 0x00, 0xd5, 0xd5 }, +{ 0x00, 0xd6, 0xd6 }, +{ 0x00, 0xd7, 0xd7 }, +{ 0x00, 0xd8, 0xd8 }, +{ 0x00, 0xd9, 0xd9 }, +{ 0x00, 0xda, 0xda }, +{ 0x00, 0xdb, 0xdb }, +{ 0x00, 0xdc, 0xdc }, +{ 0x00, 0xdd, 0xdd }, +{ 0x00, 0xde, 0xde }, +{ 0x00, 0xdf, 0xdf }, +{ 0x00, 0xe0, 0xe0 }, +{ 0x00, 0xe1, 0xe1 }, +{ 0x00, 0xe2, 0xe2 }, +{ 0x00, 0xe3, 0xe3 }, +{ 0x00, 0xe4, 0xe4 }, +{ 0x00, 0xe5, 0xe5 }, +{ 0x00, 0xe6, 0xe6 }, +{ 0x00, 0xe7, 0xe7 }, +{ 0x00, 0xe8, 0xe8 }, +{ 0x00, 0xe9, 0xe9 }, +{ 0x00, 0xea, 0xea }, +{ 0x00, 0xeb, 0xeb }, +{ 0x00, 0xec, 0xec }, +{ 0x00, 0xed, 0xed }, +{ 0x00, 0xee, 0xee }, +{ 0x00, 0xef, 0xef }, +{ 0x00, 0xf0, 0xf0 }, +{ 0x00, 0xf1, 0xf1 }, +{ 0x00, 0xf2, 0xf2 }, +{ 0x00, 0xf3, 0xf3 }, +{ 0x00, 0xf4, 0xf4 }, +{ 0x00, 0xf5, 0xf5 }, +{ 0x00, 0xf6, 0xf6 }, +{ 0x00, 0xf7, 0xf7 }, +{ 0x00, 0xf8, 0xf8 }, +{ 0x00, 0xf9, 0xf9 }, +{ 0x00, 0xfa, 0xfa }, +{ 0x00, 0xfb, 0xfb }, +{ 0x00, 0xfc, 0xfc }, +{ 0x00, 0xfd, 0xfd }, +{ 0x00, 0xfe, 0xfe }, +{ 0x00, 0xff, 0xff } +}; + +static struct cs_info iso7_tbl[] = { +{ 0x00, 0x00, 0x00 }, +{ 0x00, 0x01, 0x01 }, +{ 0x00, 0x02, 0x02 }, +{ 0x00, 0x03, 0x03 }, +{ 0x00, 0x04, 0x04 }, +{ 0x00, 0x05, 0x05 }, +{ 0x00, 0x06, 0x06 }, +{ 0x00, 0x07, 0x07 }, +{ 0x00, 0x08, 0x08 }, +{ 0x00, 0x09, 0x09 }, +{ 0x00, 0x0a, 0x0a }, +{ 0x00, 0x0b, 0x0b }, +{ 0x00, 0x0c, 0x0c }, +{ 0x00, 0x0d, 0x0d }, +{ 0x00, 0x0e, 0x0e }, +{ 0x00, 0x0f, 0x0f }, +{ 0x00, 0x10, 0x10 }, +{ 0x00, 0x11, 0x11 }, +{ 0x00, 0x12, 0x12 }, +{ 0x00, 0x13, 0x13 }, +{ 0x00, 0x14, 0x14 }, +{ 0x00, 0x15, 0x15 }, +{ 0x00, 0x16, 0x16 }, +{ 0x00, 0x17, 0x17 }, +{ 0x00, 0x18, 0x18 }, +{ 0x00, 0x19, 0x19 }, +{ 0x00, 0x1a, 0x1a }, +{ 0x00, 0x1b, 0x1b }, +{ 0x00, 0x1c, 0x1c }, +{ 0x00, 0x1d, 0x1d }, +{ 0x00, 0x1e, 0x1e }, +{ 0x00, 0x1f, 0x1f }, +{ 0x00, 0x20, 0x20 }, +{ 0x00, 0x21, 0x21 }, +{ 0x00, 0x22, 0x22 }, +{ 0x00, 0x23, 0x23 }, +{ 0x00, 0x24, 0x24 }, +{ 0x00, 0x25, 0x25 }, +{ 0x00, 0x26, 0x26 }, +{ 0x00, 0x27, 0x27 }, +{ 0x00, 0x28, 0x28 }, +{ 0x00, 0x29, 0x29 }, +{ 0x00, 0x2a, 0x2a }, +{ 0x00, 0x2b, 0x2b }, +{ 0x00, 0x2c, 0x2c }, +{ 0x00, 0x2d, 0x2d }, +{ 0x00, 0x2e, 0x2e }, +{ 0x00, 0x2f, 0x2f }, +{ 0x00, 0x30, 0x30 }, +{ 0x00, 0x31, 0x31 }, +{ 0x00, 0x32, 0x32 }, +{ 0x00, 0x33, 0x33 }, +{ 0x00, 0x34, 0x34 }, +{ 0x00, 0x35, 0x35 }, +{ 0x00, 0x36, 0x36 }, +{ 0x00, 0x37, 0x37 }, +{ 0x00, 0x38, 0x38 }, +{ 0x00, 0x39, 0x39 }, +{ 0x00, 0x3a, 0x3a }, +{ 0x00, 0x3b, 0x3b }, +{ 0x00, 0x3c, 0x3c }, +{ 0x00, 0x3d, 0x3d }, +{ 0x00, 0x3e, 0x3e }, +{ 0x00, 0x3f, 0x3f }, +{ 0x00, 0x40, 0x40 }, +{ 0x01, 0x61, 0x41 }, +{ 0x01, 0x62, 0x42 }, +{ 0x01, 0x63, 0x43 }, +{ 0x01, 0x64, 0x44 }, +{ 0x01, 0x65, 0x45 }, +{ 0x01, 0x66, 0x46 }, +{ 0x01, 0x67, 0x47 }, +{ 0x01, 0x68, 0x48 }, +{ 0x01, 0x69, 0x49 }, +{ 0x01, 0x6a, 0x4a }, +{ 0x01, 0x6b, 0x4b }, +{ 0x01, 0x6c, 0x4c }, +{ 0x01, 0x6d, 0x4d }, +{ 0x01, 0x6e, 0x4e }, +{ 0x01, 0x6f, 0x4f }, +{ 0x01, 0x70, 0x50 }, +{ 0x01, 0x71, 0x51 }, +{ 0x01, 0x72, 0x52 }, +{ 0x01, 0x73, 0x53 }, +{ 0x01, 0x74, 0x54 }, +{ 0x01, 0x75, 0x55 }, +{ 0x01, 0x76, 0x56 }, +{ 0x01, 0x77, 0x57 }, +{ 0x01, 0x78, 0x58 }, +{ 0x01, 0x79, 0x59 }, +{ 0x01, 0x7a, 0x5a }, +{ 0x00, 0x5b, 0x5b }, +{ 0x00, 0x5c, 0x5c }, +{ 0x00, 0x5d, 0x5d }, +{ 0x00, 0x5e, 0x5e }, +{ 0x00, 0x5f, 0x5f }, +{ 0x00, 0x60, 0x60 }, +{ 0x00, 0x61, 0x41 }, +{ 0x00, 0x62, 0x42 }, +{ 0x00, 0x63, 0x43 }, +{ 0x00, 0x64, 0x44 }, +{ 0x00, 0x65, 0x45 }, +{ 0x00, 0x66, 0x46 }, +{ 0x00, 0x67, 0x47 }, +{ 0x00, 0x68, 0x48 }, +{ 0x00, 0x69, 0x49 }, +{ 0x00, 0x6a, 0x4a }, +{ 0x00, 0x6b, 0x4b }, +{ 0x00, 0x6c, 0x4c }, +{ 0x00, 0x6d, 0x4d }, +{ 0x00, 0x6e, 0x4e }, +{ 0x00, 0x6f, 0x4f }, +{ 0x00, 0x70, 0x50 }, +{ 0x00, 0x71, 0x51 }, +{ 0x00, 0x72, 0x52 }, +{ 0x00, 0x73, 0x53 }, +{ 0x00, 0x74, 0x54 }, +{ 0x00, 0x75, 0x55 }, +{ 0x00, 0x76, 0x56 }, +{ 0x00, 0x77, 0x57 }, +{ 0x00, 0x78, 0x58 }, +{ 0x00, 0x79, 0x59 }, +{ 0x00, 0x7a, 0x5a }, +{ 0x00, 0x7b, 0x7b }, +{ 0x00, 0x7c, 0x7c }, +{ 0x00, 0x7d, 0x7d }, +{ 0x00, 0x7e, 0x7e }, +{ 0x00, 0x7f, 0x7f }, +{ 0x00, 0x80, 0x80 }, +{ 0x00, 0x81, 0x81 }, +{ 0x00, 0x82, 0x82 }, +{ 0x00, 0x83, 0x83 }, +{ 0x00, 0x84, 0x84 }, +{ 0x00, 0x85, 0x85 }, +{ 0x00, 0x86, 0x86 }, +{ 0x00, 0x87, 0x87 }, +{ 0x00, 0x88, 0x88 }, +{ 0x00, 0x89, 0x89 }, +{ 0x00, 0x8a, 0x8a }, +{ 0x00, 0x8b, 0x8b }, +{ 0x00, 0x8c, 0x8c }, +{ 0x00, 0x8d, 0x8d }, +{ 0x00, 0x8e, 0x8e }, +{ 0x00, 0x8f, 0x8f }, +{ 0x00, 0x90, 0x90 }, +{ 0x00, 0x91, 0x91 }, +{ 0x00, 0x92, 0x92 }, +{ 0x00, 0x93, 0x93 }, +{ 0x00, 0x94, 0x94 }, +{ 0x00, 0x95, 0x95 }, +{ 0x00, 0x96, 0x96 }, +{ 0x00, 0x97, 0x97 }, +{ 0x00, 0x98, 0x98 }, +{ 0x00, 0x99, 0x99 }, +{ 0x00, 0x9a, 0x9a }, +{ 0x00, 0x9b, 0x9b }, +{ 0x00, 0x9c, 0x9c }, +{ 0x00, 0x9d, 0x9d }, +{ 0x00, 0x9e, 0x9e }, +{ 0x00, 0x9f, 0x9f }, +{ 0x00, 0xa0, 0xa0 }, +{ 0x00, 0xa1, 0xa1 }, +{ 0x00, 0xa2, 0xa2 }, +{ 0x00, 0xa3, 0xa3 }, +{ 0x00, 0xa4, 0xa4 }, +{ 0x00, 0xa5, 0xa5 }, +{ 0x00, 0xa6, 0xa6 }, +{ 0x00, 0xa7, 0xa7 }, +{ 0x00, 0xa8, 0xa8 }, +{ 0x00, 0xa9, 0xa9 }, +{ 0x00, 0xaa, 0xaa }, +{ 0x00, 0xab, 0xab }, +{ 0x00, 0xac, 0xac }, +{ 0x00, 0xad, 0xad }, +{ 0x00, 0xae, 0xae }, +{ 0x00, 0xaf, 0xaf }, +{ 0x00, 0xb0, 0xb0 }, +{ 0x00, 0xb1, 0xb1 }, +{ 0x00, 0xb2, 0xb2 }, +{ 0x00, 0xb3, 0xb3 }, +{ 0x00, 0xb4, 0xb4 }, +{ 0x00, 0xb5, 0xb5 }, +{ 0x01, 0xdc, 0xb6 }, +{ 0x00, 0xb7, 0xb7 }, +{ 0x01, 0xdd, 0xb8 }, +{ 0x01, 0xde, 0xb9 }, +{ 0x01, 0xdf, 0xba }, +{ 0x00, 0xbb, 0xbb }, +{ 0x01, 0xfc, 0xbc }, +{ 0x00, 0xbd, 0xbd }, +{ 0x01, 0xfd, 0xbe }, +{ 0x01, 0xfe, 0xbf }, +{ 0x00, 0xc0, 0xc0 }, +{ 0x01, 0xe1, 0xc1 }, +{ 0x01, 0xe2, 0xc2 }, +{ 0x01, 0xe3, 0xc3 }, +{ 0x01, 0xe4, 0xc4 }, +{ 0x01, 0xe5, 0xc5 }, +{ 0x01, 0xe6, 0xc6 }, +{ 0x01, 0xe7, 0xc7 }, +{ 0x01, 0xe8, 0xc8 }, +{ 0x01, 0xe9, 0xc9 }, +{ 0x01, 0xea, 0xca }, +{ 0x01, 0xeb, 0xcb }, +{ 0x01, 0xec, 0xcc }, +{ 0x01, 0xed, 0xcd }, +{ 0x01, 0xee, 0xce }, +{ 0x01, 0xef, 0xcf }, +{ 0x01, 0xf0, 0xd0 }, +{ 0x01, 0xf1, 0xd1 }, +{ 0x00, 0xd2, 0xd2 }, +{ 0x01, 0xf3, 0xd3 }, +{ 0x01, 0xf4, 0xd4 }, +{ 0x01, 0xf5, 0xd5 }, +{ 0x01, 0xf6, 0xd6 }, +{ 0x01, 0xf7, 0xd7 }, +{ 0x01, 0xf8, 0xd8 }, +{ 0x01, 0xf9, 0xd9 }, +{ 0x01, 0xfa, 0xda }, +{ 0x01, 0xfb, 0xdb }, +{ 0x00, 0xdc, 0xb6 }, +{ 0x00, 0xdd, 0xb8 }, +{ 0x00, 0xde, 0xb9 }, +{ 0x00, 0xdf, 0xba }, +{ 0x00, 0xe0, 0xe0 }, +{ 0x00, 0xe1, 0xc1 }, +{ 0x00, 0xe2, 0xc2 }, +{ 0x00, 0xe3, 0xc3 }, +{ 0x00, 0xe4, 0xc4 }, +{ 0x00, 0xe5, 0xc5 }, +{ 0x00, 0xe6, 0xc6 }, +{ 0x00, 0xe7, 0xc7 }, +{ 0x00, 0xe8, 0xc8 }, +{ 0x00, 0xe9, 0xc9 }, +{ 0x00, 0xea, 0xca }, +{ 0x00, 0xeb, 0xcb }, +{ 0x00, 0xec, 0xcc }, +{ 0x00, 0xed, 0xcd }, +{ 0x00, 0xee, 0xce }, +{ 0x00, 0xef, 0xcf }, +{ 0x00, 0xf0, 0xd0 }, +{ 0x00, 0xf1, 0xd1 }, +{ 0x00, 0xf2, 0xd3 }, +{ 0x00, 0xf3, 0xd3 }, +{ 0x00, 0xf4, 0xd4 }, +{ 0x00, 0xf5, 0xd5 }, +{ 0x00, 0xf6, 0xd6 }, +{ 0x00, 0xf7, 0xd7 }, +{ 0x00, 0xf8, 0xd8 }, +{ 0x00, 0xf9, 0xd9 }, +{ 0x00, 0xfa, 0xda }, +{ 0x00, 0xfb, 0xdb }, +{ 0x00, 0xfc, 0xbc }, +{ 0x00, 0xfd, 0xbe }, +{ 0x00, 0xfe, 0xbf }, +{ 0x00, 0xff, 0xff } +}; + +static struct cs_info iso8_tbl[] = { +{ 0x00, 0x00, 0x00 }, +{ 0x00, 0x01, 0x01 }, +{ 0x00, 0x02, 0x02 }, +{ 0x00, 0x03, 0x03 }, +{ 0x00, 0x04, 0x04 }, +{ 0x00, 0x05, 0x05 }, +{ 0x00, 0x06, 0x06 }, +{ 0x00, 0x07, 0x07 }, +{ 0x00, 0x08, 0x08 }, +{ 0x00, 0x09, 0x09 }, +{ 0x00, 0x0a, 0x0a }, +{ 0x00, 0x0b, 0x0b }, +{ 0x00, 0x0c, 0x0c }, +{ 0x00, 0x0d, 0x0d }, +{ 0x00, 0x0e, 0x0e }, +{ 0x00, 0x0f, 0x0f }, +{ 0x00, 0x10, 0x10 }, +{ 0x00, 0x11, 0x11 }, +{ 0x00, 0x12, 0x12 }, +{ 0x00, 0x13, 0x13 }, +{ 0x00, 0x14, 0x14 }, +{ 0x00, 0x15, 0x15 }, +{ 0x00, 0x16, 0x16 }, +{ 0x00, 0x17, 0x17 }, +{ 0x00, 0x18, 0x18 }, +{ 0x00, 0x19, 0x19 }, +{ 0x00, 0x1a, 0x1a }, +{ 0x00, 0x1b, 0x1b }, +{ 0x00, 0x1c, 0x1c }, +{ 0x00, 0x1d, 0x1d }, +{ 0x00, 0x1e, 0x1e }, +{ 0x00, 0x1f, 0x1f }, +{ 0x00, 0x20, 0x20 }, +{ 0x00, 0x21, 0x21 }, +{ 0x00, 0x22, 0x22 }, +{ 0x00, 0x23, 0x23 }, +{ 0x00, 0x24, 0x24 }, +{ 0x00, 0x25, 0x25 }, +{ 0x00, 0x26, 0x26 }, +{ 0x00, 0x27, 0x27 }, +{ 0x00, 0x28, 0x28 }, +{ 0x00, 0x29, 0x29 }, +{ 0x00, 0x2a, 0x2a }, +{ 0x00, 0x2b, 0x2b }, +{ 0x00, 0x2c, 0x2c }, +{ 0x00, 0x2d, 0x2d }, +{ 0x00, 0x2e, 0x2e }, +{ 0x00, 0x2f, 0x2f }, +{ 0x00, 0x30, 0x30 }, +{ 0x00, 0x31, 0x31 }, +{ 0x00, 0x32, 0x32 }, +{ 0x00, 0x33, 0x33 }, +{ 0x00, 0x34, 0x34 }, +{ 0x00, 0x35, 0x35 }, +{ 0x00, 0x36, 0x36 }, +{ 0x00, 0x37, 0x37 }, +{ 0x00, 0x38, 0x38 }, +{ 0x00, 0x39, 0x39 }, +{ 0x00, 0x3a, 0x3a }, +{ 0x00, 0x3b, 0x3b }, +{ 0x00, 0x3c, 0x3c }, +{ 0x00, 0x3d, 0x3d }, +{ 0x00, 0x3e, 0x3e }, +{ 0x00, 0x3f, 0x3f }, +{ 0x00, 0x40, 0x40 }, +{ 0x01, 0x61, 0x41 }, +{ 0x01, 0x62, 0x42 }, +{ 0x01, 0x63, 0x43 }, +{ 0x01, 0x64, 0x44 }, +{ 0x01, 0x65, 0x45 }, +{ 0x01, 0x66, 0x46 }, +{ 0x01, 0x67, 0x47 }, +{ 0x01, 0x68, 0x48 }, +{ 0x01, 0x69, 0x49 }, +{ 0x01, 0x6a, 0x4a }, +{ 0x01, 0x6b, 0x4b }, +{ 0x01, 0x6c, 0x4c }, +{ 0x01, 0x6d, 0x4d }, +{ 0x01, 0x6e, 0x4e }, +{ 0x01, 0x6f, 0x4f }, +{ 0x01, 0x70, 0x50 }, +{ 0x01, 0x71, 0x51 }, +{ 0x01, 0x72, 0x52 }, +{ 0x01, 0x73, 0x53 }, +{ 0x01, 0x74, 0x54 }, +{ 0x01, 0x75, 0x55 }, +{ 0x01, 0x76, 0x56 }, +{ 0x01, 0x77, 0x57 }, +{ 0x01, 0x78, 0x58 }, +{ 0x01, 0x79, 0x59 }, +{ 0x01, 0x7a, 0x5a }, +{ 0x00, 0x5b, 0x5b }, +{ 0x00, 0x5c, 0x5c }, +{ 0x00, 0x5d, 0x5d }, +{ 0x00, 0x5e, 0x5e }, +{ 0x00, 0x5f, 0x5f }, +{ 0x00, 0x60, 0x60 }, +{ 0x00, 0x61, 0x41 }, +{ 0x00, 0x62, 0x42 }, +{ 0x00, 0x63, 0x43 }, +{ 0x00, 0x64, 0x44 }, +{ 0x00, 0x65, 0x45 }, +{ 0x00, 0x66, 0x46 }, +{ 0x00, 0x67, 0x47 }, +{ 0x00, 0x68, 0x48 }, +{ 0x00, 0x69, 0x49 }, +{ 0x00, 0x6a, 0x4a }, +{ 0x00, 0x6b, 0x4b }, +{ 0x00, 0x6c, 0x4c }, +{ 0x00, 0x6d, 0x4d }, +{ 0x00, 0x6e, 0x4e }, +{ 0x00, 0x6f, 0x4f }, +{ 0x00, 0x70, 0x50 }, +{ 0x00, 0x71, 0x51 }, +{ 0x00, 0x72, 0x52 }, +{ 0x00, 0x73, 0x53 }, +{ 0x00, 0x74, 0x54 }, +{ 0x00, 0x75, 0x55 }, +{ 0x00, 0x76, 0x56 }, +{ 0x00, 0x77, 0x57 }, +{ 0x00, 0x78, 0x58 }, +{ 0x00, 0x79, 0x59 }, +{ 0x00, 0x7a, 0x5a }, +{ 0x00, 0x7b, 0x7b }, +{ 0x00, 0x7c, 0x7c }, +{ 0x00, 0x7d, 0x7d }, +{ 0x00, 0x7e, 0x7e }, +{ 0x00, 0x7f, 0x7f }, +{ 0x00, 0x80, 0x80 }, +{ 0x00, 0x81, 0x81 }, +{ 0x00, 0x82, 0x82 }, +{ 0x00, 0x83, 0x83 }, +{ 0x00, 0x84, 0x84 }, +{ 0x00, 0x85, 0x85 }, +{ 0x00, 0x86, 0x86 }, +{ 0x00, 0x87, 0x87 }, +{ 0x00, 0x88, 0x88 }, +{ 0x00, 0x89, 0x89 }, +{ 0x00, 0x8a, 0x8a }, +{ 0x00, 0x8b, 0x8b }, +{ 0x00, 0x8c, 0x8c }, +{ 0x00, 0x8d, 0x8d }, +{ 0x00, 0x8e, 0x8e }, +{ 0x00, 0x8f, 0x8f }, +{ 0x00, 0x90, 0x90 }, +{ 0x00, 0x91, 0x91 }, +{ 0x00, 0x92, 0x92 }, +{ 0x00, 0x93, 0x93 }, +{ 0x00, 0x94, 0x94 }, +{ 0x00, 0x95, 0x95 }, +{ 0x00, 0x96, 0x96 }, +{ 0x00, 0x97, 0x97 }, +{ 0x00, 0x98, 0x98 }, +{ 0x00, 0x99, 0x99 }, +{ 0x00, 0x9a, 0x9a }, +{ 0x00, 0x9b, 0x9b }, +{ 0x00, 0x9c, 0x9c }, +{ 0x00, 0x9d, 0x9d }, +{ 0x00, 0x9e, 0x9e }, +{ 0x00, 0x9f, 0x9f }, +{ 0x00, 0xa0, 0xa0 }, +{ 0x00, 0xa1, 0xa1 }, +{ 0x00, 0xa2, 0xa2 }, +{ 0x00, 0xa3, 0xa3 }, +{ 0x00, 0xa4, 0xa4 }, +{ 0x00, 0xa5, 0xa5 }, +{ 0x00, 0xa6, 0xa6 }, +{ 0x00, 0xa7, 0xa7 }, +{ 0x00, 0xa8, 0xa8 }, +{ 0x00, 0xa9, 0xa9 }, +{ 0x00, 0xaa, 0xaa }, +{ 0x00, 0xab, 0xab }, +{ 0x00, 0xac, 0xac }, +{ 0x00, 0xad, 0xad }, +{ 0x00, 0xae, 0xae }, +{ 0x00, 0xaf, 0xaf }, +{ 0x00, 0xb0, 0xb0 }, +{ 0x00, 0xb1, 0xb1 }, +{ 0x00, 0xb2, 0xb2 }, +{ 0x00, 0xb3, 0xb3 }, +{ 0x00, 0xb4, 0xb4 }, +{ 0x00, 0xb5, 0xb5 }, +{ 0x00, 0xb6, 0xb6 }, +{ 0x00, 0xb7, 0xb7 }, +{ 0x00, 0xb8, 0xb8 }, +{ 0x00, 0xb9, 0xb9 }, +{ 0x00, 0xba, 0xba }, +{ 0x00, 0xbb, 0xbb }, +{ 0x00, 0xbc, 0xbc }, +{ 0x00, 0xbd, 0xbd }, +{ 0x00, 0xbe, 0xbe }, +{ 0x00, 0xbf, 0xbf }, +{ 0x00, 0xc0, 0xc0 }, +{ 0x00, 0xc1, 0xc1 }, +{ 0x00, 0xc2, 0xc2 }, +{ 0x00, 0xc3, 0xc3 }, +{ 0x00, 0xc4, 0xc4 }, +{ 0x00, 0xc5, 0xc5 }, +{ 0x00, 0xc6, 0xc6 }, +{ 0x00, 0xc7, 0xc7 }, +{ 0x00, 0xc8, 0xc8 }, +{ 0x00, 0xc9, 0xc9 }, +{ 0x00, 0xca, 0xca }, +{ 0x00, 0xcb, 0xcb }, +{ 0x00, 0xcc, 0xcc }, +{ 0x00, 0xcd, 0xcd }, +{ 0x00, 0xce, 0xce }, +{ 0x00, 0xcf, 0xcf }, +{ 0x00, 0xd0, 0xd0 }, +{ 0x00, 0xd1, 0xd1 }, +{ 0x00, 0xd2, 0xd2 }, +{ 0x00, 0xd3, 0xd3 }, +{ 0x00, 0xd4, 0xd4 }, +{ 0x00, 0xd5, 0xd5 }, +{ 0x00, 0xd6, 0xd6 }, +{ 0x00, 0xd7, 0xd7 }, +{ 0x00, 0xd8, 0xd8 }, +{ 0x00, 0xd9, 0xd9 }, +{ 0x00, 0xda, 0xda }, +{ 0x00, 0xdb, 0xdb }, +{ 0x00, 0xdc, 0xdc }, +{ 0x00, 0xdd, 0xdd }, +{ 0x00, 0xde, 0xde }, +{ 0x00, 0xdf, 0xdf }, +{ 0x00, 0xe0, 0xe0 }, +{ 0x00, 0xe1, 0xe1 }, +{ 0x00, 0xe2, 0xe2 }, +{ 0x00, 0xe3, 0xe3 }, +{ 0x00, 0xe4, 0xe4 }, +{ 0x00, 0xe5, 0xe5 }, +{ 0x00, 0xe6, 0xe6 }, +{ 0x00, 0xe7, 0xe7 }, +{ 0x00, 0xe8, 0xe8 }, +{ 0x00, 0xe9, 0xe9 }, +{ 0x00, 0xea, 0xea }, +{ 0x00, 0xeb, 0xeb }, +{ 0x00, 0xec, 0xec }, +{ 0x00, 0xed, 0xed }, +{ 0x00, 0xee, 0xee }, +{ 0x00, 0xef, 0xef }, +{ 0x00, 0xf0, 0xf0 }, +{ 0x00, 0xf1, 0xf1 }, +{ 0x00, 0xf2, 0xf2 }, +{ 0x00, 0xf3, 0xf3 }, +{ 0x00, 0xf4, 0xf4 }, +{ 0x00, 0xf5, 0xf5 }, +{ 0x00, 0xf6, 0xf6 }, +{ 0x00, 0xf7, 0xf7 }, +{ 0x00, 0xf8, 0xf8 }, +{ 0x00, 0xf9, 0xf9 }, +{ 0x00, 0xfa, 0xfa }, +{ 0x00, 0xfb, 0xfb }, +{ 0x00, 0xfc, 0xfc }, +{ 0x00, 0xfd, 0xfd }, +{ 0x00, 0xfe, 0xfe }, +{ 0x00, 0xff, 0xff } +}; + +static struct cs_info iso9_tbl[] = { +{ 0x00, 0x00, 0x00 }, +{ 0x00, 0x01, 0x01 }, +{ 0x00, 0x02, 0x02 }, +{ 0x00, 0x03, 0x03 }, +{ 0x00, 0x04, 0x04 }, +{ 0x00, 0x05, 0x05 }, +{ 0x00, 0x06, 0x06 }, +{ 0x00, 0x07, 0x07 }, +{ 0x00, 0x08, 0x08 }, +{ 0x00, 0x09, 0x09 }, +{ 0x00, 0x0a, 0x0a }, +{ 0x00, 0x0b, 0x0b }, +{ 0x00, 0x0c, 0x0c }, +{ 0x00, 0x0d, 0x0d }, +{ 0x00, 0x0e, 0x0e }, +{ 0x00, 0x0f, 0x0f }, +{ 0x00, 0x10, 0x10 }, +{ 0x00, 0x11, 0x11 }, +{ 0x00, 0x12, 0x12 }, +{ 0x00, 0x13, 0x13 }, +{ 0x00, 0x14, 0x14 }, +{ 0x00, 0x15, 0x15 }, +{ 0x00, 0x16, 0x16 }, +{ 0x00, 0x17, 0x17 }, +{ 0x00, 0x18, 0x18 }, +{ 0x00, 0x19, 0x19 }, +{ 0x00, 0x1a, 0x1a }, +{ 0x00, 0x1b, 0x1b }, +{ 0x00, 0x1c, 0x1c }, +{ 0x00, 0x1d, 0x1d }, +{ 0x00, 0x1e, 0x1e }, +{ 0x00, 0x1f, 0x1f }, +{ 0x00, 0x20, 0x20 }, +{ 0x00, 0x21, 0x21 }, +{ 0x00, 0x22, 0x22 }, +{ 0x00, 0x23, 0x23 }, +{ 0x00, 0x24, 0x24 }, +{ 0x00, 0x25, 0x25 }, +{ 0x00, 0x26, 0x26 }, +{ 0x00, 0x27, 0x27 }, +{ 0x00, 0x28, 0x28 }, +{ 0x00, 0x29, 0x29 }, +{ 0x00, 0x2a, 0x2a }, +{ 0x00, 0x2b, 0x2b }, +{ 0x00, 0x2c, 0x2c }, +{ 0x00, 0x2d, 0x2d }, +{ 0x00, 0x2e, 0x2e }, +{ 0x00, 0x2f, 0x2f }, +{ 0x00, 0x30, 0x30 }, +{ 0x00, 0x31, 0x31 }, +{ 0x00, 0x32, 0x32 }, +{ 0x00, 0x33, 0x33 }, +{ 0x00, 0x34, 0x34 }, +{ 0x00, 0x35, 0x35 }, +{ 0x00, 0x36, 0x36 }, +{ 0x00, 0x37, 0x37 }, +{ 0x00, 0x38, 0x38 }, +{ 0x00, 0x39, 0x39 }, +{ 0x00, 0x3a, 0x3a }, +{ 0x00, 0x3b, 0x3b }, +{ 0x00, 0x3c, 0x3c }, +{ 0x00, 0x3d, 0x3d }, +{ 0x00, 0x3e, 0x3e }, +{ 0x00, 0x3f, 0x3f }, +{ 0x00, 0x40, 0x40 }, +{ 0x01, 0x61, 0x41 }, +{ 0x01, 0x62, 0x42 }, +{ 0x01, 0x63, 0x43 }, +{ 0x01, 0x64, 0x44 }, +{ 0x01, 0x65, 0x45 }, +{ 0x01, 0x66, 0x46 }, +{ 0x01, 0x67, 0x47 }, +{ 0x01, 0x68, 0x48 }, +{ 0x01, 0xfd, 0x49 }, +{ 0x01, 0x6a, 0x4a }, +{ 0x01, 0x6b, 0x4b }, +{ 0x01, 0x6c, 0x4c }, +{ 0x01, 0x6d, 0x4d }, +{ 0x01, 0x6e, 0x4e }, +{ 0x01, 0x6f, 0x4f }, +{ 0x01, 0x70, 0x50 }, +{ 0x01, 0x71, 0x51 }, +{ 0x01, 0x72, 0x52 }, +{ 0x01, 0x73, 0x53 }, +{ 0x01, 0x74, 0x54 }, +{ 0x01, 0x75, 0x55 }, +{ 0x01, 0x76, 0x56 }, +{ 0x01, 0x77, 0x57 }, +{ 0x01, 0x78, 0x58 }, +{ 0x01, 0x79, 0x59 }, +{ 0x01, 0x7a, 0x5a }, +{ 0x00, 0x5b, 0x5b }, +{ 0x00, 0x5c, 0x5c }, +{ 0x00, 0x5d, 0x5d }, +{ 0x00, 0x5e, 0x5e }, +{ 0x00, 0x5f, 0x5f }, +{ 0x00, 0x60, 0x60 }, +{ 0x00, 0x61, 0x41 }, +{ 0x00, 0x62, 0x42 }, +{ 0x00, 0x63, 0x43 }, +{ 0x00, 0x64, 0x44 }, +{ 0x00, 0x65, 0x45 }, +{ 0x00, 0x66, 0x46 }, +{ 0x00, 0x67, 0x47 }, +{ 0x00, 0x68, 0x48 }, +{ 0x00, 0x69, 0xdd }, +{ 0x00, 0x6a, 0x4a }, +{ 0x00, 0x6b, 0x4b }, +{ 0x00, 0x6c, 0x4c }, +{ 0x00, 0x6d, 0x4d }, +{ 0x00, 0x6e, 0x4e }, +{ 0x00, 0x6f, 0x4f }, +{ 0x00, 0x70, 0x50 }, +{ 0x00, 0x71, 0x51 }, +{ 0x00, 0x72, 0x52 }, +{ 0x00, 0x73, 0x53 }, +{ 0x00, 0x74, 0x54 }, +{ 0x00, 0x75, 0x55 }, +{ 0x00, 0x76, 0x56 }, +{ 0x00, 0x77, 0x57 }, +{ 0x00, 0x78, 0x58 }, +{ 0x00, 0x79, 0x59 }, +{ 0x00, 0x7a, 0x5a }, +{ 0x00, 0x7b, 0x7b }, +{ 0x00, 0x7c, 0x7c }, +{ 0x00, 0x7d, 0x7d }, +{ 0x00, 0x7e, 0x7e }, +{ 0x00, 0x7f, 0x7f }, +{ 0x00, 0x80, 0x80 }, +{ 0x00, 0x81, 0x81 }, +{ 0x00, 0x82, 0x82 }, +{ 0x00, 0x83, 0x83 }, +{ 0x00, 0x84, 0x84 }, +{ 0x00, 0x85, 0x85 }, +{ 0x00, 0x86, 0x86 }, +{ 0x00, 0x87, 0x87 }, +{ 0x00, 0x88, 0x88 }, +{ 0x00, 0x89, 0x89 }, +{ 0x00, 0x8a, 0x8a }, +{ 0x00, 0x8b, 0x8b }, +{ 0x00, 0x8c, 0x8c }, +{ 0x00, 0x8d, 0x8d }, +{ 0x00, 0x8e, 0x8e }, +{ 0x00, 0x8f, 0x8f }, +{ 0x00, 0x90, 0x90 }, +{ 0x00, 0x91, 0x91 }, +{ 0x00, 0x92, 0x92 }, +{ 0x00, 0x93, 0x93 }, +{ 0x00, 0x94, 0x94 }, +{ 0x00, 0x95, 0x95 }, +{ 0x00, 0x96, 0x96 }, +{ 0x00, 0x97, 0x97 }, +{ 0x00, 0x98, 0x98 }, +{ 0x00, 0x99, 0x99 }, +{ 0x00, 0x9a, 0x9a }, +{ 0x00, 0x9b, 0x9b }, +{ 0x00, 0x9c, 0x9c }, +{ 0x00, 0x9d, 0x9d }, +{ 0x00, 0x9e, 0x9e }, +{ 0x00, 0x9f, 0x9f }, +{ 0x00, 0xa0, 0xa0 }, +{ 0x00, 0xa1, 0xa1 }, +{ 0x00, 0xa2, 0xa2 }, +{ 0x00, 0xa3, 0xa3 }, +{ 0x00, 0xa4, 0xa4 }, +{ 0x00, 0xa5, 0xa5 }, +{ 0x00, 0xa6, 0xa6 }, +{ 0x00, 0xa7, 0xa7 }, +{ 0x00, 0xa8, 0xa8 }, +{ 0x00, 0xa9, 0xa9 }, +{ 0x00, 0xaa, 0xaa }, +{ 0x00, 0xab, 0xab }, +{ 0x00, 0xac, 0xac }, +{ 0x00, 0xad, 0xad }, +{ 0x00, 0xae, 0xae }, +{ 0x00, 0xaf, 0xaf }, +{ 0x00, 0xb0, 0xb0 }, +{ 0x00, 0xb1, 0xb1 }, +{ 0x00, 0xb2, 0xb2 }, +{ 0x00, 0xb3, 0xb3 }, +{ 0x00, 0xb4, 0xb4 }, +{ 0x00, 0xb5, 0xb5 }, +{ 0x00, 0xb6, 0xb6 }, +{ 0x00, 0xb7, 0xb7 }, +{ 0x00, 0xb8, 0xb8 }, +{ 0x00, 0xb9, 0xb9 }, +{ 0x00, 0xba, 0xba }, +{ 0x00, 0xbb, 0xbb }, +{ 0x00, 0xbc, 0xbc }, +{ 0x00, 0xbd, 0xbd }, +{ 0x00, 0xbe, 0xbe }, +{ 0x00, 0xbf, 0xbf }, +{ 0x01, 0xe0, 0xc0 }, +{ 0x01, 0xe1, 0xc1 }, +{ 0x01, 0xe2, 0xc2 }, +{ 0x01, 0xe3, 0xc3 }, +{ 0x01, 0xe4, 0xc4 }, +{ 0x01, 0xe5, 0xc5 }, +{ 0x01, 0xe6, 0xc6 }, +{ 0x01, 0xe7, 0xc7 }, +{ 0x01, 0xe8, 0xc8 }, +{ 0x01, 0xe9, 0xc9 }, +{ 0x01, 0xea, 0xca }, +{ 0x01, 0xeb, 0xcb }, +{ 0x01, 0xec, 0xcc }, +{ 0x01, 0xed, 0xcd }, +{ 0x01, 0xee, 0xce }, +{ 0x01, 0xef, 0xcf }, +{ 0x01, 0xf0, 0xd0 }, +{ 0x01, 0xf1, 0xd1 }, +{ 0x01, 0xf2, 0xd2 }, +{ 0x01, 0xf3, 0xd3 }, +{ 0x01, 0xf4, 0xd4 }, +{ 0x01, 0xf5, 0xd5 }, +{ 0x01, 0xf6, 0xd6 }, +{ 0x00, 0xd7, 0xd7 }, +{ 0x01, 0xf8, 0xd8 }, +{ 0x01, 0xf9, 0xd9 }, +{ 0x01, 0xfa, 0xda }, +{ 0x01, 0xfb, 0xdb }, +{ 0x01, 0xfc, 0xdc }, +{ 0x01, 0x69, 0xdd }, +{ 0x01, 0xfe, 0xde }, +{ 0x00, 0xdf, 0xdf }, +{ 0x00, 0xe0, 0xc0 }, +{ 0x00, 0xe1, 0xc1 }, +{ 0x00, 0xe2, 0xc2 }, +{ 0x00, 0xe3, 0xc3 }, +{ 0x00, 0xe4, 0xc4 }, +{ 0x00, 0xe5, 0xc5 }, +{ 0x00, 0xe6, 0xc6 }, +{ 0x00, 0xe7, 0xc7 }, +{ 0x00, 0xe8, 0xc8 }, +{ 0x00, 0xe9, 0xc9 }, +{ 0x00, 0xea, 0xca }, +{ 0x00, 0xeb, 0xcb }, +{ 0x00, 0xec, 0xcc }, +{ 0x00, 0xed, 0xcd }, +{ 0x00, 0xee, 0xce }, +{ 0x00, 0xef, 0xcf }, +{ 0x00, 0xf0, 0xd0 }, +{ 0x00, 0xf1, 0xd1 }, +{ 0x00, 0xf2, 0xd2 }, +{ 0x00, 0xf3, 0xd3 }, +{ 0x00, 0xf4, 0xd4 }, +{ 0x00, 0xf5, 0xd5 }, +{ 0x00, 0xf6, 0xd6 }, +{ 0x00, 0xf7, 0xf7 }, +{ 0x00, 0xf8, 0xd8 }, +{ 0x00, 0xf9, 0xd9 }, +{ 0x00, 0xfa, 0xda }, +{ 0x00, 0xfb, 0xdb }, +{ 0x00, 0xfc, 0xdc }, +{ 0x00, 0xfd, 0x49 }, +{ 0x00, 0xfe, 0xde }, +{ 0x00, 0xff, 0xff } +}; + +static struct cs_info iso10_tbl[] = { +{ 0x00, 0x00, 0x00 }, +{ 0x00, 0x01, 0x01 }, +{ 0x00, 0x02, 0x02 }, +{ 0x00, 0x03, 0x03 }, +{ 0x00, 0x04, 0x04 }, +{ 0x00, 0x05, 0x05 }, +{ 0x00, 0x06, 0x06 }, +{ 0x00, 0x07, 0x07 }, +{ 0x00, 0x08, 0x08 }, +{ 0x00, 0x09, 0x09 }, +{ 0x00, 0x0a, 0x0a }, +{ 0x00, 0x0b, 0x0b }, +{ 0x00, 0x0c, 0x0c }, +{ 0x00, 0x0d, 0x0d }, +{ 0x00, 0x0e, 0x0e }, +{ 0x00, 0x0f, 0x0f }, +{ 0x00, 0x10, 0x10 }, +{ 0x00, 0x11, 0x11 }, +{ 0x00, 0x12, 0x12 }, +{ 0x00, 0x13, 0x13 }, +{ 0x00, 0x14, 0x14 }, +{ 0x00, 0x15, 0x15 }, +{ 0x00, 0x16, 0x16 }, +{ 0x00, 0x17, 0x17 }, +{ 0x00, 0x18, 0x18 }, +{ 0x00, 0x19, 0x19 }, +{ 0x00, 0x1a, 0x1a }, +{ 0x00, 0x1b, 0x1b }, +{ 0x00, 0x1c, 0x1c }, +{ 0x00, 0x1d, 0x1d }, +{ 0x00, 0x1e, 0x1e }, +{ 0x00, 0x1f, 0x1f }, +{ 0x00, 0x20, 0x20 }, +{ 0x00, 0x21, 0x21 }, +{ 0x00, 0x22, 0x22 }, +{ 0x00, 0x23, 0x23 }, +{ 0x00, 0x24, 0x24 }, +{ 0x00, 0x25, 0x25 }, +{ 0x00, 0x26, 0x26 }, +{ 0x00, 0x27, 0x27 }, +{ 0x00, 0x28, 0x28 }, +{ 0x00, 0x29, 0x29 }, +{ 0x00, 0x2a, 0x2a }, +{ 0x00, 0x2b, 0x2b }, +{ 0x00, 0x2c, 0x2c }, +{ 0x00, 0x2d, 0x2d }, +{ 0x00, 0x2e, 0x2e }, +{ 0x00, 0x2f, 0x2f }, +{ 0x00, 0x30, 0x30 }, +{ 0x00, 0x31, 0x31 }, +{ 0x00, 0x32, 0x32 }, +{ 0x00, 0x33, 0x33 }, +{ 0x00, 0x34, 0x34 }, +{ 0x00, 0x35, 0x35 }, +{ 0x00, 0x36, 0x36 }, +{ 0x00, 0x37, 0x37 }, +{ 0x00, 0x38, 0x38 }, +{ 0x00, 0x39, 0x39 }, +{ 0x00, 0x3a, 0x3a }, +{ 0x00, 0x3b, 0x3b }, +{ 0x00, 0x3c, 0x3c }, +{ 0x00, 0x3d, 0x3d }, +{ 0x00, 0x3e, 0x3e }, +{ 0x00, 0x3f, 0x3f }, +{ 0x00, 0x40, 0x40 }, +{ 0x01, 0x61, 0x41 }, +{ 0x01, 0x62, 0x42 }, +{ 0x01, 0x63, 0x43 }, +{ 0x01, 0x64, 0x44 }, +{ 0x01, 0x65, 0x45 }, +{ 0x01, 0x66, 0x46 }, +{ 0x01, 0x67, 0x47 }, +{ 0x01, 0x68, 0x48 }, +{ 0x01, 0x69, 0x49 }, +{ 0x01, 0x6a, 0x4a }, +{ 0x01, 0x6b, 0x4b }, +{ 0x01, 0x6c, 0x4c }, +{ 0x01, 0x6d, 0x4d }, +{ 0x01, 0x6e, 0x4e }, +{ 0x01, 0x6f, 0x4f }, +{ 0x01, 0x70, 0x50 }, +{ 0x01, 0x71, 0x51 }, +{ 0x01, 0x72, 0x52 }, +{ 0x01, 0x73, 0x53 }, +{ 0x01, 0x74, 0x54 }, +{ 0x01, 0x75, 0x55 }, +{ 0x01, 0x76, 0x56 }, +{ 0x01, 0x77, 0x57 }, +{ 0x01, 0x78, 0x58 }, +{ 0x01, 0x79, 0x59 }, +{ 0x01, 0x7a, 0x5a }, +{ 0x00, 0x5b, 0x5b }, +{ 0x00, 0x5c, 0x5c }, +{ 0x00, 0x5d, 0x5d }, +{ 0x00, 0x5e, 0x5e }, +{ 0x00, 0x5f, 0x5f }, +{ 0x00, 0x60, 0x60 }, +{ 0x00, 0x61, 0x41 }, +{ 0x00, 0x62, 0x42 }, +{ 0x00, 0x63, 0x43 }, +{ 0x00, 0x64, 0x44 }, +{ 0x00, 0x65, 0x45 }, +{ 0x00, 0x66, 0x46 }, +{ 0x00, 0x67, 0x47 }, +{ 0x00, 0x68, 0x48 }, +{ 0x00, 0x69, 0x49 }, +{ 0x00, 0x6a, 0x4a }, +{ 0x00, 0x6b, 0x4b }, +{ 0x00, 0x6c, 0x4c }, +{ 0x00, 0x6d, 0x4d }, +{ 0x00, 0x6e, 0x4e }, +{ 0x00, 0x6f, 0x4f }, +{ 0x00, 0x70, 0x50 }, +{ 0x00, 0x71, 0x51 }, +{ 0x00, 0x72, 0x52 }, +{ 0x00, 0x73, 0x53 }, +{ 0x00, 0x74, 0x54 }, +{ 0x00, 0x75, 0x55 }, +{ 0x00, 0x76, 0x56 }, +{ 0x00, 0x77, 0x57 }, +{ 0x00, 0x78, 0x58 }, +{ 0x00, 0x79, 0x59 }, +{ 0x00, 0x7a, 0x5a }, +{ 0x00, 0x7b, 0x7b }, +{ 0x00, 0x7c, 0x7c }, +{ 0x00, 0x7d, 0x7d }, +{ 0x00, 0x7e, 0x7e }, +{ 0x00, 0x7f, 0x7f }, +{ 0x00, 0x80, 0x80 }, +{ 0x00, 0x81, 0x81 }, +{ 0x00, 0x82, 0x82 }, +{ 0x00, 0x83, 0x83 }, +{ 0x00, 0x84, 0x84 }, +{ 0x00, 0x85, 0x85 }, +{ 0x00, 0x86, 0x86 }, +{ 0x00, 0x87, 0x87 }, +{ 0x00, 0x88, 0x88 }, +{ 0x00, 0x89, 0x89 }, +{ 0x00, 0x8a, 0x8a }, +{ 0x00, 0x8b, 0x8b }, +{ 0x00, 0x8c, 0x8c }, +{ 0x00, 0x8d, 0x8d }, +{ 0x00, 0x8e, 0x8e }, +{ 0x00, 0x8f, 0x8f }, +{ 0x00, 0x90, 0x90 }, +{ 0x00, 0x91, 0x91 }, +{ 0x00, 0x92, 0x92 }, +{ 0x00, 0x93, 0x93 }, +{ 0x00, 0x94, 0x94 }, +{ 0x00, 0x95, 0x95 }, +{ 0x00, 0x96, 0x96 }, +{ 0x00, 0x97, 0x97 }, +{ 0x00, 0x98, 0x98 }, +{ 0x00, 0x99, 0x99 }, +{ 0x00, 0x9a, 0x9a }, +{ 0x00, 0x9b, 0x9b }, +{ 0x00, 0x9c, 0x9c }, +{ 0x00, 0x9d, 0x9d }, +{ 0x00, 0x9e, 0x9e }, +{ 0x00, 0x9f, 0x9f }, +{ 0x00, 0xa0, 0xa0 }, +{ 0x00, 0xa1, 0xa1 }, +{ 0x00, 0xa2, 0xa2 }, +{ 0x00, 0xa3, 0xa3 }, +{ 0x00, 0xa4, 0xa4 }, +{ 0x00, 0xa5, 0xa5 }, +{ 0x00, 0xa6, 0xa6 }, +{ 0x00, 0xa7, 0xa7 }, +{ 0x00, 0xa8, 0xa8 }, +{ 0x00, 0xa9, 0xa9 }, +{ 0x00, 0xaa, 0xaa }, +{ 0x00, 0xab, 0xab }, +{ 0x00, 0xac, 0xac }, +{ 0x00, 0xad, 0xad }, +{ 0x00, 0xae, 0xae }, +{ 0x00, 0xaf, 0xaf }, +{ 0x00, 0xb0, 0xb0 }, +{ 0x00, 0xb1, 0xb1 }, +{ 0x00, 0xb2, 0xb2 }, +{ 0x00, 0xb3, 0xb3 }, +{ 0x00, 0xb4, 0xb4 }, +{ 0x00, 0xb5, 0xb5 }, +{ 0x00, 0xb6, 0xb6 }, +{ 0x00, 0xb7, 0xb7 }, +{ 0x00, 0xb8, 0xb8 }, +{ 0x00, 0xb9, 0xb9 }, +{ 0x00, 0xba, 0xba }, +{ 0x00, 0xbb, 0xbb }, +{ 0x00, 0xbc, 0xbc }, +{ 0x00, 0xbd, 0xbd }, +{ 0x00, 0xbe, 0xbe }, +{ 0x00, 0xbf, 0xbf }, +{ 0x00, 0xc0, 0xc0 }, +{ 0x00, 0xc1, 0xc1 }, +{ 0x00, 0xc2, 0xc2 }, +{ 0x00, 0xc3, 0xc3 }, +{ 0x00, 0xc4, 0xc4 }, +{ 0x00, 0xc5, 0xc5 }, +{ 0x00, 0xc6, 0xc6 }, +{ 0x00, 0xc7, 0xc7 }, +{ 0x00, 0xc8, 0xc8 }, +{ 0x00, 0xc9, 0xc9 }, +{ 0x00, 0xca, 0xca }, +{ 0x00, 0xcb, 0xcb }, +{ 0x00, 0xcc, 0xcc }, +{ 0x00, 0xcd, 0xcd }, +{ 0x00, 0xce, 0xce }, +{ 0x00, 0xcf, 0xcf }, +{ 0x00, 0xd0, 0xd0 }, +{ 0x00, 0xd1, 0xd1 }, +{ 0x00, 0xd2, 0xd2 }, +{ 0x00, 0xd3, 0xd3 }, +{ 0x00, 0xd4, 0xd4 }, +{ 0x00, 0xd5, 0xd5 }, +{ 0x00, 0xd6, 0xd6 }, +{ 0x00, 0xd7, 0xd7 }, +{ 0x00, 0xd8, 0xd8 }, +{ 0x00, 0xd9, 0xd9 }, +{ 0x00, 0xda, 0xda }, +{ 0x00, 0xdb, 0xdb }, +{ 0x00, 0xdc, 0xdc }, +{ 0x00, 0xdd, 0xdd }, +{ 0x00, 0xde, 0xde }, +{ 0x00, 0xdf, 0xdf }, +{ 0x00, 0xe0, 0xe0 }, +{ 0x00, 0xe1, 0xe1 }, +{ 0x00, 0xe2, 0xe2 }, +{ 0x00, 0xe3, 0xe3 }, +{ 0x00, 0xe4, 0xe4 }, +{ 0x00, 0xe5, 0xe5 }, +{ 0x00, 0xe6, 0xe6 }, +{ 0x00, 0xe7, 0xe7 }, +{ 0x00, 0xe8, 0xe8 }, +{ 0x00, 0xe9, 0xe9 }, +{ 0x00, 0xea, 0xea }, +{ 0x00, 0xeb, 0xeb }, +{ 0x00, 0xec, 0xec }, +{ 0x00, 0xed, 0xed }, +{ 0x00, 0xee, 0xee }, +{ 0x00, 0xef, 0xef }, +{ 0x00, 0xf0, 0xf0 }, +{ 0x00, 0xf1, 0xf1 }, +{ 0x00, 0xf2, 0xf2 }, +{ 0x00, 0xf3, 0xf3 }, +{ 0x00, 0xf4, 0xf4 }, +{ 0x00, 0xf5, 0xf5 }, +{ 0x00, 0xf6, 0xf6 }, +{ 0x00, 0xf7, 0xf7 }, +{ 0x00, 0xf8, 0xf8 }, +{ 0x00, 0xf9, 0xf9 }, +{ 0x00, 0xfa, 0xfa }, +{ 0x00, 0xfb, 0xfb }, +{ 0x00, 0xfc, 0xfc }, +{ 0x00, 0xfd, 0xfd }, +{ 0x00, 0xfe, 0xfe }, +{ 0x00, 0xff, 0xff } +}; + +static struct cs_info koi8r_tbl[] = { +{ 0x00, 0x00, 0x00 }, +{ 0x00, 0x01, 0x01 }, +{ 0x00, 0x02, 0x02 }, +{ 0x00, 0x03, 0x03 }, +{ 0x00, 0x04, 0x04 }, +{ 0x00, 0x05, 0x05 }, +{ 0x00, 0x06, 0x06 }, +{ 0x00, 0x07, 0x07 }, +{ 0x00, 0x08, 0x08 }, +{ 0x00, 0x09, 0x09 }, +{ 0x00, 0x0a, 0x0a }, +{ 0x00, 0x0b, 0x0b }, +{ 0x00, 0x0c, 0x0c }, +{ 0x00, 0x0d, 0x0d }, +{ 0x00, 0x0e, 0x0e }, +{ 0x00, 0x0f, 0x0f }, +{ 0x00, 0x10, 0x10 }, +{ 0x00, 0x11, 0x11 }, +{ 0x00, 0x12, 0x12 }, +{ 0x00, 0x13, 0x13 }, +{ 0x00, 0x14, 0x14 }, +{ 0x00, 0x15, 0x15 }, +{ 0x00, 0x16, 0x16 }, +{ 0x00, 0x17, 0x17 }, +{ 0x00, 0x18, 0x18 }, +{ 0x00, 0x19, 0x19 }, +{ 0x00, 0x1a, 0x1a }, +{ 0x00, 0x1b, 0x1b }, +{ 0x00, 0x1c, 0x1c }, +{ 0x00, 0x1d, 0x1d }, +{ 0x00, 0x1e, 0x1e }, +{ 0x00, 0x1f, 0x1f }, +{ 0x00, 0x20, 0x20 }, +{ 0x00, 0x21, 0x21 }, +{ 0x00, 0x22, 0x22 }, +{ 0x00, 0x23, 0x23 }, +{ 0x00, 0x24, 0x24 }, +{ 0x00, 0x25, 0x25 }, +{ 0x00, 0x26, 0x26 }, +{ 0x00, 0x27, 0x27 }, +{ 0x00, 0x28, 0x28 }, +{ 0x00, 0x29, 0x29 }, +{ 0x00, 0x2a, 0x2a }, +{ 0x00, 0x2b, 0x2b }, +{ 0x00, 0x2c, 0x2c }, +{ 0x00, 0x2d, 0x2d }, +{ 0x00, 0x2e, 0x2e }, +{ 0x00, 0x2f, 0x2f }, +{ 0x00, 0x30, 0x30 }, +{ 0x00, 0x31, 0x31 }, +{ 0x00, 0x32, 0x32 }, +{ 0x00, 0x33, 0x33 }, +{ 0x00, 0x34, 0x34 }, +{ 0x00, 0x35, 0x35 }, +{ 0x00, 0x36, 0x36 }, +{ 0x00, 0x37, 0x37 }, +{ 0x00, 0x38, 0x38 }, +{ 0x00, 0x39, 0x39 }, +{ 0x00, 0x3a, 0x3a }, +{ 0x00, 0x3b, 0x3b }, +{ 0x00, 0x3c, 0x3c }, +{ 0x00, 0x3d, 0x3d }, +{ 0x00, 0x3e, 0x3e }, +{ 0x00, 0x3f, 0x3f }, +{ 0x00, 0x40, 0x40 }, +{ 0x01, 0x61, 0x41 }, +{ 0x01, 0x62, 0x42 }, +{ 0x01, 0x63, 0x43 }, +{ 0x01, 0x64, 0x44 }, +{ 0x01, 0x65, 0x45 }, +{ 0x01, 0x66, 0x46 }, +{ 0x01, 0x67, 0x47 }, +{ 0x01, 0x68, 0x48 }, +{ 0x01, 0x69, 0x49 }, +{ 0x01, 0x6a, 0x4a }, +{ 0x01, 0x6b, 0x4b }, +{ 0x01, 0x6c, 0x4c }, +{ 0x01, 0x6d, 0x4d }, +{ 0x01, 0x6e, 0x4e }, +{ 0x01, 0x6f, 0x4f }, +{ 0x01, 0x70, 0x50 }, +{ 0x01, 0x71, 0x51 }, +{ 0x01, 0x72, 0x52 }, +{ 0x01, 0x73, 0x53 }, +{ 0x01, 0x74, 0x54 }, +{ 0x01, 0x75, 0x55 }, +{ 0x01, 0x76, 0x56 }, +{ 0x01, 0x77, 0x57 }, +{ 0x01, 0x78, 0x58 }, +{ 0x01, 0x79, 0x59 }, +{ 0x01, 0x7a, 0x5a }, +{ 0x00, 0x5b, 0x5b }, +{ 0x00, 0x5c, 0x5c }, +{ 0x00, 0x5d, 0x5d }, +{ 0x00, 0x5e, 0x5e }, +{ 0x00, 0x5f, 0x5f }, +{ 0x00, 0x60, 0x60 }, +{ 0x00, 0x61, 0x41 }, +{ 0x00, 0x62, 0x42 }, +{ 0x00, 0x63, 0x43 }, +{ 0x00, 0x64, 0x44 }, +{ 0x00, 0x65, 0x45 }, +{ 0x00, 0x66, 0x46 }, +{ 0x00, 0x67, 0x47 }, +{ 0x00, 0x68, 0x48 }, +{ 0x00, 0x69, 0x49 }, +{ 0x00, 0x6a, 0x4a }, +{ 0x00, 0x6b, 0x4b }, +{ 0x00, 0x6c, 0x4c }, +{ 0x00, 0x6d, 0x4d }, +{ 0x00, 0x6e, 0x4e }, +{ 0x00, 0x6f, 0x4f }, +{ 0x00, 0x70, 0x50 }, +{ 0x00, 0x71, 0x51 }, +{ 0x00, 0x72, 0x52 }, +{ 0x00, 0x73, 0x53 }, +{ 0x00, 0x74, 0x54 }, +{ 0x00, 0x75, 0x55 }, +{ 0x00, 0x76, 0x56 }, +{ 0x00, 0x77, 0x57 }, +{ 0x00, 0x78, 0x58 }, +{ 0x00, 0x79, 0x59 }, +{ 0x00, 0x7a, 0x5a }, +{ 0x00, 0x7b, 0x7b }, +{ 0x00, 0x7c, 0x7c }, +{ 0x00, 0x7d, 0x7d }, +{ 0x00, 0x7e, 0x7e }, +{ 0x00, 0x7f, 0x7f }, +{ 0x00, 0x80, 0x80 }, +{ 0x00, 0x81, 0x81 }, +{ 0x00, 0x82, 0x82 }, +{ 0x00, 0x83, 0x83 }, +{ 0x00, 0x84, 0x84 }, +{ 0x00, 0x85, 0x85 }, +{ 0x00, 0x86, 0x86 }, +{ 0x00, 0x87, 0x87 }, +{ 0x00, 0x88, 0x88 }, +{ 0x00, 0x89, 0x89 }, +{ 0x00, 0x8a, 0x8a }, +{ 0x00, 0x8b, 0x8b }, +{ 0x00, 0x8c, 0x8c }, +{ 0x00, 0x8d, 0x8d }, +{ 0x00, 0x8e, 0x8e }, +{ 0x00, 0x8f, 0x8f }, +{ 0x00, 0x90, 0x90 }, +{ 0x00, 0x91, 0x91 }, +{ 0x00, 0x92, 0x92 }, +{ 0x00, 0x93, 0x93 }, +{ 0x00, 0x94, 0x94 }, +{ 0x00, 0x95, 0x95 }, +{ 0x00, 0x96, 0x96 }, +{ 0x00, 0x97, 0x97 }, +{ 0x00, 0x98, 0x98 }, +{ 0x00, 0x99, 0x99 }, +{ 0x00, 0x9a, 0x9a }, +{ 0x00, 0x9b, 0x9b }, +{ 0x00, 0x9c, 0x9c }, +{ 0x00, 0x9d, 0x9d }, +{ 0x00, 0x9e, 0x9e }, +{ 0x00, 0x9f, 0x9f }, +{ 0x00, 0xa0, 0xa0 }, +{ 0x00, 0xa1, 0xa1 }, +{ 0x00, 0xa2, 0xa2 }, +{ 0x00, 0xa3, 0xb3 }, +{ 0x00, 0xa4, 0xa4 }, +{ 0x00, 0xa5, 0xa5 }, +{ 0x00, 0xa6, 0xa6 }, +{ 0x00, 0xa7, 0xa7 }, +{ 0x00, 0xa8, 0xa8 }, +{ 0x00, 0xa9, 0xa9 }, +{ 0x00, 0xaa, 0xaa }, +{ 0x00, 0xab, 0xab }, +{ 0x00, 0xac, 0xac }, +{ 0x00, 0xad, 0xad }, +{ 0x00, 0xae, 0xae }, +{ 0x00, 0xaf, 0xaf }, +{ 0x00, 0xb0, 0xb0 }, +{ 0x00, 0xb1, 0xb1 }, +{ 0x00, 0xb2, 0xb2 }, +{ 0x01, 0xa3, 0xb3 }, +{ 0x00, 0xb4, 0xb4 }, +{ 0x00, 0xb5, 0xb5 }, +{ 0x00, 0xb6, 0xb6 }, +{ 0x00, 0xb7, 0xb7 }, +{ 0x00, 0xb8, 0xb8 }, +{ 0x00, 0xb9, 0xb9 }, +{ 0x00, 0xba, 0xba }, +{ 0x00, 0xbb, 0xbb }, +{ 0x00, 0xbc, 0xbc }, +{ 0x00, 0xbd, 0xbd }, +{ 0x00, 0xbe, 0xbe }, +{ 0x00, 0xbf, 0xbf }, +{ 0x00, 0xc0, 0xe0 }, +{ 0x00, 0xc1, 0xe1 }, +{ 0x00, 0xc2, 0xe2 }, +{ 0x00, 0xc3, 0xe3 }, +{ 0x00, 0xc4, 0xe4 }, +{ 0x00, 0xc5, 0xe5 }, +{ 0x00, 0xc6, 0xe6 }, +{ 0x00, 0xc7, 0xe7 }, +{ 0x00, 0xc8, 0xe8 }, +{ 0x00, 0xc9, 0xe9 }, +{ 0x00, 0xca, 0xea }, +{ 0x00, 0xcb, 0xeb }, +{ 0x00, 0xcc, 0xec }, +{ 0x00, 0xcd, 0xed }, +{ 0x00, 0xce, 0xee }, +{ 0x00, 0xcf, 0xef }, +{ 0x00, 0xd0, 0xf0 }, +{ 0x00, 0xd1, 0xf1 }, +{ 0x00, 0xd2, 0xf2 }, +{ 0x00, 0xd3, 0xf3 }, +{ 0x00, 0xd4, 0xf4 }, +{ 0x00, 0xd5, 0xf5 }, +{ 0x00, 0xd6, 0xf6 }, +{ 0x00, 0xd7, 0xf7 }, +{ 0x00, 0xd8, 0xf8 }, +{ 0x00, 0xd9, 0xf9 }, +{ 0x00, 0xda, 0xfa }, +{ 0x00, 0xdb, 0xfb }, +{ 0x00, 0xdc, 0xfc }, +{ 0x00, 0xdd, 0xfd }, +{ 0x00, 0xde, 0xfe }, +{ 0x00, 0xdf, 0xff }, +{ 0x01, 0xc0, 0xe0 }, +{ 0x01, 0xc1, 0xe1 }, +{ 0x01, 0xc2, 0xe2 }, +{ 0x01, 0xc3, 0xe3 }, +{ 0x01, 0xc4, 0xe4 }, +{ 0x01, 0xc5, 0xe5 }, +{ 0x01, 0xc6, 0xe6 }, +{ 0x01, 0xc7, 0xe7 }, +{ 0x01, 0xc8, 0xe8 }, +{ 0x01, 0xc9, 0xe9 }, +{ 0x01, 0xca, 0xea }, +{ 0x01, 0xcb, 0xeb }, +{ 0x01, 0xcc, 0xec }, +{ 0x01, 0xcd, 0xed }, +{ 0x01, 0xce, 0xee }, +{ 0x01, 0xcf, 0xef }, +{ 0x01, 0xd0, 0xf0 }, +{ 0x01, 0xd1, 0xf1 }, +{ 0x01, 0xd2, 0xf2 }, +{ 0x01, 0xd3, 0xf3 }, +{ 0x01, 0xd4, 0xf4 }, +{ 0x01, 0xd5, 0xf5 }, +{ 0x01, 0xd6, 0xf6 }, +{ 0x01, 0xd7, 0xf7 }, +{ 0x01, 0xd8, 0xf8 }, +{ 0x01, 0xd9, 0xf9 }, +{ 0x01, 0xda, 0xfa }, +{ 0x01, 0xdb, 0xfb }, +{ 0x01, 0xdc, 0xfc }, +{ 0x01, 0xdd, 0xfd }, +{ 0x01, 0xde, 0xfe }, +{ 0x01, 0xdf, 0xff } +}; + +static struct cs_info koi8u_tbl[] = { +{ 0x00, 0x00, 0x00 }, +{ 0x00, 0x01, 0x01 }, +{ 0x00, 0x02, 0x02 }, +{ 0x00, 0x03, 0x03 }, +{ 0x00, 0x04, 0x04 }, +{ 0x00, 0x05, 0x05 }, +{ 0x00, 0x06, 0x06 }, +{ 0x00, 0x07, 0x07 }, +{ 0x00, 0x08, 0x08 }, +{ 0x00, 0x09, 0x09 }, +{ 0x00, 0x0a, 0x0a }, +{ 0x00, 0x0b, 0x0b }, +{ 0x00, 0x0c, 0x0c }, +{ 0x00, 0x0d, 0x0d }, +{ 0x00, 0x0e, 0x0e }, +{ 0x00, 0x0f, 0x0f }, +{ 0x00, 0x10, 0x10 }, +{ 0x00, 0x11, 0x11 }, +{ 0x00, 0x12, 0x12 }, +{ 0x00, 0x13, 0x13 }, +{ 0x00, 0x14, 0x14 }, +{ 0x00, 0x15, 0x15 }, +{ 0x00, 0x16, 0x16 }, +{ 0x00, 0x17, 0x17 }, +{ 0x00, 0x18, 0x18 }, +{ 0x00, 0x19, 0x19 }, +{ 0x00, 0x1a, 0x1a }, +{ 0x00, 0x1b, 0x1b }, +{ 0x00, 0x1c, 0x1c }, +{ 0x00, 0x1d, 0x1d }, +{ 0x00, 0x1e, 0x1e }, +{ 0x00, 0x1f, 0x1f }, +{ 0x00, 0x20, 0x20 }, +{ 0x00, 0x21, 0x21 }, +{ 0x00, 0x22, 0x22 }, +{ 0x00, 0x23, 0x23 }, +{ 0x00, 0x24, 0x24 }, +{ 0x00, 0x25, 0x25 }, +{ 0x00, 0x26, 0x26 }, +{ 0x00, 0x27, 0x27 }, +{ 0x00, 0x28, 0x28 }, +{ 0x00, 0x29, 0x29 }, +{ 0x00, 0x2a, 0x2a }, +{ 0x00, 0x2b, 0x2b }, +{ 0x00, 0x2c, 0x2c }, +{ 0x00, 0x2d, 0x2d }, +{ 0x00, 0x2e, 0x2e }, +{ 0x00, 0x2f, 0x2f }, +{ 0x00, 0x30, 0x30 }, +{ 0x00, 0x31, 0x31 }, +{ 0x00, 0x32, 0x32 }, +{ 0x00, 0x33, 0x33 }, +{ 0x00, 0x34, 0x34 }, +{ 0x00, 0x35, 0x35 }, +{ 0x00, 0x36, 0x36 }, +{ 0x00, 0x37, 0x37 }, +{ 0x00, 0x38, 0x38 }, +{ 0x00, 0x39, 0x39 }, +{ 0x00, 0x3a, 0x3a }, +{ 0x00, 0x3b, 0x3b }, +{ 0x00, 0x3c, 0x3c }, +{ 0x00, 0x3d, 0x3d }, +{ 0x00, 0x3e, 0x3e }, +{ 0x00, 0x3f, 0x3f }, +{ 0x00, 0x40, 0x40 }, +{ 0x01, 0x61, 0x41 }, +{ 0x01, 0x62, 0x42 }, +{ 0x01, 0x63, 0x43 }, +{ 0x01, 0x64, 0x44 }, +{ 0x01, 0x65, 0x45 }, +{ 0x01, 0x66, 0x46 }, +{ 0x01, 0x67, 0x47 }, +{ 0x01, 0x68, 0x48 }, +{ 0x01, 0x69, 0x49 }, +{ 0x01, 0x6a, 0x4a }, +{ 0x01, 0x6b, 0x4b }, +{ 0x01, 0x6c, 0x4c }, +{ 0x01, 0x6d, 0x4d }, +{ 0x01, 0x6e, 0x4e }, +{ 0x01, 0x6f, 0x4f }, +{ 0x01, 0x70, 0x50 }, +{ 0x01, 0x71, 0x51 }, +{ 0x01, 0x72, 0x52 }, +{ 0x01, 0x73, 0x53 }, +{ 0x01, 0x74, 0x54 }, +{ 0x01, 0x75, 0x55 }, +{ 0x01, 0x76, 0x56 }, +{ 0x01, 0x77, 0x57 }, +{ 0x01, 0x78, 0x58 }, +{ 0x01, 0x79, 0x59 }, +{ 0x01, 0x7a, 0x5a }, +{ 0x00, 0x5b, 0x5b }, +{ 0x00, 0x5c, 0x5c }, +{ 0x00, 0x5d, 0x5d }, +{ 0x00, 0x5e, 0x5e }, +{ 0x00, 0x5f, 0x5f }, +{ 0x00, 0x60, 0x60 }, +{ 0x00, 0x61, 0x41 }, +{ 0x00, 0x62, 0x42 }, +{ 0x00, 0x63, 0x43 }, +{ 0x00, 0x64, 0x44 }, +{ 0x00, 0x65, 0x45 }, +{ 0x00, 0x66, 0x46 }, +{ 0x00, 0x67, 0x47 }, +{ 0x00, 0x68, 0x48 }, +{ 0x00, 0x69, 0x49 }, +{ 0x00, 0x6a, 0x4a }, +{ 0x00, 0x6b, 0x4b }, +{ 0x00, 0x6c, 0x4c }, +{ 0x00, 0x6d, 0x4d }, +{ 0x00, 0x6e, 0x4e }, +{ 0x00, 0x6f, 0x4f }, +{ 0x00, 0x70, 0x50 }, +{ 0x00, 0x71, 0x51 }, +{ 0x00, 0x72, 0x52 }, +{ 0x00, 0x73, 0x53 }, +{ 0x00, 0x74, 0x54 }, +{ 0x00, 0x75, 0x55 }, +{ 0x00, 0x76, 0x56 }, +{ 0x00, 0x77, 0x57 }, +{ 0x00, 0x78, 0x58 }, +{ 0x00, 0x79, 0x59 }, +{ 0x00, 0x7a, 0x5a }, +{ 0x00, 0x7b, 0x7b }, +{ 0x00, 0x7c, 0x7c }, +{ 0x00, 0x7d, 0x7d }, +{ 0x00, 0x7e, 0x7e }, +{ 0x00, 0x7f, 0x7f }, +{ 0x00, 0x80, 0x80 }, +{ 0x00, 0x81, 0x81 }, +{ 0x00, 0x82, 0x82 }, +{ 0x00, 0x83, 0x83 }, +{ 0x00, 0x84, 0x84 }, +{ 0x00, 0x85, 0x85 }, +{ 0x00, 0x86, 0x86 }, +{ 0x00, 0x87, 0x87 }, +{ 0x00, 0x88, 0x88 }, +{ 0x00, 0x89, 0x89 }, +{ 0x00, 0x8a, 0x8a }, +{ 0x00, 0x8b, 0x8b }, +{ 0x00, 0x8c, 0x8c }, +{ 0x00, 0x8d, 0x8d }, +{ 0x00, 0x8e, 0x8e }, +{ 0x00, 0x8f, 0x8f }, +{ 0x00, 0x90, 0x90 }, +{ 0x00, 0x91, 0x91 }, +{ 0x00, 0x92, 0x92 }, +{ 0x00, 0x93, 0x93 }, +{ 0x00, 0x94, 0x94 }, +{ 0x00, 0x95, 0x95 }, +{ 0x00, 0x96, 0x96 }, +{ 0x00, 0x97, 0x97 }, +{ 0x00, 0x98, 0x98 }, +{ 0x00, 0x99, 0x99 }, +{ 0x00, 0x9a, 0x9a }, +{ 0x00, 0x9b, 0x9b }, +{ 0x00, 0x9c, 0x9c }, +{ 0x00, 0x9d, 0x9d }, +{ 0x00, 0x9e, 0x9e }, +{ 0x00, 0x9f, 0x9f }, +{ 0x00, 0xa0, 0xa0 }, +{ 0x00, 0xa1, 0xa1 }, +{ 0x00, 0xa2, 0xa2 }, +{ 0x00, 0xa3, 0xb3 }, +{ 0x00, 0xa4, 0xb4 }, /* ie */ +{ 0x00, 0xa5, 0xa5 }, +{ 0x00, 0xa6, 0xb6 }, /* i */ +{ 0x00, 0xa7, 0xb7 }, /* ii */ +{ 0x00, 0xa8, 0xa8 }, +{ 0x00, 0xa9, 0xa9 }, +{ 0x00, 0xaa, 0xaa }, +{ 0x00, 0xab, 0xab }, +{ 0x00, 0xac, 0xac }, +{ 0x00, 0xad, 0xbd }, /* g'' */ +{ 0x00, 0xae, 0xae }, +{ 0x00, 0xaf, 0xaf }, +{ 0x00, 0xb0, 0xb0 }, +{ 0x00, 0xb1, 0xb1 }, +{ 0x00, 0xb2, 0xb2 }, +{ 0x01, 0xa3, 0xb3 }, +{ 0x00, 0xb4, 0xb4 }, /* IE */ +{ 0x00, 0xb5, 0xb5 }, +{ 0x00, 0xb6, 0xb6 }, /* I */ +{ 0x00, 0xb7, 0xb7 }, /* II */ +{ 0x00, 0xb8, 0xb8 }, +{ 0x00, 0xb9, 0xb9 }, +{ 0x00, 0xba, 0xba }, +{ 0x00, 0xbb, 0xbb }, +{ 0x00, 0xbc, 0xbc }, +{ 0x00, 0xbd, 0xbd }, +{ 0x00, 0xbe, 0xbe }, +{ 0x00, 0xbf, 0xbf }, +{ 0x00, 0xc0, 0xe0 }, +{ 0x00, 0xc1, 0xe1 }, +{ 0x00, 0xc2, 0xe2 }, +{ 0x00, 0xc3, 0xe3 }, +{ 0x00, 0xc4, 0xe4 }, +{ 0x00, 0xc5, 0xe5 }, +{ 0x00, 0xc6, 0xe6 }, +{ 0x00, 0xc7, 0xe7 }, +{ 0x00, 0xc8, 0xe8 }, +{ 0x00, 0xc9, 0xe9 }, +{ 0x00, 0xca, 0xea }, +{ 0x00, 0xcb, 0xeb }, +{ 0x00, 0xcc, 0xec }, +{ 0x00, 0xcd, 0xed }, +{ 0x00, 0xce, 0xee }, +{ 0x00, 0xcf, 0xef }, +{ 0x00, 0xd0, 0xf0 }, +{ 0x00, 0xd1, 0xf1 }, +{ 0x00, 0xd2, 0xf2 }, +{ 0x00, 0xd3, 0xf3 }, +{ 0x00, 0xd4, 0xf4 }, +{ 0x00, 0xd5, 0xf5 }, +{ 0x00, 0xd6, 0xf6 }, +{ 0x00, 0xd7, 0xf7 }, +{ 0x00, 0xd8, 0xf8 }, +{ 0x00, 0xd9, 0xf9 }, +{ 0x00, 0xda, 0xfa }, +{ 0x00, 0xdb, 0xfb }, +{ 0x00, 0xdc, 0xfc }, +{ 0x00, 0xdd, 0xfd }, +{ 0x00, 0xde, 0xfe }, +{ 0x00, 0xdf, 0xff }, +{ 0x01, 0xc0, 0xe0 }, +{ 0x01, 0xc1, 0xe1 }, +{ 0x01, 0xc2, 0xe2 }, +{ 0x01, 0xc3, 0xe3 }, +{ 0x01, 0xc4, 0xe4 }, +{ 0x01, 0xc5, 0xe5 }, +{ 0x01, 0xc6, 0xe6 }, +{ 0x01, 0xc7, 0xe7 }, +{ 0x01, 0xc8, 0xe8 }, +{ 0x01, 0xc9, 0xe9 }, +{ 0x01, 0xca, 0xea }, +{ 0x01, 0xcb, 0xeb }, +{ 0x01, 0xcc, 0xec }, +{ 0x01, 0xcd, 0xed }, +{ 0x01, 0xce, 0xee }, +{ 0x01, 0xcf, 0xef }, +{ 0x01, 0xd0, 0xf0 }, +{ 0x01, 0xd1, 0xf1 }, +{ 0x01, 0xd2, 0xf2 }, +{ 0x01, 0xd3, 0xf3 }, +{ 0x01, 0xd4, 0xf4 }, +{ 0x01, 0xd5, 0xf5 }, +{ 0x01, 0xd6, 0xf6 }, +{ 0x01, 0xd7, 0xf7 }, +{ 0x01, 0xd8, 0xf8 }, +{ 0x01, 0xd9, 0xf9 }, +{ 0x01, 0xda, 0xfa }, +{ 0x01, 0xdb, 0xfb }, +{ 0x01, 0xdc, 0xfc }, +{ 0x01, 0xdd, 0xfd }, +{ 0x01, 0xde, 0xfe }, +{ 0x01, 0xdf, 0xff } +}; + +static struct cs_info cp1251_tbl[] = { +{ 0x00, 0x00, 0x00 }, +{ 0x00, 0x01, 0x01 }, +{ 0x00, 0x02, 0x02 }, +{ 0x00, 0x03, 0x03 }, +{ 0x00, 0x04, 0x04 }, +{ 0x00, 0x05, 0x05 }, +{ 0x00, 0x06, 0x06 }, +{ 0x00, 0x07, 0x07 }, +{ 0x00, 0x08, 0x08 }, +{ 0x00, 0x09, 0x09 }, +{ 0x00, 0x0a, 0x0a }, +{ 0x00, 0x0b, 0x0b }, +{ 0x00, 0x0c, 0x0c }, +{ 0x00, 0x0d, 0x0d }, +{ 0x00, 0x0e, 0x0e }, +{ 0x00, 0x0f, 0x0f }, +{ 0x00, 0x10, 0x10 }, +{ 0x00, 0x11, 0x11 }, +{ 0x00, 0x12, 0x12 }, +{ 0x00, 0x13, 0x13 }, +{ 0x00, 0x14, 0x14 }, +{ 0x00, 0x15, 0x15 }, +{ 0x00, 0x16, 0x16 }, +{ 0x00, 0x17, 0x17 }, +{ 0x00, 0x18, 0x18 }, +{ 0x00, 0x19, 0x19 }, +{ 0x00, 0x1a, 0x1a }, +{ 0x00, 0x1b, 0x1b }, +{ 0x00, 0x1c, 0x1c }, +{ 0x00, 0x1d, 0x1d }, +{ 0x00, 0x1e, 0x1e }, +{ 0x00, 0x1f, 0x1f }, +{ 0x00, 0x20, 0x20 }, +{ 0x00, 0x21, 0x21 }, +{ 0x00, 0x22, 0x22 }, +{ 0x00, 0x23, 0x23 }, +{ 0x00, 0x24, 0x24 }, +{ 0x00, 0x25, 0x25 }, +{ 0x00, 0x26, 0x26 }, +{ 0x00, 0x27, 0x27 }, +{ 0x00, 0x28, 0x28 }, +{ 0x00, 0x29, 0x29 }, +{ 0x00, 0x2a, 0x2a }, +{ 0x00, 0x2b, 0x2b }, +{ 0x00, 0x2c, 0x2c }, +{ 0x00, 0x2d, 0x2d }, +{ 0x00, 0x2e, 0x2e }, +{ 0x00, 0x2f, 0x2f }, +{ 0x00, 0x30, 0x30 }, +{ 0x00, 0x31, 0x31 }, +{ 0x00, 0x32, 0x32 }, +{ 0x00, 0x33, 0x33 }, +{ 0x00, 0x34, 0x34 }, +{ 0x00, 0x35, 0x35 }, +{ 0x00, 0x36, 0x36 }, +{ 0x00, 0x37, 0x37 }, +{ 0x00, 0x38, 0x38 }, +{ 0x00, 0x39, 0x39 }, +{ 0x00, 0x3a, 0x3a }, +{ 0x00, 0x3b, 0x3b }, +{ 0x00, 0x3c, 0x3c }, +{ 0x00, 0x3d, 0x3d }, +{ 0x00, 0x3e, 0x3e }, +{ 0x00, 0x3f, 0x3f }, +{ 0x00, 0x40, 0x40 }, +{ 0x01, 0x61, 0x41 }, +{ 0x01, 0x62, 0x42 }, +{ 0x01, 0x63, 0x43 }, +{ 0x01, 0x64, 0x44 }, +{ 0x01, 0x65, 0x45 }, +{ 0x01, 0x66, 0x46 }, +{ 0x01, 0x67, 0x47 }, +{ 0x01, 0x68, 0x48 }, +{ 0x01, 0x69, 0x49 }, +{ 0x01, 0x6a, 0x4a }, +{ 0x01, 0x6b, 0x4b }, +{ 0x01, 0x6c, 0x4c }, +{ 0x01, 0x6d, 0x4d }, +{ 0x01, 0x6e, 0x4e }, +{ 0x01, 0x6f, 0x4f }, +{ 0x01, 0x70, 0x50 }, +{ 0x01, 0x71, 0x51 }, +{ 0x01, 0x72, 0x52 }, +{ 0x01, 0x73, 0x53 }, +{ 0x01, 0x74, 0x54 }, +{ 0x01, 0x75, 0x55 }, +{ 0x01, 0x76, 0x56 }, +{ 0x01, 0x77, 0x57 }, +{ 0x01, 0x78, 0x58 }, +{ 0x01, 0x79, 0x59 }, +{ 0x01, 0x7a, 0x5a }, +{ 0x00, 0x5b, 0x5b }, +{ 0x00, 0x5c, 0x5c }, +{ 0x00, 0x5d, 0x5d }, +{ 0x00, 0x5e, 0x5e }, +{ 0x00, 0x5f, 0x5f }, +{ 0x00, 0x60, 0x60 }, +{ 0x00, 0x61, 0x41 }, +{ 0x00, 0x62, 0x42 }, +{ 0x00, 0x63, 0x43 }, +{ 0x00, 0x64, 0x44 }, +{ 0x00, 0x65, 0x45 }, +{ 0x00, 0x66, 0x46 }, +{ 0x00, 0x67, 0x47 }, +{ 0x00, 0x68, 0x48 }, +{ 0x00, 0x69, 0x49 }, +{ 0x00, 0x6a, 0x4a }, +{ 0x00, 0x6b, 0x4b }, +{ 0x00, 0x6c, 0x4c }, +{ 0x00, 0x6d, 0x4d }, +{ 0x00, 0x6e, 0x4e }, +{ 0x00, 0x6f, 0x4f }, +{ 0x00, 0x70, 0x50 }, +{ 0x00, 0x71, 0x51 }, +{ 0x00, 0x72, 0x52 }, +{ 0x00, 0x73, 0x53 }, +{ 0x00, 0x74, 0x54 }, +{ 0x00, 0x75, 0x55 }, +{ 0x00, 0x76, 0x56 }, +{ 0x00, 0x77, 0x57 }, +{ 0x00, 0x78, 0x58 }, +{ 0x00, 0x79, 0x59 }, +{ 0x00, 0x7a, 0x5a }, +{ 0x00, 0x7b, 0x7b }, +{ 0x00, 0x7c, 0x7c }, +{ 0x00, 0x7d, 0x7d }, +{ 0x00, 0x7e, 0x7e }, +{ 0x00, 0x7f, 0x7f }, +{ 0x01, 0x90, 0x80 }, +{ 0x01, 0x83, 0x81 }, +{ 0x00, 0x82, 0x82 }, +{ 0x00, 0x83, 0x81 }, +{ 0x00, 0x84, 0x84 }, +{ 0x00, 0x85, 0x85 }, +{ 0x00, 0x86, 0x86 }, +{ 0x00, 0x87, 0x87 }, +{ 0x00, 0x88, 0x88 }, +{ 0x00, 0x89, 0x89 }, +{ 0x01, 0x9a, 0x8a }, +{ 0x00, 0x8b, 0x8b }, +{ 0x01, 0x9c, 0x8c }, +{ 0x01, 0x9d, 0x8d }, +{ 0x01, 0x9e, 0x8e }, +{ 0x01, 0x9f, 0x8f }, +{ 0x00, 0x90, 0x80 }, +{ 0x00, 0x91, 0x91 }, +{ 0x00, 0x92, 0x92 }, +{ 0x00, 0x93, 0x93 }, +{ 0x00, 0x94, 0x94 }, +{ 0x00, 0x95, 0x95 }, +{ 0x00, 0x96, 0x96 }, +{ 0x00, 0x97, 0x97 }, +{ 0x00, 0x98, 0x98 }, +{ 0x00, 0x99, 0x99 }, +{ 0x00, 0x9a, 0x8a }, +{ 0x00, 0x9b, 0x9b }, +{ 0x00, 0x9c, 0x8c }, +{ 0x00, 0x9d, 0x8d }, +{ 0x00, 0x9e, 0x8e }, +{ 0x00, 0x9f, 0x8f }, +{ 0x00, 0xa0, 0xa0 }, +{ 0x01, 0xa2, 0xa1 }, +{ 0x00, 0xa2, 0xa1 }, +{ 0x01, 0xbc, 0xa3 }, +{ 0x00, 0xa4, 0xa4 }, +{ 0x01, 0xb4, 0xa5 }, +{ 0x00, 0xa6, 0xa6 }, +{ 0x00, 0xa7, 0xa7 }, +{ 0x01, 0xb8, 0xa8 }, +{ 0x00, 0xa9, 0xa9 }, +{ 0x01, 0xba, 0xaa }, +{ 0x00, 0xab, 0xab }, +{ 0x00, 0xac, 0xac }, +{ 0x00, 0xad, 0xad }, +{ 0x00, 0xae, 0xae }, +{ 0x01, 0xbf, 0xaf }, +{ 0x00, 0xb0, 0xb0 }, +{ 0x00, 0xb1, 0xb1 }, +{ 0x01, 0xb3, 0xb2 }, +{ 0x00, 0xb3, 0xb2 }, +{ 0x00, 0xb4, 0xa5 }, +{ 0x00, 0xb5, 0xb5 }, +{ 0x00, 0xb6, 0xb6 }, +{ 0x00, 0xb7, 0xb7 }, +{ 0x00, 0xb8, 0xa8 }, +{ 0x00, 0xb9, 0xb9 }, +{ 0x00, 0xba, 0xaa }, +{ 0x00, 0xbb, 0xbb }, +{ 0x00, 0xbc, 0xa3 }, +{ 0x01, 0xbe, 0xbd }, +{ 0x00, 0xbe, 0xbd }, +{ 0x00, 0xbf, 0xaf }, +{ 0x01, 0xe0, 0xc0 }, +{ 0x01, 0xe1, 0xc1 }, +{ 0x01, 0xe2, 0xc2 }, +{ 0x01, 0xe3, 0xc3 }, +{ 0x01, 0xe4, 0xc4 }, +{ 0x01, 0xe5, 0xc5 }, +{ 0x01, 0xe6, 0xc6 }, +{ 0x01, 0xe7, 0xc7 }, +{ 0x01, 0xe8, 0xc8 }, +{ 0x01, 0xe9, 0xc9 }, +{ 0x01, 0xea, 0xca }, +{ 0x01, 0xeb, 0xcb }, +{ 0x01, 0xec, 0xcc }, +{ 0x01, 0xed, 0xcd }, +{ 0x01, 0xee, 0xce }, +{ 0x01, 0xef, 0xcf }, +{ 0x01, 0xf0, 0xd0 }, +{ 0x01, 0xf1, 0xd1 }, +{ 0x01, 0xf2, 0xd2 }, +{ 0x01, 0xf3, 0xd3 }, +{ 0x01, 0xf4, 0xd4 }, +{ 0x01, 0xf5, 0xd5 }, +{ 0x01, 0xf6, 0xd6 }, +{ 0x01, 0xf7, 0xd7 }, +{ 0x01, 0xf8, 0xd8 }, +{ 0x01, 0xf9, 0xd9 }, +{ 0x01, 0xfa, 0xda }, +{ 0x01, 0xfb, 0xdb }, +{ 0x01, 0xfc, 0xdc }, +{ 0x01, 0xfd, 0xdd }, +{ 0x01, 0xfe, 0xde }, +{ 0x01, 0xff, 0xdf }, +{ 0x00, 0xe0, 0xc0 }, +{ 0x00, 0xe1, 0xc1 }, +{ 0x00, 0xe2, 0xc2 }, +{ 0x00, 0xe3, 0xc3 }, +{ 0x00, 0xe4, 0xc4 }, +{ 0x00, 0xe5, 0xc5 }, +{ 0x00, 0xe6, 0xc6 }, +{ 0x00, 0xe7, 0xc7 }, +{ 0x00, 0xe8, 0xc8 }, +{ 0x00, 0xe9, 0xc9 }, +{ 0x00, 0xea, 0xca }, +{ 0x00, 0xeb, 0xcb }, +{ 0x00, 0xec, 0xcc }, +{ 0x00, 0xed, 0xcd }, +{ 0x00, 0xee, 0xce }, +{ 0x00, 0xef, 0xcf }, +{ 0x00, 0xf0, 0xd0 }, +{ 0x00, 0xf1, 0xd1 }, +{ 0x00, 0xf2, 0xd2 }, +{ 0x00, 0xf3, 0xd3 }, +{ 0x00, 0xf4, 0xd4 }, +{ 0x00, 0xf5, 0xd5 }, +{ 0x00, 0xf6, 0xd6 }, +{ 0x00, 0xf7, 0xd7 }, +{ 0x00, 0xf8, 0xd8 }, +{ 0x00, 0xf9, 0xd9 }, +{ 0x00, 0xfa, 0xda }, +{ 0x00, 0xfb, 0xdb }, +{ 0x00, 0xfc, 0xdc }, +{ 0x00, 0xfd, 0xdd }, +{ 0x00, 0xfe, 0xde }, +{ 0x00, 0xff, 0xdf } +}; + +static struct cs_info iso13_tbl[] = { +{ 0x00, 0x00, 0x00 }, +{ 0x00, 0x01, 0x01 }, +{ 0x00, 0x02, 0x02 }, +{ 0x00, 0x03, 0x03 }, +{ 0x00, 0x04, 0x04 }, +{ 0x00, 0x05, 0x05 }, +{ 0x00, 0x06, 0x06 }, +{ 0x00, 0x07, 0x07 }, +{ 0x00, 0x08, 0x08 }, +{ 0x00, 0x09, 0x09 }, +{ 0x00, 0x0A, 0x0A }, +{ 0x00, 0x0B, 0x0B }, +{ 0x00, 0x0C, 0x0C }, +{ 0x00, 0x0D, 0x0D }, +{ 0x00, 0x0E, 0x0E }, +{ 0x00, 0x0F, 0x0F }, +{ 0x00, 0x10, 0x10 }, +{ 0x00, 0x11, 0x11 }, +{ 0x00, 0x12, 0x12 }, +{ 0x00, 0x13, 0x13 }, +{ 0x00, 0x14, 0x14 }, +{ 0x00, 0x15, 0x15 }, +{ 0x00, 0x16, 0x16 }, +{ 0x00, 0x17, 0x17 }, +{ 0x00, 0x18, 0x18 }, +{ 0x00, 0x19, 0x19 }, +{ 0x00, 0x1A, 0x1A }, +{ 0x00, 0x1B, 0x1B }, +{ 0x00, 0x1C, 0x1C }, +{ 0x00, 0x1D, 0x1D }, +{ 0x00, 0x1E, 0x1E }, +{ 0x00, 0x1F, 0x1F }, +{ 0x00, 0x20, 0x20 }, +{ 0x00, 0x21, 0x21 }, +{ 0x00, 0x22, 0x22 }, +{ 0x00, 0x23, 0x23 }, +{ 0x00, 0x24, 0x24 }, +{ 0x00, 0x25, 0x25 }, +{ 0x00, 0x26, 0x26 }, +{ 0x00, 0x27, 0x27 }, +{ 0x00, 0x28, 0x28 }, +{ 0x00, 0x29, 0x29 }, +{ 0x00, 0x2A, 0x2A }, +{ 0x00, 0x2B, 0x2B }, +{ 0x00, 0x2C, 0x2C }, +{ 0x00, 0x2D, 0x2D }, +{ 0x00, 0x2E, 0x2E }, +{ 0x00, 0x2F, 0x2F }, +{ 0x00, 0x30, 0x30 }, +{ 0x00, 0x31, 0x31 }, +{ 0x00, 0x32, 0x32 }, +{ 0x00, 0x33, 0x33 }, +{ 0x00, 0x34, 0x34 }, +{ 0x00, 0x35, 0x35 }, +{ 0x00, 0x36, 0x36 }, +{ 0x00, 0x37, 0x37 }, +{ 0x00, 0x38, 0x38 }, +{ 0x00, 0x39, 0x39 }, +{ 0x00, 0x3A, 0x3A }, +{ 0x00, 0x3B, 0x3B }, +{ 0x00, 0x3C, 0x3C }, +{ 0x00, 0x3D, 0x3D }, +{ 0x00, 0x3E, 0x3E }, +{ 0x00, 0x3F, 0x3F }, +{ 0x00, 0x40, 0x40 }, +{ 0x01, 0x61, 0x41 }, +{ 0x01, 0x62, 0x42 }, +{ 0x01, 0x63, 0x43 }, +{ 0x01, 0x64, 0x44 }, +{ 0x01, 0x65, 0x45 }, +{ 0x01, 0x66, 0x46 }, +{ 0x01, 0x67, 0x47 }, +{ 0x01, 0x68, 0x48 }, +{ 0x01, 0x69, 0x49 }, +{ 0x01, 0x6A, 0x4A }, +{ 0x01, 0x6B, 0x4B }, +{ 0x01, 0x6C, 0x4C }, +{ 0x01, 0x6D, 0x4D }, +{ 0x01, 0x6E, 0x4E }, +{ 0x01, 0x6F, 0x4F }, +{ 0x01, 0x70, 0x50 }, +{ 0x01, 0x71, 0x51 }, +{ 0x01, 0x72, 0x52 }, +{ 0x01, 0x73, 0x53 }, +{ 0x01, 0x74, 0x54 }, +{ 0x01, 0x75, 0x55 }, +{ 0x01, 0x76, 0x56 }, +{ 0x01, 0x77, 0x57 }, +{ 0x01, 0x78, 0x58 }, +{ 0x01, 0x79, 0x59 }, +{ 0x01, 0x7A, 0x5A }, +{ 0x00, 0x5B, 0x5B }, +{ 0x00, 0x5C, 0x5C }, +{ 0x00, 0x5D, 0x5D }, +{ 0x00, 0x5E, 0x5E }, +{ 0x00, 0x5F, 0x5F }, +{ 0x00, 0x60, 0x60 }, +{ 0x00, 0x61, 0x41 }, +{ 0x00, 0x62, 0x42 }, +{ 0x00, 0x63, 0x43 }, +{ 0x00, 0x64, 0x44 }, +{ 0x00, 0x65, 0x45 }, +{ 0x00, 0x66, 0x46 }, +{ 0x00, 0x67, 0x47 }, +{ 0x00, 0x68, 0x48 }, +{ 0x00, 0x69, 0x49 }, +{ 0x00, 0x6A, 0x4A }, +{ 0x00, 0x6B, 0x4B }, +{ 0x00, 0x6C, 0x4C }, +{ 0x00, 0x6D, 0x4D }, +{ 0x00, 0x6E, 0x4E }, +{ 0x00, 0x6F, 0x4F }, +{ 0x00, 0x70, 0x50 }, +{ 0x00, 0x71, 0x51 }, +{ 0x00, 0x72, 0x52 }, +{ 0x00, 0x73, 0x53 }, +{ 0x00, 0x74, 0x54 }, +{ 0x00, 0x75, 0x55 }, +{ 0x00, 0x76, 0x56 }, +{ 0x00, 0x77, 0x57 }, +{ 0x00, 0x78, 0x58 }, +{ 0x00, 0x79, 0x59 }, +{ 0x00, 0x7A, 0x5A }, +{ 0x00, 0x7B, 0x7B }, +{ 0x00, 0x7C, 0x7C }, +{ 0x00, 0x7D, 0x7D }, +{ 0x00, 0x7E, 0x7E }, +{ 0x00, 0x7F, 0x7F }, +{ 0x00, 0x80, 0x80 }, +{ 0x00, 0x81, 0x81 }, +{ 0x00, 0x82, 0x82 }, +{ 0x00, 0x83, 0x83 }, +{ 0x00, 0x84, 0x84 }, +{ 0x00, 0x85, 0x85 }, +{ 0x00, 0x86, 0x86 }, +{ 0x00, 0x87, 0x87 }, +{ 0x00, 0x88, 0x88 }, +{ 0x00, 0x89, 0x89 }, +{ 0x00, 0x8A, 0x8A }, +{ 0x00, 0x8B, 0x8B }, +{ 0x00, 0x8C, 0x8C }, +{ 0x00, 0x8D, 0x8D }, +{ 0x00, 0x8E, 0x8E }, +{ 0x00, 0x8F, 0x8F }, +{ 0x00, 0x90, 0x90 }, +{ 0x00, 0x91, 0x91 }, +{ 0x00, 0x92, 0x92 }, +{ 0x00, 0x93, 0x93 }, +{ 0x00, 0x94, 0x94 }, +{ 0x00, 0x95, 0x95 }, +{ 0x00, 0x96, 0x96 }, +{ 0x00, 0x97, 0x97 }, +{ 0x00, 0x98, 0x98 }, +{ 0x00, 0x99, 0x99 }, +{ 0x00, 0x9A, 0x9A }, +{ 0x00, 0x9B, 0x9B }, +{ 0x00, 0x9C, 0x9C }, +{ 0x00, 0x9D, 0x9D }, +{ 0x00, 0x9E, 0x9E }, +{ 0x00, 0x9F, 0x9F }, +{ 0x00, 0xA0, 0xA0 }, +{ 0x00, 0xA1, 0xA1 }, +{ 0x00, 0xA2, 0xA2 }, +{ 0x00, 0xA3, 0xA3 }, +{ 0x00, 0xA4, 0xA4 }, +{ 0x00, 0xA5, 0xA5 }, +{ 0x00, 0xA6, 0xA6 }, +{ 0x00, 0xA7, 0xA7 }, +{ 0x01, 0xB8, 0xA8 }, +{ 0x00, 0xA9, 0xA9 }, +{ 0x01, 0xBA, 0xAA }, +{ 0x00, 0xAB, 0xAB }, +{ 0x00, 0xAC, 0xAC }, +{ 0x00, 0xAD, 0xAD }, +{ 0x00, 0xAE, 0xAE }, +{ 0x01, 0xBF, 0xAF }, +{ 0x00, 0xB0, 0xB0 }, +{ 0x00, 0xB1, 0xB1 }, +{ 0x00, 0xB2, 0xB2 }, +{ 0x00, 0xB3, 0xB3 }, +{ 0x00, 0xB4, 0xB4 }, +{ 0x00, 0xB5, 0xB5 }, +{ 0x00, 0xB6, 0xB6 }, +{ 0x00, 0xB7, 0xB7 }, +{ 0x00, 0xB8, 0xA8 }, +{ 0x00, 0xB9, 0xB9 }, +{ 0x00, 0xBA, 0xAA }, +{ 0x00, 0xBB, 0xBB }, +{ 0x00, 0xBC, 0xBC }, +{ 0x00, 0xBD, 0xBD }, +{ 0x00, 0xBE, 0xBE }, +{ 0x00, 0xBF, 0xAF }, +{ 0x01, 0xE0, 0xC0 }, +{ 0x01, 0xE1, 0xC1 }, +{ 0x01, 0xE2, 0xC2 }, +{ 0x01, 0xE3, 0xC3 }, +{ 0x01, 0xE4, 0xC4 }, +{ 0x01, 0xE5, 0xC5 }, +{ 0x01, 0xE6, 0xC6 }, +{ 0x01, 0xE7, 0xC7 }, +{ 0x01, 0xE8, 0xC8 }, +{ 0x01, 0xE9, 0xC9 }, +{ 0x01, 0xEA, 0xCA }, +{ 0x01, 0xEB, 0xCB }, +{ 0x01, 0xEC, 0xCC }, +{ 0x01, 0xED, 0xCD }, +{ 0x01, 0xEE, 0xCE }, +{ 0x01, 0xEF, 0xCF }, +{ 0x01, 0xF0, 0xD0 }, +{ 0x01, 0xF1, 0xD1 }, +{ 0x01, 0xF2, 0xD2 }, +{ 0x01, 0xF3, 0xD3 }, +{ 0x01, 0xF4, 0xD4 }, +{ 0x01, 0xF5, 0xD5 }, +{ 0x01, 0xF6, 0xD6 }, +{ 0x00, 0xD7, 0xD7 }, +{ 0x01, 0xF8, 0xD8 }, +{ 0x01, 0xF9, 0xD9 }, +{ 0x01, 0xFA, 0xDA }, +{ 0x01, 0xFB, 0xDB }, +{ 0x01, 0xFC, 0xDC }, +{ 0x01, 0xFD, 0xDD }, +{ 0x01, 0xFE, 0xDE }, +{ 0x00, 0xDF, 0xDF }, +{ 0x00, 0xE0, 0xC0 }, +{ 0x00, 0xE1, 0xC1 }, +{ 0x00, 0xE2, 0xC2 }, +{ 0x00, 0xE3, 0xC3 }, +{ 0x00, 0xE4, 0xC4 }, +{ 0x00, 0xE5, 0xC5 }, +{ 0x00, 0xE6, 0xC6 }, +{ 0x00, 0xE7, 0xC7 }, +{ 0x00, 0xE8, 0xC8 }, +{ 0x00, 0xE9, 0xC9 }, +{ 0x00, 0xEA, 0xCA }, +{ 0x00, 0xEB, 0xCB }, +{ 0x00, 0xEC, 0xCC }, +{ 0x00, 0xED, 0xCD }, +{ 0x00, 0xEE, 0xCE }, +{ 0x00, 0xEF, 0xCF }, +{ 0x00, 0xF0, 0xD0 }, +{ 0x00, 0xF1, 0xD1 }, +{ 0x00, 0xF2, 0xD2 }, +{ 0x00, 0xF3, 0xD3 }, +{ 0x00, 0xF4, 0xD4 }, +{ 0x00, 0xF5, 0xD5 }, +{ 0x00, 0xF6, 0xD6 }, +{ 0x00, 0xF7, 0xF7 }, +{ 0x00, 0xF8, 0xD8 }, +{ 0x00, 0xF9, 0xD9 }, +{ 0x00, 0xFA, 0xDA }, +{ 0x00, 0xFB, 0xDB }, +{ 0x00, 0xFC, 0xDC }, +{ 0x00, 0xFD, 0xDD }, +{ 0x00, 0xFE, 0xDE }, +{ 0x00, 0xFF, 0xFF } +}; + + +static struct cs_info iso14_tbl[] = { +{ 0x00, 0x00, 0x00 }, +{ 0x00, 0x01, 0x01 }, +{ 0x00, 0x02, 0x02 }, +{ 0x00, 0x03, 0x03 }, +{ 0x00, 0x04, 0x04 }, +{ 0x00, 0x05, 0x05 }, +{ 0x00, 0x06, 0x06 }, +{ 0x00, 0x07, 0x07 }, +{ 0x00, 0x08, 0x08 }, +{ 0x00, 0x09, 0x09 }, +{ 0x00, 0x0a, 0x0a }, +{ 0x00, 0x0b, 0x0b }, +{ 0x00, 0x0c, 0x0c }, +{ 0x00, 0x0d, 0x0d }, +{ 0x00, 0x0e, 0x0e }, +{ 0x00, 0x0f, 0x0f }, +{ 0x00, 0x10, 0x10 }, +{ 0x00, 0x11, 0x11 }, +{ 0x00, 0x12, 0x12 }, +{ 0x00, 0x13, 0x13 }, +{ 0x00, 0x14, 0x14 }, +{ 0x00, 0x15, 0x15 }, +{ 0x00, 0x16, 0x16 }, +{ 0x00, 0x17, 0x17 }, +{ 0x00, 0x18, 0x18 }, +{ 0x00, 0x19, 0x19 }, +{ 0x00, 0x1a, 0x1a }, +{ 0x00, 0x1b, 0x1b }, +{ 0x00, 0x1c, 0x1c }, +{ 0x00, 0x1d, 0x1d }, +{ 0x00, 0x1e, 0x1e }, +{ 0x00, 0x1f, 0x1f }, +{ 0x00, 0x20, 0x20 }, +{ 0x00, 0x21, 0x21 }, +{ 0x00, 0x22, 0x22 }, +{ 0x00, 0x23, 0x23 }, +{ 0x00, 0x24, 0x24 }, +{ 0x00, 0x25, 0x25 }, +{ 0x00, 0x26, 0x26 }, +{ 0x00, 0x27, 0x27 }, +{ 0x00, 0x28, 0x28 }, +{ 0x00, 0x29, 0x29 }, +{ 0x00, 0x2a, 0x2a }, +{ 0x00, 0x2b, 0x2b }, +{ 0x00, 0x2c, 0x2c }, +{ 0x00, 0x2d, 0x2d }, +{ 0x00, 0x2e, 0x2e }, +{ 0x00, 0x2f, 0x2f }, +{ 0x00, 0x30, 0x30 }, +{ 0x00, 0x31, 0x31 }, +{ 0x00, 0x32, 0x32 }, +{ 0x00, 0x33, 0x33 }, +{ 0x00, 0x34, 0x34 }, +{ 0x00, 0x35, 0x35 }, +{ 0x00, 0x36, 0x36 }, +{ 0x00, 0x37, 0x37 }, +{ 0x00, 0x38, 0x38 }, +{ 0x00, 0x39, 0x39 }, +{ 0x00, 0x3a, 0x3a }, +{ 0x00, 0x3b, 0x3b }, +{ 0x00, 0x3c, 0x3c }, +{ 0x00, 0x3d, 0x3d }, +{ 0x00, 0x3e, 0x3e }, +{ 0x00, 0x3f, 0x3f }, +{ 0x00, 0x40, 0x40 }, +{ 0x01, 0x61, 0x41 }, +{ 0x01, 0x62, 0x42 }, +{ 0x01, 0x63, 0x43 }, +{ 0x01, 0x64, 0x44 }, +{ 0x01, 0x65, 0x45 }, +{ 0x01, 0x66, 0x46 }, +{ 0x01, 0x67, 0x47 }, +{ 0x01, 0x68, 0x48 }, +{ 0x01, 0x69, 0x49 }, +{ 0x01, 0x6a, 0x4a }, +{ 0x01, 0x6b, 0x4b }, +{ 0x01, 0x6c, 0x4c }, +{ 0x01, 0x6d, 0x4d }, +{ 0x01, 0x6e, 0x4e }, +{ 0x01, 0x6f, 0x4f }, +{ 0x01, 0x70, 0x50 }, +{ 0x01, 0x71, 0x51 }, +{ 0x01, 0x72, 0x52 }, +{ 0x01, 0x73, 0x53 }, +{ 0x01, 0x74, 0x54 }, +{ 0x01, 0x75, 0x55 }, +{ 0x01, 0x76, 0x56 }, +{ 0x01, 0x77, 0x57 }, +{ 0x01, 0x78, 0x58 }, +{ 0x01, 0x79, 0x59 }, +{ 0x01, 0x7a, 0x5a }, +{ 0x00, 0x5b, 0x5b }, +{ 0x00, 0x5c, 0x5c }, +{ 0x00, 0x5d, 0x5d }, +{ 0x00, 0x5e, 0x5e }, +{ 0x00, 0x5f, 0x5f }, +{ 0x00, 0x60, 0x60 }, +{ 0x00, 0x61, 0x41 }, +{ 0x00, 0x62, 0x42 }, +{ 0x00, 0x63, 0x43 }, +{ 0x00, 0x64, 0x44 }, +{ 0x00, 0x65, 0x45 }, +{ 0x00, 0x66, 0x46 }, +{ 0x00, 0x67, 0x47 }, +{ 0x00, 0x68, 0x48 }, +{ 0x00, 0x69, 0x49 }, +{ 0x00, 0x6a, 0x4a }, +{ 0x00, 0x6b, 0x4b }, +{ 0x00, 0x6c, 0x4c }, +{ 0x00, 0x6d, 0x4d }, +{ 0x00, 0x6e, 0x4e }, +{ 0x00, 0x6f, 0x4f }, +{ 0x00, 0x70, 0x50 }, +{ 0x00, 0x71, 0x51 }, +{ 0x00, 0x72, 0x52 }, +{ 0x00, 0x73, 0x53 }, +{ 0x00, 0x74, 0x54 }, +{ 0x00, 0x75, 0x55 }, +{ 0x00, 0x76, 0x56 }, +{ 0x00, 0x77, 0x57 }, +{ 0x00, 0x78, 0x58 }, +{ 0x00, 0x79, 0x59 }, +{ 0x00, 0x7a, 0x5a }, +{ 0x00, 0x7b, 0x7b }, +{ 0x00, 0x7c, 0x7c }, +{ 0x00, 0x7d, 0x7d }, +{ 0x00, 0x7e, 0x7e }, +{ 0x00, 0x7f, 0x7f }, +{ 0x00, 0x80, 0x80 }, +{ 0x00, 0x81, 0x81 }, +{ 0x00, 0x82, 0x82 }, +{ 0x00, 0x83, 0x83 }, +{ 0x00, 0x84, 0x84 }, +{ 0x00, 0x85, 0x85 }, +{ 0x00, 0x86, 0x86 }, +{ 0x00, 0x87, 0x87 }, +{ 0x00, 0x88, 0x88 }, +{ 0x00, 0x89, 0x89 }, +{ 0x00, 0x8a, 0x8a }, +{ 0x00, 0x8b, 0x8b }, +{ 0x00, 0x8c, 0x8c }, +{ 0x00, 0x8d, 0x8d }, +{ 0x00, 0x8e, 0x8e }, +{ 0x00, 0x8f, 0x8f }, +{ 0x00, 0x90, 0x90 }, +{ 0x00, 0x91, 0x91 }, +{ 0x00, 0x92, 0x92 }, +{ 0x00, 0x93, 0x93 }, +{ 0x00, 0x94, 0x94 }, +{ 0x00, 0x95, 0x95 }, +{ 0x00, 0x96, 0x96 }, +{ 0x00, 0x97, 0x97 }, +{ 0x00, 0x98, 0x98 }, +{ 0x00, 0x99, 0x99 }, +{ 0x00, 0x9a, 0x9a }, +{ 0x00, 0x9b, 0x9b }, +{ 0x00, 0x9c, 0x9c }, +{ 0x00, 0x9d, 0x9d }, +{ 0x00, 0x9e, 0x9e }, +{ 0x00, 0x9f, 0x9f }, +{ 0x00, 0xa0, 0xa0 }, +{ 0x01, 0xa2, 0xa1 }, +{ 0x00, 0xa2, 0xa1 }, +{ 0x00, 0xa3, 0xa3 }, +{ 0x01, 0xa5, 0xa4 }, +{ 0x00, 0xa5, 0xa4 }, +{ 0x01, 0xa6, 0xab }, +{ 0x00, 0xa7, 0xa7 }, +{ 0x01, 0xb8, 0xa8 }, +{ 0x00, 0xa9, 0xa9 }, +{ 0x01, 0xba, 0xaa }, +{ 0x00, 0xab, 0xa6 }, +{ 0x01, 0xbc, 0xac }, +{ 0x00, 0xad, 0xad }, +{ 0x00, 0xae, 0xae }, +{ 0x01, 0xff, 0xaf }, +{ 0x01, 0xb1, 0xb0 }, +{ 0x00, 0xb1, 0xb0 }, +{ 0x01, 0xb3, 0xb2 }, +{ 0x00, 0xb3, 0xb2 }, +{ 0x01, 0xb5, 0xb4 }, +{ 0x00, 0xb5, 0xb4 }, +{ 0x00, 0xb6, 0xb6 }, +{ 0x01, 0xb9, 0xb7 }, +{ 0x00, 0xb8, 0xa8 }, +{ 0x00, 0xb9, 0xb6 }, +{ 0x00, 0xba, 0xaa }, +{ 0x01, 0xbf, 0xbb }, +{ 0x00, 0xbc, 0xac }, +{ 0x01, 0xbe, 0xbd }, +{ 0x00, 0xbe, 0xbd }, +{ 0x00, 0xbf, 0xbb }, +{ 0x01, 0xe0, 0xc0 }, +{ 0x01, 0xe1, 0xc1 }, +{ 0x01, 0xe2, 0xc2 }, +{ 0x01, 0xe3, 0xc3 }, +{ 0x01, 0xe4, 0xc4 }, +{ 0x01, 0xe5, 0xc5 }, +{ 0x01, 0xe6, 0xc6 }, +{ 0x01, 0xe7, 0xc7 }, +{ 0x01, 0xe8, 0xc8 }, +{ 0x01, 0xe9, 0xc9 }, +{ 0x01, 0xea, 0xca }, +{ 0x01, 0xeb, 0xcb }, +{ 0x01, 0xec, 0xcc }, +{ 0x01, 0xed, 0xcd }, +{ 0x01, 0xee, 0xce }, +{ 0x01, 0xef, 0xcf }, +{ 0x01, 0xf0, 0xd0 }, +{ 0x01, 0xf1, 0xd1 }, +{ 0x01, 0xf2, 0xd2 }, +{ 0x01, 0xf3, 0xd3 }, +{ 0x01, 0xf4, 0xd4 }, +{ 0x01, 0xf5, 0xd5 }, +{ 0x01, 0xf6, 0xd6 }, +{ 0x01, 0xf7, 0xd7 }, +{ 0x01, 0xf8, 0xd8 }, +{ 0x01, 0xf9, 0xd9 }, +{ 0x01, 0xfa, 0xda }, +{ 0x01, 0xfb, 0xdb }, +{ 0x01, 0xfc, 0xdc }, +{ 0x01, 0xfd, 0xdd }, +{ 0x01, 0xfe, 0xde }, +{ 0x00, 0xdf, 0xdf }, +{ 0x00, 0xe0, 0xc0 }, +{ 0x00, 0xe1, 0xc1 }, +{ 0x00, 0xe2, 0xc2 }, +{ 0x00, 0xe3, 0xc3 }, +{ 0x00, 0xe4, 0xc4 }, +{ 0x00, 0xe5, 0xc5 }, +{ 0x00, 0xe6, 0xc6 }, +{ 0x00, 0xe7, 0xc7 }, +{ 0x00, 0xe8, 0xc8 }, +{ 0x00, 0xe9, 0xc9 }, +{ 0x00, 0xea, 0xca }, +{ 0x00, 0xeb, 0xcb }, +{ 0x00, 0xec, 0xcc }, +{ 0x00, 0xed, 0xcd }, +{ 0x00, 0xee, 0xce }, +{ 0x00, 0xef, 0xcf }, +{ 0x00, 0xf0, 0xd0 }, +{ 0x00, 0xf1, 0xd1 }, +{ 0x00, 0xf2, 0xd2 }, +{ 0x00, 0xf3, 0xd3 }, +{ 0x00, 0xf4, 0xd4 }, +{ 0x00, 0xf5, 0xd5 }, +{ 0x00, 0xf6, 0xd6 }, +{ 0x00, 0xf7, 0xd7 }, +{ 0x00, 0xf8, 0xd8 }, +{ 0x00, 0xf9, 0xd9 }, +{ 0x00, 0xfa, 0xda }, +{ 0x00, 0xfb, 0xdb }, +{ 0x00, 0xfc, 0xdc }, +{ 0x00, 0xfd, 0xdd }, +{ 0x00, 0xfe, 0xde }, +{ 0x00, 0xff, 0xff } +}; + +static struct cs_info iso15_tbl[] = { +{ 0x00, 0x00, 0x00 }, +{ 0x00, 0x01, 0x01 }, +{ 0x00, 0x02, 0x02 }, +{ 0x00, 0x03, 0x03 }, +{ 0x00, 0x04, 0x04 }, +{ 0x00, 0x05, 0x05 }, +{ 0x00, 0x06, 0x06 }, +{ 0x00, 0x07, 0x07 }, +{ 0x00, 0x08, 0x08 }, +{ 0x00, 0x09, 0x09 }, +{ 0x00, 0x0a, 0x0a }, +{ 0x00, 0x0b, 0x0b }, +{ 0x00, 0x0c, 0x0c }, +{ 0x00, 0x0d, 0x0d }, +{ 0x00, 0x0e, 0x0e }, +{ 0x00, 0x0f, 0x0f }, +{ 0x00, 0x10, 0x10 }, +{ 0x00, 0x11, 0x11 }, +{ 0x00, 0x12, 0x12 }, +{ 0x00, 0x13, 0x13 }, +{ 0x00, 0x14, 0x14 }, +{ 0x00, 0x15, 0x15 }, +{ 0x00, 0x16, 0x16 }, +{ 0x00, 0x17, 0x17 }, +{ 0x00, 0x18, 0x18 }, +{ 0x00, 0x19, 0x19 }, +{ 0x00, 0x1a, 0x1a }, +{ 0x00, 0x1b, 0x1b }, +{ 0x00, 0x1c, 0x1c }, +{ 0x00, 0x1d, 0x1d }, +{ 0x00, 0x1e, 0x1e }, +{ 0x00, 0x1f, 0x1f }, +{ 0x00, 0x20, 0x20 }, +{ 0x00, 0x21, 0x21 }, +{ 0x00, 0x22, 0x22 }, +{ 0x00, 0x23, 0x23 }, +{ 0x00, 0x24, 0x24 }, +{ 0x00, 0x25, 0x25 }, +{ 0x00, 0x26, 0x26 }, +{ 0x00, 0x27, 0x27 }, +{ 0x00, 0x28, 0x28 }, +{ 0x00, 0x29, 0x29 }, +{ 0x00, 0x2a, 0x2a }, +{ 0x00, 0x2b, 0x2b }, +{ 0x00, 0x2c, 0x2c }, +{ 0x00, 0x2d, 0x2d }, +{ 0x00, 0x2e, 0x2e }, +{ 0x00, 0x2f, 0x2f }, +{ 0x00, 0x30, 0x30 }, +{ 0x00, 0x31, 0x31 }, +{ 0x00, 0x32, 0x32 }, +{ 0x00, 0x33, 0x33 }, +{ 0x00, 0x34, 0x34 }, +{ 0x00, 0x35, 0x35 }, +{ 0x00, 0x36, 0x36 }, +{ 0x00, 0x37, 0x37 }, +{ 0x00, 0x38, 0x38 }, +{ 0x00, 0x39, 0x39 }, +{ 0x00, 0x3a, 0x3a }, +{ 0x00, 0x3b, 0x3b }, +{ 0x00, 0x3c, 0x3c }, +{ 0x00, 0x3d, 0x3d }, +{ 0x00, 0x3e, 0x3e }, +{ 0x00, 0x3f, 0x3f }, +{ 0x00, 0x40, 0x40 }, +{ 0x01, 0x61, 0x41 }, +{ 0x01, 0x62, 0x42 }, +{ 0x01, 0x63, 0x43 }, +{ 0x01, 0x64, 0x44 }, +{ 0x01, 0x65, 0x45 }, +{ 0x01, 0x66, 0x46 }, +{ 0x01, 0x67, 0x47 }, +{ 0x01, 0x68, 0x48 }, +{ 0x01, 0x69, 0x49 }, +{ 0x01, 0x6a, 0x4a }, +{ 0x01, 0x6b, 0x4b }, +{ 0x01, 0x6c, 0x4c }, +{ 0x01, 0x6d, 0x4d }, +{ 0x01, 0x6e, 0x4e }, +{ 0x01, 0x6f, 0x4f }, +{ 0x01, 0x70, 0x50 }, +{ 0x01, 0x71, 0x51 }, +{ 0x01, 0x72, 0x52 }, +{ 0x01, 0x73, 0x53 }, +{ 0x01, 0x74, 0x54 }, +{ 0x01, 0x75, 0x55 }, +{ 0x01, 0x76, 0x56 }, +{ 0x01, 0x77, 0x57 }, +{ 0x01, 0x78, 0x58 }, +{ 0x01, 0x79, 0x59 }, +{ 0x01, 0x7a, 0x5a }, +{ 0x00, 0x5b, 0x5b }, +{ 0x00, 0x5c, 0x5c }, +{ 0x00, 0x5d, 0x5d }, +{ 0x00, 0x5e, 0x5e }, +{ 0x00, 0x5f, 0x5f }, +{ 0x00, 0x60, 0x60 }, +{ 0x00, 0x61, 0x41 }, +{ 0x00, 0x62, 0x42 }, +{ 0x00, 0x63, 0x43 }, +{ 0x00, 0x64, 0x44 }, +{ 0x00, 0x65, 0x45 }, +{ 0x00, 0x66, 0x46 }, +{ 0x00, 0x67, 0x47 }, +{ 0x00, 0x68, 0x48 }, +{ 0x00, 0x69, 0x49 }, +{ 0x00, 0x6a, 0x4a }, +{ 0x00, 0x6b, 0x4b }, +{ 0x00, 0x6c, 0x4c }, +{ 0x00, 0x6d, 0x4d }, +{ 0x00, 0x6e, 0x4e }, +{ 0x00, 0x6f, 0x4f }, +{ 0x00, 0x70, 0x50 }, +{ 0x00, 0x71, 0x51 }, +{ 0x00, 0x72, 0x52 }, +{ 0x00, 0x73, 0x53 }, +{ 0x00, 0x74, 0x54 }, +{ 0x00, 0x75, 0x55 }, +{ 0x00, 0x76, 0x56 }, +{ 0x00, 0x77, 0x57 }, +{ 0x00, 0x78, 0x58 }, +{ 0x00, 0x79, 0x59 }, +{ 0x00, 0x7a, 0x5a }, +{ 0x00, 0x7b, 0x7b }, +{ 0x00, 0x7c, 0x7c }, +{ 0x00, 0x7d, 0x7d }, +{ 0x00, 0x7e, 0x7e }, +{ 0x00, 0x7f, 0x7f }, +{ 0x00, 0x80, 0x80 }, +{ 0x00, 0x81, 0x81 }, +{ 0x00, 0x82, 0x82 }, +{ 0x00, 0x83, 0x83 }, +{ 0x00, 0x84, 0x84 }, +{ 0x00, 0x85, 0x85 }, +{ 0x00, 0x86, 0x86 }, +{ 0x00, 0x87, 0x87 }, +{ 0x00, 0x88, 0x88 }, +{ 0x00, 0x89, 0x89 }, +{ 0x00, 0x8a, 0x8a }, +{ 0x00, 0x8b, 0x8b }, +{ 0x00, 0x8c, 0x8c }, +{ 0x00, 0x8d, 0x8d }, +{ 0x00, 0x8e, 0x8e }, +{ 0x00, 0x8f, 0x8f }, +{ 0x00, 0x90, 0x90 }, +{ 0x00, 0x91, 0x91 }, +{ 0x00, 0x92, 0x92 }, +{ 0x00, 0x93, 0x93 }, +{ 0x00, 0x94, 0x94 }, +{ 0x00, 0x95, 0x95 }, +{ 0x00, 0x96, 0x96 }, +{ 0x00, 0x97, 0x97 }, +{ 0x00, 0x98, 0x98 }, +{ 0x00, 0x99, 0x99 }, +{ 0x00, 0x9a, 0x9a }, +{ 0x00, 0x9b, 0x9b }, +{ 0x00, 0x9c, 0x9c }, +{ 0x00, 0x9d, 0x9d }, +{ 0x00, 0x9e, 0x9e }, +{ 0x00, 0x9f, 0x9f }, +{ 0x00, 0xa0, 0xa0 }, +{ 0x00, 0xa1, 0xa1 }, +{ 0x00, 0xa2, 0xa2 }, +{ 0x00, 0xa3, 0xa3 }, +{ 0x00, 0xa4, 0xa4 }, +{ 0x00, 0xa5, 0xa5 }, +{ 0x01, 0xa8, 0xa6 }, +{ 0x00, 0xa7, 0xa7 }, +{ 0x00, 0xa8, 0xa6 }, +{ 0x00, 0xa9, 0xa9 }, +{ 0x00, 0xaa, 0xaa }, +{ 0x00, 0xab, 0xab }, +{ 0x00, 0xac, 0xac }, +{ 0x00, 0xad, 0xad }, +{ 0x00, 0xae, 0xae }, +{ 0x00, 0xaf, 0xaf }, +{ 0x00, 0xb0, 0xb0 }, +{ 0x00, 0xb1, 0xb1 }, +{ 0x00, 0xb2, 0xb2 }, +{ 0x00, 0xb3, 0xb3 }, +{ 0x01, 0xb8, 0xb4 }, +{ 0x00, 0xb5, 0xb5 }, +{ 0x00, 0xb6, 0xb6 }, +{ 0x00, 0xb7, 0xb7 }, +{ 0x00, 0xb8, 0xb4 }, +{ 0x00, 0xb9, 0xb9 }, +{ 0x00, 0xba, 0xba }, +{ 0x00, 0xbb, 0xbb }, +{ 0x01, 0xbd, 0xbc }, +{ 0x00, 0xbd, 0xbc }, +{ 0x01, 0xff, 0xbe }, +{ 0x00, 0xbf, 0xbf }, +{ 0x01, 0xe0, 0xc0 }, +{ 0x01, 0xe1, 0xc1 }, +{ 0x01, 0xe2, 0xc2 }, +{ 0x01, 0xe3, 0xc3 }, +{ 0x01, 0xe4, 0xc4 }, +{ 0x01, 0xe5, 0xc5 }, +{ 0x01, 0xe6, 0xc6 }, +{ 0x01, 0xe7, 0xc7 }, +{ 0x01, 0xe8, 0xc8 }, +{ 0x01, 0xe9, 0xc9 }, +{ 0x01, 0xea, 0xca }, +{ 0x01, 0xeb, 0xcb }, +{ 0x01, 0xec, 0xcc }, +{ 0x01, 0xed, 0xcd }, +{ 0x01, 0xee, 0xce }, +{ 0x01, 0xef, 0xcf }, +{ 0x01, 0xf0, 0xd0 }, +{ 0x01, 0xf1, 0xd1 }, +{ 0x01, 0xf2, 0xd2 }, +{ 0x01, 0xf3, 0xd3 }, +{ 0x01, 0xf4, 0xd4 }, +{ 0x01, 0xf5, 0xd5 }, +{ 0x01, 0xf6, 0xd6 }, +{ 0x00, 0xd7, 0xd7 }, +{ 0x01, 0xf8, 0xd8 }, +{ 0x01, 0xf9, 0xd9 }, +{ 0x01, 0xfa, 0xda }, +{ 0x01, 0xfb, 0xdb }, +{ 0x01, 0xfc, 0xdc }, +{ 0x01, 0xfd, 0xdd }, +{ 0x01, 0xfe, 0xde }, +{ 0x00, 0xdf, 0xdf }, +{ 0x00, 0xe0, 0xc0 }, +{ 0x00, 0xe1, 0xc1 }, +{ 0x00, 0xe2, 0xc2 }, +{ 0x00, 0xe3, 0xc3 }, +{ 0x00, 0xe4, 0xc4 }, +{ 0x00, 0xe5, 0xc5 }, +{ 0x00, 0xe6, 0xc6 }, +{ 0x00, 0xe7, 0xc7 }, +{ 0x00, 0xe8, 0xc8 }, +{ 0x00, 0xe9, 0xc9 }, +{ 0x00, 0xea, 0xca }, +{ 0x00, 0xeb, 0xcb }, +{ 0x00, 0xec, 0xcc }, +{ 0x00, 0xed, 0xcd }, +{ 0x00, 0xee, 0xce }, +{ 0x00, 0xef, 0xcf }, +{ 0x00, 0xf0, 0xd0 }, +{ 0x00, 0xf1, 0xd1 }, +{ 0x00, 0xf2, 0xd2 }, +{ 0x00, 0xf3, 0xd3 }, +{ 0x00, 0xf4, 0xd4 }, +{ 0x00, 0xf5, 0xd5 }, +{ 0x00, 0xf6, 0xd6 }, +{ 0x00, 0xf7, 0xf7 }, +{ 0x00, 0xf8, 0xd8 }, +{ 0x00, 0xf9, 0xd9 }, +{ 0x00, 0xfa, 0xda }, +{ 0x00, 0xfb, 0xdb }, +{ 0x00, 0xfc, 0xdc }, +{ 0x00, 0xfd, 0xdd }, +{ 0x00, 0xfe, 0xde }, +{ 0x00, 0xff, 0xbe } +}; + +static struct cs_info iscii_devanagari_tbl[] = { +{ 0x00, 0x00, 0x00 }, +{ 0x00, 0x01, 0x01 }, +{ 0x00, 0x02, 0x02 }, +{ 0x00, 0x03, 0x03 }, +{ 0x00, 0x04, 0x04 }, +{ 0x00, 0x05, 0x05 }, +{ 0x00, 0x06, 0x06 }, +{ 0x00, 0x07, 0x07 }, +{ 0x00, 0x08, 0x08 }, +{ 0x00, 0x09, 0x09 }, +{ 0x00, 0x0a, 0x0a }, +{ 0x00, 0x0b, 0x0b }, +{ 0x00, 0x0c, 0x0c }, +{ 0x00, 0x0d, 0x0d }, +{ 0x00, 0x0e, 0x0e }, +{ 0x00, 0x0f, 0x0f }, +{ 0x00, 0x10, 0x10 }, +{ 0x00, 0x11, 0x11 }, +{ 0x00, 0x12, 0x12 }, +{ 0x00, 0x13, 0x13 }, +{ 0x00, 0x14, 0x14 }, +{ 0x00, 0x15, 0x15 }, +{ 0x00, 0x16, 0x16 }, +{ 0x00, 0x17, 0x17 }, +{ 0x00, 0x18, 0x18 }, +{ 0x00, 0x19, 0x19 }, +{ 0x00, 0x1a, 0x1a }, +{ 0x00, 0x1b, 0x1b }, +{ 0x00, 0x1c, 0x1c }, +{ 0x00, 0x1d, 0x1d }, +{ 0x00, 0x1e, 0x1e }, +{ 0x00, 0x1f, 0x1f }, +{ 0x00, 0x20, 0x20 }, +{ 0x00, 0x21, 0x21 }, +{ 0x00, 0x22, 0x22 }, +{ 0x00, 0x23, 0x23 }, +{ 0x00, 0x24, 0x24 }, +{ 0x00, 0x25, 0x25 }, +{ 0x00, 0x26, 0x26 }, +{ 0x00, 0x27, 0x27 }, +{ 0x00, 0x28, 0x28 }, +{ 0x00, 0x29, 0x29 }, +{ 0x00, 0x2a, 0x2a }, +{ 0x00, 0x2b, 0x2b }, +{ 0x00, 0x2c, 0x2c }, +{ 0x00, 0x2d, 0x2d }, +{ 0x00, 0x2e, 0x2e }, +{ 0x00, 0x2f, 0x2f }, +{ 0x00, 0x30, 0x30 }, +{ 0x00, 0x31, 0x31 }, +{ 0x00, 0x32, 0x32 }, +{ 0x00, 0x33, 0x33 }, +{ 0x00, 0x34, 0x34 }, +{ 0x00, 0x35, 0x35 }, +{ 0x00, 0x36, 0x36 }, +{ 0x00, 0x37, 0x37 }, +{ 0x00, 0x38, 0x38 }, +{ 0x00, 0x39, 0x39 }, +{ 0x00, 0x3a, 0x3a }, +{ 0x00, 0x3b, 0x3b }, +{ 0x00, 0x3c, 0x3c }, +{ 0x00, 0x3d, 0x3d }, +{ 0x00, 0x3e, 0x3e }, +{ 0x00, 0x3f, 0x3f }, +{ 0x00, 0x40, 0x40 }, +{ 0x01, 0x61, 0x41 }, +{ 0x01, 0x62, 0x42 }, +{ 0x01, 0x63, 0x43 }, +{ 0x01, 0x64, 0x44 }, +{ 0x01, 0x65, 0x45 }, +{ 0x01, 0x66, 0x46 }, +{ 0x01, 0x67, 0x47 }, +{ 0x01, 0x68, 0x48 }, +{ 0x01, 0x69, 0x49 }, +{ 0x01, 0x6a, 0x4a }, +{ 0x01, 0x6b, 0x4b }, +{ 0x01, 0x6c, 0x4c }, +{ 0x01, 0x6d, 0x4d }, +{ 0x01, 0x6e, 0x4e }, +{ 0x01, 0x6f, 0x4f }, +{ 0x01, 0x70, 0x50 }, +{ 0x01, 0x71, 0x51 }, +{ 0x01, 0x72, 0x52 }, +{ 0x01, 0x73, 0x53 }, +{ 0x01, 0x74, 0x54 }, +{ 0x01, 0x75, 0x55 }, +{ 0x01, 0x76, 0x56 }, +{ 0x01, 0x77, 0x57 }, +{ 0x01, 0x78, 0x58 }, +{ 0x01, 0x79, 0x59 }, +{ 0x01, 0x7a, 0x5a }, +{ 0x00, 0x5b, 0x5b }, +{ 0x00, 0x5c, 0x5c }, +{ 0x00, 0x5d, 0x5d }, +{ 0x00, 0x5e, 0x5e }, +{ 0x00, 0x5f, 0x5f }, +{ 0x00, 0x60, 0x60 }, +{ 0x00, 0x61, 0x41 }, +{ 0x00, 0x62, 0x42 }, +{ 0x00, 0x63, 0x43 }, +{ 0x00, 0x64, 0x44 }, +{ 0x00, 0x65, 0x45 }, +{ 0x00, 0x66, 0x46 }, +{ 0x00, 0x67, 0x47 }, +{ 0x00, 0x68, 0x48 }, +{ 0x00, 0x69, 0x49 }, +{ 0x00, 0x6a, 0x4a }, +{ 0x00, 0x6b, 0x4b }, +{ 0x00, 0x6c, 0x4c }, +{ 0x00, 0x6d, 0x4d }, +{ 0x00, 0x6e, 0x4e }, +{ 0x00, 0x6f, 0x4f }, +{ 0x00, 0x70, 0x50 }, +{ 0x00, 0x71, 0x51 }, +{ 0x00, 0x72, 0x52 }, +{ 0x00, 0x73, 0x53 }, +{ 0x00, 0x74, 0x54 }, +{ 0x00, 0x75, 0x55 }, +{ 0x00, 0x76, 0x56 }, +{ 0x00, 0x77, 0x57 }, +{ 0x00, 0x78, 0x58 }, +{ 0x00, 0x79, 0x59 }, +{ 0x00, 0x7a, 0x5a }, +{ 0x00, 0x7b, 0x7b }, +{ 0x00, 0x7c, 0x7c }, +{ 0x00, 0x7d, 0x7d }, +{ 0x00, 0x7e, 0x7e }, +{ 0x00, 0x7f, 0x7f }, +{ 0x00, 0x80, 0x80 }, +{ 0x00, 0x81, 0x81 }, +{ 0x00, 0x82, 0x82 }, +{ 0x00, 0x83, 0x83 }, +{ 0x00, 0x84, 0x84 }, +{ 0x00, 0x85, 0x85 }, +{ 0x00, 0x86, 0x86 }, +{ 0x00, 0x87, 0x87 }, +{ 0x00, 0x88, 0x88 }, +{ 0x00, 0x89, 0x89 }, +{ 0x00, 0x8a, 0x8a }, +{ 0x00, 0x8b, 0x8b }, +{ 0x00, 0x8c, 0x8c }, +{ 0x00, 0x8d, 0x8d }, +{ 0x00, 0x8e, 0x8e }, +{ 0x00, 0x8f, 0x8f }, +{ 0x00, 0x90, 0x90 }, +{ 0x00, 0x91, 0x91 }, +{ 0x00, 0x92, 0x92 }, +{ 0x00, 0x93, 0x93 }, +{ 0x00, 0x94, 0x94 }, +{ 0x00, 0x95, 0x95 }, +{ 0x00, 0x96, 0x96 }, +{ 0x00, 0x97, 0x97 }, +{ 0x00, 0x98, 0x98 }, +{ 0x00, 0x99, 0x99 }, +{ 0x00, 0x9a, 0x9a }, +{ 0x00, 0x9b, 0x9b }, +{ 0x00, 0x9c, 0x9c }, +{ 0x00, 0x9d, 0x9d }, +{ 0x00, 0x9e, 0x9e }, +{ 0x00, 0x9f, 0x9f }, +{ 0x00, 0xa0, 0xa0 }, +{ 0x00, 0xa1, 0xa1 }, +{ 0x00, 0xa2, 0xa2 }, +{ 0x00, 0xa3, 0xa3 }, +{ 0x00, 0xa4, 0xa4 }, +{ 0x00, 0xa5, 0xa5 }, +{ 0x00, 0xa6, 0xa6 }, +{ 0x00, 0xa7, 0xa7 }, +{ 0x00, 0xa8, 0xa8 }, +{ 0x00, 0xa9, 0xa9 }, +{ 0x00, 0xaa, 0xaa }, +{ 0x00, 0xab, 0xab }, +{ 0x00, 0xac, 0xac }, +{ 0x00, 0xad, 0xad }, +{ 0x00, 0xae, 0xae }, +{ 0x00, 0xaf, 0xaf }, +{ 0x00, 0xb0, 0xb0 }, +{ 0x00, 0xb1, 0xb1 }, +{ 0x00, 0xb2, 0xb2 }, +{ 0x00, 0xb3, 0xb3 }, +{ 0x00, 0xb4, 0xb4 }, +{ 0x00, 0xb5, 0xb5 }, +{ 0x00, 0xb6, 0xb6 }, +{ 0x00, 0xb7, 0xb7 }, +{ 0x00, 0xb8, 0xb8 }, +{ 0x00, 0xb9, 0xb9 }, +{ 0x00, 0xba, 0xba }, +{ 0x00, 0xbb, 0xbb }, +{ 0x00, 0xbc, 0xbc }, +{ 0x00, 0xbd, 0xbd }, +{ 0x00, 0xbe, 0xbe }, +{ 0x00, 0xbf, 0xbf }, +{ 0x00, 0xc0, 0xc0 }, +{ 0x00, 0xc1, 0xc1 }, +{ 0x00, 0xc2, 0xc2 }, +{ 0x00, 0xc3, 0xc3 }, +{ 0x00, 0xc4, 0xc4 }, +{ 0x00, 0xc5, 0xc5 }, +{ 0x00, 0xc6, 0xc6 }, +{ 0x00, 0xc7, 0xc7 }, +{ 0x00, 0xc8, 0xc8 }, +{ 0x00, 0xc9, 0xc9 }, +{ 0x00, 0xca, 0xca }, +{ 0x00, 0xcb, 0xcb }, +{ 0x00, 0xcc, 0xcc }, +{ 0x00, 0xcd, 0xcd }, +{ 0x00, 0xce, 0xce }, +{ 0x00, 0xcf, 0xcf }, +{ 0x00, 0xd0, 0xd0 }, +{ 0x00, 0xd1, 0xd1 }, +{ 0x00, 0xd2, 0xd2 }, +{ 0x00, 0xd3, 0xd3 }, +{ 0x00, 0xd4, 0xd4 }, +{ 0x00, 0xd5, 0xd5 }, +{ 0x00, 0xd6, 0xd6 }, +{ 0x00, 0xd7, 0xd7 }, +{ 0x00, 0xd8, 0xd8 }, +{ 0x00, 0xd9, 0xd9 }, +{ 0x00, 0xda, 0xda }, +{ 0x00, 0xdb, 0xdb }, +{ 0x00, 0xdc, 0xdc }, +{ 0x00, 0xdd, 0xdd }, +{ 0x00, 0xde, 0xde }, +{ 0x00, 0xdf, 0xdf }, +{ 0x00, 0xe0, 0xe0 }, +{ 0x00, 0xe1, 0xe1 }, +{ 0x00, 0xe2, 0xe2 }, +{ 0x00, 0xe3, 0xe3 }, +{ 0x00, 0xe4, 0xe4 }, +{ 0x00, 0xe5, 0xe5 }, +{ 0x00, 0xe6, 0xe6 }, +{ 0x00, 0xe7, 0xe7 }, +{ 0x00, 0xe8, 0xe8 }, +{ 0x00, 0xe9, 0xe9 }, +{ 0x00, 0xea, 0xea }, +{ 0x00, 0xeb, 0xeb }, +{ 0x00, 0xec, 0xec }, +{ 0x00, 0xed, 0xed }, +{ 0x00, 0xee, 0xee }, +{ 0x00, 0xef, 0xef }, +{ 0x00, 0xf0, 0xf0 }, +{ 0x00, 0xf1, 0xf1 }, +{ 0x00, 0xf2, 0xf2 }, +{ 0x00, 0xf3, 0xf3 }, +{ 0x00, 0xf4, 0xf4 }, +{ 0x00, 0xf5, 0xf5 }, +{ 0x00, 0xf6, 0xf6 }, +{ 0x00, 0xf7, 0xf7 }, +{ 0x00, 0xf8, 0xf8 }, +{ 0x00, 0xf9, 0xf9 }, +{ 0x00, 0xfa, 0xfa }, +{ 0x00, 0xfb, 0xfb }, +{ 0x00, 0xfc, 0xfc }, +{ 0x00, 0xfd, 0xfd }, +{ 0x00, 0xfe, 0xfe }, +{ 0x00, 0xff, 0xff } +}; + +static struct cs_info tis620_tbl[] = { +{ 0x00, 0x00, 0x00 }, +{ 0x00, 0x01, 0x01 }, +{ 0x00, 0x02, 0x02 }, +{ 0x00, 0x03, 0x03 }, +{ 0x00, 0x04, 0x04 }, +{ 0x00, 0x05, 0x05 }, +{ 0x00, 0x06, 0x06 }, +{ 0x00, 0x07, 0x07 }, +{ 0x00, 0x08, 0x08 }, +{ 0x00, 0x09, 0x09 }, +{ 0x00, 0x0a, 0x0a }, +{ 0x00, 0x0b, 0x0b }, +{ 0x00, 0x0c, 0x0c }, +{ 0x00, 0x0d, 0x0d }, +{ 0x00, 0x0e, 0x0e }, +{ 0x00, 0x0f, 0x0f }, +{ 0x00, 0x10, 0x10 }, +{ 0x00, 0x11, 0x11 }, +{ 0x00, 0x12, 0x12 }, +{ 0x00, 0x13, 0x13 }, +{ 0x00, 0x14, 0x14 }, +{ 0x00, 0x15, 0x15 }, +{ 0x00, 0x16, 0x16 }, +{ 0x00, 0x17, 0x17 }, +{ 0x00, 0x18, 0x18 }, +{ 0x00, 0x19, 0x19 }, +{ 0x00, 0x1a, 0x1a }, +{ 0x00, 0x1b, 0x1b }, +{ 0x00, 0x1c, 0x1c }, +{ 0x00, 0x1d, 0x1d }, +{ 0x00, 0x1e, 0x1e }, +{ 0x00, 0x1f, 0x1f }, +{ 0x00, 0x20, 0x20 }, +{ 0x00, 0x21, 0x21 }, +{ 0x00, 0x22, 0x22 }, +{ 0x00, 0x23, 0x23 }, +{ 0x00, 0x24, 0x24 }, +{ 0x00, 0x25, 0x25 }, +{ 0x00, 0x26, 0x26 }, +{ 0x00, 0x27, 0x27 }, +{ 0x00, 0x28, 0x28 }, +{ 0x00, 0x29, 0x29 }, +{ 0x00, 0x2a, 0x2a }, +{ 0x00, 0x2b, 0x2b }, +{ 0x00, 0x2c, 0x2c }, +{ 0x00, 0x2d, 0x2d }, +{ 0x00, 0x2e, 0x2e }, +{ 0x00, 0x2f, 0x2f }, +{ 0x00, 0x30, 0x30 }, +{ 0x00, 0x31, 0x31 }, +{ 0x00, 0x32, 0x32 }, +{ 0x00, 0x33, 0x33 }, +{ 0x00, 0x34, 0x34 }, +{ 0x00, 0x35, 0x35 }, +{ 0x00, 0x36, 0x36 }, +{ 0x00, 0x37, 0x37 }, +{ 0x00, 0x38, 0x38 }, +{ 0x00, 0x39, 0x39 }, +{ 0x00, 0x3a, 0x3a }, +{ 0x00, 0x3b, 0x3b }, +{ 0x00, 0x3c, 0x3c }, +{ 0x00, 0x3d, 0x3d }, +{ 0x00, 0x3e, 0x3e }, +{ 0x00, 0x3f, 0x3f }, +{ 0x00, 0x40, 0x40 }, +{ 0x01, 0x61, 0x41 }, +{ 0x01, 0x62, 0x42 }, +{ 0x01, 0x63, 0x43 }, +{ 0x01, 0x64, 0x44 }, +{ 0x01, 0x65, 0x45 }, +{ 0x01, 0x66, 0x46 }, +{ 0x01, 0x67, 0x47 }, +{ 0x01, 0x68, 0x48 }, +{ 0x01, 0x69, 0x49 }, +{ 0x01, 0x6a, 0x4a }, +{ 0x01, 0x6b, 0x4b }, +{ 0x01, 0x6c, 0x4c }, +{ 0x01, 0x6d, 0x4d }, +{ 0x01, 0x6e, 0x4e }, +{ 0x01, 0x6f, 0x4f }, +{ 0x01, 0x70, 0x50 }, +{ 0x01, 0x71, 0x51 }, +{ 0x01, 0x72, 0x52 }, +{ 0x01, 0x73, 0x53 }, +{ 0x01, 0x74, 0x54 }, +{ 0x01, 0x75, 0x55 }, +{ 0x01, 0x76, 0x56 }, +{ 0x01, 0x77, 0x57 }, +{ 0x01, 0x78, 0x58 }, +{ 0x01, 0x79, 0x59 }, +{ 0x01, 0x7a, 0x5a }, +{ 0x00, 0x5b, 0x5b }, +{ 0x00, 0x5c, 0x5c }, +{ 0x00, 0x5d, 0x5d }, +{ 0x00, 0x5e, 0x5e }, +{ 0x00, 0x5f, 0x5f }, +{ 0x00, 0x60, 0x60 }, +{ 0x00, 0x61, 0x41 }, +{ 0x00, 0x62, 0x42 }, +{ 0x00, 0x63, 0x43 }, +{ 0x00, 0x64, 0x44 }, +{ 0x00, 0x65, 0x45 }, +{ 0x00, 0x66, 0x46 }, +{ 0x00, 0x67, 0x47 }, +{ 0x00, 0x68, 0x48 }, +{ 0x00, 0x69, 0x49 }, +{ 0x00, 0x6a, 0x4a }, +{ 0x00, 0x6b, 0x4b }, +{ 0x00, 0x6c, 0x4c }, +{ 0x00, 0x6d, 0x4d }, +{ 0x00, 0x6e, 0x4e }, +{ 0x00, 0x6f, 0x4f }, +{ 0x00, 0x70, 0x50 }, +{ 0x00, 0x71, 0x51 }, +{ 0x00, 0x72, 0x52 }, +{ 0x00, 0x73, 0x53 }, +{ 0x00, 0x74, 0x54 }, +{ 0x00, 0x75, 0x55 }, +{ 0x00, 0x76, 0x56 }, +{ 0x00, 0x77, 0x57 }, +{ 0x00, 0x78, 0x58 }, +{ 0x00, 0x79, 0x59 }, +{ 0x00, 0x7a, 0x5a }, +{ 0x00, 0x7b, 0x7b }, +{ 0x00, 0x7c, 0x7c }, +{ 0x00, 0x7d, 0x7d }, +{ 0x00, 0x7e, 0x7e }, +{ 0x00, 0x7f, 0x7f }, +{ 0x00, 0x80, 0x80 }, +{ 0x00, 0x81, 0x81 }, +{ 0x00, 0x82, 0x82 }, +{ 0x00, 0x83, 0x83 }, +{ 0x00, 0x84, 0x84 }, +{ 0x00, 0x85, 0x85 }, +{ 0x00, 0x86, 0x86 }, +{ 0x00, 0x87, 0x87 }, +{ 0x00, 0x88, 0x88 }, +{ 0x00, 0x89, 0x89 }, +{ 0x00, 0x8a, 0x8a }, +{ 0x00, 0x8b, 0x8b }, +{ 0x00, 0x8c, 0x8c }, +{ 0x00, 0x8d, 0x8d }, +{ 0x00, 0x8e, 0x8e }, +{ 0x00, 0x8f, 0x8f }, +{ 0x00, 0x90, 0x90 }, +{ 0x00, 0x91, 0x91 }, +{ 0x00, 0x92, 0x92 }, +{ 0x00, 0x93, 0x93 }, +{ 0x00, 0x94, 0x94 }, +{ 0x00, 0x95, 0x95 }, +{ 0x00, 0x96, 0x96 }, +{ 0x00, 0x97, 0x97 }, +{ 0x00, 0x98, 0x98 }, +{ 0x00, 0x99, 0x99 }, +{ 0x00, 0x9a, 0x9a }, +{ 0x00, 0x9b, 0x9b }, +{ 0x00, 0x9c, 0x9c }, +{ 0x00, 0x9d, 0x9d }, +{ 0x00, 0x9e, 0x9e }, +{ 0x00, 0x9f, 0x9f }, +{ 0x00, 0xa0, 0xa0 }, +{ 0x00, 0xa1, 0xa1 }, +{ 0x00, 0xa2, 0xa2 }, +{ 0x00, 0xa3, 0xa3 }, +{ 0x00, 0xa4, 0xa4 }, +{ 0x00, 0xa5, 0xa5 }, +{ 0x00, 0xa6, 0xa6 }, +{ 0x00, 0xa7, 0xa7 }, +{ 0x00, 0xa8, 0xa8 }, +{ 0x00, 0xa9, 0xa9 }, +{ 0x00, 0xaa, 0xaa }, +{ 0x00, 0xab, 0xab }, +{ 0x00, 0xac, 0xac }, +{ 0x00, 0xad, 0xad }, +{ 0x00, 0xae, 0xae }, +{ 0x00, 0xaf, 0xaf }, +{ 0x00, 0xb0, 0xb0 }, +{ 0x00, 0xb1, 0xb1 }, +{ 0x00, 0xb2, 0xb2 }, +{ 0x00, 0xb3, 0xb3 }, +{ 0x00, 0xb4, 0xb4 }, +{ 0x00, 0xb5, 0xb5 }, +{ 0x00, 0xb6, 0xb6 }, +{ 0x00, 0xb7, 0xb7 }, +{ 0x00, 0xb8, 0xb8 }, +{ 0x00, 0xb9, 0xb9 }, +{ 0x00, 0xba, 0xba }, +{ 0x00, 0xbb, 0xbb }, +{ 0x00, 0xbc, 0xbc }, +{ 0x00, 0xbd, 0xbd }, +{ 0x00, 0xbe, 0xbe }, +{ 0x00, 0xbf, 0xbf }, +{ 0x00, 0xc0, 0xc0 }, +{ 0x00, 0xc1, 0xc1 }, +{ 0x00, 0xc2, 0xc2 }, +{ 0x00, 0xc3, 0xc3 }, +{ 0x00, 0xc4, 0xc4 }, +{ 0x00, 0xc5, 0xc5 }, +{ 0x00, 0xc6, 0xc6 }, +{ 0x00, 0xc7, 0xc7 }, +{ 0x00, 0xc8, 0xc8 }, +{ 0x00, 0xc9, 0xc9 }, +{ 0x00, 0xca, 0xca }, +{ 0x00, 0xcb, 0xcb }, +{ 0x00, 0xcc, 0xcc }, +{ 0x00, 0xcd, 0xcd }, +{ 0x00, 0xce, 0xce }, +{ 0x00, 0xcf, 0xcf }, +{ 0x00, 0xd0, 0xd0 }, +{ 0x00, 0xd1, 0xd1 }, +{ 0x00, 0xd2, 0xd2 }, +{ 0x00, 0xd3, 0xd3 }, +{ 0x00, 0xd4, 0xd4 }, +{ 0x00, 0xd5, 0xd5 }, +{ 0x00, 0xd6, 0xd6 }, +{ 0x00, 0xd7, 0xd7 }, +{ 0x00, 0xd8, 0xd8 }, +{ 0x00, 0xd9, 0xd9 }, +{ 0x00, 0xda, 0xda }, +{ 0x00, 0xdb, 0xdb }, +{ 0x00, 0xdc, 0xdc }, +{ 0x00, 0xdd, 0xdd }, +{ 0x00, 0xde, 0xde }, +{ 0x00, 0xdf, 0xdf }, +{ 0x00, 0xe0, 0xe0 }, +{ 0x00, 0xe1, 0xe1 }, +{ 0x00, 0xe2, 0xe2 }, +{ 0x00, 0xe3, 0xe3 }, +{ 0x00, 0xe4, 0xe4 }, +{ 0x00, 0xe5, 0xe5 }, +{ 0x00, 0xe6, 0xe6 }, +{ 0x00, 0xe7, 0xe7 }, +{ 0x00, 0xe8, 0xe8 }, +{ 0x00, 0xe9, 0xe9 }, +{ 0x00, 0xea, 0xea }, +{ 0x00, 0xeb, 0xeb }, +{ 0x00, 0xec, 0xec }, +{ 0x00, 0xed, 0xed }, +{ 0x00, 0xee, 0xee }, +{ 0x00, 0xef, 0xef }, +{ 0x00, 0xf0, 0xf0 }, +{ 0x00, 0xf1, 0xf1 }, +{ 0x00, 0xf2, 0xf2 }, +{ 0x00, 0xf3, 0xf3 }, +{ 0x00, 0xf4, 0xf4 }, +{ 0x00, 0xf5, 0xf5 }, +{ 0x00, 0xf6, 0xf6 }, +{ 0x00, 0xf7, 0xf7 }, +{ 0x00, 0xf8, 0xf8 }, +{ 0x00, 0xf9, 0xf9 }, +{ 0x00, 0xfa, 0xfa }, +{ 0x00, 0xfb, 0xfb }, +{ 0x00, 0xfc, 0xfc }, +{ 0x00, 0xfd, 0xfd }, +{ 0x00, 0xfe, 0xfe }, +{ 0x00, 0xff, 0xff } +}; + +struct enc_entry { + const char * enc_name; + struct cs_info * cs_table; +}; + +static struct enc_entry encds[] = { + {"iso88591",iso1_tbl}, //ISO-8859-1 + {"iso88592",iso2_tbl}, //ISO-8859-2 + {"iso88593",iso3_tbl}, //ISO-8859-3 + {"iso88594",iso4_tbl}, //ISO-8859-4 + {"iso88595",iso5_tbl}, //ISO-8859-5 + {"iso88596",iso6_tbl}, //ISO-8859-6 + {"iso88597",iso7_tbl}, //ISO-8859-7 + {"iso88598",iso8_tbl}, //ISO-8859-8 + {"iso88599",iso9_tbl}, //ISO-8859-9 + {"iso885910",iso10_tbl}, //ISO-8859-10 + {"tis620",tis620_tbl}, //TIS-620/ISO-8859-11 + {"tis6202533",tis620_tbl}, //TIS-620/ISO-8859-11 + {"iso885911",tis620_tbl}, //TIS-620/ISO-8859-11 + {"iso885913", iso13_tbl}, //ISO-8859-13 + {"iso885914", iso14_tbl}, //ISO-8859-14 + {"iso885915", iso15_tbl}, //ISO-8859-15 + {"koi8r",koi8r_tbl}, //KOI8-R + {"koi8u",koi8u_tbl}, //KOI8-U + {"cp1251",cp1251_tbl}, //CP-1251 + {"microsoftcp1251",cp1251_tbl}, //microsoft-cp1251 + {"xisciias", iscii_devanagari_tbl}, //x-iscii-as + {"isciidevanagari", iscii_devanagari_tbl} //ISCII-DEVANAGARI +}; + +/* map to lower case and remove non alphanumeric chars */ +static void toAsciiLowerAndRemoveNonAlphanumeric( const char* pName, char* pBuf ) +{ + while ( *pName ) + { + /* A-Z */ + if ( (*pName >= 0x41) && (*pName <= 0x5A) ) + { + *pBuf = (*pName)+0x20; /* toAsciiLower */ + pBuf++; + } + /* a-z, 0-9 */ + else if ( ((*pName >= 0x61) && (*pName <= 0x7A)) || + ((*pName >= 0x30) && (*pName <= 0x39)) ) + { + *pBuf = *pName; + pBuf++; + } + + pName++; + } + + *pBuf = '\0'; +} + +struct cs_info * get_current_cs(const char * es) { + char *normalized_encoding = new char[strlen(es)+1]; + toAsciiLowerAndRemoveNonAlphanumeric(es, normalized_encoding); + + struct cs_info * ccs = NULL; + int n = sizeof(encds) / sizeof(encds[0]); + for (int i = 0; i < n; i++) { + if (strcmp(normalized_encoding,encds[i].enc_name) == 0) { + ccs = encds[i].cs_table; + break; + } + } + + delete[] normalized_encoding; + + if (!ccs) { + HUNSPELL_WARNING(stderr, "error: unknown encoding %s: using %s as fallback\n", es, encds[0].enc_name); + ccs = encds[0].cs_table; + } + + return ccs; +} +#else +// XXX This function was rewritten for mozilla. Instead of storing the +// conversion tables static in this file, create them when needed +// with help the mozilla backend. +struct cs_info * get_current_cs(const char * es) { + struct cs_info *ccs; + + nsCOMPtr encoder; + nsCOMPtr decoder; + + nsresult rv; + nsCOMPtr ccm = do_GetService(kCharsetConverterManagerCID, &rv); + if (NS_FAILED(rv)) + return nsnull; + + rv = ccm->GetUnicodeEncoder(es, getter_AddRefs(encoder)); + if (NS_FAILED(rv)) + return nsnull; + encoder->SetOutputErrorBehavior(encoder->kOnError_Signal, nsnull, '?'); + rv = ccm->GetUnicodeDecoder(es, getter_AddRefs(decoder)); + if (NS_FAILED(rv)) + return nsnull; + decoder->SetInputErrorBehavior(decoder->kOnError_Signal); + + if (NS_FAILED(rv)) + return nsnull; + + ccs = new cs_info[256]; + + for (unsigned int i = 0; i <= 0xff; ++i) { + PRBool success = PR_FALSE; + // We want to find the upper/lowercase equivalents of each byte + // in this 1-byte character encoding. Call our encoding/decoding + // APIs separately for each byte since they may reject some of the + // bytes, and we want to handle errors separately for each byte. + char lower, upper; + do { + if (i == 0) + break; + const char source = char(i); + PRUnichar uni, uniCased; + PRInt32 charLength = 1, uniLength = 1; + + rv = decoder->Convert(&source, &charLength, &uni, &uniLength); + // Explicitly check NS_OK because we don't want to allow + // NS_OK_UDEC_MOREOUTPUT or NS_OK_UDEC_MOREINPUT. + if (rv != NS_OK || charLength != 1 || uniLength != 1) + break; + uniCased = ToLowerCase(uni); + rv = encoder->Convert(&uniCased, &uniLength, &lower, &charLength); + // Explicitly check NS_OK because we don't want to allow + // NS_OK_UDEC_MOREOUTPUT or NS_OK_UDEC_MOREINPUT. + if (rv != NS_OK || charLength != 1 || uniLength != 1) + break; + + uniCased = ToUpperCase(uni); + rv = encoder->Convert(&uniCased, &uniLength, &upper, &charLength); + // Explicitly check NS_OK because we don't want to allow + // NS_OK_UDEC_MOREOUTPUT or NS_OK_UDEC_MOREINPUT. + if (rv != NS_OK || charLength != 1 || uniLength != 1) + break; + + success = PR_TRUE; + } while (0); + + if (success) { + ccs[i].cupper = upper; + ccs[i].clower = lower; + } else { + ccs[i].cupper = i; + ccs[i].clower = i; + } + + if (ccs[i].clower != (unsigned char)i) + ccs[i].ccase = true; + else + ccs[i].ccase = false; + } + + return ccs; +} +#endif + +// primitive isalpha() replacement for tokenization +char * get_casechars(const char * enc) { + struct cs_info * csconv = get_current_cs(enc); + char expw[MAXLNLEN]; + char * p = expw; + for (int i = 0; i <= 255; i++) { + if ((csconv[i].cupper != csconv[i].clower)) { + *p = (char) i; + p++; + } + } + *p = '\0'; +#ifdef MOZILLA_CLIENT + delete [] csconv; +#endif + return mystrdup(expw); +} + +// language to encoding default map + +struct lang_map { + const char * lang; + int num; +}; + +static struct lang_map lang2enc[] = { +{"ar", LANG_ar}, +{"az", LANG_az}, +{"az_AZ", LANG_az}, // for back-compatibility +{"bg", LANG_bg}, +{"ca", LANG_ca}, +{"cs", LANG_cs}, +{"da", LANG_da}, +{"de", LANG_de}, +{"el", LANG_el}, +{"en", LANG_en}, +{"es", LANG_es}, +{"eu", LANG_eu}, +{"gl", LANG_gl}, +{"fr", LANG_fr}, +{"hr", LANG_hr}, +{"hu", LANG_hu}, +{"hu_HU", LANG_hu}, // for back-compatibility +{"it", LANG_it}, +{"la", LANG_la}, +{"lv", LANG_lv}, +{"nl", LANG_nl}, +{"pl", LANG_pl}, +{"pt", LANG_pt}, +{"sv", LANG_sv}, +{"tr", LANG_tr}, +{"tr_TR", LANG_tr}, // for back-compatibility +{"ru", LANG_ru}, +{"uk", LANG_uk} +}; + + +int get_lang_num(const char * lang) { + int n = sizeof(lang2enc) / sizeof(lang2enc[0]); + for (int i = 0; i < n; i++) { + if (strcmp(lang, lang2enc[i].lang) == 0) { + return lang2enc[i].num; + } + } + return LANG_xx; +} + +#ifndef OPENOFFICEORG +#ifndef MOZILLA_CLIENT +int initialize_utf_tbl() { + utf_tbl_count++; + if (utf_tbl) return 0; + utf_tbl = (unicode_info2 *) malloc(CONTSIZE * sizeof(unicode_info2)); + if (utf_tbl) { + size_t j; + for (j = 0; j < CONTSIZE; j++) { + utf_tbl[j].cletter = 0; + utf_tbl[j].clower = (unsigned short) j; + utf_tbl[j].cupper = (unsigned short) j; + } + for (j = 0; j < UTF_LST_LEN; j++) { + utf_tbl[utf_lst[j].c].cletter = 1; + utf_tbl[utf_lst[j].c].clower = utf_lst[j].clower; + utf_tbl[utf_lst[j].c].cupper = utf_lst[j].cupper; + } + } else return 1; + return 0; +} +#endif +#endif + +void free_utf_tbl() { + if (utf_tbl_count > 0) utf_tbl_count--; + if (utf_tbl && (utf_tbl_count == 0)) { + free(utf_tbl); + utf_tbl = NULL; + } +} + +unsigned short unicodetoupper(unsigned short c, int langnum) +{ + // In Azeri and Turkish, I and i dictinct letters: + // There are a dotless lower case i pair of upper `I', + // and an upper I with dot pair of lower `i'. + if (c == 0x0069 && ((langnum == LANG_az) || (langnum == LANG_tr))) + return 0x0130; +#ifdef OPENOFFICEORG + return u_toupper(c); +#else +#ifdef MOZILLA_CLIENT + return ToUpperCase((PRUnichar) c); +#else + return (utf_tbl) ? utf_tbl[c].cupper : c; +#endif +#endif +} + +unsigned short unicodetolower(unsigned short c, int langnum) +{ + // In Azeri and Turkish, I and i dictinct letters: + // There are a dotless lower case i pair of upper `I', + // and an upper I with dot pair of lower `i'. + if (c == 0x0049 && ((langnum == LANG_az) || (langnum == LANG_tr))) + return 0x0131; +#ifdef OPENOFFICEORG + return u_tolower(c); +#else +#ifdef MOZILLA_CLIENT + return ToLowerCase((PRUnichar) c); +#else + return (utf_tbl) ? utf_tbl[c].clower : c; +#endif +#endif +} + +int unicodeisalpha(unsigned short c) +{ +#ifdef OPENOFFICEORG + return u_isalpha(c); +#else + return (utf_tbl) ? utf_tbl[c].cletter : 0; +#endif +} + +/* get type of capitalization */ +int get_captype(char * word, int nl, cs_info * csconv) { + // now determine the capitalization type of the first nl letters + int ncap = 0; + int nneutral = 0; + int firstcap = 0; + if (csconv == NULL) return NOCAP; + for (char * q = word; *q != '\0'; q++) { + if (csconv[*((unsigned char *)q)].ccase) ncap++; + if (csconv[*((unsigned char *)q)].cupper == csconv[*((unsigned char *)q)].clower) nneutral++; + } + if (ncap) { + firstcap = csconv[*((unsigned char *) word)].ccase; + } + + // now finally set the captype + if (ncap == 0) { + return NOCAP; + } else if ((ncap == 1) && firstcap) { + return INITCAP; + } else if ((ncap == nl) || ((ncap + nneutral) == nl)) { + return ALLCAP; + } else if ((ncap > 1) && firstcap) { + return HUHINITCAP; + } + return HUHCAP; +} + +int get_captype_utf8(w_char * word, int nl, int langnum) { + // now determine the capitalization type of the first nl letters + int ncap = 0; + int nneutral = 0; + int firstcap = 0; + unsigned short idx; + // don't check too long words + if (nl >= MAXWORDLEN) return 0; + // big Unicode character (non BMP area) + if (nl == -1) return NOCAP; + for (int i = 0; i < nl; i++) { + idx = (word[i].h << 8) + word[i].l; + if (idx != unicodetolower(idx, langnum)) ncap++; + if (unicodetoupper(idx, langnum) == unicodetolower(idx, langnum)) nneutral++; + } + if (ncap) { + idx = (word[0].h << 8) + word[0].l; + firstcap = (idx != unicodetolower(idx, langnum)); + } + + // now finally set the captype + if (ncap == 0) { + return NOCAP; + } else if ((ncap == 1) && firstcap) { + return INITCAP; + } else if ((ncap == nl) || ((ncap + nneutral) == nl)) { + return ALLCAP; + } else if ((ncap > 1) && firstcap) { + return HUHINITCAP; + } + return HUHCAP; +} + + +// strip all ignored characters in the string +void remove_ignored_chars_utf(char * word, unsigned short ignored_chars[], int ignored_len) +{ + w_char w[MAXWORDLEN]; + w_char w2[MAXWORDLEN]; + int i; + int j; + int len = u8_u16(w, MAXWORDLEN, word); + for (i = 0, j = 0; i < len; i++) { + if (!flag_bsearch(ignored_chars, ((unsigned short *) w)[i], ignored_len)) { + w2[j] = w[i]; + j++; + } + } + if (j < i) u16_u8(word, MAXWORDUTF8LEN, w2, j); +} + +// strip all ignored characters in the string +void remove_ignored_chars(char * word, char * ignored_chars) +{ + for (char * p = word; *p != '\0'; p++) { + if (!strchr(ignored_chars, *p)) { + *word = *p; + word++; + } + } + *word = '\0'; +} + +int parse_string(char * line, char ** out, int ln) +{ + char * tp = line; + char * piece; + int i = 0; + int np = 0; + if (*out) { + HUNSPELL_WARNING(stderr, "error: line %d: multiple definitions\n", ln); + return 1; + } + piece = mystrsep(&tp, 0); + while (piece) { + if (*piece != '\0') { + switch(i) { + case 0: { np++; break; } + case 1: { + *out = mystrdup(piece); + if (!*out) return 1; + np++; + break; + } + default: break; + } + i++; + } + // free(piece); + piece = mystrsep(&tp, 0); + } + if (np != 2) { + HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", ln); + return 1; + } + return 0; +} + +int parse_array(char * line, char ** out, unsigned short ** out_utf16, + int * out_utf16_len, int utf8, int ln) { + if (parse_string(line, out, ln)) return 1; + if (utf8) { + w_char w[MAXWORDLEN]; + int n = u8_u16(w, MAXWORDLEN, *out); + if (n > 0) { + flag_qsort((unsigned short *) w, 0, n); + *out_utf16 = (unsigned short *) malloc(n * sizeof(unsigned short)); + if (!*out_utf16) return 1; + memcpy(*out_utf16, w, n * sizeof(unsigned short)); + } + *out_utf16_len = n; + } + return 0; +} diff --git a/plugins/SpellChecker/hunspell/csutil.hxx b/plugins/SpellChecker/hunspell/csutil.hxx new file mode 100644 index 0000000000..7bd0b919be --- /dev/null +++ b/plugins/SpellChecker/hunspell/csutil.hxx @@ -0,0 +1,220 @@ +#ifndef __CSUTILHXX__ +#define __CSUTILHXX__ + +#include "hunvisapi.h" + +// First some base level utility routines + +#include +#include "w_char.hxx" +#include "htypes.hxx" + +#ifdef MOZILLA_CLIENT +#include "nscore.h" // for mozalloc headers +#endif + +// casing +#define NOCAP 0 +#define INITCAP 1 +#define ALLCAP 2 +#define HUHCAP 3 +#define HUHINITCAP 4 + +// default encoding and keystring +#define SPELL_ENCODING "ISO8859-1" +#define SPELL_KEYSTRING "qwertyuiop|asdfghjkl|zxcvbnm" + +// default morphological fields +#define MORPH_STEM "st:" +#define MORPH_ALLOMORPH "al:" +#define MORPH_POS "po:" +#define MORPH_DERI_PFX "dp:" +#define MORPH_INFL_PFX "ip:" +#define MORPH_TERM_PFX "tp:" +#define MORPH_DERI_SFX "ds:" +#define MORPH_INFL_SFX "is:" +#define MORPH_TERM_SFX "ts:" +#define MORPH_SURF_PFX "sp:" +#define MORPH_FREQ "fr:" +#define MORPH_PHON "ph:" +#define MORPH_HYPH "hy:" +#define MORPH_PART "pa:" +#define MORPH_FLAG "fl:" +#define MORPH_HENTRY "_H:" +#define MORPH_TAG_LEN strlen(MORPH_STEM) + +#define MSEP_FLD ' ' +#define MSEP_REC '\n' +#define MSEP_ALT '\v' + +// default flags +#define DEFAULTFLAGS 65510 +#define FORBIDDENWORD 65510 +#define ONLYUPCASEFLAG 65511 + +// convert UTF-16 characters to UTF-8 +LIBHUNSPELL_DLL_EXPORTED char * u16_u8(char * dest, int size, const w_char * src, int srclen); + +// convert UTF-8 characters to UTF-16 +LIBHUNSPELL_DLL_EXPORTED int u8_u16(w_char * dest, int size, const char * src); + +// sort 2-byte vector +LIBHUNSPELL_DLL_EXPORTED void flag_qsort(unsigned short flags[], int begin, int end); + +// binary search in 2-byte vector +LIBHUNSPELL_DLL_EXPORTED int flag_bsearch(unsigned short flags[], unsigned short flag, int right); + +// remove end of line char(s) +LIBHUNSPELL_DLL_EXPORTED void mychomp(char * s); + +// duplicate string +LIBHUNSPELL_DLL_EXPORTED char * mystrdup(const char * s); + +// strcat for limited length destination string +LIBHUNSPELL_DLL_EXPORTED char * mystrcat(char * dest, const char * st, int max); + +// duplicate reverse of string +LIBHUNSPELL_DLL_EXPORTED char * myrevstrdup(const char * s); + +// parse into tokens with char delimiter +LIBHUNSPELL_DLL_EXPORTED char * mystrsep(char ** sptr, const char delim); +// parse into tokens with char delimiter +LIBHUNSPELL_DLL_EXPORTED char * mystrsep2(char ** sptr, const char delim); + +// parse into tokens with char delimiter +LIBHUNSPELL_DLL_EXPORTED char * mystrrep(char *, const char *, const char *); + +// append s to ends of every lines in text +LIBHUNSPELL_DLL_EXPORTED void strlinecat(char * lines, const char * s); + +// tokenize into lines with new line +LIBHUNSPELL_DLL_EXPORTED int line_tok(const char * text, char *** lines, char breakchar); + +// tokenize into lines with new line and uniq in place +LIBHUNSPELL_DLL_EXPORTED char * line_uniq(char * text, char breakchar); +LIBHUNSPELL_DLL_EXPORTED char * line_uniq_app(char ** text, char breakchar); + +// change oldchar to newchar in place +LIBHUNSPELL_DLL_EXPORTED char * tr(char * text, char oldc, char newc); + +// reverse word +LIBHUNSPELL_DLL_EXPORTED int reverseword(char *); + +// reverse word +LIBHUNSPELL_DLL_EXPORTED int reverseword_utf(char *); + +// remove duplicates +LIBHUNSPELL_DLL_EXPORTED int uniqlist(char ** list, int n); + +// free character array list +LIBHUNSPELL_DLL_EXPORTED void freelist(char *** list, int n); + +// character encoding information +struct cs_info { + unsigned char ccase; + unsigned char clower; + unsigned char cupper; +}; + +LIBHUNSPELL_DLL_EXPORTED int initialize_utf_tbl(); +LIBHUNSPELL_DLL_EXPORTED void free_utf_tbl(); +LIBHUNSPELL_DLL_EXPORTED unsigned short unicodetoupper(unsigned short c, int langnum); +LIBHUNSPELL_DLL_EXPORTED unsigned short unicodetolower(unsigned short c, int langnum); +LIBHUNSPELL_DLL_EXPORTED int unicodeisalpha(unsigned short c); + +LIBHUNSPELL_DLL_EXPORTED struct cs_info * get_current_cs(const char * es); + +// get language identifiers of language codes +LIBHUNSPELL_DLL_EXPORTED int get_lang_num(const char * lang); + +// get characters of the given 8bit encoding with lower- and uppercase forms +LIBHUNSPELL_DLL_EXPORTED char * get_casechars(const char * enc); + +// convert null terminated string to all caps using encoding +LIBHUNSPELL_DLL_EXPORTED void enmkallcap(char * d, const char * p, const char * encoding); + +// convert null terminated string to all little using encoding +LIBHUNSPELL_DLL_EXPORTED void enmkallsmall(char * d, const char * p, const char * encoding); + +// convert null terminated string to have initial capital using encoding +LIBHUNSPELL_DLL_EXPORTED void enmkinitcap(char * d, const char * p, const char * encoding); + +// convert null terminated string to all caps +LIBHUNSPELL_DLL_EXPORTED void mkallcap(char * p, const struct cs_info * csconv); + +// convert null terminated string to all little +LIBHUNSPELL_DLL_EXPORTED void mkallsmall(char * p, const struct cs_info * csconv); + +// convert null terminated string to have initial capital +LIBHUNSPELL_DLL_EXPORTED void mkinitcap(char * p, const struct cs_info * csconv); + +// convert first nc characters of UTF-8 string to little +LIBHUNSPELL_DLL_EXPORTED void mkallsmall_utf(w_char * u, int nc, int langnum); + +// convert first nc characters of UTF-8 string to capital +LIBHUNSPELL_DLL_EXPORTED void mkallcap_utf(w_char * u, int nc, int langnum); + +// get type of capitalization +LIBHUNSPELL_DLL_EXPORTED int get_captype(char * q, int nl, cs_info *); + +// get type of capitalization (UTF-8) +LIBHUNSPELL_DLL_EXPORTED int get_captype_utf8(w_char * q, int nl, int langnum); + +// strip all ignored characters in the string +LIBHUNSPELL_DLL_EXPORTED void remove_ignored_chars_utf(char * word, unsigned short ignored_chars[], int ignored_len); + +// strip all ignored characters in the string +LIBHUNSPELL_DLL_EXPORTED void remove_ignored_chars(char * word, char * ignored_chars); + +LIBHUNSPELL_DLL_EXPORTED int parse_string(char * line, char ** out, int ln); + +LIBHUNSPELL_DLL_EXPORTED int parse_array(char * line, char ** out, unsigned short ** out_utf16, + int * out_utf16_len, int utf8, int ln); + +LIBHUNSPELL_DLL_EXPORTED int fieldlen(const char * r); +LIBHUNSPELL_DLL_EXPORTED char * copy_field(char * dest, const char * morph, const char * var); + +LIBHUNSPELL_DLL_EXPORTED int morphcmp(const char * s, const char * t); + +LIBHUNSPELL_DLL_EXPORTED int get_sfxcount(const char * morph); + +// conversion function for protected memory +LIBHUNSPELL_DLL_EXPORTED void store_pointer(char * dest, char * source); + +// conversion function for protected memory +LIBHUNSPELL_DLL_EXPORTED char * get_stored_pointer(const char * s); + +// hash entry macros +LIBHUNSPELL_DLL_EXPORTED inline char* HENTRY_DATA(struct hentry *h) +{ + char *ret; + if (!h->var) + ret = NULL; + else if (h->var & H_OPT_ALIASM) + ret = get_stored_pointer(HENTRY_WORD(h) + h->blen + 1); + else + ret = HENTRY_WORD(h) + h->blen + 1; + return ret; +} + +// NULL-free version for warning-free OOo build +LIBHUNSPELL_DLL_EXPORTED inline const char* HENTRY_DATA2(const struct hentry *h) +{ + const char *ret; + if (!h->var) + ret = ""; + else if (h->var & H_OPT_ALIASM) + ret = get_stored_pointer(HENTRY_WORD(h) + h->blen + 1); + else + ret = HENTRY_WORD(h) + h->blen + 1; + return ret; +} + +LIBHUNSPELL_DLL_EXPORTED inline char* HENTRY_FIND(struct hentry *h, const char *p) +{ + return (HENTRY_DATA(h) ? strstr(HENTRY_DATA(h), p) : NULL); +} + +#define w_char_eq(a,b) (((a).l == (b).l) && ((a).h == (b).h)) + +#endif diff --git a/plugins/SpellChecker/hunspell/dictmgr.cxx b/plugins/SpellChecker/hunspell/dictmgr.cxx new file mode 100644 index 0000000000..b4a15b1a5b --- /dev/null +++ b/plugins/SpellChecker/hunspell/dictmgr.cxx @@ -0,0 +1,180 @@ + +#include +#include +#include +#include + +#include "dictmgr.hxx" + +DictMgr::DictMgr(const char * dictpath, const char * etype) : numdict(0) +{ + // load list of etype entries + pdentry = (dictentry *)malloc(MAXDICTIONARIES*sizeof(struct dictentry)); + if (pdentry) { + if (parse_file(dictpath, etype)) { + numdict = 0; + // no dictionary.lst found is okay + } + } +} + + +DictMgr::~DictMgr() +{ + dictentry * pdict = NULL; + if (pdentry) { + pdict = pdentry; + for (int i=0;ilang) { + free(pdict->lang); + pdict->lang = NULL; + } + if (pdict->region) { + free(pdict->region); + pdict->region=NULL; + } + if (pdict->filename) { + free(pdict->filename); + pdict->filename = NULL; + } + pdict++; + } + free(pdentry); + pdentry = NULL; + pdict = NULL; + } + numdict = 0; +} + + +// read in list of etype entries and build up structure to describe them +int DictMgr::parse_file(const char * dictpath, const char * etype) +{ + + int i; + char line[MAXDICTENTRYLEN+1]; + dictentry * pdict = pdentry; + + // open the dictionary list file + FILE * dictlst; + dictlst = fopen(dictpath,"r"); + if (!dictlst) { + return 1; + } + + // step one is to parse the dictionary list building up the + // descriptive structures + + // read in each line ignoring any that dont start with etype + while (fgets(line,MAXDICTENTRYLEN,dictlst)) { + mychomp(line); + + /* parse in a dictionary entry */ + if (strncmp(line,etype,4) == 0) { + if (numdict < MAXDICTIONARIES) { + char * tp = line; + char * piece; + i = 0; + while ((piece=mystrsep(&tp,' '))) { + if (*piece != '\0') { + switch(i) { + case 0: break; + case 1: pdict->lang = mystrdup(piece); break; + case 2: if (strcmp (piece, "ANY") == 0) + pdict->region = mystrdup(""); + else + pdict->region = mystrdup(piece); + break; + case 3: pdict->filename = mystrdup(piece); break; + default: break; + } + i++; + } + free(piece); + } + if (i == 4) { + numdict++; + pdict++; + } else { + switch (i) { + case 3: + free(pdict->region); + pdict->region=NULL; + case 2: //deliberate fallthrough + free(pdict->lang); + pdict->lang=NULL; + default: + break; + } + fprintf(stderr,"dictionary list corruption in line \"%s\"\n",line); + fflush(stderr); + } + } + } + } + fclose(dictlst); + return 0; +} + +// return text encoding of dictionary +int DictMgr::get_list(dictentry ** ppentry) +{ + *ppentry = pdentry; + return numdict; +} + + + +// strip strings into token based on single char delimiter +// acts like strsep() but only uses a delim char and not +// a delim string + +char * DictMgr::mystrsep(char ** stringp, const char delim) +{ + char * rv = NULL; + char * mp = *stringp; + size_t n = strlen(mp); + if (n > 0) { + char * dp = (char *)memchr(mp,(int)((unsigned char)delim),n); + if (dp) { + *stringp = dp+1; + size_t nc = dp - mp; + rv = (char *) malloc(nc+1); + if (rv) { + memcpy(rv,mp,nc); + *(rv+nc) = '\0'; + } + } else { + rv = (char *) malloc(n+1); + if (rv) { + memcpy(rv, mp, n); + *(rv+n) = '\0'; + *stringp = mp + n; + } + } + } + return rv; +} + + +// replaces strdup with ansi version +char * DictMgr::mystrdup(const char * s) +{ + char * d = NULL; + if (s) { + int sl = strlen(s)+1; + d = (char *) malloc(sl); + if (d) memcpy(d,s,sl); + } + return d; +} + + +// remove cross-platform text line end characters +void DictMgr:: mychomp(char * s) +{ + int k = strlen(s); + if ((k > 0) && ((*(s+k-1)=='\r') || (*(s+k-1)=='\n'))) *(s+k-1) = '\0'; + if ((k > 1) && (*(s+k-2) == '\r')) *(s+k-2) = '\0'; +} + diff --git a/plugins/SpellChecker/hunspell/dictmgr.hxx b/plugins/SpellChecker/hunspell/dictmgr.hxx new file mode 100644 index 0000000000..bb197f84fb --- /dev/null +++ b/plugins/SpellChecker/hunspell/dictmgr.hxx @@ -0,0 +1,36 @@ +#ifndef _DICTMGR_HXX_ +#define _DICTMGR_HXX_ + +#include "hunvisapi.h" + +#define MAXDICTIONARIES 100 +#define MAXDICTENTRYLEN 1024 + +struct dictentry { + char * filename; + char * lang; + char * region; +}; + + +class LIBHUNSPELL_DLL_EXPORTED DictMgr +{ + + int numdict; + dictentry * pdentry; + +public: + + DictMgr(const char * dictpath, const char * etype); + ~DictMgr(); + int get_list(dictentry** ppentry); + +private: + int parse_file(const char * dictpath, const char * etype); + char * mystrsep(char ** stringp, const char delim); + char * mystrdup(const char * s); + void mychomp(char * s); + +}; + +#endif diff --git a/plugins/SpellChecker/hunspell/filemgr.cxx b/plugins/SpellChecker/hunspell/filemgr.cxx new file mode 100644 index 0000000000..5fb82bcf80 --- /dev/null +++ b/plugins/SpellChecker/hunspell/filemgr.cxx @@ -0,0 +1,49 @@ +#include "license.hunspell" +#include "license.myspell" + +#include +#include +#include + +#include "filemgr.hxx" + +int FileMgr::fail(const char * err, const char * par) { + fprintf(stderr, err, par); + return -1; +} + +FileMgr::FileMgr(const char * file, const char * key) { + linenum = 0; + hin = NULL; + fin = fopen(file, "r"); + if (!fin) { + // check hzipped file + char * st = (char *) malloc(strlen(file) + strlen(HZIP_EXTENSION) + 1); + if (st) { + strcpy(st, file); + strcat(st, HZIP_EXTENSION); + hin = new Hunzip(st, key); + free(st); + } + } + if (!fin && !hin) fail(MSG_OPEN, file); +} + +FileMgr::~FileMgr() +{ + if (fin) fclose(fin); + if (hin) delete hin; +} + +char * FileMgr::getline() { + const char * l; + linenum++; + if (fin) return fgets(in, BUFSIZE - 1, fin); + if (hin && (l = hin->getline())) return strcpy(in, l); + linenum--; + return NULL; +} + +int FileMgr::getlinenum() { + return linenum; +} diff --git a/plugins/SpellChecker/hunspell/filemgr.hxx b/plugins/SpellChecker/hunspell/filemgr.hxx new file mode 100644 index 0000000000..94cb7233d8 --- /dev/null +++ b/plugins/SpellChecker/hunspell/filemgr.hxx @@ -0,0 +1,25 @@ +/* file manager class - read lines of files [filename] OR [filename.hz] */ +#ifndef _FILEMGR_HXX_ +#define _FILEMGR_HXX_ + +#include "hunvisapi.h" + +#include "hunzip.hxx" +#include + +class LIBHUNSPELL_DLL_EXPORTED FileMgr +{ +protected: + FILE * fin; + Hunzip * hin; + char in[BUFSIZE + 50]; // input buffer + int fail(const char * err, const char * par); + int linenum; + +public: + FileMgr(const char * filename, const char * key = NULL); + ~FileMgr(); + char * getline(); + int getlinenum(); +}; +#endif diff --git a/plugins/SpellChecker/hunspell/hashmgr.cxx b/plugins/SpellChecker/hunspell/hashmgr.cxx new file mode 100644 index 0000000000..ea93b8787c --- /dev/null +++ b/plugins/SpellChecker/hunspell/hashmgr.cxx @@ -0,0 +1,928 @@ +#include "license.hunspell" +#include "license.myspell" + +#include +#include +#include +#include + +#include "hashmgr.hxx" +#include "csutil.hxx" +#include "atypes.hxx" + +// build a hash table from a munched word list + +HashMgr::HashMgr(const char * tpath, const char * apath, const char * key) +{ + tablesize = 0; + tableptr = NULL; + flag_mode = FLAG_CHAR; + complexprefixes = 0; + utf8 = 0; + langnum = 0; + lang = NULL; + enc = NULL; + csconv = 0; + ignorechars = NULL; + ignorechars_utf16 = NULL; + ignorechars_utf16_len = 0; + numaliasf = 0; + aliasf = NULL; + numaliasm = 0; + aliasm = NULL; + forbiddenword = FORBIDDENWORD; // forbidden word signing flag + load_config(apath, key); + int ec = load_tables(tpath, key); + if (ec) { + /* error condition - what should we do here */ + HUNSPELL_WARNING(stderr, "Hash Manager Error : %d\n",ec); + if (tableptr) { + free(tableptr); + tableptr = NULL; + } + tablesize = 0; + } +} + + +HashMgr::~HashMgr() +{ + if (tableptr) { + // now pass through hash table freeing up everything + // go through column by column of the table + for (int i=0; i < tablesize; i++) { + struct hentry * pt = tableptr[i]; + struct hentry * nt = NULL; + while(pt) { + nt = pt->next; + if (pt->astr && (!aliasf || TESTAFF(pt->astr, ONLYUPCASEFLAG, pt->alen))) free(pt->astr); + free(pt); + pt = nt; + } + } + free(tableptr); + } + tablesize = 0; + + if (aliasf) { + for (int j = 0; j < (numaliasf); j++) free(aliasf[j]); + free(aliasf); + aliasf = NULL; + if (aliasflen) { + free(aliasflen); + aliasflen = NULL; + } + } + if (aliasm) { + for (int j = 0; j < (numaliasm); j++) free(aliasm[j]); + free(aliasm); + aliasm = NULL; + } + +#ifndef OPENOFFICEORG +#ifndef MOZILLA_CLIENT + if (utf8) free_utf_tbl(); +#endif +#endif + + if (enc) free(enc); + if (lang) free(lang); + + if (ignorechars) free(ignorechars); + if (ignorechars_utf16) free(ignorechars_utf16); + +#ifdef MOZILLA_CLIENT + delete [] csconv; +#endif +} + +// lookup a root word in the hashtable + +struct hentry * HashMgr::lookup(const char *word) const +{ + struct hentry * dp; + if (tableptr) { + dp = tableptr[hash(word)]; + if (!dp) return NULL; + for ( ; dp != NULL; dp = dp->next) { + if (strcmp(word, dp->word) == 0) return dp; + } + } + return NULL; +} + +// add a word to the hash table (private) +int HashMgr::add_word(const char * word, int wbl, int wcl, unsigned short * aff, + int al, const char * desc, bool onlyupcase) +{ + bool upcasehomonym = false; + int descl = desc ? (aliasm ? sizeof(short) : strlen(desc) + 1) : 0; + // variable-length hash record with word and optional fields + struct hentry* hp = + (struct hentry *) malloc (sizeof(struct hentry) + wbl + descl); + if (!hp) return 1; + char * hpw = hp->word; + strcpy(hpw, word); + if (ignorechars != NULL) { + if (utf8) { + remove_ignored_chars_utf(hpw, ignorechars_utf16, ignorechars_utf16_len); + } else { + remove_ignored_chars(hpw, ignorechars); + } + } + if (complexprefixes) { + if (utf8) reverseword_utf(hpw); else reverseword(hpw); + } + + int i = hash(hpw); + + hp->blen = (unsigned char) wbl; + hp->clen = (unsigned char) wcl; + hp->alen = (short) al; + hp->astr = aff; + hp->next = NULL; + hp->next_homonym = NULL; + + // store the description string or its pointer + if (desc) { + hp->var = H_OPT; + if (aliasm) { + hp->var += H_OPT_ALIASM; + store_pointer(hpw + wbl + 1, get_aliasm(atoi(desc))); + } else { + strcpy(hpw + wbl + 1, desc); + if (complexprefixes) { + if (utf8) reverseword_utf(HENTRY_DATA(hp)); + else reverseword(HENTRY_DATA(hp)); + } + } + if (strstr(HENTRY_DATA(hp), MORPH_PHON)) hp->var += H_OPT_PHON; + } else hp->var = 0; + + struct hentry * dp = tableptr[i]; + if (!dp) { + tableptr[i] = hp; + return 0; + } + while (dp->next != NULL) { + if ((!dp->next_homonym) && (strcmp(hp->word, dp->word) == 0)) { + // remove hidden onlyupcase homonym + if (!onlyupcase) { + if ((dp->astr) && TESTAFF(dp->astr, ONLYUPCASEFLAG, dp->alen)) { + free(dp->astr); + dp->astr = hp->astr; + dp->alen = hp->alen; + free(hp); + return 0; + } else { + dp->next_homonym = hp; + } + } else { + upcasehomonym = true; + } + } + dp=dp->next; + } + if (strcmp(hp->word, dp->word) == 0) { + // remove hidden onlyupcase homonym + if (!onlyupcase) { + if ((dp->astr) && TESTAFF(dp->astr, ONLYUPCASEFLAG, dp->alen)) { + free(dp->astr); + dp->astr = hp->astr; + dp->alen = hp->alen; + free(hp); + return 0; + } else { + dp->next_homonym = hp; + } + } else { + upcasehomonym = true; + } + } + if (!upcasehomonym) { + dp->next = hp; + } else { + // remove hidden onlyupcase homonym + if (hp->astr) free(hp->astr); + free(hp); + } + return 0; +} + +int HashMgr::add_hidden_capitalized_word(char * word, int wbl, int wcl, + unsigned short * flags, int al, char * dp, int captype) +{ + // add inner capitalized forms to handle the following allcap forms: + // Mixed caps: OpenOffice.org -> OPENOFFICE.ORG + // Allcaps with suffixes: CIA's -> CIA'S + if (((captype == HUHCAP) || (captype == HUHINITCAP) || + ((captype == ALLCAP) && (flags != NULL))) && + !((flags != NULL) && TESTAFF(flags, forbiddenword, al))) { + unsigned short * flags2 = (unsigned short *) malloc (sizeof(unsigned short) * (al+1)); + if (!flags2) return 1; + if (al) memcpy(flags2, flags, al * sizeof(unsigned short)); + flags2[al] = ONLYUPCASEFLAG; + if (utf8) { + char st[BUFSIZE]; + w_char w[BUFSIZE]; + int wlen = u8_u16(w, BUFSIZE, word); + mkallsmall_utf(w, wlen, langnum); + mkallcap_utf(w, 1, langnum); + u16_u8(st, BUFSIZE, w, wlen); + return add_word(st,wbl,wcl,flags2,al+1,dp, true); + } else { + mkallsmall(word, csconv); + mkinitcap(word, csconv); + return add_word(word,wbl,wcl,flags2,al+1,dp, true); + } + } + return 0; +} + +// detect captype and modify word length for UTF-8 encoding +int HashMgr::get_clen_and_captype(const char * word, int wbl, int * captype) { + int len; + if (utf8) { + w_char dest_utf[BUFSIZE]; + len = u8_u16(dest_utf, BUFSIZE, word); + *captype = get_captype_utf8(dest_utf, len, langnum); + } else { + len = wbl; + *captype = get_captype((char *) word, len, csconv); + } + return len; +} + +// remove word (personal dictionary function for standalone applications) +int HashMgr::remove(const char * word) +{ + struct hentry * dp = lookup(word); + while (dp) { + if (dp->alen == 0 || !TESTAFF(dp->astr, forbiddenword, dp->alen)) { + unsigned short * flags = + (unsigned short *) malloc(sizeof(short) * (dp->alen + 1)); + if (!flags) return 1; + for (int i = 0; i < dp->alen; i++) flags[i] = dp->astr[i]; + flags[dp->alen] = forbiddenword; + dp->astr = flags; + dp->alen++; + flag_qsort(flags, 0, dp->alen); + } + dp = dp->next_homonym; + } + return 0; +} + +/* remove forbidden flag to add a personal word to the hash */ +int HashMgr::remove_forbidden_flag(const char * word) { + struct hentry * dp = lookup(word); + if (!dp) return 1; + while (dp) { + if (dp->astr && TESTAFF(dp->astr, forbiddenword, dp->alen)) { + if (dp->alen == 1) dp->alen = 0; // XXX forbidden words of personal dic. + else { + unsigned short * flags2 = + (unsigned short *) malloc(sizeof(short) * (dp->alen - 1)); + if (!flags2) return 1; + int i, j = 0; + for (i = 0; i < dp->alen; i++) { + if (dp->astr[i] != forbiddenword) flags2[j++] = dp->astr[i]; + } + dp->alen--; + dp->astr = flags2; // XXX allowed forbidden words + } + } + dp = dp->next_homonym; + } + return 0; +} + +// add a custom dic. word to the hash table (public) +int HashMgr::add(const char * word) +{ + unsigned short * flags = NULL; + int al = 0; + if (remove_forbidden_flag(word)) { + int captype; + int wbl = strlen(word); + int wcl = get_clen_and_captype(word, wbl, &captype); + add_word(word, wbl, wcl, flags, al, NULL, false); + return add_hidden_capitalized_word((char *) word, wbl, wcl, flags, al, NULL, captype); + } + return 0; +} + +int HashMgr::add_with_affix(const char * word, const char * example) +{ + // detect captype and modify word length for UTF-8 encoding + struct hentry * dp = lookup(example); + remove_forbidden_flag(word); + if (dp && dp->astr) { + int captype; + int wbl = strlen(word); + int wcl = get_clen_and_captype(word, wbl, &captype); + if (aliasf) { + add_word(word, wbl, wcl, dp->astr, dp->alen, NULL, false); + } else { + unsigned short * flags = (unsigned short *) malloc (dp->alen * sizeof(short)); + if (flags) { + memcpy((void *) flags, (void *) dp->astr, dp->alen * sizeof(short)); + add_word(word, wbl, wcl, flags, dp->alen, NULL, false); + } else return 1; + } + return add_hidden_capitalized_word((char *) word, wbl, wcl, dp->astr, dp->alen, NULL, captype); + } + return 1; +} + +// walk the hash table entry by entry - null at end +// initialize: col=-1; hp = NULL; hp = walk_hashtable(&col, hp); +struct hentry * HashMgr::walk_hashtable(int &col, struct hentry * hp) const +{ + if (hp && hp->next != NULL) return hp->next; + for (col++; col < tablesize; col++) { + if (tableptr[col]) return tableptr[col]; + } + // null at end and reset to start + col = -1; + return NULL; +} + +// load a munched word list and build a hash table on the fly +int HashMgr::load_tables(const char * tpath, const char * key) +{ + int al; + char * ap; + char * dp; + char * dp2; + unsigned short * flags; + char * ts; + + // open dictionary file + FileMgr * dict = new FileMgr(tpath, key); + if (dict == NULL) return 1; + + // first read the first line of file to get hash table size */ + if (!(ts = dict->getline())) { + HUNSPELL_WARNING(stderr, "error: empty dic file\n"); + delete dict; + return 2; + } + mychomp(ts); + + /* remove byte order mark */ + if (strncmp(ts,"\xEF\xBB\xBF",3) == 0) { + memmove(ts, ts+3, strlen(ts+3)+1); + // warning: dic file begins with byte order mark: possible incompatibility with old Hunspell versions + } + + tablesize = atoi(ts); + if (tablesize == 0) { + HUNSPELL_WARNING(stderr, "error: line 1: missing or bad word count in the dic file\n"); + delete dict; + return 4; + } + tablesize = tablesize + 5 + USERWORD; + if ((tablesize %2) == 0) tablesize++; + + // allocate the hash table + tableptr = (struct hentry **) malloc(tablesize * sizeof(struct hentry *)); + if (! tableptr) { + delete dict; + return 3; + } + for (int i=0; igetline())) { + mychomp(ts); + // split each line into word and morphological description + dp = ts; + while ((dp = strchr(dp, ':'))) { + if ((dp > ts + 3) && (*(dp - 3) == ' ' || *(dp - 3) == '\t')) { + for (dp -= 4; dp >= ts && (*dp == ' ' || *dp == '\t'); dp--); + if (dp < ts) { // missing word + dp = NULL; + } else { + *(dp + 1) = '\0'; + dp = dp + 2; + } + break; + } + dp++; + } + + // tabulator is the old morphological field separator + dp2 = strchr(ts, '\t'); + if (dp2 && (!dp || dp2 < dp)) { + *dp2 = '\0'; + dp = dp2 + 1; + } + + // split each line into word and affix char strings + // "\/" signs slash in words (not affix separator) + // "/" at beginning of the line is word character (not affix separator) + ap = strchr(ts,'/'); + while (ap) { + if (ap == ts) { + ap++; + continue; + } else if (*(ap - 1) != '\\') break; + // replace "\/" with "/" + for (char * sp = ap - 1; *sp; *sp = *(sp + 1), sp++); + ap = strchr(ap,'/'); + } + + if (ap) { + *ap = '\0'; + if (aliasf) { + int index = atoi(ap + 1); + al = get_aliasf(index, &flags, dict); + if (!al) { + HUNSPELL_WARNING(stderr, "error: line %d: bad flag vector alias\n", dict->getlinenum()); + *ap = '\0'; + } + } else { + al = decode_flags(&flags, ap + 1, dict); + if (al == -1) { + HUNSPELL_WARNING(stderr, "Can't allocate memory.\n"); + delete dict; + return 6; + } + flag_qsort(flags, 0, al); + } + } else { + al = 0; + ap = NULL; + flags = NULL; + } + + int captype; + int wbl = strlen(ts); + int wcl = get_clen_and_captype(ts, wbl, &captype); + // add the word and its index plus its capitalized form optionally + if (add_word(ts,wbl,wcl,flags,al,dp, false) || + add_hidden_capitalized_word(ts, wbl, wcl, flags, al, dp, captype)) { + delete dict; + return 5; + } + } + + delete dict; + return 0; +} + +// the hash function is a simple load and rotate +// algorithm borrowed + +int HashMgr::hash(const char * word) const +{ + long hv = 0; + for (int i=0; i < 4 && *word != 0; i++) + hv = (hv << 8) | (*word++); + while (*word != 0) { + ROTATE(hv,ROTATE_LEN); + hv ^= (*word++); + } + return (unsigned long) hv % tablesize; +} + +int HashMgr::decode_flags(unsigned short ** result, char * flags, FileMgr * af) { + int len; + if (*flags == '\0') { + *result = NULL; + return 0; + } + switch (flag_mode) { + case FLAG_LONG: { // two-character flags (1x2yZz -> 1x 2y Zz) + len = strlen(flags); + if (len%2 == 1) HUNSPELL_WARNING(stderr, "error: line %d: bad flagvector\n", af->getlinenum()); + len /= 2; + *result = (unsigned short *) malloc(len * sizeof(short)); + if (!*result) return -1; + for (int i = 0; i < len; i++) { + (*result)[i] = (((unsigned short) flags[i * 2]) << 8) + (unsigned short) flags[i * 2 + 1]; + } + break; + } + case FLAG_NUM: { // decimal numbers separated by comma (4521,23,233 -> 4521 23 233) + int i; + len = 1; + char * src = flags; + unsigned short * dest; + char * p; + for (p = flags; *p; p++) { + if (*p == ',') len++; + } + *result = (unsigned short *) malloc(len * sizeof(short)); + if (!*result) return -1; + dest = *result; + for (p = flags; *p; p++) { + if (*p == ',') { + i = atoi(src); + if (i >= DEFAULTFLAGS) HUNSPELL_WARNING(stderr, "error: line %d: flag id %d is too large (max: %d)\n", + af->getlinenum(), i, DEFAULTFLAGS - 1); + *dest = (unsigned short) i; + if (*dest == 0) HUNSPELL_WARNING(stderr, "error: line %d: 0 is wrong flag id\n", af->getlinenum()); + src = p + 1; + dest++; + } + } + i = atoi(src); + if (i >= DEFAULTFLAGS) HUNSPELL_WARNING(stderr, "error: line %d: flag id %d is too large (max: %d)\n", + af->getlinenum(), i, DEFAULTFLAGS - 1); + *dest = (unsigned short) i; + if (*dest == 0) HUNSPELL_WARNING(stderr, "error: line %d: 0 is wrong flag id\n", af->getlinenum()); + break; + } + case FLAG_UNI: { // UTF-8 characters + w_char w[BUFSIZE/2]; + len = u8_u16(w, BUFSIZE/2, flags); + *result = (unsigned short *) malloc(len * sizeof(short)); + if (!*result) return -1; + memcpy(*result, w, len * sizeof(short)); + break; + } + default: { // Ispell's one-character flags (erfg -> e r f g) + unsigned short * dest; + len = strlen(flags); + *result = (unsigned short *) malloc(len * sizeof(short)); + if (!*result) return -1; + dest = *result; + for (unsigned char * p = (unsigned char *) flags; *p; p++) { + *dest = (unsigned short) *p; + dest++; + } + } + } + return len; +} + +unsigned short HashMgr::decode_flag(const char * f) { + unsigned short s = 0; + int i; + switch (flag_mode) { + case FLAG_LONG: + s = ((unsigned short) f[0] << 8) + (unsigned short) f[1]; + break; + case FLAG_NUM: + i = atoi(f); + if (i >= DEFAULTFLAGS) HUNSPELL_WARNING(stderr, "error: flag id %d is too large (max: %d)\n", i, DEFAULTFLAGS - 1); + s = (unsigned short) i; + break; + case FLAG_UNI: + u8_u16((w_char *) &s, 1, f); + break; + default: + s = (unsigned short) *((unsigned char *)f); + } + if (s == 0) HUNSPELL_WARNING(stderr, "error: 0 is wrong flag id\n"); + return s; +} + +char * HashMgr::encode_flag(unsigned short f) { + unsigned char ch[10]; + if (f==0) return mystrdup("(NULL)"); + if (flag_mode == FLAG_LONG) { + ch[0] = (unsigned char) (f >> 8); + ch[1] = (unsigned char) (f - ((f >> 8) << 8)); + ch[2] = '\0'; + } else if (flag_mode == FLAG_NUM) { + sprintf((char *) ch, "%d", f); + } else if (flag_mode == FLAG_UNI) { + u16_u8((char *) &ch, 10, (w_char *) &f, 1); + } else { + ch[0] = (unsigned char) (f); + ch[1] = '\0'; + } + return mystrdup((char *) ch); +} + +// read in aff file and set flag mode +int HashMgr::load_config(const char * affpath, const char * key) +{ + char * line; // io buffers + int firstline = 1; + + // open the affix file + FileMgr * afflst = new FileMgr(affpath, key); + if (!afflst) { + HUNSPELL_WARNING(stderr, "Error - could not open affix description file %s\n",affpath); + return 1; + } + + // read in each line ignoring any that do not + // start with a known line type indicator + + while ((line = afflst->getline())) { + mychomp(line); + + /* remove byte order mark */ + if (firstline) { + firstline = 0; + if (strncmp(line,"\xEF\xBB\xBF",3) == 0) memmove(line, line+3, strlen(line+3)+1); + } + + /* parse in the try string */ + if ((strncmp(line,"FLAG",4) == 0) && isspace(line[4])) { + if (flag_mode != FLAG_CHAR) { + HUNSPELL_WARNING(stderr, "error: line %d: multiple definitions of the FLAG affix file parameter\n", afflst->getlinenum()); + } + if (strstr(line, "long")) flag_mode = FLAG_LONG; + if (strstr(line, "num")) flag_mode = FLAG_NUM; + if (strstr(line, "UTF-8")) flag_mode = FLAG_UNI; + if (flag_mode == FLAG_CHAR) { + HUNSPELL_WARNING(stderr, "error: line %d: FLAG needs `num', `long' or `UTF-8' parameter\n", afflst->getlinenum()); + } + } + if (strncmp(line,"FORBIDDENWORD",13) == 0) { + char * st = NULL; + if (parse_string(line, &st, afflst->getlinenum())) { + delete afflst; + return 1; + } + forbiddenword = decode_flag(st); + free(st); + } + if (strncmp(line, "SET", 3) == 0) { + if (parse_string(line, &enc, afflst->getlinenum())) { + delete afflst; + return 1; + } + if (strcmp(enc, "UTF-8") == 0) { + utf8 = 1; +#ifndef OPENOFFICEORG +#ifndef MOZILLA_CLIENT + initialize_utf_tbl(); +#endif +#endif + } else csconv = get_current_cs(enc); + } + if (strncmp(line, "LANG", 4) == 0) { + if (parse_string(line, &lang, afflst->getlinenum())) { + delete afflst; + return 1; + } + langnum = get_lang_num(lang); + } + + /* parse in the ignored characters (for example, Arabic optional diacritics characters */ + if (strncmp(line,"IGNORE",6) == 0) { + if (parse_array(line, &ignorechars, &ignorechars_utf16, + &ignorechars_utf16_len, utf8, afflst->getlinenum())) { + delete afflst; + return 1; + } + } + + if ((strncmp(line,"AF",2) == 0) && isspace(line[2])) { + if (parse_aliasf(line, afflst)) { + delete afflst; + return 1; + } + } + + if ((strncmp(line,"AM",2) == 0) && isspace(line[2])) { + if (parse_aliasm(line, afflst)) { + delete afflst; + return 1; + } + } + + if (strncmp(line,"COMPLEXPREFIXES",15) == 0) complexprefixes = 1; + if (((strncmp(line,"SFX",3) == 0) || (strncmp(line,"PFX",3) == 0)) && isspace(line[3])) break; + } + if (csconv == NULL) csconv = get_current_cs(SPELL_ENCODING); + delete afflst; + return 0; +} + +/* parse in the ALIAS table */ +int HashMgr::parse_aliasf(char * line, FileMgr * af) +{ + if (numaliasf != 0) { + HUNSPELL_WARNING(stderr, "error: line %d: multiple table definitions\n", af->getlinenum()); + return 1; + } + char * tp = line; + char * piece; + int i = 0; + int np = 0; + piece = mystrsep(&tp, 0); + while (piece) { + if (*piece != '\0') { + switch(i) { + case 0: { np++; break; } + case 1: { + numaliasf = atoi(piece); + if (numaliasf < 1) { + numaliasf = 0; + aliasf = NULL; + aliasflen = NULL; + HUNSPELL_WARNING(stderr, "error: line %d: bad entry number\n", af->getlinenum()); + return 1; + } + aliasf = (unsigned short **) malloc(numaliasf * sizeof(unsigned short *)); + aliasflen = (unsigned short *) malloc(numaliasf * sizeof(short)); + if (!aliasf || !aliasflen) { + numaliasf = 0; + if (aliasf) free(aliasf); + if (aliasflen) free(aliasflen); + aliasf = NULL; + aliasflen = NULL; + return 1; + } + np++; + break; + } + default: break; + } + i++; + } + piece = mystrsep(&tp, 0); + } + if (np != 2) { + numaliasf = 0; + free(aliasf); + free(aliasflen); + aliasf = NULL; + aliasflen = NULL; + HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", af->getlinenum()); + return 1; + } + + /* now parse the numaliasf lines to read in the remainder of the table */ + char * nl; + for (int j=0; j < numaliasf; j++) { + if (!(nl = af->getline())) return 1; + mychomp(nl); + tp = nl; + i = 0; + aliasf[j] = NULL; + aliasflen[j] = 0; + piece = mystrsep(&tp, 0); + while (piece) { + if (*piece != '\0') { + switch(i) { + case 0: { + if (strncmp(piece,"AF",2) != 0) { + numaliasf = 0; + free(aliasf); + free(aliasflen); + aliasf = NULL; + aliasflen = NULL; + HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); + return 1; + } + break; + } + case 1: { + aliasflen[j] = (unsigned short) decode_flags(&(aliasf[j]), piece, af); + flag_qsort(aliasf[j], 0, aliasflen[j]); + break; + } + default: break; + } + i++; + } + piece = mystrsep(&tp, 0); + } + if (!aliasf[j]) { + free(aliasf); + free(aliasflen); + aliasf = NULL; + aliasflen = NULL; + numaliasf = 0; + HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); + return 1; + } + } + return 0; +} + +int HashMgr::is_aliasf() { + return (aliasf != NULL); +} + +int HashMgr::get_aliasf(int index, unsigned short ** fvec, FileMgr * af) { + if ((index > 0) && (index <= numaliasf)) { + *fvec = aliasf[index - 1]; + return aliasflen[index - 1]; + } + HUNSPELL_WARNING(stderr, "error: line %d: bad flag alias index: %d\n", af->getlinenum(), index); + *fvec = NULL; + return 0; +} + +/* parse morph alias definitions */ +int HashMgr::parse_aliasm(char * line, FileMgr * af) +{ + if (numaliasm != 0) { + HUNSPELL_WARNING(stderr, "error: line %d: multiple table definitions\n", af->getlinenum()); + return 1; + } + char * tp = line; + char * piece; + int i = 0; + int np = 0; + piece = mystrsep(&tp, 0); + while (piece) { + if (*piece != '\0') { + switch(i) { + case 0: { np++; break; } + case 1: { + numaliasm = atoi(piece); + if (numaliasm < 1) { + HUNSPELL_WARNING(stderr, "error: line %d: bad entry number\n", af->getlinenum()); + return 1; + } + aliasm = (char **) malloc(numaliasm * sizeof(char *)); + if (!aliasm) { + numaliasm = 0; + return 1; + } + np++; + break; + } + default: break; + } + i++; + } + piece = mystrsep(&tp, 0); + } + if (np != 2) { + numaliasm = 0; + free(aliasm); + aliasm = NULL; + HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", af->getlinenum()); + return 1; + } + + /* now parse the numaliasm lines to read in the remainder of the table */ + char * nl = line; + for (int j=0; j < numaliasm; j++) { + if (!(nl = af->getline())) return 1; + mychomp(nl); + tp = nl; + i = 0; + aliasm[j] = NULL; + piece = mystrsep(&tp, ' '); + while (piece) { + if (*piece != '\0') { + switch(i) { + case 0: { + if (strncmp(piece,"AM",2) != 0) { + HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); + numaliasm = 0; + free(aliasm); + aliasm = NULL; + return 1; + } + break; + } + case 1: { + // add the remaining of the line + if (*tp) { + *(tp - 1) = ' '; + tp = tp + strlen(tp); + } + if (complexprefixes) { + if (utf8) reverseword_utf(piece); + else reverseword(piece); + } + aliasm[j] = mystrdup(piece); + if (!aliasm[j]) { + numaliasm = 0; + free(aliasm); + aliasm = NULL; + return 1; + } + break; } + default: break; + } + i++; + } + piece = mystrsep(&tp, ' '); + } + if (!aliasm[j]) { + numaliasm = 0; + free(aliasm); + aliasm = NULL; + HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); + return 1; + } + } + return 0; +} + +int HashMgr::is_aliasm() { + return (aliasm != NULL); +} + +char * HashMgr::get_aliasm(int index) { + if ((index > 0) && (index <= numaliasm)) return aliasm[index - 1]; + HUNSPELL_WARNING(stderr, "error: bad morph. alias index: %d\n", index); + return NULL; +} diff --git a/plugins/SpellChecker/hunspell/hashmgr.hxx b/plugins/SpellChecker/hunspell/hashmgr.hxx new file mode 100644 index 0000000000..341b08131c --- /dev/null +++ b/plugins/SpellChecker/hunspell/hashmgr.hxx @@ -0,0 +1,69 @@ +#ifndef _HASHMGR_HXX_ +#define _HASHMGR_HXX_ + +#include "hunvisapi.h" + +#include + +#include "htypes.hxx" +#include "filemgr.hxx" + +enum flag { FLAG_CHAR, FLAG_LONG, FLAG_NUM, FLAG_UNI }; + +class LIBHUNSPELL_DLL_EXPORTED HashMgr +{ + int tablesize; + struct hentry ** tableptr; + int userword; + flag flag_mode; + int complexprefixes; + int utf8; + unsigned short forbiddenword; + int langnum; + char * enc; + char * lang; + struct cs_info * csconv; + char * ignorechars; + unsigned short * ignorechars_utf16; + int ignorechars_utf16_len; + int numaliasf; // flag vector `compression' with aliases + unsigned short ** aliasf; + unsigned short * aliasflen; + int numaliasm; // morphological desciption `compression' with aliases + char ** aliasm; + + +public: + HashMgr(const char * tpath, const char * apath, const char * key = NULL); + ~HashMgr(); + + struct hentry * lookup(const char *) const; + int hash(const char *) const; + struct hentry * walk_hashtable(int & col, struct hentry * hp) const; + + int add(const char * word); + int add_with_affix(const char * word, const char * pattern); + int remove(const char * word); + int decode_flags(unsigned short ** result, char * flags, FileMgr * af); + unsigned short decode_flag(const char * flag); + char * encode_flag(unsigned short flag); + int is_aliasf(); + int get_aliasf(int index, unsigned short ** fvec, FileMgr * af); + int is_aliasm(); + char * get_aliasm(int index); + +private: + int get_clen_and_captype(const char * word, int wbl, int * captype); + int load_tables(const char * tpath, const char * key); + int add_word(const char * word, int wbl, int wcl, unsigned short * ap, + int al, const char * desc, bool onlyupcase); + int load_config(const char * affpath, const char * key); + int parse_aliasf(char * line, FileMgr * af); + int add_hidden_capitalized_word(char * word, int wbl, int wcl, + unsigned short * flags, int al, char * dp, int captype); + int parse_aliasm(char * line, FileMgr * af); + int remove_forbidden_flag(const char * word); + +}; + +#endif diff --git a/plugins/SpellChecker/hunspell/htypes.hxx b/plugins/SpellChecker/hunspell/htypes.hxx new file mode 100644 index 0000000000..5b6c90966b --- /dev/null +++ b/plugins/SpellChecker/hunspell/htypes.hxx @@ -0,0 +1,32 @@ +#ifndef _HTYPES_HXX_ +#define _HTYPES_HXX_ + +#define ROTATE_LEN 5 + +#define ROTATE(v,q) \ + (v) = ((v) << (q)) | (((v) >> (32 - q)) & ((1 << (q))-1)); + +// hentry options +#define H_OPT (1 << 0) +#define H_OPT_ALIASM (1 << 1) +#define H_OPT_PHON (1 << 2) + +// see also csutil.hxx +#define HENTRY_WORD(h) &(h->word[0]) + +// approx. number of user defined words +#define USERWORD 1000 + +struct hentry +{ + unsigned char blen; // word length in bytes + unsigned char clen; // word length in characters (different for UTF-8 enc.) + short alen; // length of affix flag vector + unsigned short * astr; // affix flag vector + struct hentry * next; // next word with same hash code + struct hentry * next_homonym; // next homonym word (with same hash code) + char var; // variable fields (only for special pronounciation yet) + char word[1]; // variable-length word (8-bit or UTF-8 encoding) +}; + +#endif diff --git a/plugins/SpellChecker/hunspell/hunspell.cxx b/plugins/SpellChecker/hunspell/hunspell.cxx new file mode 100644 index 0000000000..8e00e1b8cc --- /dev/null +++ b/plugins/SpellChecker/hunspell/hunspell.cxx @@ -0,0 +1,2011 @@ +#include "license.hunspell" +#include "license.myspell" + +#include +#include +#include + +#include "hunspell.hxx" +#include "hunspell.h" +#ifndef MOZILLA_CLIENT +# include "config.h" +#endif +#include "csutil.hxx" + +Hunspell::Hunspell(const char * affpath, const char * dpath, const char * key) +{ + encoding = NULL; + csconv = NULL; + utf8 = 0; + complexprefixes = 0; + affixpath = mystrdup(affpath); + maxdic = 0; + + /* first set up the hash manager */ + pHMgr[0] = new HashMgr(dpath, affpath, key); + if (pHMgr[0]) maxdic = 1; + + /* next set up the affix manager */ + /* it needs access to the hash manager lookup methods */ + pAMgr = new AffixMgr(affpath, pHMgr, &maxdic, key); + + /* get the preferred try string and the dictionary */ + /* encoding from the Affix Manager for that dictionary */ + char * try_string = pAMgr->get_try_string(); + encoding = pAMgr->get_encoding(); + langnum = pAMgr->get_langnum(); + utf8 = pAMgr->get_utf8(); + if (!utf8) + csconv = get_current_cs(encoding); + complexprefixes = pAMgr->get_complexprefixes(); + wordbreak = pAMgr->get_breaktable(); + + /* and finally set up the suggestion manager */ + pSMgr = new SuggestMgr(try_string, MAXSUGGESTION, pAMgr); + if (try_string) free(try_string); +} + +Hunspell::~Hunspell() +{ + if (pSMgr) delete pSMgr; + if (pAMgr) delete pAMgr; + for (int i = 0; i < maxdic; i++) delete pHMgr[i]; + maxdic = 0; + pSMgr = NULL; + pAMgr = NULL; +#ifdef MOZILLA_CLIENT + delete [] csconv; +#endif + csconv= NULL; + if (encoding) free(encoding); + encoding = NULL; + if (affixpath) free(affixpath); + affixpath = NULL; +} + +// load extra dictionaries +int Hunspell::add_dic(const char * dpath, const char * key) { + if (maxdic == MAXDIC || !affixpath) return 1; + pHMgr[maxdic] = new HashMgr(dpath, affixpath, key); + if (pHMgr[maxdic]) maxdic++; else return 1; + return 0; +} + +// make a copy of src at destination while removing all leading +// blanks and removing any trailing periods after recording +// their presence with the abbreviation flag +// also since already going through character by character, +// set the capitalization type +// return the length of the "cleaned" (and UTF-8 encoded) word + +int Hunspell::cleanword2(char * dest, const char * src, + w_char * dest_utf, int * nc, int * pcaptype, int * pabbrev) +{ + unsigned char * p = (unsigned char *) dest; + const unsigned char * q = (const unsigned char * ) src; + + // first skip over any leading blanks + while ((*q != '\0') && (*q == ' ')) q++; + + // now strip off any trailing periods (recording their presence) + *pabbrev = 0; + int nl = strlen((const char *)q); + while ((nl > 0) && (*(q+nl-1)=='.')) { + nl--; + (*pabbrev)++; + } + + // if no characters are left it can't be capitalized + if (nl <= 0) { + *pcaptype = NOCAP; + *p = '\0'; + return 0; + } + + strncpy(dest, (char *) q, nl); + *(dest + nl) = '\0'; + nl = strlen(dest); + if (utf8) { + *nc = u8_u16(dest_utf, MAXWORDLEN, dest); + // don't check too long words + if (*nc >= MAXWORDLEN) return 0; + if (*nc == -1) { // big Unicode character (non BMP area) + *pcaptype = NOCAP; + return nl; + } + *pcaptype = get_captype_utf8(dest_utf, *nc, langnum); + } else { + *pcaptype = get_captype(dest, nl, csconv); + *nc = nl; + } + return nl; +} + +int Hunspell::cleanword(char * dest, const char * src, + int * pcaptype, int * pabbrev) +{ + unsigned char * p = (unsigned char *) dest; + const unsigned char * q = (const unsigned char * ) src; + int firstcap = 0; + + // first skip over any leading blanks + while ((*q != '\0') && (*q == ' ')) q++; + + // now strip off any trailing periods (recording their presence) + *pabbrev = 0; + int nl = strlen((const char *)q); + while ((nl > 0) && (*(q+nl-1)=='.')) { + nl--; + (*pabbrev)++; + } + + // if no characters are left it can't be capitalized + if (nl <= 0) { + *pcaptype = NOCAP; + *p = '\0'; + return 0; + } + + // now determine the capitalization type of the first nl letters + int ncap = 0; + int nneutral = 0; + int nc = 0; + + if (!utf8) { + while (nl > 0) { + nc++; + if (csconv[(*q)].ccase) ncap++; + if (csconv[(*q)].cupper == csconv[(*q)].clower) nneutral++; + *p++ = *q++; + nl--; + } + // remember to terminate the destination string + *p = '\0'; + firstcap = csconv[(unsigned char)(*dest)].ccase; + } else { + unsigned short idx; + w_char t[MAXWORDLEN]; + nc = u8_u16(t, MAXWORDLEN, src); + for (int i = 0; i < nc; i++) { + idx = (t[i].h << 8) + t[i].l; + unsigned short low = unicodetolower(idx, langnum); + if (idx != low) ncap++; + if (unicodetoupper(idx, langnum) == low) nneutral++; + } + u16_u8(dest, MAXWORDUTF8LEN, t, nc); + if (ncap) { + idx = (t[0].h << 8) + t[0].l; + firstcap = (idx != unicodetolower(idx, langnum)); + } + } + + // now finally set the captype + if (ncap == 0) { + *pcaptype = NOCAP; + } else if ((ncap == 1) && firstcap) { + *pcaptype = INITCAP; + } else if ((ncap == nc) || ((ncap + nneutral) == nc)){ + *pcaptype = ALLCAP; + } else if ((ncap > 1) && firstcap) { + *pcaptype = HUHINITCAP; + } else { + *pcaptype = HUHCAP; + } + return strlen(dest); +} + +void Hunspell::mkallcap(char * p) +{ + if (utf8) { + w_char u[MAXWORDLEN]; + int nc = u8_u16(u, MAXWORDLEN, p); + unsigned short idx; + for (int i = 0; i < nc; i++) { + idx = (u[i].h << 8) + u[i].l; + if (idx != unicodetoupper(idx, langnum)) { + u[i].h = (unsigned char) (unicodetoupper(idx, langnum) >> 8); + u[i].l = (unsigned char) (unicodetoupper(idx, langnum) & 0x00FF); + } + } + u16_u8(p, MAXWORDUTF8LEN, u, nc); + } else { + while (*p != '\0') { + *p = csconv[((unsigned char) *p)].cupper; + p++; + } + } +} + +int Hunspell::mkallcap2(char * p, w_char * u, int nc) +{ + if (utf8) { + unsigned short idx; + for (int i = 0; i < nc; i++) { + idx = (u[i].h << 8) + u[i].l; + unsigned short up = unicodetoupper(idx, langnum); + if (idx != up) { + u[i].h = (unsigned char) (up >> 8); + u[i].l = (unsigned char) (up & 0x00FF); + } + } + u16_u8(p, MAXWORDUTF8LEN, u, nc); + return strlen(p); + } else { + while (*p != '\0') { + *p = csconv[((unsigned char) *p)].cupper; + p++; + } + } + return nc; +} + + +void Hunspell::mkallsmall(char * p) +{ + while (*p != '\0') { + *p = csconv[((unsigned char) *p)].clower; + p++; + } +} + +int Hunspell::mkallsmall2(char * p, w_char * u, int nc) +{ + if (utf8) { + unsigned short idx; + for (int i = 0; i < nc; i++) { + idx = (u[i].h << 8) + u[i].l; + unsigned short low = unicodetolower(idx, langnum); + if (idx != low) { + u[i].h = (unsigned char) (low >> 8); + u[i].l = (unsigned char) (low & 0x00FF); + } + } + u16_u8(p, MAXWORDUTF8LEN, u, nc); + return strlen(p); + } else { + while (*p != '\0') { + *p = csconv[((unsigned char) *p)].clower; + p++; + } + } + return nc; +} + +// convert UTF-8 sharp S codes to latin 1 +char * Hunspell::sharps_u8_l1(char * dest, char * source) { + char * p = dest; + *p = *source; + for (p++, source++; *(source - 1); p++, source++) { + *p = *source; + if (*source == '\x9F') *--p = '\xDF'; + } + return dest; +} + +// recursive search for right ss - sharp s permutations +hentry * Hunspell::spellsharps(char * base, char * pos, int n, + int repnum, char * tmp, int * info, char **root) { + pos = strstr(pos, "ss"); + if (pos && (n < MAXSHARPS)) { + *pos = '\xC3'; + *(pos + 1) = '\x9F'; + hentry * h = spellsharps(base, pos + 2, n + 1, repnum + 1, tmp, info, root); + if (h) return h; + *pos = 's'; + *(pos + 1) = 's'; + h = spellsharps(base, pos + 2, n + 1, repnum, tmp, info, root); + if (h) return h; + } else if (repnum > 0) { + if (utf8) return checkword(base, info, root); + return checkword(sharps_u8_l1(tmp, base), info, root); + } + return NULL; +} + +int Hunspell::is_keepcase(const hentry * rv) { + return pAMgr && rv->astr && pAMgr->get_keepcase() && + TESTAFF(rv->astr, pAMgr->get_keepcase(), rv->alen); +} + +/* insert a word to the beginning of the suggestion array and return ns */ +int Hunspell::insert_sug(char ***slst, char * word, int ns) { + char * dup = mystrdup(word); + if (!dup) return ns; + if (ns == MAXSUGGESTION) { + ns--; + free((*slst)[ns]); + } + for (int k = ns; k > 0; k--) (*slst)[k] = (*slst)[k - 1]; + (*slst)[0] = dup; + return ns + 1; +} + +int Hunspell::spell(const char * word, int * info, char ** root) +{ + struct hentry * rv=NULL; + // need larger vector. For example, Turkish capital letter I converted a + // 2-byte UTF-8 character (dotless i) by mkallsmall. + char cw[MAXWORDUTF8LEN]; + char wspace[MAXWORDUTF8LEN]; + w_char unicw[MAXWORDLEN]; + // Hunspell supports XML input of the simplified API (see manual) + if (strcmp(word, SPELL_XML) == 0) return 1; + int nc = strlen(word); + int wl2 = 0; + if (utf8) { + if (nc >= MAXWORDUTF8LEN) return 0; + } else { + if (nc >= MAXWORDLEN) return 0; + } + int captype = 0; + int abbv = 0; + int wl = 0; + + // input conversion + RepList * rl = (pAMgr) ? pAMgr->get_iconvtable() : NULL; + if (rl && rl->conv(word, wspace)) wl = cleanword2(cw, wspace, unicw, &nc, &captype, &abbv); + else wl = cleanword2(cw, word, unicw, &nc, &captype, &abbv); + + int info2 = 0; + if (wl == 0 || maxdic == 0) return 1; + if (root) *root = NULL; + + // allow numbers with dots, dashes and commas (but forbid double separators: "..", "--" etc.) + enum { NBEGIN, NNUM, NSEP }; + int nstate = NBEGIN; + int i; + + for (i = 0; (i < wl); i++) { + if ((cw[i] <= '9') && (cw[i] >= '0')) { + nstate = NNUM; + } else if ((cw[i] == ',') || (cw[i] == '.') || (cw[i] == '-')) { + if ((nstate == NSEP) || (i == 0)) break; + nstate = NSEP; + } else break; + } + if ((i == wl) && (nstate == NNUM)) return 1; + if (!info) info = &info2; else *info = 0; + + switch(captype) { + case HUHCAP: + case HUHINITCAP: + *info += SPELL_ORIGCAP; + case NOCAP: { + rv = checkword(cw, info, root); + if ((abbv) && !(rv)) { + memcpy(wspace,cw,wl); + *(wspace+wl) = '.'; + *(wspace+wl+1) = '\0'; + rv = checkword(wspace, info, root); + } + break; + } + case ALLCAP: { + *info += SPELL_ORIGCAP; + rv = checkword(cw, info, root); + if (rv) break; + if (abbv) { + memcpy(wspace,cw,wl); + *(wspace+wl) = '.'; + *(wspace+wl+1) = '\0'; + rv = checkword(wspace, info, root); + if (rv) break; + } + // Spec. prefix handling for Catalan, French, Italian: + // prefixes separated by apostrophe (SANT'ELIA -> Sant'+Elia). + if (pAMgr && strchr(cw, '\'')) { + wl = mkallsmall2(cw, unicw, nc); + //There are no really sane circumstances where this could fail, + //but anyway... + if (char * apostrophe = strchr(cw, '\'')) { + if (utf8) { + w_char tmpword[MAXWORDLEN]; + *apostrophe = '\0'; + wl2 = u8_u16(tmpword, MAXWORDLEN, cw); + *apostrophe = '\''; + if (wl2 < nc) { + mkinitcap2(apostrophe + 1, unicw + wl2 + 1, nc - wl2 - 1); + rv = checkword(cw, info, root); + if (rv) break; + } + } else { + mkinitcap2(apostrophe + 1, unicw, nc); + rv = checkword(cw, info, root); + if (rv) break; + } + } + mkinitcap2(cw, unicw, nc); + rv = checkword(cw, info, root); + if (rv) break; + } + if (pAMgr && pAMgr->get_checksharps() && strstr(cw, "SS")) { + char tmpword[MAXWORDUTF8LEN]; + wl = mkallsmall2(cw, unicw, nc); + memcpy(wspace,cw,(wl+1)); + rv = spellsharps(wspace, wspace, 0, 0, tmpword, info, root); + if (!rv) { + wl2 = mkinitcap2(cw, unicw, nc); + rv = spellsharps(cw, cw, 0, 0, tmpword, info, root); + } + if ((abbv) && !(rv)) { + *(wspace+wl) = '.'; + *(wspace+wl+1) = '\0'; + rv = spellsharps(wspace, wspace, 0, 0, tmpword, info, root); + if (!rv) { + memcpy(wspace, cw, wl2); + *(wspace+wl2) = '.'; + *(wspace+wl2+1) = '\0'; + rv = spellsharps(wspace, wspace, 0, 0, tmpword, info, root); + } + } + if (rv) break; + } + } + case INITCAP: { + *info += SPELL_ORIGCAP; + wl = mkallsmall2(cw, unicw, nc); + memcpy(wspace,cw,(wl+1)); + wl2 = mkinitcap2(cw, unicw, nc); + if (captype == INITCAP) *info += SPELL_INITCAP; + rv = checkword(cw, info, root); + if (captype == INITCAP) *info -= SPELL_INITCAP; + // forbid bad capitalization + // (for example, ijs -> Ijs instead of IJs in Dutch) + // use explicit forms in dic: Ijs/F (F = FORBIDDENWORD flag) + if (*info & SPELL_FORBIDDEN) { + rv = NULL; + break; + } + if (rv && is_keepcase(rv) && (captype == ALLCAP)) rv = NULL; + if (rv) break; + + rv = checkword(wspace, info, root); + if (abbv && !rv) { + + *(wspace+wl) = '.'; + *(wspace+wl+1) = '\0'; + rv = checkword(wspace, info, root); + if (!rv) { + memcpy(wspace, cw, wl2); + *(wspace+wl2) = '.'; + *(wspace+wl2+1) = '\0'; + if (captype == INITCAP) *info += SPELL_INITCAP; + rv = checkword(wspace, info, root); + if (captype == INITCAP) *info -= SPELL_INITCAP; + if (rv && is_keepcase(rv) && (captype == ALLCAP)) rv = NULL; + break; + } + } + if (rv && is_keepcase(rv) && + ((captype == ALLCAP) || + // if CHECKSHARPS: KEEPCASE words with \xDF are allowed + // in INITCAP form, too. + !(pAMgr->get_checksharps() && + ((utf8 && strstr(wspace, "\xC3\x9F")) || + (!utf8 && strchr(wspace, '\xDF')))))) rv = NULL; + break; + } + } + + if (rv) { + if (pAMgr && pAMgr->get_warn() && rv->astr && + TESTAFF(rv->astr, pAMgr->get_warn(), rv->alen)) { + *info += SPELL_WARN; + if (pAMgr->get_forbidwarn()) return 0; + return HUNSPELL_OK_WARN; + } + return HUNSPELL_OK; + } + + // recursive breaking at break points + if (wordbreak) { + char * s; + char r; + int nbr = 0; + wl = strlen(cw); + int numbreak = pAMgr ? pAMgr->get_numbreak() : 0; + + // calculate break points for recursion limit + for (int j = 0; j < numbreak; j++) { + s = cw; + do { + s = (char *) strstr(s, wordbreak[j]); + if (s) { + nbr++; + s++; + } + } while (s); + } + if (nbr >= 10) return 0; + + // check boundary patterns (^begin and end$) + for (int j = 0; j < numbreak; j++) { + int plen = strlen(wordbreak[j]); + if (plen == 1 || plen > wl) continue; + if (wordbreak[j][0] == '^' && strncmp(cw, wordbreak[j] + 1, plen - 1) == 0 + && spell(cw + plen - 1)) return 1; + if (wordbreak[j][plen - 1] == '$' && + strncmp(cw + wl - plen + 1, wordbreak[j], plen - 1) == 0) { + r = cw[wl - plen + 1]; + cw[wl - plen + 1] = '\0'; + if (spell(cw)) return 1; + cw[wl - plen + 1] = r; + } + } + + // other patterns + for (int j = 0; j < numbreak; j++) { + int plen = strlen(wordbreak[j]); + s=(char *) strstr(cw, wordbreak[j]); + if (s && (s > cw) && (s < cw + wl - plen)) { + if (!spell(s + plen)) continue; + r = *s; + *s = '\0'; + // examine 2 sides of the break point + if (spell(cw)) return 1; + *s = r; + + // LANG_hu: spec. dash rule + if (langnum == LANG_hu && strcmp(wordbreak[j], "-") == 0) { + r = s[1]; + s[1] = '\0'; + if (spell(cw)) return 1; // check the first part with dash + s[1] = r; + } + // end of LANG speficic region + + } + } + } + + return 0; +} + +struct hentry * Hunspell::checkword(const char * w, int * info, char ** root) +{ + struct hentry * he = NULL; + int len, i; + char w2[MAXWORDUTF8LEN]; + const char * word; + + char * ignoredchars = pAMgr->get_ignore(); + if (ignoredchars != NULL) { + strcpy(w2, w); + if (utf8) { + int ignoredchars_utf16_len; + unsigned short * ignoredchars_utf16 = pAMgr->get_ignore_utf16(&ignoredchars_utf16_len); + remove_ignored_chars_utf(w2, ignoredchars_utf16, ignoredchars_utf16_len); + } else { + remove_ignored_chars(w2,ignoredchars); + } + word = w2; + } else word = w; + + len = strlen(word); + + if (!len) + return NULL; + + // word reversing wrapper for complex prefixes + if (complexprefixes) { + if (word != w2) { + strcpy(w2, word); + word = w2; + } + if (utf8) reverseword_utf(w2); else reverseword(w2); + } + + // look word in hash table + for (i = 0; (i < maxdic) && !he; i ++) { + he = (pHMgr[i])->lookup(word); + + // check forbidden and onlyincompound words + if ((he) && (he->astr) && (pAMgr) && TESTAFF(he->astr, pAMgr->get_forbiddenword(), he->alen)) { + if (info) *info += SPELL_FORBIDDEN; + // LANG_hu section: set dash information for suggestions + if (langnum == LANG_hu) { + if (pAMgr->get_compoundflag() && + TESTAFF(he->astr, pAMgr->get_compoundflag(), he->alen)) { + if (info) *info += SPELL_COMPOUND; + } + } + return NULL; + } + + // he = next not needaffix, onlyincompound homonym or onlyupcase word + while (he && (he->astr) && + ((pAMgr->get_needaffix() && TESTAFF(he->astr, pAMgr->get_needaffix(), he->alen)) || + (pAMgr->get_onlyincompound() && TESTAFF(he->astr, pAMgr->get_onlyincompound(), he->alen)) || + (info && (*info & SPELL_INITCAP) && TESTAFF(he->astr, ONLYUPCASEFLAG, he->alen)) + )) he = he->next_homonym; + } + + // check with affixes + if (!he && pAMgr) { + // try stripping off affixes */ + he = pAMgr->affix_check(word, len, 0); + + // check compound restriction and onlyupcase + if (he && he->astr && ( + (pAMgr->get_onlyincompound() && + TESTAFF(he->astr, pAMgr->get_onlyincompound(), he->alen)) || + (info && (*info & SPELL_INITCAP) && + TESTAFF(he->astr, ONLYUPCASEFLAG, he->alen)))) { + he = NULL; + } + + if (he) { + if ((he->astr) && (pAMgr) && TESTAFF(he->astr, pAMgr->get_forbiddenword(), he->alen)) { + if (info) *info += SPELL_FORBIDDEN; + return NULL; + } + if (root) { + *root = mystrdup(he->word); + if (*root && complexprefixes) { + if (utf8) reverseword_utf(*root); else reverseword(*root); + } + } + // try check compound word + } else if (pAMgr->get_compound()) { + he = pAMgr->compound_check(word, len, 0, 0, 100, 0, NULL, 0, 0, info); + // LANG_hu section: `moving rule' with last dash + if ((!he) && (langnum == LANG_hu) && (word[len-1] == '-')) { + char * dup = mystrdup(word); + if (!dup) return NULL; + dup[len-1] = '\0'; + he = pAMgr->compound_check(dup, len-1, -5, 0, 100, 0, NULL, 1, 0, info); + free(dup); + } + // end of LANG speficic region + if (he) { + if (root) { + *root = mystrdup(he->word); + if (*root && complexprefixes) { + if (utf8) reverseword_utf(*root); else reverseword(*root); + } + } + if (info) *info += SPELL_COMPOUND; + } + } + + } + + return he; +} + +int Hunspell::suggest(char*** slst, const char * word) +{ + int onlycmpdsug = 0; + char cw[MAXWORDUTF8LEN]; + char wspace[MAXWORDUTF8LEN]; + if (!pSMgr || maxdic == 0) return 0; + w_char unicw[MAXWORDLEN]; + *slst = NULL; + // process XML input of the simplified API (see manual) + if (strncmp(word, SPELL_XML, sizeof(SPELL_XML) - 3) == 0) { + return spellml(slst, word); + } + int nc = strlen(word); + if (utf8) { + if (nc >= MAXWORDUTF8LEN) return 0; + } else { + if (nc >= MAXWORDLEN) return 0; + } + int captype = 0; + int abbv = 0; + int wl = 0; + + // input conversion + RepList * rl = (pAMgr) ? pAMgr->get_iconvtable() : NULL; + if (rl && rl->conv(word, wspace)) wl = cleanword2(cw, wspace, unicw, &nc, &captype, &abbv); + else wl = cleanword2(cw, word, unicw, &nc, &captype, &abbv); + + if (wl == 0) return 0; + int ns = 0; + int capwords = 0; + + // check capitalized form for FORCEUCASE + if (pAMgr && captype == NOCAP && pAMgr->get_forceucase()) { + int info = SPELL_ORIGCAP; + char ** wlst; + if (checkword(cw, &info, NULL)) { + if (*slst) { + wlst = *slst; + } else { + wlst = (char **) malloc(MAXSUGGESTION * sizeof(char *)); + if (wlst == NULL) return -1; + *slst = wlst; + for (int i = 0; i < MAXSUGGESTION; i++) { + wlst[i] = NULL; + } + } + wlst[0] = mystrdup(cw); + mkinitcap(wlst[0]); + return 1; + } + } + + switch(captype) { + case NOCAP: { + ns = pSMgr->suggest(slst, cw, ns, &onlycmpdsug); + break; + } + + case INITCAP: { + capwords = 1; + ns = pSMgr->suggest(slst, cw, ns, &onlycmpdsug); + if (ns == -1) break; + memcpy(wspace,cw,(wl+1)); + mkallsmall2(wspace, unicw, nc); + ns = pSMgr->suggest(slst, wspace, ns, &onlycmpdsug); + break; + } + case HUHINITCAP: + capwords = 1; + case HUHCAP: { + ns = pSMgr->suggest(slst, cw, ns, &onlycmpdsug); + if (ns != -1) { + int prevns; + // something.The -> something. The + char * dot = strchr(cw, '.'); + if (dot && (dot > cw)) { + int captype_; + if (utf8) { + w_char w_[MAXWORDLEN]; + int wl_ = u8_u16(w_, MAXWORDLEN, dot + 1); + captype_ = get_captype_utf8(w_, wl_, langnum); + } else captype_ = get_captype(dot+1, strlen(dot+1), csconv); + if (captype_ == INITCAP) { + char * st = mystrdup(cw); + if (st) st = (char *) realloc(st, wl + 2); + if (st) { + st[(dot - cw) + 1] = ' '; + strcpy(st + (dot - cw) + 2, dot + 1); + ns = insert_sug(slst, st, ns); + free(st); + } + } + } + if (captype == HUHINITCAP) { + // TheOpenOffice.org -> The OpenOffice.org + memcpy(wspace,cw,(wl+1)); + mkinitsmall2(wspace, unicw, nc); + ns = pSMgr->suggest(slst, wspace, ns, &onlycmpdsug); + } + memcpy(wspace,cw,(wl+1)); + mkallsmall2(wspace, unicw, nc); + if (spell(wspace)) ns = insert_sug(slst, wspace, ns); + prevns = ns; + ns = pSMgr->suggest(slst, wspace, ns, &onlycmpdsug); + if (captype == HUHINITCAP) { + mkinitcap2(wspace, unicw, nc); + if (spell(wspace)) ns = insert_sug(slst, wspace, ns); + ns = pSMgr->suggest(slst, wspace, ns, &onlycmpdsug); + } + // aNew -> "a New" (instead of "a new") + for (int j = prevns; j < ns; j++) { + char * space = strchr((*slst)[j],' '); + if (space) { + int slen = strlen(space + 1); + // different case after space (need capitalisation) + if ((slen < wl) && strcmp(cw + wl - slen, space + 1)) { + w_char w[MAXWORDLEN]; + int wc = 0; + char * r = (*slst)[j]; + if (utf8) wc = u8_u16(w, MAXWORDLEN, space + 1); + mkinitcap2(space + 1, w, wc); + // set as first suggestion + for (int k = j; k > 0; k--) (*slst)[k] = (*slst)[k - 1]; + (*slst)[0] = r; + } + } + } + } + break; + } + + case ALLCAP: { + memcpy(wspace, cw, (wl+1)); + mkallsmall2(wspace, unicw, nc); + ns = pSMgr->suggest(slst, wspace, ns, &onlycmpdsug); + if (ns == -1) break; + if (pAMgr && pAMgr->get_keepcase() && spell(wspace)) + ns = insert_sug(slst, wspace, ns); + mkinitcap2(wspace, unicw, nc); + ns = pSMgr->suggest(slst, wspace, ns, &onlycmpdsug); + for (int j=0; j < ns; j++) { + mkallcap((*slst)[j]); + if (pAMgr && pAMgr->get_checksharps()) { + char * pos; + if (utf8) { + pos = strstr((*slst)[j], "\xC3\x9F"); + while (pos) { + *pos = 'S'; + *(pos+1) = 'S'; + pos = strstr(pos+2, "\xC3\x9F"); + } + } else { + pos = strchr((*slst)[j], '\xDF'); + while (pos) { + (*slst)[j] = (char *) realloc((*slst)[j], strlen((*slst)[j]) + 2); + mystrrep((*slst)[j], "\xDF", "SS"); + pos = strchr((*slst)[j], '\xDF'); + } + } + } + } + break; + } + } + + // LANG_hu section: replace '-' with ' ' in Hungarian + if (langnum == LANG_hu) { + for (int j=0; j < ns; j++) { + char * pos = strchr((*slst)[j],'-'); + if (pos) { + int info; + char w[MAXWORDUTF8LEN]; + *pos = '\0'; + strcpy(w, (*slst)[j]); + strcat(w, pos + 1); + spell(w, &info, NULL); + if ((info & SPELL_COMPOUND) && (info & SPELL_FORBIDDEN)) { + *pos = ' '; + } else *pos = '-'; + } + } + } + // END OF LANG_hu section + + // try ngram approach since found nothing or only compound words + if (pAMgr && (ns == 0 || onlycmpdsug) && (pAMgr->get_maxngramsugs() != 0) && (*slst)) { + switch(captype) { + case NOCAP: { + ns = pSMgr->ngsuggest(*slst, cw, ns, pHMgr, maxdic); + break; + } + case HUHINITCAP: + capwords = 1; + case HUHCAP: { + memcpy(wspace,cw,(wl+1)); + mkallsmall2(wspace, unicw, nc); + ns = pSMgr->ngsuggest(*slst, wspace, ns, pHMgr, maxdic); + break; + } + case INITCAP: { + capwords = 1; + memcpy(wspace,cw,(wl+1)); + mkallsmall2(wspace, unicw, nc); + ns = pSMgr->ngsuggest(*slst, wspace, ns, pHMgr, maxdic); + break; + } + case ALLCAP: { + memcpy(wspace,cw,(wl+1)); + mkallsmall2(wspace, unicw, nc); + int oldns = ns; + ns = pSMgr->ngsuggest(*slst, wspace, ns, pHMgr, maxdic); + for (int j = oldns; j < ns; j++) + mkallcap((*slst)[j]); + break; + } + } + } + + // try dash suggestion (Afo-American -> Afro-American) + if (char * pos = strchr(cw, '-')) { + char * ppos = cw; + int nodashsug = 1; + char ** nlst = NULL; + int nn = 0; + int last = 0; + if (*slst) { + for (int j = 0; j < ns && nodashsug == 1; j++) { + if (strchr((*slst)[j], '-')) nodashsug = 0; + } + } + while (nodashsug && !last) { + if (*pos == '\0') last = 1; else *pos = '\0'; + if (!spell(ppos)) { + nn = suggest(&nlst, ppos); + for (int j = nn - 1; j >= 0; j--) { + strncpy(wspace, cw, ppos - cw); + strcpy(wspace + (ppos - cw), nlst[j]); + if (!last) { + strcat(wspace, "-"); + strcat(wspace, pos + 1); + } + ns = insert_sug(slst, wspace, ns); + free(nlst[j]); + } + if (nlst != NULL) free(nlst); + nodashsug = 0; + } + if (!last) { + *pos = '-'; + ppos = pos + 1; + pos = strchr(ppos, '-'); + } + if (!pos) pos = cw + strlen(cw); + } + } + + // word reversing wrapper for complex prefixes + if (complexprefixes) { + for (int j = 0; j < ns; j++) { + if (utf8) reverseword_utf((*slst)[j]); else reverseword((*slst)[j]); + } + } + + // capitalize + if (capwords) for (int j=0; j < ns; j++) { + mkinitcap((*slst)[j]); + } + + // expand suggestions with dot(s) + if (abbv && pAMgr && pAMgr->get_sugswithdots()) { + for (int j = 0; j < ns; j++) { + (*slst)[j] = (char *) realloc((*slst)[j], strlen((*slst)[j]) + 1 + abbv); + strcat((*slst)[j], word + strlen(word) - abbv); + } + } + + // remove bad capitalized and forbidden forms + if (pAMgr && (pAMgr->get_keepcase() || pAMgr->get_forbiddenword())) { + switch (captype) { + case INITCAP: + case ALLCAP: { + int l = 0; + for (int j=0; j < ns; j++) { + if (!strchr((*slst)[j],' ') && !spell((*slst)[j])) { + char s[MAXSWUTF8L]; + w_char w[MAXSWL]; + int len; + if (utf8) { + len = u8_u16(w, MAXSWL, (*slst)[j]); + } else { + strcpy(s, (*slst)[j]); + len = strlen(s); + } + mkallsmall2(s, w, len); + free((*slst)[j]); + if (spell(s)) { + (*slst)[l] = mystrdup(s); + if ((*slst)[l]) l++; + } else { + mkinitcap2(s, w, len); + if (spell(s)) { + (*slst)[l] = mystrdup(s); + if ((*slst)[l]) l++; + } + } + } else { + (*slst)[l] = (*slst)[j]; + l++; + } + } + ns = l; + } + } + } + + // remove duplications + int l = 0; + for (int j = 0; j < ns; j++) { + (*slst)[l] = (*slst)[j]; + for (int k = 0; k < l; k++) { + if (strcmp((*slst)[k], (*slst)[j]) == 0) { + free((*slst)[j]); + l--; + break; + } + } + l++; + } + ns = l; + + // output conversion + rl = (pAMgr) ? pAMgr->get_oconvtable() : NULL; + for (int j = 0; rl && j < ns; j++) { + if (rl->conv((*slst)[j], wspace)) { + free((*slst)[j]); + (*slst)[j] = mystrdup(wspace); + } + } + + // if suggestions removed by nosuggest, onlyincompound parameters + if (l == 0 && *slst) { + free(*slst); + *slst = NULL; + } + return l; +} + +void Hunspell::free_list(char *** slst, int n) { + freelist(slst, n); +} + +char * Hunspell::get_dic_encoding() +{ + return encoding; +} + +#ifdef HUNSPELL_EXPERIMENTAL +// XXX need UTF-8 support +int Hunspell::suggest_auto(char*** slst, const char * word) +{ + char cw[MAXWORDUTF8LEN]; + char wspace[MAXWORDUTF8LEN]; + if (!pSMgr || maxdic == 0) return 0; + int wl = strlen(word); + if (utf8) { + if (wl >= MAXWORDUTF8LEN) return 0; + } else { + if (wl >= MAXWORDLEN) return 0; + } + int captype = 0; + int abbv = 0; + wl = cleanword(cw, word, &captype, &abbv); + if (wl == 0) return 0; + int ns = 0; + *slst = NULL; // HU, nsug in pSMgr->suggest + + switch(captype) { + case NOCAP: { + ns = pSMgr->suggest_auto(slst, cw, ns); + if (ns>0) break; + break; + } + + case INITCAP: { + memcpy(wspace,cw,(wl+1)); + mkallsmall(wspace); + ns = pSMgr->suggest_auto(slst, wspace, ns); + for (int j=0; j < ns; j++) + mkinitcap((*slst)[j]); + ns = pSMgr->suggest_auto(slst, cw, ns); + break; + + } + + case HUHINITCAP: + case HUHCAP: { + ns = pSMgr->suggest_auto(slst, cw, ns); + if (ns == 0) { + memcpy(wspace,cw,(wl+1)); + mkallsmall(wspace); + ns = pSMgr->suggest_auto(slst, wspace, ns); + } + break; + } + + case ALLCAP: { + memcpy(wspace,cw,(wl+1)); + mkallsmall(wspace); + ns = pSMgr->suggest_auto(slst, wspace, ns); + + mkinitcap(wspace); + ns = pSMgr->suggest_auto(slst, wspace, ns); + + for (int j=0; j < ns; j++) + mkallcap((*slst)[j]); + break; + } + } + + // word reversing wrapper for complex prefixes + if (complexprefixes) { + for (int j = 0; j < ns; j++) { + if (utf8) reverseword_utf((*slst)[j]); else reverseword((*slst)[j]); + } + } + + // expand suggestions with dot(s) + if (abbv && pAMgr && pAMgr->get_sugswithdots()) { + for (int j = 0; j < ns; j++) { + (*slst)[j] = (char *) realloc((*slst)[j], strlen((*slst)[j]) + 1 + abbv); + strcat((*slst)[j], word + strlen(word) - abbv); + } + } + + // LANG_hu section: replace '-' with ' ' in Hungarian + if (langnum == LANG_hu) { + for (int j=0; j < ns; j++) { + char * pos = strchr((*slst)[j],'-'); + if (pos) { + int info; + char w[MAXWORDUTF8LEN]; + *pos = '\0'; + strcpy(w, (*slst)[j]); + strcat(w, pos + 1); + spell(w, &info, NULL); + if ((info & SPELL_COMPOUND) && (info & SPELL_FORBIDDEN)) { + *pos = ' '; + } else *pos = '-'; + } + } + } + // END OF LANG_hu section + return ns; +} +#endif + +int Hunspell::stem(char*** slst, char ** desc, int n) +{ + char result[MAXLNLEN]; + char result2[MAXLNLEN]; + *slst = NULL; + if (n == 0) return 0; + *result2 = '\0'; + for (int i = 0; i < n; i++) { + *result = '\0'; + // add compound word parts (except the last one) + char * s = (char *) desc[i]; + char * part = strstr(s, MORPH_PART); + if (part) { + char * nextpart = strstr(part + 1, MORPH_PART); + while (nextpart) { + copy_field(result + strlen(result), part, MORPH_PART); + part = nextpart; + nextpart = strstr(part + 1, MORPH_PART); + } + s = part; + } + + char **pl; + char tok[MAXLNLEN]; + strcpy(tok, s); + char * alt = strstr(tok, " | "); + while (alt) { + alt[1] = MSEP_ALT; + alt = strstr(alt, " | "); + } + int pln = line_tok(tok, &pl, MSEP_ALT); + for (int k = 0; k < pln; k++) { + // add derivational suffixes + if (strstr(pl[k], MORPH_DERI_SFX)) { + // remove inflectional suffixes + char * is = strstr(pl[k], MORPH_INFL_SFX); + if (is) *is = '\0'; + char * sg = pSMgr->suggest_gen(&(pl[k]), 1, pl[k]); + if (sg) { + char ** gen; + int genl = line_tok(sg, &gen, MSEP_REC); + free(sg); + for (int j = 0; j < genl; j++) { + sprintf(result2 + strlen(result2), "%c%s%s", + MSEP_REC, result, gen[j]); + } + freelist(&gen, genl); + } + } else { + sprintf(result2 + strlen(result2), "%c%s", MSEP_REC, result); + if (strstr(pl[k], MORPH_SURF_PFX)) { + copy_field(result2 + strlen(result2), pl[k], MORPH_SURF_PFX); + } + copy_field(result2 + strlen(result2), pl[k], MORPH_STEM); + } + } + freelist(&pl, pln); + } + int sln = line_tok(result2, slst, MSEP_REC); + return uniqlist(*slst, sln); + +} + +int Hunspell::stem(char*** slst, const char * word) +{ + char ** pl; + int pln = analyze(&pl, word); + int pln2 = stem(slst, pl, pln); + freelist(&pl, pln); + return pln2; +} + +#ifdef HUNSPELL_EXPERIMENTAL +int Hunspell::suggest_pos_stems(char*** slst, const char * word) +{ + char cw[MAXWORDUTF8LEN]; + char wspace[MAXWORDUTF8LEN]; + if (! pSMgr || maxdic == 0) return 0; + int wl = strlen(word); + if (utf8) { + if (wl >= MAXWORDUTF8LEN) return 0; + } else { + if (wl >= MAXWORDLEN) return 0; + } + int captype = 0; + int abbv = 0; + wl = cleanword(cw, word, &captype, &abbv); + if (wl == 0) return 0; + + int ns = 0; // ns=0 = normalized input + + *slst = NULL; // HU, nsug in pSMgr->suggest + + switch(captype) { + case HUHCAP: + case NOCAP: { + ns = pSMgr->suggest_pos_stems(slst, cw, ns); + + if ((abbv) && (ns == 0)) { + memcpy(wspace,cw,wl); + *(wspace+wl) = '.'; + *(wspace+wl+1) = '\0'; + ns = pSMgr->suggest_pos_stems(slst, wspace, ns); + } + + break; + } + + case INITCAP: { + + ns = pSMgr->suggest_pos_stems(slst, cw, ns); + + if (ns == 0 || ((*slst)[0][0] == '#')) { + memcpy(wspace,cw,(wl+1)); + mkallsmall(wspace); + ns = pSMgr->suggest_pos_stems(slst, wspace, ns); + } + + break; + + } + + case ALLCAP: { + ns = pSMgr->suggest_pos_stems(slst, cw, ns); + if (ns != 0) break; + + memcpy(wspace,cw,(wl+1)); + mkallsmall(wspace); + ns = pSMgr->suggest_pos_stems(slst, wspace, ns); + + if (ns == 0) { + mkinitcap(wspace); + ns = pSMgr->suggest_pos_stems(slst, wspace, ns); + } + break; + } + } + + return ns; +} +#endif // END OF HUNSPELL_EXPERIMENTAL CODE + +const char * Hunspell::get_wordchars() +{ + return pAMgr->get_wordchars(); +} + +unsigned short * Hunspell::get_wordchars_utf16(int * len) +{ + return pAMgr->get_wordchars_utf16(len); +} + +char * Hunspell::get_try_string() +{ + return pAMgr->get_try_string(); +} + +void Hunspell::mkinitcap(char * p) +{ + if (!utf8) { + if (*p != '\0') *p = csconv[((unsigned char)*p)].cupper; + } else { + int len; + w_char u[MAXWORDLEN]; + len = u8_u16(u, MAXWORDLEN, p); + unsigned short i = unicodetoupper((u[0].h << 8) + u[0].l, langnum); + u[0].h = (unsigned char) (i >> 8); + u[0].l = (unsigned char) (i & 0x00FF); + u16_u8(p, MAXWORDUTF8LEN, u, len); + } +} + +int Hunspell::mkinitcap2(char * p, w_char * u, int nc) +{ + if (!utf8) { + if (*p != '\0') *p = csconv[((unsigned char)*p)].cupper; + } else if (nc > 0) { + unsigned short i = unicodetoupper((u[0].h << 8) + u[0].l, langnum); + u[0].h = (unsigned char) (i >> 8); + u[0].l = (unsigned char) (i & 0x00FF); + u16_u8(p, MAXWORDUTF8LEN, u, nc); + return strlen(p); + } + return nc; +} + +int Hunspell::mkinitsmall2(char * p, w_char * u, int nc) +{ + if (!utf8) { + if (*p != '\0') *p = csconv[((unsigned char)*p)].clower; + } else if (nc > 0) { + unsigned short i = unicodetolower((u[0].h << 8) + u[0].l, langnum); + u[0].h = (unsigned char) (i >> 8); + u[0].l = (unsigned char) (i & 0x00FF); + u16_u8(p, MAXWORDUTF8LEN, u, nc); + return strlen(p); + } + return nc; +} + +int Hunspell::add(const char * word) +{ + if (pHMgr[0]) return (pHMgr[0])->add(word); + return 0; +} + +int Hunspell::add_with_affix(const char * word, const char * example) +{ + if (pHMgr[0]) return (pHMgr[0])->add_with_affix(word, example); + return 0; +} + +int Hunspell::remove(const char * word) +{ + if (pHMgr[0]) return (pHMgr[0])->remove(word); + return 0; +} + +const char * Hunspell::get_version() +{ + return pAMgr->get_version(); +} + +struct cs_info * Hunspell::get_csconv() +{ + return csconv; +} + +void Hunspell::cat_result(char * result, char * st) +{ + if (st) { + if (*result) mystrcat(result, "\n", MAXLNLEN); + mystrcat(result, st, MAXLNLEN); + free(st); + } +} + +int Hunspell::analyze(char*** slst, const char * word) +{ + char cw[MAXWORDUTF8LEN]; + char wspace[MAXWORDUTF8LEN]; + w_char unicw[MAXWORDLEN]; + int wl2 = 0; + *slst = NULL; + if (! pSMgr || maxdic == 0) return 0; + int nc = strlen(word); + if (utf8) { + if (nc >= MAXWORDUTF8LEN) return 0; + } else { + if (nc >= MAXWORDLEN) return 0; + } + int captype = 0; + int abbv = 0; + int wl = 0; + + // input conversion + RepList * rl = (pAMgr) ? pAMgr->get_iconvtable() : NULL; + if (rl && rl->conv(word, wspace)) wl = cleanword2(cw, wspace, unicw, &nc, &captype, &abbv); + else wl = cleanword2(cw, word, unicw, &nc, &captype, &abbv); + + if (wl == 0) { + if (abbv) { + for (wl = 0; wl < abbv; wl++) cw[wl] = '.'; + cw[wl] = '\0'; + abbv = 0; + } else return 0; + } + + char result[MAXLNLEN]; + char * st = NULL; + + *result = '\0'; + + int n = 0; + int n2 = 0; + int n3 = 0; + + // test numbers + // LANG_hu section: set dash information for suggestions + if (langnum == LANG_hu) { + while ((n < wl) && + (((cw[n] <= '9') && (cw[n] >= '0')) || (((cw[n] == '.') || (cw[n] == ',')) && (n > 0)))) { + n++; + if ((cw[n] == '.') || (cw[n] == ',')) { + if (((n2 == 0) && (n > 3)) || + ((n2 > 0) && ((cw[n-1] == '.') || (cw[n-1] == ',')))) break; + n2++; + n3 = n; + } + } + + if ((n == wl) && (n3 > 0) && (n - n3 > 3)) return 0; + if ((n == wl) || ((n>0) && ((cw[n]=='%') || (cw[n]=='\xB0')) && checkword(cw+n, NULL, NULL))) { + mystrcat(result, cw, MAXLNLEN); + result[n - 1] = '\0'; + if (n == wl) cat_result(result, pSMgr->suggest_morph(cw + n - 1)); + else { + char sign = cw[n]; + cw[n] = '\0'; + cat_result(result, pSMgr->suggest_morph(cw + n - 1)); + mystrcat(result, "+", MAXLNLEN); // XXX SPEC. MORPHCODE + cw[n] = sign; + cat_result(result, pSMgr->suggest_morph(cw + n)); + } + return line_tok(result, slst, MSEP_REC); + } + } + // END OF LANG_hu section + + switch(captype) { + case HUHCAP: + case HUHINITCAP: + case NOCAP: { + cat_result(result, pSMgr->suggest_morph(cw)); + if (abbv) { + memcpy(wspace,cw,wl); + *(wspace+wl) = '.'; + *(wspace+wl+1) = '\0'; + cat_result(result, pSMgr->suggest_morph(wspace)); + } + break; + } + case INITCAP: { + wl = mkallsmall2(cw, unicw, nc); + memcpy(wspace,cw,(wl+1)); + wl2 = mkinitcap2(cw, unicw, nc); + cat_result(result, pSMgr->suggest_morph(wspace)); + cat_result(result, pSMgr->suggest_morph(cw)); + if (abbv) { + *(wspace+wl) = '.'; + *(wspace+wl+1) = '\0'; + cat_result(result, pSMgr->suggest_morph(wspace)); + + memcpy(wspace, cw, wl2); + *(wspace+wl2) = '.'; + *(wspace+wl2+1) = '\0'; + + cat_result(result, pSMgr->suggest_morph(wspace)); + } + break; + } + case ALLCAP: { + cat_result(result, pSMgr->suggest_morph(cw)); + if (abbv) { + memcpy(wspace,cw,wl); + *(wspace+wl) = '.'; + *(wspace+wl+1) = '\0'; + cat_result(result, pSMgr->suggest_morph(cw)); + } + wl = mkallsmall2(cw, unicw, nc); + memcpy(wspace,cw,(wl+1)); + wl2 = mkinitcap2(cw, unicw, nc); + + cat_result(result, pSMgr->suggest_morph(wspace)); + cat_result(result, pSMgr->suggest_morph(cw)); + if (abbv) { + *(wspace+wl) = '.'; + *(wspace+wl+1) = '\0'; + cat_result(result, pSMgr->suggest_morph(wspace)); + + memcpy(wspace, cw, wl2); + *(wspace+wl2) = '.'; + *(wspace+wl2+1) = '\0'; + + cat_result(result, pSMgr->suggest_morph(wspace)); + } + break; + } + } + + if (*result) { + // word reversing wrapper for complex prefixes + if (complexprefixes) { + if (utf8) reverseword_utf(result); else reverseword(result); + } + return line_tok(result, slst, MSEP_REC); + } + + // compound word with dash (HU) I18n + char * dash = NULL; + int nresult = 0; + // LANG_hu section: set dash information for suggestions + if (langnum == LANG_hu) dash = (char *) strchr(cw,'-'); + if ((langnum == LANG_hu) && dash) { + *dash='\0'; + // examine 2 sides of the dash + if (dash[1] == '\0') { // base word ending with dash + if (spell(cw)) { + char * p = pSMgr->suggest_morph(cw); + if (p) { + int ret = line_tok(p, slst, MSEP_REC); + free(p); + return ret; + } + + } + } else if ((dash[1] == 'e') && (dash[2] == '\0')) { // XXX (HU) -e hat. + if (spell(cw) && (spell("-e"))) { + st = pSMgr->suggest_morph(cw); + if (st) { + mystrcat(result, st, MAXLNLEN); + free(st); + } + mystrcat(result,"+", MAXLNLEN); // XXX spec. separator in MORPHCODE + st = pSMgr->suggest_morph("-e"); + if (st) { + mystrcat(result, st, MAXLNLEN); + free(st); + } + return line_tok(result, slst, MSEP_REC); + } + } else { + // first word ending with dash: word- XXX ??? + char r2 = *(dash + 1); + dash[0]='-'; + dash[1]='\0'; + nresult = spell(cw); + dash[1] = r2; + dash[0]='\0'; + if (nresult && spell(dash+1) && ((strlen(dash+1) > 1) || + ((dash[1] > '0') && (dash[1] < '9')))) { + st = pSMgr->suggest_morph(cw); + if (st) { + mystrcat(result, st, MAXLNLEN); + free(st); + mystrcat(result,"+", MAXLNLEN); // XXX spec. separator in MORPHCODE + } + st = pSMgr->suggest_morph(dash+1); + if (st) { + mystrcat(result, st, MAXLNLEN); + free(st); + } + return line_tok(result, slst, MSEP_REC); + } + } + // affixed number in correct word + if (nresult && (dash > cw) && (((*(dash-1)<='9') && + (*(dash-1)>='0')) || (*(dash-1)=='.'))) { + *dash='-'; + n = 1; + if (*(dash - n) == '.') n++; + // search first not a number character to left from dash + while (((dash - n)>=cw) && ((*(dash - n)=='0') || (n < 3)) && (n < 6)) { + n++; + } + if ((dash - n) < cw) n--; + // numbers: valami1000000-hoz + // examine 100000-hoz, 10000-hoz 1000-hoz, 10-hoz, + // 56-hoz, 6-hoz + for(; n >= 1; n--) { + if ((*(dash - n) >= '0') && (*(dash - n) <= '9') && checkword(dash - n, NULL, NULL)) { + mystrcat(result, cw, MAXLNLEN); + result[dash - cw - n] = '\0'; + st = pSMgr->suggest_morph(dash - n); + if (st) { + mystrcat(result, st, MAXLNLEN); + free(st); + } + return line_tok(result, slst, MSEP_REC); + } + } + } + } + return 0; +} + +int Hunspell::generate(char*** slst, const char * word, char ** pl, int pln) +{ + *slst = NULL; + if (!pSMgr || !pln) return 0; + char **pl2; + int pl2n = analyze(&pl2, word); + int captype = 0; + int abbv = 0; + char cw[MAXWORDUTF8LEN]; + cleanword(cw, word, &captype, &abbv); + char result[MAXLNLEN]; + *result = '\0'; + + for (int i = 0; i < pln; i++) { + cat_result(result, pSMgr->suggest_gen(pl2, pl2n, pl[i])); + } + freelist(&pl2, pl2n); + + if (*result) { + // allcap + if (captype == ALLCAP) mkallcap(result); + + // line split + int linenum = line_tok(result, slst, MSEP_REC); + + // capitalize + if (captype == INITCAP || captype == HUHINITCAP) { + for (int j=0; j < linenum; j++) mkinitcap((*slst)[j]); + } + + // temporary filtering of prefix related errors (eg. + // generate("undrinkable", "eats") --> "undrinkables" and "*undrinks") + + int r = 0; + for (int j=0; j < linenum; j++) { + if (!spell((*slst)[j])) { + free((*slst)[j]); + (*slst)[j] = NULL; + } else { + if (r < j) (*slst)[r] = (*slst)[j]; + r++; + } + } + if (r > 0) return r; + free(*slst); + *slst = NULL; + } + return 0; +} + +int Hunspell::generate(char*** slst, const char * word, const char * pattern) +{ + char **pl; + int pln = analyze(&pl, pattern); + int n = generate(slst, word, pl, pln); + freelist(&pl, pln); + return uniqlist(*slst, n); +} + +// minimal XML parser functions +int Hunspell::get_xml_par(char * dest, const char * par, int max) +{ + char * d = dest; + if (!par) return 0; + char end = *par; + char * dmax = dest + max; + if (end == '>') end = '<'; + else if (end != '\'' && end != '"') return 0; // bad XML + for (par++; d < dmax && *par != '\0' && *par != end; par++, d++) *d = *par; + *d = '\0'; + mystrrep(dest, "<", "<"); + mystrrep(dest, "&", "&"); + return (int)(d - dest); +} + +int Hunspell::get_langnum() const +{ + return langnum; +} + +// return the beginning of the element (attr == NULL) or the attribute +const char * Hunspell::get_xml_pos(const char * s, const char * attr) +{ + const char * end = strchr(s, '>'); + const char * p = s; + if (attr == NULL) return end; + do { + p = strstr(p, attr); + if (!p || p >= end) return 0; + } while (*(p-1) != ' ' && *(p-1) != '\n'); + return p + strlen(attr); +} + +int Hunspell::check_xml_par(const char * q, const char * attr, const char * value) { + char cw[MAXWORDUTF8LEN]; + if (get_xml_par(cw, get_xml_pos(q, attr), MAXWORDUTF8LEN - 1) && + strcmp(cw, value) == 0) return 1; + return 0; +} + +int Hunspell::get_xml_list(char ***slst, char * list, const char * tag) { + int n = 0; + char * p; + if (!list) return 0; + for (p = list; (p = strstr(p, tag)); p++) n++; + if (n == 0) return 0; + *slst = (char **) malloc(sizeof(char *) * n); + if (!*slst) return 0; + for (p = list, n = 0; (p = strstr(p, tag)); p++, n++) { + int l = strlen(p); + (*slst)[n] = (char *) malloc(l + 1); + if (!(*slst)[n]) return n; + if (!get_xml_par((*slst)[n], p + strlen(tag) - 1, l)) { + free((*slst)[n]); + break; + } + } + return n; +} + +int Hunspell::spellml(char*** slst, const char * word) +{ + char *q, *q2; + char cw[MAXWORDUTF8LEN], cw2[MAXWORDUTF8LEN]; + q = (char *) strstr(word, "'); + if (!q2) return 0; // bad XML input + q2 = strstr(q2, "'), MAXWORDUTF8LEN - 10)) n = analyze(slst, cw); + if (n == 0) return 0; + // convert the result to ana1ana2 format + for (int i = 0; i < n; i++) s+= strlen((*slst)[i]); + char * r = (char *) malloc(6 + 5 * s + 7 * n + 7 + 1); // XXX 5*s->&->& + if (!r) return 0; + strcpy(r, ""); + for (int i = 0; i < n; i++) { + int l = strlen(r); + strcpy(r + l, ""); + strcpy(r + l + 3, (*slst)[i]); + mystrrep(r + l + 3, "\t", " "); + mystrrep(r + l + 3, "<", "<"); + mystrrep(r + l + 3, "&", "&"); + strcat(r, ""); + free((*slst)[i]); + } + strcat(r, ""); + (*slst)[0] = r; + return 1; + } else if (check_xml_par(q, "type=", "stem")) { + if (get_xml_par(cw, strchr(q2, '>'), MAXWORDUTF8LEN - 1)) return stem(slst, cw); + } else if (check_xml_par(q, "type=", "generate")) { + int n = get_xml_par(cw, strchr(q2, '>'), MAXWORDUTF8LEN - 1); + if (n == 0) return 0; + char * q3 = strstr(q2 + 1, "'), MAXWORDUTF8LEN - 1)) { + return generate(slst, cw, cw2); + } + } else { + if ((q2 = strstr(q2 + 1, "'), ""))) { + int n2 = generate(slst, cw, slst2, n); + freelist(&slst2, n); + return uniqlist(*slst, n2); + } + freelist(&slst2, n); + } + } + } + return 0; +} + + +#ifdef HUNSPELL_EXPERIMENTAL +// XXX need UTF-8 support +char * Hunspell::morph_with_correction(const char * word) +{ + char cw[MAXWORDUTF8LEN]; + char wspace[MAXWORDUTF8LEN]; + if (! pSMgr || maxdic == 0) return NULL; + int wl = strlen(word); + if (utf8) { + if (wl >= MAXWORDUTF8LEN) return NULL; + } else { + if (wl >= MAXWORDLEN) return NULL; + } + int captype = 0; + int abbv = 0; + wl = cleanword(cw, word, &captype, &abbv); + if (wl == 0) return NULL; + + char result[MAXLNLEN]; + char * st = NULL; + + *result = '\0'; + + + switch(captype) { + case NOCAP: { + st = pSMgr->suggest_morph_for_spelling_error(cw); + if (st) { + mystrcat(result, st, MAXLNLEN); + free(st); + } + if (abbv) { + memcpy(wspace,cw,wl); + *(wspace+wl) = '.'; + *(wspace+wl+1) = '\0'; + st = pSMgr->suggest_morph_for_spelling_error(wspace); + if (st) { + if (*result) mystrcat(result, "\n", MAXLNLEN); + mystrcat(result, st, MAXLNLEN); + free(st); + } + } + break; + } + case INITCAP: { + memcpy(wspace,cw,(wl+1)); + mkallsmall(wspace); + st = pSMgr->suggest_morph_for_spelling_error(wspace); + if (st) { + mystrcat(result, st, MAXLNLEN); + free(st); + } + st = pSMgr->suggest_morph_for_spelling_error(cw); + if (st) { + if (*result) mystrcat(result, "\n", MAXLNLEN); + mystrcat(result, st, MAXLNLEN); + free(st); + } + if (abbv) { + memcpy(wspace,cw,wl); + *(wspace+wl) = '.'; + *(wspace+wl+1) = '\0'; + mkallsmall(wspace); + st = pSMgr->suggest_morph_for_spelling_error(wspace); + if (st) { + if (*result) mystrcat(result, "\n", MAXLNLEN); + mystrcat(result, st, MAXLNLEN); + free(st); + } + mkinitcap(wspace); + st = pSMgr->suggest_morph_for_spelling_error(wspace); + if (st) { + if (*result) mystrcat(result, "\n", MAXLNLEN); + mystrcat(result, st, MAXLNLEN); + free(st); + } + } + break; + } + case HUHCAP: { + st = pSMgr->suggest_morph_for_spelling_error(cw); + if (st) { + mystrcat(result, st, MAXLNLEN); + free(st); + } + memcpy(wspace,cw,(wl+1)); + mkallsmall(wspace); + st = pSMgr->suggest_morph_for_spelling_error(wspace); + if (st) { + if (*result) mystrcat(result, "\n", MAXLNLEN); + mystrcat(result, st, MAXLNLEN); + free(st); + } + break; + } + case ALLCAP: { + memcpy(wspace,cw,(wl+1)); + st = pSMgr->suggest_morph_for_spelling_error(wspace); + if (st) { + mystrcat(result, st, MAXLNLEN); + free(st); + } + mkallsmall(wspace); + st = pSMgr->suggest_morph_for_spelling_error(wspace); + if (st) { + if (*result) mystrcat(result, "\n", MAXLNLEN); + mystrcat(result, st, MAXLNLEN); + free(st); + } + mkinitcap(wspace); + st = pSMgr->suggest_morph_for_spelling_error(wspace); + if (st) { + if (*result) mystrcat(result, "\n", MAXLNLEN); + mystrcat(result, st, MAXLNLEN); + free(st); + } + if (abbv) { + memcpy(wspace,cw,(wl+1)); + *(wspace+wl) = '.'; + *(wspace+wl+1) = '\0'; + if (*result) mystrcat(result, "\n", MAXLNLEN); + st = pSMgr->suggest_morph_for_spelling_error(wspace); + if (st) { + mystrcat(result, st, MAXLNLEN); + free(st); + } + mkallsmall(wspace); + st = pSMgr->suggest_morph_for_spelling_error(wspace); + if (st) { + if (*result) mystrcat(result, "\n", MAXLNLEN); + mystrcat(result, st, MAXLNLEN); + free(st); + } + mkinitcap(wspace); + st = pSMgr->suggest_morph_for_spelling_error(wspace); + if (st) { + if (*result) mystrcat(result, "\n", MAXLNLEN); + mystrcat(result, st, MAXLNLEN); + free(st); + } + } + break; + } + } + + if (*result) return mystrdup(result); + return NULL; +} + +#endif // END OF HUNSPELL_EXPERIMENTAL CODE + +Hunhandle *Hunspell_create(const char * affpath, const char * dpath) +{ + return (Hunhandle*)(new Hunspell(affpath, dpath)); +} + +Hunhandle *Hunspell_create_key(const char * affpath, const char * dpath, + const char * key) +{ + return (Hunhandle*)(new Hunspell(affpath, dpath, key)); +} + +void Hunspell_destroy(Hunhandle *pHunspell) +{ + delete (Hunspell*)(pHunspell); +} + +int Hunspell_spell(Hunhandle *pHunspell, const char *word) +{ + return ((Hunspell*)pHunspell)->spell(word); +} + +char *Hunspell_get_dic_encoding(Hunhandle *pHunspell) +{ + return ((Hunspell*)pHunspell)->get_dic_encoding(); +} + +int Hunspell_suggest(Hunhandle *pHunspell, char*** slst, const char * word) +{ + return ((Hunspell*)pHunspell)->suggest(slst, word); +} + +int Hunspell_analyze(Hunhandle *pHunspell, char*** slst, const char * word) +{ + return ((Hunspell*)pHunspell)->analyze(slst, word); +} + +int Hunspell_stem(Hunhandle *pHunspell, char*** slst, const char * word) +{ + return ((Hunspell*)pHunspell)->stem(slst, word); +} + +int Hunspell_stem2(Hunhandle *pHunspell, char*** slst, char** desc, int n) +{ + return ((Hunspell*)pHunspell)->stem(slst, desc, n); +} + +int Hunspell_generate(Hunhandle *pHunspell, char*** slst, const char * word, + const char * word2) +{ + return ((Hunspell*)pHunspell)->generate(slst, word, word2); +} + +int Hunspell_generate2(Hunhandle *pHunspell, char*** slst, const char * word, + char** desc, int n) +{ + return ((Hunspell*)pHunspell)->generate(slst, word, desc, n); +} + + /* functions for run-time modification of the dictionary */ + + /* add word to the run-time dictionary */ + +int Hunspell_add(Hunhandle *pHunspell, const char * word) { + return ((Hunspell*)pHunspell)->add(word); +} + + /* add word to the run-time dictionary with affix flags of + * the example (a dictionary word): Hunspell will recognize + * affixed forms of the new word, too. + */ + +int Hunspell_add_with_affix(Hunhandle *pHunspell, const char * word, + const char * example) { + return ((Hunspell*)pHunspell)->add_with_affix(word, example); +} + + /* remove word from the run-time dictionary */ + +int Hunspell_remove(Hunhandle *pHunspell, const char * word) { + return ((Hunspell*)pHunspell)->remove(word); +} + +void Hunspell_free_list(Hunhandle *, char *** slst, int n) { + freelist(slst, n); +} diff --git a/plugins/SpellChecker/hunspell/hunspell.dsp b/plugins/SpellChecker/hunspell/hunspell.dsp new file mode 100644 index 0000000000..c182621742 --- /dev/null +++ b/plugins/SpellChecker/hunspell/hunspell.dsp @@ -0,0 +1,164 @@ +# Microsoft Developer Studio Project File - Name="hunspell" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Static Library" 0x0104 + +CFG=hunspell - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "hunspell.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "hunspell.mak" CFG="hunspell - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "hunspell - Win32 Release" (based on "Win32 (x86) Static Library") +!MESSAGE "hunspell - Win32 Debug" (based on "Win32 (x86) Static Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "hunspell - 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 "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "W32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "W32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c +# ADD BASE RSC /l 0x40e /d "NDEBUG" +# ADD RSC /l 0x40e /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)" == "hunspell - 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 "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "W32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "W32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c +# ADD BASE RSC /l 0x40e /d "_DEBUG" +# ADD RSC /l 0x40e /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ENDIF + +# Begin Target + +# Name "hunspell - Win32 Release" +# Name "hunspell - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\affentry.cxx +# End Source File +# Begin Source File + +SOURCE=.\affixmgr.cxx +# End Source File +# Begin Source File + +SOURCE=.\csutil.cxx +# End Source File +# Begin Source File + +SOURCE=.\dictmgr.cxx +# End Source File +# Begin Source File + +SOURCE=.\hashmgr.cxx +# End Source File +# Begin Source File + +SOURCE=.\hunspell.cxx +# End Source File +# Begin Source File + +SOURCE=.\suggestmgr.cxx +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\affentry.hxx +# End Source File +# Begin Source File + +SOURCE=.\affixmgr.hxx +# End Source File +# Begin Source File + +SOURCE=.\atypes.hxx +# End Source File +# Begin Source File + +SOURCE=.\baseaffix.hxx +# End Source File +# Begin Source File + +SOURCE=.\csutil.hxx +# End Source File +# Begin Source File + +SOURCE=.\dictmgr.hxx +# End Source File +# Begin Source File + +SOURCE=.\hashmgr.hxx +# End Source File +# Begin Source File + +SOURCE=.\htypes.hxx +# End Source File +# Begin Source File + +SOURCE=.\langnum.hxx +# End Source File +# Begin Source File + +SOURCE=.\hunspell.hxx +# End Source File +# Begin Source File + +SOURCE=.\suggestmgr.hxx +# End Source File +# End Group +# End Target +# End Project diff --git a/plugins/SpellChecker/hunspell/hunspell.h b/plugins/SpellChecker/hunspell/hunspell.h new file mode 100644 index 0000000000..627968a3da --- /dev/null +++ b/plugins/SpellChecker/hunspell/hunspell.h @@ -0,0 +1,95 @@ +#ifndef _MYSPELLMGR_H_ +#define _MYSPELLMGR_H_ + +#include "hunvisapi.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct Hunhandle Hunhandle; + +LIBHUNSPELL_DLL_EXPORTED Hunhandle *Hunspell_create(const char * affpath, const char * dpath); + +LIBHUNSPELL_DLL_EXPORTED Hunhandle *Hunspell_create_key(const char * affpath, const char * dpath, + const char * key); + +LIBHUNSPELL_DLL_EXPORTED void Hunspell_destroy(Hunhandle *pHunspell); + +/* spell(word) - spellcheck word + * output: 0 = bad word, not 0 = good word + */ +LIBHUNSPELL_DLL_EXPORTED int Hunspell_spell(Hunhandle *pHunspell, const char *); + +LIBHUNSPELL_DLL_EXPORTED char *Hunspell_get_dic_encoding(Hunhandle *pHunspell); + +/* suggest(suggestions, word) - search suggestions + * input: pointer to an array of strings pointer and the (bad) word + * array of strings pointer (here *slst) may not be initialized + * output: number of suggestions in string array, and suggestions in + * a newly allocated array of strings (*slts will be NULL when number + * of suggestion equals 0.) + */ +LIBHUNSPELL_DLL_EXPORTED int Hunspell_suggest(Hunhandle *pHunspell, char*** slst, const char * word); + + /* morphological functions */ + + /* analyze(result, word) - morphological analysis of the word */ + +LIBHUNSPELL_DLL_EXPORTED int Hunspell_analyze(Hunhandle *pHunspell, char*** slst, const char * word); + + /* stem(result, word) - stemmer function */ + +LIBHUNSPELL_DLL_EXPORTED int Hunspell_stem(Hunhandle *pHunspell, char*** slst, const char * word); + + /* stem(result, analysis, n) - get stems from a morph. analysis + * example: + * char ** result, result2; + * int n1 = Hunspell_analyze(result, "words"); + * int n2 = Hunspell_stem2(result2, result, n1); + */ + +LIBHUNSPELL_DLL_EXPORTED int Hunspell_stem2(Hunhandle *pHunspell, char*** slst, char** desc, int n); + + /* generate(result, word, word2) - morphological generation by example(s) */ + +LIBHUNSPELL_DLL_EXPORTED int Hunspell_generate(Hunhandle *pHunspell, char*** slst, const char * word, + const char * word2); + + /* generate(result, word, desc, n) - generation by morph. description(s) + * example: + * char ** result; + * char * affix = "is:plural"; // description depends from dictionaries, too + * int n = Hunspell_generate2(result, "word", &affix, 1); + * for (int i = 0; i < n; i++) printf("%s\n", result[i]); + */ + +LIBHUNSPELL_DLL_EXPORTED int Hunspell_generate2(Hunhandle *pHunspell, char*** slst, const char * word, + char** desc, int n); + + /* functions for run-time modification of the dictionary */ + + /* add word to the run-time dictionary */ + +LIBHUNSPELL_DLL_EXPORTED int Hunspell_add(Hunhandle *pHunspell, const char * word); + + /* add word to the run-time dictionary with affix flags of + * the example (a dictionary word): Hunspell will recognize + * affixed forms of the new word, too. + */ + +LIBHUNSPELL_DLL_EXPORTED int Hunspell_add_with_affix(Hunhandle *pHunspell, const char * word, const char * example); + + /* remove word from the run-time dictionary */ + +LIBHUNSPELL_DLL_EXPORTED int Hunspell_remove(Hunhandle *pHunspell, const char * word); + + /* free suggestion lists */ + +LIBHUNSPELL_DLL_EXPORTED void Hunspell_free_list(Hunhandle *pHunspell, char *** slst, int n); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/plugins/SpellChecker/hunspell/hunspell.hxx b/plugins/SpellChecker/hunspell/hunspell.hxx new file mode 100644 index 0000000000..a25c637f0d --- /dev/null +++ b/plugins/SpellChecker/hunspell/hunspell.hxx @@ -0,0 +1,174 @@ +#include "hunvisapi.h" + +#include "hashmgr.hxx" +#include "affixmgr.hxx" +#include "suggestmgr.hxx" +#include "langnum.hxx" + +#define SPELL_XML "" + +#define MAXDIC 20 +#define MAXSUGGESTION 15 +#define MAXSHARPS 5 + +#define HUNSPELL_OK (1 << 0) +#define HUNSPELL_OK_WARN (1 << 1) + +#ifndef _MYSPELLMGR_HXX_ +#define _MYSPELLMGR_HXX_ + +class LIBHUNSPELL_DLL_EXPORTED Hunspell +{ + AffixMgr* pAMgr; + HashMgr* pHMgr[MAXDIC]; + int maxdic; + SuggestMgr* pSMgr; + char * affixpath; + char * encoding; + struct cs_info * csconv; + int langnum; + int utf8; + int complexprefixes; + char** wordbreak; + +public: + + /* Hunspell(aff, dic) - constructor of Hunspell class + * input: path of affix file and dictionary file + */ + + Hunspell(const char * affpath, const char * dpath, const char * key = NULL); + ~Hunspell(); + + /* load extra dictionaries (only dic files) */ + int add_dic(const char * dpath, const char * key = NULL); + + /* spell(word) - spellcheck word + * output: 0 = bad word, not 0 = good word + * + * plus output: + * info: information bit array, fields: + * SPELL_COMPOUND = a compound word + * SPELL_FORBIDDEN = an explicit forbidden word + * root: root (stem), when input is a word with affix(es) + */ + + int spell(const char * word, int * info = NULL, char ** root = NULL); + + /* suggest(suggestions, word) - search suggestions + * input: pointer to an array of strings pointer and the (bad) word + * array of strings pointer (here *slst) may not be initialized + * output: number of suggestions in string array, and suggestions in + * a newly allocated array of strings (*slts will be NULL when number + * of suggestion equals 0.) + */ + + int suggest(char*** slst, const char * word); + + /* deallocate suggestion lists */ + + void free_list(char *** slst, int n); + + char * get_dic_encoding(); + + /* morphological functions */ + + /* analyze(result, word) - morphological analysis of the word */ + + int analyze(char*** slst, const char * word); + + /* stem(result, word) - stemmer function */ + + int stem(char*** slst, const char * word); + + /* stem(result, analysis, n) - get stems from a morph. analysis + * example: + * char ** result, result2; + * int n1 = analyze(&result, "words"); + * int n2 = stem(&result2, result, n1); + */ + + int stem(char*** slst, char ** morph, int n); + + /* generate(result, word, word2) - morphological generation by example(s) */ + + int generate(char*** slst, const char * word, const char * word2); + + /* generate(result, word, desc, n) - generation by morph. description(s) + * example: + * char ** result; + * char * affix = "is:plural"; // description depends from dictionaries, too + * int n = generate(&result, "word", &affix, 1); + * for (int i = 0; i < n; i++) printf("%s\n", result[i]); + */ + + int generate(char*** slst, const char * word, char ** desc, int n); + + /* functions for run-time modification of the dictionary */ + + /* add word to the run-time dictionary */ + + int add(const char * word); + + /* add word to the run-time dictionary with affix flags of + * the example (a dictionary word): Hunspell will recognize + * affixed forms of the new word, too. + */ + + int add_with_affix(const char * word, const char * example); + + /* remove word from the run-time dictionary */ + + int remove(const char * word); + + /* other */ + + /* get extra word characters definied in affix file for tokenization */ + const char * get_wordchars(); + unsigned short * get_wordchars_utf16(int * len); + + char * get_try_string(); + + struct cs_info * get_csconv(); + const char * get_version(); + + int get_langnum() const; + + /* experimental and deprecated functions */ + +#ifdef HUNSPELL_EXPERIMENTAL + /* suffix is an affix flag string, similarly in dictionary files */ + int put_word_suffix(const char * word, const char * suffix); + char * morph_with_correction(const char * word); + + /* spec. suggestions */ + int suggest_auto(char*** slst, const char * word); + int suggest_pos_stems(char*** slst, const char * word); +#endif + +private: + int cleanword(char *, const char *, int * pcaptype, int * pabbrev); + int cleanword2(char *, const char *, w_char *, int * w_len, int * pcaptype, int * pabbrev); + void mkinitcap(char *); + int mkinitcap2(char * p, w_char * u, int nc); + int mkinitsmall2(char * p, w_char * u, int nc); + void mkallcap(char *); + int mkallcap2(char * p, w_char * u, int nc); + void mkallsmall(char *); + int mkallsmall2(char * p, w_char * u, int nc); + struct hentry * checkword(const char *, int * info, char **root); + char * sharps_u8_l1(char * dest, char * source); + hentry * spellsharps(char * base, char *, int, int, char * tmp, int * info, char **root); + int is_keepcase(const hentry * rv); + int insert_sug(char ***slst, char * word, int ns); + void cat_result(char * result, char * st); + char * stem_description(const char * desc); + int spellml(char*** slst, const char * word); + int get_xml_par(char * dest, const char * par, int maxl); + const char * get_xml_pos(const char * s, const char * attr); + int get_xml_list(char ***slst, char * list, const char * tag); + int check_xml_par(const char * q, const char * attr, const char * value); + +}; + +#endif diff --git a/plugins/SpellChecker/hunspell/hunvisapi.h b/plugins/SpellChecker/hunspell/hunvisapi.h new file mode 100644 index 0000000000..4712280ad2 --- /dev/null +++ b/plugins/SpellChecker/hunspell/hunvisapi.h @@ -0,0 +1,18 @@ +#ifndef _HUNSPELL_VISIBILITY_H_ +#define _HUNSPELL_VISIBILITY_H_ + +#if defined(HUNSPELL_STATIC) +# define LIBHUNSPELL_DLL_EXPORTED +#elif defined(_MSC_VER) +# if defined(BUILDING_LIBHUNSPELL) +# define LIBHUNSPELL_DLL_EXPORTED __declspec(dllexport) +# else +# define LIBHUNSPELL_DLL_EXPORTED __declspec(dllimport) +# endif +#elif BUILDING_LIBHUNSPELL && 1 +# define LIBHUNSPELL_DLL_EXPORTED __attribute__((__visibility__("default"))) +#else +# define LIBHUNSPELL_DLL_EXPORTED +#endif + +#endif diff --git a/plugins/SpellChecker/hunspell/hunzip.cxx b/plugins/SpellChecker/hunspell/hunzip.cxx new file mode 100644 index 0000000000..b50599fa84 --- /dev/null +++ b/plugins/SpellChecker/hunspell/hunzip.cxx @@ -0,0 +1,193 @@ +#include +#include +#include + +#include "hunzip.hxx" + +#define CODELEN 65536 +#define BASEBITREC 5000 + +#define UNCOMPRESSED '\002' +#define MAGIC "hz0" +#define MAGIC_ENCRYPT "hz1" +#define MAGICLEN (sizeof(MAGIC) - 1) + +int Hunzip::fail(const char * err, const char * par) { + fprintf(stderr, err, par); + return -1; +} + +Hunzip::Hunzip(const char * file, const char * key) { + bufsiz = 0; + lastbit = 0; + inc = 0; + outc = 0; + dec = NULL; + fin = NULL; + filename = (char *) malloc(strlen(file) + 1); + if (filename) strcpy(filename, file); + if (getcode(key) == -1) bufsiz = -1; + else bufsiz = getbuf(); +} + +int Hunzip::getcode(const char * key) { + unsigned char c[2]; + int i, j, n, p; + int allocatedbit = BASEBITREC; + const char * enc = key; + + if (!filename) return -1; + + fin = fopen(filename, "rb"); + if (!fin) return -1; + + // read magic number + if ((fread(in, 1, 3, fin) < MAGICLEN) + || !(strncmp(MAGIC, in, MAGICLEN) == 0 || + strncmp(MAGIC_ENCRYPT, in, MAGICLEN) == 0)) { + return fail(MSG_FORMAT, filename); + } + + // check encryption + if (strncmp(MAGIC_ENCRYPT, in, MAGICLEN) == 0) { + unsigned char cs; + if (!key) return fail(MSG_KEY, filename); + if (fread(&c, 1, 1, fin) < 1) return fail(MSG_FORMAT, filename); + for (cs = 0; *enc; enc++) cs ^= *enc; + if (cs != c[0]) return fail(MSG_KEY, filename); + enc = key; + } else key = NULL; + + // read record count + if (fread(&c, 1, 2, fin) < 2) return fail(MSG_FORMAT, filename); + + if (key) { + c[0] ^= *enc; + if (*(++enc) == '\0') enc = key; + c[1] ^= *enc; + } + + n = ((int) c[0] << 8) + c[1]; + dec = (struct bit *) malloc(BASEBITREC * sizeof(struct bit)); + if (!dec) return fail(MSG_MEMORY, filename); + dec[0].v[0] = 0; + dec[0].v[1] = 0; + + // read codes + for (i = 0; i < n; i++) { + unsigned char l; + if (fread(c, 1, 2, fin) < 2) return fail(MSG_FORMAT, filename); + if (key) { + if (*(++enc) == '\0') enc = key; + c[0] ^= *enc; + if (*(++enc) == '\0') enc = key; + c[1] ^= *enc; + } + if (fread(&l, 1, 1, fin) < 1) return fail(MSG_FORMAT, filename); + if (key) { + if (*(++enc) == '\0') enc = key; + l ^= *enc; + } + if (fread(in, 1, l/8+1, fin) < (size_t) l/8+1) return fail(MSG_FORMAT, filename); + if (key) for (j = 0; j <= l/8; j++) { + if (*(++enc) == '\0') enc = key; + in[j] ^= *enc; + } + p = 0; + for (j = 0; j < l; j++) { + int b = (in[j/8] & (1 << (7 - (j % 8)))) ? 1 : 0; + int oldp = p; + p = dec[p].v[b]; + if (p == 0) { + lastbit++; + if (lastbit == allocatedbit) { + allocatedbit += BASEBITREC; + dec = (struct bit *) realloc(dec, allocatedbit * sizeof(struct bit)); + } + dec[lastbit].v[0] = 0; + dec[lastbit].v[1] = 0; + dec[oldp].v[b] = lastbit; + p = lastbit; + } + } + dec[p].c[0] = c[0]; + dec[p].c[1] = c[1]; + } + return 0; +} + +Hunzip::~Hunzip() +{ + if (dec) free(dec); + if (fin) fclose(fin); + if (filename) free(filename); +} + +int Hunzip::getbuf() { + int p = 0; + int o = 0; + do { + if (inc == 0) inbits = fread(in, 1, BUFSIZE, fin) * 8; + for (; inc < inbits; inc++) { + int b = (in[inc / 8] & (1 << (7 - (inc % 8)))) ? 1 : 0; + int oldp = p; + p = dec[p].v[b]; + if (p == 0) { + if (oldp == lastbit) { + fclose(fin); + fin = NULL; + // add last odd byte + if (dec[lastbit].c[0]) out[o++] = dec[lastbit].c[1]; + return o; + } + out[o++] = dec[oldp].c[0]; + out[o++] = dec[oldp].c[1]; + if (o == BUFSIZE) return o; + p = dec[p].v[b]; + } + } + inc = 0; + } while (inbits == BUFSIZE * 8); + return fail(MSG_FORMAT, filename); +} + +const char * Hunzip::getline() { + char linebuf[BUFSIZE]; + int l = 0, eol = 0, left = 0, right = 0; + if (bufsiz == -1) return NULL; + while (l < bufsiz && !eol) { + linebuf[l++] = out[outc]; + switch (out[outc]) { + case '\t': break; + case 31: { // escape + if (++outc == bufsiz) { + bufsiz = getbuf(); + outc = 0; + } + linebuf[l - 1] = out[outc]; + break; + } + case ' ': break; + default: if (((unsigned char) out[outc]) < 47) { + if (out[outc] > 32) { + right = out[outc] - 31; + if (++outc == bufsiz) { + bufsiz = getbuf(); + outc = 0; + } + } + if (out[outc] == 30) left = 9; else left = out[outc]; + linebuf[l-1] = '\n'; + eol = 1; + } + } + if (++outc == bufsiz) { + outc = 0; + bufsiz = fin ? getbuf(): -1; + } + } + if (right) strcpy(linebuf + l - 1, line + strlen(line) - right - 1); + else linebuf[l] = '\0'; + strcpy(line + left, linebuf); + return line; +} diff --git a/plugins/SpellChecker/hunspell/hunzip.hxx b/plugins/SpellChecker/hunspell/hunzip.hxx new file mode 100644 index 0000000000..b58e3ab1dc --- /dev/null +++ b/plugins/SpellChecker/hunspell/hunzip.hxx @@ -0,0 +1,45 @@ +/* hunzip: file decompression for sorted dictionaries with optional encryption, + * algorithm: prefix-suffix encoding and 16-bit Huffman encoding */ + +#ifndef _HUNZIP_HXX_ +#define _HUNZIP_HXX_ + +#include "hunvisapi.h" + +#include + +#define BUFSIZE 65536 +#define HZIP_EXTENSION ".hz" + +#define MSG_OPEN "error: %s: cannot open\n" +#define MSG_FORMAT "error: %s: not in hzip format\n" +#define MSG_MEMORY "error: %s: missing memory\n" +#define MSG_KEY "error: %s: missing or bad password\n" + +struct bit { + unsigned char c[2]; + int v[2]; +}; + +class LIBHUNSPELL_DLL_EXPORTED Hunzip +{ + +protected: + char * filename; + FILE * fin; + int bufsiz, lastbit, inc, inbits, outc; + struct bit * dec; // code table + char in[BUFSIZE]; // input buffer + char out[BUFSIZE + 1]; // Huffman-decoded buffer + char line[BUFSIZE + 50]; // decoded line + int getcode(const char * key); + int getbuf(); + int fail(const char * err, const char * par); + +public: + Hunzip(const char * filename, const char * key = NULL); + ~Hunzip(); + const char * getline(); +}; + +#endif diff --git a/plugins/SpellChecker/hunspell/langnum.hxx b/plugins/SpellChecker/hunspell/langnum.hxx new file mode 100644 index 0000000000..1d140a701b --- /dev/null +++ b/plugins/SpellChecker/hunspell/langnum.hxx @@ -0,0 +1,38 @@ +#ifndef _LANGNUM_HXX_ +#define _LANGNUM_HXX_ + +/* + language numbers for language specific codes + see http://l10n.openoffice.org/languages.html +*/ + +enum { +LANG_ar=96, +LANG_az=100, // custom number +LANG_bg=41, +LANG_ca=37, +LANG_cs=42, +LANG_da=45, +LANG_de=49, +LANG_el=30, +LANG_en=01, +LANG_es=34, +LANG_eu=10, +LANG_fr=02, +LANG_gl=38, +LANG_hr=78, +LANG_hu=36, +LANG_it=39, +LANG_la=99, // custom number +LANG_lv=101, // custom number +LANG_nl=31, +LANG_pl=48, +LANG_pt=03, +LANG_ru=07, +LANG_sv=50, +LANG_tr=90, +LANG_uk=80, +LANG_xx=999 +}; + +#endif diff --git a/plugins/SpellChecker/hunspell/license.hunspell b/plugins/SpellChecker/hunspell/license.hunspell new file mode 100644 index 0000000000..490e440c74 --- /dev/null +++ b/plugins/SpellChecker/hunspell/license.hunspell @@ -0,0 +1,59 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Hunspell, based on MySpell. + * + * The Initial Developers of the Original Code are + * Kevin Hendricks (MySpell) and Laszlo Nemeth (Hunspell). + * Portions created by the Initial Developers are Copyright (C) 2002-2005 + * the Initial Developers. All Rights Reserved. + * + * Contributor(s): + * David Einstein + * Davide Prina + * Giuseppe Modugno + * Gianluca Turconi + * Simon Brouwer + * Noll Janos + * Biro Arpad + * Goldman Eleonora + * Sarlos Tamas + * Bencsath Boldizsar + * Halacsy Peter + * Dvornik Laszlo + * Gefferth Andras + * Nagy Viktor + * Varga Daniel + * Chris Halls + * Rene Engelhard + * Bram Moolenaar + * Dafydd Jones + * Harri Pitkanen + * Andras Timar + * Tor Lillqvist + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#include "config.h" diff --git a/plugins/SpellChecker/hunspell/license.myspell b/plugins/SpellChecker/hunspell/license.myspell new file mode 100644 index 0000000000..2da5330750 --- /dev/null +++ b/plugins/SpellChecker/hunspell/license.myspell @@ -0,0 +1,61 @@ +/* + * Copyright 2002 Kevin B. Hendricks, Stratford, Ontario, Canada + * And Contributors. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. All modifications to the source code must be clearly marked as + * such. Binary redistributions based on modified source code + * must be clearly marked as modified versions in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY KEVIN B. HENDRICKS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + * KEVIN B. HENDRICKS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * + * NOTE: A special thanks and credit goes to Geoff Kuenning + * the creator of ispell. MySpell's affix algorithms were + * based on those of ispell which should be noted is + * copyright Geoff Kuenning et.al. and now available + * under a BSD style license. For more information on ispell + * and affix compression in general, please see: + * http://www.cs.ucla.edu/ficus-members/geoff/ispell.html + * (the home page for ispell) + * + * An almost complete rewrite of MySpell for use by + * the Mozilla project has been developed by David Einstein + * (Deinst@world.std.com). David and I are now + * working on parallel development tracks to help + * our respective projects (Mozilla and OpenOffice.org + * and we will maintain full affix file and dictionary + * file compatibility and work on merging our versions + * of MySpell back into a single tree. David has been + * a significant help in improving MySpell. + * + * Special thanks also go to La'szlo' Ne'meth + * who is the author of the + * Hungarian dictionary and who developed and contributed + * the code to support compound words in MySpell + * and fixed numerous problems with the encoding + * case conversion tables. + * + */ diff --git a/plugins/SpellChecker/hunspell/phonet.cxx b/plugins/SpellChecker/hunspell/phonet.cxx new file mode 100644 index 0000000000..144bd40d08 --- /dev/null +++ b/plugins/SpellChecker/hunspell/phonet.cxx @@ -0,0 +1,292 @@ +/* phonetic.c - generic replacement aglogithms for phonetic transformation + Copyright (C) 2000 Bjoern Jacke + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License version 2.1 as published by the Free Software Foundation; + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; If not, see + . + + Changelog: + + 2000-01-05 Bjoern Jacke + Initial Release insprired by the article about phonetic + transformations out of c't 25/1999 + + 2007-07-26 Bjoern Jacke + Released under MPL/GPL/LGPL tri-license for Hunspell + + 2007-08-23 Laszlo Nemeth + Porting from Aspell to Hunspell using C-like structs +*/ + +#include +#include +#include +#include + +#include "csutil.hxx" +#include "phonet.hxx" + +void init_phonet_hash(phonetable & parms) + { + int i, k; + + for (i = 0; i < HASHSIZE; i++) { + parms.hash[i] = -1; + } + + for (i = 0; parms.rules[i][0] != '\0'; i += 2) { + /** set hash value **/ + k = (unsigned char) parms.rules[i][0]; + + if (parms.hash[k] < 0) { + parms.hash[k] = i; + } + } + } + +// like strcpy but safe if the strings overlap +// but only if dest < src +static inline void strmove(char * dest, char * src) { + while (*src) + *dest++ = *src++; + *dest = '\0'; +} + +static int myisalpha(char ch) { + if ((unsigned char) ch < 128) return isalpha(ch); + return 1; +} + +/* phonetic transcription algorithm */ +/* see: http://aspell.net/man-html/Phonetic-Code.html */ +/* convert string to uppercase before this call */ +int phonet (const char * inword, char * target, + int len, + phonetable & parms) + { + /** Do phonetic transformation. **/ + /** "len" = length of "inword" incl. '\0'. **/ + + /** result: >= 0: length of "target" **/ + /** otherwise: error **/ + + int i,j,k=0,n,p,z; + int k0,n0,p0=-333,z0; + char c, c0; + const char * s; + typedef unsigned char uchar; + char word[MAXPHONETUTF8LEN + 1]; + if (len == -1) len = strlen(inword); + if (len > MAXPHONETUTF8LEN) return 0; + strcpy(word, inword); + + /** check word **/ + i = j = z = 0; + while ((c = word[i]) != '\0') { + n = parms.hash[(uchar) c]; + z0 = 0; + + if (n >= 0) { + /** check all rules for the same letter **/ + while (parms.rules[n][0] == c) { + + /** check whole string **/ + k = 1; /** number of found letters **/ + p = 5; /** default priority **/ + s = parms.rules[n]; + s++; /** important for (see below) "*(s-1)" **/ + + while (*s != '\0' && word[i+k] == *s + && !isdigit ((unsigned char) *s) && strchr ("(-<^$", *s) == NULL) { + k++; + s++; + } + if (*s == '(') { + /** check letters in "(..)" **/ + if (myisalpha(word[i+k]) // ...could be implied? + && strchr(s+1, word[i+k]) != NULL) { + k++; + while (*s != ')') + s++; + s++; + } + } + p0 = (int) *s; + k0 = k; + while (*s == '-' && k > 1) { + k--; + s++; + } + if (*s == '<') + s++; + if (isdigit ((unsigned char) *s)) { + /** determine priority **/ + p = *s - '0'; + s++; + } + if (*s == '^' && *(s+1) == '^') + s++; + + if (*s == '\0' + || (*s == '^' + && (i == 0 || ! myisalpha(word[i-1])) + && (*(s+1) != '$' + || (! myisalpha(word[i+k0]) ))) + || (*s == '$' && i > 0 + && myisalpha(word[i-1]) + && (! myisalpha(word[i+k0]) ))) + { + /** search for followup rules, if: **/ + /** parms.followup and k > 1 and NO '-' in searchstring **/ + c0 = word[i+k-1]; + n0 = parms.hash[(uchar) c0]; + +// if (parms.followup && k > 1 && n0 >= 0 + if (k > 1 && n0 >= 0 + && p0 != (int) '-' && word[i+k] != '\0') { + /** test follow-up rule for "word[i+k]" **/ + while (parms.rules[n0][0] == c0) { + + /** check whole string **/ + k0 = k; + p0 = 5; + s = parms.rules[n0]; + s++; + while (*s != '\0' && word[i+k0] == *s + && ! isdigit((unsigned char) *s) && strchr("(-<^$",*s) == NULL) { + k0++; + s++; + } + if (*s == '(') { + /** check letters **/ + if (myisalpha(word[i+k0]) + && strchr (s+1, word[i+k0]) != NULL) { + k0++; + while (*s != ')' && *s != '\0') + s++; + if (*s == ')') + s++; + } + } + while (*s == '-') { + /** "k0" gets NOT reduced **/ + /** because "if (k0 == k)" **/ + s++; + } + if (*s == '<') + s++; + if (isdigit ((unsigned char) *s)) { + p0 = *s - '0'; + s++; + } + + if (*s == '\0' + /** *s == '^' cuts **/ + || (*s == '$' && ! myisalpha(word[i+k0]))) + { + if (k0 == k) { + /** this is just a piece of the string **/ + n0 += 2; + continue; + } + + if (p0 < p) { + /** priority too low **/ + n0 += 2; + continue; + } + /** rule fits; stop search **/ + break; + } + n0 += 2; + } /** End of "while (parms.rules[n0][0] == c0)" **/ + + if (p0 >= p && parms.rules[n0][0] == c0) { + n += 2; + continue; + } + } /** end of follow-up stuff **/ + + /** replace string **/ + s = parms.rules[n+1]; + p0 = (parms.rules[n][0] != '\0' + && strchr (parms.rules[n]+1,'<') != NULL) ? 1:0; + if (p0 == 1 && z == 0) { + /** rule with '<' is used **/ + if (j > 0 && *s != '\0' + && (target[j-1] == c || target[j-1] == *s)) { + j--; + } + z0 = 1; + z = 1; + k0 = 0; + while (*s != '\0' && word[i+k0] != '\0') { + word[i+k0] = *s; + k0++; + s++; + } + if (k > k0) + strmove (&word[0]+i+k0, &word[0]+i+k); + + /** new "actual letter" **/ + c = word[i]; + } + else { /** no '<' rule used **/ + i += k - 1; + z = 0; + while (*s != '\0' + && *(s+1) != '\0' && j < len) { + if (j == 0 || target[j-1] != *s) { + target[j] = *s; + j++; + } + s++; + } + /** new "actual letter" **/ + c = *s; + if (parms.rules[n][0] != '\0' + && strstr (parms.rules[n]+1, "^^") != NULL) { + if (c != '\0') { + target[j] = c; + j++; + } + strmove (&word[0], &word[0]+i+1); + i = 0; + z0 = 1; + } + } + break; + } /** end of follow-up stuff **/ + n += 2; + } /** end of while (parms.rules[n][0] == c) **/ + } /** end of if (n >= 0) **/ + if (z0 == 0) { +// if (k && (assert(p0!=-333),!p0) && j < len && c != '\0' +// && (!parms.collapse_result || j == 0 || target[j-1] != c)){ + if (k && !p0 && j < len && c != '\0' + && (1 || j == 0 || target[j-1] != c)){ + /** condense only double letters **/ + target[j] = c; + ///printf("\n setting \n"); + j++; + } + + i++; + z = 0; + k=0; + } + } /** end of while ((c = word[i]) != '\0') **/ + + target[j] = '\0'; + return (j); + + } /** end of function "phonet" **/ diff --git a/plugins/SpellChecker/hunspell/phonet.hxx b/plugins/SpellChecker/hunspell/phonet.hxx new file mode 100644 index 0000000000..f91d3b02b8 --- /dev/null +++ b/plugins/SpellChecker/hunspell/phonet.hxx @@ -0,0 +1,52 @@ +/* phonetic.c - generic replacement aglogithms for phonetic transformation + Copyright (C) 2000 Bjoern Jacke + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License version 2.1 as published by the Free Software Foundation; + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; If not, see + . + + Changelog: + + 2000-01-05 Bjoern Jacke + Initial Release insprired by the article about phonetic + transformations out of c't 25/1999 + + 2007-07-26 Bjoern Jacke + Released under MPL/GPL/LGPL tri-license for Hunspell + + 2007-08-23 Laszlo Nemeth + Porting from Aspell to Hunspell using C-like structs +*/ + +#ifndef __PHONETHXX__ +#define __PHONETHXX__ + +#define HASHSIZE 256 +#define MAXPHONETLEN 256 +#define MAXPHONETUTF8LEN (MAXPHONETLEN * 4) + +#include "hunvisapi.h" + +struct phonetable { + char utf8; + cs_info * lang; + int num; + char * * rules; + int hash[HASHSIZE]; +}; + +LIBHUNSPELL_DLL_EXPORTED void init_phonet_hash(phonetable & parms); + +LIBHUNSPELL_DLL_EXPORTED int phonet (const char * inword, char * target, + int len, phonetable & phone); + +#endif diff --git a/plugins/SpellChecker/hunspell/replist.cxx b/plugins/SpellChecker/hunspell/replist.cxx new file mode 100644 index 0000000000..bc153733db --- /dev/null +++ b/plugins/SpellChecker/hunspell/replist.cxx @@ -0,0 +1,87 @@ +#include "license.hunspell" +#include "license.myspell" + +#include +#include +#include + +#include "replist.hxx" +#include "csutil.hxx" + +RepList::RepList(int n) { + dat = (replentry **) malloc(sizeof(replentry *) * n); + if (dat == 0) size = 0; else size = n; + pos = 0; +} + +RepList::~RepList() +{ + for (int i = 0; i < pos; i++) { + free(dat[i]->pattern); + free(dat[i]->pattern2); + free(dat[i]); + } + free(dat); +} + +int RepList::get_pos() { + return pos; +} + +replentry * RepList::item(int n) { + return dat[n]; +} + +int RepList::findnear(const char * word) { + int p1 = 0; + int p2 = pos; + while ((p2 - p1) > 1) { + int m = (p1 + p2) / 2; + int c = strcmp(word, dat[m]->pattern); + if (c <= 0) { + if (c < 0) p2 = m; else p1 = p2 = m; + } else p1 = m; + } + return p1; +} + +int RepList::match(const char * word, int n) { + if (strncmp(word, dat[n]->pattern, strlen(dat[n]->pattern)) == 0) return strlen(dat[n]->pattern); + return 0; +} + +int RepList::add(char * pat1, char * pat2) { + if (pos >= size || pat1 == NULL || pat2 == NULL) return 1; + replentry * r = (replentry *) malloc(sizeof(replentry)); + if (r == NULL) return 1; + r->pattern = mystrrep(pat1, "_", " "); + r->pattern2 = mystrrep(pat2, "_", " "); + r->start = false; + r->end = false; + dat[pos++] = r; + for (int i = pos - 1; i > 0; i--) { + r = dat[i]; + if (strcmp(r->pattern, dat[i - 1]->pattern) < 0) { + dat[i] = dat[i - 1]; + dat[i - 1] = r; + } else break; + } + return 0; +} + +int RepList::conv(const char * word, char * dest) { + int stl = 0; + int change = 0; + for (size_t i = 0; i < strlen(word); i++) { + int n = findnear(word + i); + int l = match(word + i, n); + if (l) { + strcpy(dest + stl, dat[n]->pattern2); + stl += strlen(dat[n]->pattern2); + i += l - 1; + change = 1; + } else dest[stl++] = word[i]; + } + dest[stl] = '\0'; + return change; +} diff --git a/plugins/SpellChecker/hunspell/replist.hxx b/plugins/SpellChecker/hunspell/replist.hxx new file mode 100644 index 0000000000..1cc039ebeb --- /dev/null +++ b/plugins/SpellChecker/hunspell/replist.hxx @@ -0,0 +1,27 @@ +/* string replacement list class */ +#ifndef _REPLIST_HXX_ +#define _REPLIST_HXX_ + +#include "hunvisapi.h" + +#include "w_char.hxx" + +class LIBHUNSPELL_DLL_EXPORTED RepList +{ +protected: + replentry ** dat; + int size; + int pos; + +public: + RepList(int n); + ~RepList(); + + int get_pos(); + int add(char * pat1, char * pat2); + replentry * item(int n); + int findnear(const char * word); + int match(const char * word, int n); + int conv(const char * word, char * dest); +}; +#endif diff --git a/plugins/SpellChecker/hunspell/suggestmgr.cxx b/plugins/SpellChecker/hunspell/suggestmgr.cxx new file mode 100644 index 0000000000..d08b506b9f --- /dev/null +++ b/plugins/SpellChecker/hunspell/suggestmgr.cxx @@ -0,0 +1,2001 @@ +#include "license.hunspell" +#include "license.myspell" + +#include +#include +#include +#include + +#include "suggestmgr.hxx" +#include "htypes.hxx" +#include "csutil.hxx" + +const w_char W_VLINE = { '\0', '|' }; + +SuggestMgr::SuggestMgr(const char * tryme, int maxn, + AffixMgr * aptr) +{ + + // register affix manager and check in string of chars to + // try when building candidate suggestions + pAMgr = aptr; + + csconv = NULL; + + ckeyl = 0; + ckey = NULL; + ckey_utf = NULL; + + ctryl = 0; + ctry = NULL; + ctry_utf = NULL; + + utf8 = 0; + langnum = 0; + complexprefixes = 0; + + maxSug = maxn; + nosplitsugs = 0; + maxngramsugs = MAXNGRAMSUGS; + maxcpdsugs = MAXCOMPOUNDSUGS; + + if (pAMgr) { + langnum = pAMgr->get_langnum(); + ckey = pAMgr->get_key_string(); + nosplitsugs = pAMgr->get_nosplitsugs(); + if (pAMgr->get_maxngramsugs() >= 0) + maxngramsugs = pAMgr->get_maxngramsugs(); + utf8 = pAMgr->get_utf8(); + if (pAMgr->get_maxcpdsugs() >= 0) + maxcpdsugs = pAMgr->get_maxcpdsugs(); + if (!utf8) + { + char * enc = pAMgr->get_encoding(); + csconv = get_current_cs(enc); + free(enc); + } + complexprefixes = pAMgr->get_complexprefixes(); + } + + if (ckey) { + if (utf8) { + w_char t[MAXSWL]; + ckeyl = u8_u16(t, MAXSWL, ckey); + ckey_utf = (w_char *) malloc(ckeyl * sizeof(w_char)); + if (ckey_utf) memcpy(ckey_utf, t, ckeyl * sizeof(w_char)); + else ckeyl = 0; + } else { + ckeyl = strlen(ckey); + } + } + + if (tryme) { + ctry = mystrdup(tryme); + if (ctry) ctryl = strlen(ctry); + if (ctry && utf8) { + w_char t[MAXSWL]; + ctryl = u8_u16(t, MAXSWL, tryme); + ctry_utf = (w_char *) malloc(ctryl * sizeof(w_char)); + if (ctry_utf) memcpy(ctry_utf, t, ctryl * sizeof(w_char)); + else ctryl = 0; + } + } +} + + +SuggestMgr::~SuggestMgr() +{ + pAMgr = NULL; + if (ckey) free(ckey); + ckey = NULL; + if (ckey_utf) free(ckey_utf); + ckey_utf = NULL; + ckeyl = 0; + if (ctry) free(ctry); + ctry = NULL; + if (ctry_utf) free(ctry_utf); + ctry_utf = NULL; + ctryl = 0; + maxSug = 0; +#ifdef MOZILLA_CLIENT + delete [] csconv; +#endif +} + +int SuggestMgr::testsug(char** wlst, const char * candidate, int wl, int ns, int cpdsuggest, + int * timer, clock_t * timelimit) { + int cwrd = 1; + if (ns == maxSug) return maxSug; + for (int k=0; k < ns; k++) { + if (strcmp(candidate,wlst[k]) == 0) cwrd = 0; + } + if ((cwrd) && checkword(candidate, wl, cpdsuggest, timer, timelimit)) { + wlst[ns] = mystrdup(candidate); + if (wlst[ns] == NULL) { + for (int j=0; j 0) oldSug = nsug; + + // suggestions for an uppercase word (html -> HTML) + if ((nsug < maxSug) && (nsug > -1)) { + nsug = (utf8) ? capchars_utf(wlst, word_utf, wl, nsug, cpdsuggest) : + capchars(wlst, word, nsug, cpdsuggest); + } + + // perhaps we made a typical fault of spelling + if ((nsug < maxSug) && (nsug > -1) && (!cpdsuggest || (nsug < oldSug + maxcpdsugs))) { + nsug = replchars(wlst, word, nsug, cpdsuggest); + } + + // perhaps we made chose the wrong char from a related set + if ((nsug < maxSug) && (nsug > -1) && (!cpdsuggest || (nsug < oldSug + maxcpdsugs))) { + nsug = mapchars(wlst, word, nsug, cpdsuggest); + } + + // only suggest compound words when no other suggestion + if ((cpdsuggest == 0) && (nsug > nsugorig)) nocompoundtwowords=1; + + // did we swap the order of chars by mistake + if ((nsug < maxSug) && (nsug > -1) && (!cpdsuggest || (nsug < oldSug + maxcpdsugs))) { + nsug = (utf8) ? swapchar_utf(wlst, word_utf, wl, nsug, cpdsuggest) : + swapchar(wlst, word, nsug, cpdsuggest); + } + + // did we swap the order of non adjacent chars by mistake + if ((nsug < maxSug) && (nsug > -1) && (!cpdsuggest || (nsug < oldSug + maxcpdsugs))) { + nsug = (utf8) ? longswapchar_utf(wlst, word_utf, wl, nsug, cpdsuggest) : + longswapchar(wlst, word, nsug, cpdsuggest); + } + + // did we just hit the wrong key in place of a good char (case and keyboard) + if ((nsug < maxSug) && (nsug > -1) && (!cpdsuggest || (nsug < oldSug + maxcpdsugs))) { + nsug = (utf8) ? badcharkey_utf(wlst, word_utf, wl, nsug, cpdsuggest) : + badcharkey(wlst, word, nsug, cpdsuggest); + } + + // did we add a char that should not be there + if ((nsug < maxSug) && (nsug > -1) && (!cpdsuggest || (nsug < oldSug + maxcpdsugs))) { + nsug = (utf8) ? extrachar_utf(wlst, word_utf, wl, nsug, cpdsuggest) : + extrachar(wlst, word, nsug, cpdsuggest); + } + + + // did we forgot a char + if ((nsug < maxSug) && (nsug > -1) && (!cpdsuggest || (nsug < oldSug + maxcpdsugs))) { + nsug = (utf8) ? forgotchar_utf(wlst, word_utf, wl, nsug, cpdsuggest) : + forgotchar(wlst, word, nsug, cpdsuggest); + } + + // did we move a char + if ((nsug < maxSug) && (nsug > -1) && (!cpdsuggest || (nsug < oldSug + maxcpdsugs))) { + nsug = (utf8) ? movechar_utf(wlst, word_utf, wl, nsug, cpdsuggest) : + movechar(wlst, word, nsug, cpdsuggest); + } + + // did we just hit the wrong key in place of a good char + if ((nsug < maxSug) && (nsug > -1) && (!cpdsuggest || (nsug < oldSug + maxcpdsugs))) { + nsug = (utf8) ? badchar_utf(wlst, word_utf, wl, nsug, cpdsuggest) : + badchar(wlst, word, nsug, cpdsuggest); + } + + // did we double two characters + if ((nsug < maxSug) && (nsug > -1) && (!cpdsuggest || (nsug < oldSug + maxcpdsugs))) { + nsug = (utf8) ? doubletwochars_utf(wlst, word_utf, wl, nsug, cpdsuggest) : + doubletwochars(wlst, word, nsug, cpdsuggest); + } + + // perhaps we forgot to hit space and two words ran together + if (!nosplitsugs && (nsug < maxSug) && (nsug > -1) && (!cpdsuggest || (nsug < oldSug + maxcpdsugs))) { + nsug = twowords(wlst, word, nsug, cpdsuggest); + } + + } // repeating ``for'' statement compounding support + + if (nsug < 0) { + // we ran out of memory - we should free up as much as possible + for (int i = 0; i < maxSug; i++) + if (wlst[i] != NULL) free(wlst[i]); + free(wlst); + wlst = NULL; + } + + if (!nocompoundtwowords && (nsug > 0) && onlycompoundsug) *onlycompoundsug = 1; + + *slst = wlst; + return nsug; +} + +// generate suggestions for a word with typical mistake +// pass in address of array of char * pointers +#ifdef HUNSPELL_EXPERIMENTAL +int SuggestMgr::suggest_auto(char*** slst, const char * w, int nsug) +{ + int nocompoundtwowords = 0; + char ** wlst; + int oldSug; + + char w2[MAXWORDUTF8LEN]; + const char * word = w; + + // word reversing wrapper for complex prefixes + if (complexprefixes) { + strcpy(w2, w); + if (utf8) reverseword_utf(w2); else reverseword(w2); + word = w2; + } + + if (*slst) { + wlst = *slst; + } else { + wlst = (char **) malloc(maxSug * sizeof(char *)); + if (wlst == NULL) return -1; + } + + for (int cpdsuggest=0; (cpdsuggest<2) && (nocompoundtwowords==0); cpdsuggest++) { + + // limit compound suggestion + if (cpdsuggest > 0) oldSug = nsug; + + // perhaps we made a typical fault of spelling + if ((nsug < maxSug) && (nsug > -1)) + nsug = replchars(wlst, word, nsug, cpdsuggest); + + // perhaps we made chose the wrong char from a related set + if ((nsug < maxSug) && (nsug > -1) && (!cpdsuggest || (nsug < oldSug + maxcpdsugs))) + nsug = mapchars(wlst, word, nsug, cpdsuggest); + + if ((cpdsuggest==0) && (nsug>0)) nocompoundtwowords=1; + + // perhaps we forgot to hit space and two words ran together + + if ((nsug < maxSug) && (nsug > -1) && (!cpdsuggest || (nsug < oldSug + maxcpdsugs)) && check_forbidden(word, strlen(word))) { + nsug = twowords(wlst, word, nsug, cpdsuggest); + } + + } // repeating ``for'' statement compounding support + + if (nsug < 0) { + for (int i=0;i HTML) +int SuggestMgr::capchars_utf(char ** wlst, const w_char * word, int wl, int ns, int cpdsuggest) +{ + char candidate[MAXSWUTF8L]; + w_char candidate_utf[MAXSWL]; + memcpy(candidate_utf, word, wl * sizeof(w_char)); + mkallcap_utf(candidate_utf, wl, langnum); + u16_u8(candidate, MAXSWUTF8L, candidate_utf, wl); + return testsug(wlst, candidate, strlen(candidate), ns, cpdsuggest, NULL, NULL); +} + +// suggestions for an uppercase word (html -> HTML) +int SuggestMgr::capchars(char** wlst, const char * word, int ns, int cpdsuggest) +{ + char candidate[MAXSWUTF8L]; + strcpy(candidate, word); + mkallcap(candidate, csconv); + return testsug(wlst, candidate, strlen(candidate), ns, cpdsuggest, NULL, NULL); +} + +// suggestions for when chose the wrong char out of a related set +int SuggestMgr::mapchars(char** wlst, const char * word, int ns, int cpdsuggest) +{ + char candidate[MAXSWUTF8L]; + clock_t timelimit; + int timer; + candidate[0] = '\0'; + + int wl = strlen(word); + if (wl < 2 || ! pAMgr) return ns; + + int nummap = pAMgr->get_nummap(); + struct mapentry* maptable = pAMgr->get_maptable(); + if (maptable==NULL) return ns; + + timelimit = clock(); + timer = MINTIMER; + return map_related(word, (char *) &candidate, 0, 0, wlst, cpdsuggest, ns, maptable, nummap, &timer, &timelimit); +} + +int SuggestMgr::map_related(const char * word, char * candidate, int wn, int cn, + char** wlst, int cpdsuggest, int ns, + const mapentry* maptable, int nummap, int * timer, clock_t * timelimit) +{ + if (*(word + wn) == '\0') { + int cwrd = 1; + *(candidate + cn) = '\0'; + int wl = strlen(candidate); + for (int m=0; m < ns; m++) + if (strcmp(candidate, wlst[m]) == 0) cwrd = 0; + if ((cwrd) && checkword(candidate, wl, cpdsuggest, timer, timelimit)) { + if (ns < maxSug) { + wlst[ns] = mystrdup(candidate); + if (wlst[ns] == NULL) return -1; + ns++; + } + } + return ns; + } + int in_map = 0; + for (int j = 0; j < nummap; j++) { + for (int k = 0; k < maptable[j].len; k++) { + int len = strlen(maptable[j].set[k]); + if (strncmp(maptable[j].set[k], word + wn, len) == 0) { + in_map = 1; + for (int l = 0; l < maptable[j].len; l++) { + strcpy(candidate + cn, maptable[j].set[l]); + ns = map_related(word, candidate, wn + len, strlen(candidate), wlst, + cpdsuggest, ns, maptable, nummap, timer, timelimit); + if (!(*timer)) return ns; + } + } + } + } + if (!in_map) { + *(candidate + cn) = *(word + wn); + ns = map_related(word, candidate, wn + 1, cn + 1, wlst, cpdsuggest, + ns, maptable, nummap, timer, timelimit); + } + return ns; +} + +// suggestions for a typical fault of spelling, that +// differs with more, than 1 letter from the right form. +int SuggestMgr::replchars(char** wlst, const char * word, int ns, int cpdsuggest) +{ + char candidate[MAXSWUTF8L]; + const char * r; + int lenr, lenp; + int wl = strlen(word); + if (wl < 2 || ! pAMgr) return ns; + int numrep = pAMgr->get_numrep(); + struct replentry* reptable = pAMgr->get_reptable(); + if (reptable==NULL) return ns; + for (int i=0; i < numrep; i++ ) { + r = word; + lenr = strlen(reptable[i].pattern2); + lenp = strlen(reptable[i].pattern); + // search every occurence of the pattern in the word + while ((r=strstr(r, reptable[i].pattern)) != NULL && (!reptable[i].end || strlen(r) == strlen(reptable[i].pattern)) && + (!reptable[i].start || r == word)) { + strcpy(candidate, word); + if (r-word + lenr + strlen(r+lenp) >= MAXSWUTF8L) break; + strcpy(candidate+(r-word),reptable[i].pattern2); + strcpy(candidate+(r-word)+lenr, r+lenp); + ns = testsug(wlst, candidate, wl-lenp+lenr, ns, cpdsuggest, NULL, NULL); + if (ns == -1) return -1; + // check REP suggestions with space + char * sp = strchr(candidate, ' '); + if (sp) { + char * prev = candidate; + while (sp) { + *sp = '\0'; + if (checkword(prev, strlen(prev), 0, NULL, NULL)) { + int oldns = ns; + *sp = ' '; + ns = testsug(wlst, sp + 1, strlen(sp + 1), ns, cpdsuggest, NULL, NULL); + if (ns == -1) return -1; + if (oldns < ns) { + free(wlst[ns - 1]); + wlst[ns - 1] = mystrdup(candidate); + if (!wlst[ns - 1]) return -1; + } + } + *sp = ' '; + prev = sp + 1; + sp = strchr(prev, ' '); + } + } + r++; // search for the next letter + } + } + return ns; +} + +// perhaps we doubled two characters (pattern aba -> ababa, for example vacation -> vacacation) +int SuggestMgr::doubletwochars(char** wlst, const char * word, int ns, int cpdsuggest) +{ + char candidate[MAXSWUTF8L]; + int state=0; + int wl = strlen(word); + if (wl < 5 || ! pAMgr) return ns; + for (int i=2; i < wl; i++ ) { + if (word[i]==word[i-2]) { + state++; + if (state==3) { + strcpy(candidate,word); + strcpy(candidate+i-1,word+i+1); + ns = testsug(wlst, candidate, wl-2, ns, cpdsuggest, NULL, NULL); + if (ns == -1) return -1; + state=0; + } + } else { + state=0; + } + } + return ns; +} + +// perhaps we doubled two characters (pattern aba -> ababa, for example vacation -> vacacation) +int SuggestMgr::doubletwochars_utf(char ** wlst, const w_char * word, int wl, int ns, int cpdsuggest) +{ + w_char candidate_utf[MAXSWL]; + char candidate[MAXSWUTF8L]; + int state=0; + if (wl < 5 || ! pAMgr) return ns; + for (int i=2; i < wl; i++) { + if (w_char_eq(word[i], word[i-2])) { + state++; + if (state==3) { + memcpy(candidate_utf, word, (i - 1) * sizeof(w_char)); + memcpy(candidate_utf+i-1, word+i+1, (wl-i-1) * sizeof(w_char)); + u16_u8(candidate, MAXSWUTF8L, candidate_utf, wl-2); + ns = testsug(wlst, candidate, strlen(candidate), ns, cpdsuggest, NULL, NULL); + if (ns == -1) return -1; + state=0; + } + } else { + state=0; + } + } + return ns; +} + +// error is wrong char in place of correct one (case and keyboard related version) +int SuggestMgr::badcharkey(char ** wlst, const char * word, int ns, int cpdsuggest) +{ + char tmpc; + char candidate[MAXSWUTF8L]; + int wl = strlen(word); + strcpy(candidate, word); + // swap out each char one by one and try uppercase and neighbor + // keyboard chars in its place to see if that makes a good word + + for (int i=0; i < wl; i++) { + tmpc = candidate[i]; + // check with uppercase letters + candidate[i] = csconv[((unsigned char)tmpc)].cupper; + if (tmpc != candidate[i]) { + ns = testsug(wlst, candidate, wl, ns, cpdsuggest, NULL, NULL); + if (ns == -1) return -1; + candidate[i] = tmpc; + } + // check neighbor characters in keyboard string + if (!ckey) continue; + char * loc = strchr(ckey, tmpc); + while (loc) { + if ((loc > ckey) && (*(loc - 1) != '|')) { + candidate[i] = *(loc - 1); + ns = testsug(wlst, candidate, wl, ns, cpdsuggest, NULL, NULL); + if (ns == -1) return -1; + } + if ((*(loc + 1) != '|') && (*(loc + 1) != '\0')) { + candidate[i] = *(loc + 1); + ns = testsug(wlst, candidate, wl, ns, cpdsuggest, NULL, NULL); + if (ns == -1) return -1; + } + loc = strchr(loc + 1, tmpc); + } + candidate[i] = tmpc; + } + return ns; +} + +// error is wrong char in place of correct one (case and keyboard related version) +int SuggestMgr::badcharkey_utf(char ** wlst, const w_char * word, int wl, int ns, int cpdsuggest) +{ + w_char tmpc; + w_char candidate_utf[MAXSWL]; + char candidate[MAXSWUTF8L]; + memcpy(candidate_utf, word, wl * sizeof(w_char)); + // swap out each char one by one and try all the tryme + // chars in its place to see if that makes a good word + for (int i=0; i < wl; i++) { + tmpc = candidate_utf[i]; + // check with uppercase letters + mkallcap_utf(candidate_utf + i, 1, langnum); + if (!w_char_eq(tmpc, candidate_utf[i])) { + u16_u8(candidate, MAXSWUTF8L, candidate_utf, wl); + ns = testsug(wlst, candidate, strlen(candidate), ns, cpdsuggest, NULL, NULL); + if (ns == -1) return -1; + candidate_utf[i] = tmpc; + } + // check neighbor characters in keyboard string + if (!ckey) continue; + w_char * loc = ckey_utf; + while ((loc < (ckey_utf + ckeyl)) && !w_char_eq(*loc, tmpc)) loc++; + while (loc < (ckey_utf + ckeyl)) { + if ((loc > ckey_utf) && !w_char_eq(*(loc - 1), W_VLINE)) { + candidate_utf[i] = *(loc - 1); + u16_u8(candidate, MAXSWUTF8L, candidate_utf, wl); + ns = testsug(wlst, candidate, strlen(candidate), ns, cpdsuggest, NULL, NULL); + if (ns == -1) return -1; + } + if (((loc + 1) < (ckey_utf + ckeyl)) && !w_char_eq(*(loc + 1), W_VLINE)) { + candidate_utf[i] = *(loc + 1); + u16_u8(candidate, MAXSWUTF8L, candidate_utf, wl); + ns = testsug(wlst, candidate, strlen(candidate), ns, cpdsuggest, NULL, NULL); + if (ns == -1) return -1; + } + do { loc++; } while ((loc < (ckey_utf + ckeyl)) && !w_char_eq(*loc, tmpc)); + } + candidate_utf[i] = tmpc; + } + return ns; +} + +// error is wrong char in place of correct one +int SuggestMgr::badchar(char ** wlst, const char * word, int ns, int cpdsuggest) +{ + char tmpc; + char candidate[MAXSWUTF8L]; + clock_t timelimit = clock(); + int timer = MINTIMER; + int wl = strlen(word); + strcpy(candidate, word); + // swap out each char one by one and try all the tryme + // chars in its place to see if that makes a good word + for (int j=0; j < ctryl; j++) { + for (int i=wl-1; i >= 0; i--) { + tmpc = candidate[i]; + if (ctry[j] == tmpc) continue; + candidate[i] = ctry[j]; + ns = testsug(wlst, candidate, wl, ns, cpdsuggest, &timer, &timelimit); + if (ns == -1) return -1; + if (!timer) return ns; + candidate[i] = tmpc; + } + } + return ns; +} + +// error is wrong char in place of correct one +int SuggestMgr::badchar_utf(char ** wlst, const w_char * word, int wl, int ns, int cpdsuggest) +{ + w_char tmpc; + w_char candidate_utf[MAXSWL]; + char candidate[MAXSWUTF8L]; + clock_t timelimit = clock(); + int timer = MINTIMER; + memcpy(candidate_utf, word, wl * sizeof(w_char)); + // swap out each char one by one and try all the tryme + // chars in its place to see if that makes a good word + for (int j=0; j < ctryl; j++) { + for (int i=wl-1; i >= 0; i--) { + tmpc = candidate_utf[i]; + if (w_char_eq(tmpc, ctry_utf[j])) continue; + candidate_utf[i] = ctry_utf[j]; + u16_u8(candidate, MAXSWUTF8L, candidate_utf, wl); + ns = testsug(wlst, candidate, strlen(candidate), ns, cpdsuggest, &timer, &timelimit); + if (ns == -1) return -1; + if (!timer) return ns; + candidate_utf[i] = tmpc; + } + } + return ns; +} + +// error is word has an extra letter it does not need +int SuggestMgr::extrachar_utf(char** wlst, const w_char * word, int wl, int ns, int cpdsuggest) +{ + char candidate[MAXSWUTF8L]; + w_char candidate_utf[MAXSWL]; + w_char * p; + w_char tmpc = W_VLINE; // not used value, only for VCC warning message + if (wl < 2) return ns; + // try omitting one char of word at a time + memcpy(candidate_utf, word, wl * sizeof(w_char)); + for (p = candidate_utf + wl - 1; p >= candidate_utf; p--) { + w_char tmpc2 = *p; + if (p < candidate_utf + wl - 1) *p = tmpc; + u16_u8(candidate, MAXSWUTF8L, candidate_utf, wl - 1); + ns = testsug(wlst, candidate, strlen(candidate), ns, cpdsuggest, NULL, NULL); + if (ns == -1) return -1; + tmpc = tmpc2; + } + return ns; +} + +// error is word has an extra letter it does not need +int SuggestMgr::extrachar(char** wlst, const char * word, int ns, int cpdsuggest) +{ + char tmpc = '\0'; + char candidate[MAXSWUTF8L]; + char * p; + int wl = strlen(word); + if (wl < 2) return ns; + // try omitting one char of word at a time + strcpy (candidate, word); + for (p = candidate + wl - 1; p >=candidate; p--) { + char tmpc2 = *p; + *p = tmpc; + ns = testsug(wlst, candidate, wl-1, ns, cpdsuggest, NULL, NULL); + if (ns == -1) return -1; + tmpc = tmpc2; + } + return ns; +} + +// error is missing a letter it needs +int SuggestMgr::forgotchar(char ** wlst, const char * word, int ns, int cpdsuggest) +{ + char candidate[MAXSWUTF8L]; + char * p; + clock_t timelimit = clock(); + int timer = MINTIMER; + int wl = strlen(word); + // try inserting a tryme character before every letter (and the null terminator) + for (int i = 0; i < ctryl; i++) { + strcpy(candidate, word); + for (p = candidate + wl; p >= candidate; p--) { + *(p+1) = *p; + *p = ctry[i]; + ns = testsug(wlst, candidate, wl+1, ns, cpdsuggest, &timer, &timelimit); + if (ns == -1) return -1; + if (!timer) return ns; + } + } + return ns; +} + +// error is missing a letter it needs +int SuggestMgr::forgotchar_utf(char ** wlst, const w_char * word, int wl, int ns, int cpdsuggest) +{ + w_char candidate_utf[MAXSWL]; + char candidate[MAXSWUTF8L]; + w_char * p; + clock_t timelimit = clock(); + int timer = MINTIMER; + // try inserting a tryme character at the end of the word and before every letter + for (int i = 0; i < ctryl; i++) { + memcpy (candidate_utf, word, wl * sizeof(w_char)); + for (p = candidate_utf + wl; p >= candidate_utf; p--) { + *(p + 1) = *p; + *p = ctry_utf[i]; + u16_u8(candidate, MAXSWUTF8L, candidate_utf, wl + 1); + ns = testsug(wlst, candidate, strlen(candidate), ns, cpdsuggest, &timer, &timelimit); + if (ns == -1) return -1; + if (!timer) return ns; + } + } + return ns; +} + + +/* error is should have been two words */ +int SuggestMgr::twowords(char ** wlst, const char * word, int ns, int cpdsuggest) +{ + char candidate[MAXSWUTF8L]; + char * p; + int c1, c2; + int forbidden = 0; + int cwrd; + + int wl=strlen(word); + if (wl < 3) return ns; + + if (langnum == LANG_hu) forbidden = check_forbidden(word, wl); + + strcpy(candidate + 1, word); + // split the string into two pieces after every char + // if both pieces are good words make them a suggestion + for (p = candidate + 1; p[1] != '\0'; p++) { + p[-1] = *p; + // go to end of the UTF-8 character + while (utf8 && ((p[1] & 0xc0) == 0x80)) { + *p = p[1]; + p++; + } + if (utf8 && p[1] == '\0') break; // last UTF-8 character + *p = '\0'; + c1 = checkword(candidate,strlen(candidate), cpdsuggest, NULL, NULL); + if (c1) { + c2 = checkword((p+1),strlen(p+1), cpdsuggest, NULL, NULL); + if (c2) { + *p = ' '; + + // spec. Hungarian code (need a better compound word support) + if ((langnum == LANG_hu) && !forbidden && + // if 3 repeating letter, use - instead of space + (((p[-1] == p[1]) && (((p>candidate+1) && (p[-1] == p[-2])) || (p[-1] == p[2]))) || + // or multiple compounding, with more, than 6 syllables + ((c1 == 3) && (c2 >= 2)))) *p = '-'; + + cwrd = 1; + for (int k=0; k < ns; k++) + if (strcmp(candidate,wlst[k]) == 0) cwrd = 0; + if (ns < maxSug) { + if (cwrd) { + wlst[ns] = mystrdup(candidate); + if (wlst[ns] == NULL) return -1; + ns++; + } + } else return ns; + // add two word suggestion with dash, if TRY string contains + // "a" or "-" + // NOTE: cwrd doesn't modified for REP twoword sugg. + if (ctry && (strchr(ctry, 'a') || strchr(ctry, '-')) && + mystrlen(p + 1) > 1 && + mystrlen(candidate) - mystrlen(p) > 1) { + *p = '-'; + for (int k=0; k < ns; k++) + if (strcmp(candidate,wlst[k]) == 0) cwrd = 0; + if (ns < maxSug) { + if (cwrd) { + wlst[ns] = mystrdup(candidate); + if (wlst[ns] == NULL) return -1; + ns++; + } + } else return ns; + } + } + } + } + return ns; +} + + +// error is adjacent letter were swapped +int SuggestMgr::swapchar(char ** wlst, const char * word, int ns, int cpdsuggest) +{ + char candidate[MAXSWUTF8L]; + char * p; + char tmpc; + int wl=strlen(word); + // try swapping adjacent chars one by one + strcpy(candidate, word); + for (p = candidate; p[1] != 0; p++) { + tmpc = *p; + *p = p[1]; + p[1] = tmpc; + ns = testsug(wlst, candidate, wl, ns, cpdsuggest, NULL, NULL); + if (ns == -1) return -1; + p[1] = *p; + *p = tmpc; + } + // try double swaps for short words + // ahev -> have, owudl -> would + if (wl == 4 || wl == 5) { + candidate[0] = word[1]; + candidate[1] = word[0]; + candidate[2] = word[2]; + candidate[wl - 2] = word[wl - 1]; + candidate[wl - 1] = word[wl - 2]; + ns = testsug(wlst, candidate, wl, ns, cpdsuggest, NULL, NULL); + if (ns == -1) return -1; + if (wl == 5) { + candidate[0] = word[0]; + candidate[1] = word[2]; + candidate[2] = word[1]; + ns = testsug(wlst, candidate, wl, ns, cpdsuggest, NULL, NULL); + if (ns == -1) return -1; + } + } + return ns; +} + +// error is adjacent letter were swapped +int SuggestMgr::swapchar_utf(char ** wlst, const w_char * word, int wl, int ns, int cpdsuggest) +{ + w_char candidate_utf[MAXSWL]; + char candidate[MAXSWUTF8L]; + w_char * p; + w_char tmpc; + int len = 0; + // try swapping adjacent chars one by one + memcpy (candidate_utf, word, wl * sizeof(w_char)); + for (p = candidate_utf; p < (candidate_utf + wl - 1); p++) { + tmpc = *p; + *p = p[1]; + p[1] = tmpc; + u16_u8(candidate, MAXSWUTF8L, candidate_utf, wl); + if (len == 0) len = strlen(candidate); + ns = testsug(wlst, candidate, len, ns, cpdsuggest, NULL, NULL); + if (ns == -1) return -1; + p[1] = *p; + *p = tmpc; + } + // try double swaps for short words + // ahev -> have, owudl -> would, suodn -> sound + if (wl == 4 || wl == 5) { + candidate_utf[0] = word[1]; + candidate_utf[1] = word[0]; + candidate_utf[2] = word[2]; + candidate_utf[wl - 2] = word[wl - 1]; + candidate_utf[wl - 1] = word[wl - 2]; + u16_u8(candidate, MAXSWUTF8L, candidate_utf, wl); + ns = testsug(wlst, candidate, len, ns, cpdsuggest, NULL, NULL); + if (ns == -1) return -1; + if (wl == 5) { + candidate_utf[0] = word[0]; + candidate_utf[1] = word[2]; + candidate_utf[2] = word[1]; + u16_u8(candidate, MAXSWUTF8L, candidate_utf, wl); + ns = testsug(wlst, candidate, len, ns, cpdsuggest, NULL, NULL); + if (ns == -1) return -1; + } + } + return ns; +} + +// error is not adjacent letter were swapped +int SuggestMgr::longswapchar(char ** wlst, const char * word, int ns, int cpdsuggest) +{ + char candidate[MAXSWUTF8L]; + char * p; + char * q; + char tmpc; + int wl=strlen(word); + // try swapping not adjacent chars one by one + strcpy(candidate, word); + for (p = candidate; *p != 0; p++) { + for (q = candidate; *q != 0; q++) { + if (abs((int)(p-q)) > 1) { + tmpc = *p; + *p = *q; + *q = tmpc; + ns = testsug(wlst, candidate, wl, ns, cpdsuggest, NULL, NULL); + if (ns == -1) return -1; + *q = *p; + *p = tmpc; + } + } + } + return ns; +} + + +// error is adjacent letter were swapped +int SuggestMgr::longswapchar_utf(char ** wlst, const w_char * word, int wl, int ns, int cpdsuggest) +{ + w_char candidate_utf[MAXSWL]; + char candidate[MAXSWUTF8L]; + w_char * p; + w_char * q; + w_char tmpc; + // try swapping not adjacent chars + memcpy (candidate_utf, word, wl * sizeof(w_char)); + for (p = candidate_utf; p < (candidate_utf + wl); p++) { + for (q = candidate_utf; q < (candidate_utf + wl); q++) { + if (abs((int)(p-q)) > 1) { + tmpc = *p; + *p = *q; + *q = tmpc; + u16_u8(candidate, MAXSWUTF8L, candidate_utf, wl); + ns = testsug(wlst, candidate, strlen(candidate), ns, cpdsuggest, NULL, NULL); + if (ns == -1) return -1; + *q = *p; + *p = tmpc; + } + } + } + return ns; +} + +// error is a letter was moved +int SuggestMgr::movechar(char ** wlst, const char * word, int ns, int cpdsuggest) +{ + char candidate[MAXSWUTF8L]; + char * p; + char * q; + char tmpc; + + int wl=strlen(word); + // try moving a char + strcpy(candidate, word); + for (p = candidate; *p != 0; p++) { + for (q = p + 1; (*q != 0) && ((q - p) < 10); q++) { + tmpc = *(q-1); + *(q-1) = *q; + *q = tmpc; + if ((q-p) < 2) continue; // omit swap char + ns = testsug(wlst, candidate, wl, ns, cpdsuggest, NULL, NULL); + if (ns == -1) return -1; + } + strcpy(candidate, word); + } + for (p = candidate + wl - 1; p > candidate; p--) { + for (q = p - 1; (q >= candidate) && ((p - q) < 10); q--) { + tmpc = *(q+1); + *(q+1) = *q; + *q = tmpc; + if ((p-q) < 2) continue; // omit swap char + ns = testsug(wlst, candidate, wl, ns, cpdsuggest, NULL, NULL); + if (ns == -1) return -1; + } + strcpy(candidate, word); + } + return ns; +} + +// error is a letter was moved +int SuggestMgr::movechar_utf(char ** wlst, const w_char * word, int wl, int ns, int cpdsuggest) +{ + w_char candidate_utf[MAXSWL]; + char candidate[MAXSWUTF8L]; + w_char * p; + w_char * q; + w_char tmpc; + // try moving a char + memcpy (candidate_utf, word, wl * sizeof(w_char)); + for (p = candidate_utf; p < (candidate_utf + wl); p++) { + for (q = p + 1; (q < (candidate_utf + wl)) && ((q - p) < 10); q++) { + tmpc = *(q-1); + *(q-1) = *q; + *q = tmpc; + if ((q-p) < 2) continue; // omit swap char + u16_u8(candidate, MAXSWUTF8L, candidate_utf, wl); + ns = testsug(wlst, candidate, strlen(candidate), ns, cpdsuggest, NULL, NULL); + if (ns == -1) return -1; + } + memcpy (candidate_utf, word, wl * sizeof(w_char)); + } + for (p = candidate_utf + wl - 1; p > candidate_utf; p--) { + for (q = p - 1; (q >= candidate_utf) && ((p - q) < 10); q--) { + tmpc = *(q+1); + *(q+1) = *q; + *q = tmpc; + if ((p-q) < 2) continue; // omit swap char + u16_u8(candidate, MAXSWUTF8L, candidate_utf, wl); + ns = testsug(wlst, candidate, strlen(candidate), ns, cpdsuggest, NULL, NULL); + if (ns == -1) return -1; + } + memcpy (candidate_utf, word, wl * sizeof(w_char)); + } + return ns; +} + +// generate a set of suggestions for very poorly spelled words +int SuggestMgr::ngsuggest(char** wlst, char * w, int ns, HashMgr** pHMgr, int md) +{ + + int i, j; + int lval; + int sc, scphon; + int lp, lpphon; + int nonbmp = 0; + + // exhaustively search through all root words + // keeping track of the MAX_ROOTS most similar root words + struct hentry * roots[MAX_ROOTS]; + char * rootsphon[MAX_ROOTS]; + int scores[MAX_ROOTS]; + int scoresphon[MAX_ROOTS]; + for (i = 0; i < MAX_ROOTS; i++) { + roots[i] = NULL; + scores[i] = -100 * i; + rootsphon[i] = NULL; + scoresphon[i] = -100 * i; + } + lp = MAX_ROOTS - 1; + lpphon = MAX_ROOTS - 1; + scphon = -20000; + int low = NGRAM_LOWERING; + + char w2[MAXWORDUTF8LEN]; + char f[MAXSWUTF8L]; + char * word = w; + + // word reversing wrapper for complex prefixes + if (complexprefixes) { + strcpy(w2, w); + if (utf8) reverseword_utf(w2); else reverseword(w2); + word = w2; + } + + char mw[MAXSWUTF8L]; + w_char u8[MAXSWL]; + int nc = strlen(word); + int n = (utf8) ? u8_u16(u8, MAXSWL, word) : nc; + + // set character based ngram suggestion for words with non-BMP Unicode characters + if (n == -1) { + utf8 = 0; // XXX not state-free + n = nc; + nonbmp = 1; + low = 0; + } + + struct hentry* hp = NULL; + int col = -1; + phonetable * ph = (pAMgr) ? pAMgr->get_phonetable() : NULL; + char target[MAXSWUTF8L]; + char candidate[MAXSWUTF8L]; + if (ph) { + if (utf8) { + w_char _w[MAXSWL]; + int _wl = u8_u16(_w, MAXSWL, word); + mkallcap_utf(_w, _wl, langnum); + u16_u8(candidate, MAXSWUTF8L, _w, _wl); + } else { + strcpy(candidate, word); + if (!nonbmp) mkallcap(candidate, csconv); + } + phonet(candidate, target, nc, *ph); // XXX phonet() is 8-bit (nc, not n) + } + + FLAG forbiddenword = pAMgr ? pAMgr->get_forbiddenword() : FLAG_NULL; + FLAG nosuggest = pAMgr ? pAMgr->get_nosuggest() : FLAG_NULL; + FLAG nongramsuggest = pAMgr ? pAMgr->get_nongramsuggest() : FLAG_NULL; + FLAG onlyincompound = pAMgr ? pAMgr->get_onlyincompound() : FLAG_NULL; + + for (i = 0; i < md; i++) { + while (0 != (hp = (pHMgr[i])->walk_hashtable(col, hp))) { + if ((hp->astr) && (pAMgr) && + (TESTAFF(hp->astr, forbiddenword, hp->alen) || + TESTAFF(hp->astr, ONLYUPCASEFLAG, hp->alen) || + TESTAFF(hp->astr, nosuggest, hp->alen) || + TESTAFF(hp->astr, nongramsuggest, hp->alen) || + TESTAFF(hp->astr, onlyincompound, hp->alen))) continue; + + sc = ngram(3, word, HENTRY_WORD(hp), NGRAM_LONGER_WORSE + low) + + leftcommonsubstring(word, HENTRY_WORD(hp)); + + // check special pronounciation + if ((hp->var & H_OPT_PHON) && copy_field(f, HENTRY_DATA(hp), MORPH_PHON)) { + int sc2 = ngram(3, word, f, NGRAM_LONGER_WORSE + low) + + + leftcommonsubstring(word, f); + if (sc2 > sc) sc = sc2; + } + + scphon = -20000; + if (ph && (sc > 2) && (abs(n - (int) hp->clen) <= 3)) { + char target2[MAXSWUTF8L]; + if (utf8) { + w_char _w[MAXSWL]; + int _wl = u8_u16(_w, MAXSWL, HENTRY_WORD(hp)); + mkallcap_utf(_w, _wl, langnum); + u16_u8(candidate, MAXSWUTF8L, _w, _wl); + } else { + strcpy(candidate, HENTRY_WORD(hp)); + mkallcap(candidate, csconv); + } + phonet(candidate, target2, -1, *ph); + scphon = 2 * ngram(3, target, target2, NGRAM_LONGER_WORSE); + } + + if (sc > scores[lp]) { + scores[lp] = sc; + roots[lp] = hp; + lval = sc; + for (j=0; j < MAX_ROOTS; j++) + if (scores[j] < lval) { + lp = j; + lval = scores[j]; + } + } + + + if (scphon > scoresphon[lpphon]) { + scoresphon[lpphon] = scphon; + rootsphon[lpphon] = HENTRY_WORD(hp); + lval = scphon; + for (j=0; j < MAX_ROOTS; j++) + if (scoresphon[j] < lval) { + lpphon = j; + lval = scoresphon[j]; + } + } + }} + + // find minimum threshold for a passable suggestion + // mangle original word three differnt ways + // and score them to generate a minimum acceptable score + int thresh = 0; + for (int sp = 1; sp < 4; sp++) { + if (utf8) { + for (int k=sp; k < n; k+=4) *((unsigned short *) u8 + k) = '*'; + u16_u8(mw, MAXSWUTF8L, u8, n); + thresh = thresh + ngram(n, word, mw, NGRAM_ANY_MISMATCH + low); + } else { + strcpy(mw, word); + for (int k=sp; k < n; k+=4) *(mw + k) = '*'; + thresh = thresh + ngram(n, word, mw, NGRAM_ANY_MISMATCH + low); + } + } + thresh = thresh / 3; + thresh--; + + // now expand affixes on each of these root words and + // and use length adjusted ngram scores to select + // possible suggestions + char * guess[MAX_GUESS]; + char * guessorig[MAX_GUESS]; + int gscore[MAX_GUESS]; + for(i=0;iexpand_rootword(glst, MAX_WORDS, HENTRY_WORD(rp), rp->blen, + rp->astr, rp->alen, word, nc, + ((rp->var & H_OPT_PHON) ? copy_field(f, HENTRY_DATA(rp), MORPH_PHON) : NULL)); + + for (int k = 0; k < nw ; k++) { + sc = ngram(n, word, glst[k].word, NGRAM_ANY_MISMATCH + low) + + leftcommonsubstring(word, glst[k].word); + + if (sc > thresh) { + if (sc > gscore[lp]) { + if (guess[lp]) { + free (guess[lp]); + if (guessorig[lp]) { + free(guessorig[lp]); + guessorig[lp] = NULL; + } + } + gscore[lp] = sc; + guess[lp] = glst[k].word; + guessorig[lp] = glst[k].orig; + lval = sc; + for (j=0; j < MAX_GUESS; j++) + if (gscore[j] < lval) { + lp = j; + lval = gscore[j]; + } + } else { + free(glst[k].word); + if (glst[k].orig) free(glst[k].orig); + } + } else { + free(glst[k].word); + if (glst[k].orig) free(glst[k].orig); + } + } + } + } + free(glst); + + // now we are done generating guesses + // sort in order of decreasing score + + + bubblesort(&guess[0], &guessorig[0], &gscore[0], MAX_GUESS); + if (ph) bubblesort(&rootsphon[0], NULL, &scoresphon[0], MAX_ROOTS); + + // weight suggestions with a similarity index, based on + // the longest common subsequent algorithm and resort + + int is_swap = 0; + int re = 0; + double fact = 1.0; + if (pAMgr) { + int maxd = pAMgr->get_maxdiff(); + if (maxd >= 0) fact = (10.0 - maxd)/5.0; + } + + for (i=0; i < MAX_GUESS; i++) { + if (guess[i]) { + // lowering guess[i] + char gl[MAXSWUTF8L]; + int len; + if (utf8) { + w_char _w[MAXSWL]; + len = u8_u16(_w, MAXSWL, guess[i]); + mkallsmall_utf(_w, len, langnum); + u16_u8(gl, MAXSWUTF8L, _w, len); + } else { + strcpy(gl, guess[i]); + if (!nonbmp) mkallsmall(gl, csconv); + len = strlen(guess[i]); + } + + int _lcs = lcslen(word, gl); + + // same characters with different casing + if ((n == len) && (n == _lcs)) { + gscore[i] += 2000; + break; + } + // using 2-gram instead of 3, and other weightening + gscore[i] = + // length of longest common subsequent minus length difference + 2 * _lcs - abs((int) (n - len)) + + // weight length of the left common substring + leftcommonsubstring(word, gl) + + // weight equal character positions + (!nonbmp && commoncharacterpositions(word, gl, &is_swap) ? 1: 0) + + // swap character (not neighboring) + ((is_swap) ? 10 : 0) + + // ngram + ngram(4, word, gl, NGRAM_ANY_MISMATCH + low) + + // weighted ngrams + (re = ngram(2, word, gl, NGRAM_ANY_MISMATCH + low + NGRAM_WEIGHTED)) + + (re += ngram(2, gl, word, NGRAM_ANY_MISMATCH + low + NGRAM_WEIGHTED)) + + // different limit for dictionaries with PHONE rules + (ph ? (re < len * fact ? -1000 : 0) : (re < (n + len)*fact? -1000 : 0)); + } + } + + bubblesort(&guess[0], &guessorig[0], &gscore[0], MAX_GUESS); + +// phonetic version + if (ph) for (i=0; i < MAX_ROOTS; i++) { + if (rootsphon[i]) { + // lowering rootphon[i] + char gl[MAXSWUTF8L]; + int len; + if (utf8) { + w_char _w[MAXSWL]; + len = u8_u16(_w, MAXSWL, rootsphon[i]); + mkallsmall_utf(_w, len, langnum); + u16_u8(gl, MAXSWUTF8L, _w, len); + } else { + strcpy(gl, rootsphon[i]); + if (!nonbmp) mkallsmall(gl, csconv); + len = strlen(rootsphon[i]); + } + + // heuristic weigthing of ngram scores + scoresphon[i] += 2 * lcslen(word, gl) - abs((int) (n - len)) + + // weight length of the left common substring + leftcommonsubstring(word, gl); + } + } + + if (ph) bubblesort(&rootsphon[0], NULL, &scoresphon[0], MAX_ROOTS); + + // copy over + int oldns = ns; + + int same = 0; + for (i=0; i < MAX_GUESS; i++) { + if (guess[i]) { + if ((ns < oldns + maxngramsugs) && (ns < maxSug) && (!same || (gscore[i] > 1000))) { + int unique = 1; + // leave only excellent suggestions, if exists + if (gscore[i] > 1000) same = 1; else if (gscore[i] < -100) { + same = 1; + // keep the best ngram suggestions, unless in ONLYMAXDIFF mode + if (ns > oldns || (pAMgr && pAMgr->get_onlymaxdiff())) { + free(guess[i]); + if (guessorig[i]) free(guessorig[i]); + continue; + } + } + for (j = 0; j < ns; j++) { + // don't suggest previous suggestions or a previous suggestion with prefixes or affixes + if ((!guessorig[i] && strstr(guess[i], wlst[j])) || + (guessorig[i] && strstr(guessorig[i], wlst[j])) || + // check forbidden words + !checkword(guess[i], strlen(guess[i]), 0, NULL, NULL)) unique = 0; + } + if (unique) { + wlst[ns++] = guess[i]; + if (guessorig[i]) { + free(guess[i]); + wlst[ns-1] = guessorig[i]; + } + } else { + free(guess[i]); + if (guessorig[i]) free(guessorig[i]); + } + } else { + free(guess[i]); + if (guessorig[i]) free(guessorig[i]); + } + } + } + + oldns = ns; + if (ph) for (i=0; i < MAX_ROOTS; i++) { + if (rootsphon[i]) { + if ((ns < oldns + MAXPHONSUGS) && (ns < maxSug)) { + int unique = 1; + for (j = 0; j < ns; j++) { + // don't suggest previous suggestions or a previous suggestion with prefixes or affixes + if (strstr(rootsphon[i], wlst[j]) || + // check forbidden words + !checkword(rootsphon[i], strlen(rootsphon[i]), 0, NULL, NULL)) unique = 0; + } + if (unique) { + wlst[ns++] = mystrdup(rootsphon[i]); + if (!wlst[ns - 1]) return ns - 1; + } + } + } + } + + if (nonbmp) utf8 = 1; + return ns; +} + + +// see if a candidate suggestion is spelled correctly +// needs to check both root words and words with affixes + +// obsolote MySpell-HU modifications: +// return value 2 and 3 marks compounding with hyphen (-) +// `3' marks roots without suffix +int SuggestMgr::checkword(const char * word, int len, int cpdsuggest, int * timer, clock_t * timelimit) +{ + struct hentry * rv=NULL; + struct hentry * rv2=NULL; + int nosuffix = 0; + + // check time limit + if (timer) { + (*timer)--; + if (!(*timer) && timelimit) { + if ((clock() - *timelimit) > TIMELIMIT) return 0; + *timer = MAXPLUSTIMER; + } + } + + if (pAMgr) { + if (cpdsuggest==1) { + if (pAMgr->get_compound()) { + rv = pAMgr->compound_check(word, len, 0, 0, 100, 0, NULL, 0, 1, 0); //EXT + if (rv && (!(rv2 = pAMgr->lookup(word)) || !rv2->astr || + !(TESTAFF(rv2->astr,pAMgr->get_forbiddenword(),rv2->alen) || + TESTAFF(rv2->astr,pAMgr->get_nosuggest(),rv2->alen)))) return 3; // XXX obsolote categorisation + only ICONV needs affix flag check? + } + return 0; + } + + rv = pAMgr->lookup(word); + + if (rv) { + if ((rv->astr) && (TESTAFF(rv->astr,pAMgr->get_forbiddenword(),rv->alen) + || TESTAFF(rv->astr,pAMgr->get_nosuggest(),rv->alen))) return 0; + while (rv) { + if (rv->astr && (TESTAFF(rv->astr,pAMgr->get_needaffix(),rv->alen) || + TESTAFF(rv->astr, ONLYUPCASEFLAG, rv->alen) || + TESTAFF(rv->astr,pAMgr->get_onlyincompound(),rv->alen))) { + rv = rv->next_homonym; + } else break; + } + } else rv = pAMgr->prefix_check(word, len, 0); // only prefix, and prefix + suffix XXX + + if (rv) { + nosuffix=1; + } else { + rv = pAMgr->suffix_check(word, len, 0, NULL, NULL, 0, NULL); // only suffix + } + + if (!rv && pAMgr->have_contclass()) { + rv = pAMgr->suffix_check_twosfx(word, len, 0, NULL, FLAG_NULL); + if (!rv) rv = pAMgr->prefix_check_twosfx(word, len, 1, FLAG_NULL); + } + + // check forbidden words + if ((rv) && (rv->astr) && (TESTAFF(rv->astr,pAMgr->get_forbiddenword(),rv->alen) || + TESTAFF(rv->astr, ONLYUPCASEFLAG, rv->alen) || + TESTAFF(rv->astr,pAMgr->get_nosuggest(),rv->alen) || + TESTAFF(rv->astr,pAMgr->get_onlyincompound(),rv->alen))) return 0; + + if (rv) { // XXX obsolote + if ((pAMgr->get_compoundflag()) && + TESTAFF(rv->astr, pAMgr->get_compoundflag(), rv->alen)) return 2 + nosuffix; + return 1; + } + } + return 0; +} + +int SuggestMgr::check_forbidden(const char * word, int len) +{ + struct hentry * rv = NULL; + + if (pAMgr) { + rv = pAMgr->lookup(word); + if (rv && rv->astr && (TESTAFF(rv->astr,pAMgr->get_needaffix(),rv->alen) || + TESTAFF(rv->astr,pAMgr->get_onlyincompound(),rv->alen))) rv = NULL; + if (!(pAMgr->prefix_check(word,len,1))) + rv = pAMgr->suffix_check(word,len, 0, NULL, NULL, 0, NULL); // prefix+suffix, suffix + // check forbidden words + if ((rv) && (rv->astr) && TESTAFF(rv->astr,pAMgr->get_forbiddenword(),rv->alen)) return 1; + } + return 0; +} + +#ifdef HUNSPELL_EXPERIMENTAL +// suggest possible stems +int SuggestMgr::suggest_pos_stems(char*** slst, const char * w, int nsug) +{ + char ** wlst; + + struct hentry * rv = NULL; + + char w2[MAXSWUTF8L]; + const char * word = w; + + // word reversing wrapper for complex prefixes + if (complexprefixes) { + strcpy(w2, w); + if (utf8) reverseword_utf(w2); else reverseword(w2); + word = w2; + } + + int wl = strlen(word); + + + if (*slst) { + wlst = *slst; + } else { + wlst = (char **) calloc(maxSug, sizeof(char *)); + if (wlst == NULL) return -1; + } + + rv = pAMgr->suffix_check(word, wl, 0, NULL, wlst, maxSug, &nsug); + + // delete dash from end of word + if (nsug > 0) { + for (int j=0; j < nsug; j++) { + if (wlst[j][strlen(wlst[j]) - 1] == '-') wlst[j][strlen(wlst[j]) - 1] = '\0'; + } + } + + *slst = wlst; + return nsug; +} +#endif // END OF HUNSPELL_EXPERIMENTAL CODE + + +char * SuggestMgr::suggest_morph(const char * w) +{ + char result[MAXLNLEN]; + char * r = (char *) result; + char * st; + + struct hentry * rv = NULL; + + *result = '\0'; + + if (! pAMgr) return NULL; + + char w2[MAXSWUTF8L]; + const char * word = w; + + // word reversing wrapper for complex prefixes + if (complexprefixes) { + strcpy(w2, w); + if (utf8) reverseword_utf(w2); else reverseword(w2); + word = w2; + } + + rv = pAMgr->lookup(word); + + while (rv) { + if ((!rv->astr) || !(TESTAFF(rv->astr, pAMgr->get_forbiddenword(), rv->alen) || + TESTAFF(rv->astr, pAMgr->get_needaffix(), rv->alen) || + TESTAFF(rv->astr,pAMgr->get_onlyincompound(),rv->alen))) { + if (!HENTRY_FIND(rv, MORPH_STEM)) { + mystrcat(result, " ", MAXLNLEN); + mystrcat(result, MORPH_STEM, MAXLNLEN); + mystrcat(result, word, MAXLNLEN); + } + if (HENTRY_DATA(rv)) { + mystrcat(result, " ", MAXLNLEN); + mystrcat(result, HENTRY_DATA2(rv), MAXLNLEN); + } + mystrcat(result, "\n", MAXLNLEN); + } + rv = rv->next_homonym; + } + + st = pAMgr->affix_check_morph(word,strlen(word)); + if (st) { + mystrcat(result, st, MAXLNLEN); + free(st); + } + + if (pAMgr->get_compound() && (*result == '\0')) + pAMgr->compound_check_morph(word, strlen(word), + 0, 0, 100, 0,NULL, 0, &r, NULL); + + return (*result) ? mystrdup(line_uniq(result, MSEP_REC)) : NULL; +} + +#ifdef HUNSPELL_EXPERIMENTAL +char * SuggestMgr::suggest_morph_for_spelling_error(const char * word) +{ + char * p = NULL; + char ** wlst = (char **) calloc(maxSug, sizeof(char *)); + if (!**wlst) return NULL; + // we will use only the first suggestion + for (int i = 0; i < maxSug - 1; i++) wlst[i] = ""; + int ns = suggest(&wlst, word, maxSug - 1, NULL); + if (ns == maxSug) { + p = suggest_morph(wlst[maxSug - 1]); + free(wlst[maxSug - 1]); + } + if (wlst) free(wlst); + return p; +} +#endif // END OF HUNSPELL_EXPERIMENTAL CODE + +/* affixation */ +char * SuggestMgr::suggest_hentry_gen(hentry * rv, char * pattern) +{ + char result[MAXLNLEN]; + *result = '\0'; + int sfxcount = get_sfxcount(pattern); + + if (get_sfxcount(HENTRY_DATA(rv)) > sfxcount) return NULL; + + if (HENTRY_DATA(rv)) { + char * aff = pAMgr->morphgen(HENTRY_WORD(rv), rv->blen, rv->astr, rv->alen, + HENTRY_DATA(rv), pattern, 0); + if (aff) { + mystrcat(result, aff, MAXLNLEN); + mystrcat(result, "\n", MAXLNLEN); + free(aff); + } + } + + // check all allomorphs + char allomorph[MAXLNLEN]; + char * p = NULL; + if (HENTRY_DATA(rv)) p = (char *) strstr(HENTRY_DATA2(rv), MORPH_ALLOMORPH); + while (p) { + struct hentry * rv2 = NULL; + p += MORPH_TAG_LEN; + int plen = fieldlen(p); + strncpy(allomorph, p, plen); + allomorph[plen] = '\0'; + rv2 = pAMgr->lookup(allomorph); + while (rv2) { +// if (HENTRY_DATA(rv2) && get_sfxcount(HENTRY_DATA(rv2)) <= sfxcount) { + if (HENTRY_DATA(rv2)) { + char * st = (char *) strstr(HENTRY_DATA2(rv2), MORPH_STEM); + if (st && (strncmp(st + MORPH_TAG_LEN, + HENTRY_WORD(rv), fieldlen(st + MORPH_TAG_LEN)) == 0)) { + char * aff = pAMgr->morphgen(HENTRY_WORD(rv2), rv2->blen, rv2->astr, rv2->alen, + HENTRY_DATA(rv2), pattern, 0); + if (aff) { + mystrcat(result, aff, MAXLNLEN); + mystrcat(result, "\n", MAXLNLEN); + free(aff); + } + } + } + rv2 = rv2->next_homonym; + } + p = strstr(p + plen, MORPH_ALLOMORPH); + } + + return (*result) ? mystrdup(result) : NULL; +} + +char * SuggestMgr::suggest_gen(char ** desc, int n, char * pattern) { + char result[MAXLNLEN]; + char result2[MAXLNLEN]; + char newpattern[MAXLNLEN]; + *newpattern = '\0'; + if (n == 0) return 0; + *result2 = '\0'; + struct hentry * rv = NULL; + if (!pAMgr) return NULL; + +// search affixed forms with and without derivational suffixes + while(1) { + + for (int k = 0; k < n; k++) { + *result = '\0'; + // add compound word parts (except the last one) + char * s = (char *) desc[k]; + char * part = strstr(s, MORPH_PART); + if (part) { + char * nextpart = strstr(part + 1, MORPH_PART); + while (nextpart) { + copy_field(result + strlen(result), part, MORPH_PART); + part = nextpart; + nextpart = strstr(part + 1, MORPH_PART); + } + s = part; + } + + char **pl; + char tok[MAXLNLEN]; + strcpy(tok, s); + char * alt = strstr(tok, " | "); + while (alt) { + alt[1] = MSEP_ALT; + alt = strstr(alt, " | "); + } + int pln = line_tok(tok, &pl, MSEP_ALT); + for (int i = 0; i < pln; i++) { + // remove inflectional and terminal suffixes + char * is = strstr(pl[i], MORPH_INFL_SFX); + if (is) *is = '\0'; + char * ts = strstr(pl[i], MORPH_TERM_SFX); + while (ts) { + *ts = '_'; + ts = strstr(pl[i], MORPH_TERM_SFX); + } + char * st = strstr(s, MORPH_STEM); + if (st) { + copy_field(tok, st, MORPH_STEM); + rv = pAMgr->lookup(tok); + while (rv) { + char newpat[MAXLNLEN]; + strcpy(newpat, pl[i]); + strcat(newpat, pattern); + char * sg = suggest_hentry_gen(rv, newpat); + if (!sg) sg = suggest_hentry_gen(rv, pattern); + if (sg) { + char ** gen; + int genl = line_tok(sg, &gen, MSEP_REC); + free(sg); + sg = NULL; + for (int j = 0; j < genl; j++) { + if (strstr(pl[i], MORPH_SURF_PFX)) { + int r2l = strlen(result2); + result2[r2l] = MSEP_REC; + strcpy(result2 + r2l + 1, result); + copy_field(result2 + strlen(result2), pl[i], MORPH_SURF_PFX); + mystrcat(result2, gen[j], MAXLNLEN); + } else { + sprintf(result2 + strlen(result2), "%c%s%s", + MSEP_REC, result, gen[j]); + } + } + freelist(&gen, genl); + } + rv = rv->next_homonym; + } + } + } + freelist(&pl, pln); + } + + if (*result2 || !strstr(pattern, MORPH_DERI_SFX)) break; + strcpy(newpattern, pattern); + pattern = newpattern; + char * ds = strstr(pattern, MORPH_DERI_SFX); + while (ds) { + strncpy(ds, MORPH_TERM_SFX, MORPH_TAG_LEN); + ds = strstr(pattern, MORPH_DERI_SFX); + } + } + return (*result2 ? mystrdup(result2) : NULL); +} + + +// generate an n-gram score comparing s1 and s2 +int SuggestMgr::ngram(int n, char * s1, const char * s2, int opt) +{ + int nscore = 0; + int ns; + int l1; + int l2; + int test = 0; + + if (utf8) { + w_char su1[MAXSWL]; + w_char su2[MAXSWL]; + l1 = u8_u16(su1, MAXSWL, s1); + l2 = u8_u16(su2, MAXSWL, s2); + if ((l2 <= 0) || (l1 == -1)) return 0; + // lowering dictionary word + if (opt & NGRAM_LOWERING) mkallsmall_utf(su2, l2, langnum); + for (int j = 1; j <= n; j++) { + ns = 0; + for (int i = 0; i <= (l1-j); i++) { + int k = 0; + for (int l = 0; l <= (l2-j); l++) { + for (k = 0; k < j; k++) { + w_char * c1 = su1 + i + k; + w_char * c2 = su2 + l + k; + if ((c1->l != c2->l) || (c1->h != c2->h)) break; + } + if (k == j) { + ns++; + break; + } + } + if (k != j && opt & NGRAM_WEIGHTED) { + ns--; + test++; + if (i == 0 || i == l1-j) ns--; // side weight + } + } + nscore = nscore + ns; + if (ns < 2 && !(opt & NGRAM_WEIGHTED)) break; + } + } else { + l2 = strlen(s2); + if (l2 == 0) return 0; + l1 = strlen(s1); + char *t = mystrdup(s2); + if (opt & NGRAM_LOWERING) mkallsmall(t, csconv); + for (int j = 1; j <= n; j++) { + ns = 0; + for (int i = 0; i <= (l1-j); i++) { + char c = *(s1 + i + j); + *(s1 + i + j) = '\0'; + if (strstr(t,(s1+i))) { + ns++; + } else if (opt & NGRAM_WEIGHTED) { + ns--; +test++; + if (i == 0 || i == l1-j) ns--; // side weight + } + *(s1 + i + j ) = c; + } + nscore = nscore + ns; + if (ns < 2 && !(opt & NGRAM_WEIGHTED)) break; + } + free(t); + } + + ns = 0; + if (opt & NGRAM_LONGER_WORSE) ns = (l2-l1)-2; + if (opt & NGRAM_ANY_MISMATCH) ns = abs(l2-l1)-2; + ns = (nscore - ((ns > 0) ? ns : 0)); + return ns; +} + +// length of the left common substring of s1 and (decapitalised) s2 +int SuggestMgr::leftcommonsubstring(char * s1, const char * s2) { + if (utf8) { + w_char su1[MAXSWL]; + w_char su2[MAXSWL]; + su1[0].l = su2[0].l = su1[0].h = su2[0].h = 0; + // decapitalize dictionary word + if (complexprefixes) { + int l1 = u8_u16(su1, MAXSWL, s1); + int l2 = u8_u16(su2, MAXSWL, s2); + if (*((short *)su1+l1-1) == *((short *)su2+l2-1)) return 1; + } else { + int i; + u8_u16(su1, 1, s1); + u8_u16(su2, 1, s2); + unsigned short idx = (su2->h << 8) + su2->l; + unsigned short otheridx = (su1->h << 8) + su1->l; + if (otheridx != idx && + (otheridx != unicodetolower(idx, langnum))) return 0; + int l1 = u8_u16(su1, MAXSWL, s1); + int l2 = u8_u16(su2, MAXSWL, s2); + for(i = 1; (i < l1) && (i < l2) && + (su1[i].l == su2[i].l) && (su1[i].h == su2[i].h); i++); + return i; + } + } else { + if (complexprefixes) { + int l1 = strlen(s1); + int l2 = strlen(s2); + if (*(s2+l1-1) == *(s2+l2-1)) return 1; + } else { + char * olds = s1; + // decapitalise dictionary word + if ((*s1 != *s2) && (*s1 != csconv[((unsigned char)*s2)].clower)) return 0; + do { + s1++; s2++; + } while ((*s1 == *s2) && (*s1 != '\0')); + return (int)(s1 - olds); + } + } + return 0; +} + +int SuggestMgr::commoncharacterpositions(char * s1, const char * s2, int * is_swap) { + int num = 0; + int diff = 0; + int diffpos[2]; + *is_swap = 0; + if (utf8) { + w_char su1[MAXSWL]; + w_char su2[MAXSWL]; + int l1 = u8_u16(su1, MAXSWL, s1); + int l2 = u8_u16(su2, MAXSWL, s2); + // decapitalize dictionary word + if (complexprefixes) { + mkallsmall_utf(su2+l2-1, 1, langnum); + } else { + mkallsmall_utf(su2, 1, langnum); + } + for (int i = 0; (i < l1) && (i < l2); i++) { + if (((short *) su1)[i] == ((short *) su2)[i]) { + num++; + } else { + if (diff < 2) diffpos[diff] = i; + diff++; + } + } + if ((diff == 2) && (l1 == l2) && + (((short *) su1)[diffpos[0]] == ((short *) su2)[diffpos[1]]) && + (((short *) su1)[diffpos[1]] == ((short *) su2)[diffpos[0]])) *is_swap = 1; + } else { + int i; + char t[MAXSWUTF8L]; + strcpy(t, s2); + // decapitalize dictionary word + if (complexprefixes) { + int l2 = strlen(t); + *(t+l2-1) = csconv[((unsigned char)*(t+l2-1))].clower; + } else { + mkallsmall(t, csconv); + } + for (i = 0; (*(s1+i) != 0) && (*(t+i) != 0); i++) { + if (*(s1+i) == *(t+i)) { + num++; + } else { + if (diff < 2) diffpos[diff] = i; + diff++; + } + } + if ((diff == 2) && (*(s1+i) == 0) && (*(t+i) == 0) && + (*(s1+diffpos[0]) == *(t+diffpos[1])) && + (*(s1+diffpos[1]) == *(t+diffpos[0]))) *is_swap = 1; + } + return num; +} + +int SuggestMgr::mystrlen(const char * word) { + if (utf8) { + w_char w[MAXSWL]; + return u8_u16(w, MAXSWL, word); + } else return strlen(word); +} + +// sort in decreasing order of score +void SuggestMgr::bubblesort(char** rword, char** rword2, int* rsc, int n ) +{ + int m = 1; + while (m < n) { + int j = m; + while (j > 0) { + if (rsc[j-1] < rsc[j]) { + int sctmp = rsc[j-1]; + char * wdtmp = rword[j-1]; + rsc[j-1] = rsc[j]; + rword[j-1] = rword[j]; + rsc[j] = sctmp; + rword[j] = wdtmp; + if (rword2) { + wdtmp = rword2[j-1]; + rword2[j-1] = rword2[j]; + rword2[j] = wdtmp; + } + j--; + } else break; + } + m++; + } + return; +} + +// longest common subsequence +void SuggestMgr::lcs(const char * s, const char * s2, int * l1, int * l2, char ** result) { + int n, m; + w_char su[MAXSWL]; + w_char su2[MAXSWL]; + char * b; + char * c; + int i; + int j; + if (utf8) { + m = u8_u16(su, MAXSWL, s); + n = u8_u16(su2, MAXSWL, s2); + } else { + m = strlen(s); + n = strlen(s2); + } + c = (char *) malloc((m + 1) * (n + 1)); + b = (char *) malloc((m + 1) * (n + 1)); + if (!c || !b) { + if (c) free(c); + if (b) free(b); + *result = NULL; + return; + } + for (i = 1; i <= m; i++) c[i*(n+1)] = 0; + for (j = 0; j <= n; j++) c[j] = 0; + for (i = 1; i <= m; i++) { + for (j = 1; j <= n; j++) { + if ( ((utf8) && (*((short *) su+i-1) == *((short *)su2+j-1))) + || ((!utf8) && ((*(s+i-1)) == (*(s2+j-1))))) { + c[i*(n+1) + j] = c[(i-1)*(n+1) + j-1]+1; + b[i*(n+1) + j] = LCS_UPLEFT; + } else if (c[(i-1)*(n+1) + j] >= c[i*(n+1) + j-1]) { + c[i*(n+1) + j] = c[(i-1)*(n+1) + j]; + b[i*(n+1) + j] = LCS_UP; + } else { + c[i*(n+1) + j] = c[i*(n+1) + j-1]; + b[i*(n+1) + j] = LCS_LEFT; + } + } + } + *result = b; + free(c); + *l1 = m; + *l2 = n; +} + +int SuggestMgr::lcslen(const char * s, const char* s2) { + int m; + int n; + int i; + int j; + char * result; + int len = 0; + lcs(s, s2, &m, &n, &result); + if (!result) return 0; + i = m; + j = n; + while ((i != 0) && (j != 0)) { + if (result[i*(n+1) + j] == LCS_UPLEFT) { + len++; + i--; + j--; + } else if (result[i*(n+1) + j] == LCS_UP) { + i--; + } else j--; + } + free(result); + return len; +} diff --git a/plugins/SpellChecker/hunspell/suggestmgr.hxx b/plugins/SpellChecker/hunspell/suggestmgr.hxx new file mode 100644 index 0000000000..5f043fdfd2 --- /dev/null +++ b/plugins/SpellChecker/hunspell/suggestmgr.hxx @@ -0,0 +1,111 @@ +#ifndef _SUGGESTMGR_HXX_ +#define _SUGGESTMGR_HXX_ + +#define MAXSWL 100 +#define MAXSWUTF8L (MAXSWL * 4) +#define MAX_ROOTS 100 +#define MAX_WORDS 100 +#define MAX_GUESS 200 +#define MAXNGRAMSUGS 4 +#define MAXPHONSUGS 2 +#define MAXCOMPOUNDSUGS 3 + +// timelimit: max ~1/4 sec (process time on Linux) for a time consuming function +#define TIMELIMIT (CLOCKS_PER_SEC >> 2) +#define MINTIMER 100 +#define MAXPLUSTIMER 100 + +#define NGRAM_LONGER_WORSE (1 << 0) +#define NGRAM_ANY_MISMATCH (1 << 1) +#define NGRAM_LOWERING (1 << 2) +#define NGRAM_WEIGHTED (1 << 3) + +#include "hunvisapi.h" + +#include "atypes.hxx" +#include "affixmgr.hxx" +#include "hashmgr.hxx" +#include "langnum.hxx" +#include + +enum { LCS_UP, LCS_LEFT, LCS_UPLEFT }; + +class LIBHUNSPELL_DLL_EXPORTED SuggestMgr +{ + char * ckey; + int ckeyl; + w_char * ckey_utf; + + char * ctry; + int ctryl; + w_char * ctry_utf; + + AffixMgr* pAMgr; + int maxSug; + struct cs_info * csconv; + int utf8; + int langnum; + int nosplitsugs; + int maxngramsugs; + int maxcpdsugs; + int complexprefixes; + + +public: + SuggestMgr(const char * tryme, int maxn, AffixMgr *aptr); + ~SuggestMgr(); + + int suggest(char*** slst, const char * word, int nsug, int * onlycmpdsug); + int ngsuggest(char ** wlst, char * word, int ns, HashMgr** pHMgr, int md); + int suggest_auto(char*** slst, const char * word, int nsug); + int suggest_stems(char*** slst, const char * word, int nsug); + int suggest_pos_stems(char*** slst, const char * word, int nsug); + + char * suggest_morph(const char * word); + char * suggest_gen(char ** pl, int pln, char * pattern); + char * suggest_morph_for_spelling_error(const char * word); + +private: + int testsug(char** wlst, const char * candidate, int wl, int ns, int cpdsuggest, + int * timer, clock_t * timelimit); + int checkword(const char *, int, int, int *, clock_t *); + int check_forbidden(const char *, int); + + int capchars(char **, const char *, int, int); + int replchars(char**, const char *, int, int); + int doubletwochars(char**, const char *, int, int); + int forgotchar(char **, const char *, int, int); + int swapchar(char **, const char *, int, int); + int longswapchar(char **, const char *, int, int); + int movechar(char **, const char *, int, int); + int extrachar(char **, const char *, int, int); + int badcharkey(char **, const char *, int, int); + int badchar(char **, const char *, int, int); + int twowords(char **, const char *, int, int); + int fixstems(char **, const char *, int); + + int capchars_utf(char **, const w_char *, int wl, int, int); + int doubletwochars_utf(char**, const w_char *, int wl, int, int); + int forgotchar_utf(char**, const w_char *, int wl, int, int); + int extrachar_utf(char**, const w_char *, int wl, int, int); + int badcharkey_utf(char **, const w_char *, int wl, int, int); + int badchar_utf(char **, const w_char *, int wl, int, int); + int swapchar_utf(char **, const w_char *, int wl, int, int); + int longswapchar_utf(char **, const w_char *, int, int, int); + int movechar_utf(char **, const w_char *, int, int, int); + + int mapchars(char**, const char *, int, int); + int map_related(const char *, char *, int, int, char ** wlst, int, int, const mapentry*, int, int *, clock_t *); + int ngram(int n, char * s1, const char * s2, int opt); + int mystrlen(const char * word); + int leftcommonsubstring(char * s1, const char * s2); + int commoncharacterpositions(char * s1, const char * s2, int * is_swap); + void bubblesort( char ** rwd, char ** rwd2, int * rsc, int n); + void lcs(const char * s, const char * s2, int * l1, int * l2, char ** result); + int lcslen(const char * s, const char* s2); + char * suggest_hentry_gen(hentry * rv, char * pattern); + +}; + +#endif + diff --git a/plugins/SpellChecker/hunspell/utf_info.cxx b/plugins/SpellChecker/hunspell/utf_info.cxx new file mode 100644 index 0000000000..4a8e203cfa --- /dev/null +++ b/plugins/SpellChecker/hunspell/utf_info.cxx @@ -0,0 +1,19676 @@ +#include "csutil.hxx" +/* fields: Unicode letter, toupper, tolower */ +static struct unicode_info utf_lst[] = { +{ 0x0041, 0x0041, 0x0061 }, +{ 0x0042, 0x0042, 0x0062 }, +{ 0x0043, 0x0043, 0x0063 }, +{ 0x0044, 0x0044, 0x0064 }, +{ 0x0045, 0x0045, 0x0065 }, +{ 0x0046, 0x0046, 0x0066 }, +{ 0x0047, 0x0047, 0x0067 }, +{ 0x0048, 0x0048, 0x0068 }, +{ 0x0049, 0x0049, 0x0069 }, +{ 0x004A, 0x004A, 0x006A }, +{ 0x004B, 0x004B, 0x006B }, +{ 0x004C, 0x004C, 0x006C }, +{ 0x004D, 0x004D, 0x006D }, +{ 0x004E, 0x004E, 0x006E }, +{ 0x004F, 0x004F, 0x006F }, +{ 0x0050, 0x0050, 0x0070 }, +{ 0x0051, 0x0051, 0x0071 }, +{ 0x0052, 0x0052, 0x0072 }, +{ 0x0053, 0x0053, 0x0073 }, +{ 0x0054, 0x0054, 0x0074 }, +{ 0x0055, 0x0055, 0x0075 }, +{ 0x0056, 0x0056, 0x0076 }, +{ 0x0057, 0x0057, 0x0077 }, +{ 0x0058, 0x0058, 0x0078 }, +{ 0x0059, 0x0059, 0x0079 }, +{ 0x005A, 0x005A, 0x007A }, +{ 0x0061, 0x0041, 0x0061 }, +{ 0x0062, 0x0042, 0x0062 }, +{ 0x0063, 0x0043, 0x0063 }, +{ 0x0064, 0x0044, 0x0064 }, +{ 0x0065, 0x0045, 0x0065 }, +{ 0x0066, 0x0046, 0x0066 }, +{ 0x0067, 0x0047, 0x0067 }, +{ 0x0068, 0x0048, 0x0068 }, +{ 0x0069, 0x0049, 0x0069 }, +{ 0x006A, 0x004A, 0x006A }, +{ 0x006B, 0x004B, 0x006B }, +{ 0x006C, 0x004C, 0x006C }, +{ 0x006D, 0x004D, 0x006D }, +{ 0x006E, 0x004E, 0x006E }, +{ 0x006F, 0x004F, 0x006F }, +{ 0x0070, 0x0050, 0x0070 }, +{ 0x0071, 0x0051, 0x0071 }, +{ 0x0072, 0x0052, 0x0072 }, +{ 0x0073, 0x0053, 0x0073 }, +{ 0x0074, 0x0054, 0x0074 }, +{ 0x0075, 0x0055, 0x0075 }, +{ 0x0076, 0x0056, 0x0076 }, +{ 0x0077, 0x0057, 0x0077 }, +{ 0x0078, 0x0058, 0x0078 }, +{ 0x0079, 0x0059, 0x0079 }, +{ 0x007A, 0x005A, 0x007A }, +{ 0x00AA, 0x00AA, 0x00AA }, +{ 0x00B5, 0x039C, 0x00B5 }, +{ 0x00BA, 0x00BA, 0x00BA }, +{ 0x00C0, 0x00C0, 0x00E0 }, +{ 0x00C1, 0x00C1, 0x00E1 }, +{ 0x00C2, 0x00C2, 0x00E2 }, +{ 0x00C3, 0x00C3, 0x00E3 }, +{ 0x00C4, 0x00C4, 0x00E4 }, +{ 0x00C5, 0x00C5, 0x00E5 }, +{ 0x00C6, 0x00C6, 0x00E6 }, +{ 0x00C7, 0x00C7, 0x00E7 }, +{ 0x00C8, 0x00C8, 0x00E8 }, +{ 0x00C9, 0x00C9, 0x00E9 }, +{ 0x00CA, 0x00CA, 0x00EA }, +{ 0x00CB, 0x00CB, 0x00EB }, +{ 0x00CC, 0x00CC, 0x00EC }, +{ 0x00CD, 0x00CD, 0x00ED }, +{ 0x00CE, 0x00CE, 0x00EE }, +{ 0x00CF, 0x00CF, 0x00EF }, +{ 0x00D0, 0x00D0, 0x00F0 }, +{ 0x00D1, 0x00D1, 0x00F1 }, +{ 0x00D2, 0x00D2, 0x00F2 }, +{ 0x00D3, 0x00D3, 0x00F3 }, +{ 0x00D4, 0x00D4, 0x00F4 }, +{ 0x00D5, 0x00D5, 0x00F5 }, +{ 0x00D6, 0x00D6, 0x00F6 }, +{ 0x00D8, 0x00D8, 0x00F8 }, +{ 0x00D9, 0x00D9, 0x00F9 }, +{ 0x00DA, 0x00DA, 0x00FA }, +{ 0x00DB, 0x00DB, 0x00FB }, +{ 0x00DC, 0x00DC, 0x00FC }, +{ 0x00DD, 0x00DD, 0x00FD }, +{ 0x00DE, 0x00DE, 0x00FE }, +{ 0x00DF, 0x00DF, 0x00DF }, +{ 0x00E0, 0x00C0, 0x00E0 }, +{ 0x00E1, 0x00C1, 0x00E1 }, +{ 0x00E2, 0x00C2, 0x00E2 }, +{ 0x00E3, 0x00C3, 0x00E3 }, +{ 0x00E4, 0x00C4, 0x00E4 }, +{ 0x00E5, 0x00C5, 0x00E5 }, +{ 0x00E6, 0x00C6, 0x00E6 }, +{ 0x00E7, 0x00C7, 0x00E7 }, +{ 0x00E8, 0x00C8, 0x00E8 }, +{ 0x00E9, 0x00C9, 0x00E9 }, +{ 0x00EA, 0x00CA, 0x00EA }, +{ 0x00EB, 0x00CB, 0x00EB }, +{ 0x00EC, 0x00CC, 0x00EC }, +{ 0x00ED, 0x00CD, 0x00ED }, +{ 0x00EE, 0x00CE, 0x00EE }, +{ 0x00EF, 0x00CF, 0x00EF }, +{ 0x00F0, 0x00D0, 0x00F0 }, +{ 0x00F1, 0x00D1, 0x00F1 }, +{ 0x00F2, 0x00D2, 0x00F2 }, +{ 0x00F3, 0x00D3, 0x00F3 }, +{ 0x00F4, 0x00D4, 0x00F4 }, +{ 0x00F5, 0x00D5, 0x00F5 }, +{ 0x00F6, 0x00D6, 0x00F6 }, +{ 0x00F8, 0x00D8, 0x00F8 }, +{ 0x00F9, 0x00D9, 0x00F9 }, +{ 0x00FA, 0x00DA, 0x00FA }, +{ 0x00FB, 0x00DB, 0x00FB }, +{ 0x00FC, 0x00DC, 0x00FC }, +{ 0x00FD, 0x00DD, 0x00FD }, +{ 0x00FE, 0x00DE, 0x00FE }, +{ 0x00FF, 0x0178, 0x00FF }, +{ 0x0100, 0x0100, 0x0101 }, +{ 0x0101, 0x0100, 0x0101 }, +{ 0x0102, 0x0102, 0x0103 }, +{ 0x0103, 0x0102, 0x0103 }, +{ 0x0104, 0x0104, 0x0105 }, +{ 0x0105, 0x0104, 0x0105 }, +{ 0x0106, 0x0106, 0x0107 }, +{ 0x0107, 0x0106, 0x0107 }, +{ 0x0108, 0x0108, 0x0109 }, +{ 0x0109, 0x0108, 0x0109 }, +{ 0x010A, 0x010A, 0x010B }, +{ 0x010B, 0x010A, 0x010B }, +{ 0x010C, 0x010C, 0x010D }, +{ 0x010D, 0x010C, 0x010D }, +{ 0x010E, 0x010E, 0x010F }, +{ 0x010F, 0x010E, 0x010F }, +{ 0x0110, 0x0110, 0x0111 }, +{ 0x0111, 0x0110, 0x0111 }, +{ 0x0112, 0x0112, 0x0113 }, +{ 0x0113, 0x0112, 0x0113 }, +{ 0x0114, 0x0114, 0x0115 }, +{ 0x0115, 0x0114, 0x0115 }, +{ 0x0116, 0x0116, 0x0117 }, +{ 0x0117, 0x0116, 0x0117 }, +{ 0x0118, 0x0118, 0x0119 }, +{ 0x0119, 0x0118, 0x0119 }, +{ 0x011A, 0x011A, 0x011B }, +{ 0x011B, 0x011A, 0x011B }, +{ 0x011C, 0x011C, 0x011D }, +{ 0x011D, 0x011C, 0x011D }, +{ 0x011E, 0x011E, 0x011F }, +{ 0x011F, 0x011E, 0x011F }, +{ 0x0120, 0x0120, 0x0121 }, +{ 0x0121, 0x0120, 0x0121 }, +{ 0x0122, 0x0122, 0x0123 }, +{ 0x0123, 0x0122, 0x0123 }, +{ 0x0124, 0x0124, 0x0125 }, +{ 0x0125, 0x0124, 0x0125 }, +{ 0x0126, 0x0126, 0x0127 }, +{ 0x0127, 0x0126, 0x0127 }, +{ 0x0128, 0x0128, 0x0129 }, +{ 0x0129, 0x0128, 0x0129 }, +{ 0x012A, 0x012A, 0x012B }, +{ 0x012B, 0x012A, 0x012B }, +{ 0x012C, 0x012C, 0x012D }, +{ 0x012D, 0x012C, 0x012D }, +{ 0x012E, 0x012E, 0x012F }, +{ 0x012F, 0x012E, 0x012F }, +{ 0x0130, 0x0130, 0x0069 }, +{ 0x0131, 0x0049, 0x0131 }, +{ 0x0132, 0x0132, 0x0133 }, +{ 0x0133, 0x0132, 0x0133 }, +{ 0x0134, 0x0134, 0x0135 }, +{ 0x0135, 0x0134, 0x0135 }, +{ 0x0136, 0x0136, 0x0137 }, +{ 0x0137, 0x0136, 0x0137 }, +{ 0x0138, 0x0138, 0x0138 }, +{ 0x0139, 0x0139, 0x013A }, +{ 0x013A, 0x0139, 0x013A }, +{ 0x013B, 0x013B, 0x013C }, +{ 0x013C, 0x013B, 0x013C }, +{ 0x013D, 0x013D, 0x013E }, +{ 0x013E, 0x013D, 0x013E }, +{ 0x013F, 0x013F, 0x0140 }, +{ 0x0140, 0x013F, 0x0140 }, +{ 0x0141, 0x0141, 0x0142 }, +{ 0x0142, 0x0141, 0x0142 }, +{ 0x0143, 0x0143, 0x0144 }, +{ 0x0144, 0x0143, 0x0144 }, +{ 0x0145, 0x0145, 0x0146 }, +{ 0x0146, 0x0145, 0x0146 }, +{ 0x0147, 0x0147, 0x0148 }, +{ 0x0148, 0x0147, 0x0148 }, +{ 0x0149, 0x0149, 0x0149 }, +{ 0x014A, 0x014A, 0x014B }, +{ 0x014B, 0x014A, 0x014B }, +{ 0x014C, 0x014C, 0x014D }, +{ 0x014D, 0x014C, 0x014D }, +{ 0x014E, 0x014E, 0x014F }, +{ 0x014F, 0x014E, 0x014F }, +{ 0x0150, 0x0150, 0x0151 }, +{ 0x0151, 0x0150, 0x0151 }, +{ 0x0152, 0x0152, 0x0153 }, +{ 0x0153, 0x0152, 0x0153 }, +{ 0x0154, 0x0154, 0x0155 }, +{ 0x0155, 0x0154, 0x0155 }, +{ 0x0156, 0x0156, 0x0157 }, +{ 0x0157, 0x0156, 0x0157 }, +{ 0x0158, 0x0158, 0x0159 }, +{ 0x0159, 0x0158, 0x0159 }, +{ 0x015A, 0x015A, 0x015B }, +{ 0x015B, 0x015A, 0x015B }, +{ 0x015C, 0x015C, 0x015D }, +{ 0x015D, 0x015C, 0x015D }, +{ 0x015E, 0x015E, 0x015F }, +{ 0x015F, 0x015E, 0x015F }, +{ 0x0160, 0x0160, 0x0161 }, +{ 0x0161, 0x0160, 0x0161 }, +{ 0x0162, 0x0162, 0x0163 }, +{ 0x0163, 0x0162, 0x0163 }, +{ 0x0164, 0x0164, 0x0165 }, +{ 0x0165, 0x0164, 0x0165 }, +{ 0x0166, 0x0166, 0x0167 }, +{ 0x0167, 0x0166, 0x0167 }, +{ 0x0168, 0x0168, 0x0169 }, +{ 0x0169, 0x0168, 0x0169 }, +{ 0x016A, 0x016A, 0x016B }, +{ 0x016B, 0x016A, 0x016B }, +{ 0x016C, 0x016C, 0x016D }, +{ 0x016D, 0x016C, 0x016D }, +{ 0x016E, 0x016E, 0x016F }, +{ 0x016F, 0x016E, 0x016F }, +{ 0x0170, 0x0170, 0x0171 }, +{ 0x0171, 0x0170, 0x0171 }, +{ 0x0172, 0x0172, 0x0173 }, +{ 0x0173, 0x0172, 0x0173 }, +{ 0x0174, 0x0174, 0x0175 }, +{ 0x0175, 0x0174, 0x0175 }, +{ 0x0176, 0x0176, 0x0177 }, +{ 0x0177, 0x0176, 0x0177 }, +{ 0x0178, 0x0178, 0x00FF }, +{ 0x0179, 0x0179, 0x017A }, +{ 0x017A, 0x0179, 0x017A }, +{ 0x017B, 0x017B, 0x017C }, +{ 0x017C, 0x017B, 0x017C }, +{ 0x017D, 0x017D, 0x017E }, +{ 0x017E, 0x017D, 0x017E }, +{ 0x017F, 0x0053, 0x017F }, +{ 0x0180, 0x0180, 0x0180 }, +{ 0x0181, 0x0181, 0x0253 }, +{ 0x0182, 0x0182, 0x0183 }, +{ 0x0183, 0x0182, 0x0183 }, +{ 0x0184, 0x0184, 0x0185 }, +{ 0x0185, 0x0184, 0x0185 }, +{ 0x0186, 0x0186, 0x0254 }, +{ 0x0187, 0x0187, 0x0188 }, +{ 0x0188, 0x0187, 0x0188 }, +{ 0x0189, 0x0189, 0x0256 }, +{ 0x018A, 0x018A, 0x0257 }, +{ 0x018B, 0x018B, 0x018C }, +{ 0x018C, 0x018B, 0x018C }, +{ 0x018D, 0x018D, 0x018D }, +{ 0x018E, 0x018E, 0x01DD }, +{ 0x018F, 0x018F, 0x0259 }, +{ 0x0190, 0x0190, 0x025B }, +{ 0x0191, 0x0191, 0x0192 }, +{ 0x0192, 0x0191, 0x0192 }, +{ 0x0193, 0x0193, 0x0260 }, +{ 0x0194, 0x0194, 0x0263 }, +{ 0x0195, 0x01F6, 0x0195 }, +{ 0x0196, 0x0196, 0x0269 }, +{ 0x0197, 0x0197, 0x0268 }, +{ 0x0198, 0x0198, 0x0199 }, +{ 0x0199, 0x0198, 0x0199 }, +{ 0x019A, 0x023D, 0x019A }, +{ 0x019B, 0x019B, 0x019B }, +{ 0x019C, 0x019C, 0x026F }, +{ 0x019D, 0x019D, 0x0272 }, +{ 0x019E, 0x0220, 0x019E }, +{ 0x019F, 0x019F, 0x0275 }, +{ 0x01A0, 0x01A0, 0x01A1 }, +{ 0x01A1, 0x01A0, 0x01A1 }, +{ 0x01A2, 0x01A2, 0x01A3 }, +{ 0x01A3, 0x01A2, 0x01A3 }, +{ 0x01A4, 0x01A4, 0x01A5 }, +{ 0x01A5, 0x01A4, 0x01A5 }, +{ 0x01A6, 0x01A6, 0x0280 }, +{ 0x01A7, 0x01A7, 0x01A8 }, +{ 0x01A8, 0x01A7, 0x01A8 }, +{ 0x01A9, 0x01A9, 0x0283 }, +{ 0x01AA, 0x01AA, 0x01AA }, +{ 0x01AB, 0x01AB, 0x01AB }, +{ 0x01AC, 0x01AC, 0x01AD }, +{ 0x01AD, 0x01AC, 0x01AD }, +{ 0x01AE, 0x01AE, 0x0288 }, +{ 0x01AF, 0x01AF, 0x01B0 }, +{ 0x01B0, 0x01AF, 0x01B0 }, +{ 0x01B1, 0x01B1, 0x028A }, +{ 0x01B2, 0x01B2, 0x028B }, +{ 0x01B3, 0x01B3, 0x01B4 }, +{ 0x01B4, 0x01B3, 0x01B4 }, +{ 0x01B5, 0x01B5, 0x01B6 }, +{ 0x01B6, 0x01B5, 0x01B6 }, +{ 0x01B7, 0x01B7, 0x0292 }, +{ 0x01B8, 0x01B8, 0x01B9 }, +{ 0x01B9, 0x01B8, 0x01B9 }, +{ 0x01BA, 0x01BA, 0x01BA }, +{ 0x01BB, 0x01BB, 0x01BB }, +{ 0x01BC, 0x01BC, 0x01BD }, +{ 0x01BD, 0x01BC, 0x01BD }, +{ 0x01BE, 0x01BE, 0x01BE }, +{ 0x01BF, 0x01F7, 0x01BF }, +{ 0x01C0, 0x01C0, 0x01C0 }, +{ 0x01C1, 0x01C1, 0x01C1 }, +{ 0x01C2, 0x01C2, 0x01C2 }, +{ 0x01C3, 0x01C3, 0x01C3 }, +{ 0x01C4, 0x01C4, 0x01C6 }, +{ 0x01C5, 0x01C4, 0x01C6 }, +{ 0x01C6, 0x01C4, 0x01C6 }, +{ 0x01C7, 0x01C7, 0x01C9 }, +{ 0x01C8, 0x01C7, 0x01C9 }, +{ 0x01C9, 0x01C7, 0x01C9 }, +{ 0x01CA, 0x01CA, 0x01CC }, +{ 0x01CB, 0x01CA, 0x01CC }, +{ 0x01CC, 0x01CA, 0x01CC }, +{ 0x01CD, 0x01CD, 0x01CE }, +{ 0x01CE, 0x01CD, 0x01CE }, +{ 0x01CF, 0x01CF, 0x01D0 }, +{ 0x01D0, 0x01CF, 0x01D0 }, +{ 0x01D1, 0x01D1, 0x01D2 }, +{ 0x01D2, 0x01D1, 0x01D2 }, +{ 0x01D3, 0x01D3, 0x01D4 }, +{ 0x01D4, 0x01D3, 0x01D4 }, +{ 0x01D5, 0x01D5, 0x01D6 }, +{ 0x01D6, 0x01D5, 0x01D6 }, +{ 0x01D7, 0x01D7, 0x01D8 }, +{ 0x01D8, 0x01D7, 0x01D8 }, +{ 0x01D9, 0x01D9, 0x01DA }, +{ 0x01DA, 0x01D9, 0x01DA }, +{ 0x01DB, 0x01DB, 0x01DC }, +{ 0x01DC, 0x01DB, 0x01DC }, +{ 0x01DD, 0x018E, 0x01DD }, +{ 0x01DE, 0x01DE, 0x01DF }, +{ 0x01DF, 0x01DE, 0x01DF }, +{ 0x01E0, 0x01E0, 0x01E1 }, +{ 0x01E1, 0x01E0, 0x01E1 }, +{ 0x01E2, 0x01E2, 0x01E3 }, +{ 0x01E3, 0x01E2, 0x01E3 }, +{ 0x01E4, 0x01E4, 0x01E5 }, +{ 0x01E5, 0x01E4, 0x01E5 }, +{ 0x01E6, 0x01E6, 0x01E7 }, +{ 0x01E7, 0x01E6, 0x01E7 }, +{ 0x01E8, 0x01E8, 0x01E9 }, +{ 0x01E9, 0x01E8, 0x01E9 }, +{ 0x01EA, 0x01EA, 0x01EB }, +{ 0x01EB, 0x01EA, 0x01EB }, +{ 0x01EC, 0x01EC, 0x01ED }, +{ 0x01ED, 0x01EC, 0x01ED }, +{ 0x01EE, 0x01EE, 0x01EF }, +{ 0x01EF, 0x01EE, 0x01EF }, +{ 0x01F0, 0x01F0, 0x01F0 }, +{ 0x01F1, 0x01F1, 0x01F3 }, +{ 0x01F2, 0x01F1, 0x01F3 }, +{ 0x01F3, 0x01F1, 0x01F3 }, +{ 0x01F4, 0x01F4, 0x01F5 }, +{ 0x01F5, 0x01F4, 0x01F5 }, +{ 0x01F6, 0x01F6, 0x0195 }, +{ 0x01F7, 0x01F7, 0x01BF }, +{ 0x01F8, 0x01F8, 0x01F9 }, +{ 0x01F9, 0x01F8, 0x01F9 }, +{ 0x01FA, 0x01FA, 0x01FB }, +{ 0x01FB, 0x01FA, 0x01FB }, +{ 0x01FC, 0x01FC, 0x01FD }, +{ 0x01FD, 0x01FC, 0x01FD }, +{ 0x01FE, 0x01FE, 0x01FF }, +{ 0x01FF, 0x01FE, 0x01FF }, +{ 0x0200, 0x0200, 0x0201 }, +{ 0x0201, 0x0200, 0x0201 }, +{ 0x0202, 0x0202, 0x0203 }, +{ 0x0203, 0x0202, 0x0203 }, +{ 0x0204, 0x0204, 0x0205 }, +{ 0x0205, 0x0204, 0x0205 }, +{ 0x0206, 0x0206, 0x0207 }, +{ 0x0207, 0x0206, 0x0207 }, +{ 0x0208, 0x0208, 0x0209 }, +{ 0x0209, 0x0208, 0x0209 }, +{ 0x020A, 0x020A, 0x020B }, +{ 0x020B, 0x020A, 0x020B }, +{ 0x020C, 0x020C, 0x020D }, +{ 0x020D, 0x020C, 0x020D }, +{ 0x020E, 0x020E, 0x020F }, +{ 0x020F, 0x020E, 0x020F }, +{ 0x0210, 0x0210, 0x0211 }, +{ 0x0211, 0x0210, 0x0211 }, +{ 0x0212, 0x0212, 0x0213 }, +{ 0x0213, 0x0212, 0x0213 }, +{ 0x0214, 0x0214, 0x0215 }, +{ 0x0215, 0x0214, 0x0215 }, +{ 0x0216, 0x0216, 0x0217 }, +{ 0x0217, 0x0216, 0x0217 }, +{ 0x0218, 0x0218, 0x0219 }, +{ 0x0219, 0x0218, 0x0219 }, +{ 0x021A, 0x021A, 0x021B }, +{ 0x021B, 0x021A, 0x021B }, +{ 0x021C, 0x021C, 0x021D }, +{ 0x021D, 0x021C, 0x021D }, +{ 0x021E, 0x021E, 0x021F }, +{ 0x021F, 0x021E, 0x021F }, +{ 0x0220, 0x0220, 0x019E }, +{ 0x0221, 0x0221, 0x0221 }, +{ 0x0222, 0x0222, 0x0223 }, +{ 0x0223, 0x0222, 0x0223 }, +{ 0x0224, 0x0224, 0x0225 }, +{ 0x0225, 0x0224, 0x0225 }, +{ 0x0226, 0x0226, 0x0227 }, +{ 0x0227, 0x0226, 0x0227 }, +{ 0x0228, 0x0228, 0x0229 }, +{ 0x0229, 0x0228, 0x0229 }, +{ 0x022A, 0x022A, 0x022B }, +{ 0x022B, 0x022A, 0x022B }, +{ 0x022C, 0x022C, 0x022D }, +{ 0x022D, 0x022C, 0x022D }, +{ 0x022E, 0x022E, 0x022F }, +{ 0x022F, 0x022E, 0x022F }, +{ 0x0230, 0x0230, 0x0231 }, +{ 0x0231, 0x0230, 0x0231 }, +{ 0x0232, 0x0232, 0x0233 }, +{ 0x0233, 0x0232, 0x0233 }, +{ 0x0234, 0x0234, 0x0234 }, +{ 0x0235, 0x0235, 0x0235 }, +{ 0x0236, 0x0236, 0x0236 }, +{ 0x0237, 0x0237, 0x0237 }, +{ 0x0238, 0x0238, 0x0238 }, +{ 0x0239, 0x0239, 0x0239 }, +{ 0x023A, 0x023A, 0x023A }, +{ 0x023B, 0x023B, 0x023C }, +{ 0x023C, 0x023B, 0x023C }, +{ 0x023D, 0x023D, 0x019A }, +{ 0x023E, 0x023E, 0x023E }, +{ 0x023F, 0x023F, 0x023F }, +{ 0x0240, 0x0240, 0x0240 }, +{ 0x0241, 0x0241, 0x0294 }, +{ 0x0250, 0x0250, 0x0250 }, +{ 0x0251, 0x0251, 0x0251 }, +{ 0x0252, 0x0252, 0x0252 }, +{ 0x0253, 0x0181, 0x0253 }, +{ 0x0254, 0x0186, 0x0254 }, +{ 0x0255, 0x0255, 0x0255 }, +{ 0x0256, 0x0189, 0x0256 }, +{ 0x0257, 0x018A, 0x0257 }, +{ 0x0258, 0x0258, 0x0258 }, +{ 0x0259, 0x018F, 0x0259 }, +{ 0x025A, 0x025A, 0x025A }, +{ 0x025B, 0x0190, 0x025B }, +{ 0x025C, 0x025C, 0x025C }, +{ 0x025D, 0x025D, 0x025D }, +{ 0x025E, 0x025E, 0x025E }, +{ 0x025F, 0x025F, 0x025F }, +{ 0x0260, 0x0193, 0x0260 }, +{ 0x0261, 0x0261, 0x0261 }, +{ 0x0262, 0x0262, 0x0262 }, +{ 0x0263, 0x0194, 0x0263 }, +{ 0x0264, 0x0264, 0x0264 }, +{ 0x0265, 0x0265, 0x0265 }, +{ 0x0266, 0x0266, 0x0266 }, +{ 0x0267, 0x0267, 0x0267 }, +{ 0x0268, 0x0197, 0x0268 }, +{ 0x0269, 0x0196, 0x0269 }, +{ 0x026A, 0x026A, 0x026A }, +{ 0x026B, 0x026B, 0x026B }, +{ 0x026C, 0x026C, 0x026C }, +{ 0x026D, 0x026D, 0x026D }, +{ 0x026E, 0x026E, 0x026E }, +{ 0x026F, 0x019C, 0x026F }, +{ 0x0270, 0x0270, 0x0270 }, +{ 0x0271, 0x0271, 0x0271 }, +{ 0x0272, 0x019D, 0x0272 }, +{ 0x0273, 0x0273, 0x0273 }, +{ 0x0274, 0x0274, 0x0274 }, +{ 0x0275, 0x019F, 0x0275 }, +{ 0x0276, 0x0276, 0x0276 }, +{ 0x0277, 0x0277, 0x0277 }, +{ 0x0278, 0x0278, 0x0278 }, +{ 0x0279, 0x0279, 0x0279 }, +{ 0x027A, 0x027A, 0x027A }, +{ 0x027B, 0x027B, 0x027B }, +{ 0x027C, 0x027C, 0x027C }, +{ 0x027D, 0x027D, 0x027D }, +{ 0x027E, 0x027E, 0x027E }, +{ 0x027F, 0x027F, 0x027F }, +{ 0x0280, 0x01A6, 0x0280 }, +{ 0x0281, 0x0281, 0x0281 }, +{ 0x0282, 0x0282, 0x0282 }, +{ 0x0283, 0x01A9, 0x0283 }, +{ 0x0284, 0x0284, 0x0284 }, +{ 0x0285, 0x0285, 0x0285 }, +{ 0x0286, 0x0286, 0x0286 }, +{ 0x0287, 0x0287, 0x0287 }, +{ 0x0288, 0x01AE, 0x0288 }, +{ 0x0289, 0x0289, 0x0289 }, +{ 0x028A, 0x01B1, 0x028A }, +{ 0x028B, 0x01B2, 0x028B }, +{ 0x028C, 0x028C, 0x028C }, +{ 0x028D, 0x028D, 0x028D }, +{ 0x028E, 0x028E, 0x028E }, +{ 0x028F, 0x028F, 0x028F }, +{ 0x0290, 0x0290, 0x0290 }, +{ 0x0291, 0x0291, 0x0291 }, +{ 0x0292, 0x01B7, 0x0292 }, +{ 0x0293, 0x0293, 0x0293 }, +{ 0x0294, 0x0241, 0x0294 }, +{ 0x0295, 0x0295, 0x0295 }, +{ 0x0296, 0x0296, 0x0296 }, +{ 0x0297, 0x0297, 0x0297 }, +{ 0x0298, 0x0298, 0x0298 }, +{ 0x0299, 0x0299, 0x0299 }, +{ 0x029A, 0x029A, 0x029A }, +{ 0x029B, 0x029B, 0x029B }, +{ 0x029C, 0x029C, 0x029C }, +{ 0x029D, 0x029D, 0x029D }, +{ 0x029E, 0x029E, 0x029E }, +{ 0x029F, 0x029F, 0x029F }, +{ 0x02A0, 0x02A0, 0x02A0 }, +{ 0x02A1, 0x02A1, 0x02A1 }, +{ 0x02A2, 0x02A2, 0x02A2 }, +{ 0x02A3, 0x02A3, 0x02A3 }, +{ 0x02A4, 0x02A4, 0x02A4 }, +{ 0x02A5, 0x02A5, 0x02A5 }, +{ 0x02A6, 0x02A6, 0x02A6 }, +{ 0x02A7, 0x02A7, 0x02A7 }, +{ 0x02A8, 0x02A8, 0x02A8 }, +{ 0x02A9, 0x02A9, 0x02A9 }, +{ 0x02AA, 0x02AA, 0x02AA }, +{ 0x02AB, 0x02AB, 0x02AB }, +{ 0x02AC, 0x02AC, 0x02AC }, +{ 0x02AD, 0x02AD, 0x02AD }, +{ 0x02AE, 0x02AE, 0x02AE }, +{ 0x02AF, 0x02AF, 0x02AF }, +{ 0x02B0, 0x02B0, 0x02B0 }, +{ 0x02B1, 0x02B1, 0x02B1 }, +{ 0x02B2, 0x02B2, 0x02B2 }, +{ 0x02B3, 0x02B3, 0x02B3 }, +{ 0x02B4, 0x02B4, 0x02B4 }, +{ 0x02B5, 0x02B5, 0x02B5 }, +{ 0x02B6, 0x02B6, 0x02B6 }, +{ 0x02B7, 0x02B7, 0x02B7 }, +{ 0x02B8, 0x02B8, 0x02B8 }, +{ 0x02B9, 0x02B9, 0x02B9 }, +{ 0x02BA, 0x02BA, 0x02BA }, +{ 0x02BB, 0x02BB, 0x02BB }, +{ 0x02BC, 0x02BC, 0x02BC }, +{ 0x02BD, 0x02BD, 0x02BD }, +{ 0x02BE, 0x02BE, 0x02BE }, +{ 0x02BF, 0x02BF, 0x02BF }, +{ 0x02C0, 0x02C0, 0x02C0 }, +{ 0x02C1, 0x02C1, 0x02C1 }, +{ 0x02C6, 0x02C6, 0x02C6 }, +{ 0x02C7, 0x02C7, 0x02C7 }, +{ 0x02C8, 0x02C8, 0x02C8 }, +{ 0x02C9, 0x02C9, 0x02C9 }, +{ 0x02CA, 0x02CA, 0x02CA }, +{ 0x02CB, 0x02CB, 0x02CB }, +{ 0x02CC, 0x02CC, 0x02CC }, +{ 0x02CD, 0x02CD, 0x02CD }, +{ 0x02CE, 0x02CE, 0x02CE }, +{ 0x02CF, 0x02CF, 0x02CF }, +{ 0x02D0, 0x02D0, 0x02D0 }, +{ 0x02D1, 0x02D1, 0x02D1 }, +{ 0x02E0, 0x02E0, 0x02E0 }, +{ 0x02E1, 0x02E1, 0x02E1 }, +{ 0x02E2, 0x02E2, 0x02E2 }, +{ 0x02E3, 0x02E3, 0x02E3 }, +{ 0x02E4, 0x02E4, 0x02E4 }, +{ 0x02EE, 0x02EE, 0x02EE }, +{ 0x0300, 0x0300, 0x0300 }, +{ 0x0301, 0x0301, 0x0301 }, +{ 0x0302, 0x0302, 0x0302 }, +{ 0x0303, 0x0303, 0x0303 }, +{ 0x0304, 0x0304, 0x0304 }, +{ 0x0305, 0x0305, 0x0305 }, +{ 0x0306, 0x0306, 0x0306 }, +{ 0x0307, 0x0307, 0x0307 }, +{ 0x0308, 0x0308, 0x0308 }, +{ 0x0309, 0x0309, 0x0309 }, +{ 0x030A, 0x030A, 0x030A }, +{ 0x030B, 0x030B, 0x030B }, +{ 0x030C, 0x030C, 0x030C }, +{ 0x030D, 0x030D, 0x030D }, +{ 0x030E, 0x030E, 0x030E }, +{ 0x030F, 0x030F, 0x030F }, +{ 0x0310, 0x0310, 0x0310 }, +{ 0x0311, 0x0311, 0x0311 }, +{ 0x0312, 0x0312, 0x0312 }, +{ 0x0313, 0x0313, 0x0313 }, +{ 0x0314, 0x0314, 0x0314 }, +{ 0x0315, 0x0315, 0x0315 }, +{ 0x0316, 0x0316, 0x0316 }, +{ 0x0317, 0x0317, 0x0317 }, +{ 0x0318, 0x0318, 0x0318 }, +{ 0x0319, 0x0319, 0x0319 }, +{ 0x031A, 0x031A, 0x031A }, +{ 0x031B, 0x031B, 0x031B }, +{ 0x031C, 0x031C, 0x031C }, +{ 0x031D, 0x031D, 0x031D }, +{ 0x031E, 0x031E, 0x031E }, +{ 0x031F, 0x031F, 0x031F }, +{ 0x0320, 0x0320, 0x0320 }, +{ 0x0321, 0x0321, 0x0321 }, +{ 0x0322, 0x0322, 0x0322 }, +{ 0x0323, 0x0323, 0x0323 }, +{ 0x0324, 0x0324, 0x0324 }, +{ 0x0325, 0x0325, 0x0325 }, +{ 0x0326, 0x0326, 0x0326 }, +{ 0x0327, 0x0327, 0x0327 }, +{ 0x0328, 0x0328, 0x0328 }, +{ 0x0329, 0x0329, 0x0329 }, +{ 0x032A, 0x032A, 0x032A }, +{ 0x032B, 0x032B, 0x032B }, +{ 0x032C, 0x032C, 0x032C }, +{ 0x032D, 0x032D, 0x032D }, +{ 0x032E, 0x032E, 0x032E }, +{ 0x032F, 0x032F, 0x032F }, +{ 0x0330, 0x0330, 0x0330 }, +{ 0x0331, 0x0331, 0x0331 }, +{ 0x0332, 0x0332, 0x0332 }, +{ 0x0333, 0x0333, 0x0333 }, +{ 0x0334, 0x0334, 0x0334 }, +{ 0x0335, 0x0335, 0x0335 }, +{ 0x0336, 0x0336, 0x0336 }, +{ 0x0337, 0x0337, 0x0337 }, +{ 0x0338, 0x0338, 0x0338 }, +{ 0x0339, 0x0339, 0x0339 }, +{ 0x033A, 0x033A, 0x033A }, +{ 0x033B, 0x033B, 0x033B }, +{ 0x033C, 0x033C, 0x033C }, +{ 0x033D, 0x033D, 0x033D }, +{ 0x033E, 0x033E, 0x033E }, +{ 0x033F, 0x033F, 0x033F }, +{ 0x0340, 0x0340, 0x0340 }, +{ 0x0341, 0x0341, 0x0341 }, +{ 0x0342, 0x0342, 0x0342 }, +{ 0x0343, 0x0343, 0x0343 }, +{ 0x0344, 0x0344, 0x0344 }, +{ 0x0345, 0x0399, 0x0345 }, +{ 0x0346, 0x0346, 0x0346 }, +{ 0x0347, 0x0347, 0x0347 }, +{ 0x0348, 0x0348, 0x0348 }, +{ 0x0349, 0x0349, 0x0349 }, +{ 0x034A, 0x034A, 0x034A }, +{ 0x034B, 0x034B, 0x034B }, +{ 0x034C, 0x034C, 0x034C }, +{ 0x034D, 0x034D, 0x034D }, +{ 0x034E, 0x034E, 0x034E }, +{ 0x034F, 0x034F, 0x034F }, +{ 0x0350, 0x0350, 0x0350 }, +{ 0x0351, 0x0351, 0x0351 }, +{ 0x0352, 0x0352, 0x0352 }, +{ 0x0353, 0x0353, 0x0353 }, +{ 0x0354, 0x0354, 0x0354 }, +{ 0x0355, 0x0355, 0x0355 }, +{ 0x0356, 0x0356, 0x0356 }, +{ 0x0357, 0x0357, 0x0357 }, +{ 0x0358, 0x0358, 0x0358 }, +{ 0x0359, 0x0359, 0x0359 }, +{ 0x035A, 0x035A, 0x035A }, +{ 0x035B, 0x035B, 0x035B }, +{ 0x035C, 0x035C, 0x035C }, +{ 0x035D, 0x035D, 0x035D }, +{ 0x035E, 0x035E, 0x035E }, +{ 0x035F, 0x035F, 0x035F }, +{ 0x0360, 0x0360, 0x0360 }, +{ 0x0361, 0x0361, 0x0361 }, +{ 0x0362, 0x0362, 0x0362 }, +{ 0x0363, 0x0363, 0x0363 }, +{ 0x0364, 0x0364, 0x0364 }, +{ 0x0365, 0x0365, 0x0365 }, +{ 0x0366, 0x0366, 0x0366 }, +{ 0x0367, 0x0367, 0x0367 }, +{ 0x0368, 0x0368, 0x0368 }, +{ 0x0369, 0x0369, 0x0369 }, +{ 0x036A, 0x036A, 0x036A }, +{ 0x036B, 0x036B, 0x036B }, +{ 0x036C, 0x036C, 0x036C }, +{ 0x036D, 0x036D, 0x036D }, +{ 0x036E, 0x036E, 0x036E }, +{ 0x036F, 0x036F, 0x036F }, +{ 0x037A, 0x037A, 0x037A }, +{ 0x0386, 0x0386, 0x03AC }, +{ 0x0388, 0x0388, 0x03AD }, +{ 0x0389, 0x0389, 0x03AE }, +{ 0x038A, 0x038A, 0x03AF }, +{ 0x038C, 0x038C, 0x03CC }, +{ 0x038E, 0x038E, 0x03CD }, +{ 0x038F, 0x038F, 0x03CE }, +{ 0x0390, 0x0390, 0x0390 }, +{ 0x0391, 0x0391, 0x03B1 }, +{ 0x0392, 0x0392, 0x03B2 }, +{ 0x0393, 0x0393, 0x03B3 }, +{ 0x0394, 0x0394, 0x03B4 }, +{ 0x0395, 0x0395, 0x03B5 }, +{ 0x0396, 0x0396, 0x03B6 }, +{ 0x0397, 0x0397, 0x03B7 }, +{ 0x0398, 0x0398, 0x03B8 }, +{ 0x0399, 0x0399, 0x03B9 }, +{ 0x039A, 0x039A, 0x03BA }, +{ 0x039B, 0x039B, 0x03BB }, +{ 0x039C, 0x039C, 0x03BC }, +{ 0x039D, 0x039D, 0x03BD }, +{ 0x039E, 0x039E, 0x03BE }, +{ 0x039F, 0x039F, 0x03BF }, +{ 0x03A0, 0x03A0, 0x03C0 }, +{ 0x03A1, 0x03A1, 0x03C1 }, +{ 0x03A3, 0x03A3, 0x03C3 }, +{ 0x03A4, 0x03A4, 0x03C4 }, +{ 0x03A5, 0x03A5, 0x03C5 }, +{ 0x03A6, 0x03A6, 0x03C6 }, +{ 0x03A7, 0x03A7, 0x03C7 }, +{ 0x03A8, 0x03A8, 0x03C8 }, +{ 0x03A9, 0x03A9, 0x03C9 }, +{ 0x03AA, 0x03AA, 0x03CA }, +{ 0x03AB, 0x03AB, 0x03CB }, +{ 0x03AC, 0x0386, 0x03AC }, +{ 0x03AD, 0x0388, 0x03AD }, +{ 0x03AE, 0x0389, 0x03AE }, +{ 0x03AF, 0x038A, 0x03AF }, +{ 0x03B0, 0x03B0, 0x03B0 }, +{ 0x03B1, 0x0391, 0x03B1 }, +{ 0x03B2, 0x0392, 0x03B2 }, +{ 0x03B3, 0x0393, 0x03B3 }, +{ 0x03B4, 0x0394, 0x03B4 }, +{ 0x03B5, 0x0395, 0x03B5 }, +{ 0x03B6, 0x0396, 0x03B6 }, +{ 0x03B7, 0x0397, 0x03B7 }, +{ 0x03B8, 0x0398, 0x03B8 }, +{ 0x03B9, 0x0399, 0x03B9 }, +{ 0x03BA, 0x039A, 0x03BA }, +{ 0x03BB, 0x039B, 0x03BB }, +{ 0x03BC, 0x039C, 0x03BC }, +{ 0x03BD, 0x039D, 0x03BD }, +{ 0x03BE, 0x039E, 0x03BE }, +{ 0x03BF, 0x039F, 0x03BF }, +{ 0x03C0, 0x03A0, 0x03C0 }, +{ 0x03C1, 0x03A1, 0x03C1 }, +{ 0x03C2, 0x03A3, 0x03C2 }, +{ 0x03C3, 0x03A3, 0x03C3 }, +{ 0x03C4, 0x03A4, 0x03C4 }, +{ 0x03C5, 0x03A5, 0x03C5 }, +{ 0x03C6, 0x03A6, 0x03C6 }, +{ 0x03C7, 0x03A7, 0x03C7 }, +{ 0x03C8, 0x03A8, 0x03C8 }, +{ 0x03C9, 0x03A9, 0x03C9 }, +{ 0x03CA, 0x03AA, 0x03CA }, +{ 0x03CB, 0x03AB, 0x03CB }, +{ 0x03CC, 0x038C, 0x03CC }, +{ 0x03CD, 0x038E, 0x03CD }, +{ 0x03CE, 0x038F, 0x03CE }, +{ 0x03D0, 0x0392, 0x03D0 }, +{ 0x03D1, 0x0398, 0x03D1 }, +{ 0x03D2, 0x03D2, 0x03D2 }, +{ 0x03D3, 0x03D3, 0x03D3 }, +{ 0x03D4, 0x03D4, 0x03D4 }, +{ 0x03D5, 0x03A6, 0x03D5 }, +{ 0x03D6, 0x03A0, 0x03D6 }, +{ 0x03D7, 0x03D7, 0x03D7 }, +{ 0x03D8, 0x03D8, 0x03D9 }, +{ 0x03D9, 0x03D8, 0x03D9 }, +{ 0x03DA, 0x03DA, 0x03DB }, +{ 0x03DB, 0x03DA, 0x03DB }, +{ 0x03DC, 0x03DC, 0x03DD }, +{ 0x03DD, 0x03DC, 0x03DD }, +{ 0x03DE, 0x03DE, 0x03DF }, +{ 0x03DF, 0x03DE, 0x03DF }, +{ 0x03E0, 0x03E0, 0x03E1 }, +{ 0x03E1, 0x03E0, 0x03E1 }, +{ 0x03E2, 0x03E2, 0x03E3 }, +{ 0x03E3, 0x03E2, 0x03E3 }, +{ 0x03E4, 0x03E4, 0x03E5 }, +{ 0x03E5, 0x03E4, 0x03E5 }, +{ 0x03E6, 0x03E6, 0x03E7 }, +{ 0x03E7, 0x03E6, 0x03E7 }, +{ 0x03E8, 0x03E8, 0x03E9 }, +{ 0x03E9, 0x03E8, 0x03E9 }, +{ 0x03EA, 0x03EA, 0x03EB }, +{ 0x03EB, 0x03EA, 0x03EB }, +{ 0x03EC, 0x03EC, 0x03ED }, +{ 0x03ED, 0x03EC, 0x03ED }, +{ 0x03EE, 0x03EE, 0x03EF }, +{ 0x03EF, 0x03EE, 0x03EF }, +{ 0x03F0, 0x039A, 0x03F0 }, +{ 0x03F1, 0x03A1, 0x03F1 }, +{ 0x03F2, 0x03F9, 0x03F2 }, +{ 0x03F3, 0x03F3, 0x03F3 }, +{ 0x03F4, 0x03F4, 0x03B8 }, +{ 0x03F5, 0x0395, 0x03F5 }, +{ 0x03F7, 0x03F7, 0x03F8 }, +{ 0x03F8, 0x03F7, 0x03F8 }, +{ 0x03F9, 0x03F9, 0x03F2 }, +{ 0x03FA, 0x03FA, 0x03FB }, +{ 0x03FB, 0x03FA, 0x03FB }, +{ 0x03FC, 0x03FC, 0x03FC }, +{ 0x03FD, 0x03FD, 0x03FD }, +{ 0x03FE, 0x03FE, 0x03FE }, +{ 0x03FF, 0x03FF, 0x03FF }, +{ 0x0400, 0x0400, 0x0450 }, +{ 0x0401, 0x0401, 0x0451 }, +{ 0x0402, 0x0402, 0x0452 }, +{ 0x0403, 0x0403, 0x0453 }, +{ 0x0404, 0x0404, 0x0454 }, +{ 0x0405, 0x0405, 0x0455 }, +{ 0x0406, 0x0406, 0x0456 }, +{ 0x0407, 0x0407, 0x0457 }, +{ 0x0408, 0x0408, 0x0458 }, +{ 0x0409, 0x0409, 0x0459 }, +{ 0x040A, 0x040A, 0x045A }, +{ 0x040B, 0x040B, 0x045B }, +{ 0x040C, 0x040C, 0x045C }, +{ 0x040D, 0x040D, 0x045D }, +{ 0x040E, 0x040E, 0x045E }, +{ 0x040F, 0x040F, 0x045F }, +{ 0x0410, 0x0410, 0x0430 }, +{ 0x0411, 0x0411, 0x0431 }, +{ 0x0412, 0x0412, 0x0432 }, +{ 0x0413, 0x0413, 0x0433 }, +{ 0x0414, 0x0414, 0x0434 }, +{ 0x0415, 0x0415, 0x0435 }, +{ 0x0416, 0x0416, 0x0436 }, +{ 0x0417, 0x0417, 0x0437 }, +{ 0x0418, 0x0418, 0x0438 }, +{ 0x0419, 0x0419, 0x0439 }, +{ 0x041A, 0x041A, 0x043A }, +{ 0x041B, 0x041B, 0x043B }, +{ 0x041C, 0x041C, 0x043C }, +{ 0x041D, 0x041D, 0x043D }, +{ 0x041E, 0x041E, 0x043E }, +{ 0x041F, 0x041F, 0x043F }, +{ 0x0420, 0x0420, 0x0440 }, +{ 0x0421, 0x0421, 0x0441 }, +{ 0x0422, 0x0422, 0x0442 }, +{ 0x0423, 0x0423, 0x0443 }, +{ 0x0424, 0x0424, 0x0444 }, +{ 0x0425, 0x0425, 0x0445 }, +{ 0x0426, 0x0426, 0x0446 }, +{ 0x0427, 0x0427, 0x0447 }, +{ 0x0428, 0x0428, 0x0448 }, +{ 0x0429, 0x0429, 0x0449 }, +{ 0x042A, 0x042A, 0x044A }, +{ 0x042B, 0x042B, 0x044B }, +{ 0x042C, 0x042C, 0x044C }, +{ 0x042D, 0x042D, 0x044D }, +{ 0x042E, 0x042E, 0x044E }, +{ 0x042F, 0x042F, 0x044F }, +{ 0x0430, 0x0410, 0x0430 }, +{ 0x0431, 0x0411, 0x0431 }, +{ 0x0432, 0x0412, 0x0432 }, +{ 0x0433, 0x0413, 0x0433 }, +{ 0x0434, 0x0414, 0x0434 }, +{ 0x0435, 0x0415, 0x0435 }, +{ 0x0436, 0x0416, 0x0436 }, +{ 0x0437, 0x0417, 0x0437 }, +{ 0x0438, 0x0418, 0x0438 }, +{ 0x0439, 0x0419, 0x0439 }, +{ 0x043A, 0x041A, 0x043A }, +{ 0x043B, 0x041B, 0x043B }, +{ 0x043C, 0x041C, 0x043C }, +{ 0x043D, 0x041D, 0x043D }, +{ 0x043E, 0x041E, 0x043E }, +{ 0x043F, 0x041F, 0x043F }, +{ 0x0440, 0x0420, 0x0440 }, +{ 0x0441, 0x0421, 0x0441 }, +{ 0x0442, 0x0422, 0x0442 }, +{ 0x0443, 0x0423, 0x0443 }, +{ 0x0444, 0x0424, 0x0444 }, +{ 0x0445, 0x0425, 0x0445 }, +{ 0x0446, 0x0426, 0x0446 }, +{ 0x0447, 0x0427, 0x0447 }, +{ 0x0448, 0x0428, 0x0448 }, +{ 0x0449, 0x0429, 0x0449 }, +{ 0x044A, 0x042A, 0x044A }, +{ 0x044B, 0x042B, 0x044B }, +{ 0x044C, 0x042C, 0x044C }, +{ 0x044D, 0x042D, 0x044D }, +{ 0x044E, 0x042E, 0x044E }, +{ 0x044F, 0x042F, 0x044F }, +{ 0x0450, 0x0400, 0x0450 }, +{ 0x0451, 0x0401, 0x0451 }, +{ 0x0452, 0x0402, 0x0452 }, +{ 0x0453, 0x0403, 0x0453 }, +{ 0x0454, 0x0404, 0x0454 }, +{ 0x0455, 0x0405, 0x0455 }, +{ 0x0456, 0x0406, 0x0456 }, +{ 0x0457, 0x0407, 0x0457 }, +{ 0x0458, 0x0408, 0x0458 }, +{ 0x0459, 0x0409, 0x0459 }, +{ 0x045A, 0x040A, 0x045A }, +{ 0x045B, 0x040B, 0x045B }, +{ 0x045C, 0x040C, 0x045C }, +{ 0x045D, 0x040D, 0x045D }, +{ 0x045E, 0x040E, 0x045E }, +{ 0x045F, 0x040F, 0x045F }, +{ 0x0460, 0x0460, 0x0461 }, +{ 0x0461, 0x0460, 0x0461 }, +{ 0x0462, 0x0462, 0x0463 }, +{ 0x0463, 0x0462, 0x0463 }, +{ 0x0464, 0x0464, 0x0465 }, +{ 0x0465, 0x0464, 0x0465 }, +{ 0x0466, 0x0466, 0x0467 }, +{ 0x0467, 0x0466, 0x0467 }, +{ 0x0468, 0x0468, 0x0469 }, +{ 0x0469, 0x0468, 0x0469 }, +{ 0x046A, 0x046A, 0x046B }, +{ 0x046B, 0x046A, 0x046B }, +{ 0x046C, 0x046C, 0x046D }, +{ 0x046D, 0x046C, 0x046D }, +{ 0x046E, 0x046E, 0x046F }, +{ 0x046F, 0x046E, 0x046F }, +{ 0x0470, 0x0470, 0x0471 }, +{ 0x0471, 0x0470, 0x0471 }, +{ 0x0472, 0x0472, 0x0473 }, +{ 0x0473, 0x0472, 0x0473 }, +{ 0x0474, 0x0474, 0x0475 }, +{ 0x0475, 0x0474, 0x0475 }, +{ 0x0476, 0x0476, 0x0477 }, +{ 0x0477, 0x0476, 0x0477 }, +{ 0x0478, 0x0478, 0x0479 }, +{ 0x0479, 0x0478, 0x0479 }, +{ 0x047A, 0x047A, 0x047B }, +{ 0x047B, 0x047A, 0x047B }, +{ 0x047C, 0x047C, 0x047D }, +{ 0x047D, 0x047C, 0x047D }, +{ 0x047E, 0x047E, 0x047F }, +{ 0x047F, 0x047E, 0x047F }, +{ 0x0480, 0x0480, 0x0481 }, +{ 0x0481, 0x0480, 0x0481 }, +{ 0x0483, 0x0483, 0x0483 }, +{ 0x0484, 0x0484, 0x0484 }, +{ 0x0485, 0x0485, 0x0485 }, +{ 0x0486, 0x0486, 0x0486 }, +{ 0x048A, 0x048A, 0x048B }, +{ 0x048B, 0x048A, 0x048B }, +{ 0x048C, 0x048C, 0x048D }, +{ 0x048D, 0x048C, 0x048D }, +{ 0x048E, 0x048E, 0x048F }, +{ 0x048F, 0x048E, 0x048F }, +{ 0x0490, 0x0490, 0x0491 }, +{ 0x0491, 0x0490, 0x0491 }, +{ 0x0492, 0x0492, 0x0493 }, +{ 0x0493, 0x0492, 0x0493 }, +{ 0x0494, 0x0494, 0x0495 }, +{ 0x0495, 0x0494, 0x0495 }, +{ 0x0496, 0x0496, 0x0497 }, +{ 0x0497, 0x0496, 0x0497 }, +{ 0x0498, 0x0498, 0x0499 }, +{ 0x0499, 0x0498, 0x0499 }, +{ 0x049A, 0x049A, 0x049B }, +{ 0x049B, 0x049A, 0x049B }, +{ 0x049C, 0x049C, 0x049D }, +{ 0x049D, 0x049C, 0x049D }, +{ 0x049E, 0x049E, 0x049F }, +{ 0x049F, 0x049E, 0x049F }, +{ 0x04A0, 0x04A0, 0x04A1 }, +{ 0x04A1, 0x04A0, 0x04A1 }, +{ 0x04A2, 0x04A2, 0x04A3 }, +{ 0x04A3, 0x04A2, 0x04A3 }, +{ 0x04A4, 0x04A4, 0x04A5 }, +{ 0x04A5, 0x04A4, 0x04A5 }, +{ 0x04A6, 0x04A6, 0x04A7 }, +{ 0x04A7, 0x04A6, 0x04A7 }, +{ 0x04A8, 0x04A8, 0x04A9 }, +{ 0x04A9, 0x04A8, 0x04A9 }, +{ 0x04AA, 0x04AA, 0x04AB }, +{ 0x04AB, 0x04AA, 0x04AB }, +{ 0x04AC, 0x04AC, 0x04AD }, +{ 0x04AD, 0x04AC, 0x04AD }, +{ 0x04AE, 0x04AE, 0x04AF }, +{ 0x04AF, 0x04AE, 0x04AF }, +{ 0x04B0, 0x04B0, 0x04B1 }, +{ 0x04B1, 0x04B0, 0x04B1 }, +{ 0x04B2, 0x04B2, 0x04B3 }, +{ 0x04B3, 0x04B2, 0x04B3 }, +{ 0x04B4, 0x04B4, 0x04B5 }, +{ 0x04B5, 0x04B4, 0x04B5 }, +{ 0x04B6, 0x04B6, 0x04B7 }, +{ 0x04B7, 0x04B6, 0x04B7 }, +{ 0x04B8, 0x04B8, 0x04B9 }, +{ 0x04B9, 0x04B8, 0x04B9 }, +{ 0x04BA, 0x04BA, 0x04BB }, +{ 0x04BB, 0x04BA, 0x04BB }, +{ 0x04BC, 0x04BC, 0x04BD }, +{ 0x04BD, 0x04BC, 0x04BD }, +{ 0x04BE, 0x04BE, 0x04BF }, +{ 0x04BF, 0x04BE, 0x04BF }, +{ 0x04C0, 0x04C0, 0x04C0 }, +{ 0x04C1, 0x04C1, 0x04C2 }, +{ 0x04C2, 0x04C1, 0x04C2 }, +{ 0x04C3, 0x04C3, 0x04C4 }, +{ 0x04C4, 0x04C3, 0x04C4 }, +{ 0x04C5, 0x04C5, 0x04C6 }, +{ 0x04C6, 0x04C5, 0x04C6 }, +{ 0x04C7, 0x04C7, 0x04C8 }, +{ 0x04C8, 0x04C7, 0x04C8 }, +{ 0x04C9, 0x04C9, 0x04CA }, +{ 0x04CA, 0x04C9, 0x04CA }, +{ 0x04CB, 0x04CB, 0x04CC }, +{ 0x04CC, 0x04CB, 0x04CC }, +{ 0x04CD, 0x04CD, 0x04CE }, +{ 0x04CE, 0x04CD, 0x04CE }, +{ 0x04D0, 0x04D0, 0x04D1 }, +{ 0x04D1, 0x04D0, 0x04D1 }, +{ 0x04D2, 0x04D2, 0x04D3 }, +{ 0x04D3, 0x04D2, 0x04D3 }, +{ 0x04D4, 0x04D4, 0x04D5 }, +{ 0x04D5, 0x04D4, 0x04D5 }, +{ 0x04D6, 0x04D6, 0x04D7 }, +{ 0x04D7, 0x04D6, 0x04D7 }, +{ 0x04D8, 0x04D8, 0x04D9 }, +{ 0x04D9, 0x04D8, 0x04D9 }, +{ 0x04DA, 0x04DA, 0x04DB }, +{ 0x04DB, 0x04DA, 0x04DB }, +{ 0x04DC, 0x04DC, 0x04DD }, +{ 0x04DD, 0x04DC, 0x04DD }, +{ 0x04DE, 0x04DE, 0x04DF }, +{ 0x04DF, 0x04DE, 0x04DF }, +{ 0x04E0, 0x04E0, 0x04E1 }, +{ 0x04E1, 0x04E0, 0x04E1 }, +{ 0x04E2, 0x04E2, 0x04E3 }, +{ 0x04E3, 0x04E2, 0x04E3 }, +{ 0x04E4, 0x04E4, 0x04E5 }, +{ 0x04E5, 0x04E4, 0x04E5 }, +{ 0x04E6, 0x04E6, 0x04E7 }, +{ 0x04E7, 0x04E6, 0x04E7 }, +{ 0x04E8, 0x04E8, 0x04E9 }, +{ 0x04E9, 0x04E8, 0x04E9 }, +{ 0x04EA, 0x04EA, 0x04EB }, +{ 0x04EB, 0x04EA, 0x04EB }, +{ 0x04EC, 0x04EC, 0x04ED }, +{ 0x04ED, 0x04EC, 0x04ED }, +{ 0x04EE, 0x04EE, 0x04EF }, +{ 0x04EF, 0x04EE, 0x04EF }, +{ 0x04F0, 0x04F0, 0x04F1 }, +{ 0x04F1, 0x04F0, 0x04F1 }, +{ 0x04F2, 0x04F2, 0x04F3 }, +{ 0x04F3, 0x04F2, 0x04F3 }, +{ 0x04F4, 0x04F4, 0x04F5 }, +{ 0x04F5, 0x04F4, 0x04F5 }, +{ 0x04F6, 0x04F6, 0x04F7 }, +{ 0x04F7, 0x04F6, 0x04F7 }, +{ 0x04F8, 0x04F8, 0x04F9 }, +{ 0x04F9, 0x04F8, 0x04F9 }, +{ 0x0500, 0x0500, 0x0501 }, +{ 0x0501, 0x0500, 0x0501 }, +{ 0x0502, 0x0502, 0x0503 }, +{ 0x0503, 0x0502, 0x0503 }, +{ 0x0504, 0x0504, 0x0505 }, +{ 0x0505, 0x0504, 0x0505 }, +{ 0x0506, 0x0506, 0x0507 }, +{ 0x0507, 0x0506, 0x0507 }, +{ 0x0508, 0x0508, 0x0509 }, +{ 0x0509, 0x0508, 0x0509 }, +{ 0x050A, 0x050A, 0x050B }, +{ 0x050B, 0x050A, 0x050B }, +{ 0x050C, 0x050C, 0x050D }, +{ 0x050D, 0x050C, 0x050D }, +{ 0x050E, 0x050E, 0x050F }, +{ 0x050F, 0x050E, 0x050F }, +{ 0x0531, 0x0531, 0x0561 }, +{ 0x0532, 0x0532, 0x0562 }, +{ 0x0533, 0x0533, 0x0563 }, +{ 0x0534, 0x0534, 0x0564 }, +{ 0x0535, 0x0535, 0x0565 }, +{ 0x0536, 0x0536, 0x0566 }, +{ 0x0537, 0x0537, 0x0567 }, +{ 0x0538, 0x0538, 0x0568 }, +{ 0x0539, 0x0539, 0x0569 }, +{ 0x053A, 0x053A, 0x056A }, +{ 0x053B, 0x053B, 0x056B }, +{ 0x053C, 0x053C, 0x056C }, +{ 0x053D, 0x053D, 0x056D }, +{ 0x053E, 0x053E, 0x056E }, +{ 0x053F, 0x053F, 0x056F }, +{ 0x0540, 0x0540, 0x0570 }, +{ 0x0541, 0x0541, 0x0571 }, +{ 0x0542, 0x0542, 0x0572 }, +{ 0x0543, 0x0543, 0x0573 }, +{ 0x0544, 0x0544, 0x0574 }, +{ 0x0545, 0x0545, 0x0575 }, +{ 0x0546, 0x0546, 0x0576 }, +{ 0x0547, 0x0547, 0x0577 }, +{ 0x0548, 0x0548, 0x0578 }, +{ 0x0549, 0x0549, 0x0579 }, +{ 0x054A, 0x054A, 0x057A }, +{ 0x054B, 0x054B, 0x057B }, +{ 0x054C, 0x054C, 0x057C }, +{ 0x054D, 0x054D, 0x057D }, +{ 0x054E, 0x054E, 0x057E }, +{ 0x054F, 0x054F, 0x057F }, +{ 0x0550, 0x0550, 0x0580 }, +{ 0x0551, 0x0551, 0x0581 }, +{ 0x0552, 0x0552, 0x0582 }, +{ 0x0553, 0x0553, 0x0583 }, +{ 0x0554, 0x0554, 0x0584 }, +{ 0x0555, 0x0555, 0x0585 }, +{ 0x0556, 0x0556, 0x0586 }, +{ 0x0559, 0x0559, 0x0559 }, +{ 0x0561, 0x0531, 0x0561 }, +{ 0x0562, 0x0532, 0x0562 }, +{ 0x0563, 0x0533, 0x0563 }, +{ 0x0564, 0x0534, 0x0564 }, +{ 0x0565, 0x0535, 0x0565 }, +{ 0x0566, 0x0536, 0x0566 }, +{ 0x0567, 0x0537, 0x0567 }, +{ 0x0568, 0x0538, 0x0568 }, +{ 0x0569, 0x0539, 0x0569 }, +{ 0x056A, 0x053A, 0x056A }, +{ 0x056B, 0x053B, 0x056B }, +{ 0x056C, 0x053C, 0x056C }, +{ 0x056D, 0x053D, 0x056D }, +{ 0x056E, 0x053E, 0x056E }, +{ 0x056F, 0x053F, 0x056F }, +{ 0x0570, 0x0540, 0x0570 }, +{ 0x0571, 0x0541, 0x0571 }, +{ 0x0572, 0x0542, 0x0572 }, +{ 0x0573, 0x0543, 0x0573 }, +{ 0x0574, 0x0544, 0x0574 }, +{ 0x0575, 0x0545, 0x0575 }, +{ 0x0576, 0x0546, 0x0576 }, +{ 0x0577, 0x0547, 0x0577 }, +{ 0x0578, 0x0548, 0x0578 }, +{ 0x0579, 0x0549, 0x0579 }, +{ 0x057A, 0x054A, 0x057A }, +{ 0x057B, 0x054B, 0x057B }, +{ 0x057C, 0x054C, 0x057C }, +{ 0x057D, 0x054D, 0x057D }, +{ 0x057E, 0x054E, 0x057E }, +{ 0x057F, 0x054F, 0x057F }, +{ 0x0580, 0x0550, 0x0580 }, +{ 0x0581, 0x0551, 0x0581 }, +{ 0x0582, 0x0552, 0x0582 }, +{ 0x0583, 0x0553, 0x0583 }, +{ 0x0584, 0x0554, 0x0584 }, +{ 0x0585, 0x0555, 0x0585 }, +{ 0x0586, 0x0556, 0x0586 }, +{ 0x0587, 0x0587, 0x0587 }, +{ 0x0591, 0x0591, 0x0591 }, +{ 0x0592, 0x0592, 0x0592 }, +{ 0x0593, 0x0593, 0x0593 }, +{ 0x0594, 0x0594, 0x0594 }, +{ 0x0595, 0x0595, 0x0595 }, +{ 0x0596, 0x0596, 0x0596 }, +{ 0x0597, 0x0597, 0x0597 }, +{ 0x0598, 0x0598, 0x0598 }, +{ 0x0599, 0x0599, 0x0599 }, +{ 0x059A, 0x059A, 0x059A }, +{ 0x059B, 0x059B, 0x059B }, +{ 0x059C, 0x059C, 0x059C }, +{ 0x059D, 0x059D, 0x059D }, +{ 0x059E, 0x059E, 0x059E }, +{ 0x059F, 0x059F, 0x059F }, +{ 0x05A0, 0x05A0, 0x05A0 }, +{ 0x05A1, 0x05A1, 0x05A1 }, +{ 0x05A2, 0x05A2, 0x05A2 }, +{ 0x05A3, 0x05A3, 0x05A3 }, +{ 0x05A4, 0x05A4, 0x05A4 }, +{ 0x05A5, 0x05A5, 0x05A5 }, +{ 0x05A6, 0x05A6, 0x05A6 }, +{ 0x05A7, 0x05A7, 0x05A7 }, +{ 0x05A8, 0x05A8, 0x05A8 }, +{ 0x05A9, 0x05A9, 0x05A9 }, +{ 0x05AA, 0x05AA, 0x05AA }, +{ 0x05AB, 0x05AB, 0x05AB }, +{ 0x05AC, 0x05AC, 0x05AC }, +{ 0x05AD, 0x05AD, 0x05AD }, +{ 0x05AE, 0x05AE, 0x05AE }, +{ 0x05AF, 0x05AF, 0x05AF }, +{ 0x05B0, 0x05B0, 0x05B0 }, +{ 0x05B1, 0x05B1, 0x05B1 }, +{ 0x05B2, 0x05B2, 0x05B2 }, +{ 0x05B3, 0x05B3, 0x05B3 }, +{ 0x05B4, 0x05B4, 0x05B4 }, +{ 0x05B5, 0x05B5, 0x05B5 }, +{ 0x05B6, 0x05B6, 0x05B6 }, +{ 0x05B7, 0x05B7, 0x05B7 }, +{ 0x05B8, 0x05B8, 0x05B8 }, +{ 0x05B9, 0x05B9, 0x05B9 }, +{ 0x05BB, 0x05BB, 0x05BB }, +{ 0x05BC, 0x05BC, 0x05BC }, +{ 0x05BD, 0x05BD, 0x05BD }, +{ 0x05BF, 0x05BF, 0x05BF }, +{ 0x05C1, 0x05C1, 0x05C1 }, +{ 0x05C2, 0x05C2, 0x05C2 }, +{ 0x05C4, 0x05C4, 0x05C4 }, +{ 0x05C5, 0x05C5, 0x05C5 }, +{ 0x05C7, 0x05C7, 0x05C7 }, +{ 0x05D0, 0x05D0, 0x05D0 }, +{ 0x05D1, 0x05D1, 0x05D1 }, +{ 0x05D2, 0x05D2, 0x05D2 }, +{ 0x05D3, 0x05D3, 0x05D3 }, +{ 0x05D4, 0x05D4, 0x05D4 }, +{ 0x05D5, 0x05D5, 0x05D5 }, +{ 0x05D6, 0x05D6, 0x05D6 }, +{ 0x05D7, 0x05D7, 0x05D7 }, +{ 0x05D8, 0x05D8, 0x05D8 }, +{ 0x05D9, 0x05D9, 0x05D9 }, +{ 0x05DA, 0x05DA, 0x05DA }, +{ 0x05DB, 0x05DB, 0x05DB }, +{ 0x05DC, 0x05DC, 0x05DC }, +{ 0x05DD, 0x05DD, 0x05DD }, +{ 0x05DE, 0x05DE, 0x05DE }, +{ 0x05DF, 0x05DF, 0x05DF }, +{ 0x05E0, 0x05E0, 0x05E0 }, +{ 0x05E1, 0x05E1, 0x05E1 }, +{ 0x05E2, 0x05E2, 0x05E2 }, +{ 0x05E3, 0x05E3, 0x05E3 }, +{ 0x05E4, 0x05E4, 0x05E4 }, +{ 0x05E5, 0x05E5, 0x05E5 }, +{ 0x05E6, 0x05E6, 0x05E6 }, +{ 0x05E7, 0x05E7, 0x05E7 }, +{ 0x05E8, 0x05E8, 0x05E8 }, +{ 0x05E9, 0x05E9, 0x05E9 }, +{ 0x05EA, 0x05EA, 0x05EA }, +{ 0x05F0, 0x05F0, 0x05F0 }, +{ 0x05F1, 0x05F1, 0x05F1 }, +{ 0x05F2, 0x05F2, 0x05F2 }, +{ 0x0610, 0x0610, 0x0610 }, +{ 0x0611, 0x0611, 0x0611 }, +{ 0x0612, 0x0612, 0x0612 }, +{ 0x0613, 0x0613, 0x0613 }, +{ 0x0614, 0x0614, 0x0614 }, +{ 0x0615, 0x0615, 0x0615 }, +{ 0x0621, 0x0621, 0x0621 }, +{ 0x0622, 0x0622, 0x0622 }, +{ 0x0623, 0x0623, 0x0623 }, +{ 0x0624, 0x0624, 0x0624 }, +{ 0x0625, 0x0625, 0x0625 }, +{ 0x0626, 0x0626, 0x0626 }, +{ 0x0627, 0x0627, 0x0627 }, +{ 0x0628, 0x0628, 0x0628 }, +{ 0x0629, 0x0629, 0x0629 }, +{ 0x062A, 0x062A, 0x062A }, +{ 0x062B, 0x062B, 0x062B }, +{ 0x062C, 0x062C, 0x062C }, +{ 0x062D, 0x062D, 0x062D }, +{ 0x062E, 0x062E, 0x062E }, +{ 0x062F, 0x062F, 0x062F }, +{ 0x0630, 0x0630, 0x0630 }, +{ 0x0631, 0x0631, 0x0631 }, +{ 0x0632, 0x0632, 0x0632 }, +{ 0x0633, 0x0633, 0x0633 }, +{ 0x0634, 0x0634, 0x0634 }, +{ 0x0635, 0x0635, 0x0635 }, +{ 0x0636, 0x0636, 0x0636 }, +{ 0x0637, 0x0637, 0x0637 }, +{ 0x0638, 0x0638, 0x0638 }, +{ 0x0639, 0x0639, 0x0639 }, +{ 0x063A, 0x063A, 0x063A }, +{ 0x0640, 0x0640, 0x0640 }, +{ 0x0641, 0x0641, 0x0641 }, +{ 0x0642, 0x0642, 0x0642 }, +{ 0x0643, 0x0643, 0x0643 }, +{ 0x0644, 0x0644, 0x0644 }, +{ 0x0645, 0x0645, 0x0645 }, +{ 0x0646, 0x0646, 0x0646 }, +{ 0x0647, 0x0647, 0x0647 }, +{ 0x0648, 0x0648, 0x0648 }, +{ 0x0649, 0x0649, 0x0649 }, +{ 0x064A, 0x064A, 0x064A }, +{ 0x064B, 0x064B, 0x064B }, +{ 0x064C, 0x064C, 0x064C }, +{ 0x064D, 0x064D, 0x064D }, +{ 0x064E, 0x064E, 0x064E }, +{ 0x064F, 0x064F, 0x064F }, +{ 0x0650, 0x0650, 0x0650 }, +{ 0x0651, 0x0651, 0x0651 }, +{ 0x0652, 0x0652, 0x0652 }, +{ 0x0653, 0x0653, 0x0653 }, +{ 0x0654, 0x0654, 0x0654 }, +{ 0x0655, 0x0655, 0x0655 }, +{ 0x0656, 0x0656, 0x0656 }, +{ 0x0657, 0x0657, 0x0657 }, +{ 0x0658, 0x0658, 0x0658 }, +{ 0x0659, 0x0659, 0x0659 }, +{ 0x065A, 0x065A, 0x065A }, +{ 0x065B, 0x065B, 0x065B }, +{ 0x065C, 0x065C, 0x065C }, +{ 0x065D, 0x065D, 0x065D }, +{ 0x065E, 0x065E, 0x065E }, +{ 0x066E, 0x066E, 0x066E }, +{ 0x066F, 0x066F, 0x066F }, +{ 0x0670, 0x0670, 0x0670 }, +{ 0x0671, 0x0671, 0x0671 }, +{ 0x0672, 0x0672, 0x0672 }, +{ 0x0673, 0x0673, 0x0673 }, +{ 0x0674, 0x0674, 0x0674 }, +{ 0x0675, 0x0675, 0x0675 }, +{ 0x0676, 0x0676, 0x0676 }, +{ 0x0677, 0x0677, 0x0677 }, +{ 0x0678, 0x0678, 0x0678 }, +{ 0x0679, 0x0679, 0x0679 }, +{ 0x067A, 0x067A, 0x067A }, +{ 0x067B, 0x067B, 0x067B }, +{ 0x067C, 0x067C, 0x067C }, +{ 0x067D, 0x067D, 0x067D }, +{ 0x067E, 0x067E, 0x067E }, +{ 0x067F, 0x067F, 0x067F }, +{ 0x0680, 0x0680, 0x0680 }, +{ 0x0681, 0x0681, 0x0681 }, +{ 0x0682, 0x0682, 0x0682 }, +{ 0x0683, 0x0683, 0x0683 }, +{ 0x0684, 0x0684, 0x0684 }, +{ 0x0685, 0x0685, 0x0685 }, +{ 0x0686, 0x0686, 0x0686 }, +{ 0x0687, 0x0687, 0x0687 }, +{ 0x0688, 0x0688, 0x0688 }, +{ 0x0689, 0x0689, 0x0689 }, +{ 0x068A, 0x068A, 0x068A }, +{ 0x068B, 0x068B, 0x068B }, +{ 0x068C, 0x068C, 0x068C }, +{ 0x068D, 0x068D, 0x068D }, +{ 0x068E, 0x068E, 0x068E }, +{ 0x068F, 0x068F, 0x068F }, +{ 0x0690, 0x0690, 0x0690 }, +{ 0x0691, 0x0691, 0x0691 }, +{ 0x0692, 0x0692, 0x0692 }, +{ 0x0693, 0x0693, 0x0693 }, +{ 0x0694, 0x0694, 0x0694 }, +{ 0x0695, 0x0695, 0x0695 }, +{ 0x0696, 0x0696, 0x0696 }, +{ 0x0697, 0x0697, 0x0697 }, +{ 0x0698, 0x0698, 0x0698 }, +{ 0x0699, 0x0699, 0x0699 }, +{ 0x069A, 0x069A, 0x069A }, +{ 0x069B, 0x069B, 0x069B }, +{ 0x069C, 0x069C, 0x069C }, +{ 0x069D, 0x069D, 0x069D }, +{ 0x069E, 0x069E, 0x069E }, +{ 0x069F, 0x069F, 0x069F }, +{ 0x06A0, 0x06A0, 0x06A0 }, +{ 0x06A1, 0x06A1, 0x06A1 }, +{ 0x06A2, 0x06A2, 0x06A2 }, +{ 0x06A3, 0x06A3, 0x06A3 }, +{ 0x06A4, 0x06A4, 0x06A4 }, +{ 0x06A5, 0x06A5, 0x06A5 }, +{ 0x06A6, 0x06A6, 0x06A6 }, +{ 0x06A7, 0x06A7, 0x06A7 }, +{ 0x06A8, 0x06A8, 0x06A8 }, +{ 0x06A9, 0x06A9, 0x06A9 }, +{ 0x06AA, 0x06AA, 0x06AA }, +{ 0x06AB, 0x06AB, 0x06AB }, +{ 0x06AC, 0x06AC, 0x06AC }, +{ 0x06AD, 0x06AD, 0x06AD }, +{ 0x06AE, 0x06AE, 0x06AE }, +{ 0x06AF, 0x06AF, 0x06AF }, +{ 0x06B0, 0x06B0, 0x06B0 }, +{ 0x06B1, 0x06B1, 0x06B1 }, +{ 0x06B2, 0x06B2, 0x06B2 }, +{ 0x06B3, 0x06B3, 0x06B3 }, +{ 0x06B4, 0x06B4, 0x06B4 }, +{ 0x06B5, 0x06B5, 0x06B5 }, +{ 0x06B6, 0x06B6, 0x06B6 }, +{ 0x06B7, 0x06B7, 0x06B7 }, +{ 0x06B8, 0x06B8, 0x06B8 }, +{ 0x06B9, 0x06B9, 0x06B9 }, +{ 0x06BA, 0x06BA, 0x06BA }, +{ 0x06BB, 0x06BB, 0x06BB }, +{ 0x06BC, 0x06BC, 0x06BC }, +{ 0x06BD, 0x06BD, 0x06BD }, +{ 0x06BE, 0x06BE, 0x06BE }, +{ 0x06BF, 0x06BF, 0x06BF }, +{ 0x06C0, 0x06C0, 0x06C0 }, +{ 0x06C1, 0x06C1, 0x06C1 }, +{ 0x06C2, 0x06C2, 0x06C2 }, +{ 0x06C3, 0x06C3, 0x06C3 }, +{ 0x06C4, 0x06C4, 0x06C4 }, +{ 0x06C5, 0x06C5, 0x06C5 }, +{ 0x06C6, 0x06C6, 0x06C6 }, +{ 0x06C7, 0x06C7, 0x06C7 }, +{ 0x06C8, 0x06C8, 0x06C8 }, +{ 0x06C9, 0x06C9, 0x06C9 }, +{ 0x06CA, 0x06CA, 0x06CA }, +{ 0x06CB, 0x06CB, 0x06CB }, +{ 0x06CC, 0x06CC, 0x06CC }, +{ 0x06CD, 0x06CD, 0x06CD }, +{ 0x06CE, 0x06CE, 0x06CE }, +{ 0x06CF, 0x06CF, 0x06CF }, +{ 0x06D0, 0x06D0, 0x06D0 }, +{ 0x06D1, 0x06D1, 0x06D1 }, +{ 0x06D2, 0x06D2, 0x06D2 }, +{ 0x06D3, 0x06D3, 0x06D3 }, +{ 0x06D5, 0x06D5, 0x06D5 }, +{ 0x06D6, 0x06D6, 0x06D6 }, +{ 0x06D7, 0x06D7, 0x06D7 }, +{ 0x06D8, 0x06D8, 0x06D8 }, +{ 0x06D9, 0x06D9, 0x06D9 }, +{ 0x06DA, 0x06DA, 0x06DA }, +{ 0x06DB, 0x06DB, 0x06DB }, +{ 0x06DC, 0x06DC, 0x06DC }, +{ 0x06DF, 0x06DF, 0x06DF }, +{ 0x06E0, 0x06E0, 0x06E0 }, +{ 0x06E1, 0x06E1, 0x06E1 }, +{ 0x06E2, 0x06E2, 0x06E2 }, +{ 0x06E3, 0x06E3, 0x06E3 }, +{ 0x06E4, 0x06E4, 0x06E4 }, +{ 0x06E5, 0x06E5, 0x06E5 }, +{ 0x06E6, 0x06E6, 0x06E6 }, +{ 0x06E7, 0x06E7, 0x06E7 }, +{ 0x06E8, 0x06E8, 0x06E8 }, +{ 0x06EA, 0x06EA, 0x06EA }, +{ 0x06EB, 0x06EB, 0x06EB }, +{ 0x06EC, 0x06EC, 0x06EC }, +{ 0x06ED, 0x06ED, 0x06ED }, +{ 0x06EE, 0x06EE, 0x06EE }, +{ 0x06EF, 0x06EF, 0x06EF }, +{ 0x06FA, 0x06FA, 0x06FA }, +{ 0x06FB, 0x06FB, 0x06FB }, +{ 0x06FC, 0x06FC, 0x06FC }, +{ 0x06FF, 0x06FF, 0x06FF }, +{ 0x0710, 0x0710, 0x0710 }, +{ 0x0711, 0x0711, 0x0711 }, +{ 0x0712, 0x0712, 0x0712 }, +{ 0x0713, 0x0713, 0x0713 }, +{ 0x0714, 0x0714, 0x0714 }, +{ 0x0715, 0x0715, 0x0715 }, +{ 0x0716, 0x0716, 0x0716 }, +{ 0x0717, 0x0717, 0x0717 }, +{ 0x0718, 0x0718, 0x0718 }, +{ 0x0719, 0x0719, 0x0719 }, +{ 0x071A, 0x071A, 0x071A }, +{ 0x071B, 0x071B, 0x071B }, +{ 0x071C, 0x071C, 0x071C }, +{ 0x071D, 0x071D, 0x071D }, +{ 0x071E, 0x071E, 0x071E }, +{ 0x071F, 0x071F, 0x071F }, +{ 0x0720, 0x0720, 0x0720 }, +{ 0x0721, 0x0721, 0x0721 }, +{ 0x0722, 0x0722, 0x0722 }, +{ 0x0723, 0x0723, 0x0723 }, +{ 0x0724, 0x0724, 0x0724 }, +{ 0x0725, 0x0725, 0x0725 }, +{ 0x0726, 0x0726, 0x0726 }, +{ 0x0727, 0x0727, 0x0727 }, +{ 0x0728, 0x0728, 0x0728 }, +{ 0x0729, 0x0729, 0x0729 }, +{ 0x072A, 0x072A, 0x072A }, +{ 0x072B, 0x072B, 0x072B }, +{ 0x072C, 0x072C, 0x072C }, +{ 0x072D, 0x072D, 0x072D }, +{ 0x072E, 0x072E, 0x072E }, +{ 0x072F, 0x072F, 0x072F }, +{ 0x0730, 0x0730, 0x0730 }, +{ 0x0731, 0x0731, 0x0731 }, +{ 0x0732, 0x0732, 0x0732 }, +{ 0x0733, 0x0733, 0x0733 }, +{ 0x0734, 0x0734, 0x0734 }, +{ 0x0735, 0x0735, 0x0735 }, +{ 0x0736, 0x0736, 0x0736 }, +{ 0x0737, 0x0737, 0x0737 }, +{ 0x0738, 0x0738, 0x0738 }, +{ 0x0739, 0x0739, 0x0739 }, +{ 0x073A, 0x073A, 0x073A }, +{ 0x073B, 0x073B, 0x073B }, +{ 0x073C, 0x073C, 0x073C }, +{ 0x073D, 0x073D, 0x073D }, +{ 0x073E, 0x073E, 0x073E }, +{ 0x073F, 0x073F, 0x073F }, +{ 0x0740, 0x0740, 0x0740 }, +{ 0x0741, 0x0741, 0x0741 }, +{ 0x0742, 0x0742, 0x0742 }, +{ 0x0743, 0x0743, 0x0743 }, +{ 0x0744, 0x0744, 0x0744 }, +{ 0x0745, 0x0745, 0x0745 }, +{ 0x0746, 0x0746, 0x0746 }, +{ 0x0747, 0x0747, 0x0747 }, +{ 0x0748, 0x0748, 0x0748 }, +{ 0x0749, 0x0749, 0x0749 }, +{ 0x074A, 0x074A, 0x074A }, +{ 0x074D, 0x074D, 0x074D }, +{ 0x074E, 0x074E, 0x074E }, +{ 0x074F, 0x074F, 0x074F }, +{ 0x0750, 0x0750, 0x0750 }, +{ 0x0751, 0x0751, 0x0751 }, +{ 0x0752, 0x0752, 0x0752 }, +{ 0x0753, 0x0753, 0x0753 }, +{ 0x0754, 0x0754, 0x0754 }, +{ 0x0755, 0x0755, 0x0755 }, +{ 0x0756, 0x0756, 0x0756 }, +{ 0x0757, 0x0757, 0x0757 }, +{ 0x0758, 0x0758, 0x0758 }, +{ 0x0759, 0x0759, 0x0759 }, +{ 0x075A, 0x075A, 0x075A }, +{ 0x075B, 0x075B, 0x075B }, +{ 0x075C, 0x075C, 0x075C }, +{ 0x075D, 0x075D, 0x075D }, +{ 0x075E, 0x075E, 0x075E }, +{ 0x075F, 0x075F, 0x075F }, +{ 0x0760, 0x0760, 0x0760 }, +{ 0x0761, 0x0761, 0x0761 }, +{ 0x0762, 0x0762, 0x0762 }, +{ 0x0763, 0x0763, 0x0763 }, +{ 0x0764, 0x0764, 0x0764 }, +{ 0x0765, 0x0765, 0x0765 }, +{ 0x0766, 0x0766, 0x0766 }, +{ 0x0767, 0x0767, 0x0767 }, +{ 0x0768, 0x0768, 0x0768 }, +{ 0x0769, 0x0769, 0x0769 }, +{ 0x076A, 0x076A, 0x076A }, +{ 0x076B, 0x076B, 0x076B }, +{ 0x076C, 0x076C, 0x076C }, +{ 0x076D, 0x076D, 0x076D }, +{ 0x0780, 0x0780, 0x0780 }, +{ 0x0781, 0x0781, 0x0781 }, +{ 0x0782, 0x0782, 0x0782 }, +{ 0x0783, 0x0783, 0x0783 }, +{ 0x0784, 0x0784, 0x0784 }, +{ 0x0785, 0x0785, 0x0785 }, +{ 0x0786, 0x0786, 0x0786 }, +{ 0x0787, 0x0787, 0x0787 }, +{ 0x0788, 0x0788, 0x0788 }, +{ 0x0789, 0x0789, 0x0789 }, +{ 0x078A, 0x078A, 0x078A }, +{ 0x078B, 0x078B, 0x078B }, +{ 0x078C, 0x078C, 0x078C }, +{ 0x078D, 0x078D, 0x078D }, +{ 0x078E, 0x078E, 0x078E }, +{ 0x078F, 0x078F, 0x078F }, +{ 0x0790, 0x0790, 0x0790 }, +{ 0x0791, 0x0791, 0x0791 }, +{ 0x0792, 0x0792, 0x0792 }, +{ 0x0793, 0x0793, 0x0793 }, +{ 0x0794, 0x0794, 0x0794 }, +{ 0x0795, 0x0795, 0x0795 }, +{ 0x0796, 0x0796, 0x0796 }, +{ 0x0797, 0x0797, 0x0797 }, +{ 0x0798, 0x0798, 0x0798 }, +{ 0x0799, 0x0799, 0x0799 }, +{ 0x079A, 0x079A, 0x079A }, +{ 0x079B, 0x079B, 0x079B }, +{ 0x079C, 0x079C, 0x079C }, +{ 0x079D, 0x079D, 0x079D }, +{ 0x079E, 0x079E, 0x079E }, +{ 0x079F, 0x079F, 0x079F }, +{ 0x07A0, 0x07A0, 0x07A0 }, +{ 0x07A1, 0x07A1, 0x07A1 }, +{ 0x07A2, 0x07A2, 0x07A2 }, +{ 0x07A3, 0x07A3, 0x07A3 }, +{ 0x07A4, 0x07A4, 0x07A4 }, +{ 0x07A5, 0x07A5, 0x07A5 }, +{ 0x07A6, 0x07A6, 0x07A6 }, +{ 0x07A7, 0x07A7, 0x07A7 }, +{ 0x07A8, 0x07A8, 0x07A8 }, +{ 0x07A9, 0x07A9, 0x07A9 }, +{ 0x07AA, 0x07AA, 0x07AA }, +{ 0x07AB, 0x07AB, 0x07AB }, +{ 0x07AC, 0x07AC, 0x07AC }, +{ 0x07AD, 0x07AD, 0x07AD }, +{ 0x07AE, 0x07AE, 0x07AE }, +{ 0x07AF, 0x07AF, 0x07AF }, +{ 0x07B0, 0x07B0, 0x07B0 }, +{ 0x07B1, 0x07B1, 0x07B1 }, +{ 0x0901, 0x0901, 0x0901 }, +{ 0x0902, 0x0902, 0x0902 }, +{ 0x0904, 0x0904, 0x0904 }, +{ 0x0905, 0x0905, 0x0905 }, +{ 0x0906, 0x0906, 0x0906 }, +{ 0x0907, 0x0907, 0x0907 }, +{ 0x0908, 0x0908, 0x0908 }, +{ 0x0909, 0x0909, 0x0909 }, +{ 0x090A, 0x090A, 0x090A }, +{ 0x090B, 0x090B, 0x090B }, +{ 0x090C, 0x090C, 0x090C }, +{ 0x090D, 0x090D, 0x090D }, +{ 0x090E, 0x090E, 0x090E }, +{ 0x090F, 0x090F, 0x090F }, +{ 0x0910, 0x0910, 0x0910 }, +{ 0x0911, 0x0911, 0x0911 }, +{ 0x0912, 0x0912, 0x0912 }, +{ 0x0913, 0x0913, 0x0913 }, +{ 0x0914, 0x0914, 0x0914 }, +{ 0x0915, 0x0915, 0x0915 }, +{ 0x0916, 0x0916, 0x0916 }, +{ 0x0917, 0x0917, 0x0917 }, +{ 0x0918, 0x0918, 0x0918 }, +{ 0x0919, 0x0919, 0x0919 }, +{ 0x091A, 0x091A, 0x091A }, +{ 0x091B, 0x091B, 0x091B }, +{ 0x091C, 0x091C, 0x091C }, +{ 0x091D, 0x091D, 0x091D }, +{ 0x091E, 0x091E, 0x091E }, +{ 0x091F, 0x091F, 0x091F }, +{ 0x0920, 0x0920, 0x0920 }, +{ 0x0921, 0x0921, 0x0921 }, +{ 0x0922, 0x0922, 0x0922 }, +{ 0x0923, 0x0923, 0x0923 }, +{ 0x0924, 0x0924, 0x0924 }, +{ 0x0925, 0x0925, 0x0925 }, +{ 0x0926, 0x0926, 0x0926 }, +{ 0x0927, 0x0927, 0x0927 }, +{ 0x0928, 0x0928, 0x0928 }, +{ 0x0929, 0x0929, 0x0929 }, +{ 0x092A, 0x092A, 0x092A }, +{ 0x092B, 0x092B, 0x092B }, +{ 0x092C, 0x092C, 0x092C }, +{ 0x092D, 0x092D, 0x092D }, +{ 0x092E, 0x092E, 0x092E }, +{ 0x092F, 0x092F, 0x092F }, +{ 0x0930, 0x0930, 0x0930 }, +{ 0x0931, 0x0931, 0x0931 }, +{ 0x0932, 0x0932, 0x0932 }, +{ 0x0933, 0x0933, 0x0933 }, +{ 0x0934, 0x0934, 0x0934 }, +{ 0x0935, 0x0935, 0x0935 }, +{ 0x0936, 0x0936, 0x0936 }, +{ 0x0937, 0x0937, 0x0937 }, +{ 0x0938, 0x0938, 0x0938 }, +{ 0x0939, 0x0939, 0x0939 }, +{ 0x093C, 0x093C, 0x093C }, +{ 0x093D, 0x093D, 0x093D }, +{ 0x0941, 0x0941, 0x0941 }, +{ 0x0942, 0x0942, 0x0942 }, +{ 0x0943, 0x0943, 0x0943 }, +{ 0x0944, 0x0944, 0x0944 }, +{ 0x0945, 0x0945, 0x0945 }, +{ 0x0946, 0x0946, 0x0946 }, +{ 0x0947, 0x0947, 0x0947 }, +{ 0x0948, 0x0948, 0x0948 }, +{ 0x094D, 0x094D, 0x094D }, +{ 0x0950, 0x0950, 0x0950 }, +{ 0x0951, 0x0951, 0x0951 }, +{ 0x0952, 0x0952, 0x0952 }, +{ 0x0953, 0x0953, 0x0953 }, +{ 0x0954, 0x0954, 0x0954 }, +{ 0x0958, 0x0958, 0x0958 }, +{ 0x0959, 0x0959, 0x0959 }, +{ 0x095A, 0x095A, 0x095A }, +{ 0x095B, 0x095B, 0x095B }, +{ 0x095C, 0x095C, 0x095C }, +{ 0x095D, 0x095D, 0x095D }, +{ 0x095E, 0x095E, 0x095E }, +{ 0x095F, 0x095F, 0x095F }, +{ 0x0960, 0x0960, 0x0960 }, +{ 0x0961, 0x0961, 0x0961 }, +{ 0x0962, 0x0962, 0x0962 }, +{ 0x0963, 0x0963, 0x0963 }, +{ 0x097D, 0x097D, 0x097D }, +{ 0x0981, 0x0981, 0x0981 }, +{ 0x0985, 0x0985, 0x0985 }, +{ 0x0986, 0x0986, 0x0986 }, +{ 0x0987, 0x0987, 0x0987 }, +{ 0x0988, 0x0988, 0x0988 }, +{ 0x0989, 0x0989, 0x0989 }, +{ 0x098A, 0x098A, 0x098A }, +{ 0x098B, 0x098B, 0x098B }, +{ 0x098C, 0x098C, 0x098C }, +{ 0x098F, 0x098F, 0x098F }, +{ 0x0990, 0x0990, 0x0990 }, +{ 0x0993, 0x0993, 0x0993 }, +{ 0x0994, 0x0994, 0x0994 }, +{ 0x0995, 0x0995, 0x0995 }, +{ 0x0996, 0x0996, 0x0996 }, +{ 0x0997, 0x0997, 0x0997 }, +{ 0x0998, 0x0998, 0x0998 }, +{ 0x0999, 0x0999, 0x0999 }, +{ 0x099A, 0x099A, 0x099A }, +{ 0x099B, 0x099B, 0x099B }, +{ 0x099C, 0x099C, 0x099C }, +{ 0x099D, 0x099D, 0x099D }, +{ 0x099E, 0x099E, 0x099E }, +{ 0x099F, 0x099F, 0x099F }, +{ 0x09A0, 0x09A0, 0x09A0 }, +{ 0x09A1, 0x09A1, 0x09A1 }, +{ 0x09A2, 0x09A2, 0x09A2 }, +{ 0x09A3, 0x09A3, 0x09A3 }, +{ 0x09A4, 0x09A4, 0x09A4 }, +{ 0x09A5, 0x09A5, 0x09A5 }, +{ 0x09A6, 0x09A6, 0x09A6 }, +{ 0x09A7, 0x09A7, 0x09A7 }, +{ 0x09A8, 0x09A8, 0x09A8 }, +{ 0x09AA, 0x09AA, 0x09AA }, +{ 0x09AB, 0x09AB, 0x09AB }, +{ 0x09AC, 0x09AC, 0x09AC }, +{ 0x09AD, 0x09AD, 0x09AD }, +{ 0x09AE, 0x09AE, 0x09AE }, +{ 0x09AF, 0x09AF, 0x09AF }, +{ 0x09B0, 0x09B0, 0x09B0 }, +{ 0x09B2, 0x09B2, 0x09B2 }, +{ 0x09B6, 0x09B6, 0x09B6 }, +{ 0x09B7, 0x09B7, 0x09B7 }, +{ 0x09B8, 0x09B8, 0x09B8 }, +{ 0x09B9, 0x09B9, 0x09B9 }, +{ 0x09BC, 0x09BC, 0x09BC }, +{ 0x09BD, 0x09BD, 0x09BD }, +{ 0x09C1, 0x09C1, 0x09C1 }, +{ 0x09C2, 0x09C2, 0x09C2 }, +{ 0x09C3, 0x09C3, 0x09C3 }, +{ 0x09C4, 0x09C4, 0x09C4 }, +{ 0x09CD, 0x09CD, 0x09CD }, +{ 0x09CE, 0x09CE, 0x09CE }, +{ 0x09DC, 0x09DC, 0x09DC }, +{ 0x09DD, 0x09DD, 0x09DD }, +{ 0x09DF, 0x09DF, 0x09DF }, +{ 0x09E0, 0x09E0, 0x09E0 }, +{ 0x09E1, 0x09E1, 0x09E1 }, +{ 0x09E2, 0x09E2, 0x09E2 }, +{ 0x09E3, 0x09E3, 0x09E3 }, +{ 0x09F0, 0x09F0, 0x09F0 }, +{ 0x09F1, 0x09F1, 0x09F1 }, +{ 0x0A01, 0x0A01, 0x0A01 }, +{ 0x0A02, 0x0A02, 0x0A02 }, +{ 0x0A05, 0x0A05, 0x0A05 }, +{ 0x0A06, 0x0A06, 0x0A06 }, +{ 0x0A07, 0x0A07, 0x0A07 }, +{ 0x0A08, 0x0A08, 0x0A08 }, +{ 0x0A09, 0x0A09, 0x0A09 }, +{ 0x0A0A, 0x0A0A, 0x0A0A }, +{ 0x0A0F, 0x0A0F, 0x0A0F }, +{ 0x0A10, 0x0A10, 0x0A10 }, +{ 0x0A13, 0x0A13, 0x0A13 }, +{ 0x0A14, 0x0A14, 0x0A14 }, +{ 0x0A15, 0x0A15, 0x0A15 }, +{ 0x0A16, 0x0A16, 0x0A16 }, +{ 0x0A17, 0x0A17, 0x0A17 }, +{ 0x0A18, 0x0A18, 0x0A18 }, +{ 0x0A19, 0x0A19, 0x0A19 }, +{ 0x0A1A, 0x0A1A, 0x0A1A }, +{ 0x0A1B, 0x0A1B, 0x0A1B }, +{ 0x0A1C, 0x0A1C, 0x0A1C }, +{ 0x0A1D, 0x0A1D, 0x0A1D }, +{ 0x0A1E, 0x0A1E, 0x0A1E }, +{ 0x0A1F, 0x0A1F, 0x0A1F }, +{ 0x0A20, 0x0A20, 0x0A20 }, +{ 0x0A21, 0x0A21, 0x0A21 }, +{ 0x0A22, 0x0A22, 0x0A22 }, +{ 0x0A23, 0x0A23, 0x0A23 }, +{ 0x0A24, 0x0A24, 0x0A24 }, +{ 0x0A25, 0x0A25, 0x0A25 }, +{ 0x0A26, 0x0A26, 0x0A26 }, +{ 0x0A27, 0x0A27, 0x0A27 }, +{ 0x0A28, 0x0A28, 0x0A28 }, +{ 0x0A2A, 0x0A2A, 0x0A2A }, +{ 0x0A2B, 0x0A2B, 0x0A2B }, +{ 0x0A2C, 0x0A2C, 0x0A2C }, +{ 0x0A2D, 0x0A2D, 0x0A2D }, +{ 0x0A2E, 0x0A2E, 0x0A2E }, +{ 0x0A2F, 0x0A2F, 0x0A2F }, +{ 0x0A30, 0x0A30, 0x0A30 }, +{ 0x0A32, 0x0A32, 0x0A32 }, +{ 0x0A33, 0x0A33, 0x0A33 }, +{ 0x0A35, 0x0A35, 0x0A35 }, +{ 0x0A36, 0x0A36, 0x0A36 }, +{ 0x0A38, 0x0A38, 0x0A38 }, +{ 0x0A39, 0x0A39, 0x0A39 }, +{ 0x0A3C, 0x0A3C, 0x0A3C }, +{ 0x0A41, 0x0A41, 0x0A41 }, +{ 0x0A42, 0x0A42, 0x0A42 }, +{ 0x0A47, 0x0A47, 0x0A47 }, +{ 0x0A48, 0x0A48, 0x0A48 }, +{ 0x0A4B, 0x0A4B, 0x0A4B }, +{ 0x0A4C, 0x0A4C, 0x0A4C }, +{ 0x0A4D, 0x0A4D, 0x0A4D }, +{ 0x0A59, 0x0A59, 0x0A59 }, +{ 0x0A5A, 0x0A5A, 0x0A5A }, +{ 0x0A5B, 0x0A5B, 0x0A5B }, +{ 0x0A5C, 0x0A5C, 0x0A5C }, +{ 0x0A5E, 0x0A5E, 0x0A5E }, +{ 0x0A70, 0x0A70, 0x0A70 }, +{ 0x0A71, 0x0A71, 0x0A71 }, +{ 0x0A72, 0x0A72, 0x0A72 }, +{ 0x0A73, 0x0A73, 0x0A73 }, +{ 0x0A74, 0x0A74, 0x0A74 }, +{ 0x0A81, 0x0A81, 0x0A81 }, +{ 0x0A82, 0x0A82, 0x0A82 }, +{ 0x0A85, 0x0A85, 0x0A85 }, +{ 0x0A86, 0x0A86, 0x0A86 }, +{ 0x0A87, 0x0A87, 0x0A87 }, +{ 0x0A88, 0x0A88, 0x0A88 }, +{ 0x0A89, 0x0A89, 0x0A89 }, +{ 0x0A8A, 0x0A8A, 0x0A8A }, +{ 0x0A8B, 0x0A8B, 0x0A8B }, +{ 0x0A8C, 0x0A8C, 0x0A8C }, +{ 0x0A8D, 0x0A8D, 0x0A8D }, +{ 0x0A8F, 0x0A8F, 0x0A8F }, +{ 0x0A90, 0x0A90, 0x0A90 }, +{ 0x0A91, 0x0A91, 0x0A91 }, +{ 0x0A93, 0x0A93, 0x0A93 }, +{ 0x0A94, 0x0A94, 0x0A94 }, +{ 0x0A95, 0x0A95, 0x0A95 }, +{ 0x0A96, 0x0A96, 0x0A96 }, +{ 0x0A97, 0x0A97, 0x0A97 }, +{ 0x0A98, 0x0A98, 0x0A98 }, +{ 0x0A99, 0x0A99, 0x0A99 }, +{ 0x0A9A, 0x0A9A, 0x0A9A }, +{ 0x0A9B, 0x0A9B, 0x0A9B }, +{ 0x0A9C, 0x0A9C, 0x0A9C }, +{ 0x0A9D, 0x0A9D, 0x0A9D }, +{ 0x0A9E, 0x0A9E, 0x0A9E }, +{ 0x0A9F, 0x0A9F, 0x0A9F }, +{ 0x0AA0, 0x0AA0, 0x0AA0 }, +{ 0x0AA1, 0x0AA1, 0x0AA1 }, +{ 0x0AA2, 0x0AA2, 0x0AA2 }, +{ 0x0AA3, 0x0AA3, 0x0AA3 }, +{ 0x0AA4, 0x0AA4, 0x0AA4 }, +{ 0x0AA5, 0x0AA5, 0x0AA5 }, +{ 0x0AA6, 0x0AA6, 0x0AA6 }, +{ 0x0AA7, 0x0AA7, 0x0AA7 }, +{ 0x0AA8, 0x0AA8, 0x0AA8 }, +{ 0x0AAA, 0x0AAA, 0x0AAA }, +{ 0x0AAB, 0x0AAB, 0x0AAB }, +{ 0x0AAC, 0x0AAC, 0x0AAC }, +{ 0x0AAD, 0x0AAD, 0x0AAD }, +{ 0x0AAE, 0x0AAE, 0x0AAE }, +{ 0x0AAF, 0x0AAF, 0x0AAF }, +{ 0x0AB0, 0x0AB0, 0x0AB0 }, +{ 0x0AB2, 0x0AB2, 0x0AB2 }, +{ 0x0AB3, 0x0AB3, 0x0AB3 }, +{ 0x0AB5, 0x0AB5, 0x0AB5 }, +{ 0x0AB6, 0x0AB6, 0x0AB6 }, +{ 0x0AB7, 0x0AB7, 0x0AB7 }, +{ 0x0AB8, 0x0AB8, 0x0AB8 }, +{ 0x0AB9, 0x0AB9, 0x0AB9 }, +{ 0x0ABC, 0x0ABC, 0x0ABC }, +{ 0x0ABD, 0x0ABD, 0x0ABD }, +{ 0x0AC1, 0x0AC1, 0x0AC1 }, +{ 0x0AC2, 0x0AC2, 0x0AC2 }, +{ 0x0AC3, 0x0AC3, 0x0AC3 }, +{ 0x0AC4, 0x0AC4, 0x0AC4 }, +{ 0x0AC5, 0x0AC5, 0x0AC5 }, +{ 0x0AC7, 0x0AC7, 0x0AC7 }, +{ 0x0AC8, 0x0AC8, 0x0AC8 }, +{ 0x0ACD, 0x0ACD, 0x0ACD }, +{ 0x0AD0, 0x0AD0, 0x0AD0 }, +{ 0x0AE0, 0x0AE0, 0x0AE0 }, +{ 0x0AE1, 0x0AE1, 0x0AE1 }, +{ 0x0AE2, 0x0AE2, 0x0AE2 }, +{ 0x0AE3, 0x0AE3, 0x0AE3 }, +{ 0x0B01, 0x0B01, 0x0B01 }, +{ 0x0B05, 0x0B05, 0x0B05 }, +{ 0x0B06, 0x0B06, 0x0B06 }, +{ 0x0B07, 0x0B07, 0x0B07 }, +{ 0x0B08, 0x0B08, 0x0B08 }, +{ 0x0B09, 0x0B09, 0x0B09 }, +{ 0x0B0A, 0x0B0A, 0x0B0A }, +{ 0x0B0B, 0x0B0B, 0x0B0B }, +{ 0x0B0C, 0x0B0C, 0x0B0C }, +{ 0x0B0F, 0x0B0F, 0x0B0F }, +{ 0x0B10, 0x0B10, 0x0B10 }, +{ 0x0B13, 0x0B13, 0x0B13 }, +{ 0x0B14, 0x0B14, 0x0B14 }, +{ 0x0B15, 0x0B15, 0x0B15 }, +{ 0x0B16, 0x0B16, 0x0B16 }, +{ 0x0B17, 0x0B17, 0x0B17 }, +{ 0x0B18, 0x0B18, 0x0B18 }, +{ 0x0B19, 0x0B19, 0x0B19 }, +{ 0x0B1A, 0x0B1A, 0x0B1A }, +{ 0x0B1B, 0x0B1B, 0x0B1B }, +{ 0x0B1C, 0x0B1C, 0x0B1C }, +{ 0x0B1D, 0x0B1D, 0x0B1D }, +{ 0x0B1E, 0x0B1E, 0x0B1E }, +{ 0x0B1F, 0x0B1F, 0x0B1F }, +{ 0x0B20, 0x0B20, 0x0B20 }, +{ 0x0B21, 0x0B21, 0x0B21 }, +{ 0x0B22, 0x0B22, 0x0B22 }, +{ 0x0B23, 0x0B23, 0x0B23 }, +{ 0x0B24, 0x0B24, 0x0B24 }, +{ 0x0B25, 0x0B25, 0x0B25 }, +{ 0x0B26, 0x0B26, 0x0B26 }, +{ 0x0B27, 0x0B27, 0x0B27 }, +{ 0x0B28, 0x0B28, 0x0B28 }, +{ 0x0B2A, 0x0B2A, 0x0B2A }, +{ 0x0B2B, 0x0B2B, 0x0B2B }, +{ 0x0B2C, 0x0B2C, 0x0B2C }, +{ 0x0B2D, 0x0B2D, 0x0B2D }, +{ 0x0B2E, 0x0B2E, 0x0B2E }, +{ 0x0B2F, 0x0B2F, 0x0B2F }, +{ 0x0B30, 0x0B30, 0x0B30 }, +{ 0x0B32, 0x0B32, 0x0B32 }, +{ 0x0B33, 0x0B33, 0x0B33 }, +{ 0x0B35, 0x0B35, 0x0B35 }, +{ 0x0B36, 0x0B36, 0x0B36 }, +{ 0x0B37, 0x0B37, 0x0B37 }, +{ 0x0B38, 0x0B38, 0x0B38 }, +{ 0x0B39, 0x0B39, 0x0B39 }, +{ 0x0B3C, 0x0B3C, 0x0B3C }, +{ 0x0B3D, 0x0B3D, 0x0B3D }, +{ 0x0B3F, 0x0B3F, 0x0B3F }, +{ 0x0B41, 0x0B41, 0x0B41 }, +{ 0x0B42, 0x0B42, 0x0B42 }, +{ 0x0B43, 0x0B43, 0x0B43 }, +{ 0x0B4D, 0x0B4D, 0x0B4D }, +{ 0x0B56, 0x0B56, 0x0B56 }, +{ 0x0B5C, 0x0B5C, 0x0B5C }, +{ 0x0B5D, 0x0B5D, 0x0B5D }, +{ 0x0B5F, 0x0B5F, 0x0B5F }, +{ 0x0B60, 0x0B60, 0x0B60 }, +{ 0x0B61, 0x0B61, 0x0B61 }, +{ 0x0B71, 0x0B71, 0x0B71 }, +{ 0x0B82, 0x0B82, 0x0B82 }, +{ 0x0B83, 0x0B83, 0x0B83 }, +{ 0x0B85, 0x0B85, 0x0B85 }, +{ 0x0B86, 0x0B86, 0x0B86 }, +{ 0x0B87, 0x0B87, 0x0B87 }, +{ 0x0B88, 0x0B88, 0x0B88 }, +{ 0x0B89, 0x0B89, 0x0B89 }, +{ 0x0B8A, 0x0B8A, 0x0B8A }, +{ 0x0B8E, 0x0B8E, 0x0B8E }, +{ 0x0B8F, 0x0B8F, 0x0B8F }, +{ 0x0B90, 0x0B90, 0x0B90 }, +{ 0x0B92, 0x0B92, 0x0B92 }, +{ 0x0B93, 0x0B93, 0x0B93 }, +{ 0x0B94, 0x0B94, 0x0B94 }, +{ 0x0B95, 0x0B95, 0x0B95 }, +{ 0x0B99, 0x0B99, 0x0B99 }, +{ 0x0B9A, 0x0B9A, 0x0B9A }, +{ 0x0B9C, 0x0B9C, 0x0B9C }, +{ 0x0B9E, 0x0B9E, 0x0B9E }, +{ 0x0B9F, 0x0B9F, 0x0B9F }, +{ 0x0BA3, 0x0BA3, 0x0BA3 }, +{ 0x0BA4, 0x0BA4, 0x0BA4 }, +{ 0x0BA8, 0x0BA8, 0x0BA8 }, +{ 0x0BA9, 0x0BA9, 0x0BA9 }, +{ 0x0BAA, 0x0BAA, 0x0BAA }, +{ 0x0BAE, 0x0BAE, 0x0BAE }, +{ 0x0BAF, 0x0BAF, 0x0BAF }, +{ 0x0BB0, 0x0BB0, 0x0BB0 }, +{ 0x0BB1, 0x0BB1, 0x0BB1 }, +{ 0x0BB2, 0x0BB2, 0x0BB2 }, +{ 0x0BB3, 0x0BB3, 0x0BB3 }, +{ 0x0BB4, 0x0BB4, 0x0BB4 }, +{ 0x0BB5, 0x0BB5, 0x0BB5 }, +{ 0x0BB6, 0x0BB6, 0x0BB6 }, +{ 0x0BB7, 0x0BB7, 0x0BB7 }, +{ 0x0BB8, 0x0BB8, 0x0BB8 }, +{ 0x0BB9, 0x0BB9, 0x0BB9 }, +{ 0x0BC0, 0x0BC0, 0x0BC0 }, +{ 0x0BCD, 0x0BCD, 0x0BCD }, +{ 0x0C05, 0x0C05, 0x0C05 }, +{ 0x0C06, 0x0C06, 0x0C06 }, +{ 0x0C07, 0x0C07, 0x0C07 }, +{ 0x0C08, 0x0C08, 0x0C08 }, +{ 0x0C09, 0x0C09, 0x0C09 }, +{ 0x0C0A, 0x0C0A, 0x0C0A }, +{ 0x0C0B, 0x0C0B, 0x0C0B }, +{ 0x0C0C, 0x0C0C, 0x0C0C }, +{ 0x0C0E, 0x0C0E, 0x0C0E }, +{ 0x0C0F, 0x0C0F, 0x0C0F }, +{ 0x0C10, 0x0C10, 0x0C10 }, +{ 0x0C12, 0x0C12, 0x0C12 }, +{ 0x0C13, 0x0C13, 0x0C13 }, +{ 0x0C14, 0x0C14, 0x0C14 }, +{ 0x0C15, 0x0C15, 0x0C15 }, +{ 0x0C16, 0x0C16, 0x0C16 }, +{ 0x0C17, 0x0C17, 0x0C17 }, +{ 0x0C18, 0x0C18, 0x0C18 }, +{ 0x0C19, 0x0C19, 0x0C19 }, +{ 0x0C1A, 0x0C1A, 0x0C1A }, +{ 0x0C1B, 0x0C1B, 0x0C1B }, +{ 0x0C1C, 0x0C1C, 0x0C1C }, +{ 0x0C1D, 0x0C1D, 0x0C1D }, +{ 0x0C1E, 0x0C1E, 0x0C1E }, +{ 0x0C1F, 0x0C1F, 0x0C1F }, +{ 0x0C20, 0x0C20, 0x0C20 }, +{ 0x0C21, 0x0C21, 0x0C21 }, +{ 0x0C22, 0x0C22, 0x0C22 }, +{ 0x0C23, 0x0C23, 0x0C23 }, +{ 0x0C24, 0x0C24, 0x0C24 }, +{ 0x0C25, 0x0C25, 0x0C25 }, +{ 0x0C26, 0x0C26, 0x0C26 }, +{ 0x0C27, 0x0C27, 0x0C27 }, +{ 0x0C28, 0x0C28, 0x0C28 }, +{ 0x0C2A, 0x0C2A, 0x0C2A }, +{ 0x0C2B, 0x0C2B, 0x0C2B }, +{ 0x0C2C, 0x0C2C, 0x0C2C }, +{ 0x0C2D, 0x0C2D, 0x0C2D }, +{ 0x0C2E, 0x0C2E, 0x0C2E }, +{ 0x0C2F, 0x0C2F, 0x0C2F }, +{ 0x0C30, 0x0C30, 0x0C30 }, +{ 0x0C31, 0x0C31, 0x0C31 }, +{ 0x0C32, 0x0C32, 0x0C32 }, +{ 0x0C33, 0x0C33, 0x0C33 }, +{ 0x0C35, 0x0C35, 0x0C35 }, +{ 0x0C36, 0x0C36, 0x0C36 }, +{ 0x0C37, 0x0C37, 0x0C37 }, +{ 0x0C38, 0x0C38, 0x0C38 }, +{ 0x0C39, 0x0C39, 0x0C39 }, +{ 0x0C3E, 0x0C3E, 0x0C3E }, +{ 0x0C3F, 0x0C3F, 0x0C3F }, +{ 0x0C40, 0x0C40, 0x0C40 }, +{ 0x0C46, 0x0C46, 0x0C46 }, +{ 0x0C47, 0x0C47, 0x0C47 }, +{ 0x0C48, 0x0C48, 0x0C48 }, +{ 0x0C4A, 0x0C4A, 0x0C4A }, +{ 0x0C4B, 0x0C4B, 0x0C4B }, +{ 0x0C4C, 0x0C4C, 0x0C4C }, +{ 0x0C4D, 0x0C4D, 0x0C4D }, +{ 0x0C55, 0x0C55, 0x0C55 }, +{ 0x0C56, 0x0C56, 0x0C56 }, +{ 0x0C60, 0x0C60, 0x0C60 }, +{ 0x0C61, 0x0C61, 0x0C61 }, +{ 0x0C85, 0x0C85, 0x0C85 }, +{ 0x0C86, 0x0C86, 0x0C86 }, +{ 0x0C87, 0x0C87, 0x0C87 }, +{ 0x0C88, 0x0C88, 0x0C88 }, +{ 0x0C89, 0x0C89, 0x0C89 }, +{ 0x0C8A, 0x0C8A, 0x0C8A }, +{ 0x0C8B, 0x0C8B, 0x0C8B }, +{ 0x0C8C, 0x0C8C, 0x0C8C }, +{ 0x0C8E, 0x0C8E, 0x0C8E }, +{ 0x0C8F, 0x0C8F, 0x0C8F }, +{ 0x0C90, 0x0C90, 0x0C90 }, +{ 0x0C92, 0x0C92, 0x0C92 }, +{ 0x0C93, 0x0C93, 0x0C93 }, +{ 0x0C94, 0x0C94, 0x0C94 }, +{ 0x0C95, 0x0C95, 0x0C95 }, +{ 0x0C96, 0x0C96, 0x0C96 }, +{ 0x0C97, 0x0C97, 0x0C97 }, +{ 0x0C98, 0x0C98, 0x0C98 }, +{ 0x0C99, 0x0C99, 0x0C99 }, +{ 0x0C9A, 0x0C9A, 0x0C9A }, +{ 0x0C9B, 0x0C9B, 0x0C9B }, +{ 0x0C9C, 0x0C9C, 0x0C9C }, +{ 0x0C9D, 0x0C9D, 0x0C9D }, +{ 0x0C9E, 0x0C9E, 0x0C9E }, +{ 0x0C9F, 0x0C9F, 0x0C9F }, +{ 0x0CA0, 0x0CA0, 0x0CA0 }, +{ 0x0CA1, 0x0CA1, 0x0CA1 }, +{ 0x0CA2, 0x0CA2, 0x0CA2 }, +{ 0x0CA3, 0x0CA3, 0x0CA3 }, +{ 0x0CA4, 0x0CA4, 0x0CA4 }, +{ 0x0CA5, 0x0CA5, 0x0CA5 }, +{ 0x0CA6, 0x0CA6, 0x0CA6 }, +{ 0x0CA7, 0x0CA7, 0x0CA7 }, +{ 0x0CA8, 0x0CA8, 0x0CA8 }, +{ 0x0CAA, 0x0CAA, 0x0CAA }, +{ 0x0CAB, 0x0CAB, 0x0CAB }, +{ 0x0CAC, 0x0CAC, 0x0CAC }, +{ 0x0CAD, 0x0CAD, 0x0CAD }, +{ 0x0CAE, 0x0CAE, 0x0CAE }, +{ 0x0CAF, 0x0CAF, 0x0CAF }, +{ 0x0CB0, 0x0CB0, 0x0CB0 }, +{ 0x0CB1, 0x0CB1, 0x0CB1 }, +{ 0x0CB2, 0x0CB2, 0x0CB2 }, +{ 0x0CB3, 0x0CB3, 0x0CB3 }, +{ 0x0CB5, 0x0CB5, 0x0CB5 }, +{ 0x0CB6, 0x0CB6, 0x0CB6 }, +{ 0x0CB7, 0x0CB7, 0x0CB7 }, +{ 0x0CB8, 0x0CB8, 0x0CB8 }, +{ 0x0CB9, 0x0CB9, 0x0CB9 }, +{ 0x0CBC, 0x0CBC, 0x0CBC }, +{ 0x0CBD, 0x0CBD, 0x0CBD }, +{ 0x0CBF, 0x0CBF, 0x0CBF }, +{ 0x0CC6, 0x0CC6, 0x0CC6 }, +{ 0x0CCC, 0x0CCC, 0x0CCC }, +{ 0x0CCD, 0x0CCD, 0x0CCD }, +{ 0x0CDE, 0x0CDE, 0x0CDE }, +{ 0x0CE0, 0x0CE0, 0x0CE0 }, +{ 0x0CE1, 0x0CE1, 0x0CE1 }, +{ 0x0D05, 0x0D05, 0x0D05 }, +{ 0x0D06, 0x0D06, 0x0D06 }, +{ 0x0D07, 0x0D07, 0x0D07 }, +{ 0x0D08, 0x0D08, 0x0D08 }, +{ 0x0D09, 0x0D09, 0x0D09 }, +{ 0x0D0A, 0x0D0A, 0x0D0A }, +{ 0x0D0B, 0x0D0B, 0x0D0B }, +{ 0x0D0C, 0x0D0C, 0x0D0C }, +{ 0x0D0E, 0x0D0E, 0x0D0E }, +{ 0x0D0F, 0x0D0F, 0x0D0F }, +{ 0x0D10, 0x0D10, 0x0D10 }, +{ 0x0D12, 0x0D12, 0x0D12 }, +{ 0x0D13, 0x0D13, 0x0D13 }, +{ 0x0D14, 0x0D14, 0x0D14 }, +{ 0x0D15, 0x0D15, 0x0D15 }, +{ 0x0D16, 0x0D16, 0x0D16 }, +{ 0x0D17, 0x0D17, 0x0D17 }, +{ 0x0D18, 0x0D18, 0x0D18 }, +{ 0x0D19, 0x0D19, 0x0D19 }, +{ 0x0D1A, 0x0D1A, 0x0D1A }, +{ 0x0D1B, 0x0D1B, 0x0D1B }, +{ 0x0D1C, 0x0D1C, 0x0D1C }, +{ 0x0D1D, 0x0D1D, 0x0D1D }, +{ 0x0D1E, 0x0D1E, 0x0D1E }, +{ 0x0D1F, 0x0D1F, 0x0D1F }, +{ 0x0D20, 0x0D20, 0x0D20 }, +{ 0x0D21, 0x0D21, 0x0D21 }, +{ 0x0D22, 0x0D22, 0x0D22 }, +{ 0x0D23, 0x0D23, 0x0D23 }, +{ 0x0D24, 0x0D24, 0x0D24 }, +{ 0x0D25, 0x0D25, 0x0D25 }, +{ 0x0D26, 0x0D26, 0x0D26 }, +{ 0x0D27, 0x0D27, 0x0D27 }, +{ 0x0D28, 0x0D28, 0x0D28 }, +{ 0x0D2A, 0x0D2A, 0x0D2A }, +{ 0x0D2B, 0x0D2B, 0x0D2B }, +{ 0x0D2C, 0x0D2C, 0x0D2C }, +{ 0x0D2D, 0x0D2D, 0x0D2D }, +{ 0x0D2E, 0x0D2E, 0x0D2E }, +{ 0x0D2F, 0x0D2F, 0x0D2F }, +{ 0x0D30, 0x0D30, 0x0D30 }, +{ 0x0D31, 0x0D31, 0x0D31 }, +{ 0x0D32, 0x0D32, 0x0D32 }, +{ 0x0D33, 0x0D33, 0x0D33 }, +{ 0x0D34, 0x0D34, 0x0D34 }, +{ 0x0D35, 0x0D35, 0x0D35 }, +{ 0x0D36, 0x0D36, 0x0D36 }, +{ 0x0D37, 0x0D37, 0x0D37 }, +{ 0x0D38, 0x0D38, 0x0D38 }, +{ 0x0D39, 0x0D39, 0x0D39 }, +{ 0x0D41, 0x0D41, 0x0D41 }, +{ 0x0D42, 0x0D42, 0x0D42 }, +{ 0x0D43, 0x0D43, 0x0D43 }, +{ 0x0D4D, 0x0D4D, 0x0D4D }, +{ 0x0D60, 0x0D60, 0x0D60 }, +{ 0x0D61, 0x0D61, 0x0D61 }, +{ 0x0D85, 0x0D85, 0x0D85 }, +{ 0x0D86, 0x0D86, 0x0D86 }, +{ 0x0D87, 0x0D87, 0x0D87 }, +{ 0x0D88, 0x0D88, 0x0D88 }, +{ 0x0D89, 0x0D89, 0x0D89 }, +{ 0x0D8A, 0x0D8A, 0x0D8A }, +{ 0x0D8B, 0x0D8B, 0x0D8B }, +{ 0x0D8C, 0x0D8C, 0x0D8C }, +{ 0x0D8D, 0x0D8D, 0x0D8D }, +{ 0x0D8E, 0x0D8E, 0x0D8E }, +{ 0x0D8F, 0x0D8F, 0x0D8F }, +{ 0x0D90, 0x0D90, 0x0D90 }, +{ 0x0D91, 0x0D91, 0x0D91 }, +{ 0x0D92, 0x0D92, 0x0D92 }, +{ 0x0D93, 0x0D93, 0x0D93 }, +{ 0x0D94, 0x0D94, 0x0D94 }, +{ 0x0D95, 0x0D95, 0x0D95 }, +{ 0x0D96, 0x0D96, 0x0D96 }, +{ 0x0D9A, 0x0D9A, 0x0D9A }, +{ 0x0D9B, 0x0D9B, 0x0D9B }, +{ 0x0D9C, 0x0D9C, 0x0D9C }, +{ 0x0D9D, 0x0D9D, 0x0D9D }, +{ 0x0D9E, 0x0D9E, 0x0D9E }, +{ 0x0D9F, 0x0D9F, 0x0D9F }, +{ 0x0DA0, 0x0DA0, 0x0DA0 }, +{ 0x0DA1, 0x0DA1, 0x0DA1 }, +{ 0x0DA2, 0x0DA2, 0x0DA2 }, +{ 0x0DA3, 0x0DA3, 0x0DA3 }, +{ 0x0DA4, 0x0DA4, 0x0DA4 }, +{ 0x0DA5, 0x0DA5, 0x0DA5 }, +{ 0x0DA6, 0x0DA6, 0x0DA6 }, +{ 0x0DA7, 0x0DA7, 0x0DA7 }, +{ 0x0DA8, 0x0DA8, 0x0DA8 }, +{ 0x0DA9, 0x0DA9, 0x0DA9 }, +{ 0x0DAA, 0x0DAA, 0x0DAA }, +{ 0x0DAB, 0x0DAB, 0x0DAB }, +{ 0x0DAC, 0x0DAC, 0x0DAC }, +{ 0x0DAD, 0x0DAD, 0x0DAD }, +{ 0x0DAE, 0x0DAE, 0x0DAE }, +{ 0x0DAF, 0x0DAF, 0x0DAF }, +{ 0x0DB0, 0x0DB0, 0x0DB0 }, +{ 0x0DB1, 0x0DB1, 0x0DB1 }, +{ 0x0DB3, 0x0DB3, 0x0DB3 }, +{ 0x0DB4, 0x0DB4, 0x0DB4 }, +{ 0x0DB5, 0x0DB5, 0x0DB5 }, +{ 0x0DB6, 0x0DB6, 0x0DB6 }, +{ 0x0DB7, 0x0DB7, 0x0DB7 }, +{ 0x0DB8, 0x0DB8, 0x0DB8 }, +{ 0x0DB9, 0x0DB9, 0x0DB9 }, +{ 0x0DBA, 0x0DBA, 0x0DBA }, +{ 0x0DBB, 0x0DBB, 0x0DBB }, +{ 0x0DBD, 0x0DBD, 0x0DBD }, +{ 0x0DC0, 0x0DC0, 0x0DC0 }, +{ 0x0DC1, 0x0DC1, 0x0DC1 }, +{ 0x0DC2, 0x0DC2, 0x0DC2 }, +{ 0x0DC3, 0x0DC3, 0x0DC3 }, +{ 0x0DC4, 0x0DC4, 0x0DC4 }, +{ 0x0DC5, 0x0DC5, 0x0DC5 }, +{ 0x0DC6, 0x0DC6, 0x0DC6 }, +{ 0x0DCA, 0x0DCA, 0x0DCA }, +{ 0x0DD2, 0x0DD2, 0x0DD2 }, +{ 0x0DD3, 0x0DD3, 0x0DD3 }, +{ 0x0DD4, 0x0DD4, 0x0DD4 }, +{ 0x0DD6, 0x0DD6, 0x0DD6 }, +{ 0x0E01, 0x0E01, 0x0E01 }, +{ 0x0E02, 0x0E02, 0x0E02 }, +{ 0x0E03, 0x0E03, 0x0E03 }, +{ 0x0E04, 0x0E04, 0x0E04 }, +{ 0x0E05, 0x0E05, 0x0E05 }, +{ 0x0E06, 0x0E06, 0x0E06 }, +{ 0x0E07, 0x0E07, 0x0E07 }, +{ 0x0E08, 0x0E08, 0x0E08 }, +{ 0x0E09, 0x0E09, 0x0E09 }, +{ 0x0E0A, 0x0E0A, 0x0E0A }, +{ 0x0E0B, 0x0E0B, 0x0E0B }, +{ 0x0E0C, 0x0E0C, 0x0E0C }, +{ 0x0E0D, 0x0E0D, 0x0E0D }, +{ 0x0E0E, 0x0E0E, 0x0E0E }, +{ 0x0E0F, 0x0E0F, 0x0E0F }, +{ 0x0E10, 0x0E10, 0x0E10 }, +{ 0x0E11, 0x0E11, 0x0E11 }, +{ 0x0E12, 0x0E12, 0x0E12 }, +{ 0x0E13, 0x0E13, 0x0E13 }, +{ 0x0E14, 0x0E14, 0x0E14 }, +{ 0x0E15, 0x0E15, 0x0E15 }, +{ 0x0E16, 0x0E16, 0x0E16 }, +{ 0x0E17, 0x0E17, 0x0E17 }, +{ 0x0E18, 0x0E18, 0x0E18 }, +{ 0x0E19, 0x0E19, 0x0E19 }, +{ 0x0E1A, 0x0E1A, 0x0E1A }, +{ 0x0E1B, 0x0E1B, 0x0E1B }, +{ 0x0E1C, 0x0E1C, 0x0E1C }, +{ 0x0E1D, 0x0E1D, 0x0E1D }, +{ 0x0E1E, 0x0E1E, 0x0E1E }, +{ 0x0E1F, 0x0E1F, 0x0E1F }, +{ 0x0E20, 0x0E20, 0x0E20 }, +{ 0x0E21, 0x0E21, 0x0E21 }, +{ 0x0E22, 0x0E22, 0x0E22 }, +{ 0x0E23, 0x0E23, 0x0E23 }, +{ 0x0E24, 0x0E24, 0x0E24 }, +{ 0x0E25, 0x0E25, 0x0E25 }, +{ 0x0E26, 0x0E26, 0x0E26 }, +{ 0x0E27, 0x0E27, 0x0E27 }, +{ 0x0E28, 0x0E28, 0x0E28 }, +{ 0x0E29, 0x0E29, 0x0E29 }, +{ 0x0E2A, 0x0E2A, 0x0E2A }, +{ 0x0E2B, 0x0E2B, 0x0E2B }, +{ 0x0E2C, 0x0E2C, 0x0E2C }, +{ 0x0E2D, 0x0E2D, 0x0E2D }, +{ 0x0E2E, 0x0E2E, 0x0E2E }, +{ 0x0E2F, 0x0E2F, 0x0E2F }, +{ 0x0E30, 0x0E30, 0x0E30 }, +{ 0x0E31, 0x0E31, 0x0E31 }, +{ 0x0E32, 0x0E32, 0x0E32 }, +{ 0x0E33, 0x0E33, 0x0E33 }, +{ 0x0E34, 0x0E34, 0x0E34 }, +{ 0x0E35, 0x0E35, 0x0E35 }, +{ 0x0E36, 0x0E36, 0x0E36 }, +{ 0x0E37, 0x0E37, 0x0E37 }, +{ 0x0E38, 0x0E38, 0x0E38 }, +{ 0x0E39, 0x0E39, 0x0E39 }, +{ 0x0E3A, 0x0E3A, 0x0E3A }, +{ 0x0E40, 0x0E40, 0x0E40 }, +{ 0x0E41, 0x0E41, 0x0E41 }, +{ 0x0E42, 0x0E42, 0x0E42 }, +{ 0x0E43, 0x0E43, 0x0E43 }, +{ 0x0E44, 0x0E44, 0x0E44 }, +{ 0x0E45, 0x0E45, 0x0E45 }, +{ 0x0E46, 0x0E46, 0x0E46 }, +{ 0x0E47, 0x0E47, 0x0E47 }, +{ 0x0E48, 0x0E48, 0x0E48 }, +{ 0x0E49, 0x0E49, 0x0E49 }, +{ 0x0E4A, 0x0E4A, 0x0E4A }, +{ 0x0E4B, 0x0E4B, 0x0E4B }, +{ 0x0E4C, 0x0E4C, 0x0E4C }, +{ 0x0E4D, 0x0E4D, 0x0E4D }, +{ 0x0E4E, 0x0E4E, 0x0E4E }, +{ 0x0E81, 0x0E81, 0x0E81 }, +{ 0x0E82, 0x0E82, 0x0E82 }, +{ 0x0E84, 0x0E84, 0x0E84 }, +{ 0x0E87, 0x0E87, 0x0E87 }, +{ 0x0E88, 0x0E88, 0x0E88 }, +{ 0x0E8A, 0x0E8A, 0x0E8A }, +{ 0x0E8D, 0x0E8D, 0x0E8D }, +{ 0x0E94, 0x0E94, 0x0E94 }, +{ 0x0E95, 0x0E95, 0x0E95 }, +{ 0x0E96, 0x0E96, 0x0E96 }, +{ 0x0E97, 0x0E97, 0x0E97 }, +{ 0x0E99, 0x0E99, 0x0E99 }, +{ 0x0E9A, 0x0E9A, 0x0E9A }, +{ 0x0E9B, 0x0E9B, 0x0E9B }, +{ 0x0E9C, 0x0E9C, 0x0E9C }, +{ 0x0E9D, 0x0E9D, 0x0E9D }, +{ 0x0E9E, 0x0E9E, 0x0E9E }, +{ 0x0E9F, 0x0E9F, 0x0E9F }, +{ 0x0EA1, 0x0EA1, 0x0EA1 }, +{ 0x0EA2, 0x0EA2, 0x0EA2 }, +{ 0x0EA3, 0x0EA3, 0x0EA3 }, +{ 0x0EA5, 0x0EA5, 0x0EA5 }, +{ 0x0EA7, 0x0EA7, 0x0EA7 }, +{ 0x0EAA, 0x0EAA, 0x0EAA }, +{ 0x0EAB, 0x0EAB, 0x0EAB }, +{ 0x0EAD, 0x0EAD, 0x0EAD }, +{ 0x0EAE, 0x0EAE, 0x0EAE }, +{ 0x0EAF, 0x0EAF, 0x0EAF }, +{ 0x0EB0, 0x0EB0, 0x0EB0 }, +{ 0x0EB1, 0x0EB1, 0x0EB1 }, +{ 0x0EB2, 0x0EB2, 0x0EB2 }, +{ 0x0EB3, 0x0EB3, 0x0EB3 }, +{ 0x0EB4, 0x0EB4, 0x0EB4 }, +{ 0x0EB5, 0x0EB5, 0x0EB5 }, +{ 0x0EB6, 0x0EB6, 0x0EB6 }, +{ 0x0EB7, 0x0EB7, 0x0EB7 }, +{ 0x0EB8, 0x0EB8, 0x0EB8 }, +{ 0x0EB9, 0x0EB9, 0x0EB9 }, +{ 0x0EBB, 0x0EBB, 0x0EBB }, +{ 0x0EBC, 0x0EBC, 0x0EBC }, +{ 0x0EBD, 0x0EBD, 0x0EBD }, +{ 0x0EC0, 0x0EC0, 0x0EC0 }, +{ 0x0EC1, 0x0EC1, 0x0EC1 }, +{ 0x0EC2, 0x0EC2, 0x0EC2 }, +{ 0x0EC3, 0x0EC3, 0x0EC3 }, +{ 0x0EC4, 0x0EC4, 0x0EC4 }, +{ 0x0EC6, 0x0EC6, 0x0EC6 }, +{ 0x0EC8, 0x0EC8, 0x0EC8 }, +{ 0x0EC9, 0x0EC9, 0x0EC9 }, +{ 0x0ECA, 0x0ECA, 0x0ECA }, +{ 0x0ECB, 0x0ECB, 0x0ECB }, +{ 0x0ECC, 0x0ECC, 0x0ECC }, +{ 0x0ECD, 0x0ECD, 0x0ECD }, +{ 0x0EDC, 0x0EDC, 0x0EDC }, +{ 0x0EDD, 0x0EDD, 0x0EDD }, +{ 0x0F00, 0x0F00, 0x0F00 }, +{ 0x0F18, 0x0F18, 0x0F18 }, +{ 0x0F19, 0x0F19, 0x0F19 }, +{ 0x0F35, 0x0F35, 0x0F35 }, +{ 0x0F37, 0x0F37, 0x0F37 }, +{ 0x0F39, 0x0F39, 0x0F39 }, +{ 0x0F40, 0x0F40, 0x0F40 }, +{ 0x0F41, 0x0F41, 0x0F41 }, +{ 0x0F42, 0x0F42, 0x0F42 }, +{ 0x0F43, 0x0F43, 0x0F43 }, +{ 0x0F44, 0x0F44, 0x0F44 }, +{ 0x0F45, 0x0F45, 0x0F45 }, +{ 0x0F46, 0x0F46, 0x0F46 }, +{ 0x0F47, 0x0F47, 0x0F47 }, +{ 0x0F49, 0x0F49, 0x0F49 }, +{ 0x0F4A, 0x0F4A, 0x0F4A }, +{ 0x0F4B, 0x0F4B, 0x0F4B }, +{ 0x0F4C, 0x0F4C, 0x0F4C }, +{ 0x0F4D, 0x0F4D, 0x0F4D }, +{ 0x0F4E, 0x0F4E, 0x0F4E }, +{ 0x0F4F, 0x0F4F, 0x0F4F }, +{ 0x0F50, 0x0F50, 0x0F50 }, +{ 0x0F51, 0x0F51, 0x0F51 }, +{ 0x0F52, 0x0F52, 0x0F52 }, +{ 0x0F53, 0x0F53, 0x0F53 }, +{ 0x0F54, 0x0F54, 0x0F54 }, +{ 0x0F55, 0x0F55, 0x0F55 }, +{ 0x0F56, 0x0F56, 0x0F56 }, +{ 0x0F57, 0x0F57, 0x0F57 }, +{ 0x0F58, 0x0F58, 0x0F58 }, +{ 0x0F59, 0x0F59, 0x0F59 }, +{ 0x0F5A, 0x0F5A, 0x0F5A }, +{ 0x0F5B, 0x0F5B, 0x0F5B }, +{ 0x0F5C, 0x0F5C, 0x0F5C }, +{ 0x0F5D, 0x0F5D, 0x0F5D }, +{ 0x0F5E, 0x0F5E, 0x0F5E }, +{ 0x0F5F, 0x0F5F, 0x0F5F }, +{ 0x0F60, 0x0F60, 0x0F60 }, +{ 0x0F61, 0x0F61, 0x0F61 }, +{ 0x0F62, 0x0F62, 0x0F62 }, +{ 0x0F63, 0x0F63, 0x0F63 }, +{ 0x0F64, 0x0F64, 0x0F64 }, +{ 0x0F65, 0x0F65, 0x0F65 }, +{ 0x0F66, 0x0F66, 0x0F66 }, +{ 0x0F67, 0x0F67, 0x0F67 }, +{ 0x0F68, 0x0F68, 0x0F68 }, +{ 0x0F69, 0x0F69, 0x0F69 }, +{ 0x0F6A, 0x0F6A, 0x0F6A }, +{ 0x0F71, 0x0F71, 0x0F71 }, +{ 0x0F72, 0x0F72, 0x0F72 }, +{ 0x0F73, 0x0F73, 0x0F73 }, +{ 0x0F74, 0x0F74, 0x0F74 }, +{ 0x0F75, 0x0F75, 0x0F75 }, +{ 0x0F76, 0x0F76, 0x0F76 }, +{ 0x0F77, 0x0F77, 0x0F77 }, +{ 0x0F78, 0x0F78, 0x0F78 }, +{ 0x0F79, 0x0F79, 0x0F79 }, +{ 0x0F7A, 0x0F7A, 0x0F7A }, +{ 0x0F7B, 0x0F7B, 0x0F7B }, +{ 0x0F7C, 0x0F7C, 0x0F7C }, +{ 0x0F7D, 0x0F7D, 0x0F7D }, +{ 0x0F7E, 0x0F7E, 0x0F7E }, +{ 0x0F80, 0x0F80, 0x0F80 }, +{ 0x0F81, 0x0F81, 0x0F81 }, +{ 0x0F82, 0x0F82, 0x0F82 }, +{ 0x0F83, 0x0F83, 0x0F83 }, +{ 0x0F84, 0x0F84, 0x0F84 }, +{ 0x0F86, 0x0F86, 0x0F86 }, +{ 0x0F87, 0x0F87, 0x0F87 }, +{ 0x0F88, 0x0F88, 0x0F88 }, +{ 0x0F89, 0x0F89, 0x0F89 }, +{ 0x0F8A, 0x0F8A, 0x0F8A }, +{ 0x0F8B, 0x0F8B, 0x0F8B }, +{ 0x0F90, 0x0F90, 0x0F90 }, +{ 0x0F91, 0x0F91, 0x0F91 }, +{ 0x0F92, 0x0F92, 0x0F92 }, +{ 0x0F93, 0x0F93, 0x0F93 }, +{ 0x0F94, 0x0F94, 0x0F94 }, +{ 0x0F95, 0x0F95, 0x0F95 }, +{ 0x0F96, 0x0F96, 0x0F96 }, +{ 0x0F97, 0x0F97, 0x0F97 }, +{ 0x0F99, 0x0F99, 0x0F99 }, +{ 0x0F9A, 0x0F9A, 0x0F9A }, +{ 0x0F9B, 0x0F9B, 0x0F9B }, +{ 0x0F9C, 0x0F9C, 0x0F9C }, +{ 0x0F9D, 0x0F9D, 0x0F9D }, +{ 0x0F9E, 0x0F9E, 0x0F9E }, +{ 0x0F9F, 0x0F9F, 0x0F9F }, +{ 0x0FA0, 0x0FA0, 0x0FA0 }, +{ 0x0FA1, 0x0FA1, 0x0FA1 }, +{ 0x0FA2, 0x0FA2, 0x0FA2 }, +{ 0x0FA3, 0x0FA3, 0x0FA3 }, +{ 0x0FA4, 0x0FA4, 0x0FA4 }, +{ 0x0FA5, 0x0FA5, 0x0FA5 }, +{ 0x0FA6, 0x0FA6, 0x0FA6 }, +{ 0x0FA7, 0x0FA7, 0x0FA7 }, +{ 0x0FA8, 0x0FA8, 0x0FA8 }, +{ 0x0FA9, 0x0FA9, 0x0FA9 }, +{ 0x0FAA, 0x0FAA, 0x0FAA }, +{ 0x0FAB, 0x0FAB, 0x0FAB }, +{ 0x0FAC, 0x0FAC, 0x0FAC }, +{ 0x0FAD, 0x0FAD, 0x0FAD }, +{ 0x0FAE, 0x0FAE, 0x0FAE }, +{ 0x0FAF, 0x0FAF, 0x0FAF }, +{ 0x0FB0, 0x0FB0, 0x0FB0 }, +{ 0x0FB1, 0x0FB1, 0x0FB1 }, +{ 0x0FB2, 0x0FB2, 0x0FB2 }, +{ 0x0FB3, 0x0FB3, 0x0FB3 }, +{ 0x0FB4, 0x0FB4, 0x0FB4 }, +{ 0x0FB5, 0x0FB5, 0x0FB5 }, +{ 0x0FB6, 0x0FB6, 0x0FB6 }, +{ 0x0FB7, 0x0FB7, 0x0FB7 }, +{ 0x0FB8, 0x0FB8, 0x0FB8 }, +{ 0x0FB9, 0x0FB9, 0x0FB9 }, +{ 0x0FBA, 0x0FBA, 0x0FBA }, +{ 0x0FBB, 0x0FBB, 0x0FBB }, +{ 0x0FBC, 0x0FBC, 0x0FBC }, +{ 0x0FC6, 0x0FC6, 0x0FC6 }, +{ 0x1000, 0x1000, 0x1000 }, +{ 0x1001, 0x1001, 0x1001 }, +{ 0x1002, 0x1002, 0x1002 }, +{ 0x1003, 0x1003, 0x1003 }, +{ 0x1004, 0x1004, 0x1004 }, +{ 0x1005, 0x1005, 0x1005 }, +{ 0x1006, 0x1006, 0x1006 }, +{ 0x1007, 0x1007, 0x1007 }, +{ 0x1008, 0x1008, 0x1008 }, +{ 0x1009, 0x1009, 0x1009 }, +{ 0x100A, 0x100A, 0x100A }, +{ 0x100B, 0x100B, 0x100B }, +{ 0x100C, 0x100C, 0x100C }, +{ 0x100D, 0x100D, 0x100D }, +{ 0x100E, 0x100E, 0x100E }, +{ 0x100F, 0x100F, 0x100F }, +{ 0x1010, 0x1010, 0x1010 }, +{ 0x1011, 0x1011, 0x1011 }, +{ 0x1012, 0x1012, 0x1012 }, +{ 0x1013, 0x1013, 0x1013 }, +{ 0x1014, 0x1014, 0x1014 }, +{ 0x1015, 0x1015, 0x1015 }, +{ 0x1016, 0x1016, 0x1016 }, +{ 0x1017, 0x1017, 0x1017 }, +{ 0x1018, 0x1018, 0x1018 }, +{ 0x1019, 0x1019, 0x1019 }, +{ 0x101A, 0x101A, 0x101A }, +{ 0x101B, 0x101B, 0x101B }, +{ 0x101C, 0x101C, 0x101C }, +{ 0x101D, 0x101D, 0x101D }, +{ 0x101E, 0x101E, 0x101E }, +{ 0x101F, 0x101F, 0x101F }, +{ 0x1020, 0x1020, 0x1020 }, +{ 0x1021, 0x1021, 0x1021 }, +{ 0x1023, 0x1023, 0x1023 }, +{ 0x1024, 0x1024, 0x1024 }, +{ 0x1025, 0x1025, 0x1025 }, +{ 0x1026, 0x1026, 0x1026 }, +{ 0x1027, 0x1027, 0x1027 }, +{ 0x1029, 0x1029, 0x1029 }, +{ 0x102A, 0x102A, 0x102A }, +{ 0x102D, 0x102D, 0x102D }, +{ 0x102E, 0x102E, 0x102E }, +{ 0x102F, 0x102F, 0x102F }, +{ 0x1030, 0x1030, 0x1030 }, +{ 0x1032, 0x1032, 0x1032 }, +{ 0x1036, 0x1036, 0x1036 }, +{ 0x1037, 0x1037, 0x1037 }, +{ 0x1039, 0x1039, 0x1039 }, +{ 0x1050, 0x1050, 0x1050 }, +{ 0x1051, 0x1051, 0x1051 }, +{ 0x1052, 0x1052, 0x1052 }, +{ 0x1053, 0x1053, 0x1053 }, +{ 0x1054, 0x1054, 0x1054 }, +{ 0x1055, 0x1055, 0x1055 }, +{ 0x1058, 0x1058, 0x1058 }, +{ 0x1059, 0x1059, 0x1059 }, +{ 0x10A0, 0x10A0, 0x2D00 }, +{ 0x10A1, 0x10A1, 0x2D01 }, +{ 0x10A2, 0x10A2, 0x2D02 }, +{ 0x10A3, 0x10A3, 0x2D03 }, +{ 0x10A4, 0x10A4, 0x2D04 }, +{ 0x10A5, 0x10A5, 0x2D05 }, +{ 0x10A6, 0x10A6, 0x2D06 }, +{ 0x10A7, 0x10A7, 0x2D07 }, +{ 0x10A8, 0x10A8, 0x2D08 }, +{ 0x10A9, 0x10A9, 0x2D09 }, +{ 0x10AA, 0x10AA, 0x2D0A }, +{ 0x10AB, 0x10AB, 0x2D0B }, +{ 0x10AC, 0x10AC, 0x2D0C }, +{ 0x10AD, 0x10AD, 0x2D0D }, +{ 0x10AE, 0x10AE, 0x2D0E }, +{ 0x10AF, 0x10AF, 0x2D0F }, +{ 0x10B0, 0x10B0, 0x2D10 }, +{ 0x10B1, 0x10B1, 0x2D11 }, +{ 0x10B2, 0x10B2, 0x2D12 }, +{ 0x10B3, 0x10B3, 0x2D13 }, +{ 0x10B4, 0x10B4, 0x2D14 }, +{ 0x10B5, 0x10B5, 0x2D15 }, +{ 0x10B6, 0x10B6, 0x2D16 }, +{ 0x10B7, 0x10B7, 0x2D17 }, +{ 0x10B8, 0x10B8, 0x2D18 }, +{ 0x10B9, 0x10B9, 0x2D19 }, +{ 0x10BA, 0x10BA, 0x2D1A }, +{ 0x10BB, 0x10BB, 0x2D1B }, +{ 0x10BC, 0x10BC, 0x2D1C }, +{ 0x10BD, 0x10BD, 0x2D1D }, +{ 0x10BE, 0x10BE, 0x2D1E }, +{ 0x10BF, 0x10BF, 0x2D1F }, +{ 0x10C0, 0x10C0, 0x2D20 }, +{ 0x10C1, 0x10C1, 0x2D21 }, +{ 0x10C2, 0x10C2, 0x2D22 }, +{ 0x10C3, 0x10C3, 0x2D23 }, +{ 0x10C4, 0x10C4, 0x2D24 }, +{ 0x10C5, 0x10C5, 0x2D25 }, +{ 0x10D0, 0x10D0, 0x10D0 }, +{ 0x10D1, 0x10D1, 0x10D1 }, +{ 0x10D2, 0x10D2, 0x10D2 }, +{ 0x10D3, 0x10D3, 0x10D3 }, +{ 0x10D4, 0x10D4, 0x10D4 }, +{ 0x10D5, 0x10D5, 0x10D5 }, +{ 0x10D6, 0x10D6, 0x10D6 }, +{ 0x10D7, 0x10D7, 0x10D7 }, +{ 0x10D8, 0x10D8, 0x10D8 }, +{ 0x10D9, 0x10D9, 0x10D9 }, +{ 0x10DA, 0x10DA, 0x10DA }, +{ 0x10DB, 0x10DB, 0x10DB }, +{ 0x10DC, 0x10DC, 0x10DC }, +{ 0x10DD, 0x10DD, 0x10DD }, +{ 0x10DE, 0x10DE, 0x10DE }, +{ 0x10DF, 0x10DF, 0x10DF }, +{ 0x10E0, 0x10E0, 0x10E0 }, +{ 0x10E1, 0x10E1, 0x10E1 }, +{ 0x10E2, 0x10E2, 0x10E2 }, +{ 0x10E3, 0x10E3, 0x10E3 }, +{ 0x10E4, 0x10E4, 0x10E4 }, +{ 0x10E5, 0x10E5, 0x10E5 }, +{ 0x10E6, 0x10E6, 0x10E6 }, +{ 0x10E7, 0x10E7, 0x10E7 }, +{ 0x10E8, 0x10E8, 0x10E8 }, +{ 0x10E9, 0x10E9, 0x10E9 }, +{ 0x10EA, 0x10EA, 0x10EA }, +{ 0x10EB, 0x10EB, 0x10EB }, +{ 0x10EC, 0x10EC, 0x10EC }, +{ 0x10ED, 0x10ED, 0x10ED }, +{ 0x10EE, 0x10EE, 0x10EE }, +{ 0x10EF, 0x10EF, 0x10EF }, +{ 0x10F0, 0x10F0, 0x10F0 }, +{ 0x10F1, 0x10F1, 0x10F1 }, +{ 0x10F2, 0x10F2, 0x10F2 }, +{ 0x10F3, 0x10F3, 0x10F3 }, +{ 0x10F4, 0x10F4, 0x10F4 }, +{ 0x10F5, 0x10F5, 0x10F5 }, +{ 0x10F6, 0x10F6, 0x10F6 }, +{ 0x10F7, 0x10F7, 0x10F7 }, +{ 0x10F8, 0x10F8, 0x10F8 }, +{ 0x10F9, 0x10F9, 0x10F9 }, +{ 0x10FA, 0x10FA, 0x10FA }, +{ 0x10FC, 0x10FC, 0x10FC }, +{ 0x1100, 0x1100, 0x1100 }, +{ 0x1101, 0x1101, 0x1101 }, +{ 0x1102, 0x1102, 0x1102 }, +{ 0x1103, 0x1103, 0x1103 }, +{ 0x1104, 0x1104, 0x1104 }, +{ 0x1105, 0x1105, 0x1105 }, +{ 0x1106, 0x1106, 0x1106 }, +{ 0x1107, 0x1107, 0x1107 }, +{ 0x1108, 0x1108, 0x1108 }, +{ 0x1109, 0x1109, 0x1109 }, +{ 0x110A, 0x110A, 0x110A }, +{ 0x110B, 0x110B, 0x110B }, +{ 0x110C, 0x110C, 0x110C }, +{ 0x110D, 0x110D, 0x110D }, +{ 0x110E, 0x110E, 0x110E }, +{ 0x110F, 0x110F, 0x110F }, +{ 0x1110, 0x1110, 0x1110 }, +{ 0x1111, 0x1111, 0x1111 }, +{ 0x1112, 0x1112, 0x1112 }, +{ 0x1113, 0x1113, 0x1113 }, +{ 0x1114, 0x1114, 0x1114 }, +{ 0x1115, 0x1115, 0x1115 }, +{ 0x1116, 0x1116, 0x1116 }, +{ 0x1117, 0x1117, 0x1117 }, +{ 0x1118, 0x1118, 0x1118 }, +{ 0x1119, 0x1119, 0x1119 }, +{ 0x111A, 0x111A, 0x111A }, +{ 0x111B, 0x111B, 0x111B }, +{ 0x111C, 0x111C, 0x111C }, +{ 0x111D, 0x111D, 0x111D }, +{ 0x111E, 0x111E, 0x111E }, +{ 0x111F, 0x111F, 0x111F }, +{ 0x1120, 0x1120, 0x1120 }, +{ 0x1121, 0x1121, 0x1121 }, +{ 0x1122, 0x1122, 0x1122 }, +{ 0x1123, 0x1123, 0x1123 }, +{ 0x1124, 0x1124, 0x1124 }, +{ 0x1125, 0x1125, 0x1125 }, +{ 0x1126, 0x1126, 0x1126 }, +{ 0x1127, 0x1127, 0x1127 }, +{ 0x1128, 0x1128, 0x1128 }, +{ 0x1129, 0x1129, 0x1129 }, +{ 0x112A, 0x112A, 0x112A }, +{ 0x112B, 0x112B, 0x112B }, +{ 0x112C, 0x112C, 0x112C }, +{ 0x112D, 0x112D, 0x112D }, +{ 0x112E, 0x112E, 0x112E }, +{ 0x112F, 0x112F, 0x112F }, +{ 0x1130, 0x1130, 0x1130 }, +{ 0x1131, 0x1131, 0x1131 }, +{ 0x1132, 0x1132, 0x1132 }, +{ 0x1133, 0x1133, 0x1133 }, +{ 0x1134, 0x1134, 0x1134 }, +{ 0x1135, 0x1135, 0x1135 }, +{ 0x1136, 0x1136, 0x1136 }, +{ 0x1137, 0x1137, 0x1137 }, +{ 0x1138, 0x1138, 0x1138 }, +{ 0x1139, 0x1139, 0x1139 }, +{ 0x113A, 0x113A, 0x113A }, +{ 0x113B, 0x113B, 0x113B }, +{ 0x113C, 0x113C, 0x113C }, +{ 0x113D, 0x113D, 0x113D }, +{ 0x113E, 0x113E, 0x113E }, +{ 0x113F, 0x113F, 0x113F }, +{ 0x1140, 0x1140, 0x1140 }, +{ 0x1141, 0x1141, 0x1141 }, +{ 0x1142, 0x1142, 0x1142 }, +{ 0x1143, 0x1143, 0x1143 }, +{ 0x1144, 0x1144, 0x1144 }, +{ 0x1145, 0x1145, 0x1145 }, +{ 0x1146, 0x1146, 0x1146 }, +{ 0x1147, 0x1147, 0x1147 }, +{ 0x1148, 0x1148, 0x1148 }, +{ 0x1149, 0x1149, 0x1149 }, +{ 0x114A, 0x114A, 0x114A }, +{ 0x114B, 0x114B, 0x114B }, +{ 0x114C, 0x114C, 0x114C }, +{ 0x114D, 0x114D, 0x114D }, +{ 0x114E, 0x114E, 0x114E }, +{ 0x114F, 0x114F, 0x114F }, +{ 0x1150, 0x1150, 0x1150 }, +{ 0x1151, 0x1151, 0x1151 }, +{ 0x1152, 0x1152, 0x1152 }, +{ 0x1153, 0x1153, 0x1153 }, +{ 0x1154, 0x1154, 0x1154 }, +{ 0x1155, 0x1155, 0x1155 }, +{ 0x1156, 0x1156, 0x1156 }, +{ 0x1157, 0x1157, 0x1157 }, +{ 0x1158, 0x1158, 0x1158 }, +{ 0x1159, 0x1159, 0x1159 }, +{ 0x115F, 0x115F, 0x115F }, +{ 0x1160, 0x1160, 0x1160 }, +{ 0x1161, 0x1161, 0x1161 }, +{ 0x1162, 0x1162, 0x1162 }, +{ 0x1163, 0x1163, 0x1163 }, +{ 0x1164, 0x1164, 0x1164 }, +{ 0x1165, 0x1165, 0x1165 }, +{ 0x1166, 0x1166, 0x1166 }, +{ 0x1167, 0x1167, 0x1167 }, +{ 0x1168, 0x1168, 0x1168 }, +{ 0x1169, 0x1169, 0x1169 }, +{ 0x116A, 0x116A, 0x116A }, +{ 0x116B, 0x116B, 0x116B }, +{ 0x116C, 0x116C, 0x116C }, +{ 0x116D, 0x116D, 0x116D }, +{ 0x116E, 0x116E, 0x116E }, +{ 0x116F, 0x116F, 0x116F }, +{ 0x1170, 0x1170, 0x1170 }, +{ 0x1171, 0x1171, 0x1171 }, +{ 0x1172, 0x1172, 0x1172 }, +{ 0x1173, 0x1173, 0x1173 }, +{ 0x1174, 0x1174, 0x1174 }, +{ 0x1175, 0x1175, 0x1175 }, +{ 0x1176, 0x1176, 0x1176 }, +{ 0x1177, 0x1177, 0x1177 }, +{ 0x1178, 0x1178, 0x1178 }, +{ 0x1179, 0x1179, 0x1179 }, +{ 0x117A, 0x117A, 0x117A }, +{ 0x117B, 0x117B, 0x117B }, +{ 0x117C, 0x117C, 0x117C }, +{ 0x117D, 0x117D, 0x117D }, +{ 0x117E, 0x117E, 0x117E }, +{ 0x117F, 0x117F, 0x117F }, +{ 0x1180, 0x1180, 0x1180 }, +{ 0x1181, 0x1181, 0x1181 }, +{ 0x1182, 0x1182, 0x1182 }, +{ 0x1183, 0x1183, 0x1183 }, +{ 0x1184, 0x1184, 0x1184 }, +{ 0x1185, 0x1185, 0x1185 }, +{ 0x1186, 0x1186, 0x1186 }, +{ 0x1187, 0x1187, 0x1187 }, +{ 0x1188, 0x1188, 0x1188 }, +{ 0x1189, 0x1189, 0x1189 }, +{ 0x118A, 0x118A, 0x118A }, +{ 0x118B, 0x118B, 0x118B }, +{ 0x118C, 0x118C, 0x118C }, +{ 0x118D, 0x118D, 0x118D }, +{ 0x118E, 0x118E, 0x118E }, +{ 0x118F, 0x118F, 0x118F }, +{ 0x1190, 0x1190, 0x1190 }, +{ 0x1191, 0x1191, 0x1191 }, +{ 0x1192, 0x1192, 0x1192 }, +{ 0x1193, 0x1193, 0x1193 }, +{ 0x1194, 0x1194, 0x1194 }, +{ 0x1195, 0x1195, 0x1195 }, +{ 0x1196, 0x1196, 0x1196 }, +{ 0x1197, 0x1197, 0x1197 }, +{ 0x1198, 0x1198, 0x1198 }, +{ 0x1199, 0x1199, 0x1199 }, +{ 0x119A, 0x119A, 0x119A }, +{ 0x119B, 0x119B, 0x119B }, +{ 0x119C, 0x119C, 0x119C }, +{ 0x119D, 0x119D, 0x119D }, +{ 0x119E, 0x119E, 0x119E }, +{ 0x119F, 0x119F, 0x119F }, +{ 0x11A0, 0x11A0, 0x11A0 }, +{ 0x11A1, 0x11A1, 0x11A1 }, +{ 0x11A2, 0x11A2, 0x11A2 }, +{ 0x11A8, 0x11A8, 0x11A8 }, +{ 0x11A9, 0x11A9, 0x11A9 }, +{ 0x11AA, 0x11AA, 0x11AA }, +{ 0x11AB, 0x11AB, 0x11AB }, +{ 0x11AC, 0x11AC, 0x11AC }, +{ 0x11AD, 0x11AD, 0x11AD }, +{ 0x11AE, 0x11AE, 0x11AE }, +{ 0x11AF, 0x11AF, 0x11AF }, +{ 0x11B0, 0x11B0, 0x11B0 }, +{ 0x11B1, 0x11B1, 0x11B1 }, +{ 0x11B2, 0x11B2, 0x11B2 }, +{ 0x11B3, 0x11B3, 0x11B3 }, +{ 0x11B4, 0x11B4, 0x11B4 }, +{ 0x11B5, 0x11B5, 0x11B5 }, +{ 0x11B6, 0x11B6, 0x11B6 }, +{ 0x11B7, 0x11B7, 0x11B7 }, +{ 0x11B8, 0x11B8, 0x11B8 }, +{ 0x11B9, 0x11B9, 0x11B9 }, +{ 0x11BA, 0x11BA, 0x11BA }, +{ 0x11BB, 0x11BB, 0x11BB }, +{ 0x11BC, 0x11BC, 0x11BC }, +{ 0x11BD, 0x11BD, 0x11BD }, +{ 0x11BE, 0x11BE, 0x11BE }, +{ 0x11BF, 0x11BF, 0x11BF }, +{ 0x11C0, 0x11C0, 0x11C0 }, +{ 0x11C1, 0x11C1, 0x11C1 }, +{ 0x11C2, 0x11C2, 0x11C2 }, +{ 0x11C3, 0x11C3, 0x11C3 }, +{ 0x11C4, 0x11C4, 0x11C4 }, +{ 0x11C5, 0x11C5, 0x11C5 }, +{ 0x11C6, 0x11C6, 0x11C6 }, +{ 0x11C7, 0x11C7, 0x11C7 }, +{ 0x11C8, 0x11C8, 0x11C8 }, +{ 0x11C9, 0x11C9, 0x11C9 }, +{ 0x11CA, 0x11CA, 0x11CA }, +{ 0x11CB, 0x11CB, 0x11CB }, +{ 0x11CC, 0x11CC, 0x11CC }, +{ 0x11CD, 0x11CD, 0x11CD }, +{ 0x11CE, 0x11CE, 0x11CE }, +{ 0x11CF, 0x11CF, 0x11CF }, +{ 0x11D0, 0x11D0, 0x11D0 }, +{ 0x11D1, 0x11D1, 0x11D1 }, +{ 0x11D2, 0x11D2, 0x11D2 }, +{ 0x11D3, 0x11D3, 0x11D3 }, +{ 0x11D4, 0x11D4, 0x11D4 }, +{ 0x11D5, 0x11D5, 0x11D5 }, +{ 0x11D6, 0x11D6, 0x11D6 }, +{ 0x11D7, 0x11D7, 0x11D7 }, +{ 0x11D8, 0x11D8, 0x11D8 }, +{ 0x11D9, 0x11D9, 0x11D9 }, +{ 0x11DA, 0x11DA, 0x11DA }, +{ 0x11DB, 0x11DB, 0x11DB }, +{ 0x11DC, 0x11DC, 0x11DC }, +{ 0x11DD, 0x11DD, 0x11DD }, +{ 0x11DE, 0x11DE, 0x11DE }, +{ 0x11DF, 0x11DF, 0x11DF }, +{ 0x11E0, 0x11E0, 0x11E0 }, +{ 0x11E1, 0x11E1, 0x11E1 }, +{ 0x11E2, 0x11E2, 0x11E2 }, +{ 0x11E3, 0x11E3, 0x11E3 }, +{ 0x11E4, 0x11E4, 0x11E4 }, +{ 0x11E5, 0x11E5, 0x11E5 }, +{ 0x11E6, 0x11E6, 0x11E6 }, +{ 0x11E7, 0x11E7, 0x11E7 }, +{ 0x11E8, 0x11E8, 0x11E8 }, +{ 0x11E9, 0x11E9, 0x11E9 }, +{ 0x11EA, 0x11EA, 0x11EA }, +{ 0x11EB, 0x11EB, 0x11EB }, +{ 0x11EC, 0x11EC, 0x11EC }, +{ 0x11ED, 0x11ED, 0x11ED }, +{ 0x11EE, 0x11EE, 0x11EE }, +{ 0x11EF, 0x11EF, 0x11EF }, +{ 0x11F0, 0x11F0, 0x11F0 }, +{ 0x11F1, 0x11F1, 0x11F1 }, +{ 0x11F2, 0x11F2, 0x11F2 }, +{ 0x11F3, 0x11F3, 0x11F3 }, +{ 0x11F4, 0x11F4, 0x11F4 }, +{ 0x11F5, 0x11F5, 0x11F5 }, +{ 0x11F6, 0x11F6, 0x11F6 }, +{ 0x11F7, 0x11F7, 0x11F7 }, +{ 0x11F8, 0x11F8, 0x11F8 }, +{ 0x11F9, 0x11F9, 0x11F9 }, +{ 0x1200, 0x1200, 0x1200 }, +{ 0x1201, 0x1201, 0x1201 }, +{ 0x1202, 0x1202, 0x1202 }, +{ 0x1203, 0x1203, 0x1203 }, +{ 0x1204, 0x1204, 0x1204 }, +{ 0x1205, 0x1205, 0x1205 }, +{ 0x1206, 0x1206, 0x1206 }, +{ 0x1207, 0x1207, 0x1207 }, +{ 0x1208, 0x1208, 0x1208 }, +{ 0x1209, 0x1209, 0x1209 }, +{ 0x120A, 0x120A, 0x120A }, +{ 0x120B, 0x120B, 0x120B }, +{ 0x120C, 0x120C, 0x120C }, +{ 0x120D, 0x120D, 0x120D }, +{ 0x120E, 0x120E, 0x120E }, +{ 0x120F, 0x120F, 0x120F }, +{ 0x1210, 0x1210, 0x1210 }, +{ 0x1211, 0x1211, 0x1211 }, +{ 0x1212, 0x1212, 0x1212 }, +{ 0x1213, 0x1213, 0x1213 }, +{ 0x1214, 0x1214, 0x1214 }, +{ 0x1215, 0x1215, 0x1215 }, +{ 0x1216, 0x1216, 0x1216 }, +{ 0x1217, 0x1217, 0x1217 }, +{ 0x1218, 0x1218, 0x1218 }, +{ 0x1219, 0x1219, 0x1219 }, +{ 0x121A, 0x121A, 0x121A }, +{ 0x121B, 0x121B, 0x121B }, +{ 0x121C, 0x121C, 0x121C }, +{ 0x121D, 0x121D, 0x121D }, +{ 0x121E, 0x121E, 0x121E }, +{ 0x121F, 0x121F, 0x121F }, +{ 0x1220, 0x1220, 0x1220 }, +{ 0x1221, 0x1221, 0x1221 }, +{ 0x1222, 0x1222, 0x1222 }, +{ 0x1223, 0x1223, 0x1223 }, +{ 0x1224, 0x1224, 0x1224 }, +{ 0x1225, 0x1225, 0x1225 }, +{ 0x1226, 0x1226, 0x1226 }, +{ 0x1227, 0x1227, 0x1227 }, +{ 0x1228, 0x1228, 0x1228 }, +{ 0x1229, 0x1229, 0x1229 }, +{ 0x122A, 0x122A, 0x122A }, +{ 0x122B, 0x122B, 0x122B }, +{ 0x122C, 0x122C, 0x122C }, +{ 0x122D, 0x122D, 0x122D }, +{ 0x122E, 0x122E, 0x122E }, +{ 0x122F, 0x122F, 0x122F }, +{ 0x1230, 0x1230, 0x1230 }, +{ 0x1231, 0x1231, 0x1231 }, +{ 0x1232, 0x1232, 0x1232 }, +{ 0x1233, 0x1233, 0x1233 }, +{ 0x1234, 0x1234, 0x1234 }, +{ 0x1235, 0x1235, 0x1235 }, +{ 0x1236, 0x1236, 0x1236 }, +{ 0x1237, 0x1237, 0x1237 }, +{ 0x1238, 0x1238, 0x1238 }, +{ 0x1239, 0x1239, 0x1239 }, +{ 0x123A, 0x123A, 0x123A }, +{ 0x123B, 0x123B, 0x123B }, +{ 0x123C, 0x123C, 0x123C }, +{ 0x123D, 0x123D, 0x123D }, +{ 0x123E, 0x123E, 0x123E }, +{ 0x123F, 0x123F, 0x123F }, +{ 0x1240, 0x1240, 0x1240 }, +{ 0x1241, 0x1241, 0x1241 }, +{ 0x1242, 0x1242, 0x1242 }, +{ 0x1243, 0x1243, 0x1243 }, +{ 0x1244, 0x1244, 0x1244 }, +{ 0x1245, 0x1245, 0x1245 }, +{ 0x1246, 0x1246, 0x1246 }, +{ 0x1247, 0x1247, 0x1247 }, +{ 0x1248, 0x1248, 0x1248 }, +{ 0x124A, 0x124A, 0x124A }, +{ 0x124B, 0x124B, 0x124B }, +{ 0x124C, 0x124C, 0x124C }, +{ 0x124D, 0x124D, 0x124D }, +{ 0x1250, 0x1250, 0x1250 }, +{ 0x1251, 0x1251, 0x1251 }, +{ 0x1252, 0x1252, 0x1252 }, +{ 0x1253, 0x1253, 0x1253 }, +{ 0x1254, 0x1254, 0x1254 }, +{ 0x1255, 0x1255, 0x1255 }, +{ 0x1256, 0x1256, 0x1256 }, +{ 0x1258, 0x1258, 0x1258 }, +{ 0x125A, 0x125A, 0x125A }, +{ 0x125B, 0x125B, 0x125B }, +{ 0x125C, 0x125C, 0x125C }, +{ 0x125D, 0x125D, 0x125D }, +{ 0x1260, 0x1260, 0x1260 }, +{ 0x1261, 0x1261, 0x1261 }, +{ 0x1262, 0x1262, 0x1262 }, +{ 0x1263, 0x1263, 0x1263 }, +{ 0x1264, 0x1264, 0x1264 }, +{ 0x1265, 0x1265, 0x1265 }, +{ 0x1266, 0x1266, 0x1266 }, +{ 0x1267, 0x1267, 0x1267 }, +{ 0x1268, 0x1268, 0x1268 }, +{ 0x1269, 0x1269, 0x1269 }, +{ 0x126A, 0x126A, 0x126A }, +{ 0x126B, 0x126B, 0x126B }, +{ 0x126C, 0x126C, 0x126C }, +{ 0x126D, 0x126D, 0x126D }, +{ 0x126E, 0x126E, 0x126E }, +{ 0x126F, 0x126F, 0x126F }, +{ 0x1270, 0x1270, 0x1270 }, +{ 0x1271, 0x1271, 0x1271 }, +{ 0x1272, 0x1272, 0x1272 }, +{ 0x1273, 0x1273, 0x1273 }, +{ 0x1274, 0x1274, 0x1274 }, +{ 0x1275, 0x1275, 0x1275 }, +{ 0x1276, 0x1276, 0x1276 }, +{ 0x1277, 0x1277, 0x1277 }, +{ 0x1278, 0x1278, 0x1278 }, +{ 0x1279, 0x1279, 0x1279 }, +{ 0x127A, 0x127A, 0x127A }, +{ 0x127B, 0x127B, 0x127B }, +{ 0x127C, 0x127C, 0x127C }, +{ 0x127D, 0x127D, 0x127D }, +{ 0x127E, 0x127E, 0x127E }, +{ 0x127F, 0x127F, 0x127F }, +{ 0x1280, 0x1280, 0x1280 }, +{ 0x1281, 0x1281, 0x1281 }, +{ 0x1282, 0x1282, 0x1282 }, +{ 0x1283, 0x1283, 0x1283 }, +{ 0x1284, 0x1284, 0x1284 }, +{ 0x1285, 0x1285, 0x1285 }, +{ 0x1286, 0x1286, 0x1286 }, +{ 0x1287, 0x1287, 0x1287 }, +{ 0x1288, 0x1288, 0x1288 }, +{ 0x128A, 0x128A, 0x128A }, +{ 0x128B, 0x128B, 0x128B }, +{ 0x128C, 0x128C, 0x128C }, +{ 0x128D, 0x128D, 0x128D }, +{ 0x1290, 0x1290, 0x1290 }, +{ 0x1291, 0x1291, 0x1291 }, +{ 0x1292, 0x1292, 0x1292 }, +{ 0x1293, 0x1293, 0x1293 }, +{ 0x1294, 0x1294, 0x1294 }, +{ 0x1295, 0x1295, 0x1295 }, +{ 0x1296, 0x1296, 0x1296 }, +{ 0x1297, 0x1297, 0x1297 }, +{ 0x1298, 0x1298, 0x1298 }, +{ 0x1299, 0x1299, 0x1299 }, +{ 0x129A, 0x129A, 0x129A }, +{ 0x129B, 0x129B, 0x129B }, +{ 0x129C, 0x129C, 0x129C }, +{ 0x129D, 0x129D, 0x129D }, +{ 0x129E, 0x129E, 0x129E }, +{ 0x129F, 0x129F, 0x129F }, +{ 0x12A0, 0x12A0, 0x12A0 }, +{ 0x12A1, 0x12A1, 0x12A1 }, +{ 0x12A2, 0x12A2, 0x12A2 }, +{ 0x12A3, 0x12A3, 0x12A3 }, +{ 0x12A4, 0x12A4, 0x12A4 }, +{ 0x12A5, 0x12A5, 0x12A5 }, +{ 0x12A6, 0x12A6, 0x12A6 }, +{ 0x12A7, 0x12A7, 0x12A7 }, +{ 0x12A8, 0x12A8, 0x12A8 }, +{ 0x12A9, 0x12A9, 0x12A9 }, +{ 0x12AA, 0x12AA, 0x12AA }, +{ 0x12AB, 0x12AB, 0x12AB }, +{ 0x12AC, 0x12AC, 0x12AC }, +{ 0x12AD, 0x12AD, 0x12AD }, +{ 0x12AE, 0x12AE, 0x12AE }, +{ 0x12AF, 0x12AF, 0x12AF }, +{ 0x12B0, 0x12B0, 0x12B0 }, +{ 0x12B2, 0x12B2, 0x12B2 }, +{ 0x12B3, 0x12B3, 0x12B3 }, +{ 0x12B4, 0x12B4, 0x12B4 }, +{ 0x12B5, 0x12B5, 0x12B5 }, +{ 0x12B8, 0x12B8, 0x12B8 }, +{ 0x12B9, 0x12B9, 0x12B9 }, +{ 0x12BA, 0x12BA, 0x12BA }, +{ 0x12BB, 0x12BB, 0x12BB }, +{ 0x12BC, 0x12BC, 0x12BC }, +{ 0x12BD, 0x12BD, 0x12BD }, +{ 0x12BE, 0x12BE, 0x12BE }, +{ 0x12C0, 0x12C0, 0x12C0 }, +{ 0x12C2, 0x12C2, 0x12C2 }, +{ 0x12C3, 0x12C3, 0x12C3 }, +{ 0x12C4, 0x12C4, 0x12C4 }, +{ 0x12C5, 0x12C5, 0x12C5 }, +{ 0x12C8, 0x12C8, 0x12C8 }, +{ 0x12C9, 0x12C9, 0x12C9 }, +{ 0x12CA, 0x12CA, 0x12CA }, +{ 0x12CB, 0x12CB, 0x12CB }, +{ 0x12CC, 0x12CC, 0x12CC }, +{ 0x12CD, 0x12CD, 0x12CD }, +{ 0x12CE, 0x12CE, 0x12CE }, +{ 0x12CF, 0x12CF, 0x12CF }, +{ 0x12D0, 0x12D0, 0x12D0 }, +{ 0x12D1, 0x12D1, 0x12D1 }, +{ 0x12D2, 0x12D2, 0x12D2 }, +{ 0x12D3, 0x12D3, 0x12D3 }, +{ 0x12D4, 0x12D4, 0x12D4 }, +{ 0x12D5, 0x12D5, 0x12D5 }, +{ 0x12D6, 0x12D6, 0x12D6 }, +{ 0x12D8, 0x12D8, 0x12D8 }, +{ 0x12D9, 0x12D9, 0x12D9 }, +{ 0x12DA, 0x12DA, 0x12DA }, +{ 0x12DB, 0x12DB, 0x12DB }, +{ 0x12DC, 0x12DC, 0x12DC }, +{ 0x12DD, 0x12DD, 0x12DD }, +{ 0x12DE, 0x12DE, 0x12DE }, +{ 0x12DF, 0x12DF, 0x12DF }, +{ 0x12E0, 0x12E0, 0x12E0 }, +{ 0x12E1, 0x12E1, 0x12E1 }, +{ 0x12E2, 0x12E2, 0x12E2 }, +{ 0x12E3, 0x12E3, 0x12E3 }, +{ 0x12E4, 0x12E4, 0x12E4 }, +{ 0x12E5, 0x12E5, 0x12E5 }, +{ 0x12E6, 0x12E6, 0x12E6 }, +{ 0x12E7, 0x12E7, 0x12E7 }, +{ 0x12E8, 0x12E8, 0x12E8 }, +{ 0x12E9, 0x12E9, 0x12E9 }, +{ 0x12EA, 0x12EA, 0x12EA }, +{ 0x12EB, 0x12EB, 0x12EB }, +{ 0x12EC, 0x12EC, 0x12EC }, +{ 0x12ED, 0x12ED, 0x12ED }, +{ 0x12EE, 0x12EE, 0x12EE }, +{ 0x12EF, 0x12EF, 0x12EF }, +{ 0x12F0, 0x12F0, 0x12F0 }, +{ 0x12F1, 0x12F1, 0x12F1 }, +{ 0x12F2, 0x12F2, 0x12F2 }, +{ 0x12F3, 0x12F3, 0x12F3 }, +{ 0x12F4, 0x12F4, 0x12F4 }, +{ 0x12F5, 0x12F5, 0x12F5 }, +{ 0x12F6, 0x12F6, 0x12F6 }, +{ 0x12F7, 0x12F7, 0x12F7 }, +{ 0x12F8, 0x12F8, 0x12F8 }, +{ 0x12F9, 0x12F9, 0x12F9 }, +{ 0x12FA, 0x12FA, 0x12FA }, +{ 0x12FB, 0x12FB, 0x12FB }, +{ 0x12FC, 0x12FC, 0x12FC }, +{ 0x12FD, 0x12FD, 0x12FD }, +{ 0x12FE, 0x12FE, 0x12FE }, +{ 0x12FF, 0x12FF, 0x12FF }, +{ 0x1300, 0x1300, 0x1300 }, +{ 0x1301, 0x1301, 0x1301 }, +{ 0x1302, 0x1302, 0x1302 }, +{ 0x1303, 0x1303, 0x1303 }, +{ 0x1304, 0x1304, 0x1304 }, +{ 0x1305, 0x1305, 0x1305 }, +{ 0x1306, 0x1306, 0x1306 }, +{ 0x1307, 0x1307, 0x1307 }, +{ 0x1308, 0x1308, 0x1308 }, +{ 0x1309, 0x1309, 0x1309 }, +{ 0x130A, 0x130A, 0x130A }, +{ 0x130B, 0x130B, 0x130B }, +{ 0x130C, 0x130C, 0x130C }, +{ 0x130D, 0x130D, 0x130D }, +{ 0x130E, 0x130E, 0x130E }, +{ 0x130F, 0x130F, 0x130F }, +{ 0x1310, 0x1310, 0x1310 }, +{ 0x1312, 0x1312, 0x1312 }, +{ 0x1313, 0x1313, 0x1313 }, +{ 0x1314, 0x1314, 0x1314 }, +{ 0x1315, 0x1315, 0x1315 }, +{ 0x1318, 0x1318, 0x1318 }, +{ 0x1319, 0x1319, 0x1319 }, +{ 0x131A, 0x131A, 0x131A }, +{ 0x131B, 0x131B, 0x131B }, +{ 0x131C, 0x131C, 0x131C }, +{ 0x131D, 0x131D, 0x131D }, +{ 0x131E, 0x131E, 0x131E }, +{ 0x131F, 0x131F, 0x131F }, +{ 0x1320, 0x1320, 0x1320 }, +{ 0x1321, 0x1321, 0x1321 }, +{ 0x1322, 0x1322, 0x1322 }, +{ 0x1323, 0x1323, 0x1323 }, +{ 0x1324, 0x1324, 0x1324 }, +{ 0x1325, 0x1325, 0x1325 }, +{ 0x1326, 0x1326, 0x1326 }, +{ 0x1327, 0x1327, 0x1327 }, +{ 0x1328, 0x1328, 0x1328 }, +{ 0x1329, 0x1329, 0x1329 }, +{ 0x132A, 0x132A, 0x132A }, +{ 0x132B, 0x132B, 0x132B }, +{ 0x132C, 0x132C, 0x132C }, +{ 0x132D, 0x132D, 0x132D }, +{ 0x132E, 0x132E, 0x132E }, +{ 0x132F, 0x132F, 0x132F }, +{ 0x1330, 0x1330, 0x1330 }, +{ 0x1331, 0x1331, 0x1331 }, +{ 0x1332, 0x1332, 0x1332 }, +{ 0x1333, 0x1333, 0x1333 }, +{ 0x1334, 0x1334, 0x1334 }, +{ 0x1335, 0x1335, 0x1335 }, +{ 0x1336, 0x1336, 0x1336 }, +{ 0x1337, 0x1337, 0x1337 }, +{ 0x1338, 0x1338, 0x1338 }, +{ 0x1339, 0x1339, 0x1339 }, +{ 0x133A, 0x133A, 0x133A }, +{ 0x133B, 0x133B, 0x133B }, +{ 0x133C, 0x133C, 0x133C }, +{ 0x133D, 0x133D, 0x133D }, +{ 0x133E, 0x133E, 0x133E }, +{ 0x133F, 0x133F, 0x133F }, +{ 0x1340, 0x1340, 0x1340 }, +{ 0x1341, 0x1341, 0x1341 }, +{ 0x1342, 0x1342, 0x1342 }, +{ 0x1343, 0x1343, 0x1343 }, +{ 0x1344, 0x1344, 0x1344 }, +{ 0x1345, 0x1345, 0x1345 }, +{ 0x1346, 0x1346, 0x1346 }, +{ 0x1347, 0x1347, 0x1347 }, +{ 0x1348, 0x1348, 0x1348 }, +{ 0x1349, 0x1349, 0x1349 }, +{ 0x134A, 0x134A, 0x134A }, +{ 0x134B, 0x134B, 0x134B }, +{ 0x134C, 0x134C, 0x134C }, +{ 0x134D, 0x134D, 0x134D }, +{ 0x134E, 0x134E, 0x134E }, +{ 0x134F, 0x134F, 0x134F }, +{ 0x1350, 0x1350, 0x1350 }, +{ 0x1351, 0x1351, 0x1351 }, +{ 0x1352, 0x1352, 0x1352 }, +{ 0x1353, 0x1353, 0x1353 }, +{ 0x1354, 0x1354, 0x1354 }, +{ 0x1355, 0x1355, 0x1355 }, +{ 0x1356, 0x1356, 0x1356 }, +{ 0x1357, 0x1357, 0x1357 }, +{ 0x1358, 0x1358, 0x1358 }, +{ 0x1359, 0x1359, 0x1359 }, +{ 0x135A, 0x135A, 0x135A }, +{ 0x135F, 0x135F, 0x135F }, +{ 0x1380, 0x1380, 0x1380 }, +{ 0x1381, 0x1381, 0x1381 }, +{ 0x1382, 0x1382, 0x1382 }, +{ 0x1383, 0x1383, 0x1383 }, +{ 0x1384, 0x1384, 0x1384 }, +{ 0x1385, 0x1385, 0x1385 }, +{ 0x1386, 0x1386, 0x1386 }, +{ 0x1387, 0x1387, 0x1387 }, +{ 0x1388, 0x1388, 0x1388 }, +{ 0x1389, 0x1389, 0x1389 }, +{ 0x138A, 0x138A, 0x138A }, +{ 0x138B, 0x138B, 0x138B }, +{ 0x138C, 0x138C, 0x138C }, +{ 0x138D, 0x138D, 0x138D }, +{ 0x138E, 0x138E, 0x138E }, +{ 0x138F, 0x138F, 0x138F }, +{ 0x13A0, 0x13A0, 0x13A0 }, +{ 0x13A1, 0x13A1, 0x13A1 }, +{ 0x13A2, 0x13A2, 0x13A2 }, +{ 0x13A3, 0x13A3, 0x13A3 }, +{ 0x13A4, 0x13A4, 0x13A4 }, +{ 0x13A5, 0x13A5, 0x13A5 }, +{ 0x13A6, 0x13A6, 0x13A6 }, +{ 0x13A7, 0x13A7, 0x13A7 }, +{ 0x13A8, 0x13A8, 0x13A8 }, +{ 0x13A9, 0x13A9, 0x13A9 }, +{ 0x13AA, 0x13AA, 0x13AA }, +{ 0x13AB, 0x13AB, 0x13AB }, +{ 0x13AC, 0x13AC, 0x13AC }, +{ 0x13AD, 0x13AD, 0x13AD }, +{ 0x13AE, 0x13AE, 0x13AE }, +{ 0x13AF, 0x13AF, 0x13AF }, +{ 0x13B0, 0x13B0, 0x13B0 }, +{ 0x13B1, 0x13B1, 0x13B1 }, +{ 0x13B2, 0x13B2, 0x13B2 }, +{ 0x13B3, 0x13B3, 0x13B3 }, +{ 0x13B4, 0x13B4, 0x13B4 }, +{ 0x13B5, 0x13B5, 0x13B5 }, +{ 0x13B6, 0x13B6, 0x13B6 }, +{ 0x13B7, 0x13B7, 0x13B7 }, +{ 0x13B8, 0x13B8, 0x13B8 }, +{ 0x13B9, 0x13B9, 0x13B9 }, +{ 0x13BA, 0x13BA, 0x13BA }, +{ 0x13BB, 0x13BB, 0x13BB }, +{ 0x13BC, 0x13BC, 0x13BC }, +{ 0x13BD, 0x13BD, 0x13BD }, +{ 0x13BE, 0x13BE, 0x13BE }, +{ 0x13BF, 0x13BF, 0x13BF }, +{ 0x13C0, 0x13C0, 0x13C0 }, +{ 0x13C1, 0x13C1, 0x13C1 }, +{ 0x13C2, 0x13C2, 0x13C2 }, +{ 0x13C3, 0x13C3, 0x13C3 }, +{ 0x13C4, 0x13C4, 0x13C4 }, +{ 0x13C5, 0x13C5, 0x13C5 }, +{ 0x13C6, 0x13C6, 0x13C6 }, +{ 0x13C7, 0x13C7, 0x13C7 }, +{ 0x13C8, 0x13C8, 0x13C8 }, +{ 0x13C9, 0x13C9, 0x13C9 }, +{ 0x13CA, 0x13CA, 0x13CA }, +{ 0x13CB, 0x13CB, 0x13CB }, +{ 0x13CC, 0x13CC, 0x13CC }, +{ 0x13CD, 0x13CD, 0x13CD }, +{ 0x13CE, 0x13CE, 0x13CE }, +{ 0x13CF, 0x13CF, 0x13CF }, +{ 0x13D0, 0x13D0, 0x13D0 }, +{ 0x13D1, 0x13D1, 0x13D1 }, +{ 0x13D2, 0x13D2, 0x13D2 }, +{ 0x13D3, 0x13D3, 0x13D3 }, +{ 0x13D4, 0x13D4, 0x13D4 }, +{ 0x13D5, 0x13D5, 0x13D5 }, +{ 0x13D6, 0x13D6, 0x13D6 }, +{ 0x13D7, 0x13D7, 0x13D7 }, +{ 0x13D8, 0x13D8, 0x13D8 }, +{ 0x13D9, 0x13D9, 0x13D9 }, +{ 0x13DA, 0x13DA, 0x13DA }, +{ 0x13DB, 0x13DB, 0x13DB }, +{ 0x13DC, 0x13DC, 0x13DC }, +{ 0x13DD, 0x13DD, 0x13DD }, +{ 0x13DE, 0x13DE, 0x13DE }, +{ 0x13DF, 0x13DF, 0x13DF }, +{ 0x13E0, 0x13E0, 0x13E0 }, +{ 0x13E1, 0x13E1, 0x13E1 }, +{ 0x13E2, 0x13E2, 0x13E2 }, +{ 0x13E3, 0x13E3, 0x13E3 }, +{ 0x13E4, 0x13E4, 0x13E4 }, +{ 0x13E5, 0x13E5, 0x13E5 }, +{ 0x13E6, 0x13E6, 0x13E6 }, +{ 0x13E7, 0x13E7, 0x13E7 }, +{ 0x13E8, 0x13E8, 0x13E8 }, +{ 0x13E9, 0x13E9, 0x13E9 }, +{ 0x13EA, 0x13EA, 0x13EA }, +{ 0x13EB, 0x13EB, 0x13EB }, +{ 0x13EC, 0x13EC, 0x13EC }, +{ 0x13ED, 0x13ED, 0x13ED }, +{ 0x13EE, 0x13EE, 0x13EE }, +{ 0x13EF, 0x13EF, 0x13EF }, +{ 0x13F0, 0x13F0, 0x13F0 }, +{ 0x13F1, 0x13F1, 0x13F1 }, +{ 0x13F2, 0x13F2, 0x13F2 }, +{ 0x13F3, 0x13F3, 0x13F3 }, +{ 0x13F4, 0x13F4, 0x13F4 }, +{ 0x1401, 0x1401, 0x1401 }, +{ 0x1402, 0x1402, 0x1402 }, +{ 0x1403, 0x1403, 0x1403 }, +{ 0x1404, 0x1404, 0x1404 }, +{ 0x1405, 0x1405, 0x1405 }, +{ 0x1406, 0x1406, 0x1406 }, +{ 0x1407, 0x1407, 0x1407 }, +{ 0x1408, 0x1408, 0x1408 }, +{ 0x1409, 0x1409, 0x1409 }, +{ 0x140A, 0x140A, 0x140A }, +{ 0x140B, 0x140B, 0x140B }, +{ 0x140C, 0x140C, 0x140C }, +{ 0x140D, 0x140D, 0x140D }, +{ 0x140E, 0x140E, 0x140E }, +{ 0x140F, 0x140F, 0x140F }, +{ 0x1410, 0x1410, 0x1410 }, +{ 0x1411, 0x1411, 0x1411 }, +{ 0x1412, 0x1412, 0x1412 }, +{ 0x1413, 0x1413, 0x1413 }, +{ 0x1414, 0x1414, 0x1414 }, +{ 0x1415, 0x1415, 0x1415 }, +{ 0x1416, 0x1416, 0x1416 }, +{ 0x1417, 0x1417, 0x1417 }, +{ 0x1418, 0x1418, 0x1418 }, +{ 0x1419, 0x1419, 0x1419 }, +{ 0x141A, 0x141A, 0x141A }, +{ 0x141B, 0x141B, 0x141B }, +{ 0x141C, 0x141C, 0x141C }, +{ 0x141D, 0x141D, 0x141D }, +{ 0x141E, 0x141E, 0x141E }, +{ 0x141F, 0x141F, 0x141F }, +{ 0x1420, 0x1420, 0x1420 }, +{ 0x1421, 0x1421, 0x1421 }, +{ 0x1422, 0x1422, 0x1422 }, +{ 0x1423, 0x1423, 0x1423 }, +{ 0x1424, 0x1424, 0x1424 }, +{ 0x1425, 0x1425, 0x1425 }, +{ 0x1426, 0x1426, 0x1426 }, +{ 0x1427, 0x1427, 0x1427 }, +{ 0x1428, 0x1428, 0x1428 }, +{ 0x1429, 0x1429, 0x1429 }, +{ 0x142A, 0x142A, 0x142A }, +{ 0x142B, 0x142B, 0x142B }, +{ 0x142C, 0x142C, 0x142C }, +{ 0x142D, 0x142D, 0x142D }, +{ 0x142E, 0x142E, 0x142E }, +{ 0x142F, 0x142F, 0x142F }, +{ 0x1430, 0x1430, 0x1430 }, +{ 0x1431, 0x1431, 0x1431 }, +{ 0x1432, 0x1432, 0x1432 }, +{ 0x1433, 0x1433, 0x1433 }, +{ 0x1434, 0x1434, 0x1434 }, +{ 0x1435, 0x1435, 0x1435 }, +{ 0x1436, 0x1436, 0x1436 }, +{ 0x1437, 0x1437, 0x1437 }, +{ 0x1438, 0x1438, 0x1438 }, +{ 0x1439, 0x1439, 0x1439 }, +{ 0x143A, 0x143A, 0x143A }, +{ 0x143B, 0x143B, 0x143B }, +{ 0x143C, 0x143C, 0x143C }, +{ 0x143D, 0x143D, 0x143D }, +{ 0x143E, 0x143E, 0x143E }, +{ 0x143F, 0x143F, 0x143F }, +{ 0x1440, 0x1440, 0x1440 }, +{ 0x1441, 0x1441, 0x1441 }, +{ 0x1442, 0x1442, 0x1442 }, +{ 0x1443, 0x1443, 0x1443 }, +{ 0x1444, 0x1444, 0x1444 }, +{ 0x1445, 0x1445, 0x1445 }, +{ 0x1446, 0x1446, 0x1446 }, +{ 0x1447, 0x1447, 0x1447 }, +{ 0x1448, 0x1448, 0x1448 }, +{ 0x1449, 0x1449, 0x1449 }, +{ 0x144A, 0x144A, 0x144A }, +{ 0x144B, 0x144B, 0x144B }, +{ 0x144C, 0x144C, 0x144C }, +{ 0x144D, 0x144D, 0x144D }, +{ 0x144E, 0x144E, 0x144E }, +{ 0x144F, 0x144F, 0x144F }, +{ 0x1450, 0x1450, 0x1450 }, +{ 0x1451, 0x1451, 0x1451 }, +{ 0x1452, 0x1452, 0x1452 }, +{ 0x1453, 0x1453, 0x1453 }, +{ 0x1454, 0x1454, 0x1454 }, +{ 0x1455, 0x1455, 0x1455 }, +{ 0x1456, 0x1456, 0x1456 }, +{ 0x1457, 0x1457, 0x1457 }, +{ 0x1458, 0x1458, 0x1458 }, +{ 0x1459, 0x1459, 0x1459 }, +{ 0x145A, 0x145A, 0x145A }, +{ 0x145B, 0x145B, 0x145B }, +{ 0x145C, 0x145C, 0x145C }, +{ 0x145D, 0x145D, 0x145D }, +{ 0x145E, 0x145E, 0x145E }, +{ 0x145F, 0x145F, 0x145F }, +{ 0x1460, 0x1460, 0x1460 }, +{ 0x1461, 0x1461, 0x1461 }, +{ 0x1462, 0x1462, 0x1462 }, +{ 0x1463, 0x1463, 0x1463 }, +{ 0x1464, 0x1464, 0x1464 }, +{ 0x1465, 0x1465, 0x1465 }, +{ 0x1466, 0x1466, 0x1466 }, +{ 0x1467, 0x1467, 0x1467 }, +{ 0x1468, 0x1468, 0x1468 }, +{ 0x1469, 0x1469, 0x1469 }, +{ 0x146A, 0x146A, 0x146A }, +{ 0x146B, 0x146B, 0x146B }, +{ 0x146C, 0x146C, 0x146C }, +{ 0x146D, 0x146D, 0x146D }, +{ 0x146E, 0x146E, 0x146E }, +{ 0x146F, 0x146F, 0x146F }, +{ 0x1470, 0x1470, 0x1470 }, +{ 0x1471, 0x1471, 0x1471 }, +{ 0x1472, 0x1472, 0x1472 }, +{ 0x1473, 0x1473, 0x1473 }, +{ 0x1474, 0x1474, 0x1474 }, +{ 0x1475, 0x1475, 0x1475 }, +{ 0x1476, 0x1476, 0x1476 }, +{ 0x1477, 0x1477, 0x1477 }, +{ 0x1478, 0x1478, 0x1478 }, +{ 0x1479, 0x1479, 0x1479 }, +{ 0x147A, 0x147A, 0x147A }, +{ 0x147B, 0x147B, 0x147B }, +{ 0x147C, 0x147C, 0x147C }, +{ 0x147D, 0x147D, 0x147D }, +{ 0x147E, 0x147E, 0x147E }, +{ 0x147F, 0x147F, 0x147F }, +{ 0x1480, 0x1480, 0x1480 }, +{ 0x1481, 0x1481, 0x1481 }, +{ 0x1482, 0x1482, 0x1482 }, +{ 0x1483, 0x1483, 0x1483 }, +{ 0x1484, 0x1484, 0x1484 }, +{ 0x1485, 0x1485, 0x1485 }, +{ 0x1486, 0x1486, 0x1486 }, +{ 0x1487, 0x1487, 0x1487 }, +{ 0x1488, 0x1488, 0x1488 }, +{ 0x1489, 0x1489, 0x1489 }, +{ 0x148A, 0x148A, 0x148A }, +{ 0x148B, 0x148B, 0x148B }, +{ 0x148C, 0x148C, 0x148C }, +{ 0x148D, 0x148D, 0x148D }, +{ 0x148E, 0x148E, 0x148E }, +{ 0x148F, 0x148F, 0x148F }, +{ 0x1490, 0x1490, 0x1490 }, +{ 0x1491, 0x1491, 0x1491 }, +{ 0x1492, 0x1492, 0x1492 }, +{ 0x1493, 0x1493, 0x1493 }, +{ 0x1494, 0x1494, 0x1494 }, +{ 0x1495, 0x1495, 0x1495 }, +{ 0x1496, 0x1496, 0x1496 }, +{ 0x1497, 0x1497, 0x1497 }, +{ 0x1498, 0x1498, 0x1498 }, +{ 0x1499, 0x1499, 0x1499 }, +{ 0x149A, 0x149A, 0x149A }, +{ 0x149B, 0x149B, 0x149B }, +{ 0x149C, 0x149C, 0x149C }, +{ 0x149D, 0x149D, 0x149D }, +{ 0x149E, 0x149E, 0x149E }, +{ 0x149F, 0x149F, 0x149F }, +{ 0x14A0, 0x14A0, 0x14A0 }, +{ 0x14A1, 0x14A1, 0x14A1 }, +{ 0x14A2, 0x14A2, 0x14A2 }, +{ 0x14A3, 0x14A3, 0x14A3 }, +{ 0x14A4, 0x14A4, 0x14A4 }, +{ 0x14A5, 0x14A5, 0x14A5 }, +{ 0x14A6, 0x14A6, 0x14A6 }, +{ 0x14A7, 0x14A7, 0x14A7 }, +{ 0x14A8, 0x14A8, 0x14A8 }, +{ 0x14A9, 0x14A9, 0x14A9 }, +{ 0x14AA, 0x14AA, 0x14AA }, +{ 0x14AB, 0x14AB, 0x14AB }, +{ 0x14AC, 0x14AC, 0x14AC }, +{ 0x14AD, 0x14AD, 0x14AD }, +{ 0x14AE, 0x14AE, 0x14AE }, +{ 0x14AF, 0x14AF, 0x14AF }, +{ 0x14B0, 0x14B0, 0x14B0 }, +{ 0x14B1, 0x14B1, 0x14B1 }, +{ 0x14B2, 0x14B2, 0x14B2 }, +{ 0x14B3, 0x14B3, 0x14B3 }, +{ 0x14B4, 0x14B4, 0x14B4 }, +{ 0x14B5, 0x14B5, 0x14B5 }, +{ 0x14B6, 0x14B6, 0x14B6 }, +{ 0x14B7, 0x14B7, 0x14B7 }, +{ 0x14B8, 0x14B8, 0x14B8 }, +{ 0x14B9, 0x14B9, 0x14B9 }, +{ 0x14BA, 0x14BA, 0x14BA }, +{ 0x14BB, 0x14BB, 0x14BB }, +{ 0x14BC, 0x14BC, 0x14BC }, +{ 0x14BD, 0x14BD, 0x14BD }, +{ 0x14BE, 0x14BE, 0x14BE }, +{ 0x14BF, 0x14BF, 0x14BF }, +{ 0x14C0, 0x14C0, 0x14C0 }, +{ 0x14C1, 0x14C1, 0x14C1 }, +{ 0x14C2, 0x14C2, 0x14C2 }, +{ 0x14C3, 0x14C3, 0x14C3 }, +{ 0x14C4, 0x14C4, 0x14C4 }, +{ 0x14C5, 0x14C5, 0x14C5 }, +{ 0x14C6, 0x14C6, 0x14C6 }, +{ 0x14C7, 0x14C7, 0x14C7 }, +{ 0x14C8, 0x14C8, 0x14C8 }, +{ 0x14C9, 0x14C9, 0x14C9 }, +{ 0x14CA, 0x14CA, 0x14CA }, +{ 0x14CB, 0x14CB, 0x14CB }, +{ 0x14CC, 0x14CC, 0x14CC }, +{ 0x14CD, 0x14CD, 0x14CD }, +{ 0x14CE, 0x14CE, 0x14CE }, +{ 0x14CF, 0x14CF, 0x14CF }, +{ 0x14D0, 0x14D0, 0x14D0 }, +{ 0x14D1, 0x14D1, 0x14D1 }, +{ 0x14D2, 0x14D2, 0x14D2 }, +{ 0x14D3, 0x14D3, 0x14D3 }, +{ 0x14D4, 0x14D4, 0x14D4 }, +{ 0x14D5, 0x14D5, 0x14D5 }, +{ 0x14D6, 0x14D6, 0x14D6 }, +{ 0x14D7, 0x14D7, 0x14D7 }, +{ 0x14D8, 0x14D8, 0x14D8 }, +{ 0x14D9, 0x14D9, 0x14D9 }, +{ 0x14DA, 0x14DA, 0x14DA }, +{ 0x14DB, 0x14DB, 0x14DB }, +{ 0x14DC, 0x14DC, 0x14DC }, +{ 0x14DD, 0x14DD, 0x14DD }, +{ 0x14DE, 0x14DE, 0x14DE }, +{ 0x14DF, 0x14DF, 0x14DF }, +{ 0x14E0, 0x14E0, 0x14E0 }, +{ 0x14E1, 0x14E1, 0x14E1 }, +{ 0x14E2, 0x14E2, 0x14E2 }, +{ 0x14E3, 0x14E3, 0x14E3 }, +{ 0x14E4, 0x14E4, 0x14E4 }, +{ 0x14E5, 0x14E5, 0x14E5 }, +{ 0x14E6, 0x14E6, 0x14E6 }, +{ 0x14E7, 0x14E7, 0x14E7 }, +{ 0x14E8, 0x14E8, 0x14E8 }, +{ 0x14E9, 0x14E9, 0x14E9 }, +{ 0x14EA, 0x14EA, 0x14EA }, +{ 0x14EB, 0x14EB, 0x14EB }, +{ 0x14EC, 0x14EC, 0x14EC }, +{ 0x14ED, 0x14ED, 0x14ED }, +{ 0x14EE, 0x14EE, 0x14EE }, +{ 0x14EF, 0x14EF, 0x14EF }, +{ 0x14F0, 0x14F0, 0x14F0 }, +{ 0x14F1, 0x14F1, 0x14F1 }, +{ 0x14F2, 0x14F2, 0x14F2 }, +{ 0x14F3, 0x14F3, 0x14F3 }, +{ 0x14F4, 0x14F4, 0x14F4 }, +{ 0x14F5, 0x14F5, 0x14F5 }, +{ 0x14F6, 0x14F6, 0x14F6 }, +{ 0x14F7, 0x14F7, 0x14F7 }, +{ 0x14F8, 0x14F8, 0x14F8 }, +{ 0x14F9, 0x14F9, 0x14F9 }, +{ 0x14FA, 0x14FA, 0x14FA }, +{ 0x14FB, 0x14FB, 0x14FB }, +{ 0x14FC, 0x14FC, 0x14FC }, +{ 0x14FD, 0x14FD, 0x14FD }, +{ 0x14FE, 0x14FE, 0x14FE }, +{ 0x14FF, 0x14FF, 0x14FF }, +{ 0x1500, 0x1500, 0x1500 }, +{ 0x1501, 0x1501, 0x1501 }, +{ 0x1502, 0x1502, 0x1502 }, +{ 0x1503, 0x1503, 0x1503 }, +{ 0x1504, 0x1504, 0x1504 }, +{ 0x1505, 0x1505, 0x1505 }, +{ 0x1506, 0x1506, 0x1506 }, +{ 0x1507, 0x1507, 0x1507 }, +{ 0x1508, 0x1508, 0x1508 }, +{ 0x1509, 0x1509, 0x1509 }, +{ 0x150A, 0x150A, 0x150A }, +{ 0x150B, 0x150B, 0x150B }, +{ 0x150C, 0x150C, 0x150C }, +{ 0x150D, 0x150D, 0x150D }, +{ 0x150E, 0x150E, 0x150E }, +{ 0x150F, 0x150F, 0x150F }, +{ 0x1510, 0x1510, 0x1510 }, +{ 0x1511, 0x1511, 0x1511 }, +{ 0x1512, 0x1512, 0x1512 }, +{ 0x1513, 0x1513, 0x1513 }, +{ 0x1514, 0x1514, 0x1514 }, +{ 0x1515, 0x1515, 0x1515 }, +{ 0x1516, 0x1516, 0x1516 }, +{ 0x1517, 0x1517, 0x1517 }, +{ 0x1518, 0x1518, 0x1518 }, +{ 0x1519, 0x1519, 0x1519 }, +{ 0x151A, 0x151A, 0x151A }, +{ 0x151B, 0x151B, 0x151B }, +{ 0x151C, 0x151C, 0x151C }, +{ 0x151D, 0x151D, 0x151D }, +{ 0x151E, 0x151E, 0x151E }, +{ 0x151F, 0x151F, 0x151F }, +{ 0x1520, 0x1520, 0x1520 }, +{ 0x1521, 0x1521, 0x1521 }, +{ 0x1522, 0x1522, 0x1522 }, +{ 0x1523, 0x1523, 0x1523 }, +{ 0x1524, 0x1524, 0x1524 }, +{ 0x1525, 0x1525, 0x1525 }, +{ 0x1526, 0x1526, 0x1526 }, +{ 0x1527, 0x1527, 0x1527 }, +{ 0x1528, 0x1528, 0x1528 }, +{ 0x1529, 0x1529, 0x1529 }, +{ 0x152A, 0x152A, 0x152A }, +{ 0x152B, 0x152B, 0x152B }, +{ 0x152C, 0x152C, 0x152C }, +{ 0x152D, 0x152D, 0x152D }, +{ 0x152E, 0x152E, 0x152E }, +{ 0x152F, 0x152F, 0x152F }, +{ 0x1530, 0x1530, 0x1530 }, +{ 0x1531, 0x1531, 0x1531 }, +{ 0x1532, 0x1532, 0x1532 }, +{ 0x1533, 0x1533, 0x1533 }, +{ 0x1534, 0x1534, 0x1534 }, +{ 0x1535, 0x1535, 0x1535 }, +{ 0x1536, 0x1536, 0x1536 }, +{ 0x1537, 0x1537, 0x1537 }, +{ 0x1538, 0x1538, 0x1538 }, +{ 0x1539, 0x1539, 0x1539 }, +{ 0x153A, 0x153A, 0x153A }, +{ 0x153B, 0x153B, 0x153B }, +{ 0x153C, 0x153C, 0x153C }, +{ 0x153D, 0x153D, 0x153D }, +{ 0x153E, 0x153E, 0x153E }, +{ 0x153F, 0x153F, 0x153F }, +{ 0x1540, 0x1540, 0x1540 }, +{ 0x1541, 0x1541, 0x1541 }, +{ 0x1542, 0x1542, 0x1542 }, +{ 0x1543, 0x1543, 0x1543 }, +{ 0x1544, 0x1544, 0x1544 }, +{ 0x1545, 0x1545, 0x1545 }, +{ 0x1546, 0x1546, 0x1546 }, +{ 0x1547, 0x1547, 0x1547 }, +{ 0x1548, 0x1548, 0x1548 }, +{ 0x1549, 0x1549, 0x1549 }, +{ 0x154A, 0x154A, 0x154A }, +{ 0x154B, 0x154B, 0x154B }, +{ 0x154C, 0x154C, 0x154C }, +{ 0x154D, 0x154D, 0x154D }, +{ 0x154E, 0x154E, 0x154E }, +{ 0x154F, 0x154F, 0x154F }, +{ 0x1550, 0x1550, 0x1550 }, +{ 0x1551, 0x1551, 0x1551 }, +{ 0x1552, 0x1552, 0x1552 }, +{ 0x1553, 0x1553, 0x1553 }, +{ 0x1554, 0x1554, 0x1554 }, +{ 0x1555, 0x1555, 0x1555 }, +{ 0x1556, 0x1556, 0x1556 }, +{ 0x1557, 0x1557, 0x1557 }, +{ 0x1558, 0x1558, 0x1558 }, +{ 0x1559, 0x1559, 0x1559 }, +{ 0x155A, 0x155A, 0x155A }, +{ 0x155B, 0x155B, 0x155B }, +{ 0x155C, 0x155C, 0x155C }, +{ 0x155D, 0x155D, 0x155D }, +{ 0x155E, 0x155E, 0x155E }, +{ 0x155F, 0x155F, 0x155F }, +{ 0x1560, 0x1560, 0x1560 }, +{ 0x1561, 0x1561, 0x1561 }, +{ 0x1562, 0x1562, 0x1562 }, +{ 0x1563, 0x1563, 0x1563 }, +{ 0x1564, 0x1564, 0x1564 }, +{ 0x1565, 0x1565, 0x1565 }, +{ 0x1566, 0x1566, 0x1566 }, +{ 0x1567, 0x1567, 0x1567 }, +{ 0x1568, 0x1568, 0x1568 }, +{ 0x1569, 0x1569, 0x1569 }, +{ 0x156A, 0x156A, 0x156A }, +{ 0x156B, 0x156B, 0x156B }, +{ 0x156C, 0x156C, 0x156C }, +{ 0x156D, 0x156D, 0x156D }, +{ 0x156E, 0x156E, 0x156E }, +{ 0x156F, 0x156F, 0x156F }, +{ 0x1570, 0x1570, 0x1570 }, +{ 0x1571, 0x1571, 0x1571 }, +{ 0x1572, 0x1572, 0x1572 }, +{ 0x1573, 0x1573, 0x1573 }, +{ 0x1574, 0x1574, 0x1574 }, +{ 0x1575, 0x1575, 0x1575 }, +{ 0x1576, 0x1576, 0x1576 }, +{ 0x1577, 0x1577, 0x1577 }, +{ 0x1578, 0x1578, 0x1578 }, +{ 0x1579, 0x1579, 0x1579 }, +{ 0x157A, 0x157A, 0x157A }, +{ 0x157B, 0x157B, 0x157B }, +{ 0x157C, 0x157C, 0x157C }, +{ 0x157D, 0x157D, 0x157D }, +{ 0x157E, 0x157E, 0x157E }, +{ 0x157F, 0x157F, 0x157F }, +{ 0x1580, 0x1580, 0x1580 }, +{ 0x1581, 0x1581, 0x1581 }, +{ 0x1582, 0x1582, 0x1582 }, +{ 0x1583, 0x1583, 0x1583 }, +{ 0x1584, 0x1584, 0x1584 }, +{ 0x1585, 0x1585, 0x1585 }, +{ 0x1586, 0x1586, 0x1586 }, +{ 0x1587, 0x1587, 0x1587 }, +{ 0x1588, 0x1588, 0x1588 }, +{ 0x1589, 0x1589, 0x1589 }, +{ 0x158A, 0x158A, 0x158A }, +{ 0x158B, 0x158B, 0x158B }, +{ 0x158C, 0x158C, 0x158C }, +{ 0x158D, 0x158D, 0x158D }, +{ 0x158E, 0x158E, 0x158E }, +{ 0x158F, 0x158F, 0x158F }, +{ 0x1590, 0x1590, 0x1590 }, +{ 0x1591, 0x1591, 0x1591 }, +{ 0x1592, 0x1592, 0x1592 }, +{ 0x1593, 0x1593, 0x1593 }, +{ 0x1594, 0x1594, 0x1594 }, +{ 0x1595, 0x1595, 0x1595 }, +{ 0x1596, 0x1596, 0x1596 }, +{ 0x1597, 0x1597, 0x1597 }, +{ 0x1598, 0x1598, 0x1598 }, +{ 0x1599, 0x1599, 0x1599 }, +{ 0x159A, 0x159A, 0x159A }, +{ 0x159B, 0x159B, 0x159B }, +{ 0x159C, 0x159C, 0x159C }, +{ 0x159D, 0x159D, 0x159D }, +{ 0x159E, 0x159E, 0x159E }, +{ 0x159F, 0x159F, 0x159F }, +{ 0x15A0, 0x15A0, 0x15A0 }, +{ 0x15A1, 0x15A1, 0x15A1 }, +{ 0x15A2, 0x15A2, 0x15A2 }, +{ 0x15A3, 0x15A3, 0x15A3 }, +{ 0x15A4, 0x15A4, 0x15A4 }, +{ 0x15A5, 0x15A5, 0x15A5 }, +{ 0x15A6, 0x15A6, 0x15A6 }, +{ 0x15A7, 0x15A7, 0x15A7 }, +{ 0x15A8, 0x15A8, 0x15A8 }, +{ 0x15A9, 0x15A9, 0x15A9 }, +{ 0x15AA, 0x15AA, 0x15AA }, +{ 0x15AB, 0x15AB, 0x15AB }, +{ 0x15AC, 0x15AC, 0x15AC }, +{ 0x15AD, 0x15AD, 0x15AD }, +{ 0x15AE, 0x15AE, 0x15AE }, +{ 0x15AF, 0x15AF, 0x15AF }, +{ 0x15B0, 0x15B0, 0x15B0 }, +{ 0x15B1, 0x15B1, 0x15B1 }, +{ 0x15B2, 0x15B2, 0x15B2 }, +{ 0x15B3, 0x15B3, 0x15B3 }, +{ 0x15B4, 0x15B4, 0x15B4 }, +{ 0x15B5, 0x15B5, 0x15B5 }, +{ 0x15B6, 0x15B6, 0x15B6 }, +{ 0x15B7, 0x15B7, 0x15B7 }, +{ 0x15B8, 0x15B8, 0x15B8 }, +{ 0x15B9, 0x15B9, 0x15B9 }, +{ 0x15BA, 0x15BA, 0x15BA }, +{ 0x15BB, 0x15BB, 0x15BB }, +{ 0x15BC, 0x15BC, 0x15BC }, +{ 0x15BD, 0x15BD, 0x15BD }, +{ 0x15BE, 0x15BE, 0x15BE }, +{ 0x15BF, 0x15BF, 0x15BF }, +{ 0x15C0, 0x15C0, 0x15C0 }, +{ 0x15C1, 0x15C1, 0x15C1 }, +{ 0x15C2, 0x15C2, 0x15C2 }, +{ 0x15C3, 0x15C3, 0x15C3 }, +{ 0x15C4, 0x15C4, 0x15C4 }, +{ 0x15C5, 0x15C5, 0x15C5 }, +{ 0x15C6, 0x15C6, 0x15C6 }, +{ 0x15C7, 0x15C7, 0x15C7 }, +{ 0x15C8, 0x15C8, 0x15C8 }, +{ 0x15C9, 0x15C9, 0x15C9 }, +{ 0x15CA, 0x15CA, 0x15CA }, +{ 0x15CB, 0x15CB, 0x15CB }, +{ 0x15CC, 0x15CC, 0x15CC }, +{ 0x15CD, 0x15CD, 0x15CD }, +{ 0x15CE, 0x15CE, 0x15CE }, +{ 0x15CF, 0x15CF, 0x15CF }, +{ 0x15D0, 0x15D0, 0x15D0 }, +{ 0x15D1, 0x15D1, 0x15D1 }, +{ 0x15D2, 0x15D2, 0x15D2 }, +{ 0x15D3, 0x15D3, 0x15D3 }, +{ 0x15D4, 0x15D4, 0x15D4 }, +{ 0x15D5, 0x15D5, 0x15D5 }, +{ 0x15D6, 0x15D6, 0x15D6 }, +{ 0x15D7, 0x15D7, 0x15D7 }, +{ 0x15D8, 0x15D8, 0x15D8 }, +{ 0x15D9, 0x15D9, 0x15D9 }, +{ 0x15DA, 0x15DA, 0x15DA }, +{ 0x15DB, 0x15DB, 0x15DB }, +{ 0x15DC, 0x15DC, 0x15DC }, +{ 0x15DD, 0x15DD, 0x15DD }, +{ 0x15DE, 0x15DE, 0x15DE }, +{ 0x15DF, 0x15DF, 0x15DF }, +{ 0x15E0, 0x15E0, 0x15E0 }, +{ 0x15E1, 0x15E1, 0x15E1 }, +{ 0x15E2, 0x15E2, 0x15E2 }, +{ 0x15E3, 0x15E3, 0x15E3 }, +{ 0x15E4, 0x15E4, 0x15E4 }, +{ 0x15E5, 0x15E5, 0x15E5 }, +{ 0x15E6, 0x15E6, 0x15E6 }, +{ 0x15E7, 0x15E7, 0x15E7 }, +{ 0x15E8, 0x15E8, 0x15E8 }, +{ 0x15E9, 0x15E9, 0x15E9 }, +{ 0x15EA, 0x15EA, 0x15EA }, +{ 0x15EB, 0x15EB, 0x15EB }, +{ 0x15EC, 0x15EC, 0x15EC }, +{ 0x15ED, 0x15ED, 0x15ED }, +{ 0x15EE, 0x15EE, 0x15EE }, +{ 0x15EF, 0x15EF, 0x15EF }, +{ 0x15F0, 0x15F0, 0x15F0 }, +{ 0x15F1, 0x15F1, 0x15F1 }, +{ 0x15F2, 0x15F2, 0x15F2 }, +{ 0x15F3, 0x15F3, 0x15F3 }, +{ 0x15F4, 0x15F4, 0x15F4 }, +{ 0x15F5, 0x15F5, 0x15F5 }, +{ 0x15F6, 0x15F6, 0x15F6 }, +{ 0x15F7, 0x15F7, 0x15F7 }, +{ 0x15F8, 0x15F8, 0x15F8 }, +{ 0x15F9, 0x15F9, 0x15F9 }, +{ 0x15FA, 0x15FA, 0x15FA }, +{ 0x15FB, 0x15FB, 0x15FB }, +{ 0x15FC, 0x15FC, 0x15FC }, +{ 0x15FD, 0x15FD, 0x15FD }, +{ 0x15FE, 0x15FE, 0x15FE }, +{ 0x15FF, 0x15FF, 0x15FF }, +{ 0x1600, 0x1600, 0x1600 }, +{ 0x1601, 0x1601, 0x1601 }, +{ 0x1602, 0x1602, 0x1602 }, +{ 0x1603, 0x1603, 0x1603 }, +{ 0x1604, 0x1604, 0x1604 }, +{ 0x1605, 0x1605, 0x1605 }, +{ 0x1606, 0x1606, 0x1606 }, +{ 0x1607, 0x1607, 0x1607 }, +{ 0x1608, 0x1608, 0x1608 }, +{ 0x1609, 0x1609, 0x1609 }, +{ 0x160A, 0x160A, 0x160A }, +{ 0x160B, 0x160B, 0x160B }, +{ 0x160C, 0x160C, 0x160C }, +{ 0x160D, 0x160D, 0x160D }, +{ 0x160E, 0x160E, 0x160E }, +{ 0x160F, 0x160F, 0x160F }, +{ 0x1610, 0x1610, 0x1610 }, +{ 0x1611, 0x1611, 0x1611 }, +{ 0x1612, 0x1612, 0x1612 }, +{ 0x1613, 0x1613, 0x1613 }, +{ 0x1614, 0x1614, 0x1614 }, +{ 0x1615, 0x1615, 0x1615 }, +{ 0x1616, 0x1616, 0x1616 }, +{ 0x1617, 0x1617, 0x1617 }, +{ 0x1618, 0x1618, 0x1618 }, +{ 0x1619, 0x1619, 0x1619 }, +{ 0x161A, 0x161A, 0x161A }, +{ 0x161B, 0x161B, 0x161B }, +{ 0x161C, 0x161C, 0x161C }, +{ 0x161D, 0x161D, 0x161D }, +{ 0x161E, 0x161E, 0x161E }, +{ 0x161F, 0x161F, 0x161F }, +{ 0x1620, 0x1620, 0x1620 }, +{ 0x1621, 0x1621, 0x1621 }, +{ 0x1622, 0x1622, 0x1622 }, +{ 0x1623, 0x1623, 0x1623 }, +{ 0x1624, 0x1624, 0x1624 }, +{ 0x1625, 0x1625, 0x1625 }, +{ 0x1626, 0x1626, 0x1626 }, +{ 0x1627, 0x1627, 0x1627 }, +{ 0x1628, 0x1628, 0x1628 }, +{ 0x1629, 0x1629, 0x1629 }, +{ 0x162A, 0x162A, 0x162A }, +{ 0x162B, 0x162B, 0x162B }, +{ 0x162C, 0x162C, 0x162C }, +{ 0x162D, 0x162D, 0x162D }, +{ 0x162E, 0x162E, 0x162E }, +{ 0x162F, 0x162F, 0x162F }, +{ 0x1630, 0x1630, 0x1630 }, +{ 0x1631, 0x1631, 0x1631 }, +{ 0x1632, 0x1632, 0x1632 }, +{ 0x1633, 0x1633, 0x1633 }, +{ 0x1634, 0x1634, 0x1634 }, +{ 0x1635, 0x1635, 0x1635 }, +{ 0x1636, 0x1636, 0x1636 }, +{ 0x1637, 0x1637, 0x1637 }, +{ 0x1638, 0x1638, 0x1638 }, +{ 0x1639, 0x1639, 0x1639 }, +{ 0x163A, 0x163A, 0x163A }, +{ 0x163B, 0x163B, 0x163B }, +{ 0x163C, 0x163C, 0x163C }, +{ 0x163D, 0x163D, 0x163D }, +{ 0x163E, 0x163E, 0x163E }, +{ 0x163F, 0x163F, 0x163F }, +{ 0x1640, 0x1640, 0x1640 }, +{ 0x1641, 0x1641, 0x1641 }, +{ 0x1642, 0x1642, 0x1642 }, +{ 0x1643, 0x1643, 0x1643 }, +{ 0x1644, 0x1644, 0x1644 }, +{ 0x1645, 0x1645, 0x1645 }, +{ 0x1646, 0x1646, 0x1646 }, +{ 0x1647, 0x1647, 0x1647 }, +{ 0x1648, 0x1648, 0x1648 }, +{ 0x1649, 0x1649, 0x1649 }, +{ 0x164A, 0x164A, 0x164A }, +{ 0x164B, 0x164B, 0x164B }, +{ 0x164C, 0x164C, 0x164C }, +{ 0x164D, 0x164D, 0x164D }, +{ 0x164E, 0x164E, 0x164E }, +{ 0x164F, 0x164F, 0x164F }, +{ 0x1650, 0x1650, 0x1650 }, +{ 0x1651, 0x1651, 0x1651 }, +{ 0x1652, 0x1652, 0x1652 }, +{ 0x1653, 0x1653, 0x1653 }, +{ 0x1654, 0x1654, 0x1654 }, +{ 0x1655, 0x1655, 0x1655 }, +{ 0x1656, 0x1656, 0x1656 }, +{ 0x1657, 0x1657, 0x1657 }, +{ 0x1658, 0x1658, 0x1658 }, +{ 0x1659, 0x1659, 0x1659 }, +{ 0x165A, 0x165A, 0x165A }, +{ 0x165B, 0x165B, 0x165B }, +{ 0x165C, 0x165C, 0x165C }, +{ 0x165D, 0x165D, 0x165D }, +{ 0x165E, 0x165E, 0x165E }, +{ 0x165F, 0x165F, 0x165F }, +{ 0x1660, 0x1660, 0x1660 }, +{ 0x1661, 0x1661, 0x1661 }, +{ 0x1662, 0x1662, 0x1662 }, +{ 0x1663, 0x1663, 0x1663 }, +{ 0x1664, 0x1664, 0x1664 }, +{ 0x1665, 0x1665, 0x1665 }, +{ 0x1666, 0x1666, 0x1666 }, +{ 0x1667, 0x1667, 0x1667 }, +{ 0x1668, 0x1668, 0x1668 }, +{ 0x1669, 0x1669, 0x1669 }, +{ 0x166A, 0x166A, 0x166A }, +{ 0x166B, 0x166B, 0x166B }, +{ 0x166C, 0x166C, 0x166C }, +{ 0x166F, 0x166F, 0x166F }, +{ 0x1670, 0x1670, 0x1670 }, +{ 0x1671, 0x1671, 0x1671 }, +{ 0x1672, 0x1672, 0x1672 }, +{ 0x1673, 0x1673, 0x1673 }, +{ 0x1674, 0x1674, 0x1674 }, +{ 0x1675, 0x1675, 0x1675 }, +{ 0x1676, 0x1676, 0x1676 }, +{ 0x1681, 0x1681, 0x1681 }, +{ 0x1682, 0x1682, 0x1682 }, +{ 0x1683, 0x1683, 0x1683 }, +{ 0x1684, 0x1684, 0x1684 }, +{ 0x1685, 0x1685, 0x1685 }, +{ 0x1686, 0x1686, 0x1686 }, +{ 0x1687, 0x1687, 0x1687 }, +{ 0x1688, 0x1688, 0x1688 }, +{ 0x1689, 0x1689, 0x1689 }, +{ 0x168A, 0x168A, 0x168A }, +{ 0x168B, 0x168B, 0x168B }, +{ 0x168C, 0x168C, 0x168C }, +{ 0x168D, 0x168D, 0x168D }, +{ 0x168E, 0x168E, 0x168E }, +{ 0x168F, 0x168F, 0x168F }, +{ 0x1690, 0x1690, 0x1690 }, +{ 0x1691, 0x1691, 0x1691 }, +{ 0x1692, 0x1692, 0x1692 }, +{ 0x1693, 0x1693, 0x1693 }, +{ 0x1694, 0x1694, 0x1694 }, +{ 0x1695, 0x1695, 0x1695 }, +{ 0x1696, 0x1696, 0x1696 }, +{ 0x1697, 0x1697, 0x1697 }, +{ 0x1698, 0x1698, 0x1698 }, +{ 0x1699, 0x1699, 0x1699 }, +{ 0x169A, 0x169A, 0x169A }, +{ 0x16A0, 0x16A0, 0x16A0 }, +{ 0x16A1, 0x16A1, 0x16A1 }, +{ 0x16A2, 0x16A2, 0x16A2 }, +{ 0x16A3, 0x16A3, 0x16A3 }, +{ 0x16A4, 0x16A4, 0x16A4 }, +{ 0x16A5, 0x16A5, 0x16A5 }, +{ 0x16A6, 0x16A6, 0x16A6 }, +{ 0x16A7, 0x16A7, 0x16A7 }, +{ 0x16A8, 0x16A8, 0x16A8 }, +{ 0x16A9, 0x16A9, 0x16A9 }, +{ 0x16AA, 0x16AA, 0x16AA }, +{ 0x16AB, 0x16AB, 0x16AB }, +{ 0x16AC, 0x16AC, 0x16AC }, +{ 0x16AD, 0x16AD, 0x16AD }, +{ 0x16AE, 0x16AE, 0x16AE }, +{ 0x16AF, 0x16AF, 0x16AF }, +{ 0x16B0, 0x16B0, 0x16B0 }, +{ 0x16B1, 0x16B1, 0x16B1 }, +{ 0x16B2, 0x16B2, 0x16B2 }, +{ 0x16B3, 0x16B3, 0x16B3 }, +{ 0x16B4, 0x16B4, 0x16B4 }, +{ 0x16B5, 0x16B5, 0x16B5 }, +{ 0x16B6, 0x16B6, 0x16B6 }, +{ 0x16B7, 0x16B7, 0x16B7 }, +{ 0x16B8, 0x16B8, 0x16B8 }, +{ 0x16B9, 0x16B9, 0x16B9 }, +{ 0x16BA, 0x16BA, 0x16BA }, +{ 0x16BB, 0x16BB, 0x16BB }, +{ 0x16BC, 0x16BC, 0x16BC }, +{ 0x16BD, 0x16BD, 0x16BD }, +{ 0x16BE, 0x16BE, 0x16BE }, +{ 0x16BF, 0x16BF, 0x16BF }, +{ 0x16C0, 0x16C0, 0x16C0 }, +{ 0x16C1, 0x16C1, 0x16C1 }, +{ 0x16C2, 0x16C2, 0x16C2 }, +{ 0x16C3, 0x16C3, 0x16C3 }, +{ 0x16C4, 0x16C4, 0x16C4 }, +{ 0x16C5, 0x16C5, 0x16C5 }, +{ 0x16C6, 0x16C6, 0x16C6 }, +{ 0x16C7, 0x16C7, 0x16C7 }, +{ 0x16C8, 0x16C8, 0x16C8 }, +{ 0x16C9, 0x16C9, 0x16C9 }, +{ 0x16CA, 0x16CA, 0x16CA }, +{ 0x16CB, 0x16CB, 0x16CB }, +{ 0x16CC, 0x16CC, 0x16CC }, +{ 0x16CD, 0x16CD, 0x16CD }, +{ 0x16CE, 0x16CE, 0x16CE }, +{ 0x16CF, 0x16CF, 0x16CF }, +{ 0x16D0, 0x16D0, 0x16D0 }, +{ 0x16D1, 0x16D1, 0x16D1 }, +{ 0x16D2, 0x16D2, 0x16D2 }, +{ 0x16D3, 0x16D3, 0x16D3 }, +{ 0x16D4, 0x16D4, 0x16D4 }, +{ 0x16D5, 0x16D5, 0x16D5 }, +{ 0x16D6, 0x16D6, 0x16D6 }, +{ 0x16D7, 0x16D7, 0x16D7 }, +{ 0x16D8, 0x16D8, 0x16D8 }, +{ 0x16D9, 0x16D9, 0x16D9 }, +{ 0x16DA, 0x16DA, 0x16DA }, +{ 0x16DB, 0x16DB, 0x16DB }, +{ 0x16DC, 0x16DC, 0x16DC }, +{ 0x16DD, 0x16DD, 0x16DD }, +{ 0x16DE, 0x16DE, 0x16DE }, +{ 0x16DF, 0x16DF, 0x16DF }, +{ 0x16E0, 0x16E0, 0x16E0 }, +{ 0x16E1, 0x16E1, 0x16E1 }, +{ 0x16E2, 0x16E2, 0x16E2 }, +{ 0x16E3, 0x16E3, 0x16E3 }, +{ 0x16E4, 0x16E4, 0x16E4 }, +{ 0x16E5, 0x16E5, 0x16E5 }, +{ 0x16E6, 0x16E6, 0x16E6 }, +{ 0x16E7, 0x16E7, 0x16E7 }, +{ 0x16E8, 0x16E8, 0x16E8 }, +{ 0x16E9, 0x16E9, 0x16E9 }, +{ 0x16EA, 0x16EA, 0x16EA }, +{ 0x1700, 0x1700, 0x1700 }, +{ 0x1701, 0x1701, 0x1701 }, +{ 0x1702, 0x1702, 0x1702 }, +{ 0x1703, 0x1703, 0x1703 }, +{ 0x1704, 0x1704, 0x1704 }, +{ 0x1705, 0x1705, 0x1705 }, +{ 0x1706, 0x1706, 0x1706 }, +{ 0x1707, 0x1707, 0x1707 }, +{ 0x1708, 0x1708, 0x1708 }, +{ 0x1709, 0x1709, 0x1709 }, +{ 0x170A, 0x170A, 0x170A }, +{ 0x170B, 0x170B, 0x170B }, +{ 0x170C, 0x170C, 0x170C }, +{ 0x170E, 0x170E, 0x170E }, +{ 0x170F, 0x170F, 0x170F }, +{ 0x1710, 0x1710, 0x1710 }, +{ 0x1711, 0x1711, 0x1711 }, +{ 0x1712, 0x1712, 0x1712 }, +{ 0x1713, 0x1713, 0x1713 }, +{ 0x1714, 0x1714, 0x1714 }, +{ 0x1720, 0x1720, 0x1720 }, +{ 0x1721, 0x1721, 0x1721 }, +{ 0x1722, 0x1722, 0x1722 }, +{ 0x1723, 0x1723, 0x1723 }, +{ 0x1724, 0x1724, 0x1724 }, +{ 0x1725, 0x1725, 0x1725 }, +{ 0x1726, 0x1726, 0x1726 }, +{ 0x1727, 0x1727, 0x1727 }, +{ 0x1728, 0x1728, 0x1728 }, +{ 0x1729, 0x1729, 0x1729 }, +{ 0x172A, 0x172A, 0x172A }, +{ 0x172B, 0x172B, 0x172B }, +{ 0x172C, 0x172C, 0x172C }, +{ 0x172D, 0x172D, 0x172D }, +{ 0x172E, 0x172E, 0x172E }, +{ 0x172F, 0x172F, 0x172F }, +{ 0x1730, 0x1730, 0x1730 }, +{ 0x1731, 0x1731, 0x1731 }, +{ 0x1732, 0x1732, 0x1732 }, +{ 0x1733, 0x1733, 0x1733 }, +{ 0x1734, 0x1734, 0x1734 }, +{ 0x1740, 0x1740, 0x1740 }, +{ 0x1741, 0x1741, 0x1741 }, +{ 0x1742, 0x1742, 0x1742 }, +{ 0x1743, 0x1743, 0x1743 }, +{ 0x1744, 0x1744, 0x1744 }, +{ 0x1745, 0x1745, 0x1745 }, +{ 0x1746, 0x1746, 0x1746 }, +{ 0x1747, 0x1747, 0x1747 }, +{ 0x1748, 0x1748, 0x1748 }, +{ 0x1749, 0x1749, 0x1749 }, +{ 0x174A, 0x174A, 0x174A }, +{ 0x174B, 0x174B, 0x174B }, +{ 0x174C, 0x174C, 0x174C }, +{ 0x174D, 0x174D, 0x174D }, +{ 0x174E, 0x174E, 0x174E }, +{ 0x174F, 0x174F, 0x174F }, +{ 0x1750, 0x1750, 0x1750 }, +{ 0x1751, 0x1751, 0x1751 }, +{ 0x1752, 0x1752, 0x1752 }, +{ 0x1753, 0x1753, 0x1753 }, +{ 0x1760, 0x1760, 0x1760 }, +{ 0x1761, 0x1761, 0x1761 }, +{ 0x1762, 0x1762, 0x1762 }, +{ 0x1763, 0x1763, 0x1763 }, +{ 0x1764, 0x1764, 0x1764 }, +{ 0x1765, 0x1765, 0x1765 }, +{ 0x1766, 0x1766, 0x1766 }, +{ 0x1767, 0x1767, 0x1767 }, +{ 0x1768, 0x1768, 0x1768 }, +{ 0x1769, 0x1769, 0x1769 }, +{ 0x176A, 0x176A, 0x176A }, +{ 0x176B, 0x176B, 0x176B }, +{ 0x176C, 0x176C, 0x176C }, +{ 0x176E, 0x176E, 0x176E }, +{ 0x176F, 0x176F, 0x176F }, +{ 0x1770, 0x1770, 0x1770 }, +{ 0x1772, 0x1772, 0x1772 }, +{ 0x1773, 0x1773, 0x1773 }, +{ 0x1780, 0x1780, 0x1780 }, +{ 0x1781, 0x1781, 0x1781 }, +{ 0x1782, 0x1782, 0x1782 }, +{ 0x1783, 0x1783, 0x1783 }, +{ 0x1784, 0x1784, 0x1784 }, +{ 0x1785, 0x1785, 0x1785 }, +{ 0x1786, 0x1786, 0x1786 }, +{ 0x1787, 0x1787, 0x1787 }, +{ 0x1788, 0x1788, 0x1788 }, +{ 0x1789, 0x1789, 0x1789 }, +{ 0x178A, 0x178A, 0x178A }, +{ 0x178B, 0x178B, 0x178B }, +{ 0x178C, 0x178C, 0x178C }, +{ 0x178D, 0x178D, 0x178D }, +{ 0x178E, 0x178E, 0x178E }, +{ 0x178F, 0x178F, 0x178F }, +{ 0x1790, 0x1790, 0x1790 }, +{ 0x1791, 0x1791, 0x1791 }, +{ 0x1792, 0x1792, 0x1792 }, +{ 0x1793, 0x1793, 0x1793 }, +{ 0x1794, 0x1794, 0x1794 }, +{ 0x1795, 0x1795, 0x1795 }, +{ 0x1796, 0x1796, 0x1796 }, +{ 0x1797, 0x1797, 0x1797 }, +{ 0x1798, 0x1798, 0x1798 }, +{ 0x1799, 0x1799, 0x1799 }, +{ 0x179A, 0x179A, 0x179A }, +{ 0x179B, 0x179B, 0x179B }, +{ 0x179C, 0x179C, 0x179C }, +{ 0x179D, 0x179D, 0x179D }, +{ 0x179E, 0x179E, 0x179E }, +{ 0x179F, 0x179F, 0x179F }, +{ 0x17A0, 0x17A0, 0x17A0 }, +{ 0x17A1, 0x17A1, 0x17A1 }, +{ 0x17A2, 0x17A2, 0x17A2 }, +{ 0x17A3, 0x17A3, 0x17A3 }, +{ 0x17A4, 0x17A4, 0x17A4 }, +{ 0x17A5, 0x17A5, 0x17A5 }, +{ 0x17A6, 0x17A6, 0x17A6 }, +{ 0x17A7, 0x17A7, 0x17A7 }, +{ 0x17A8, 0x17A8, 0x17A8 }, +{ 0x17A9, 0x17A9, 0x17A9 }, +{ 0x17AA, 0x17AA, 0x17AA }, +{ 0x17AB, 0x17AB, 0x17AB }, +{ 0x17AC, 0x17AC, 0x17AC }, +{ 0x17AD, 0x17AD, 0x17AD }, +{ 0x17AE, 0x17AE, 0x17AE }, +{ 0x17AF, 0x17AF, 0x17AF }, +{ 0x17B0, 0x17B0, 0x17B0 }, +{ 0x17B1, 0x17B1, 0x17B1 }, +{ 0x17B2, 0x17B2, 0x17B2 }, +{ 0x17B3, 0x17B3, 0x17B3 }, +{ 0x17B7, 0x17B7, 0x17B7 }, +{ 0x17B8, 0x17B8, 0x17B8 }, +{ 0x17B9, 0x17B9, 0x17B9 }, +{ 0x17BA, 0x17BA, 0x17BA }, +{ 0x17BB, 0x17BB, 0x17BB }, +{ 0x17BC, 0x17BC, 0x17BC }, +{ 0x17BD, 0x17BD, 0x17BD }, +{ 0x17C6, 0x17C6, 0x17C6 }, +{ 0x17C9, 0x17C9, 0x17C9 }, +{ 0x17CA, 0x17CA, 0x17CA }, +{ 0x17CB, 0x17CB, 0x17CB }, +{ 0x17CC, 0x17CC, 0x17CC }, +{ 0x17CD, 0x17CD, 0x17CD }, +{ 0x17CE, 0x17CE, 0x17CE }, +{ 0x17CF, 0x17CF, 0x17CF }, +{ 0x17D0, 0x17D0, 0x17D0 }, +{ 0x17D1, 0x17D1, 0x17D1 }, +{ 0x17D2, 0x17D2, 0x17D2 }, +{ 0x17D3, 0x17D3, 0x17D3 }, +{ 0x17D7, 0x17D7, 0x17D7 }, +{ 0x17DC, 0x17DC, 0x17DC }, +{ 0x17DD, 0x17DD, 0x17DD }, +{ 0x180B, 0x180B, 0x180B }, +{ 0x180C, 0x180C, 0x180C }, +{ 0x180D, 0x180D, 0x180D }, +{ 0x1820, 0x1820, 0x1820 }, +{ 0x1821, 0x1821, 0x1821 }, +{ 0x1822, 0x1822, 0x1822 }, +{ 0x1823, 0x1823, 0x1823 }, +{ 0x1824, 0x1824, 0x1824 }, +{ 0x1825, 0x1825, 0x1825 }, +{ 0x1826, 0x1826, 0x1826 }, +{ 0x1827, 0x1827, 0x1827 }, +{ 0x1828, 0x1828, 0x1828 }, +{ 0x1829, 0x1829, 0x1829 }, +{ 0x182A, 0x182A, 0x182A }, +{ 0x182B, 0x182B, 0x182B }, +{ 0x182C, 0x182C, 0x182C }, +{ 0x182D, 0x182D, 0x182D }, +{ 0x182E, 0x182E, 0x182E }, +{ 0x182F, 0x182F, 0x182F }, +{ 0x1830, 0x1830, 0x1830 }, +{ 0x1831, 0x1831, 0x1831 }, +{ 0x1832, 0x1832, 0x1832 }, +{ 0x1833, 0x1833, 0x1833 }, +{ 0x1834, 0x1834, 0x1834 }, +{ 0x1835, 0x1835, 0x1835 }, +{ 0x1836, 0x1836, 0x1836 }, +{ 0x1837, 0x1837, 0x1837 }, +{ 0x1838, 0x1838, 0x1838 }, +{ 0x1839, 0x1839, 0x1839 }, +{ 0x183A, 0x183A, 0x183A }, +{ 0x183B, 0x183B, 0x183B }, +{ 0x183C, 0x183C, 0x183C }, +{ 0x183D, 0x183D, 0x183D }, +{ 0x183E, 0x183E, 0x183E }, +{ 0x183F, 0x183F, 0x183F }, +{ 0x1840, 0x1840, 0x1840 }, +{ 0x1841, 0x1841, 0x1841 }, +{ 0x1842, 0x1842, 0x1842 }, +{ 0x1843, 0x1843, 0x1843 }, +{ 0x1844, 0x1844, 0x1844 }, +{ 0x1845, 0x1845, 0x1845 }, +{ 0x1846, 0x1846, 0x1846 }, +{ 0x1847, 0x1847, 0x1847 }, +{ 0x1848, 0x1848, 0x1848 }, +{ 0x1849, 0x1849, 0x1849 }, +{ 0x184A, 0x184A, 0x184A }, +{ 0x184B, 0x184B, 0x184B }, +{ 0x184C, 0x184C, 0x184C }, +{ 0x184D, 0x184D, 0x184D }, +{ 0x184E, 0x184E, 0x184E }, +{ 0x184F, 0x184F, 0x184F }, +{ 0x1850, 0x1850, 0x1850 }, +{ 0x1851, 0x1851, 0x1851 }, +{ 0x1852, 0x1852, 0x1852 }, +{ 0x1853, 0x1853, 0x1853 }, +{ 0x1854, 0x1854, 0x1854 }, +{ 0x1855, 0x1855, 0x1855 }, +{ 0x1856, 0x1856, 0x1856 }, +{ 0x1857, 0x1857, 0x1857 }, +{ 0x1858, 0x1858, 0x1858 }, +{ 0x1859, 0x1859, 0x1859 }, +{ 0x185A, 0x185A, 0x185A }, +{ 0x185B, 0x185B, 0x185B }, +{ 0x185C, 0x185C, 0x185C }, +{ 0x185D, 0x185D, 0x185D }, +{ 0x185E, 0x185E, 0x185E }, +{ 0x185F, 0x185F, 0x185F }, +{ 0x1860, 0x1860, 0x1860 }, +{ 0x1861, 0x1861, 0x1861 }, +{ 0x1862, 0x1862, 0x1862 }, +{ 0x1863, 0x1863, 0x1863 }, +{ 0x1864, 0x1864, 0x1864 }, +{ 0x1865, 0x1865, 0x1865 }, +{ 0x1866, 0x1866, 0x1866 }, +{ 0x1867, 0x1867, 0x1867 }, +{ 0x1868, 0x1868, 0x1868 }, +{ 0x1869, 0x1869, 0x1869 }, +{ 0x186A, 0x186A, 0x186A }, +{ 0x186B, 0x186B, 0x186B }, +{ 0x186C, 0x186C, 0x186C }, +{ 0x186D, 0x186D, 0x186D }, +{ 0x186E, 0x186E, 0x186E }, +{ 0x186F, 0x186F, 0x186F }, +{ 0x1870, 0x1870, 0x1870 }, +{ 0x1871, 0x1871, 0x1871 }, +{ 0x1872, 0x1872, 0x1872 }, +{ 0x1873, 0x1873, 0x1873 }, +{ 0x1874, 0x1874, 0x1874 }, +{ 0x1875, 0x1875, 0x1875 }, +{ 0x1876, 0x1876, 0x1876 }, +{ 0x1877, 0x1877, 0x1877 }, +{ 0x1880, 0x1880, 0x1880 }, +{ 0x1881, 0x1881, 0x1881 }, +{ 0x1882, 0x1882, 0x1882 }, +{ 0x1883, 0x1883, 0x1883 }, +{ 0x1884, 0x1884, 0x1884 }, +{ 0x1885, 0x1885, 0x1885 }, +{ 0x1886, 0x1886, 0x1886 }, +{ 0x1887, 0x1887, 0x1887 }, +{ 0x1888, 0x1888, 0x1888 }, +{ 0x1889, 0x1889, 0x1889 }, +{ 0x188A, 0x188A, 0x188A }, +{ 0x188B, 0x188B, 0x188B }, +{ 0x188C, 0x188C, 0x188C }, +{ 0x188D, 0x188D, 0x188D }, +{ 0x188E, 0x188E, 0x188E }, +{ 0x188F, 0x188F, 0x188F }, +{ 0x1890, 0x1890, 0x1890 }, +{ 0x1891, 0x1891, 0x1891 }, +{ 0x1892, 0x1892, 0x1892 }, +{ 0x1893, 0x1893, 0x1893 }, +{ 0x1894, 0x1894, 0x1894 }, +{ 0x1895, 0x1895, 0x1895 }, +{ 0x1896, 0x1896, 0x1896 }, +{ 0x1897, 0x1897, 0x1897 }, +{ 0x1898, 0x1898, 0x1898 }, +{ 0x1899, 0x1899, 0x1899 }, +{ 0x189A, 0x189A, 0x189A }, +{ 0x189B, 0x189B, 0x189B }, +{ 0x189C, 0x189C, 0x189C }, +{ 0x189D, 0x189D, 0x189D }, +{ 0x189E, 0x189E, 0x189E }, +{ 0x189F, 0x189F, 0x189F }, +{ 0x18A0, 0x18A0, 0x18A0 }, +{ 0x18A1, 0x18A1, 0x18A1 }, +{ 0x18A2, 0x18A2, 0x18A2 }, +{ 0x18A3, 0x18A3, 0x18A3 }, +{ 0x18A4, 0x18A4, 0x18A4 }, +{ 0x18A5, 0x18A5, 0x18A5 }, +{ 0x18A6, 0x18A6, 0x18A6 }, +{ 0x18A7, 0x18A7, 0x18A7 }, +{ 0x18A8, 0x18A8, 0x18A8 }, +{ 0x18A9, 0x18A9, 0x18A9 }, +{ 0x1900, 0x1900, 0x1900 }, +{ 0x1901, 0x1901, 0x1901 }, +{ 0x1902, 0x1902, 0x1902 }, +{ 0x1903, 0x1903, 0x1903 }, +{ 0x1904, 0x1904, 0x1904 }, +{ 0x1905, 0x1905, 0x1905 }, +{ 0x1906, 0x1906, 0x1906 }, +{ 0x1907, 0x1907, 0x1907 }, +{ 0x1908, 0x1908, 0x1908 }, +{ 0x1909, 0x1909, 0x1909 }, +{ 0x190A, 0x190A, 0x190A }, +{ 0x190B, 0x190B, 0x190B }, +{ 0x190C, 0x190C, 0x190C }, +{ 0x190D, 0x190D, 0x190D }, +{ 0x190E, 0x190E, 0x190E }, +{ 0x190F, 0x190F, 0x190F }, +{ 0x1910, 0x1910, 0x1910 }, +{ 0x1911, 0x1911, 0x1911 }, +{ 0x1912, 0x1912, 0x1912 }, +{ 0x1913, 0x1913, 0x1913 }, +{ 0x1914, 0x1914, 0x1914 }, +{ 0x1915, 0x1915, 0x1915 }, +{ 0x1916, 0x1916, 0x1916 }, +{ 0x1917, 0x1917, 0x1917 }, +{ 0x1918, 0x1918, 0x1918 }, +{ 0x1919, 0x1919, 0x1919 }, +{ 0x191A, 0x191A, 0x191A }, +{ 0x191B, 0x191B, 0x191B }, +{ 0x191C, 0x191C, 0x191C }, +{ 0x1920, 0x1920, 0x1920 }, +{ 0x1921, 0x1921, 0x1921 }, +{ 0x1922, 0x1922, 0x1922 }, +{ 0x1927, 0x1927, 0x1927 }, +{ 0x1928, 0x1928, 0x1928 }, +{ 0x1932, 0x1932, 0x1932 }, +{ 0x1939, 0x1939, 0x1939 }, +{ 0x193A, 0x193A, 0x193A }, +{ 0x193B, 0x193B, 0x193B }, +{ 0x1950, 0x1950, 0x1950 }, +{ 0x1951, 0x1951, 0x1951 }, +{ 0x1952, 0x1952, 0x1952 }, +{ 0x1953, 0x1953, 0x1953 }, +{ 0x1954, 0x1954, 0x1954 }, +{ 0x1955, 0x1955, 0x1955 }, +{ 0x1956, 0x1956, 0x1956 }, +{ 0x1957, 0x1957, 0x1957 }, +{ 0x1958, 0x1958, 0x1958 }, +{ 0x1959, 0x1959, 0x1959 }, +{ 0x195A, 0x195A, 0x195A }, +{ 0x195B, 0x195B, 0x195B }, +{ 0x195C, 0x195C, 0x195C }, +{ 0x195D, 0x195D, 0x195D }, +{ 0x195E, 0x195E, 0x195E }, +{ 0x195F, 0x195F, 0x195F }, +{ 0x1960, 0x1960, 0x1960 }, +{ 0x1961, 0x1961, 0x1961 }, +{ 0x1962, 0x1962, 0x1962 }, +{ 0x1963, 0x1963, 0x1963 }, +{ 0x1964, 0x1964, 0x1964 }, +{ 0x1965, 0x1965, 0x1965 }, +{ 0x1966, 0x1966, 0x1966 }, +{ 0x1967, 0x1967, 0x1967 }, +{ 0x1968, 0x1968, 0x1968 }, +{ 0x1969, 0x1969, 0x1969 }, +{ 0x196A, 0x196A, 0x196A }, +{ 0x196B, 0x196B, 0x196B }, +{ 0x196C, 0x196C, 0x196C }, +{ 0x196D, 0x196D, 0x196D }, +{ 0x1970, 0x1970, 0x1970 }, +{ 0x1971, 0x1971, 0x1971 }, +{ 0x1972, 0x1972, 0x1972 }, +{ 0x1973, 0x1973, 0x1973 }, +{ 0x1974, 0x1974, 0x1974 }, +{ 0x1980, 0x1980, 0x1980 }, +{ 0x1981, 0x1981, 0x1981 }, +{ 0x1982, 0x1982, 0x1982 }, +{ 0x1983, 0x1983, 0x1983 }, +{ 0x1984, 0x1984, 0x1984 }, +{ 0x1985, 0x1985, 0x1985 }, +{ 0x1986, 0x1986, 0x1986 }, +{ 0x1987, 0x1987, 0x1987 }, +{ 0x1988, 0x1988, 0x1988 }, +{ 0x1989, 0x1989, 0x1989 }, +{ 0x198A, 0x198A, 0x198A }, +{ 0x198B, 0x198B, 0x198B }, +{ 0x198C, 0x198C, 0x198C }, +{ 0x198D, 0x198D, 0x198D }, +{ 0x198E, 0x198E, 0x198E }, +{ 0x198F, 0x198F, 0x198F }, +{ 0x1990, 0x1990, 0x1990 }, +{ 0x1991, 0x1991, 0x1991 }, +{ 0x1992, 0x1992, 0x1992 }, +{ 0x1993, 0x1993, 0x1993 }, +{ 0x1994, 0x1994, 0x1994 }, +{ 0x1995, 0x1995, 0x1995 }, +{ 0x1996, 0x1996, 0x1996 }, +{ 0x1997, 0x1997, 0x1997 }, +{ 0x1998, 0x1998, 0x1998 }, +{ 0x1999, 0x1999, 0x1999 }, +{ 0x199A, 0x199A, 0x199A }, +{ 0x199B, 0x199B, 0x199B }, +{ 0x199C, 0x199C, 0x199C }, +{ 0x199D, 0x199D, 0x199D }, +{ 0x199E, 0x199E, 0x199E }, +{ 0x199F, 0x199F, 0x199F }, +{ 0x19A0, 0x19A0, 0x19A0 }, +{ 0x19A1, 0x19A1, 0x19A1 }, +{ 0x19A2, 0x19A2, 0x19A2 }, +{ 0x19A3, 0x19A3, 0x19A3 }, +{ 0x19A4, 0x19A4, 0x19A4 }, +{ 0x19A5, 0x19A5, 0x19A5 }, +{ 0x19A6, 0x19A6, 0x19A6 }, +{ 0x19A7, 0x19A7, 0x19A7 }, +{ 0x19A8, 0x19A8, 0x19A8 }, +{ 0x19A9, 0x19A9, 0x19A9 }, +{ 0x19C1, 0x19C1, 0x19C1 }, +{ 0x19C2, 0x19C2, 0x19C2 }, +{ 0x19C3, 0x19C3, 0x19C3 }, +{ 0x19C4, 0x19C4, 0x19C4 }, +{ 0x19C5, 0x19C5, 0x19C5 }, +{ 0x19C6, 0x19C6, 0x19C6 }, +{ 0x19C7, 0x19C7, 0x19C7 }, +{ 0x1A00, 0x1A00, 0x1A00 }, +{ 0x1A01, 0x1A01, 0x1A01 }, +{ 0x1A02, 0x1A02, 0x1A02 }, +{ 0x1A03, 0x1A03, 0x1A03 }, +{ 0x1A04, 0x1A04, 0x1A04 }, +{ 0x1A05, 0x1A05, 0x1A05 }, +{ 0x1A06, 0x1A06, 0x1A06 }, +{ 0x1A07, 0x1A07, 0x1A07 }, +{ 0x1A08, 0x1A08, 0x1A08 }, +{ 0x1A09, 0x1A09, 0x1A09 }, +{ 0x1A0A, 0x1A0A, 0x1A0A }, +{ 0x1A0B, 0x1A0B, 0x1A0B }, +{ 0x1A0C, 0x1A0C, 0x1A0C }, +{ 0x1A0D, 0x1A0D, 0x1A0D }, +{ 0x1A0E, 0x1A0E, 0x1A0E }, +{ 0x1A0F, 0x1A0F, 0x1A0F }, +{ 0x1A10, 0x1A10, 0x1A10 }, +{ 0x1A11, 0x1A11, 0x1A11 }, +{ 0x1A12, 0x1A12, 0x1A12 }, +{ 0x1A13, 0x1A13, 0x1A13 }, +{ 0x1A14, 0x1A14, 0x1A14 }, +{ 0x1A15, 0x1A15, 0x1A15 }, +{ 0x1A16, 0x1A16, 0x1A16 }, +{ 0x1A17, 0x1A17, 0x1A17 }, +{ 0x1A18, 0x1A18, 0x1A18 }, +{ 0x1D00, 0x1D00, 0x1D00 }, +{ 0x1D01, 0x1D01, 0x1D01 }, +{ 0x1D02, 0x1D02, 0x1D02 }, +{ 0x1D03, 0x1D03, 0x1D03 }, +{ 0x1D04, 0x1D04, 0x1D04 }, +{ 0x1D05, 0x1D05, 0x1D05 }, +{ 0x1D06, 0x1D06, 0x1D06 }, +{ 0x1D07, 0x1D07, 0x1D07 }, +{ 0x1D08, 0x1D08, 0x1D08 }, +{ 0x1D09, 0x1D09, 0x1D09 }, +{ 0x1D0A, 0x1D0A, 0x1D0A }, +{ 0x1D0B, 0x1D0B, 0x1D0B }, +{ 0x1D0C, 0x1D0C, 0x1D0C }, +{ 0x1D0D, 0x1D0D, 0x1D0D }, +{ 0x1D0E, 0x1D0E, 0x1D0E }, +{ 0x1D0F, 0x1D0F, 0x1D0F }, +{ 0x1D10, 0x1D10, 0x1D10 }, +{ 0x1D11, 0x1D11, 0x1D11 }, +{ 0x1D12, 0x1D12, 0x1D12 }, +{ 0x1D13, 0x1D13, 0x1D13 }, +{ 0x1D14, 0x1D14, 0x1D14 }, +{ 0x1D15, 0x1D15, 0x1D15 }, +{ 0x1D16, 0x1D16, 0x1D16 }, +{ 0x1D17, 0x1D17, 0x1D17 }, +{ 0x1D18, 0x1D18, 0x1D18 }, +{ 0x1D19, 0x1D19, 0x1D19 }, +{ 0x1D1A, 0x1D1A, 0x1D1A }, +{ 0x1D1B, 0x1D1B, 0x1D1B }, +{ 0x1D1C, 0x1D1C, 0x1D1C }, +{ 0x1D1D, 0x1D1D, 0x1D1D }, +{ 0x1D1E, 0x1D1E, 0x1D1E }, +{ 0x1D1F, 0x1D1F, 0x1D1F }, +{ 0x1D20, 0x1D20, 0x1D20 }, +{ 0x1D21, 0x1D21, 0x1D21 }, +{ 0x1D22, 0x1D22, 0x1D22 }, +{ 0x1D23, 0x1D23, 0x1D23 }, +{ 0x1D24, 0x1D24, 0x1D24 }, +{ 0x1D25, 0x1D25, 0x1D25 }, +{ 0x1D26, 0x1D26, 0x1D26 }, +{ 0x1D27, 0x1D27, 0x1D27 }, +{ 0x1D28, 0x1D28, 0x1D28 }, +{ 0x1D29, 0x1D29, 0x1D29 }, +{ 0x1D2A, 0x1D2A, 0x1D2A }, +{ 0x1D2B, 0x1D2B, 0x1D2B }, +{ 0x1D2C, 0x1D2C, 0x1D2C }, +{ 0x1D2D, 0x1D2D, 0x1D2D }, +{ 0x1D2E, 0x1D2E, 0x1D2E }, +{ 0x1D2F, 0x1D2F, 0x1D2F }, +{ 0x1D30, 0x1D30, 0x1D30 }, +{ 0x1D31, 0x1D31, 0x1D31 }, +{ 0x1D32, 0x1D32, 0x1D32 }, +{ 0x1D33, 0x1D33, 0x1D33 }, +{ 0x1D34, 0x1D34, 0x1D34 }, +{ 0x1D35, 0x1D35, 0x1D35 }, +{ 0x1D36, 0x1D36, 0x1D36 }, +{ 0x1D37, 0x1D37, 0x1D37 }, +{ 0x1D38, 0x1D38, 0x1D38 }, +{ 0x1D39, 0x1D39, 0x1D39 }, +{ 0x1D3A, 0x1D3A, 0x1D3A }, +{ 0x1D3B, 0x1D3B, 0x1D3B }, +{ 0x1D3C, 0x1D3C, 0x1D3C }, +{ 0x1D3D, 0x1D3D, 0x1D3D }, +{ 0x1D3E, 0x1D3E, 0x1D3E }, +{ 0x1D3F, 0x1D3F, 0x1D3F }, +{ 0x1D40, 0x1D40, 0x1D40 }, +{ 0x1D41, 0x1D41, 0x1D41 }, +{ 0x1D42, 0x1D42, 0x1D42 }, +{ 0x1D43, 0x1D43, 0x1D43 }, +{ 0x1D44, 0x1D44, 0x1D44 }, +{ 0x1D45, 0x1D45, 0x1D45 }, +{ 0x1D46, 0x1D46, 0x1D46 }, +{ 0x1D47, 0x1D47, 0x1D47 }, +{ 0x1D48, 0x1D48, 0x1D48 }, +{ 0x1D49, 0x1D49, 0x1D49 }, +{ 0x1D4A, 0x1D4A, 0x1D4A }, +{ 0x1D4B, 0x1D4B, 0x1D4B }, +{ 0x1D4C, 0x1D4C, 0x1D4C }, +{ 0x1D4D, 0x1D4D, 0x1D4D }, +{ 0x1D4E, 0x1D4E, 0x1D4E }, +{ 0x1D4F, 0x1D4F, 0x1D4F }, +{ 0x1D50, 0x1D50, 0x1D50 }, +{ 0x1D51, 0x1D51, 0x1D51 }, +{ 0x1D52, 0x1D52, 0x1D52 }, +{ 0x1D53, 0x1D53, 0x1D53 }, +{ 0x1D54, 0x1D54, 0x1D54 }, +{ 0x1D55, 0x1D55, 0x1D55 }, +{ 0x1D56, 0x1D56, 0x1D56 }, +{ 0x1D57, 0x1D57, 0x1D57 }, +{ 0x1D58, 0x1D58, 0x1D58 }, +{ 0x1D59, 0x1D59, 0x1D59 }, +{ 0x1D5A, 0x1D5A, 0x1D5A }, +{ 0x1D5B, 0x1D5B, 0x1D5B }, +{ 0x1D5C, 0x1D5C, 0x1D5C }, +{ 0x1D5D, 0x1D5D, 0x1D5D }, +{ 0x1D5E, 0x1D5E, 0x1D5E }, +{ 0x1D5F, 0x1D5F, 0x1D5F }, +{ 0x1D60, 0x1D60, 0x1D60 }, +{ 0x1D61, 0x1D61, 0x1D61 }, +{ 0x1D62, 0x1D62, 0x1D62 }, +{ 0x1D63, 0x1D63, 0x1D63 }, +{ 0x1D64, 0x1D64, 0x1D64 }, +{ 0x1D65, 0x1D65, 0x1D65 }, +{ 0x1D66, 0x1D66, 0x1D66 }, +{ 0x1D67, 0x1D67, 0x1D67 }, +{ 0x1D68, 0x1D68, 0x1D68 }, +{ 0x1D69, 0x1D69, 0x1D69 }, +{ 0x1D6A, 0x1D6A, 0x1D6A }, +{ 0x1D6B, 0x1D6B, 0x1D6B }, +{ 0x1D6C, 0x1D6C, 0x1D6C }, +{ 0x1D6D, 0x1D6D, 0x1D6D }, +{ 0x1D6E, 0x1D6E, 0x1D6E }, +{ 0x1D6F, 0x1D6F, 0x1D6F }, +{ 0x1D70, 0x1D70, 0x1D70 }, +{ 0x1D71, 0x1D71, 0x1D71 }, +{ 0x1D72, 0x1D72, 0x1D72 }, +{ 0x1D73, 0x1D73, 0x1D73 }, +{ 0x1D74, 0x1D74, 0x1D74 }, +{ 0x1D75, 0x1D75, 0x1D75 }, +{ 0x1D76, 0x1D76, 0x1D76 }, +{ 0x1D77, 0x1D77, 0x1D77 }, +{ 0x1D78, 0x1D78, 0x1D78 }, +{ 0x1D79, 0x1D79, 0x1D79 }, +{ 0x1D7A, 0x1D7A, 0x1D7A }, +{ 0x1D7B, 0x1D7B, 0x1D7B }, +{ 0x1D7C, 0x1D7C, 0x1D7C }, +{ 0x1D7D, 0x1D7D, 0x1D7D }, +{ 0x1D7E, 0x1D7E, 0x1D7E }, +{ 0x1D7F, 0x1D7F, 0x1D7F }, +{ 0x1D80, 0x1D80, 0x1D80 }, +{ 0x1D81, 0x1D81, 0x1D81 }, +{ 0x1D82, 0x1D82, 0x1D82 }, +{ 0x1D83, 0x1D83, 0x1D83 }, +{ 0x1D84, 0x1D84, 0x1D84 }, +{ 0x1D85, 0x1D85, 0x1D85 }, +{ 0x1D86, 0x1D86, 0x1D86 }, +{ 0x1D87, 0x1D87, 0x1D87 }, +{ 0x1D88, 0x1D88, 0x1D88 }, +{ 0x1D89, 0x1D89, 0x1D89 }, +{ 0x1D8A, 0x1D8A, 0x1D8A }, +{ 0x1D8B, 0x1D8B, 0x1D8B }, +{ 0x1D8C, 0x1D8C, 0x1D8C }, +{ 0x1D8D, 0x1D8D, 0x1D8D }, +{ 0x1D8E, 0x1D8E, 0x1D8E }, +{ 0x1D8F, 0x1D8F, 0x1D8F }, +{ 0x1D90, 0x1D90, 0x1D90 }, +{ 0x1D91, 0x1D91, 0x1D91 }, +{ 0x1D92, 0x1D92, 0x1D92 }, +{ 0x1D93, 0x1D93, 0x1D93 }, +{ 0x1D94, 0x1D94, 0x1D94 }, +{ 0x1D95, 0x1D95, 0x1D95 }, +{ 0x1D96, 0x1D96, 0x1D96 }, +{ 0x1D97, 0x1D97, 0x1D97 }, +{ 0x1D98, 0x1D98, 0x1D98 }, +{ 0x1D99, 0x1D99, 0x1D99 }, +{ 0x1D9A, 0x1D9A, 0x1D9A }, +{ 0x1D9B, 0x1D9B, 0x1D9B }, +{ 0x1D9C, 0x1D9C, 0x1D9C }, +{ 0x1D9D, 0x1D9D, 0x1D9D }, +{ 0x1D9E, 0x1D9E, 0x1D9E }, +{ 0x1D9F, 0x1D9F, 0x1D9F }, +{ 0x1DA0, 0x1DA0, 0x1DA0 }, +{ 0x1DA1, 0x1DA1, 0x1DA1 }, +{ 0x1DA2, 0x1DA2, 0x1DA2 }, +{ 0x1DA3, 0x1DA3, 0x1DA3 }, +{ 0x1DA4, 0x1DA4, 0x1DA4 }, +{ 0x1DA5, 0x1DA5, 0x1DA5 }, +{ 0x1DA6, 0x1DA6, 0x1DA6 }, +{ 0x1DA7, 0x1DA7, 0x1DA7 }, +{ 0x1DA8, 0x1DA8, 0x1DA8 }, +{ 0x1DA9, 0x1DA9, 0x1DA9 }, +{ 0x1DAA, 0x1DAA, 0x1DAA }, +{ 0x1DAB, 0x1DAB, 0x1DAB }, +{ 0x1DAC, 0x1DAC, 0x1DAC }, +{ 0x1DAD, 0x1DAD, 0x1DAD }, +{ 0x1DAE, 0x1DAE, 0x1DAE }, +{ 0x1DAF, 0x1DAF, 0x1DAF }, +{ 0x1DB0, 0x1DB0, 0x1DB0 }, +{ 0x1DB1, 0x1DB1, 0x1DB1 }, +{ 0x1DB2, 0x1DB2, 0x1DB2 }, +{ 0x1DB3, 0x1DB3, 0x1DB3 }, +{ 0x1DB4, 0x1DB4, 0x1DB4 }, +{ 0x1DB5, 0x1DB5, 0x1DB5 }, +{ 0x1DB6, 0x1DB6, 0x1DB6 }, +{ 0x1DB7, 0x1DB7, 0x1DB7 }, +{ 0x1DB8, 0x1DB8, 0x1DB8 }, +{ 0x1DB9, 0x1DB9, 0x1DB9 }, +{ 0x1DBA, 0x1DBA, 0x1DBA }, +{ 0x1DBB, 0x1DBB, 0x1DBB }, +{ 0x1DBC, 0x1DBC, 0x1DBC }, +{ 0x1DBD, 0x1DBD, 0x1DBD }, +{ 0x1DBE, 0x1DBE, 0x1DBE }, +{ 0x1DBF, 0x1DBF, 0x1DBF }, +{ 0x1DC0, 0x1DC0, 0x1DC0 }, +{ 0x1DC1, 0x1DC1, 0x1DC1 }, +{ 0x1DC2, 0x1DC2, 0x1DC2 }, +{ 0x1DC3, 0x1DC3, 0x1DC3 }, +{ 0x1E00, 0x1E00, 0x1E01 }, +{ 0x1E01, 0x1E00, 0x1E01 }, +{ 0x1E02, 0x1E02, 0x1E03 }, +{ 0x1E03, 0x1E02, 0x1E03 }, +{ 0x1E04, 0x1E04, 0x1E05 }, +{ 0x1E05, 0x1E04, 0x1E05 }, +{ 0x1E06, 0x1E06, 0x1E07 }, +{ 0x1E07, 0x1E06, 0x1E07 }, +{ 0x1E08, 0x1E08, 0x1E09 }, +{ 0x1E09, 0x1E08, 0x1E09 }, +{ 0x1E0A, 0x1E0A, 0x1E0B }, +{ 0x1E0B, 0x1E0A, 0x1E0B }, +{ 0x1E0C, 0x1E0C, 0x1E0D }, +{ 0x1E0D, 0x1E0C, 0x1E0D }, +{ 0x1E0E, 0x1E0E, 0x1E0F }, +{ 0x1E0F, 0x1E0E, 0x1E0F }, +{ 0x1E10, 0x1E10, 0x1E11 }, +{ 0x1E11, 0x1E10, 0x1E11 }, +{ 0x1E12, 0x1E12, 0x1E13 }, +{ 0x1E13, 0x1E12, 0x1E13 }, +{ 0x1E14, 0x1E14, 0x1E15 }, +{ 0x1E15, 0x1E14, 0x1E15 }, +{ 0x1E16, 0x1E16, 0x1E17 }, +{ 0x1E17, 0x1E16, 0x1E17 }, +{ 0x1E18, 0x1E18, 0x1E19 }, +{ 0x1E19, 0x1E18, 0x1E19 }, +{ 0x1E1A, 0x1E1A, 0x1E1B }, +{ 0x1E1B, 0x1E1A, 0x1E1B }, +{ 0x1E1C, 0x1E1C, 0x1E1D }, +{ 0x1E1D, 0x1E1C, 0x1E1D }, +{ 0x1E1E, 0x1E1E, 0x1E1F }, +{ 0x1E1F, 0x1E1E, 0x1E1F }, +{ 0x1E20, 0x1E20, 0x1E21 }, +{ 0x1E21, 0x1E20, 0x1E21 }, +{ 0x1E22, 0x1E22, 0x1E23 }, +{ 0x1E23, 0x1E22, 0x1E23 }, +{ 0x1E24, 0x1E24, 0x1E25 }, +{ 0x1E25, 0x1E24, 0x1E25 }, +{ 0x1E26, 0x1E26, 0x1E27 }, +{ 0x1E27, 0x1E26, 0x1E27 }, +{ 0x1E28, 0x1E28, 0x1E29 }, +{ 0x1E29, 0x1E28, 0x1E29 }, +{ 0x1E2A, 0x1E2A, 0x1E2B }, +{ 0x1E2B, 0x1E2A, 0x1E2B }, +{ 0x1E2C, 0x1E2C, 0x1E2D }, +{ 0x1E2D, 0x1E2C, 0x1E2D }, +{ 0x1E2E, 0x1E2E, 0x1E2F }, +{ 0x1E2F, 0x1E2E, 0x1E2F }, +{ 0x1E30, 0x1E30, 0x1E31 }, +{ 0x1E31, 0x1E30, 0x1E31 }, +{ 0x1E32, 0x1E32, 0x1E33 }, +{ 0x1E33, 0x1E32, 0x1E33 }, +{ 0x1E34, 0x1E34, 0x1E35 }, +{ 0x1E35, 0x1E34, 0x1E35 }, +{ 0x1E36, 0x1E36, 0x1E37 }, +{ 0x1E37, 0x1E36, 0x1E37 }, +{ 0x1E38, 0x1E38, 0x1E39 }, +{ 0x1E39, 0x1E38, 0x1E39 }, +{ 0x1E3A, 0x1E3A, 0x1E3B }, +{ 0x1E3B, 0x1E3A, 0x1E3B }, +{ 0x1E3C, 0x1E3C, 0x1E3D }, +{ 0x1E3D, 0x1E3C, 0x1E3D }, +{ 0x1E3E, 0x1E3E, 0x1E3F }, +{ 0x1E3F, 0x1E3E, 0x1E3F }, +{ 0x1E40, 0x1E40, 0x1E41 }, +{ 0x1E41, 0x1E40, 0x1E41 }, +{ 0x1E42, 0x1E42, 0x1E43 }, +{ 0x1E43, 0x1E42, 0x1E43 }, +{ 0x1E44, 0x1E44, 0x1E45 }, +{ 0x1E45, 0x1E44, 0x1E45 }, +{ 0x1E46, 0x1E46, 0x1E47 }, +{ 0x1E47, 0x1E46, 0x1E47 }, +{ 0x1E48, 0x1E48, 0x1E49 }, +{ 0x1E49, 0x1E48, 0x1E49 }, +{ 0x1E4A, 0x1E4A, 0x1E4B }, +{ 0x1E4B, 0x1E4A, 0x1E4B }, +{ 0x1E4C, 0x1E4C, 0x1E4D }, +{ 0x1E4D, 0x1E4C, 0x1E4D }, +{ 0x1E4E, 0x1E4E, 0x1E4F }, +{ 0x1E4F, 0x1E4E, 0x1E4F }, +{ 0x1E50, 0x1E50, 0x1E51 }, +{ 0x1E51, 0x1E50, 0x1E51 }, +{ 0x1E52, 0x1E52, 0x1E53 }, +{ 0x1E53, 0x1E52, 0x1E53 }, +{ 0x1E54, 0x1E54, 0x1E55 }, +{ 0x1E55, 0x1E54, 0x1E55 }, +{ 0x1E56, 0x1E56, 0x1E57 }, +{ 0x1E57, 0x1E56, 0x1E57 }, +{ 0x1E58, 0x1E58, 0x1E59 }, +{ 0x1E59, 0x1E58, 0x1E59 }, +{ 0x1E5A, 0x1E5A, 0x1E5B }, +{ 0x1E5B, 0x1E5A, 0x1E5B }, +{ 0x1E5C, 0x1E5C, 0x1E5D }, +{ 0x1E5D, 0x1E5C, 0x1E5D }, +{ 0x1E5E, 0x1E5E, 0x1E5F }, +{ 0x1E5F, 0x1E5E, 0x1E5F }, +{ 0x1E60, 0x1E60, 0x1E61 }, +{ 0x1E61, 0x1E60, 0x1E61 }, +{ 0x1E62, 0x1E62, 0x1E63 }, +{ 0x1E63, 0x1E62, 0x1E63 }, +{ 0x1E64, 0x1E64, 0x1E65 }, +{ 0x1E65, 0x1E64, 0x1E65 }, +{ 0x1E66, 0x1E66, 0x1E67 }, +{ 0x1E67, 0x1E66, 0x1E67 }, +{ 0x1E68, 0x1E68, 0x1E69 }, +{ 0x1E69, 0x1E68, 0x1E69 }, +{ 0x1E6A, 0x1E6A, 0x1E6B }, +{ 0x1E6B, 0x1E6A, 0x1E6B }, +{ 0x1E6C, 0x1E6C, 0x1E6D }, +{ 0x1E6D, 0x1E6C, 0x1E6D }, +{ 0x1E6E, 0x1E6E, 0x1E6F }, +{ 0x1E6F, 0x1E6E, 0x1E6F }, +{ 0x1E70, 0x1E70, 0x1E71 }, +{ 0x1E71, 0x1E70, 0x1E71 }, +{ 0x1E72, 0x1E72, 0x1E73 }, +{ 0x1E73, 0x1E72, 0x1E73 }, +{ 0x1E74, 0x1E74, 0x1E75 }, +{ 0x1E75, 0x1E74, 0x1E75 }, +{ 0x1E76, 0x1E76, 0x1E77 }, +{ 0x1E77, 0x1E76, 0x1E77 }, +{ 0x1E78, 0x1E78, 0x1E79 }, +{ 0x1E79, 0x1E78, 0x1E79 }, +{ 0x1E7A, 0x1E7A, 0x1E7B }, +{ 0x1E7B, 0x1E7A, 0x1E7B }, +{ 0x1E7C, 0x1E7C, 0x1E7D }, +{ 0x1E7D, 0x1E7C, 0x1E7D }, +{ 0x1E7E, 0x1E7E, 0x1E7F }, +{ 0x1E7F, 0x1E7E, 0x1E7F }, +{ 0x1E80, 0x1E80, 0x1E81 }, +{ 0x1E81, 0x1E80, 0x1E81 }, +{ 0x1E82, 0x1E82, 0x1E83 }, +{ 0x1E83, 0x1E82, 0x1E83 }, +{ 0x1E84, 0x1E84, 0x1E85 }, +{ 0x1E85, 0x1E84, 0x1E85 }, +{ 0x1E86, 0x1E86, 0x1E87 }, +{ 0x1E87, 0x1E86, 0x1E87 }, +{ 0x1E88, 0x1E88, 0x1E89 }, +{ 0x1E89, 0x1E88, 0x1E89 }, +{ 0x1E8A, 0x1E8A, 0x1E8B }, +{ 0x1E8B, 0x1E8A, 0x1E8B }, +{ 0x1E8C, 0x1E8C, 0x1E8D }, +{ 0x1E8D, 0x1E8C, 0x1E8D }, +{ 0x1E8E, 0x1E8E, 0x1E8F }, +{ 0x1E8F, 0x1E8E, 0x1E8F }, +{ 0x1E90, 0x1E90, 0x1E91 }, +{ 0x1E91, 0x1E90, 0x1E91 }, +{ 0x1E92, 0x1E92, 0x1E93 }, +{ 0x1E93, 0x1E92, 0x1E93 }, +{ 0x1E94, 0x1E94, 0x1E95 }, +{ 0x1E95, 0x1E94, 0x1E95 }, +{ 0x1E96, 0x1E96, 0x1E96 }, +{ 0x1E97, 0x1E97, 0x1E97 }, +{ 0x1E98, 0x1E98, 0x1E98 }, +{ 0x1E99, 0x1E99, 0x1E99 }, +{ 0x1E9A, 0x1E9A, 0x1E9A }, +{ 0x1E9B, 0x1E60, 0x1E9B }, +{ 0x1EA0, 0x1EA0, 0x1EA1 }, +{ 0x1EA1, 0x1EA0, 0x1EA1 }, +{ 0x1EA2, 0x1EA2, 0x1EA3 }, +{ 0x1EA3, 0x1EA2, 0x1EA3 }, +{ 0x1EA4, 0x1EA4, 0x1EA5 }, +{ 0x1EA5, 0x1EA4, 0x1EA5 }, +{ 0x1EA6, 0x1EA6, 0x1EA7 }, +{ 0x1EA7, 0x1EA6, 0x1EA7 }, +{ 0x1EA8, 0x1EA8, 0x1EA9 }, +{ 0x1EA9, 0x1EA8, 0x1EA9 }, +{ 0x1EAA, 0x1EAA, 0x1EAB }, +{ 0x1EAB, 0x1EAA, 0x1EAB }, +{ 0x1EAC, 0x1EAC, 0x1EAD }, +{ 0x1EAD, 0x1EAC, 0x1EAD }, +{ 0x1EAE, 0x1EAE, 0x1EAF }, +{ 0x1EAF, 0x1EAE, 0x1EAF }, +{ 0x1EB0, 0x1EB0, 0x1EB1 }, +{ 0x1EB1, 0x1EB0, 0x1EB1 }, +{ 0x1EB2, 0x1EB2, 0x1EB3 }, +{ 0x1EB3, 0x1EB2, 0x1EB3 }, +{ 0x1EB4, 0x1EB4, 0x1EB5 }, +{ 0x1EB5, 0x1EB4, 0x1EB5 }, +{ 0x1EB6, 0x1EB6, 0x1EB7 }, +{ 0x1EB7, 0x1EB6, 0x1EB7 }, +{ 0x1EB8, 0x1EB8, 0x1EB9 }, +{ 0x1EB9, 0x1EB8, 0x1EB9 }, +{ 0x1EBA, 0x1EBA, 0x1EBB }, +{ 0x1EBB, 0x1EBA, 0x1EBB }, +{ 0x1EBC, 0x1EBC, 0x1EBD }, +{ 0x1EBD, 0x1EBC, 0x1EBD }, +{ 0x1EBE, 0x1EBE, 0x1EBF }, +{ 0x1EBF, 0x1EBE, 0x1EBF }, +{ 0x1EC0, 0x1EC0, 0x1EC1 }, +{ 0x1EC1, 0x1EC0, 0x1EC1 }, +{ 0x1EC2, 0x1EC2, 0x1EC3 }, +{ 0x1EC3, 0x1EC2, 0x1EC3 }, +{ 0x1EC4, 0x1EC4, 0x1EC5 }, +{ 0x1EC5, 0x1EC4, 0x1EC5 }, +{ 0x1EC6, 0x1EC6, 0x1EC7 }, +{ 0x1EC7, 0x1EC6, 0x1EC7 }, +{ 0x1EC8, 0x1EC8, 0x1EC9 }, +{ 0x1EC9, 0x1EC8, 0x1EC9 }, +{ 0x1ECA, 0x1ECA, 0x1ECB }, +{ 0x1ECB, 0x1ECA, 0x1ECB }, +{ 0x1ECC, 0x1ECC, 0x1ECD }, +{ 0x1ECD, 0x1ECC, 0x1ECD }, +{ 0x1ECE, 0x1ECE, 0x1ECF }, +{ 0x1ECF, 0x1ECE, 0x1ECF }, +{ 0x1ED0, 0x1ED0, 0x1ED1 }, +{ 0x1ED1, 0x1ED0, 0x1ED1 }, +{ 0x1ED2, 0x1ED2, 0x1ED3 }, +{ 0x1ED3, 0x1ED2, 0x1ED3 }, +{ 0x1ED4, 0x1ED4, 0x1ED5 }, +{ 0x1ED5, 0x1ED4, 0x1ED5 }, +{ 0x1ED6, 0x1ED6, 0x1ED7 }, +{ 0x1ED7, 0x1ED6, 0x1ED7 }, +{ 0x1ED8, 0x1ED8, 0x1ED9 }, +{ 0x1ED9, 0x1ED8, 0x1ED9 }, +{ 0x1EDA, 0x1EDA, 0x1EDB }, +{ 0x1EDB, 0x1EDA, 0x1EDB }, +{ 0x1EDC, 0x1EDC, 0x1EDD }, +{ 0x1EDD, 0x1EDC, 0x1EDD }, +{ 0x1EDE, 0x1EDE, 0x1EDF }, +{ 0x1EDF, 0x1EDE, 0x1EDF }, +{ 0x1EE0, 0x1EE0, 0x1EE1 }, +{ 0x1EE1, 0x1EE0, 0x1EE1 }, +{ 0x1EE2, 0x1EE2, 0x1EE3 }, +{ 0x1EE3, 0x1EE2, 0x1EE3 }, +{ 0x1EE4, 0x1EE4, 0x1EE5 }, +{ 0x1EE5, 0x1EE4, 0x1EE5 }, +{ 0x1EE6, 0x1EE6, 0x1EE7 }, +{ 0x1EE7, 0x1EE6, 0x1EE7 }, +{ 0x1EE8, 0x1EE8, 0x1EE9 }, +{ 0x1EE9, 0x1EE8, 0x1EE9 }, +{ 0x1EEA, 0x1EEA, 0x1EEB }, +{ 0x1EEB, 0x1EEA, 0x1EEB }, +{ 0x1EEC, 0x1EEC, 0x1EED }, +{ 0x1EED, 0x1EEC, 0x1EED }, +{ 0x1EEE, 0x1EEE, 0x1EEF }, +{ 0x1EEF, 0x1EEE, 0x1EEF }, +{ 0x1EF0, 0x1EF0, 0x1EF1 }, +{ 0x1EF1, 0x1EF0, 0x1EF1 }, +{ 0x1EF2, 0x1EF2, 0x1EF3 }, +{ 0x1EF3, 0x1EF2, 0x1EF3 }, +{ 0x1EF4, 0x1EF4, 0x1EF5 }, +{ 0x1EF5, 0x1EF4, 0x1EF5 }, +{ 0x1EF6, 0x1EF6, 0x1EF7 }, +{ 0x1EF7, 0x1EF6, 0x1EF7 }, +{ 0x1EF8, 0x1EF8, 0x1EF9 }, +{ 0x1EF9, 0x1EF8, 0x1EF9 }, +{ 0x1F00, 0x1F08, 0x1F00 }, +{ 0x1F01, 0x1F09, 0x1F01 }, +{ 0x1F02, 0x1F0A, 0x1F02 }, +{ 0x1F03, 0x1F0B, 0x1F03 }, +{ 0x1F04, 0x1F0C, 0x1F04 }, +{ 0x1F05, 0x1F0D, 0x1F05 }, +{ 0x1F06, 0x1F0E, 0x1F06 }, +{ 0x1F07, 0x1F0F, 0x1F07 }, +{ 0x1F08, 0x1F08, 0x1F00 }, +{ 0x1F09, 0x1F09, 0x1F01 }, +{ 0x1F0A, 0x1F0A, 0x1F02 }, +{ 0x1F0B, 0x1F0B, 0x1F03 }, +{ 0x1F0C, 0x1F0C, 0x1F04 }, +{ 0x1F0D, 0x1F0D, 0x1F05 }, +{ 0x1F0E, 0x1F0E, 0x1F06 }, +{ 0x1F0F, 0x1F0F, 0x1F07 }, +{ 0x1F10, 0x1F18, 0x1F10 }, +{ 0x1F11, 0x1F19, 0x1F11 }, +{ 0x1F12, 0x1F1A, 0x1F12 }, +{ 0x1F13, 0x1F1B, 0x1F13 }, +{ 0x1F14, 0x1F1C, 0x1F14 }, +{ 0x1F15, 0x1F1D, 0x1F15 }, +{ 0x1F18, 0x1F18, 0x1F10 }, +{ 0x1F19, 0x1F19, 0x1F11 }, +{ 0x1F1A, 0x1F1A, 0x1F12 }, +{ 0x1F1B, 0x1F1B, 0x1F13 }, +{ 0x1F1C, 0x1F1C, 0x1F14 }, +{ 0x1F1D, 0x1F1D, 0x1F15 }, +{ 0x1F20, 0x1F28, 0x1F20 }, +{ 0x1F21, 0x1F29, 0x1F21 }, +{ 0x1F22, 0x1F2A, 0x1F22 }, +{ 0x1F23, 0x1F2B, 0x1F23 }, +{ 0x1F24, 0x1F2C, 0x1F24 }, +{ 0x1F25, 0x1F2D, 0x1F25 }, +{ 0x1F26, 0x1F2E, 0x1F26 }, +{ 0x1F27, 0x1F2F, 0x1F27 }, +{ 0x1F28, 0x1F28, 0x1F20 }, +{ 0x1F29, 0x1F29, 0x1F21 }, +{ 0x1F2A, 0x1F2A, 0x1F22 }, +{ 0x1F2B, 0x1F2B, 0x1F23 }, +{ 0x1F2C, 0x1F2C, 0x1F24 }, +{ 0x1F2D, 0x1F2D, 0x1F25 }, +{ 0x1F2E, 0x1F2E, 0x1F26 }, +{ 0x1F2F, 0x1F2F, 0x1F27 }, +{ 0x1F30, 0x1F38, 0x1F30 }, +{ 0x1F31, 0x1F39, 0x1F31 }, +{ 0x1F32, 0x1F3A, 0x1F32 }, +{ 0x1F33, 0x1F3B, 0x1F33 }, +{ 0x1F34, 0x1F3C, 0x1F34 }, +{ 0x1F35, 0x1F3D, 0x1F35 }, +{ 0x1F36, 0x1F3E, 0x1F36 }, +{ 0x1F37, 0x1F3F, 0x1F37 }, +{ 0x1F38, 0x1F38, 0x1F30 }, +{ 0x1F39, 0x1F39, 0x1F31 }, +{ 0x1F3A, 0x1F3A, 0x1F32 }, +{ 0x1F3B, 0x1F3B, 0x1F33 }, +{ 0x1F3C, 0x1F3C, 0x1F34 }, +{ 0x1F3D, 0x1F3D, 0x1F35 }, +{ 0x1F3E, 0x1F3E, 0x1F36 }, +{ 0x1F3F, 0x1F3F, 0x1F37 }, +{ 0x1F40, 0x1F48, 0x1F40 }, +{ 0x1F41, 0x1F49, 0x1F41 }, +{ 0x1F42, 0x1F4A, 0x1F42 }, +{ 0x1F43, 0x1F4B, 0x1F43 }, +{ 0x1F44, 0x1F4C, 0x1F44 }, +{ 0x1F45, 0x1F4D, 0x1F45 }, +{ 0x1F48, 0x1F48, 0x1F40 }, +{ 0x1F49, 0x1F49, 0x1F41 }, +{ 0x1F4A, 0x1F4A, 0x1F42 }, +{ 0x1F4B, 0x1F4B, 0x1F43 }, +{ 0x1F4C, 0x1F4C, 0x1F44 }, +{ 0x1F4D, 0x1F4D, 0x1F45 }, +{ 0x1F50, 0x1F50, 0x1F50 }, +{ 0x1F51, 0x1F59, 0x1F51 }, +{ 0x1F52, 0x1F52, 0x1F52 }, +{ 0x1F53, 0x1F5B, 0x1F53 }, +{ 0x1F54, 0x1F54, 0x1F54 }, +{ 0x1F55, 0x1F5D, 0x1F55 }, +{ 0x1F56, 0x1F56, 0x1F56 }, +{ 0x1F57, 0x1F5F, 0x1F57 }, +{ 0x1F59, 0x1F59, 0x1F51 }, +{ 0x1F5B, 0x1F5B, 0x1F53 }, +{ 0x1F5D, 0x1F5D, 0x1F55 }, +{ 0x1F5F, 0x1F5F, 0x1F57 }, +{ 0x1F60, 0x1F68, 0x1F60 }, +{ 0x1F61, 0x1F69, 0x1F61 }, +{ 0x1F62, 0x1F6A, 0x1F62 }, +{ 0x1F63, 0x1F6B, 0x1F63 }, +{ 0x1F64, 0x1F6C, 0x1F64 }, +{ 0x1F65, 0x1F6D, 0x1F65 }, +{ 0x1F66, 0x1F6E, 0x1F66 }, +{ 0x1F67, 0x1F6F, 0x1F67 }, +{ 0x1F68, 0x1F68, 0x1F60 }, +{ 0x1F69, 0x1F69, 0x1F61 }, +{ 0x1F6A, 0x1F6A, 0x1F62 }, +{ 0x1F6B, 0x1F6B, 0x1F63 }, +{ 0x1F6C, 0x1F6C, 0x1F64 }, +{ 0x1F6D, 0x1F6D, 0x1F65 }, +{ 0x1F6E, 0x1F6E, 0x1F66 }, +{ 0x1F6F, 0x1F6F, 0x1F67 }, +{ 0x1F70, 0x1FBA, 0x1F70 }, +{ 0x1F71, 0x1FBB, 0x1F71 }, +{ 0x1F72, 0x1FC8, 0x1F72 }, +{ 0x1F73, 0x1FC9, 0x1F73 }, +{ 0x1F74, 0x1FCA, 0x1F74 }, +{ 0x1F75, 0x1FCB, 0x1F75 }, +{ 0x1F76, 0x1FDA, 0x1F76 }, +{ 0x1F77, 0x1FDB, 0x1F77 }, +{ 0x1F78, 0x1FF8, 0x1F78 }, +{ 0x1F79, 0x1FF9, 0x1F79 }, +{ 0x1F7A, 0x1FEA, 0x1F7A }, +{ 0x1F7B, 0x1FEB, 0x1F7B }, +{ 0x1F7C, 0x1FFA, 0x1F7C }, +{ 0x1F7D, 0x1FFB, 0x1F7D }, +{ 0x1F80, 0x1F88, 0x1F80 }, +{ 0x1F81, 0x1F89, 0x1F81 }, +{ 0x1F82, 0x1F8A, 0x1F82 }, +{ 0x1F83, 0x1F8B, 0x1F83 }, +{ 0x1F84, 0x1F8C, 0x1F84 }, +{ 0x1F85, 0x1F8D, 0x1F85 }, +{ 0x1F86, 0x1F8E, 0x1F86 }, +{ 0x1F87, 0x1F8F, 0x1F87 }, +{ 0x1F88, 0x1F88, 0x1F80 }, +{ 0x1F89, 0x1F89, 0x1F81 }, +{ 0x1F8A, 0x1F8A, 0x1F82 }, +{ 0x1F8B, 0x1F8B, 0x1F83 }, +{ 0x1F8C, 0x1F8C, 0x1F84 }, +{ 0x1F8D, 0x1F8D, 0x1F85 }, +{ 0x1F8E, 0x1F8E, 0x1F86 }, +{ 0x1F8F, 0x1F8F, 0x1F87 }, +{ 0x1F90, 0x1F98, 0x1F90 }, +{ 0x1F91, 0x1F99, 0x1F91 }, +{ 0x1F92, 0x1F9A, 0x1F92 }, +{ 0x1F93, 0x1F9B, 0x1F93 }, +{ 0x1F94, 0x1F9C, 0x1F94 }, +{ 0x1F95, 0x1F9D, 0x1F95 }, +{ 0x1F96, 0x1F9E, 0x1F96 }, +{ 0x1F97, 0x1F9F, 0x1F97 }, +{ 0x1F98, 0x1F98, 0x1F90 }, +{ 0x1F99, 0x1F99, 0x1F91 }, +{ 0x1F9A, 0x1F9A, 0x1F92 }, +{ 0x1F9B, 0x1F9B, 0x1F93 }, +{ 0x1F9C, 0x1F9C, 0x1F94 }, +{ 0x1F9D, 0x1F9D, 0x1F95 }, +{ 0x1F9E, 0x1F9E, 0x1F96 }, +{ 0x1F9F, 0x1F9F, 0x1F97 }, +{ 0x1FA0, 0x1FA8, 0x1FA0 }, +{ 0x1FA1, 0x1FA9, 0x1FA1 }, +{ 0x1FA2, 0x1FAA, 0x1FA2 }, +{ 0x1FA3, 0x1FAB, 0x1FA3 }, +{ 0x1FA4, 0x1FAC, 0x1FA4 }, +{ 0x1FA5, 0x1FAD, 0x1FA5 }, +{ 0x1FA6, 0x1FAE, 0x1FA6 }, +{ 0x1FA7, 0x1FAF, 0x1FA7 }, +{ 0x1FA8, 0x1FA8, 0x1FA0 }, +{ 0x1FA9, 0x1FA9, 0x1FA1 }, +{ 0x1FAA, 0x1FAA, 0x1FA2 }, +{ 0x1FAB, 0x1FAB, 0x1FA3 }, +{ 0x1FAC, 0x1FAC, 0x1FA4 }, +{ 0x1FAD, 0x1FAD, 0x1FA5 }, +{ 0x1FAE, 0x1FAE, 0x1FA6 }, +{ 0x1FAF, 0x1FAF, 0x1FA7 }, +{ 0x1FB0, 0x1FB8, 0x1FB0 }, +{ 0x1FB1, 0x1FB9, 0x1FB1 }, +{ 0x1FB2, 0x1FB2, 0x1FB2 }, +{ 0x1FB3, 0x1FBC, 0x1FB3 }, +{ 0x1FB4, 0x1FB4, 0x1FB4 }, +{ 0x1FB6, 0x1FB6, 0x1FB6 }, +{ 0x1FB7, 0x1FB7, 0x1FB7 }, +{ 0x1FB8, 0x1FB8, 0x1FB0 }, +{ 0x1FB9, 0x1FB9, 0x1FB1 }, +{ 0x1FBA, 0x1FBA, 0x1F70 }, +{ 0x1FBB, 0x1FBB, 0x1F71 }, +{ 0x1FBC, 0x1FBC, 0x1FB3 }, +{ 0x1FBE, 0x0399, 0x1FBE }, +{ 0x1FC2, 0x1FC2, 0x1FC2 }, +{ 0x1FC3, 0x1FCC, 0x1FC3 }, +{ 0x1FC4, 0x1FC4, 0x1FC4 }, +{ 0x1FC6, 0x1FC6, 0x1FC6 }, +{ 0x1FC7, 0x1FC7, 0x1FC7 }, +{ 0x1FC8, 0x1FC8, 0x1F72 }, +{ 0x1FC9, 0x1FC9, 0x1F73 }, +{ 0x1FCA, 0x1FCA, 0x1F74 }, +{ 0x1FCB, 0x1FCB, 0x1F75 }, +{ 0x1FCC, 0x1FCC, 0x1FC3 }, +{ 0x1FD0, 0x1FD8, 0x1FD0 }, +{ 0x1FD1, 0x1FD9, 0x1FD1 }, +{ 0x1FD2, 0x1FD2, 0x1FD2 }, +{ 0x1FD3, 0x1FD3, 0x1FD3 }, +{ 0x1FD6, 0x1FD6, 0x1FD6 }, +{ 0x1FD7, 0x1FD7, 0x1FD7 }, +{ 0x1FD8, 0x1FD8, 0x1FD0 }, +{ 0x1FD9, 0x1FD9, 0x1FD1 }, +{ 0x1FDA, 0x1FDA, 0x1F76 }, +{ 0x1FDB, 0x1FDB, 0x1F77 }, +{ 0x1FE0, 0x1FE8, 0x1FE0 }, +{ 0x1FE1, 0x1FE9, 0x1FE1 }, +{ 0x1FE2, 0x1FE2, 0x1FE2 }, +{ 0x1FE3, 0x1FE3, 0x1FE3 }, +{ 0x1FE4, 0x1FE4, 0x1FE4 }, +{ 0x1FE5, 0x1FEC, 0x1FE5 }, +{ 0x1FE6, 0x1FE6, 0x1FE6 }, +{ 0x1FE7, 0x1FE7, 0x1FE7 }, +{ 0x1FE8, 0x1FE8, 0x1FE0 }, +{ 0x1FE9, 0x1FE9, 0x1FE1 }, +{ 0x1FEA, 0x1FEA, 0x1F7A }, +{ 0x1FEB, 0x1FEB, 0x1F7B }, +{ 0x1FEC, 0x1FEC, 0x1FE5 }, +{ 0x1FF2, 0x1FF2, 0x1FF2 }, +{ 0x1FF3, 0x1FFC, 0x1FF3 }, +{ 0x1FF4, 0x1FF4, 0x1FF4 }, +{ 0x1FF6, 0x1FF6, 0x1FF6 }, +{ 0x1FF7, 0x1FF7, 0x1FF7 }, +{ 0x1FF8, 0x1FF8, 0x1F78 }, +{ 0x1FF9, 0x1FF9, 0x1F79 }, +{ 0x1FFA, 0x1FFA, 0x1F7C }, +{ 0x1FFB, 0x1FFB, 0x1F7D }, +{ 0x1FFC, 0x1FFC, 0x1FF3 }, +{ 0x2071, 0x2071, 0x2071 }, +{ 0x207F, 0x207F, 0x207F }, +{ 0x2090, 0x2090, 0x2090 }, +{ 0x2091, 0x2091, 0x2091 }, +{ 0x2092, 0x2092, 0x2092 }, +{ 0x2093, 0x2093, 0x2093 }, +{ 0x2094, 0x2094, 0x2094 }, +{ 0x20D0, 0x20D0, 0x20D0 }, +{ 0x20D1, 0x20D1, 0x20D1 }, +{ 0x20D2, 0x20D2, 0x20D2 }, +{ 0x20D3, 0x20D3, 0x20D3 }, +{ 0x20D4, 0x20D4, 0x20D4 }, +{ 0x20D5, 0x20D5, 0x20D5 }, +{ 0x20D6, 0x20D6, 0x20D6 }, +{ 0x20D7, 0x20D7, 0x20D7 }, +{ 0x20D8, 0x20D8, 0x20D8 }, +{ 0x20D9, 0x20D9, 0x20D9 }, +{ 0x20DA, 0x20DA, 0x20DA }, +{ 0x20DB, 0x20DB, 0x20DB }, +{ 0x20DC, 0x20DC, 0x20DC }, +{ 0x20E1, 0x20E1, 0x20E1 }, +{ 0x20E5, 0x20E5, 0x20E5 }, +{ 0x20E6, 0x20E6, 0x20E6 }, +{ 0x20E7, 0x20E7, 0x20E7 }, +{ 0x20E8, 0x20E8, 0x20E8 }, +{ 0x20E9, 0x20E9, 0x20E9 }, +{ 0x20EA, 0x20EA, 0x20EA }, +{ 0x20EB, 0x20EB, 0x20EB }, +{ 0x2102, 0x2102, 0x2102 }, +{ 0x2107, 0x2107, 0x2107 }, +{ 0x210A, 0x210A, 0x210A }, +{ 0x210B, 0x210B, 0x210B }, +{ 0x210C, 0x210C, 0x210C }, +{ 0x210D, 0x210D, 0x210D }, +{ 0x210E, 0x210E, 0x210E }, +{ 0x210F, 0x210F, 0x210F }, +{ 0x2110, 0x2110, 0x2110 }, +{ 0x2111, 0x2111, 0x2111 }, +{ 0x2112, 0x2112, 0x2112 }, +{ 0x2113, 0x2113, 0x2113 }, +{ 0x2115, 0x2115, 0x2115 }, +{ 0x2119, 0x2119, 0x2119 }, +{ 0x211A, 0x211A, 0x211A }, +{ 0x211B, 0x211B, 0x211B }, +{ 0x211C, 0x211C, 0x211C }, +{ 0x211D, 0x211D, 0x211D }, +{ 0x2124, 0x2124, 0x2124 }, +{ 0x2126, 0x2126, 0x03C9 }, +{ 0x2128, 0x2128, 0x2128 }, +{ 0x212A, 0x212A, 0x006B }, +{ 0x212B, 0x212B, 0x00E5 }, +{ 0x212C, 0x212C, 0x212C }, +{ 0x212D, 0x212D, 0x212D }, +{ 0x212F, 0x212F, 0x212F }, +{ 0x2130, 0x2130, 0x2130 }, +{ 0x2131, 0x2131, 0x2131 }, +{ 0x2133, 0x2133, 0x2133 }, +{ 0x2134, 0x2134, 0x2134 }, +{ 0x2135, 0x2135, 0x2135 }, +{ 0x2136, 0x2136, 0x2136 }, +{ 0x2137, 0x2137, 0x2137 }, +{ 0x2138, 0x2138, 0x2138 }, +{ 0x2139, 0x2139, 0x2139 }, +{ 0x213C, 0x213C, 0x213C }, +{ 0x213D, 0x213D, 0x213D }, +{ 0x213E, 0x213E, 0x213E }, +{ 0x213F, 0x213F, 0x213F }, +{ 0x2145, 0x2145, 0x2145 }, +{ 0x2146, 0x2146, 0x2146 }, +{ 0x2147, 0x2147, 0x2147 }, +{ 0x2148, 0x2148, 0x2148 }, +{ 0x2149, 0x2149, 0x2149 }, +{ 0x2C00, 0x2C00, 0x2C30 }, +{ 0x2C01, 0x2C01, 0x2C31 }, +{ 0x2C02, 0x2C02, 0x2C32 }, +{ 0x2C03, 0x2C03, 0x2C33 }, +{ 0x2C04, 0x2C04, 0x2C34 }, +{ 0x2C05, 0x2C05, 0x2C35 }, +{ 0x2C06, 0x2C06, 0x2C36 }, +{ 0x2C07, 0x2C07, 0x2C37 }, +{ 0x2C08, 0x2C08, 0x2C38 }, +{ 0x2C09, 0x2C09, 0x2C39 }, +{ 0x2C0A, 0x2C0A, 0x2C3A }, +{ 0x2C0B, 0x2C0B, 0x2C3B }, +{ 0x2C0C, 0x2C0C, 0x2C3C }, +{ 0x2C0D, 0x2C0D, 0x2C3D }, +{ 0x2C0E, 0x2C0E, 0x2C3E }, +{ 0x2C0F, 0x2C0F, 0x2C3F }, +{ 0x2C10, 0x2C10, 0x2C40 }, +{ 0x2C11, 0x2C11, 0x2C41 }, +{ 0x2C12, 0x2C12, 0x2C42 }, +{ 0x2C13, 0x2C13, 0x2C43 }, +{ 0x2C14, 0x2C14, 0x2C44 }, +{ 0x2C15, 0x2C15, 0x2C45 }, +{ 0x2C16, 0x2C16, 0x2C46 }, +{ 0x2C17, 0x2C17, 0x2C47 }, +{ 0x2C18, 0x2C18, 0x2C48 }, +{ 0x2C19, 0x2C19, 0x2C49 }, +{ 0x2C1A, 0x2C1A, 0x2C4A }, +{ 0x2C1B, 0x2C1B, 0x2C4B }, +{ 0x2C1C, 0x2C1C, 0x2C4C }, +{ 0x2C1D, 0x2C1D, 0x2C4D }, +{ 0x2C1E, 0x2C1E, 0x2C4E }, +{ 0x2C1F, 0x2C1F, 0x2C4F }, +{ 0x2C20, 0x2C20, 0x2C50 }, +{ 0x2C21, 0x2C21, 0x2C51 }, +{ 0x2C22, 0x2C22, 0x2C52 }, +{ 0x2C23, 0x2C23, 0x2C53 }, +{ 0x2C24, 0x2C24, 0x2C54 }, +{ 0x2C25, 0x2C25, 0x2C55 }, +{ 0x2C26, 0x2C26, 0x2C56 }, +{ 0x2C27, 0x2C27, 0x2C57 }, +{ 0x2C28, 0x2C28, 0x2C58 }, +{ 0x2C29, 0x2C29, 0x2C59 }, +{ 0x2C2A, 0x2C2A, 0x2C5A }, +{ 0x2C2B, 0x2C2B, 0x2C5B }, +{ 0x2C2C, 0x2C2C, 0x2C5C }, +{ 0x2C2D, 0x2C2D, 0x2C5D }, +{ 0x2C2E, 0x2C2E, 0x2C5E }, +{ 0x2C30, 0x2C00, 0x2C30 }, +{ 0x2C31, 0x2C01, 0x2C31 }, +{ 0x2C32, 0x2C02, 0x2C32 }, +{ 0x2C33, 0x2C03, 0x2C33 }, +{ 0x2C34, 0x2C04, 0x2C34 }, +{ 0x2C35, 0x2C05, 0x2C35 }, +{ 0x2C36, 0x2C06, 0x2C36 }, +{ 0x2C37, 0x2C07, 0x2C37 }, +{ 0x2C38, 0x2C08, 0x2C38 }, +{ 0x2C39, 0x2C09, 0x2C39 }, +{ 0x2C3A, 0x2C0A, 0x2C3A }, +{ 0x2C3B, 0x2C0B, 0x2C3B }, +{ 0x2C3C, 0x2C0C, 0x2C3C }, +{ 0x2C3D, 0x2C0D, 0x2C3D }, +{ 0x2C3E, 0x2C0E, 0x2C3E }, +{ 0x2C3F, 0x2C0F, 0x2C3F }, +{ 0x2C40, 0x2C10, 0x2C40 }, +{ 0x2C41, 0x2C11, 0x2C41 }, +{ 0x2C42, 0x2C12, 0x2C42 }, +{ 0x2C43, 0x2C13, 0x2C43 }, +{ 0x2C44, 0x2C14, 0x2C44 }, +{ 0x2C45, 0x2C15, 0x2C45 }, +{ 0x2C46, 0x2C16, 0x2C46 }, +{ 0x2C47, 0x2C17, 0x2C47 }, +{ 0x2C48, 0x2C18, 0x2C48 }, +{ 0x2C49, 0x2C19, 0x2C49 }, +{ 0x2C4A, 0x2C1A, 0x2C4A }, +{ 0x2C4B, 0x2C1B, 0x2C4B }, +{ 0x2C4C, 0x2C1C, 0x2C4C }, +{ 0x2C4D, 0x2C1D, 0x2C4D }, +{ 0x2C4E, 0x2C1E, 0x2C4E }, +{ 0x2C4F, 0x2C1F, 0x2C4F }, +{ 0x2C50, 0x2C20, 0x2C50 }, +{ 0x2C51, 0x2C21, 0x2C51 }, +{ 0x2C52, 0x2C22, 0x2C52 }, +{ 0x2C53, 0x2C23, 0x2C53 }, +{ 0x2C54, 0x2C24, 0x2C54 }, +{ 0x2C55, 0x2C25, 0x2C55 }, +{ 0x2C56, 0x2C26, 0x2C56 }, +{ 0x2C57, 0x2C27, 0x2C57 }, +{ 0x2C58, 0x2C28, 0x2C58 }, +{ 0x2C59, 0x2C29, 0x2C59 }, +{ 0x2C5A, 0x2C2A, 0x2C5A }, +{ 0x2C5B, 0x2C2B, 0x2C5B }, +{ 0x2C5C, 0x2C2C, 0x2C5C }, +{ 0x2C5D, 0x2C2D, 0x2C5D }, +{ 0x2C5E, 0x2C2E, 0x2C5E }, +{ 0x2C80, 0x2C80, 0x2C81 }, +{ 0x2C81, 0x2C80, 0x2C81 }, +{ 0x2C82, 0x2C82, 0x2C83 }, +{ 0x2C83, 0x2C82, 0x2C83 }, +{ 0x2C84, 0x2C84, 0x2C85 }, +{ 0x2C85, 0x2C84, 0x2C85 }, +{ 0x2C86, 0x2C86, 0x2C87 }, +{ 0x2C87, 0x2C86, 0x2C87 }, +{ 0x2C88, 0x2C88, 0x2C89 }, +{ 0x2C89, 0x2C88, 0x2C89 }, +{ 0x2C8A, 0x2C8A, 0x2C8B }, +{ 0x2C8B, 0x2C8A, 0x2C8B }, +{ 0x2C8C, 0x2C8C, 0x2C8D }, +{ 0x2C8D, 0x2C8C, 0x2C8D }, +{ 0x2C8E, 0x2C8E, 0x2C8F }, +{ 0x2C8F, 0x2C8E, 0x2C8F }, +{ 0x2C90, 0x2C90, 0x2C91 }, +{ 0x2C91, 0x2C90, 0x2C91 }, +{ 0x2C92, 0x2C92, 0x2C93 }, +{ 0x2C93, 0x2C92, 0x2C93 }, +{ 0x2C94, 0x2C94, 0x2C95 }, +{ 0x2C95, 0x2C94, 0x2C95 }, +{ 0x2C96, 0x2C96, 0x2C97 }, +{ 0x2C97, 0x2C96, 0x2C97 }, +{ 0x2C98, 0x2C98, 0x2C99 }, +{ 0x2C99, 0x2C98, 0x2C99 }, +{ 0x2C9A, 0x2C9A, 0x2C9B }, +{ 0x2C9B, 0x2C9A, 0x2C9B }, +{ 0x2C9C, 0x2C9C, 0x2C9D }, +{ 0x2C9D, 0x2C9C, 0x2C9D }, +{ 0x2C9E, 0x2C9E, 0x2C9F }, +{ 0x2C9F, 0x2C9E, 0x2C9F }, +{ 0x2CA0, 0x2CA0, 0x2CA1 }, +{ 0x2CA1, 0x2CA0, 0x2CA1 }, +{ 0x2CA2, 0x2CA2, 0x2CA3 }, +{ 0x2CA3, 0x2CA2, 0x2CA3 }, +{ 0x2CA4, 0x2CA4, 0x2CA5 }, +{ 0x2CA5, 0x2CA4, 0x2CA5 }, +{ 0x2CA6, 0x2CA6, 0x2CA7 }, +{ 0x2CA7, 0x2CA6, 0x2CA7 }, +{ 0x2CA8, 0x2CA8, 0x2CA9 }, +{ 0x2CA9, 0x2CA8, 0x2CA9 }, +{ 0x2CAA, 0x2CAA, 0x2CAB }, +{ 0x2CAB, 0x2CAA, 0x2CAB }, +{ 0x2CAC, 0x2CAC, 0x2CAD }, +{ 0x2CAD, 0x2CAC, 0x2CAD }, +{ 0x2CAE, 0x2CAE, 0x2CAF }, +{ 0x2CAF, 0x2CAE, 0x2CAF }, +{ 0x2CB0, 0x2CB0, 0x2CB1 }, +{ 0x2CB1, 0x2CB0, 0x2CB1 }, +{ 0x2CB2, 0x2CB2, 0x2CB3 }, +{ 0x2CB3, 0x2CB2, 0x2CB3 }, +{ 0x2CB4, 0x2CB4, 0x2CB5 }, +{ 0x2CB5, 0x2CB4, 0x2CB5 }, +{ 0x2CB6, 0x2CB6, 0x2CB7 }, +{ 0x2CB7, 0x2CB6, 0x2CB7 }, +{ 0x2CB8, 0x2CB8, 0x2CB9 }, +{ 0x2CB9, 0x2CB8, 0x2CB9 }, +{ 0x2CBA, 0x2CBA, 0x2CBB }, +{ 0x2CBB, 0x2CBA, 0x2CBB }, +{ 0x2CBC, 0x2CBC, 0x2CBD }, +{ 0x2CBD, 0x2CBC, 0x2CBD }, +{ 0x2CBE, 0x2CBE, 0x2CBF }, +{ 0x2CBF, 0x2CBE, 0x2CBF }, +{ 0x2CC0, 0x2CC0, 0x2CC1 }, +{ 0x2CC1, 0x2CC0, 0x2CC1 }, +{ 0x2CC2, 0x2CC2, 0x2CC3 }, +{ 0x2CC3, 0x2CC2, 0x2CC3 }, +{ 0x2CC4, 0x2CC4, 0x2CC5 }, +{ 0x2CC5, 0x2CC4, 0x2CC5 }, +{ 0x2CC6, 0x2CC6, 0x2CC7 }, +{ 0x2CC7, 0x2CC6, 0x2CC7 }, +{ 0x2CC8, 0x2CC8, 0x2CC9 }, +{ 0x2CC9, 0x2CC8, 0x2CC9 }, +{ 0x2CCA, 0x2CCA, 0x2CCB }, +{ 0x2CCB, 0x2CCA, 0x2CCB }, +{ 0x2CCC, 0x2CCC, 0x2CCD }, +{ 0x2CCD, 0x2CCC, 0x2CCD }, +{ 0x2CCE, 0x2CCE, 0x2CCF }, +{ 0x2CCF, 0x2CCE, 0x2CCF }, +{ 0x2CD0, 0x2CD0, 0x2CD1 }, +{ 0x2CD1, 0x2CD0, 0x2CD1 }, +{ 0x2CD2, 0x2CD2, 0x2CD3 }, +{ 0x2CD3, 0x2CD2, 0x2CD3 }, +{ 0x2CD4, 0x2CD4, 0x2CD5 }, +{ 0x2CD5, 0x2CD4, 0x2CD5 }, +{ 0x2CD6, 0x2CD6, 0x2CD7 }, +{ 0x2CD7, 0x2CD6, 0x2CD7 }, +{ 0x2CD8, 0x2CD8, 0x2CD9 }, +{ 0x2CD9, 0x2CD8, 0x2CD9 }, +{ 0x2CDA, 0x2CDA, 0x2CDB }, +{ 0x2CDB, 0x2CDA, 0x2CDB }, +{ 0x2CDC, 0x2CDC, 0x2CDD }, +{ 0x2CDD, 0x2CDC, 0x2CDD }, +{ 0x2CDE, 0x2CDE, 0x2CDF }, +{ 0x2CDF, 0x2CDE, 0x2CDF }, +{ 0x2CE0, 0x2CE0, 0x2CE1 }, +{ 0x2CE1, 0x2CE0, 0x2CE1 }, +{ 0x2CE2, 0x2CE2, 0x2CE3 }, +{ 0x2CE3, 0x2CE2, 0x2CE3 }, +{ 0x2CE4, 0x2CE4, 0x2CE4 }, +{ 0x2D00, 0x10A0, 0x2D00 }, +{ 0x2D01, 0x10A1, 0x2D01 }, +{ 0x2D02, 0x10A2, 0x2D02 }, +{ 0x2D03, 0x10A3, 0x2D03 }, +{ 0x2D04, 0x10A4, 0x2D04 }, +{ 0x2D05, 0x10A5, 0x2D05 }, +{ 0x2D06, 0x10A6, 0x2D06 }, +{ 0x2D07, 0x10A7, 0x2D07 }, +{ 0x2D08, 0x10A8, 0x2D08 }, +{ 0x2D09, 0x10A9, 0x2D09 }, +{ 0x2D0A, 0x10AA, 0x2D0A }, +{ 0x2D0B, 0x10AB, 0x2D0B }, +{ 0x2D0C, 0x10AC, 0x2D0C }, +{ 0x2D0D, 0x10AD, 0x2D0D }, +{ 0x2D0E, 0x10AE, 0x2D0E }, +{ 0x2D0F, 0x10AF, 0x2D0F }, +{ 0x2D10, 0x10B0, 0x2D10 }, +{ 0x2D11, 0x10B1, 0x2D11 }, +{ 0x2D12, 0x10B2, 0x2D12 }, +{ 0x2D13, 0x10B3, 0x2D13 }, +{ 0x2D14, 0x10B4, 0x2D14 }, +{ 0x2D15, 0x10B5, 0x2D15 }, +{ 0x2D16, 0x10B6, 0x2D16 }, +{ 0x2D17, 0x10B7, 0x2D17 }, +{ 0x2D18, 0x10B8, 0x2D18 }, +{ 0x2D19, 0x10B9, 0x2D19 }, +{ 0x2D1A, 0x10BA, 0x2D1A }, +{ 0x2D1B, 0x10BB, 0x2D1B }, +{ 0x2D1C, 0x10BC, 0x2D1C }, +{ 0x2D1D, 0x10BD, 0x2D1D }, +{ 0x2D1E, 0x10BE, 0x2D1E }, +{ 0x2D1F, 0x10BF, 0x2D1F }, +{ 0x2D20, 0x10C0, 0x2D20 }, +{ 0x2D21, 0x10C1, 0x2D21 }, +{ 0x2D22, 0x10C2, 0x2D22 }, +{ 0x2D23, 0x10C3, 0x2D23 }, +{ 0x2D24, 0x10C4, 0x2D24 }, +{ 0x2D25, 0x10C5, 0x2D25 }, +{ 0x2D30, 0x2D30, 0x2D30 }, +{ 0x2D31, 0x2D31, 0x2D31 }, +{ 0x2D32, 0x2D32, 0x2D32 }, +{ 0x2D33, 0x2D33, 0x2D33 }, +{ 0x2D34, 0x2D34, 0x2D34 }, +{ 0x2D35, 0x2D35, 0x2D35 }, +{ 0x2D36, 0x2D36, 0x2D36 }, +{ 0x2D37, 0x2D37, 0x2D37 }, +{ 0x2D38, 0x2D38, 0x2D38 }, +{ 0x2D39, 0x2D39, 0x2D39 }, +{ 0x2D3A, 0x2D3A, 0x2D3A }, +{ 0x2D3B, 0x2D3B, 0x2D3B }, +{ 0x2D3C, 0x2D3C, 0x2D3C }, +{ 0x2D3D, 0x2D3D, 0x2D3D }, +{ 0x2D3E, 0x2D3E, 0x2D3E }, +{ 0x2D3F, 0x2D3F, 0x2D3F }, +{ 0x2D40, 0x2D40, 0x2D40 }, +{ 0x2D41, 0x2D41, 0x2D41 }, +{ 0x2D42, 0x2D42, 0x2D42 }, +{ 0x2D43, 0x2D43, 0x2D43 }, +{ 0x2D44, 0x2D44, 0x2D44 }, +{ 0x2D45, 0x2D45, 0x2D45 }, +{ 0x2D46, 0x2D46, 0x2D46 }, +{ 0x2D47, 0x2D47, 0x2D47 }, +{ 0x2D48, 0x2D48, 0x2D48 }, +{ 0x2D49, 0x2D49, 0x2D49 }, +{ 0x2D4A, 0x2D4A, 0x2D4A }, +{ 0x2D4B, 0x2D4B, 0x2D4B }, +{ 0x2D4C, 0x2D4C, 0x2D4C }, +{ 0x2D4D, 0x2D4D, 0x2D4D }, +{ 0x2D4E, 0x2D4E, 0x2D4E }, +{ 0x2D4F, 0x2D4F, 0x2D4F }, +{ 0x2D50, 0x2D50, 0x2D50 }, +{ 0x2D51, 0x2D51, 0x2D51 }, +{ 0x2D52, 0x2D52, 0x2D52 }, +{ 0x2D53, 0x2D53, 0x2D53 }, +{ 0x2D54, 0x2D54, 0x2D54 }, +{ 0x2D55, 0x2D55, 0x2D55 }, +{ 0x2D56, 0x2D56, 0x2D56 }, +{ 0x2D57, 0x2D57, 0x2D57 }, +{ 0x2D58, 0x2D58, 0x2D58 }, +{ 0x2D59, 0x2D59, 0x2D59 }, +{ 0x2D5A, 0x2D5A, 0x2D5A }, +{ 0x2D5B, 0x2D5B, 0x2D5B }, +{ 0x2D5C, 0x2D5C, 0x2D5C }, +{ 0x2D5D, 0x2D5D, 0x2D5D }, +{ 0x2D5E, 0x2D5E, 0x2D5E }, +{ 0x2D5F, 0x2D5F, 0x2D5F }, +{ 0x2D60, 0x2D60, 0x2D60 }, +{ 0x2D61, 0x2D61, 0x2D61 }, +{ 0x2D62, 0x2D62, 0x2D62 }, +{ 0x2D63, 0x2D63, 0x2D63 }, +{ 0x2D64, 0x2D64, 0x2D64 }, +{ 0x2D65, 0x2D65, 0x2D65 }, +{ 0x2D6F, 0x2D6F, 0x2D6F }, +{ 0x2D80, 0x2D80, 0x2D80 }, +{ 0x2D81, 0x2D81, 0x2D81 }, +{ 0x2D82, 0x2D82, 0x2D82 }, +{ 0x2D83, 0x2D83, 0x2D83 }, +{ 0x2D84, 0x2D84, 0x2D84 }, +{ 0x2D85, 0x2D85, 0x2D85 }, +{ 0x2D86, 0x2D86, 0x2D86 }, +{ 0x2D87, 0x2D87, 0x2D87 }, +{ 0x2D88, 0x2D88, 0x2D88 }, +{ 0x2D89, 0x2D89, 0x2D89 }, +{ 0x2D8A, 0x2D8A, 0x2D8A }, +{ 0x2D8B, 0x2D8B, 0x2D8B }, +{ 0x2D8C, 0x2D8C, 0x2D8C }, +{ 0x2D8D, 0x2D8D, 0x2D8D }, +{ 0x2D8E, 0x2D8E, 0x2D8E }, +{ 0x2D8F, 0x2D8F, 0x2D8F }, +{ 0x2D90, 0x2D90, 0x2D90 }, +{ 0x2D91, 0x2D91, 0x2D91 }, +{ 0x2D92, 0x2D92, 0x2D92 }, +{ 0x2D93, 0x2D93, 0x2D93 }, +{ 0x2D94, 0x2D94, 0x2D94 }, +{ 0x2D95, 0x2D95, 0x2D95 }, +{ 0x2D96, 0x2D96, 0x2D96 }, +{ 0x2DA0, 0x2DA0, 0x2DA0 }, +{ 0x2DA1, 0x2DA1, 0x2DA1 }, +{ 0x2DA2, 0x2DA2, 0x2DA2 }, +{ 0x2DA3, 0x2DA3, 0x2DA3 }, +{ 0x2DA4, 0x2DA4, 0x2DA4 }, +{ 0x2DA5, 0x2DA5, 0x2DA5 }, +{ 0x2DA6, 0x2DA6, 0x2DA6 }, +{ 0x2DA8, 0x2DA8, 0x2DA8 }, +{ 0x2DA9, 0x2DA9, 0x2DA9 }, +{ 0x2DAA, 0x2DAA, 0x2DAA }, +{ 0x2DAB, 0x2DAB, 0x2DAB }, +{ 0x2DAC, 0x2DAC, 0x2DAC }, +{ 0x2DAD, 0x2DAD, 0x2DAD }, +{ 0x2DAE, 0x2DAE, 0x2DAE }, +{ 0x2DB0, 0x2DB0, 0x2DB0 }, +{ 0x2DB1, 0x2DB1, 0x2DB1 }, +{ 0x2DB2, 0x2DB2, 0x2DB2 }, +{ 0x2DB3, 0x2DB3, 0x2DB3 }, +{ 0x2DB4, 0x2DB4, 0x2DB4 }, +{ 0x2DB5, 0x2DB5, 0x2DB5 }, +{ 0x2DB6, 0x2DB6, 0x2DB6 }, +{ 0x2DB8, 0x2DB8, 0x2DB8 }, +{ 0x2DB9, 0x2DB9, 0x2DB9 }, +{ 0x2DBA, 0x2DBA, 0x2DBA }, +{ 0x2DBB, 0x2DBB, 0x2DBB }, +{ 0x2DBC, 0x2DBC, 0x2DBC }, +{ 0x2DBD, 0x2DBD, 0x2DBD }, +{ 0x2DBE, 0x2DBE, 0x2DBE }, +{ 0x2DC0, 0x2DC0, 0x2DC0 }, +{ 0x2DC1, 0x2DC1, 0x2DC1 }, +{ 0x2DC2, 0x2DC2, 0x2DC2 }, +{ 0x2DC3, 0x2DC3, 0x2DC3 }, +{ 0x2DC4, 0x2DC4, 0x2DC4 }, +{ 0x2DC5, 0x2DC5, 0x2DC5 }, +{ 0x2DC6, 0x2DC6, 0x2DC6 }, +{ 0x2DC8, 0x2DC8, 0x2DC8 }, +{ 0x2DC9, 0x2DC9, 0x2DC9 }, +{ 0x2DCA, 0x2DCA, 0x2DCA }, +{ 0x2DCB, 0x2DCB, 0x2DCB }, +{ 0x2DCC, 0x2DCC, 0x2DCC }, +{ 0x2DCD, 0x2DCD, 0x2DCD }, +{ 0x2DCE, 0x2DCE, 0x2DCE }, +{ 0x2DD0, 0x2DD0, 0x2DD0 }, +{ 0x2DD1, 0x2DD1, 0x2DD1 }, +{ 0x2DD2, 0x2DD2, 0x2DD2 }, +{ 0x2DD3, 0x2DD3, 0x2DD3 }, +{ 0x2DD4, 0x2DD4, 0x2DD4 }, +{ 0x2DD5, 0x2DD5, 0x2DD5 }, +{ 0x2DD6, 0x2DD6, 0x2DD6 }, +{ 0x2DD8, 0x2DD8, 0x2DD8 }, +{ 0x2DD9, 0x2DD9, 0x2DD9 }, +{ 0x2DDA, 0x2DDA, 0x2DDA }, +{ 0x2DDB, 0x2DDB, 0x2DDB }, +{ 0x2DDC, 0x2DDC, 0x2DDC }, +{ 0x2DDD, 0x2DDD, 0x2DDD }, +{ 0x2DDE, 0x2DDE, 0x2DDE }, +{ 0x3005, 0x3005, 0x3005 }, +{ 0x3006, 0x3006, 0x3006 }, +{ 0x302A, 0x302A, 0x302A }, +{ 0x302B, 0x302B, 0x302B }, +{ 0x302C, 0x302C, 0x302C }, +{ 0x302D, 0x302D, 0x302D }, +{ 0x302E, 0x302E, 0x302E }, +{ 0x302F, 0x302F, 0x302F }, +{ 0x3031, 0x3031, 0x3031 }, +{ 0x3032, 0x3032, 0x3032 }, +{ 0x3033, 0x3033, 0x3033 }, +{ 0x3034, 0x3034, 0x3034 }, +{ 0x3035, 0x3035, 0x3035 }, +{ 0x303B, 0x303B, 0x303B }, +{ 0x303C, 0x303C, 0x303C }, +{ 0x3041, 0x3041, 0x3041 }, +{ 0x3042, 0x3042, 0x3042 }, +{ 0x3043, 0x3043, 0x3043 }, +{ 0x3044, 0x3044, 0x3044 }, +{ 0x3045, 0x3045, 0x3045 }, +{ 0x3046, 0x3046, 0x3046 }, +{ 0x3047, 0x3047, 0x3047 }, +{ 0x3048, 0x3048, 0x3048 }, +{ 0x3049, 0x3049, 0x3049 }, +{ 0x304A, 0x304A, 0x304A }, +{ 0x304B, 0x304B, 0x304B }, +{ 0x304C, 0x304C, 0x304C }, +{ 0x304D, 0x304D, 0x304D }, +{ 0x304E, 0x304E, 0x304E }, +{ 0x304F, 0x304F, 0x304F }, +{ 0x3050, 0x3050, 0x3050 }, +{ 0x3051, 0x3051, 0x3051 }, +{ 0x3052, 0x3052, 0x3052 }, +{ 0x3053, 0x3053, 0x3053 }, +{ 0x3054, 0x3054, 0x3054 }, +{ 0x3055, 0x3055, 0x3055 }, +{ 0x3056, 0x3056, 0x3056 }, +{ 0x3057, 0x3057, 0x3057 }, +{ 0x3058, 0x3058, 0x3058 }, +{ 0x3059, 0x3059, 0x3059 }, +{ 0x305A, 0x305A, 0x305A }, +{ 0x305B, 0x305B, 0x305B }, +{ 0x305C, 0x305C, 0x305C }, +{ 0x305D, 0x305D, 0x305D }, +{ 0x305E, 0x305E, 0x305E }, +{ 0x305F, 0x305F, 0x305F }, +{ 0x3060, 0x3060, 0x3060 }, +{ 0x3061, 0x3061, 0x3061 }, +{ 0x3062, 0x3062, 0x3062 }, +{ 0x3063, 0x3063, 0x3063 }, +{ 0x3064, 0x3064, 0x3064 }, +{ 0x3065, 0x3065, 0x3065 }, +{ 0x3066, 0x3066, 0x3066 }, +{ 0x3067, 0x3067, 0x3067 }, +{ 0x3068, 0x3068, 0x3068 }, +{ 0x3069, 0x3069, 0x3069 }, +{ 0x306A, 0x306A, 0x306A }, +{ 0x306B, 0x306B, 0x306B }, +{ 0x306C, 0x306C, 0x306C }, +{ 0x306D, 0x306D, 0x306D }, +{ 0x306E, 0x306E, 0x306E }, +{ 0x306F, 0x306F, 0x306F }, +{ 0x3070, 0x3070, 0x3070 }, +{ 0x3071, 0x3071, 0x3071 }, +{ 0x3072, 0x3072, 0x3072 }, +{ 0x3073, 0x3073, 0x3073 }, +{ 0x3074, 0x3074, 0x3074 }, +{ 0x3075, 0x3075, 0x3075 }, +{ 0x3076, 0x3076, 0x3076 }, +{ 0x3077, 0x3077, 0x3077 }, +{ 0x3078, 0x3078, 0x3078 }, +{ 0x3079, 0x3079, 0x3079 }, +{ 0x307A, 0x307A, 0x307A }, +{ 0x307B, 0x307B, 0x307B }, +{ 0x307C, 0x307C, 0x307C }, +{ 0x307D, 0x307D, 0x307D }, +{ 0x307E, 0x307E, 0x307E }, +{ 0x307F, 0x307F, 0x307F }, +{ 0x3080, 0x3080, 0x3080 }, +{ 0x3081, 0x3081, 0x3081 }, +{ 0x3082, 0x3082, 0x3082 }, +{ 0x3083, 0x3083, 0x3083 }, +{ 0x3084, 0x3084, 0x3084 }, +{ 0x3085, 0x3085, 0x3085 }, +{ 0x3086, 0x3086, 0x3086 }, +{ 0x3087, 0x3087, 0x3087 }, +{ 0x3088, 0x3088, 0x3088 }, +{ 0x3089, 0x3089, 0x3089 }, +{ 0x308A, 0x308A, 0x308A }, +{ 0x308B, 0x308B, 0x308B }, +{ 0x308C, 0x308C, 0x308C }, +{ 0x308D, 0x308D, 0x308D }, +{ 0x308E, 0x308E, 0x308E }, +{ 0x308F, 0x308F, 0x308F }, +{ 0x3090, 0x3090, 0x3090 }, +{ 0x3091, 0x3091, 0x3091 }, +{ 0x3092, 0x3092, 0x3092 }, +{ 0x3093, 0x3093, 0x3093 }, +{ 0x3094, 0x3094, 0x3094 }, +{ 0x3095, 0x3095, 0x3095 }, +{ 0x3096, 0x3096, 0x3096 }, +{ 0x3099, 0x3099, 0x3099 }, +{ 0x309A, 0x309A, 0x309A }, +{ 0x309D, 0x309D, 0x309D }, +{ 0x309E, 0x309E, 0x309E }, +{ 0x309F, 0x309F, 0x309F }, +{ 0x30A1, 0x30A1, 0x30A1 }, +{ 0x30A2, 0x30A2, 0x30A2 }, +{ 0x30A3, 0x30A3, 0x30A3 }, +{ 0x30A4, 0x30A4, 0x30A4 }, +{ 0x30A5, 0x30A5, 0x30A5 }, +{ 0x30A6, 0x30A6, 0x30A6 }, +{ 0x30A7, 0x30A7, 0x30A7 }, +{ 0x30A8, 0x30A8, 0x30A8 }, +{ 0x30A9, 0x30A9, 0x30A9 }, +{ 0x30AA, 0x30AA, 0x30AA }, +{ 0x30AB, 0x30AB, 0x30AB }, +{ 0x30AC, 0x30AC, 0x30AC }, +{ 0x30AD, 0x30AD, 0x30AD }, +{ 0x30AE, 0x30AE, 0x30AE }, +{ 0x30AF, 0x30AF, 0x30AF }, +{ 0x30B0, 0x30B0, 0x30B0 }, +{ 0x30B1, 0x30B1, 0x30B1 }, +{ 0x30B2, 0x30B2, 0x30B2 }, +{ 0x30B3, 0x30B3, 0x30B3 }, +{ 0x30B4, 0x30B4, 0x30B4 }, +{ 0x30B5, 0x30B5, 0x30B5 }, +{ 0x30B6, 0x30B6, 0x30B6 }, +{ 0x30B7, 0x30B7, 0x30B7 }, +{ 0x30B8, 0x30B8, 0x30B8 }, +{ 0x30B9, 0x30B9, 0x30B9 }, +{ 0x30BA, 0x30BA, 0x30BA }, +{ 0x30BB, 0x30BB, 0x30BB }, +{ 0x30BC, 0x30BC, 0x30BC }, +{ 0x30BD, 0x30BD, 0x30BD }, +{ 0x30BE, 0x30BE, 0x30BE }, +{ 0x30BF, 0x30BF, 0x30BF }, +{ 0x30C0, 0x30C0, 0x30C0 }, +{ 0x30C1, 0x30C1, 0x30C1 }, +{ 0x30C2, 0x30C2, 0x30C2 }, +{ 0x30C3, 0x30C3, 0x30C3 }, +{ 0x30C4, 0x30C4, 0x30C4 }, +{ 0x30C5, 0x30C5, 0x30C5 }, +{ 0x30C6, 0x30C6, 0x30C6 }, +{ 0x30C7, 0x30C7, 0x30C7 }, +{ 0x30C8, 0x30C8, 0x30C8 }, +{ 0x30C9, 0x30C9, 0x30C9 }, +{ 0x30CA, 0x30CA, 0x30CA }, +{ 0x30CB, 0x30CB, 0x30CB }, +{ 0x30CC, 0x30CC, 0x30CC }, +{ 0x30CD, 0x30CD, 0x30CD }, +{ 0x30CE, 0x30CE, 0x30CE }, +{ 0x30CF, 0x30CF, 0x30CF }, +{ 0x30D0, 0x30D0, 0x30D0 }, +{ 0x30D1, 0x30D1, 0x30D1 }, +{ 0x30D2, 0x30D2, 0x30D2 }, +{ 0x30D3, 0x30D3, 0x30D3 }, +{ 0x30D4, 0x30D4, 0x30D4 }, +{ 0x30D5, 0x30D5, 0x30D5 }, +{ 0x30D6, 0x30D6, 0x30D6 }, +{ 0x30D7, 0x30D7, 0x30D7 }, +{ 0x30D8, 0x30D8, 0x30D8 }, +{ 0x30D9, 0x30D9, 0x30D9 }, +{ 0x30DA, 0x30DA, 0x30DA }, +{ 0x30DB, 0x30DB, 0x30DB }, +{ 0x30DC, 0x30DC, 0x30DC }, +{ 0x30DD, 0x30DD, 0x30DD }, +{ 0x30DE, 0x30DE, 0x30DE }, +{ 0x30DF, 0x30DF, 0x30DF }, +{ 0x30E0, 0x30E0, 0x30E0 }, +{ 0x30E1, 0x30E1, 0x30E1 }, +{ 0x30E2, 0x30E2, 0x30E2 }, +{ 0x30E3, 0x30E3, 0x30E3 }, +{ 0x30E4, 0x30E4, 0x30E4 }, +{ 0x30E5, 0x30E5, 0x30E5 }, +{ 0x30E6, 0x30E6, 0x30E6 }, +{ 0x30E7, 0x30E7, 0x30E7 }, +{ 0x30E8, 0x30E8, 0x30E8 }, +{ 0x30E9, 0x30E9, 0x30E9 }, +{ 0x30EA, 0x30EA, 0x30EA }, +{ 0x30EB, 0x30EB, 0x30EB }, +{ 0x30EC, 0x30EC, 0x30EC }, +{ 0x30ED, 0x30ED, 0x30ED }, +{ 0x30EE, 0x30EE, 0x30EE }, +{ 0x30EF, 0x30EF, 0x30EF }, +{ 0x30F0, 0x30F0, 0x30F0 }, +{ 0x30F1, 0x30F1, 0x30F1 }, +{ 0x30F2, 0x30F2, 0x30F2 }, +{ 0x30F3, 0x30F3, 0x30F3 }, +{ 0x30F4, 0x30F4, 0x30F4 }, +{ 0x30F5, 0x30F5, 0x30F5 }, +{ 0x30F6, 0x30F6, 0x30F6 }, +{ 0x30F7, 0x30F7, 0x30F7 }, +{ 0x30F8, 0x30F8, 0x30F8 }, +{ 0x30F9, 0x30F9, 0x30F9 }, +{ 0x30FA, 0x30FA, 0x30FA }, +{ 0x30FC, 0x30FC, 0x30FC }, +{ 0x30FD, 0x30FD, 0x30FD }, +{ 0x30FE, 0x30FE, 0x30FE }, +{ 0x30FF, 0x30FF, 0x30FF }, +{ 0x3105, 0x3105, 0x3105 }, +{ 0x3106, 0x3106, 0x3106 }, +{ 0x3107, 0x3107, 0x3107 }, +{ 0x3108, 0x3108, 0x3108 }, +{ 0x3109, 0x3109, 0x3109 }, +{ 0x310A, 0x310A, 0x310A }, +{ 0x310B, 0x310B, 0x310B }, +{ 0x310C, 0x310C, 0x310C }, +{ 0x310D, 0x310D, 0x310D }, +{ 0x310E, 0x310E, 0x310E }, +{ 0x310F, 0x310F, 0x310F }, +{ 0x3110, 0x3110, 0x3110 }, +{ 0x3111, 0x3111, 0x3111 }, +{ 0x3112, 0x3112, 0x3112 }, +{ 0x3113, 0x3113, 0x3113 }, +{ 0x3114, 0x3114, 0x3114 }, +{ 0x3115, 0x3115, 0x3115 }, +{ 0x3116, 0x3116, 0x3116 }, +{ 0x3117, 0x3117, 0x3117 }, +{ 0x3118, 0x3118, 0x3118 }, +{ 0x3119, 0x3119, 0x3119 }, +{ 0x311A, 0x311A, 0x311A }, +{ 0x311B, 0x311B, 0x311B }, +{ 0x311C, 0x311C, 0x311C }, +{ 0x311D, 0x311D, 0x311D }, +{ 0x311E, 0x311E, 0x311E }, +{ 0x311F, 0x311F, 0x311F }, +{ 0x3120, 0x3120, 0x3120 }, +{ 0x3121, 0x3121, 0x3121 }, +{ 0x3122, 0x3122, 0x3122 }, +{ 0x3123, 0x3123, 0x3123 }, +{ 0x3124, 0x3124, 0x3124 }, +{ 0x3125, 0x3125, 0x3125 }, +{ 0x3126, 0x3126, 0x3126 }, +{ 0x3127, 0x3127, 0x3127 }, +{ 0x3128, 0x3128, 0x3128 }, +{ 0x3129, 0x3129, 0x3129 }, +{ 0x312A, 0x312A, 0x312A }, +{ 0x312B, 0x312B, 0x312B }, +{ 0x312C, 0x312C, 0x312C }, +{ 0x3131, 0x3131, 0x3131 }, +{ 0x3132, 0x3132, 0x3132 }, +{ 0x3133, 0x3133, 0x3133 }, +{ 0x3134, 0x3134, 0x3134 }, +{ 0x3135, 0x3135, 0x3135 }, +{ 0x3136, 0x3136, 0x3136 }, +{ 0x3137, 0x3137, 0x3137 }, +{ 0x3138, 0x3138, 0x3138 }, +{ 0x3139, 0x3139, 0x3139 }, +{ 0x313A, 0x313A, 0x313A }, +{ 0x313B, 0x313B, 0x313B }, +{ 0x313C, 0x313C, 0x313C }, +{ 0x313D, 0x313D, 0x313D }, +{ 0x313E, 0x313E, 0x313E }, +{ 0x313F, 0x313F, 0x313F }, +{ 0x3140, 0x3140, 0x3140 }, +{ 0x3141, 0x3141, 0x3141 }, +{ 0x3142, 0x3142, 0x3142 }, +{ 0x3143, 0x3143, 0x3143 }, +{ 0x3144, 0x3144, 0x3144 }, +{ 0x3145, 0x3145, 0x3145 }, +{ 0x3146, 0x3146, 0x3146 }, +{ 0x3147, 0x3147, 0x3147 }, +{ 0x3148, 0x3148, 0x3148 }, +{ 0x3149, 0x3149, 0x3149 }, +{ 0x314A, 0x314A, 0x314A }, +{ 0x314B, 0x314B, 0x314B }, +{ 0x314C, 0x314C, 0x314C }, +{ 0x314D, 0x314D, 0x314D }, +{ 0x314E, 0x314E, 0x314E }, +{ 0x314F, 0x314F, 0x314F }, +{ 0x3150, 0x3150, 0x3150 }, +{ 0x3151, 0x3151, 0x3151 }, +{ 0x3152, 0x3152, 0x3152 }, +{ 0x3153, 0x3153, 0x3153 }, +{ 0x3154, 0x3154, 0x3154 }, +{ 0x3155, 0x3155, 0x3155 }, +{ 0x3156, 0x3156, 0x3156 }, +{ 0x3157, 0x3157, 0x3157 }, +{ 0x3158, 0x3158, 0x3158 }, +{ 0x3159, 0x3159, 0x3159 }, +{ 0x315A, 0x315A, 0x315A }, +{ 0x315B, 0x315B, 0x315B }, +{ 0x315C, 0x315C, 0x315C }, +{ 0x315D, 0x315D, 0x315D }, +{ 0x315E, 0x315E, 0x315E }, +{ 0x315F, 0x315F, 0x315F }, +{ 0x3160, 0x3160, 0x3160 }, +{ 0x3161, 0x3161, 0x3161 }, +{ 0x3162, 0x3162, 0x3162 }, +{ 0x3163, 0x3163, 0x3163 }, +{ 0x3164, 0x3164, 0x3164 }, +{ 0x3165, 0x3165, 0x3165 }, +{ 0x3166, 0x3166, 0x3166 }, +{ 0x3167, 0x3167, 0x3167 }, +{ 0x3168, 0x3168, 0x3168 }, +{ 0x3169, 0x3169, 0x3169 }, +{ 0x316A, 0x316A, 0x316A }, +{ 0x316B, 0x316B, 0x316B }, +{ 0x316C, 0x316C, 0x316C }, +{ 0x316D, 0x316D, 0x316D }, +{ 0x316E, 0x316E, 0x316E }, +{ 0x316F, 0x316F, 0x316F }, +{ 0x3170, 0x3170, 0x3170 }, +{ 0x3171, 0x3171, 0x3171 }, +{ 0x3172, 0x3172, 0x3172 }, +{ 0x3173, 0x3173, 0x3173 }, +{ 0x3174, 0x3174, 0x3174 }, +{ 0x3175, 0x3175, 0x3175 }, +{ 0x3176, 0x3176, 0x3176 }, +{ 0x3177, 0x3177, 0x3177 }, +{ 0x3178, 0x3178, 0x3178 }, +{ 0x3179, 0x3179, 0x3179 }, +{ 0x317A, 0x317A, 0x317A }, +{ 0x317B, 0x317B, 0x317B }, +{ 0x317C, 0x317C, 0x317C }, +{ 0x317D, 0x317D, 0x317D }, +{ 0x317E, 0x317E, 0x317E }, +{ 0x317F, 0x317F, 0x317F }, +{ 0x3180, 0x3180, 0x3180 }, +{ 0x3181, 0x3181, 0x3181 }, +{ 0x3182, 0x3182, 0x3182 }, +{ 0x3183, 0x3183, 0x3183 }, +{ 0x3184, 0x3184, 0x3184 }, +{ 0x3185, 0x3185, 0x3185 }, +{ 0x3186, 0x3186, 0x3186 }, +{ 0x3187, 0x3187, 0x3187 }, +{ 0x3188, 0x3188, 0x3188 }, +{ 0x3189, 0x3189, 0x3189 }, +{ 0x318A, 0x318A, 0x318A }, +{ 0x318B, 0x318B, 0x318B }, +{ 0x318C, 0x318C, 0x318C }, +{ 0x318D, 0x318D, 0x318D }, +{ 0x318E, 0x318E, 0x318E }, +{ 0x31A0, 0x31A0, 0x31A0 }, +{ 0x31A1, 0x31A1, 0x31A1 }, +{ 0x31A2, 0x31A2, 0x31A2 }, +{ 0x31A3, 0x31A3, 0x31A3 }, +{ 0x31A4, 0x31A4, 0x31A4 }, +{ 0x31A5, 0x31A5, 0x31A5 }, +{ 0x31A6, 0x31A6, 0x31A6 }, +{ 0x31A7, 0x31A7, 0x31A7 }, +{ 0x31A8, 0x31A8, 0x31A8 }, +{ 0x31A9, 0x31A9, 0x31A9 }, +{ 0x31AA, 0x31AA, 0x31AA }, +{ 0x31AB, 0x31AB, 0x31AB }, +{ 0x31AC, 0x31AC, 0x31AC }, +{ 0x31AD, 0x31AD, 0x31AD }, +{ 0x31AE, 0x31AE, 0x31AE }, +{ 0x31AF, 0x31AF, 0x31AF }, +{ 0x31B0, 0x31B0, 0x31B0 }, +{ 0x31B1, 0x31B1, 0x31B1 }, +{ 0x31B2, 0x31B2, 0x31B2 }, +{ 0x31B3, 0x31B3, 0x31B3 }, +{ 0x31B4, 0x31B4, 0x31B4 }, +{ 0x31B5, 0x31B5, 0x31B5 }, +{ 0x31B6, 0x31B6, 0x31B6 }, +{ 0x31B7, 0x31B7, 0x31B7 }, +{ 0x31F0, 0x31F0, 0x31F0 }, +{ 0x31F1, 0x31F1, 0x31F1 }, +{ 0x31F2, 0x31F2, 0x31F2 }, +{ 0x31F3, 0x31F3, 0x31F3 }, +{ 0x31F4, 0x31F4, 0x31F4 }, +{ 0x31F5, 0x31F5, 0x31F5 }, +{ 0x31F6, 0x31F6, 0x31F6 }, +{ 0x31F7, 0x31F7, 0x31F7 }, +{ 0x31F8, 0x31F8, 0x31F8 }, +{ 0x31F9, 0x31F9, 0x31F9 }, +{ 0x31FA, 0x31FA, 0x31FA }, +{ 0x31FB, 0x31FB, 0x31FB }, +{ 0x31FC, 0x31FC, 0x31FC }, +{ 0x31FD, 0x31FD, 0x31FD }, +{ 0x31FE, 0x31FE, 0x31FE }, +{ 0x31FF, 0x31FF, 0x31FF }, +{ 0x3400, 0x3400, 0x3400 }, +{ 0x4DB5, 0x4DB5, 0x4DB5 }, +{ 0x4E00, 0x4E00, 0x4E00 }, +{ 0x9FBB, 0x9FBB, 0x9FBB }, +{ 0xA000, 0xA000, 0xA000 }, +{ 0xA001, 0xA001, 0xA001 }, +{ 0xA002, 0xA002, 0xA002 }, +{ 0xA003, 0xA003, 0xA003 }, +{ 0xA004, 0xA004, 0xA004 }, +{ 0xA005, 0xA005, 0xA005 }, +{ 0xA006, 0xA006, 0xA006 }, +{ 0xA007, 0xA007, 0xA007 }, +{ 0xA008, 0xA008, 0xA008 }, +{ 0xA009, 0xA009, 0xA009 }, +{ 0xA00A, 0xA00A, 0xA00A }, +{ 0xA00B, 0xA00B, 0xA00B }, +{ 0xA00C, 0xA00C, 0xA00C }, +{ 0xA00D, 0xA00D, 0xA00D }, +{ 0xA00E, 0xA00E, 0xA00E }, +{ 0xA00F, 0xA00F, 0xA00F }, +{ 0xA010, 0xA010, 0xA010 }, +{ 0xA011, 0xA011, 0xA011 }, +{ 0xA012, 0xA012, 0xA012 }, +{ 0xA013, 0xA013, 0xA013 }, +{ 0xA014, 0xA014, 0xA014 }, +{ 0xA015, 0xA015, 0xA015 }, +{ 0xA016, 0xA016, 0xA016 }, +{ 0xA017, 0xA017, 0xA017 }, +{ 0xA018, 0xA018, 0xA018 }, +{ 0xA019, 0xA019, 0xA019 }, +{ 0xA01A, 0xA01A, 0xA01A }, +{ 0xA01B, 0xA01B, 0xA01B }, +{ 0xA01C, 0xA01C, 0xA01C }, +{ 0xA01D, 0xA01D, 0xA01D }, +{ 0xA01E, 0xA01E, 0xA01E }, +{ 0xA01F, 0xA01F, 0xA01F }, +{ 0xA020, 0xA020, 0xA020 }, +{ 0xA021, 0xA021, 0xA021 }, +{ 0xA022, 0xA022, 0xA022 }, +{ 0xA023, 0xA023, 0xA023 }, +{ 0xA024, 0xA024, 0xA024 }, +{ 0xA025, 0xA025, 0xA025 }, +{ 0xA026, 0xA026, 0xA026 }, +{ 0xA027, 0xA027, 0xA027 }, +{ 0xA028, 0xA028, 0xA028 }, +{ 0xA029, 0xA029, 0xA029 }, +{ 0xA02A, 0xA02A, 0xA02A }, +{ 0xA02B, 0xA02B, 0xA02B }, +{ 0xA02C, 0xA02C, 0xA02C }, +{ 0xA02D, 0xA02D, 0xA02D }, +{ 0xA02E, 0xA02E, 0xA02E }, +{ 0xA02F, 0xA02F, 0xA02F }, +{ 0xA030, 0xA030, 0xA030 }, +{ 0xA031, 0xA031, 0xA031 }, +{ 0xA032, 0xA032, 0xA032 }, +{ 0xA033, 0xA033, 0xA033 }, +{ 0xA034, 0xA034, 0xA034 }, +{ 0xA035, 0xA035, 0xA035 }, +{ 0xA036, 0xA036, 0xA036 }, +{ 0xA037, 0xA037, 0xA037 }, +{ 0xA038, 0xA038, 0xA038 }, +{ 0xA039, 0xA039, 0xA039 }, +{ 0xA03A, 0xA03A, 0xA03A }, +{ 0xA03B, 0xA03B, 0xA03B }, +{ 0xA03C, 0xA03C, 0xA03C }, +{ 0xA03D, 0xA03D, 0xA03D }, +{ 0xA03E, 0xA03E, 0xA03E }, +{ 0xA03F, 0xA03F, 0xA03F }, +{ 0xA040, 0xA040, 0xA040 }, +{ 0xA041, 0xA041, 0xA041 }, +{ 0xA042, 0xA042, 0xA042 }, +{ 0xA043, 0xA043, 0xA043 }, +{ 0xA044, 0xA044, 0xA044 }, +{ 0xA045, 0xA045, 0xA045 }, +{ 0xA046, 0xA046, 0xA046 }, +{ 0xA047, 0xA047, 0xA047 }, +{ 0xA048, 0xA048, 0xA048 }, +{ 0xA049, 0xA049, 0xA049 }, +{ 0xA04A, 0xA04A, 0xA04A }, +{ 0xA04B, 0xA04B, 0xA04B }, +{ 0xA04C, 0xA04C, 0xA04C }, +{ 0xA04D, 0xA04D, 0xA04D }, +{ 0xA04E, 0xA04E, 0xA04E }, +{ 0xA04F, 0xA04F, 0xA04F }, +{ 0xA050, 0xA050, 0xA050 }, +{ 0xA051, 0xA051, 0xA051 }, +{ 0xA052, 0xA052, 0xA052 }, +{ 0xA053, 0xA053, 0xA053 }, +{ 0xA054, 0xA054, 0xA054 }, +{ 0xA055, 0xA055, 0xA055 }, +{ 0xA056, 0xA056, 0xA056 }, +{ 0xA057, 0xA057, 0xA057 }, +{ 0xA058, 0xA058, 0xA058 }, +{ 0xA059, 0xA059, 0xA059 }, +{ 0xA05A, 0xA05A, 0xA05A }, +{ 0xA05B, 0xA05B, 0xA05B }, +{ 0xA05C, 0xA05C, 0xA05C }, +{ 0xA05D, 0xA05D, 0xA05D }, +{ 0xA05E, 0xA05E, 0xA05E }, +{ 0xA05F, 0xA05F, 0xA05F }, +{ 0xA060, 0xA060, 0xA060 }, +{ 0xA061, 0xA061, 0xA061 }, +{ 0xA062, 0xA062, 0xA062 }, +{ 0xA063, 0xA063, 0xA063 }, +{ 0xA064, 0xA064, 0xA064 }, +{ 0xA065, 0xA065, 0xA065 }, +{ 0xA066, 0xA066, 0xA066 }, +{ 0xA067, 0xA067, 0xA067 }, +{ 0xA068, 0xA068, 0xA068 }, +{ 0xA069, 0xA069, 0xA069 }, +{ 0xA06A, 0xA06A, 0xA06A }, +{ 0xA06B, 0xA06B, 0xA06B }, +{ 0xA06C, 0xA06C, 0xA06C }, +{ 0xA06D, 0xA06D, 0xA06D }, +{ 0xA06E, 0xA06E, 0xA06E }, +{ 0xA06F, 0xA06F, 0xA06F }, +{ 0xA070, 0xA070, 0xA070 }, +{ 0xA071, 0xA071, 0xA071 }, +{ 0xA072, 0xA072, 0xA072 }, +{ 0xA073, 0xA073, 0xA073 }, +{ 0xA074, 0xA074, 0xA074 }, +{ 0xA075, 0xA075, 0xA075 }, +{ 0xA076, 0xA076, 0xA076 }, +{ 0xA077, 0xA077, 0xA077 }, +{ 0xA078, 0xA078, 0xA078 }, +{ 0xA079, 0xA079, 0xA079 }, +{ 0xA07A, 0xA07A, 0xA07A }, +{ 0xA07B, 0xA07B, 0xA07B }, +{ 0xA07C, 0xA07C, 0xA07C }, +{ 0xA07D, 0xA07D, 0xA07D }, +{ 0xA07E, 0xA07E, 0xA07E }, +{ 0xA07F, 0xA07F, 0xA07F }, +{ 0xA080, 0xA080, 0xA080 }, +{ 0xA081, 0xA081, 0xA081 }, +{ 0xA082, 0xA082, 0xA082 }, +{ 0xA083, 0xA083, 0xA083 }, +{ 0xA084, 0xA084, 0xA084 }, +{ 0xA085, 0xA085, 0xA085 }, +{ 0xA086, 0xA086, 0xA086 }, +{ 0xA087, 0xA087, 0xA087 }, +{ 0xA088, 0xA088, 0xA088 }, +{ 0xA089, 0xA089, 0xA089 }, +{ 0xA08A, 0xA08A, 0xA08A }, +{ 0xA08B, 0xA08B, 0xA08B }, +{ 0xA08C, 0xA08C, 0xA08C }, +{ 0xA08D, 0xA08D, 0xA08D }, +{ 0xA08E, 0xA08E, 0xA08E }, +{ 0xA08F, 0xA08F, 0xA08F }, +{ 0xA090, 0xA090, 0xA090 }, +{ 0xA091, 0xA091, 0xA091 }, +{ 0xA092, 0xA092, 0xA092 }, +{ 0xA093, 0xA093, 0xA093 }, +{ 0xA094, 0xA094, 0xA094 }, +{ 0xA095, 0xA095, 0xA095 }, +{ 0xA096, 0xA096, 0xA096 }, +{ 0xA097, 0xA097, 0xA097 }, +{ 0xA098, 0xA098, 0xA098 }, +{ 0xA099, 0xA099, 0xA099 }, +{ 0xA09A, 0xA09A, 0xA09A }, +{ 0xA09B, 0xA09B, 0xA09B }, +{ 0xA09C, 0xA09C, 0xA09C }, +{ 0xA09D, 0xA09D, 0xA09D }, +{ 0xA09E, 0xA09E, 0xA09E }, +{ 0xA09F, 0xA09F, 0xA09F }, +{ 0xA0A0, 0xA0A0, 0xA0A0 }, +{ 0xA0A1, 0xA0A1, 0xA0A1 }, +{ 0xA0A2, 0xA0A2, 0xA0A2 }, +{ 0xA0A3, 0xA0A3, 0xA0A3 }, +{ 0xA0A4, 0xA0A4, 0xA0A4 }, +{ 0xA0A5, 0xA0A5, 0xA0A5 }, +{ 0xA0A6, 0xA0A6, 0xA0A6 }, +{ 0xA0A7, 0xA0A7, 0xA0A7 }, +{ 0xA0A8, 0xA0A8, 0xA0A8 }, +{ 0xA0A9, 0xA0A9, 0xA0A9 }, +{ 0xA0AA, 0xA0AA, 0xA0AA }, +{ 0xA0AB, 0xA0AB, 0xA0AB }, +{ 0xA0AC, 0xA0AC, 0xA0AC }, +{ 0xA0AD, 0xA0AD, 0xA0AD }, +{ 0xA0AE, 0xA0AE, 0xA0AE }, +{ 0xA0AF, 0xA0AF, 0xA0AF }, +{ 0xA0B0, 0xA0B0, 0xA0B0 }, +{ 0xA0B1, 0xA0B1, 0xA0B1 }, +{ 0xA0B2, 0xA0B2, 0xA0B2 }, +{ 0xA0B3, 0xA0B3, 0xA0B3 }, +{ 0xA0B4, 0xA0B4, 0xA0B4 }, +{ 0xA0B5, 0xA0B5, 0xA0B5 }, +{ 0xA0B6, 0xA0B6, 0xA0B6 }, +{ 0xA0B7, 0xA0B7, 0xA0B7 }, +{ 0xA0B8, 0xA0B8, 0xA0B8 }, +{ 0xA0B9, 0xA0B9, 0xA0B9 }, +{ 0xA0BA, 0xA0BA, 0xA0BA }, +{ 0xA0BB, 0xA0BB, 0xA0BB }, +{ 0xA0BC, 0xA0BC, 0xA0BC }, +{ 0xA0BD, 0xA0BD, 0xA0BD }, +{ 0xA0BE, 0xA0BE, 0xA0BE }, +{ 0xA0BF, 0xA0BF, 0xA0BF }, +{ 0xA0C0, 0xA0C0, 0xA0C0 }, +{ 0xA0C1, 0xA0C1, 0xA0C1 }, +{ 0xA0C2, 0xA0C2, 0xA0C2 }, +{ 0xA0C3, 0xA0C3, 0xA0C3 }, +{ 0xA0C4, 0xA0C4, 0xA0C4 }, +{ 0xA0C5, 0xA0C5, 0xA0C5 }, +{ 0xA0C6, 0xA0C6, 0xA0C6 }, +{ 0xA0C7, 0xA0C7, 0xA0C7 }, +{ 0xA0C8, 0xA0C8, 0xA0C8 }, +{ 0xA0C9, 0xA0C9, 0xA0C9 }, +{ 0xA0CA, 0xA0CA, 0xA0CA }, +{ 0xA0CB, 0xA0CB, 0xA0CB }, +{ 0xA0CC, 0xA0CC, 0xA0CC }, +{ 0xA0CD, 0xA0CD, 0xA0CD }, +{ 0xA0CE, 0xA0CE, 0xA0CE }, +{ 0xA0CF, 0xA0CF, 0xA0CF }, +{ 0xA0D0, 0xA0D0, 0xA0D0 }, +{ 0xA0D1, 0xA0D1, 0xA0D1 }, +{ 0xA0D2, 0xA0D2, 0xA0D2 }, +{ 0xA0D3, 0xA0D3, 0xA0D3 }, +{ 0xA0D4, 0xA0D4, 0xA0D4 }, +{ 0xA0D5, 0xA0D5, 0xA0D5 }, +{ 0xA0D6, 0xA0D6, 0xA0D6 }, +{ 0xA0D7, 0xA0D7, 0xA0D7 }, +{ 0xA0D8, 0xA0D8, 0xA0D8 }, +{ 0xA0D9, 0xA0D9, 0xA0D9 }, +{ 0xA0DA, 0xA0DA, 0xA0DA }, +{ 0xA0DB, 0xA0DB, 0xA0DB }, +{ 0xA0DC, 0xA0DC, 0xA0DC }, +{ 0xA0DD, 0xA0DD, 0xA0DD }, +{ 0xA0DE, 0xA0DE, 0xA0DE }, +{ 0xA0DF, 0xA0DF, 0xA0DF }, +{ 0xA0E0, 0xA0E0, 0xA0E0 }, +{ 0xA0E1, 0xA0E1, 0xA0E1 }, +{ 0xA0E2, 0xA0E2, 0xA0E2 }, +{ 0xA0E3, 0xA0E3, 0xA0E3 }, +{ 0xA0E4, 0xA0E4, 0xA0E4 }, +{ 0xA0E5, 0xA0E5, 0xA0E5 }, +{ 0xA0E6, 0xA0E6, 0xA0E6 }, +{ 0xA0E7, 0xA0E7, 0xA0E7 }, +{ 0xA0E8, 0xA0E8, 0xA0E8 }, +{ 0xA0E9, 0xA0E9, 0xA0E9 }, +{ 0xA0EA, 0xA0EA, 0xA0EA }, +{ 0xA0EB, 0xA0EB, 0xA0EB }, +{ 0xA0EC, 0xA0EC, 0xA0EC }, +{ 0xA0ED, 0xA0ED, 0xA0ED }, +{ 0xA0EE, 0xA0EE, 0xA0EE }, +{ 0xA0EF, 0xA0EF, 0xA0EF }, +{ 0xA0F0, 0xA0F0, 0xA0F0 }, +{ 0xA0F1, 0xA0F1, 0xA0F1 }, +{ 0xA0F2, 0xA0F2, 0xA0F2 }, +{ 0xA0F3, 0xA0F3, 0xA0F3 }, +{ 0xA0F4, 0xA0F4, 0xA0F4 }, +{ 0xA0F5, 0xA0F5, 0xA0F5 }, +{ 0xA0F6, 0xA0F6, 0xA0F6 }, +{ 0xA0F7, 0xA0F7, 0xA0F7 }, +{ 0xA0F8, 0xA0F8, 0xA0F8 }, +{ 0xA0F9, 0xA0F9, 0xA0F9 }, +{ 0xA0FA, 0xA0FA, 0xA0FA }, +{ 0xA0FB, 0xA0FB, 0xA0FB }, +{ 0xA0FC, 0xA0FC, 0xA0FC }, +{ 0xA0FD, 0xA0FD, 0xA0FD }, +{ 0xA0FE, 0xA0FE, 0xA0FE }, +{ 0xA0FF, 0xA0FF, 0xA0FF }, +{ 0xA100, 0xA100, 0xA100 }, +{ 0xA101, 0xA101, 0xA101 }, +{ 0xA102, 0xA102, 0xA102 }, +{ 0xA103, 0xA103, 0xA103 }, +{ 0xA104, 0xA104, 0xA104 }, +{ 0xA105, 0xA105, 0xA105 }, +{ 0xA106, 0xA106, 0xA106 }, +{ 0xA107, 0xA107, 0xA107 }, +{ 0xA108, 0xA108, 0xA108 }, +{ 0xA109, 0xA109, 0xA109 }, +{ 0xA10A, 0xA10A, 0xA10A }, +{ 0xA10B, 0xA10B, 0xA10B }, +{ 0xA10C, 0xA10C, 0xA10C }, +{ 0xA10D, 0xA10D, 0xA10D }, +{ 0xA10E, 0xA10E, 0xA10E }, +{ 0xA10F, 0xA10F, 0xA10F }, +{ 0xA110, 0xA110, 0xA110 }, +{ 0xA111, 0xA111, 0xA111 }, +{ 0xA112, 0xA112, 0xA112 }, +{ 0xA113, 0xA113, 0xA113 }, +{ 0xA114, 0xA114, 0xA114 }, +{ 0xA115, 0xA115, 0xA115 }, +{ 0xA116, 0xA116, 0xA116 }, +{ 0xA117, 0xA117, 0xA117 }, +{ 0xA118, 0xA118, 0xA118 }, +{ 0xA119, 0xA119, 0xA119 }, +{ 0xA11A, 0xA11A, 0xA11A }, +{ 0xA11B, 0xA11B, 0xA11B }, +{ 0xA11C, 0xA11C, 0xA11C }, +{ 0xA11D, 0xA11D, 0xA11D }, +{ 0xA11E, 0xA11E, 0xA11E }, +{ 0xA11F, 0xA11F, 0xA11F }, +{ 0xA120, 0xA120, 0xA120 }, +{ 0xA121, 0xA121, 0xA121 }, +{ 0xA122, 0xA122, 0xA122 }, +{ 0xA123, 0xA123, 0xA123 }, +{ 0xA124, 0xA124, 0xA124 }, +{ 0xA125, 0xA125, 0xA125 }, +{ 0xA126, 0xA126, 0xA126 }, +{ 0xA127, 0xA127, 0xA127 }, +{ 0xA128, 0xA128, 0xA128 }, +{ 0xA129, 0xA129, 0xA129 }, +{ 0xA12A, 0xA12A, 0xA12A }, +{ 0xA12B, 0xA12B, 0xA12B }, +{ 0xA12C, 0xA12C, 0xA12C }, +{ 0xA12D, 0xA12D, 0xA12D }, +{ 0xA12E, 0xA12E, 0xA12E }, +{ 0xA12F, 0xA12F, 0xA12F }, +{ 0xA130, 0xA130, 0xA130 }, +{ 0xA131, 0xA131, 0xA131 }, +{ 0xA132, 0xA132, 0xA132 }, +{ 0xA133, 0xA133, 0xA133 }, +{ 0xA134, 0xA134, 0xA134 }, +{ 0xA135, 0xA135, 0xA135 }, +{ 0xA136, 0xA136, 0xA136 }, +{ 0xA137, 0xA137, 0xA137 }, +{ 0xA138, 0xA138, 0xA138 }, +{ 0xA139, 0xA139, 0xA139 }, +{ 0xA13A, 0xA13A, 0xA13A }, +{ 0xA13B, 0xA13B, 0xA13B }, +{ 0xA13C, 0xA13C, 0xA13C }, +{ 0xA13D, 0xA13D, 0xA13D }, +{ 0xA13E, 0xA13E, 0xA13E }, +{ 0xA13F, 0xA13F, 0xA13F }, +{ 0xA140, 0xA140, 0xA140 }, +{ 0xA141, 0xA141, 0xA141 }, +{ 0xA142, 0xA142, 0xA142 }, +{ 0xA143, 0xA143, 0xA143 }, +{ 0xA144, 0xA144, 0xA144 }, +{ 0xA145, 0xA145, 0xA145 }, +{ 0xA146, 0xA146, 0xA146 }, +{ 0xA147, 0xA147, 0xA147 }, +{ 0xA148, 0xA148, 0xA148 }, +{ 0xA149, 0xA149, 0xA149 }, +{ 0xA14A, 0xA14A, 0xA14A }, +{ 0xA14B, 0xA14B, 0xA14B }, +{ 0xA14C, 0xA14C, 0xA14C }, +{ 0xA14D, 0xA14D, 0xA14D }, +{ 0xA14E, 0xA14E, 0xA14E }, +{ 0xA14F, 0xA14F, 0xA14F }, +{ 0xA150, 0xA150, 0xA150 }, +{ 0xA151, 0xA151, 0xA151 }, +{ 0xA152, 0xA152, 0xA152 }, +{ 0xA153, 0xA153, 0xA153 }, +{ 0xA154, 0xA154, 0xA154 }, +{ 0xA155, 0xA155, 0xA155 }, +{ 0xA156, 0xA156, 0xA156 }, +{ 0xA157, 0xA157, 0xA157 }, +{ 0xA158, 0xA158, 0xA158 }, +{ 0xA159, 0xA159, 0xA159 }, +{ 0xA15A, 0xA15A, 0xA15A }, +{ 0xA15B, 0xA15B, 0xA15B }, +{ 0xA15C, 0xA15C, 0xA15C }, +{ 0xA15D, 0xA15D, 0xA15D }, +{ 0xA15E, 0xA15E, 0xA15E }, +{ 0xA15F, 0xA15F, 0xA15F }, +{ 0xA160, 0xA160, 0xA160 }, +{ 0xA161, 0xA161, 0xA161 }, +{ 0xA162, 0xA162, 0xA162 }, +{ 0xA163, 0xA163, 0xA163 }, +{ 0xA164, 0xA164, 0xA164 }, +{ 0xA165, 0xA165, 0xA165 }, +{ 0xA166, 0xA166, 0xA166 }, +{ 0xA167, 0xA167, 0xA167 }, +{ 0xA168, 0xA168, 0xA168 }, +{ 0xA169, 0xA169, 0xA169 }, +{ 0xA16A, 0xA16A, 0xA16A }, +{ 0xA16B, 0xA16B, 0xA16B }, +{ 0xA16C, 0xA16C, 0xA16C }, +{ 0xA16D, 0xA16D, 0xA16D }, +{ 0xA16E, 0xA16E, 0xA16E }, +{ 0xA16F, 0xA16F, 0xA16F }, +{ 0xA170, 0xA170, 0xA170 }, +{ 0xA171, 0xA171, 0xA171 }, +{ 0xA172, 0xA172, 0xA172 }, +{ 0xA173, 0xA173, 0xA173 }, +{ 0xA174, 0xA174, 0xA174 }, +{ 0xA175, 0xA175, 0xA175 }, +{ 0xA176, 0xA176, 0xA176 }, +{ 0xA177, 0xA177, 0xA177 }, +{ 0xA178, 0xA178, 0xA178 }, +{ 0xA179, 0xA179, 0xA179 }, +{ 0xA17A, 0xA17A, 0xA17A }, +{ 0xA17B, 0xA17B, 0xA17B }, +{ 0xA17C, 0xA17C, 0xA17C }, +{ 0xA17D, 0xA17D, 0xA17D }, +{ 0xA17E, 0xA17E, 0xA17E }, +{ 0xA17F, 0xA17F, 0xA17F }, +{ 0xA180, 0xA180, 0xA180 }, +{ 0xA181, 0xA181, 0xA181 }, +{ 0xA182, 0xA182, 0xA182 }, +{ 0xA183, 0xA183, 0xA183 }, +{ 0xA184, 0xA184, 0xA184 }, +{ 0xA185, 0xA185, 0xA185 }, +{ 0xA186, 0xA186, 0xA186 }, +{ 0xA187, 0xA187, 0xA187 }, +{ 0xA188, 0xA188, 0xA188 }, +{ 0xA189, 0xA189, 0xA189 }, +{ 0xA18A, 0xA18A, 0xA18A }, +{ 0xA18B, 0xA18B, 0xA18B }, +{ 0xA18C, 0xA18C, 0xA18C }, +{ 0xA18D, 0xA18D, 0xA18D }, +{ 0xA18E, 0xA18E, 0xA18E }, +{ 0xA18F, 0xA18F, 0xA18F }, +{ 0xA190, 0xA190, 0xA190 }, +{ 0xA191, 0xA191, 0xA191 }, +{ 0xA192, 0xA192, 0xA192 }, +{ 0xA193, 0xA193, 0xA193 }, +{ 0xA194, 0xA194, 0xA194 }, +{ 0xA195, 0xA195, 0xA195 }, +{ 0xA196, 0xA196, 0xA196 }, +{ 0xA197, 0xA197, 0xA197 }, +{ 0xA198, 0xA198, 0xA198 }, +{ 0xA199, 0xA199, 0xA199 }, +{ 0xA19A, 0xA19A, 0xA19A }, +{ 0xA19B, 0xA19B, 0xA19B }, +{ 0xA19C, 0xA19C, 0xA19C }, +{ 0xA19D, 0xA19D, 0xA19D }, +{ 0xA19E, 0xA19E, 0xA19E }, +{ 0xA19F, 0xA19F, 0xA19F }, +{ 0xA1A0, 0xA1A0, 0xA1A0 }, +{ 0xA1A1, 0xA1A1, 0xA1A1 }, +{ 0xA1A2, 0xA1A2, 0xA1A2 }, +{ 0xA1A3, 0xA1A3, 0xA1A3 }, +{ 0xA1A4, 0xA1A4, 0xA1A4 }, +{ 0xA1A5, 0xA1A5, 0xA1A5 }, +{ 0xA1A6, 0xA1A6, 0xA1A6 }, +{ 0xA1A7, 0xA1A7, 0xA1A7 }, +{ 0xA1A8, 0xA1A8, 0xA1A8 }, +{ 0xA1A9, 0xA1A9, 0xA1A9 }, +{ 0xA1AA, 0xA1AA, 0xA1AA }, +{ 0xA1AB, 0xA1AB, 0xA1AB }, +{ 0xA1AC, 0xA1AC, 0xA1AC }, +{ 0xA1AD, 0xA1AD, 0xA1AD }, +{ 0xA1AE, 0xA1AE, 0xA1AE }, +{ 0xA1AF, 0xA1AF, 0xA1AF }, +{ 0xA1B0, 0xA1B0, 0xA1B0 }, +{ 0xA1B1, 0xA1B1, 0xA1B1 }, +{ 0xA1B2, 0xA1B2, 0xA1B2 }, +{ 0xA1B3, 0xA1B3, 0xA1B3 }, +{ 0xA1B4, 0xA1B4, 0xA1B4 }, +{ 0xA1B5, 0xA1B5, 0xA1B5 }, +{ 0xA1B6, 0xA1B6, 0xA1B6 }, +{ 0xA1B7, 0xA1B7, 0xA1B7 }, +{ 0xA1B8, 0xA1B8, 0xA1B8 }, +{ 0xA1B9, 0xA1B9, 0xA1B9 }, +{ 0xA1BA, 0xA1BA, 0xA1BA }, +{ 0xA1BB, 0xA1BB, 0xA1BB }, +{ 0xA1BC, 0xA1BC, 0xA1BC }, +{ 0xA1BD, 0xA1BD, 0xA1BD }, +{ 0xA1BE, 0xA1BE, 0xA1BE }, +{ 0xA1BF, 0xA1BF, 0xA1BF }, +{ 0xA1C0, 0xA1C0, 0xA1C0 }, +{ 0xA1C1, 0xA1C1, 0xA1C1 }, +{ 0xA1C2, 0xA1C2, 0xA1C2 }, +{ 0xA1C3, 0xA1C3, 0xA1C3 }, +{ 0xA1C4, 0xA1C4, 0xA1C4 }, +{ 0xA1C5, 0xA1C5, 0xA1C5 }, +{ 0xA1C6, 0xA1C6, 0xA1C6 }, +{ 0xA1C7, 0xA1C7, 0xA1C7 }, +{ 0xA1C8, 0xA1C8, 0xA1C8 }, +{ 0xA1C9, 0xA1C9, 0xA1C9 }, +{ 0xA1CA, 0xA1CA, 0xA1CA }, +{ 0xA1CB, 0xA1CB, 0xA1CB }, +{ 0xA1CC, 0xA1CC, 0xA1CC }, +{ 0xA1CD, 0xA1CD, 0xA1CD }, +{ 0xA1CE, 0xA1CE, 0xA1CE }, +{ 0xA1CF, 0xA1CF, 0xA1CF }, +{ 0xA1D0, 0xA1D0, 0xA1D0 }, +{ 0xA1D1, 0xA1D1, 0xA1D1 }, +{ 0xA1D2, 0xA1D2, 0xA1D2 }, +{ 0xA1D3, 0xA1D3, 0xA1D3 }, +{ 0xA1D4, 0xA1D4, 0xA1D4 }, +{ 0xA1D5, 0xA1D5, 0xA1D5 }, +{ 0xA1D6, 0xA1D6, 0xA1D6 }, +{ 0xA1D7, 0xA1D7, 0xA1D7 }, +{ 0xA1D8, 0xA1D8, 0xA1D8 }, +{ 0xA1D9, 0xA1D9, 0xA1D9 }, +{ 0xA1DA, 0xA1DA, 0xA1DA }, +{ 0xA1DB, 0xA1DB, 0xA1DB }, +{ 0xA1DC, 0xA1DC, 0xA1DC }, +{ 0xA1DD, 0xA1DD, 0xA1DD }, +{ 0xA1DE, 0xA1DE, 0xA1DE }, +{ 0xA1DF, 0xA1DF, 0xA1DF }, +{ 0xA1E0, 0xA1E0, 0xA1E0 }, +{ 0xA1E1, 0xA1E1, 0xA1E1 }, +{ 0xA1E2, 0xA1E2, 0xA1E2 }, +{ 0xA1E3, 0xA1E3, 0xA1E3 }, +{ 0xA1E4, 0xA1E4, 0xA1E4 }, +{ 0xA1E5, 0xA1E5, 0xA1E5 }, +{ 0xA1E6, 0xA1E6, 0xA1E6 }, +{ 0xA1E7, 0xA1E7, 0xA1E7 }, +{ 0xA1E8, 0xA1E8, 0xA1E8 }, +{ 0xA1E9, 0xA1E9, 0xA1E9 }, +{ 0xA1EA, 0xA1EA, 0xA1EA }, +{ 0xA1EB, 0xA1EB, 0xA1EB }, +{ 0xA1EC, 0xA1EC, 0xA1EC }, +{ 0xA1ED, 0xA1ED, 0xA1ED }, +{ 0xA1EE, 0xA1EE, 0xA1EE }, +{ 0xA1EF, 0xA1EF, 0xA1EF }, +{ 0xA1F0, 0xA1F0, 0xA1F0 }, +{ 0xA1F1, 0xA1F1, 0xA1F1 }, +{ 0xA1F2, 0xA1F2, 0xA1F2 }, +{ 0xA1F3, 0xA1F3, 0xA1F3 }, +{ 0xA1F4, 0xA1F4, 0xA1F4 }, +{ 0xA1F5, 0xA1F5, 0xA1F5 }, +{ 0xA1F6, 0xA1F6, 0xA1F6 }, +{ 0xA1F7, 0xA1F7, 0xA1F7 }, +{ 0xA1F8, 0xA1F8, 0xA1F8 }, +{ 0xA1F9, 0xA1F9, 0xA1F9 }, +{ 0xA1FA, 0xA1FA, 0xA1FA }, +{ 0xA1FB, 0xA1FB, 0xA1FB }, +{ 0xA1FC, 0xA1FC, 0xA1FC }, +{ 0xA1FD, 0xA1FD, 0xA1FD }, +{ 0xA1FE, 0xA1FE, 0xA1FE }, +{ 0xA1FF, 0xA1FF, 0xA1FF }, +{ 0xA200, 0xA200, 0xA200 }, +{ 0xA201, 0xA201, 0xA201 }, +{ 0xA202, 0xA202, 0xA202 }, +{ 0xA203, 0xA203, 0xA203 }, +{ 0xA204, 0xA204, 0xA204 }, +{ 0xA205, 0xA205, 0xA205 }, +{ 0xA206, 0xA206, 0xA206 }, +{ 0xA207, 0xA207, 0xA207 }, +{ 0xA208, 0xA208, 0xA208 }, +{ 0xA209, 0xA209, 0xA209 }, +{ 0xA20A, 0xA20A, 0xA20A }, +{ 0xA20B, 0xA20B, 0xA20B }, +{ 0xA20C, 0xA20C, 0xA20C }, +{ 0xA20D, 0xA20D, 0xA20D }, +{ 0xA20E, 0xA20E, 0xA20E }, +{ 0xA20F, 0xA20F, 0xA20F }, +{ 0xA210, 0xA210, 0xA210 }, +{ 0xA211, 0xA211, 0xA211 }, +{ 0xA212, 0xA212, 0xA212 }, +{ 0xA213, 0xA213, 0xA213 }, +{ 0xA214, 0xA214, 0xA214 }, +{ 0xA215, 0xA215, 0xA215 }, +{ 0xA216, 0xA216, 0xA216 }, +{ 0xA217, 0xA217, 0xA217 }, +{ 0xA218, 0xA218, 0xA218 }, +{ 0xA219, 0xA219, 0xA219 }, +{ 0xA21A, 0xA21A, 0xA21A }, +{ 0xA21B, 0xA21B, 0xA21B }, +{ 0xA21C, 0xA21C, 0xA21C }, +{ 0xA21D, 0xA21D, 0xA21D }, +{ 0xA21E, 0xA21E, 0xA21E }, +{ 0xA21F, 0xA21F, 0xA21F }, +{ 0xA220, 0xA220, 0xA220 }, +{ 0xA221, 0xA221, 0xA221 }, +{ 0xA222, 0xA222, 0xA222 }, +{ 0xA223, 0xA223, 0xA223 }, +{ 0xA224, 0xA224, 0xA224 }, +{ 0xA225, 0xA225, 0xA225 }, +{ 0xA226, 0xA226, 0xA226 }, +{ 0xA227, 0xA227, 0xA227 }, +{ 0xA228, 0xA228, 0xA228 }, +{ 0xA229, 0xA229, 0xA229 }, +{ 0xA22A, 0xA22A, 0xA22A }, +{ 0xA22B, 0xA22B, 0xA22B }, +{ 0xA22C, 0xA22C, 0xA22C }, +{ 0xA22D, 0xA22D, 0xA22D }, +{ 0xA22E, 0xA22E, 0xA22E }, +{ 0xA22F, 0xA22F, 0xA22F }, +{ 0xA230, 0xA230, 0xA230 }, +{ 0xA231, 0xA231, 0xA231 }, +{ 0xA232, 0xA232, 0xA232 }, +{ 0xA233, 0xA233, 0xA233 }, +{ 0xA234, 0xA234, 0xA234 }, +{ 0xA235, 0xA235, 0xA235 }, +{ 0xA236, 0xA236, 0xA236 }, +{ 0xA237, 0xA237, 0xA237 }, +{ 0xA238, 0xA238, 0xA238 }, +{ 0xA239, 0xA239, 0xA239 }, +{ 0xA23A, 0xA23A, 0xA23A }, +{ 0xA23B, 0xA23B, 0xA23B }, +{ 0xA23C, 0xA23C, 0xA23C }, +{ 0xA23D, 0xA23D, 0xA23D }, +{ 0xA23E, 0xA23E, 0xA23E }, +{ 0xA23F, 0xA23F, 0xA23F }, +{ 0xA240, 0xA240, 0xA240 }, +{ 0xA241, 0xA241, 0xA241 }, +{ 0xA242, 0xA242, 0xA242 }, +{ 0xA243, 0xA243, 0xA243 }, +{ 0xA244, 0xA244, 0xA244 }, +{ 0xA245, 0xA245, 0xA245 }, +{ 0xA246, 0xA246, 0xA246 }, +{ 0xA247, 0xA247, 0xA247 }, +{ 0xA248, 0xA248, 0xA248 }, +{ 0xA249, 0xA249, 0xA249 }, +{ 0xA24A, 0xA24A, 0xA24A }, +{ 0xA24B, 0xA24B, 0xA24B }, +{ 0xA24C, 0xA24C, 0xA24C }, +{ 0xA24D, 0xA24D, 0xA24D }, +{ 0xA24E, 0xA24E, 0xA24E }, +{ 0xA24F, 0xA24F, 0xA24F }, +{ 0xA250, 0xA250, 0xA250 }, +{ 0xA251, 0xA251, 0xA251 }, +{ 0xA252, 0xA252, 0xA252 }, +{ 0xA253, 0xA253, 0xA253 }, +{ 0xA254, 0xA254, 0xA254 }, +{ 0xA255, 0xA255, 0xA255 }, +{ 0xA256, 0xA256, 0xA256 }, +{ 0xA257, 0xA257, 0xA257 }, +{ 0xA258, 0xA258, 0xA258 }, +{ 0xA259, 0xA259, 0xA259 }, +{ 0xA25A, 0xA25A, 0xA25A }, +{ 0xA25B, 0xA25B, 0xA25B }, +{ 0xA25C, 0xA25C, 0xA25C }, +{ 0xA25D, 0xA25D, 0xA25D }, +{ 0xA25E, 0xA25E, 0xA25E }, +{ 0xA25F, 0xA25F, 0xA25F }, +{ 0xA260, 0xA260, 0xA260 }, +{ 0xA261, 0xA261, 0xA261 }, +{ 0xA262, 0xA262, 0xA262 }, +{ 0xA263, 0xA263, 0xA263 }, +{ 0xA264, 0xA264, 0xA264 }, +{ 0xA265, 0xA265, 0xA265 }, +{ 0xA266, 0xA266, 0xA266 }, +{ 0xA267, 0xA267, 0xA267 }, +{ 0xA268, 0xA268, 0xA268 }, +{ 0xA269, 0xA269, 0xA269 }, +{ 0xA26A, 0xA26A, 0xA26A }, +{ 0xA26B, 0xA26B, 0xA26B }, +{ 0xA26C, 0xA26C, 0xA26C }, +{ 0xA26D, 0xA26D, 0xA26D }, +{ 0xA26E, 0xA26E, 0xA26E }, +{ 0xA26F, 0xA26F, 0xA26F }, +{ 0xA270, 0xA270, 0xA270 }, +{ 0xA271, 0xA271, 0xA271 }, +{ 0xA272, 0xA272, 0xA272 }, +{ 0xA273, 0xA273, 0xA273 }, +{ 0xA274, 0xA274, 0xA274 }, +{ 0xA275, 0xA275, 0xA275 }, +{ 0xA276, 0xA276, 0xA276 }, +{ 0xA277, 0xA277, 0xA277 }, +{ 0xA278, 0xA278, 0xA278 }, +{ 0xA279, 0xA279, 0xA279 }, +{ 0xA27A, 0xA27A, 0xA27A }, +{ 0xA27B, 0xA27B, 0xA27B }, +{ 0xA27C, 0xA27C, 0xA27C }, +{ 0xA27D, 0xA27D, 0xA27D }, +{ 0xA27E, 0xA27E, 0xA27E }, +{ 0xA27F, 0xA27F, 0xA27F }, +{ 0xA280, 0xA280, 0xA280 }, +{ 0xA281, 0xA281, 0xA281 }, +{ 0xA282, 0xA282, 0xA282 }, +{ 0xA283, 0xA283, 0xA283 }, +{ 0xA284, 0xA284, 0xA284 }, +{ 0xA285, 0xA285, 0xA285 }, +{ 0xA286, 0xA286, 0xA286 }, +{ 0xA287, 0xA287, 0xA287 }, +{ 0xA288, 0xA288, 0xA288 }, +{ 0xA289, 0xA289, 0xA289 }, +{ 0xA28A, 0xA28A, 0xA28A }, +{ 0xA28B, 0xA28B, 0xA28B }, +{ 0xA28C, 0xA28C, 0xA28C }, +{ 0xA28D, 0xA28D, 0xA28D }, +{ 0xA28E, 0xA28E, 0xA28E }, +{ 0xA28F, 0xA28F, 0xA28F }, +{ 0xA290, 0xA290, 0xA290 }, +{ 0xA291, 0xA291, 0xA291 }, +{ 0xA292, 0xA292, 0xA292 }, +{ 0xA293, 0xA293, 0xA293 }, +{ 0xA294, 0xA294, 0xA294 }, +{ 0xA295, 0xA295, 0xA295 }, +{ 0xA296, 0xA296, 0xA296 }, +{ 0xA297, 0xA297, 0xA297 }, +{ 0xA298, 0xA298, 0xA298 }, +{ 0xA299, 0xA299, 0xA299 }, +{ 0xA29A, 0xA29A, 0xA29A }, +{ 0xA29B, 0xA29B, 0xA29B }, +{ 0xA29C, 0xA29C, 0xA29C }, +{ 0xA29D, 0xA29D, 0xA29D }, +{ 0xA29E, 0xA29E, 0xA29E }, +{ 0xA29F, 0xA29F, 0xA29F }, +{ 0xA2A0, 0xA2A0, 0xA2A0 }, +{ 0xA2A1, 0xA2A1, 0xA2A1 }, +{ 0xA2A2, 0xA2A2, 0xA2A2 }, +{ 0xA2A3, 0xA2A3, 0xA2A3 }, +{ 0xA2A4, 0xA2A4, 0xA2A4 }, +{ 0xA2A5, 0xA2A5, 0xA2A5 }, +{ 0xA2A6, 0xA2A6, 0xA2A6 }, +{ 0xA2A7, 0xA2A7, 0xA2A7 }, +{ 0xA2A8, 0xA2A8, 0xA2A8 }, +{ 0xA2A9, 0xA2A9, 0xA2A9 }, +{ 0xA2AA, 0xA2AA, 0xA2AA }, +{ 0xA2AB, 0xA2AB, 0xA2AB }, +{ 0xA2AC, 0xA2AC, 0xA2AC }, +{ 0xA2AD, 0xA2AD, 0xA2AD }, +{ 0xA2AE, 0xA2AE, 0xA2AE }, +{ 0xA2AF, 0xA2AF, 0xA2AF }, +{ 0xA2B0, 0xA2B0, 0xA2B0 }, +{ 0xA2B1, 0xA2B1, 0xA2B1 }, +{ 0xA2B2, 0xA2B2, 0xA2B2 }, +{ 0xA2B3, 0xA2B3, 0xA2B3 }, +{ 0xA2B4, 0xA2B4, 0xA2B4 }, +{ 0xA2B5, 0xA2B5, 0xA2B5 }, +{ 0xA2B6, 0xA2B6, 0xA2B6 }, +{ 0xA2B7, 0xA2B7, 0xA2B7 }, +{ 0xA2B8, 0xA2B8, 0xA2B8 }, +{ 0xA2B9, 0xA2B9, 0xA2B9 }, +{ 0xA2BA, 0xA2BA, 0xA2BA }, +{ 0xA2BB, 0xA2BB, 0xA2BB }, +{ 0xA2BC, 0xA2BC, 0xA2BC }, +{ 0xA2BD, 0xA2BD, 0xA2BD }, +{ 0xA2BE, 0xA2BE, 0xA2BE }, +{ 0xA2BF, 0xA2BF, 0xA2BF }, +{ 0xA2C0, 0xA2C0, 0xA2C0 }, +{ 0xA2C1, 0xA2C1, 0xA2C1 }, +{ 0xA2C2, 0xA2C2, 0xA2C2 }, +{ 0xA2C3, 0xA2C3, 0xA2C3 }, +{ 0xA2C4, 0xA2C4, 0xA2C4 }, +{ 0xA2C5, 0xA2C5, 0xA2C5 }, +{ 0xA2C6, 0xA2C6, 0xA2C6 }, +{ 0xA2C7, 0xA2C7, 0xA2C7 }, +{ 0xA2C8, 0xA2C8, 0xA2C8 }, +{ 0xA2C9, 0xA2C9, 0xA2C9 }, +{ 0xA2CA, 0xA2CA, 0xA2CA }, +{ 0xA2CB, 0xA2CB, 0xA2CB }, +{ 0xA2CC, 0xA2CC, 0xA2CC }, +{ 0xA2CD, 0xA2CD, 0xA2CD }, +{ 0xA2CE, 0xA2CE, 0xA2CE }, +{ 0xA2CF, 0xA2CF, 0xA2CF }, +{ 0xA2D0, 0xA2D0, 0xA2D0 }, +{ 0xA2D1, 0xA2D1, 0xA2D1 }, +{ 0xA2D2, 0xA2D2, 0xA2D2 }, +{ 0xA2D3, 0xA2D3, 0xA2D3 }, +{ 0xA2D4, 0xA2D4, 0xA2D4 }, +{ 0xA2D5, 0xA2D5, 0xA2D5 }, +{ 0xA2D6, 0xA2D6, 0xA2D6 }, +{ 0xA2D7, 0xA2D7, 0xA2D7 }, +{ 0xA2D8, 0xA2D8, 0xA2D8 }, +{ 0xA2D9, 0xA2D9, 0xA2D9 }, +{ 0xA2DA, 0xA2DA, 0xA2DA }, +{ 0xA2DB, 0xA2DB, 0xA2DB }, +{ 0xA2DC, 0xA2DC, 0xA2DC }, +{ 0xA2DD, 0xA2DD, 0xA2DD }, +{ 0xA2DE, 0xA2DE, 0xA2DE }, +{ 0xA2DF, 0xA2DF, 0xA2DF }, +{ 0xA2E0, 0xA2E0, 0xA2E0 }, +{ 0xA2E1, 0xA2E1, 0xA2E1 }, +{ 0xA2E2, 0xA2E2, 0xA2E2 }, +{ 0xA2E3, 0xA2E3, 0xA2E3 }, +{ 0xA2E4, 0xA2E4, 0xA2E4 }, +{ 0xA2E5, 0xA2E5, 0xA2E5 }, +{ 0xA2E6, 0xA2E6, 0xA2E6 }, +{ 0xA2E7, 0xA2E7, 0xA2E7 }, +{ 0xA2E8, 0xA2E8, 0xA2E8 }, +{ 0xA2E9, 0xA2E9, 0xA2E9 }, +{ 0xA2EA, 0xA2EA, 0xA2EA }, +{ 0xA2EB, 0xA2EB, 0xA2EB }, +{ 0xA2EC, 0xA2EC, 0xA2EC }, +{ 0xA2ED, 0xA2ED, 0xA2ED }, +{ 0xA2EE, 0xA2EE, 0xA2EE }, +{ 0xA2EF, 0xA2EF, 0xA2EF }, +{ 0xA2F0, 0xA2F0, 0xA2F0 }, +{ 0xA2F1, 0xA2F1, 0xA2F1 }, +{ 0xA2F2, 0xA2F2, 0xA2F2 }, +{ 0xA2F3, 0xA2F3, 0xA2F3 }, +{ 0xA2F4, 0xA2F4, 0xA2F4 }, +{ 0xA2F5, 0xA2F5, 0xA2F5 }, +{ 0xA2F6, 0xA2F6, 0xA2F6 }, +{ 0xA2F7, 0xA2F7, 0xA2F7 }, +{ 0xA2F8, 0xA2F8, 0xA2F8 }, +{ 0xA2F9, 0xA2F9, 0xA2F9 }, +{ 0xA2FA, 0xA2FA, 0xA2FA }, +{ 0xA2FB, 0xA2FB, 0xA2FB }, +{ 0xA2FC, 0xA2FC, 0xA2FC }, +{ 0xA2FD, 0xA2FD, 0xA2FD }, +{ 0xA2FE, 0xA2FE, 0xA2FE }, +{ 0xA2FF, 0xA2FF, 0xA2FF }, +{ 0xA300, 0xA300, 0xA300 }, +{ 0xA301, 0xA301, 0xA301 }, +{ 0xA302, 0xA302, 0xA302 }, +{ 0xA303, 0xA303, 0xA303 }, +{ 0xA304, 0xA304, 0xA304 }, +{ 0xA305, 0xA305, 0xA305 }, +{ 0xA306, 0xA306, 0xA306 }, +{ 0xA307, 0xA307, 0xA307 }, +{ 0xA308, 0xA308, 0xA308 }, +{ 0xA309, 0xA309, 0xA309 }, +{ 0xA30A, 0xA30A, 0xA30A }, +{ 0xA30B, 0xA30B, 0xA30B }, +{ 0xA30C, 0xA30C, 0xA30C }, +{ 0xA30D, 0xA30D, 0xA30D }, +{ 0xA30E, 0xA30E, 0xA30E }, +{ 0xA30F, 0xA30F, 0xA30F }, +{ 0xA310, 0xA310, 0xA310 }, +{ 0xA311, 0xA311, 0xA311 }, +{ 0xA312, 0xA312, 0xA312 }, +{ 0xA313, 0xA313, 0xA313 }, +{ 0xA314, 0xA314, 0xA314 }, +{ 0xA315, 0xA315, 0xA315 }, +{ 0xA316, 0xA316, 0xA316 }, +{ 0xA317, 0xA317, 0xA317 }, +{ 0xA318, 0xA318, 0xA318 }, +{ 0xA319, 0xA319, 0xA319 }, +{ 0xA31A, 0xA31A, 0xA31A }, +{ 0xA31B, 0xA31B, 0xA31B }, +{ 0xA31C, 0xA31C, 0xA31C }, +{ 0xA31D, 0xA31D, 0xA31D }, +{ 0xA31E, 0xA31E, 0xA31E }, +{ 0xA31F, 0xA31F, 0xA31F }, +{ 0xA320, 0xA320, 0xA320 }, +{ 0xA321, 0xA321, 0xA321 }, +{ 0xA322, 0xA322, 0xA322 }, +{ 0xA323, 0xA323, 0xA323 }, +{ 0xA324, 0xA324, 0xA324 }, +{ 0xA325, 0xA325, 0xA325 }, +{ 0xA326, 0xA326, 0xA326 }, +{ 0xA327, 0xA327, 0xA327 }, +{ 0xA328, 0xA328, 0xA328 }, +{ 0xA329, 0xA329, 0xA329 }, +{ 0xA32A, 0xA32A, 0xA32A }, +{ 0xA32B, 0xA32B, 0xA32B }, +{ 0xA32C, 0xA32C, 0xA32C }, +{ 0xA32D, 0xA32D, 0xA32D }, +{ 0xA32E, 0xA32E, 0xA32E }, +{ 0xA32F, 0xA32F, 0xA32F }, +{ 0xA330, 0xA330, 0xA330 }, +{ 0xA331, 0xA331, 0xA331 }, +{ 0xA332, 0xA332, 0xA332 }, +{ 0xA333, 0xA333, 0xA333 }, +{ 0xA334, 0xA334, 0xA334 }, +{ 0xA335, 0xA335, 0xA335 }, +{ 0xA336, 0xA336, 0xA336 }, +{ 0xA337, 0xA337, 0xA337 }, +{ 0xA338, 0xA338, 0xA338 }, +{ 0xA339, 0xA339, 0xA339 }, +{ 0xA33A, 0xA33A, 0xA33A }, +{ 0xA33B, 0xA33B, 0xA33B }, +{ 0xA33C, 0xA33C, 0xA33C }, +{ 0xA33D, 0xA33D, 0xA33D }, +{ 0xA33E, 0xA33E, 0xA33E }, +{ 0xA33F, 0xA33F, 0xA33F }, +{ 0xA340, 0xA340, 0xA340 }, +{ 0xA341, 0xA341, 0xA341 }, +{ 0xA342, 0xA342, 0xA342 }, +{ 0xA343, 0xA343, 0xA343 }, +{ 0xA344, 0xA344, 0xA344 }, +{ 0xA345, 0xA345, 0xA345 }, +{ 0xA346, 0xA346, 0xA346 }, +{ 0xA347, 0xA347, 0xA347 }, +{ 0xA348, 0xA348, 0xA348 }, +{ 0xA349, 0xA349, 0xA349 }, +{ 0xA34A, 0xA34A, 0xA34A }, +{ 0xA34B, 0xA34B, 0xA34B }, +{ 0xA34C, 0xA34C, 0xA34C }, +{ 0xA34D, 0xA34D, 0xA34D }, +{ 0xA34E, 0xA34E, 0xA34E }, +{ 0xA34F, 0xA34F, 0xA34F }, +{ 0xA350, 0xA350, 0xA350 }, +{ 0xA351, 0xA351, 0xA351 }, +{ 0xA352, 0xA352, 0xA352 }, +{ 0xA353, 0xA353, 0xA353 }, +{ 0xA354, 0xA354, 0xA354 }, +{ 0xA355, 0xA355, 0xA355 }, +{ 0xA356, 0xA356, 0xA356 }, +{ 0xA357, 0xA357, 0xA357 }, +{ 0xA358, 0xA358, 0xA358 }, +{ 0xA359, 0xA359, 0xA359 }, +{ 0xA35A, 0xA35A, 0xA35A }, +{ 0xA35B, 0xA35B, 0xA35B }, +{ 0xA35C, 0xA35C, 0xA35C }, +{ 0xA35D, 0xA35D, 0xA35D }, +{ 0xA35E, 0xA35E, 0xA35E }, +{ 0xA35F, 0xA35F, 0xA35F }, +{ 0xA360, 0xA360, 0xA360 }, +{ 0xA361, 0xA361, 0xA361 }, +{ 0xA362, 0xA362, 0xA362 }, +{ 0xA363, 0xA363, 0xA363 }, +{ 0xA364, 0xA364, 0xA364 }, +{ 0xA365, 0xA365, 0xA365 }, +{ 0xA366, 0xA366, 0xA366 }, +{ 0xA367, 0xA367, 0xA367 }, +{ 0xA368, 0xA368, 0xA368 }, +{ 0xA369, 0xA369, 0xA369 }, +{ 0xA36A, 0xA36A, 0xA36A }, +{ 0xA36B, 0xA36B, 0xA36B }, +{ 0xA36C, 0xA36C, 0xA36C }, +{ 0xA36D, 0xA36D, 0xA36D }, +{ 0xA36E, 0xA36E, 0xA36E }, +{ 0xA36F, 0xA36F, 0xA36F }, +{ 0xA370, 0xA370, 0xA370 }, +{ 0xA371, 0xA371, 0xA371 }, +{ 0xA372, 0xA372, 0xA372 }, +{ 0xA373, 0xA373, 0xA373 }, +{ 0xA374, 0xA374, 0xA374 }, +{ 0xA375, 0xA375, 0xA375 }, +{ 0xA376, 0xA376, 0xA376 }, +{ 0xA377, 0xA377, 0xA377 }, +{ 0xA378, 0xA378, 0xA378 }, +{ 0xA379, 0xA379, 0xA379 }, +{ 0xA37A, 0xA37A, 0xA37A }, +{ 0xA37B, 0xA37B, 0xA37B }, +{ 0xA37C, 0xA37C, 0xA37C }, +{ 0xA37D, 0xA37D, 0xA37D }, +{ 0xA37E, 0xA37E, 0xA37E }, +{ 0xA37F, 0xA37F, 0xA37F }, +{ 0xA380, 0xA380, 0xA380 }, +{ 0xA381, 0xA381, 0xA381 }, +{ 0xA382, 0xA382, 0xA382 }, +{ 0xA383, 0xA383, 0xA383 }, +{ 0xA384, 0xA384, 0xA384 }, +{ 0xA385, 0xA385, 0xA385 }, +{ 0xA386, 0xA386, 0xA386 }, +{ 0xA387, 0xA387, 0xA387 }, +{ 0xA388, 0xA388, 0xA388 }, +{ 0xA389, 0xA389, 0xA389 }, +{ 0xA38A, 0xA38A, 0xA38A }, +{ 0xA38B, 0xA38B, 0xA38B }, +{ 0xA38C, 0xA38C, 0xA38C }, +{ 0xA38D, 0xA38D, 0xA38D }, +{ 0xA38E, 0xA38E, 0xA38E }, +{ 0xA38F, 0xA38F, 0xA38F }, +{ 0xA390, 0xA390, 0xA390 }, +{ 0xA391, 0xA391, 0xA391 }, +{ 0xA392, 0xA392, 0xA392 }, +{ 0xA393, 0xA393, 0xA393 }, +{ 0xA394, 0xA394, 0xA394 }, +{ 0xA395, 0xA395, 0xA395 }, +{ 0xA396, 0xA396, 0xA396 }, +{ 0xA397, 0xA397, 0xA397 }, +{ 0xA398, 0xA398, 0xA398 }, +{ 0xA399, 0xA399, 0xA399 }, +{ 0xA39A, 0xA39A, 0xA39A }, +{ 0xA39B, 0xA39B, 0xA39B }, +{ 0xA39C, 0xA39C, 0xA39C }, +{ 0xA39D, 0xA39D, 0xA39D }, +{ 0xA39E, 0xA39E, 0xA39E }, +{ 0xA39F, 0xA39F, 0xA39F }, +{ 0xA3A0, 0xA3A0, 0xA3A0 }, +{ 0xA3A1, 0xA3A1, 0xA3A1 }, +{ 0xA3A2, 0xA3A2, 0xA3A2 }, +{ 0xA3A3, 0xA3A3, 0xA3A3 }, +{ 0xA3A4, 0xA3A4, 0xA3A4 }, +{ 0xA3A5, 0xA3A5, 0xA3A5 }, +{ 0xA3A6, 0xA3A6, 0xA3A6 }, +{ 0xA3A7, 0xA3A7, 0xA3A7 }, +{ 0xA3A8, 0xA3A8, 0xA3A8 }, +{ 0xA3A9, 0xA3A9, 0xA3A9 }, +{ 0xA3AA, 0xA3AA, 0xA3AA }, +{ 0xA3AB, 0xA3AB, 0xA3AB }, +{ 0xA3AC, 0xA3AC, 0xA3AC }, +{ 0xA3AD, 0xA3AD, 0xA3AD }, +{ 0xA3AE, 0xA3AE, 0xA3AE }, +{ 0xA3AF, 0xA3AF, 0xA3AF }, +{ 0xA3B0, 0xA3B0, 0xA3B0 }, +{ 0xA3B1, 0xA3B1, 0xA3B1 }, +{ 0xA3B2, 0xA3B2, 0xA3B2 }, +{ 0xA3B3, 0xA3B3, 0xA3B3 }, +{ 0xA3B4, 0xA3B4, 0xA3B4 }, +{ 0xA3B5, 0xA3B5, 0xA3B5 }, +{ 0xA3B6, 0xA3B6, 0xA3B6 }, +{ 0xA3B7, 0xA3B7, 0xA3B7 }, +{ 0xA3B8, 0xA3B8, 0xA3B8 }, +{ 0xA3B9, 0xA3B9, 0xA3B9 }, +{ 0xA3BA, 0xA3BA, 0xA3BA }, +{ 0xA3BB, 0xA3BB, 0xA3BB }, +{ 0xA3BC, 0xA3BC, 0xA3BC }, +{ 0xA3BD, 0xA3BD, 0xA3BD }, +{ 0xA3BE, 0xA3BE, 0xA3BE }, +{ 0xA3BF, 0xA3BF, 0xA3BF }, +{ 0xA3C0, 0xA3C0, 0xA3C0 }, +{ 0xA3C1, 0xA3C1, 0xA3C1 }, +{ 0xA3C2, 0xA3C2, 0xA3C2 }, +{ 0xA3C3, 0xA3C3, 0xA3C3 }, +{ 0xA3C4, 0xA3C4, 0xA3C4 }, +{ 0xA3C5, 0xA3C5, 0xA3C5 }, +{ 0xA3C6, 0xA3C6, 0xA3C6 }, +{ 0xA3C7, 0xA3C7, 0xA3C7 }, +{ 0xA3C8, 0xA3C8, 0xA3C8 }, +{ 0xA3C9, 0xA3C9, 0xA3C9 }, +{ 0xA3CA, 0xA3CA, 0xA3CA }, +{ 0xA3CB, 0xA3CB, 0xA3CB }, +{ 0xA3CC, 0xA3CC, 0xA3CC }, +{ 0xA3CD, 0xA3CD, 0xA3CD }, +{ 0xA3CE, 0xA3CE, 0xA3CE }, +{ 0xA3CF, 0xA3CF, 0xA3CF }, +{ 0xA3D0, 0xA3D0, 0xA3D0 }, +{ 0xA3D1, 0xA3D1, 0xA3D1 }, +{ 0xA3D2, 0xA3D2, 0xA3D2 }, +{ 0xA3D3, 0xA3D3, 0xA3D3 }, +{ 0xA3D4, 0xA3D4, 0xA3D4 }, +{ 0xA3D5, 0xA3D5, 0xA3D5 }, +{ 0xA3D6, 0xA3D6, 0xA3D6 }, +{ 0xA3D7, 0xA3D7, 0xA3D7 }, +{ 0xA3D8, 0xA3D8, 0xA3D8 }, +{ 0xA3D9, 0xA3D9, 0xA3D9 }, +{ 0xA3DA, 0xA3DA, 0xA3DA }, +{ 0xA3DB, 0xA3DB, 0xA3DB }, +{ 0xA3DC, 0xA3DC, 0xA3DC }, +{ 0xA3DD, 0xA3DD, 0xA3DD }, +{ 0xA3DE, 0xA3DE, 0xA3DE }, +{ 0xA3DF, 0xA3DF, 0xA3DF }, +{ 0xA3E0, 0xA3E0, 0xA3E0 }, +{ 0xA3E1, 0xA3E1, 0xA3E1 }, +{ 0xA3E2, 0xA3E2, 0xA3E2 }, +{ 0xA3E3, 0xA3E3, 0xA3E3 }, +{ 0xA3E4, 0xA3E4, 0xA3E4 }, +{ 0xA3E5, 0xA3E5, 0xA3E5 }, +{ 0xA3E6, 0xA3E6, 0xA3E6 }, +{ 0xA3E7, 0xA3E7, 0xA3E7 }, +{ 0xA3E8, 0xA3E8, 0xA3E8 }, +{ 0xA3E9, 0xA3E9, 0xA3E9 }, +{ 0xA3EA, 0xA3EA, 0xA3EA }, +{ 0xA3EB, 0xA3EB, 0xA3EB }, +{ 0xA3EC, 0xA3EC, 0xA3EC }, +{ 0xA3ED, 0xA3ED, 0xA3ED }, +{ 0xA3EE, 0xA3EE, 0xA3EE }, +{ 0xA3EF, 0xA3EF, 0xA3EF }, +{ 0xA3F0, 0xA3F0, 0xA3F0 }, +{ 0xA3F1, 0xA3F1, 0xA3F1 }, +{ 0xA3F2, 0xA3F2, 0xA3F2 }, +{ 0xA3F3, 0xA3F3, 0xA3F3 }, +{ 0xA3F4, 0xA3F4, 0xA3F4 }, +{ 0xA3F5, 0xA3F5, 0xA3F5 }, +{ 0xA3F6, 0xA3F6, 0xA3F6 }, +{ 0xA3F7, 0xA3F7, 0xA3F7 }, +{ 0xA3F8, 0xA3F8, 0xA3F8 }, +{ 0xA3F9, 0xA3F9, 0xA3F9 }, +{ 0xA3FA, 0xA3FA, 0xA3FA }, +{ 0xA3FB, 0xA3FB, 0xA3FB }, +{ 0xA3FC, 0xA3FC, 0xA3FC }, +{ 0xA3FD, 0xA3FD, 0xA3FD }, +{ 0xA3FE, 0xA3FE, 0xA3FE }, +{ 0xA3FF, 0xA3FF, 0xA3FF }, +{ 0xA400, 0xA400, 0xA400 }, +{ 0xA401, 0xA401, 0xA401 }, +{ 0xA402, 0xA402, 0xA402 }, +{ 0xA403, 0xA403, 0xA403 }, +{ 0xA404, 0xA404, 0xA404 }, +{ 0xA405, 0xA405, 0xA405 }, +{ 0xA406, 0xA406, 0xA406 }, +{ 0xA407, 0xA407, 0xA407 }, +{ 0xA408, 0xA408, 0xA408 }, +{ 0xA409, 0xA409, 0xA409 }, +{ 0xA40A, 0xA40A, 0xA40A }, +{ 0xA40B, 0xA40B, 0xA40B }, +{ 0xA40C, 0xA40C, 0xA40C }, +{ 0xA40D, 0xA40D, 0xA40D }, +{ 0xA40E, 0xA40E, 0xA40E }, +{ 0xA40F, 0xA40F, 0xA40F }, +{ 0xA410, 0xA410, 0xA410 }, +{ 0xA411, 0xA411, 0xA411 }, +{ 0xA412, 0xA412, 0xA412 }, +{ 0xA413, 0xA413, 0xA413 }, +{ 0xA414, 0xA414, 0xA414 }, +{ 0xA415, 0xA415, 0xA415 }, +{ 0xA416, 0xA416, 0xA416 }, +{ 0xA417, 0xA417, 0xA417 }, +{ 0xA418, 0xA418, 0xA418 }, +{ 0xA419, 0xA419, 0xA419 }, +{ 0xA41A, 0xA41A, 0xA41A }, +{ 0xA41B, 0xA41B, 0xA41B }, +{ 0xA41C, 0xA41C, 0xA41C }, +{ 0xA41D, 0xA41D, 0xA41D }, +{ 0xA41E, 0xA41E, 0xA41E }, +{ 0xA41F, 0xA41F, 0xA41F }, +{ 0xA420, 0xA420, 0xA420 }, +{ 0xA421, 0xA421, 0xA421 }, +{ 0xA422, 0xA422, 0xA422 }, +{ 0xA423, 0xA423, 0xA423 }, +{ 0xA424, 0xA424, 0xA424 }, +{ 0xA425, 0xA425, 0xA425 }, +{ 0xA426, 0xA426, 0xA426 }, +{ 0xA427, 0xA427, 0xA427 }, +{ 0xA428, 0xA428, 0xA428 }, +{ 0xA429, 0xA429, 0xA429 }, +{ 0xA42A, 0xA42A, 0xA42A }, +{ 0xA42B, 0xA42B, 0xA42B }, +{ 0xA42C, 0xA42C, 0xA42C }, +{ 0xA42D, 0xA42D, 0xA42D }, +{ 0xA42E, 0xA42E, 0xA42E }, +{ 0xA42F, 0xA42F, 0xA42F }, +{ 0xA430, 0xA430, 0xA430 }, +{ 0xA431, 0xA431, 0xA431 }, +{ 0xA432, 0xA432, 0xA432 }, +{ 0xA433, 0xA433, 0xA433 }, +{ 0xA434, 0xA434, 0xA434 }, +{ 0xA435, 0xA435, 0xA435 }, +{ 0xA436, 0xA436, 0xA436 }, +{ 0xA437, 0xA437, 0xA437 }, +{ 0xA438, 0xA438, 0xA438 }, +{ 0xA439, 0xA439, 0xA439 }, +{ 0xA43A, 0xA43A, 0xA43A }, +{ 0xA43B, 0xA43B, 0xA43B }, +{ 0xA43C, 0xA43C, 0xA43C }, +{ 0xA43D, 0xA43D, 0xA43D }, +{ 0xA43E, 0xA43E, 0xA43E }, +{ 0xA43F, 0xA43F, 0xA43F }, +{ 0xA440, 0xA440, 0xA440 }, +{ 0xA441, 0xA441, 0xA441 }, +{ 0xA442, 0xA442, 0xA442 }, +{ 0xA443, 0xA443, 0xA443 }, +{ 0xA444, 0xA444, 0xA444 }, +{ 0xA445, 0xA445, 0xA445 }, +{ 0xA446, 0xA446, 0xA446 }, +{ 0xA447, 0xA447, 0xA447 }, +{ 0xA448, 0xA448, 0xA448 }, +{ 0xA449, 0xA449, 0xA449 }, +{ 0xA44A, 0xA44A, 0xA44A }, +{ 0xA44B, 0xA44B, 0xA44B }, +{ 0xA44C, 0xA44C, 0xA44C }, +{ 0xA44D, 0xA44D, 0xA44D }, +{ 0xA44E, 0xA44E, 0xA44E }, +{ 0xA44F, 0xA44F, 0xA44F }, +{ 0xA450, 0xA450, 0xA450 }, +{ 0xA451, 0xA451, 0xA451 }, +{ 0xA452, 0xA452, 0xA452 }, +{ 0xA453, 0xA453, 0xA453 }, +{ 0xA454, 0xA454, 0xA454 }, +{ 0xA455, 0xA455, 0xA455 }, +{ 0xA456, 0xA456, 0xA456 }, +{ 0xA457, 0xA457, 0xA457 }, +{ 0xA458, 0xA458, 0xA458 }, +{ 0xA459, 0xA459, 0xA459 }, +{ 0xA45A, 0xA45A, 0xA45A }, +{ 0xA45B, 0xA45B, 0xA45B }, +{ 0xA45C, 0xA45C, 0xA45C }, +{ 0xA45D, 0xA45D, 0xA45D }, +{ 0xA45E, 0xA45E, 0xA45E }, +{ 0xA45F, 0xA45F, 0xA45F }, +{ 0xA460, 0xA460, 0xA460 }, +{ 0xA461, 0xA461, 0xA461 }, +{ 0xA462, 0xA462, 0xA462 }, +{ 0xA463, 0xA463, 0xA463 }, +{ 0xA464, 0xA464, 0xA464 }, +{ 0xA465, 0xA465, 0xA465 }, +{ 0xA466, 0xA466, 0xA466 }, +{ 0xA467, 0xA467, 0xA467 }, +{ 0xA468, 0xA468, 0xA468 }, +{ 0xA469, 0xA469, 0xA469 }, +{ 0xA46A, 0xA46A, 0xA46A }, +{ 0xA46B, 0xA46B, 0xA46B }, +{ 0xA46C, 0xA46C, 0xA46C }, +{ 0xA46D, 0xA46D, 0xA46D }, +{ 0xA46E, 0xA46E, 0xA46E }, +{ 0xA46F, 0xA46F, 0xA46F }, +{ 0xA470, 0xA470, 0xA470 }, +{ 0xA471, 0xA471, 0xA471 }, +{ 0xA472, 0xA472, 0xA472 }, +{ 0xA473, 0xA473, 0xA473 }, +{ 0xA474, 0xA474, 0xA474 }, +{ 0xA475, 0xA475, 0xA475 }, +{ 0xA476, 0xA476, 0xA476 }, +{ 0xA477, 0xA477, 0xA477 }, +{ 0xA478, 0xA478, 0xA478 }, +{ 0xA479, 0xA479, 0xA479 }, +{ 0xA47A, 0xA47A, 0xA47A }, +{ 0xA47B, 0xA47B, 0xA47B }, +{ 0xA47C, 0xA47C, 0xA47C }, +{ 0xA47D, 0xA47D, 0xA47D }, +{ 0xA47E, 0xA47E, 0xA47E }, +{ 0xA47F, 0xA47F, 0xA47F }, +{ 0xA480, 0xA480, 0xA480 }, +{ 0xA481, 0xA481, 0xA481 }, +{ 0xA482, 0xA482, 0xA482 }, +{ 0xA483, 0xA483, 0xA483 }, +{ 0xA484, 0xA484, 0xA484 }, +{ 0xA485, 0xA485, 0xA485 }, +{ 0xA486, 0xA486, 0xA486 }, +{ 0xA487, 0xA487, 0xA487 }, +{ 0xA488, 0xA488, 0xA488 }, +{ 0xA489, 0xA489, 0xA489 }, +{ 0xA48A, 0xA48A, 0xA48A }, +{ 0xA48B, 0xA48B, 0xA48B }, +{ 0xA48C, 0xA48C, 0xA48C }, +{ 0xA800, 0xA800, 0xA800 }, +{ 0xA801, 0xA801, 0xA801 }, +{ 0xA803, 0xA803, 0xA803 }, +{ 0xA804, 0xA804, 0xA804 }, +{ 0xA805, 0xA805, 0xA805 }, +{ 0xA806, 0xA806, 0xA806 }, +{ 0xA807, 0xA807, 0xA807 }, +{ 0xA808, 0xA808, 0xA808 }, +{ 0xA809, 0xA809, 0xA809 }, +{ 0xA80A, 0xA80A, 0xA80A }, +{ 0xA80B, 0xA80B, 0xA80B }, +{ 0xA80C, 0xA80C, 0xA80C }, +{ 0xA80D, 0xA80D, 0xA80D }, +{ 0xA80E, 0xA80E, 0xA80E }, +{ 0xA80F, 0xA80F, 0xA80F }, +{ 0xA810, 0xA810, 0xA810 }, +{ 0xA811, 0xA811, 0xA811 }, +{ 0xA812, 0xA812, 0xA812 }, +{ 0xA813, 0xA813, 0xA813 }, +{ 0xA814, 0xA814, 0xA814 }, +{ 0xA815, 0xA815, 0xA815 }, +{ 0xA816, 0xA816, 0xA816 }, +{ 0xA817, 0xA817, 0xA817 }, +{ 0xA818, 0xA818, 0xA818 }, +{ 0xA819, 0xA819, 0xA819 }, +{ 0xA81A, 0xA81A, 0xA81A }, +{ 0xA81B, 0xA81B, 0xA81B }, +{ 0xA81C, 0xA81C, 0xA81C }, +{ 0xA81D, 0xA81D, 0xA81D }, +{ 0xA81E, 0xA81E, 0xA81E }, +{ 0xA81F, 0xA81F, 0xA81F }, +{ 0xA820, 0xA820, 0xA820 }, +{ 0xA821, 0xA821, 0xA821 }, +{ 0xA822, 0xA822, 0xA822 }, +{ 0xA825, 0xA825, 0xA825 }, +{ 0xA826, 0xA826, 0xA826 }, +{ 0xAC00, 0xAC00, 0xAC00 }, +{ 0xAC01, 0xAC01, 0xAC01 }, +{ 0xAC02, 0xAC02, 0xAC02 }, +{ 0xAC03, 0xAC03, 0xAC03 }, +{ 0xAC04, 0xAC04, 0xAC04 }, +{ 0xAC05, 0xAC05, 0xAC05 }, +{ 0xAC06, 0xAC06, 0xAC06 }, +{ 0xAC07, 0xAC07, 0xAC07 }, +{ 0xAC08, 0xAC08, 0xAC08 }, +{ 0xAC09, 0xAC09, 0xAC09 }, +{ 0xAC0A, 0xAC0A, 0xAC0A }, +{ 0xAC0B, 0xAC0B, 0xAC0B }, +{ 0xAC0C, 0xAC0C, 0xAC0C }, +{ 0xAC0D, 0xAC0D, 0xAC0D }, +{ 0xAC0E, 0xAC0E, 0xAC0E }, +{ 0xAC0F, 0xAC0F, 0xAC0F }, +{ 0xAC10, 0xAC10, 0xAC10 }, +{ 0xAC11, 0xAC11, 0xAC11 }, +{ 0xAC12, 0xAC12, 0xAC12 }, +{ 0xAC13, 0xAC13, 0xAC13 }, +{ 0xAC14, 0xAC14, 0xAC14 }, +{ 0xAC15, 0xAC15, 0xAC15 }, +{ 0xAC16, 0xAC16, 0xAC16 }, +{ 0xAC17, 0xAC17, 0xAC17 }, +{ 0xAC18, 0xAC18, 0xAC18 }, +{ 0xAC19, 0xAC19, 0xAC19 }, +{ 0xAC1A, 0xAC1A, 0xAC1A }, +{ 0xAC1B, 0xAC1B, 0xAC1B }, +{ 0xAC1C, 0xAC1C, 0xAC1C }, +{ 0xAC1D, 0xAC1D, 0xAC1D }, +{ 0xAC1E, 0xAC1E, 0xAC1E }, +{ 0xAC1F, 0xAC1F, 0xAC1F }, +{ 0xAC20, 0xAC20, 0xAC20 }, +{ 0xAC21, 0xAC21, 0xAC21 }, +{ 0xAC22, 0xAC22, 0xAC22 }, +{ 0xAC23, 0xAC23, 0xAC23 }, +{ 0xAC24, 0xAC24, 0xAC24 }, +{ 0xAC25, 0xAC25, 0xAC25 }, +{ 0xAC26, 0xAC26, 0xAC26 }, +{ 0xAC27, 0xAC27, 0xAC27 }, +{ 0xAC28, 0xAC28, 0xAC28 }, +{ 0xAC29, 0xAC29, 0xAC29 }, +{ 0xAC2A, 0xAC2A, 0xAC2A }, +{ 0xAC2B, 0xAC2B, 0xAC2B }, +{ 0xAC2C, 0xAC2C, 0xAC2C }, +{ 0xAC2D, 0xAC2D, 0xAC2D }, +{ 0xAC2E, 0xAC2E, 0xAC2E }, +{ 0xAC2F, 0xAC2F, 0xAC2F }, +{ 0xAC30, 0xAC30, 0xAC30 }, +{ 0xAC31, 0xAC31, 0xAC31 }, +{ 0xAC32, 0xAC32, 0xAC32 }, +{ 0xAC33, 0xAC33, 0xAC33 }, +{ 0xAC34, 0xAC34, 0xAC34 }, +{ 0xAC35, 0xAC35, 0xAC35 }, +{ 0xAC36, 0xAC36, 0xAC36 }, +{ 0xAC37, 0xAC37, 0xAC37 }, +{ 0xAC38, 0xAC38, 0xAC38 }, +{ 0xAC39, 0xAC39, 0xAC39 }, +{ 0xAC3A, 0xAC3A, 0xAC3A }, +{ 0xAC3B, 0xAC3B, 0xAC3B }, +{ 0xAC3C, 0xAC3C, 0xAC3C }, +{ 0xAC3D, 0xAC3D, 0xAC3D }, +{ 0xAC3E, 0xAC3E, 0xAC3E }, +{ 0xAC3F, 0xAC3F, 0xAC3F }, +{ 0xAC40, 0xAC40, 0xAC40 }, +{ 0xAC41, 0xAC41, 0xAC41 }, +{ 0xAC42, 0xAC42, 0xAC42 }, +{ 0xAC43, 0xAC43, 0xAC43 }, +{ 0xAC44, 0xAC44, 0xAC44 }, +{ 0xAC45, 0xAC45, 0xAC45 }, +{ 0xAC46, 0xAC46, 0xAC46 }, +{ 0xAC47, 0xAC47, 0xAC47 }, +{ 0xAC48, 0xAC48, 0xAC48 }, +{ 0xAC49, 0xAC49, 0xAC49 }, +{ 0xAC4A, 0xAC4A, 0xAC4A }, +{ 0xAC4B, 0xAC4B, 0xAC4B }, +{ 0xAC4C, 0xAC4C, 0xAC4C }, +{ 0xAC4D, 0xAC4D, 0xAC4D }, +{ 0xAC4E, 0xAC4E, 0xAC4E }, +{ 0xAC4F, 0xAC4F, 0xAC4F }, +{ 0xAC50, 0xAC50, 0xAC50 }, +{ 0xAC51, 0xAC51, 0xAC51 }, +{ 0xAC52, 0xAC52, 0xAC52 }, +{ 0xAC53, 0xAC53, 0xAC53 }, +{ 0xAC54, 0xAC54, 0xAC54 }, +{ 0xAC55, 0xAC55, 0xAC55 }, +{ 0xAC56, 0xAC56, 0xAC56 }, +{ 0xAC57, 0xAC57, 0xAC57 }, +{ 0xAC58, 0xAC58, 0xAC58 }, +{ 0xAC59, 0xAC59, 0xAC59 }, +{ 0xAC5A, 0xAC5A, 0xAC5A }, +{ 0xAC5B, 0xAC5B, 0xAC5B }, +{ 0xAC5C, 0xAC5C, 0xAC5C }, +{ 0xAC5D, 0xAC5D, 0xAC5D }, +{ 0xAC5E, 0xAC5E, 0xAC5E }, +{ 0xAC5F, 0xAC5F, 0xAC5F }, +{ 0xAC60, 0xAC60, 0xAC60 }, +{ 0xAC61, 0xAC61, 0xAC61 }, +{ 0xAC62, 0xAC62, 0xAC62 }, +{ 0xAC63, 0xAC63, 0xAC63 }, +{ 0xAC64, 0xAC64, 0xAC64 }, +{ 0xAC65, 0xAC65, 0xAC65 }, +{ 0xAC66, 0xAC66, 0xAC66 }, +{ 0xAC67, 0xAC67, 0xAC67 }, +{ 0xAC68, 0xAC68, 0xAC68 }, +{ 0xAC69, 0xAC69, 0xAC69 }, +{ 0xAC6A, 0xAC6A, 0xAC6A }, +{ 0xAC6B, 0xAC6B, 0xAC6B }, +{ 0xAC6C, 0xAC6C, 0xAC6C }, +{ 0xAC6D, 0xAC6D, 0xAC6D }, +{ 0xAC6E, 0xAC6E, 0xAC6E }, +{ 0xAC6F, 0xAC6F, 0xAC6F }, +{ 0xAC70, 0xAC70, 0xAC70 }, +{ 0xAC71, 0xAC71, 0xAC71 }, +{ 0xAC72, 0xAC72, 0xAC72 }, +{ 0xAC73, 0xAC73, 0xAC73 }, +{ 0xAC74, 0xAC74, 0xAC74 }, +{ 0xAC75, 0xAC75, 0xAC75 }, +{ 0xAC76, 0xAC76, 0xAC76 }, +{ 0xAC77, 0xAC77, 0xAC77 }, +{ 0xAC78, 0xAC78, 0xAC78 }, +{ 0xAC79, 0xAC79, 0xAC79 }, +{ 0xAC7A, 0xAC7A, 0xAC7A }, +{ 0xAC7B, 0xAC7B, 0xAC7B }, +{ 0xAC7C, 0xAC7C, 0xAC7C }, +{ 0xAC7D, 0xAC7D, 0xAC7D }, +{ 0xAC7E, 0xAC7E, 0xAC7E }, +{ 0xAC7F, 0xAC7F, 0xAC7F }, +{ 0xAC80, 0xAC80, 0xAC80 }, +{ 0xAC81, 0xAC81, 0xAC81 }, +{ 0xAC82, 0xAC82, 0xAC82 }, +{ 0xAC83, 0xAC83, 0xAC83 }, +{ 0xAC84, 0xAC84, 0xAC84 }, +{ 0xAC85, 0xAC85, 0xAC85 }, +{ 0xAC86, 0xAC86, 0xAC86 }, +{ 0xAC87, 0xAC87, 0xAC87 }, +{ 0xAC88, 0xAC88, 0xAC88 }, +{ 0xAC89, 0xAC89, 0xAC89 }, +{ 0xAC8A, 0xAC8A, 0xAC8A }, +{ 0xAC8B, 0xAC8B, 0xAC8B }, +{ 0xAC8C, 0xAC8C, 0xAC8C }, +{ 0xAC8D, 0xAC8D, 0xAC8D }, +{ 0xAC8E, 0xAC8E, 0xAC8E }, +{ 0xAC8F, 0xAC8F, 0xAC8F }, +{ 0xAC90, 0xAC90, 0xAC90 }, +{ 0xAC91, 0xAC91, 0xAC91 }, +{ 0xAC92, 0xAC92, 0xAC92 }, +{ 0xAC93, 0xAC93, 0xAC93 }, +{ 0xAC94, 0xAC94, 0xAC94 }, +{ 0xAC95, 0xAC95, 0xAC95 }, +{ 0xAC96, 0xAC96, 0xAC96 }, +{ 0xAC97, 0xAC97, 0xAC97 }, +{ 0xAC98, 0xAC98, 0xAC98 }, +{ 0xAC99, 0xAC99, 0xAC99 }, +{ 0xAC9A, 0xAC9A, 0xAC9A }, +{ 0xAC9B, 0xAC9B, 0xAC9B }, +{ 0xAC9C, 0xAC9C, 0xAC9C }, +{ 0xAC9D, 0xAC9D, 0xAC9D }, +{ 0xAC9E, 0xAC9E, 0xAC9E }, +{ 0xAC9F, 0xAC9F, 0xAC9F }, +{ 0xACA0, 0xACA0, 0xACA0 }, +{ 0xACA1, 0xACA1, 0xACA1 }, +{ 0xACA2, 0xACA2, 0xACA2 }, +{ 0xACA3, 0xACA3, 0xACA3 }, +{ 0xACA4, 0xACA4, 0xACA4 }, +{ 0xACA5, 0xACA5, 0xACA5 }, +{ 0xACA6, 0xACA6, 0xACA6 }, +{ 0xACA7, 0xACA7, 0xACA7 }, +{ 0xACA8, 0xACA8, 0xACA8 }, +{ 0xACA9, 0xACA9, 0xACA9 }, +{ 0xACAA, 0xACAA, 0xACAA }, +{ 0xACAB, 0xACAB, 0xACAB }, +{ 0xACAC, 0xACAC, 0xACAC }, +{ 0xACAD, 0xACAD, 0xACAD }, +{ 0xACAE, 0xACAE, 0xACAE }, +{ 0xACAF, 0xACAF, 0xACAF }, +{ 0xACB0, 0xACB0, 0xACB0 }, +{ 0xACB1, 0xACB1, 0xACB1 }, +{ 0xACB2, 0xACB2, 0xACB2 }, +{ 0xACB3, 0xACB3, 0xACB3 }, +{ 0xACB4, 0xACB4, 0xACB4 }, +{ 0xACB5, 0xACB5, 0xACB5 }, +{ 0xACB6, 0xACB6, 0xACB6 }, +{ 0xACB7, 0xACB7, 0xACB7 }, +{ 0xACB8, 0xACB8, 0xACB8 }, +{ 0xACB9, 0xACB9, 0xACB9 }, +{ 0xACBA, 0xACBA, 0xACBA }, +{ 0xACBB, 0xACBB, 0xACBB }, +{ 0xACBC, 0xACBC, 0xACBC }, +{ 0xACBD, 0xACBD, 0xACBD }, +{ 0xACBE, 0xACBE, 0xACBE }, +{ 0xACBF, 0xACBF, 0xACBF }, +{ 0xACC0, 0xACC0, 0xACC0 }, +{ 0xACC1, 0xACC1, 0xACC1 }, +{ 0xACC2, 0xACC2, 0xACC2 }, +{ 0xACC3, 0xACC3, 0xACC3 }, +{ 0xACC4, 0xACC4, 0xACC4 }, +{ 0xACC5, 0xACC5, 0xACC5 }, +{ 0xACC6, 0xACC6, 0xACC6 }, +{ 0xACC7, 0xACC7, 0xACC7 }, +{ 0xACC8, 0xACC8, 0xACC8 }, +{ 0xACC9, 0xACC9, 0xACC9 }, +{ 0xACCA, 0xACCA, 0xACCA }, +{ 0xACCB, 0xACCB, 0xACCB }, +{ 0xACCC, 0xACCC, 0xACCC }, +{ 0xACCD, 0xACCD, 0xACCD }, +{ 0xACCE, 0xACCE, 0xACCE }, +{ 0xACCF, 0xACCF, 0xACCF }, +{ 0xACD0, 0xACD0, 0xACD0 }, +{ 0xACD1, 0xACD1, 0xACD1 }, +{ 0xACD2, 0xACD2, 0xACD2 }, +{ 0xACD3, 0xACD3, 0xACD3 }, +{ 0xACD4, 0xACD4, 0xACD4 }, +{ 0xACD5, 0xACD5, 0xACD5 }, +{ 0xACD6, 0xACD6, 0xACD6 }, +{ 0xACD7, 0xACD7, 0xACD7 }, +{ 0xACD8, 0xACD8, 0xACD8 }, +{ 0xACD9, 0xACD9, 0xACD9 }, +{ 0xACDA, 0xACDA, 0xACDA }, +{ 0xACDB, 0xACDB, 0xACDB }, +{ 0xACDC, 0xACDC, 0xACDC }, +{ 0xACDD, 0xACDD, 0xACDD }, +{ 0xACDE, 0xACDE, 0xACDE }, +{ 0xACDF, 0xACDF, 0xACDF }, +{ 0xACE0, 0xACE0, 0xACE0 }, +{ 0xACE1, 0xACE1, 0xACE1 }, +{ 0xACE2, 0xACE2, 0xACE2 }, +{ 0xACE3, 0xACE3, 0xACE3 }, +{ 0xACE4, 0xACE4, 0xACE4 }, +{ 0xACE5, 0xACE5, 0xACE5 }, +{ 0xACE6, 0xACE6, 0xACE6 }, +{ 0xACE7, 0xACE7, 0xACE7 }, +{ 0xACE8, 0xACE8, 0xACE8 }, +{ 0xACE9, 0xACE9, 0xACE9 }, +{ 0xACEA, 0xACEA, 0xACEA }, +{ 0xACEB, 0xACEB, 0xACEB }, +{ 0xACEC, 0xACEC, 0xACEC }, +{ 0xACED, 0xACED, 0xACED }, +{ 0xACEE, 0xACEE, 0xACEE }, +{ 0xACEF, 0xACEF, 0xACEF }, +{ 0xACF0, 0xACF0, 0xACF0 }, +{ 0xACF1, 0xACF1, 0xACF1 }, +{ 0xACF2, 0xACF2, 0xACF2 }, +{ 0xACF3, 0xACF3, 0xACF3 }, +{ 0xACF4, 0xACF4, 0xACF4 }, +{ 0xACF5, 0xACF5, 0xACF5 }, +{ 0xACF6, 0xACF6, 0xACF6 }, +{ 0xACF7, 0xACF7, 0xACF7 }, +{ 0xACF8, 0xACF8, 0xACF8 }, +{ 0xACF9, 0xACF9, 0xACF9 }, +{ 0xACFA, 0xACFA, 0xACFA }, +{ 0xACFB, 0xACFB, 0xACFB }, +{ 0xACFC, 0xACFC, 0xACFC }, +{ 0xACFD, 0xACFD, 0xACFD }, +{ 0xACFE, 0xACFE, 0xACFE }, +{ 0xACFF, 0xACFF, 0xACFF }, +{ 0xAD00, 0xAD00, 0xAD00 }, +{ 0xAD01, 0xAD01, 0xAD01 }, +{ 0xAD02, 0xAD02, 0xAD02 }, +{ 0xAD03, 0xAD03, 0xAD03 }, +{ 0xAD04, 0xAD04, 0xAD04 }, +{ 0xAD05, 0xAD05, 0xAD05 }, +{ 0xAD06, 0xAD06, 0xAD06 }, +{ 0xAD07, 0xAD07, 0xAD07 }, +{ 0xAD08, 0xAD08, 0xAD08 }, +{ 0xAD09, 0xAD09, 0xAD09 }, +{ 0xAD0A, 0xAD0A, 0xAD0A }, +{ 0xAD0B, 0xAD0B, 0xAD0B }, +{ 0xAD0C, 0xAD0C, 0xAD0C }, +{ 0xAD0D, 0xAD0D, 0xAD0D }, +{ 0xAD0E, 0xAD0E, 0xAD0E }, +{ 0xAD0F, 0xAD0F, 0xAD0F }, +{ 0xAD10, 0xAD10, 0xAD10 }, +{ 0xAD11, 0xAD11, 0xAD11 }, +{ 0xAD12, 0xAD12, 0xAD12 }, +{ 0xAD13, 0xAD13, 0xAD13 }, +{ 0xAD14, 0xAD14, 0xAD14 }, +{ 0xAD15, 0xAD15, 0xAD15 }, +{ 0xAD16, 0xAD16, 0xAD16 }, +{ 0xAD17, 0xAD17, 0xAD17 }, +{ 0xAD18, 0xAD18, 0xAD18 }, +{ 0xAD19, 0xAD19, 0xAD19 }, +{ 0xAD1A, 0xAD1A, 0xAD1A }, +{ 0xAD1B, 0xAD1B, 0xAD1B }, +{ 0xAD1C, 0xAD1C, 0xAD1C }, +{ 0xAD1D, 0xAD1D, 0xAD1D }, +{ 0xAD1E, 0xAD1E, 0xAD1E }, +{ 0xAD1F, 0xAD1F, 0xAD1F }, +{ 0xAD20, 0xAD20, 0xAD20 }, +{ 0xAD21, 0xAD21, 0xAD21 }, +{ 0xAD22, 0xAD22, 0xAD22 }, +{ 0xAD23, 0xAD23, 0xAD23 }, +{ 0xAD24, 0xAD24, 0xAD24 }, +{ 0xAD25, 0xAD25, 0xAD25 }, +{ 0xAD26, 0xAD26, 0xAD26 }, +{ 0xAD27, 0xAD27, 0xAD27 }, +{ 0xAD28, 0xAD28, 0xAD28 }, +{ 0xAD29, 0xAD29, 0xAD29 }, +{ 0xAD2A, 0xAD2A, 0xAD2A }, +{ 0xAD2B, 0xAD2B, 0xAD2B }, +{ 0xAD2C, 0xAD2C, 0xAD2C }, +{ 0xAD2D, 0xAD2D, 0xAD2D }, +{ 0xAD2E, 0xAD2E, 0xAD2E }, +{ 0xAD2F, 0xAD2F, 0xAD2F }, +{ 0xAD30, 0xAD30, 0xAD30 }, +{ 0xAD31, 0xAD31, 0xAD31 }, +{ 0xAD32, 0xAD32, 0xAD32 }, +{ 0xAD33, 0xAD33, 0xAD33 }, +{ 0xAD34, 0xAD34, 0xAD34 }, +{ 0xAD35, 0xAD35, 0xAD35 }, +{ 0xAD36, 0xAD36, 0xAD36 }, +{ 0xAD37, 0xAD37, 0xAD37 }, +{ 0xAD38, 0xAD38, 0xAD38 }, +{ 0xAD39, 0xAD39, 0xAD39 }, +{ 0xAD3A, 0xAD3A, 0xAD3A }, +{ 0xAD3B, 0xAD3B, 0xAD3B }, +{ 0xAD3C, 0xAD3C, 0xAD3C }, +{ 0xAD3D, 0xAD3D, 0xAD3D }, +{ 0xAD3E, 0xAD3E, 0xAD3E }, +{ 0xAD3F, 0xAD3F, 0xAD3F }, +{ 0xAD40, 0xAD40, 0xAD40 }, +{ 0xAD41, 0xAD41, 0xAD41 }, +{ 0xAD42, 0xAD42, 0xAD42 }, +{ 0xAD43, 0xAD43, 0xAD43 }, +{ 0xAD44, 0xAD44, 0xAD44 }, +{ 0xAD45, 0xAD45, 0xAD45 }, +{ 0xAD46, 0xAD46, 0xAD46 }, +{ 0xAD47, 0xAD47, 0xAD47 }, +{ 0xAD48, 0xAD48, 0xAD48 }, +{ 0xAD49, 0xAD49, 0xAD49 }, +{ 0xAD4A, 0xAD4A, 0xAD4A }, +{ 0xAD4B, 0xAD4B, 0xAD4B }, +{ 0xAD4C, 0xAD4C, 0xAD4C }, +{ 0xAD4D, 0xAD4D, 0xAD4D }, +{ 0xAD4E, 0xAD4E, 0xAD4E }, +{ 0xAD4F, 0xAD4F, 0xAD4F }, +{ 0xAD50, 0xAD50, 0xAD50 }, +{ 0xAD51, 0xAD51, 0xAD51 }, +{ 0xAD52, 0xAD52, 0xAD52 }, +{ 0xAD53, 0xAD53, 0xAD53 }, +{ 0xAD54, 0xAD54, 0xAD54 }, +{ 0xAD55, 0xAD55, 0xAD55 }, +{ 0xAD56, 0xAD56, 0xAD56 }, +{ 0xAD57, 0xAD57, 0xAD57 }, +{ 0xAD58, 0xAD58, 0xAD58 }, +{ 0xAD59, 0xAD59, 0xAD59 }, +{ 0xAD5A, 0xAD5A, 0xAD5A }, +{ 0xAD5B, 0xAD5B, 0xAD5B }, +{ 0xAD5C, 0xAD5C, 0xAD5C }, +{ 0xAD5D, 0xAD5D, 0xAD5D }, +{ 0xAD5E, 0xAD5E, 0xAD5E }, +{ 0xAD5F, 0xAD5F, 0xAD5F }, +{ 0xAD60, 0xAD60, 0xAD60 }, +{ 0xAD61, 0xAD61, 0xAD61 }, +{ 0xAD62, 0xAD62, 0xAD62 }, +{ 0xAD63, 0xAD63, 0xAD63 }, +{ 0xAD64, 0xAD64, 0xAD64 }, +{ 0xAD65, 0xAD65, 0xAD65 }, +{ 0xAD66, 0xAD66, 0xAD66 }, +{ 0xAD67, 0xAD67, 0xAD67 }, +{ 0xAD68, 0xAD68, 0xAD68 }, +{ 0xAD69, 0xAD69, 0xAD69 }, +{ 0xAD6A, 0xAD6A, 0xAD6A }, +{ 0xAD6B, 0xAD6B, 0xAD6B }, +{ 0xAD6C, 0xAD6C, 0xAD6C }, +{ 0xAD6D, 0xAD6D, 0xAD6D }, +{ 0xAD6E, 0xAD6E, 0xAD6E }, +{ 0xAD6F, 0xAD6F, 0xAD6F }, +{ 0xAD70, 0xAD70, 0xAD70 }, +{ 0xAD71, 0xAD71, 0xAD71 }, +{ 0xAD72, 0xAD72, 0xAD72 }, +{ 0xAD73, 0xAD73, 0xAD73 }, +{ 0xAD74, 0xAD74, 0xAD74 }, +{ 0xAD75, 0xAD75, 0xAD75 }, +{ 0xAD76, 0xAD76, 0xAD76 }, +{ 0xAD77, 0xAD77, 0xAD77 }, +{ 0xAD78, 0xAD78, 0xAD78 }, +{ 0xAD79, 0xAD79, 0xAD79 }, +{ 0xAD7A, 0xAD7A, 0xAD7A }, +{ 0xAD7B, 0xAD7B, 0xAD7B }, +{ 0xAD7C, 0xAD7C, 0xAD7C }, +{ 0xAD7D, 0xAD7D, 0xAD7D }, +{ 0xAD7E, 0xAD7E, 0xAD7E }, +{ 0xAD7F, 0xAD7F, 0xAD7F }, +{ 0xAD80, 0xAD80, 0xAD80 }, +{ 0xAD81, 0xAD81, 0xAD81 }, +{ 0xAD82, 0xAD82, 0xAD82 }, +{ 0xAD83, 0xAD83, 0xAD83 }, +{ 0xAD84, 0xAD84, 0xAD84 }, +{ 0xAD85, 0xAD85, 0xAD85 }, +{ 0xAD86, 0xAD86, 0xAD86 }, +{ 0xAD87, 0xAD87, 0xAD87 }, +{ 0xAD88, 0xAD88, 0xAD88 }, +{ 0xAD89, 0xAD89, 0xAD89 }, +{ 0xAD8A, 0xAD8A, 0xAD8A }, +{ 0xAD8B, 0xAD8B, 0xAD8B }, +{ 0xAD8C, 0xAD8C, 0xAD8C }, +{ 0xAD8D, 0xAD8D, 0xAD8D }, +{ 0xAD8E, 0xAD8E, 0xAD8E }, +{ 0xAD8F, 0xAD8F, 0xAD8F }, +{ 0xAD90, 0xAD90, 0xAD90 }, +{ 0xAD91, 0xAD91, 0xAD91 }, +{ 0xAD92, 0xAD92, 0xAD92 }, +{ 0xAD93, 0xAD93, 0xAD93 }, +{ 0xAD94, 0xAD94, 0xAD94 }, +{ 0xAD95, 0xAD95, 0xAD95 }, +{ 0xAD96, 0xAD96, 0xAD96 }, +{ 0xAD97, 0xAD97, 0xAD97 }, +{ 0xAD98, 0xAD98, 0xAD98 }, +{ 0xAD99, 0xAD99, 0xAD99 }, +{ 0xAD9A, 0xAD9A, 0xAD9A }, +{ 0xAD9B, 0xAD9B, 0xAD9B }, +{ 0xAD9C, 0xAD9C, 0xAD9C }, +{ 0xAD9D, 0xAD9D, 0xAD9D }, +{ 0xAD9E, 0xAD9E, 0xAD9E }, +{ 0xAD9F, 0xAD9F, 0xAD9F }, +{ 0xADA0, 0xADA0, 0xADA0 }, +{ 0xADA1, 0xADA1, 0xADA1 }, +{ 0xADA2, 0xADA2, 0xADA2 }, +{ 0xADA3, 0xADA3, 0xADA3 }, +{ 0xADA4, 0xADA4, 0xADA4 }, +{ 0xADA5, 0xADA5, 0xADA5 }, +{ 0xADA6, 0xADA6, 0xADA6 }, +{ 0xADA7, 0xADA7, 0xADA7 }, +{ 0xADA8, 0xADA8, 0xADA8 }, +{ 0xADA9, 0xADA9, 0xADA9 }, +{ 0xADAA, 0xADAA, 0xADAA }, +{ 0xADAB, 0xADAB, 0xADAB }, +{ 0xADAC, 0xADAC, 0xADAC }, +{ 0xADAD, 0xADAD, 0xADAD }, +{ 0xADAE, 0xADAE, 0xADAE }, +{ 0xADAF, 0xADAF, 0xADAF }, +{ 0xADB0, 0xADB0, 0xADB0 }, +{ 0xADB1, 0xADB1, 0xADB1 }, +{ 0xADB2, 0xADB2, 0xADB2 }, +{ 0xADB3, 0xADB3, 0xADB3 }, +{ 0xADB4, 0xADB4, 0xADB4 }, +{ 0xADB5, 0xADB5, 0xADB5 }, +{ 0xADB6, 0xADB6, 0xADB6 }, +{ 0xADB7, 0xADB7, 0xADB7 }, +{ 0xADB8, 0xADB8, 0xADB8 }, +{ 0xADB9, 0xADB9, 0xADB9 }, +{ 0xADBA, 0xADBA, 0xADBA }, +{ 0xADBB, 0xADBB, 0xADBB }, +{ 0xADBC, 0xADBC, 0xADBC }, +{ 0xADBD, 0xADBD, 0xADBD }, +{ 0xADBE, 0xADBE, 0xADBE }, +{ 0xADBF, 0xADBF, 0xADBF }, +{ 0xADC0, 0xADC0, 0xADC0 }, +{ 0xADC1, 0xADC1, 0xADC1 }, +{ 0xADC2, 0xADC2, 0xADC2 }, +{ 0xADC3, 0xADC3, 0xADC3 }, +{ 0xADC4, 0xADC4, 0xADC4 }, +{ 0xADC5, 0xADC5, 0xADC5 }, +{ 0xADC6, 0xADC6, 0xADC6 }, +{ 0xADC7, 0xADC7, 0xADC7 }, +{ 0xADC8, 0xADC8, 0xADC8 }, +{ 0xADC9, 0xADC9, 0xADC9 }, +{ 0xADCA, 0xADCA, 0xADCA }, +{ 0xADCB, 0xADCB, 0xADCB }, +{ 0xADCC, 0xADCC, 0xADCC }, +{ 0xADCD, 0xADCD, 0xADCD }, +{ 0xADCE, 0xADCE, 0xADCE }, +{ 0xADCF, 0xADCF, 0xADCF }, +{ 0xADD0, 0xADD0, 0xADD0 }, +{ 0xADD1, 0xADD1, 0xADD1 }, +{ 0xADD2, 0xADD2, 0xADD2 }, +{ 0xADD3, 0xADD3, 0xADD3 }, +{ 0xADD4, 0xADD4, 0xADD4 }, +{ 0xADD5, 0xADD5, 0xADD5 }, +{ 0xADD6, 0xADD6, 0xADD6 }, +{ 0xADD7, 0xADD7, 0xADD7 }, +{ 0xADD8, 0xADD8, 0xADD8 }, +{ 0xADD9, 0xADD9, 0xADD9 }, +{ 0xADDA, 0xADDA, 0xADDA }, +{ 0xADDB, 0xADDB, 0xADDB }, +{ 0xADDC, 0xADDC, 0xADDC }, +{ 0xADDD, 0xADDD, 0xADDD }, +{ 0xADDE, 0xADDE, 0xADDE }, +{ 0xADDF, 0xADDF, 0xADDF }, +{ 0xADE0, 0xADE0, 0xADE0 }, +{ 0xADE1, 0xADE1, 0xADE1 }, +{ 0xADE2, 0xADE2, 0xADE2 }, +{ 0xADE3, 0xADE3, 0xADE3 }, +{ 0xADE4, 0xADE4, 0xADE4 }, +{ 0xADE5, 0xADE5, 0xADE5 }, +{ 0xADE6, 0xADE6, 0xADE6 }, +{ 0xADE7, 0xADE7, 0xADE7 }, +{ 0xADE8, 0xADE8, 0xADE8 }, +{ 0xADE9, 0xADE9, 0xADE9 }, +{ 0xADEA, 0xADEA, 0xADEA }, +{ 0xADEB, 0xADEB, 0xADEB }, +{ 0xADEC, 0xADEC, 0xADEC }, +{ 0xADED, 0xADED, 0xADED }, +{ 0xADEE, 0xADEE, 0xADEE }, +{ 0xADEF, 0xADEF, 0xADEF }, +{ 0xADF0, 0xADF0, 0xADF0 }, +{ 0xADF1, 0xADF1, 0xADF1 }, +{ 0xADF2, 0xADF2, 0xADF2 }, +{ 0xADF3, 0xADF3, 0xADF3 }, +{ 0xADF4, 0xADF4, 0xADF4 }, +{ 0xADF5, 0xADF5, 0xADF5 }, +{ 0xADF6, 0xADF6, 0xADF6 }, +{ 0xADF7, 0xADF7, 0xADF7 }, +{ 0xADF8, 0xADF8, 0xADF8 }, +{ 0xADF9, 0xADF9, 0xADF9 }, +{ 0xADFA, 0xADFA, 0xADFA }, +{ 0xADFB, 0xADFB, 0xADFB }, +{ 0xADFC, 0xADFC, 0xADFC }, +{ 0xADFD, 0xADFD, 0xADFD }, +{ 0xADFE, 0xADFE, 0xADFE }, +{ 0xADFF, 0xADFF, 0xADFF }, +{ 0xAE00, 0xAE00, 0xAE00 }, +{ 0xAE01, 0xAE01, 0xAE01 }, +{ 0xAE02, 0xAE02, 0xAE02 }, +{ 0xAE03, 0xAE03, 0xAE03 }, +{ 0xAE04, 0xAE04, 0xAE04 }, +{ 0xAE05, 0xAE05, 0xAE05 }, +{ 0xAE06, 0xAE06, 0xAE06 }, +{ 0xAE07, 0xAE07, 0xAE07 }, +{ 0xAE08, 0xAE08, 0xAE08 }, +{ 0xAE09, 0xAE09, 0xAE09 }, +{ 0xAE0A, 0xAE0A, 0xAE0A }, +{ 0xAE0B, 0xAE0B, 0xAE0B }, +{ 0xAE0C, 0xAE0C, 0xAE0C }, +{ 0xAE0D, 0xAE0D, 0xAE0D }, +{ 0xAE0E, 0xAE0E, 0xAE0E }, +{ 0xAE0F, 0xAE0F, 0xAE0F }, +{ 0xAE10, 0xAE10, 0xAE10 }, +{ 0xAE11, 0xAE11, 0xAE11 }, +{ 0xAE12, 0xAE12, 0xAE12 }, +{ 0xAE13, 0xAE13, 0xAE13 }, +{ 0xAE14, 0xAE14, 0xAE14 }, +{ 0xAE15, 0xAE15, 0xAE15 }, +{ 0xAE16, 0xAE16, 0xAE16 }, +{ 0xAE17, 0xAE17, 0xAE17 }, +{ 0xAE18, 0xAE18, 0xAE18 }, +{ 0xAE19, 0xAE19, 0xAE19 }, +{ 0xAE1A, 0xAE1A, 0xAE1A }, +{ 0xAE1B, 0xAE1B, 0xAE1B }, +{ 0xAE1C, 0xAE1C, 0xAE1C }, +{ 0xAE1D, 0xAE1D, 0xAE1D }, +{ 0xAE1E, 0xAE1E, 0xAE1E }, +{ 0xAE1F, 0xAE1F, 0xAE1F }, +{ 0xAE20, 0xAE20, 0xAE20 }, +{ 0xAE21, 0xAE21, 0xAE21 }, +{ 0xAE22, 0xAE22, 0xAE22 }, +{ 0xAE23, 0xAE23, 0xAE23 }, +{ 0xAE24, 0xAE24, 0xAE24 }, +{ 0xAE25, 0xAE25, 0xAE25 }, +{ 0xAE26, 0xAE26, 0xAE26 }, +{ 0xAE27, 0xAE27, 0xAE27 }, +{ 0xAE28, 0xAE28, 0xAE28 }, +{ 0xAE29, 0xAE29, 0xAE29 }, +{ 0xAE2A, 0xAE2A, 0xAE2A }, +{ 0xAE2B, 0xAE2B, 0xAE2B }, +{ 0xAE2C, 0xAE2C, 0xAE2C }, +{ 0xAE2D, 0xAE2D, 0xAE2D }, +{ 0xAE2E, 0xAE2E, 0xAE2E }, +{ 0xAE2F, 0xAE2F, 0xAE2F }, +{ 0xAE30, 0xAE30, 0xAE30 }, +{ 0xAE31, 0xAE31, 0xAE31 }, +{ 0xAE32, 0xAE32, 0xAE32 }, +{ 0xAE33, 0xAE33, 0xAE33 }, +{ 0xAE34, 0xAE34, 0xAE34 }, +{ 0xAE35, 0xAE35, 0xAE35 }, +{ 0xAE36, 0xAE36, 0xAE36 }, +{ 0xAE37, 0xAE37, 0xAE37 }, +{ 0xAE38, 0xAE38, 0xAE38 }, +{ 0xAE39, 0xAE39, 0xAE39 }, +{ 0xAE3A, 0xAE3A, 0xAE3A }, +{ 0xAE3B, 0xAE3B, 0xAE3B }, +{ 0xAE3C, 0xAE3C, 0xAE3C }, +{ 0xAE3D, 0xAE3D, 0xAE3D }, +{ 0xAE3E, 0xAE3E, 0xAE3E }, +{ 0xAE3F, 0xAE3F, 0xAE3F }, +{ 0xAE40, 0xAE40, 0xAE40 }, +{ 0xAE41, 0xAE41, 0xAE41 }, +{ 0xAE42, 0xAE42, 0xAE42 }, +{ 0xAE43, 0xAE43, 0xAE43 }, +{ 0xAE44, 0xAE44, 0xAE44 }, +{ 0xAE45, 0xAE45, 0xAE45 }, +{ 0xAE46, 0xAE46, 0xAE46 }, +{ 0xAE47, 0xAE47, 0xAE47 }, +{ 0xAE48, 0xAE48, 0xAE48 }, +{ 0xAE49, 0xAE49, 0xAE49 }, +{ 0xAE4A, 0xAE4A, 0xAE4A }, +{ 0xAE4B, 0xAE4B, 0xAE4B }, +{ 0xAE4C, 0xAE4C, 0xAE4C }, +{ 0xAE4D, 0xAE4D, 0xAE4D }, +{ 0xAE4E, 0xAE4E, 0xAE4E }, +{ 0xAE4F, 0xAE4F, 0xAE4F }, +{ 0xAE50, 0xAE50, 0xAE50 }, +{ 0xAE51, 0xAE51, 0xAE51 }, +{ 0xAE52, 0xAE52, 0xAE52 }, +{ 0xAE53, 0xAE53, 0xAE53 }, +{ 0xAE54, 0xAE54, 0xAE54 }, +{ 0xAE55, 0xAE55, 0xAE55 }, +{ 0xAE56, 0xAE56, 0xAE56 }, +{ 0xAE57, 0xAE57, 0xAE57 }, +{ 0xAE58, 0xAE58, 0xAE58 }, +{ 0xAE59, 0xAE59, 0xAE59 }, +{ 0xAE5A, 0xAE5A, 0xAE5A }, +{ 0xAE5B, 0xAE5B, 0xAE5B }, +{ 0xAE5C, 0xAE5C, 0xAE5C }, +{ 0xAE5D, 0xAE5D, 0xAE5D }, +{ 0xAE5E, 0xAE5E, 0xAE5E }, +{ 0xAE5F, 0xAE5F, 0xAE5F }, +{ 0xAE60, 0xAE60, 0xAE60 }, +{ 0xAE61, 0xAE61, 0xAE61 }, +{ 0xAE62, 0xAE62, 0xAE62 }, +{ 0xAE63, 0xAE63, 0xAE63 }, +{ 0xAE64, 0xAE64, 0xAE64 }, +{ 0xAE65, 0xAE65, 0xAE65 }, +{ 0xAE66, 0xAE66, 0xAE66 }, +{ 0xAE67, 0xAE67, 0xAE67 }, +{ 0xAE68, 0xAE68, 0xAE68 }, +{ 0xAE69, 0xAE69, 0xAE69 }, +{ 0xAE6A, 0xAE6A, 0xAE6A }, +{ 0xAE6B, 0xAE6B, 0xAE6B }, +{ 0xAE6C, 0xAE6C, 0xAE6C }, +{ 0xAE6D, 0xAE6D, 0xAE6D }, +{ 0xAE6E, 0xAE6E, 0xAE6E }, +{ 0xAE6F, 0xAE6F, 0xAE6F }, +{ 0xAE70, 0xAE70, 0xAE70 }, +{ 0xAE71, 0xAE71, 0xAE71 }, +{ 0xAE72, 0xAE72, 0xAE72 }, +{ 0xAE73, 0xAE73, 0xAE73 }, +{ 0xAE74, 0xAE74, 0xAE74 }, +{ 0xAE75, 0xAE75, 0xAE75 }, +{ 0xAE76, 0xAE76, 0xAE76 }, +{ 0xAE77, 0xAE77, 0xAE77 }, +{ 0xAE78, 0xAE78, 0xAE78 }, +{ 0xAE79, 0xAE79, 0xAE79 }, +{ 0xAE7A, 0xAE7A, 0xAE7A }, +{ 0xAE7B, 0xAE7B, 0xAE7B }, +{ 0xAE7C, 0xAE7C, 0xAE7C }, +{ 0xAE7D, 0xAE7D, 0xAE7D }, +{ 0xAE7E, 0xAE7E, 0xAE7E }, +{ 0xAE7F, 0xAE7F, 0xAE7F }, +{ 0xAE80, 0xAE80, 0xAE80 }, +{ 0xAE81, 0xAE81, 0xAE81 }, +{ 0xAE82, 0xAE82, 0xAE82 }, +{ 0xAE83, 0xAE83, 0xAE83 }, +{ 0xAE84, 0xAE84, 0xAE84 }, +{ 0xAE85, 0xAE85, 0xAE85 }, +{ 0xAE86, 0xAE86, 0xAE86 }, +{ 0xAE87, 0xAE87, 0xAE87 }, +{ 0xAE88, 0xAE88, 0xAE88 }, +{ 0xAE89, 0xAE89, 0xAE89 }, +{ 0xAE8A, 0xAE8A, 0xAE8A }, +{ 0xAE8B, 0xAE8B, 0xAE8B }, +{ 0xAE8C, 0xAE8C, 0xAE8C }, +{ 0xAE8D, 0xAE8D, 0xAE8D }, +{ 0xAE8E, 0xAE8E, 0xAE8E }, +{ 0xAE8F, 0xAE8F, 0xAE8F }, +{ 0xAE90, 0xAE90, 0xAE90 }, +{ 0xAE91, 0xAE91, 0xAE91 }, +{ 0xAE92, 0xAE92, 0xAE92 }, +{ 0xAE93, 0xAE93, 0xAE93 }, +{ 0xAE94, 0xAE94, 0xAE94 }, +{ 0xAE95, 0xAE95, 0xAE95 }, +{ 0xAE96, 0xAE96, 0xAE96 }, +{ 0xAE97, 0xAE97, 0xAE97 }, +{ 0xAE98, 0xAE98, 0xAE98 }, +{ 0xAE99, 0xAE99, 0xAE99 }, +{ 0xAE9A, 0xAE9A, 0xAE9A }, +{ 0xAE9B, 0xAE9B, 0xAE9B }, +{ 0xAE9C, 0xAE9C, 0xAE9C }, +{ 0xAE9D, 0xAE9D, 0xAE9D }, +{ 0xAE9E, 0xAE9E, 0xAE9E }, +{ 0xAE9F, 0xAE9F, 0xAE9F }, +{ 0xAEA0, 0xAEA0, 0xAEA0 }, +{ 0xAEA1, 0xAEA1, 0xAEA1 }, +{ 0xAEA2, 0xAEA2, 0xAEA2 }, +{ 0xAEA3, 0xAEA3, 0xAEA3 }, +{ 0xAEA4, 0xAEA4, 0xAEA4 }, +{ 0xAEA5, 0xAEA5, 0xAEA5 }, +{ 0xAEA6, 0xAEA6, 0xAEA6 }, +{ 0xAEA7, 0xAEA7, 0xAEA7 }, +{ 0xAEA8, 0xAEA8, 0xAEA8 }, +{ 0xAEA9, 0xAEA9, 0xAEA9 }, +{ 0xAEAA, 0xAEAA, 0xAEAA }, +{ 0xAEAB, 0xAEAB, 0xAEAB }, +{ 0xAEAC, 0xAEAC, 0xAEAC }, +{ 0xAEAD, 0xAEAD, 0xAEAD }, +{ 0xAEAE, 0xAEAE, 0xAEAE }, +{ 0xAEAF, 0xAEAF, 0xAEAF }, +{ 0xAEB0, 0xAEB0, 0xAEB0 }, +{ 0xAEB1, 0xAEB1, 0xAEB1 }, +{ 0xAEB2, 0xAEB2, 0xAEB2 }, +{ 0xAEB3, 0xAEB3, 0xAEB3 }, +{ 0xAEB4, 0xAEB4, 0xAEB4 }, +{ 0xAEB5, 0xAEB5, 0xAEB5 }, +{ 0xAEB6, 0xAEB6, 0xAEB6 }, +{ 0xAEB7, 0xAEB7, 0xAEB7 }, +{ 0xAEB8, 0xAEB8, 0xAEB8 }, +{ 0xAEB9, 0xAEB9, 0xAEB9 }, +{ 0xAEBA, 0xAEBA, 0xAEBA }, +{ 0xAEBB, 0xAEBB, 0xAEBB }, +{ 0xAEBC, 0xAEBC, 0xAEBC }, +{ 0xAEBD, 0xAEBD, 0xAEBD }, +{ 0xAEBE, 0xAEBE, 0xAEBE }, +{ 0xAEBF, 0xAEBF, 0xAEBF }, +{ 0xAEC0, 0xAEC0, 0xAEC0 }, +{ 0xAEC1, 0xAEC1, 0xAEC1 }, +{ 0xAEC2, 0xAEC2, 0xAEC2 }, +{ 0xAEC3, 0xAEC3, 0xAEC3 }, +{ 0xAEC4, 0xAEC4, 0xAEC4 }, +{ 0xAEC5, 0xAEC5, 0xAEC5 }, +{ 0xAEC6, 0xAEC6, 0xAEC6 }, +{ 0xAEC7, 0xAEC7, 0xAEC7 }, +{ 0xAEC8, 0xAEC8, 0xAEC8 }, +{ 0xAEC9, 0xAEC9, 0xAEC9 }, +{ 0xAECA, 0xAECA, 0xAECA }, +{ 0xAECB, 0xAECB, 0xAECB }, +{ 0xAECC, 0xAECC, 0xAECC }, +{ 0xAECD, 0xAECD, 0xAECD }, +{ 0xAECE, 0xAECE, 0xAECE }, +{ 0xAECF, 0xAECF, 0xAECF }, +{ 0xAED0, 0xAED0, 0xAED0 }, +{ 0xAED1, 0xAED1, 0xAED1 }, +{ 0xAED2, 0xAED2, 0xAED2 }, +{ 0xAED3, 0xAED3, 0xAED3 }, +{ 0xAED4, 0xAED4, 0xAED4 }, +{ 0xAED5, 0xAED5, 0xAED5 }, +{ 0xAED6, 0xAED6, 0xAED6 }, +{ 0xAED7, 0xAED7, 0xAED7 }, +{ 0xAED8, 0xAED8, 0xAED8 }, +{ 0xAED9, 0xAED9, 0xAED9 }, +{ 0xAEDA, 0xAEDA, 0xAEDA }, +{ 0xAEDB, 0xAEDB, 0xAEDB }, +{ 0xAEDC, 0xAEDC, 0xAEDC }, +{ 0xAEDD, 0xAEDD, 0xAEDD }, +{ 0xAEDE, 0xAEDE, 0xAEDE }, +{ 0xAEDF, 0xAEDF, 0xAEDF }, +{ 0xAEE0, 0xAEE0, 0xAEE0 }, +{ 0xAEE1, 0xAEE1, 0xAEE1 }, +{ 0xAEE2, 0xAEE2, 0xAEE2 }, +{ 0xAEE3, 0xAEE3, 0xAEE3 }, +{ 0xAEE4, 0xAEE4, 0xAEE4 }, +{ 0xAEE5, 0xAEE5, 0xAEE5 }, +{ 0xAEE6, 0xAEE6, 0xAEE6 }, +{ 0xAEE7, 0xAEE7, 0xAEE7 }, +{ 0xAEE8, 0xAEE8, 0xAEE8 }, +{ 0xAEE9, 0xAEE9, 0xAEE9 }, +{ 0xAEEA, 0xAEEA, 0xAEEA }, +{ 0xAEEB, 0xAEEB, 0xAEEB }, +{ 0xAEEC, 0xAEEC, 0xAEEC }, +{ 0xAEED, 0xAEED, 0xAEED }, +{ 0xAEEE, 0xAEEE, 0xAEEE }, +{ 0xAEEF, 0xAEEF, 0xAEEF }, +{ 0xAEF0, 0xAEF0, 0xAEF0 }, +{ 0xAEF1, 0xAEF1, 0xAEF1 }, +{ 0xAEF2, 0xAEF2, 0xAEF2 }, +{ 0xAEF3, 0xAEF3, 0xAEF3 }, +{ 0xAEF4, 0xAEF4, 0xAEF4 }, +{ 0xAEF5, 0xAEF5, 0xAEF5 }, +{ 0xAEF6, 0xAEF6, 0xAEF6 }, +{ 0xAEF7, 0xAEF7, 0xAEF7 }, +{ 0xAEF8, 0xAEF8, 0xAEF8 }, +{ 0xAEF9, 0xAEF9, 0xAEF9 }, +{ 0xAEFA, 0xAEFA, 0xAEFA }, +{ 0xAEFB, 0xAEFB, 0xAEFB }, +{ 0xAEFC, 0xAEFC, 0xAEFC }, +{ 0xAEFD, 0xAEFD, 0xAEFD }, +{ 0xAEFE, 0xAEFE, 0xAEFE }, +{ 0xAEFF, 0xAEFF, 0xAEFF }, +{ 0xAF00, 0xAF00, 0xAF00 }, +{ 0xAF01, 0xAF01, 0xAF01 }, +{ 0xAF02, 0xAF02, 0xAF02 }, +{ 0xAF03, 0xAF03, 0xAF03 }, +{ 0xAF04, 0xAF04, 0xAF04 }, +{ 0xAF05, 0xAF05, 0xAF05 }, +{ 0xAF06, 0xAF06, 0xAF06 }, +{ 0xAF07, 0xAF07, 0xAF07 }, +{ 0xAF08, 0xAF08, 0xAF08 }, +{ 0xAF09, 0xAF09, 0xAF09 }, +{ 0xAF0A, 0xAF0A, 0xAF0A }, +{ 0xAF0B, 0xAF0B, 0xAF0B }, +{ 0xAF0C, 0xAF0C, 0xAF0C }, +{ 0xAF0D, 0xAF0D, 0xAF0D }, +{ 0xAF0E, 0xAF0E, 0xAF0E }, +{ 0xAF0F, 0xAF0F, 0xAF0F }, +{ 0xAF10, 0xAF10, 0xAF10 }, +{ 0xAF11, 0xAF11, 0xAF11 }, +{ 0xAF12, 0xAF12, 0xAF12 }, +{ 0xAF13, 0xAF13, 0xAF13 }, +{ 0xAF14, 0xAF14, 0xAF14 }, +{ 0xAF15, 0xAF15, 0xAF15 }, +{ 0xAF16, 0xAF16, 0xAF16 }, +{ 0xAF17, 0xAF17, 0xAF17 }, +{ 0xAF18, 0xAF18, 0xAF18 }, +{ 0xAF19, 0xAF19, 0xAF19 }, +{ 0xAF1A, 0xAF1A, 0xAF1A }, +{ 0xAF1B, 0xAF1B, 0xAF1B }, +{ 0xAF1C, 0xAF1C, 0xAF1C }, +{ 0xAF1D, 0xAF1D, 0xAF1D }, +{ 0xAF1E, 0xAF1E, 0xAF1E }, +{ 0xAF1F, 0xAF1F, 0xAF1F }, +{ 0xAF20, 0xAF20, 0xAF20 }, +{ 0xAF21, 0xAF21, 0xAF21 }, +{ 0xAF22, 0xAF22, 0xAF22 }, +{ 0xAF23, 0xAF23, 0xAF23 }, +{ 0xAF24, 0xAF24, 0xAF24 }, +{ 0xAF25, 0xAF25, 0xAF25 }, +{ 0xAF26, 0xAF26, 0xAF26 }, +{ 0xAF27, 0xAF27, 0xAF27 }, +{ 0xAF28, 0xAF28, 0xAF28 }, +{ 0xAF29, 0xAF29, 0xAF29 }, +{ 0xAF2A, 0xAF2A, 0xAF2A }, +{ 0xAF2B, 0xAF2B, 0xAF2B }, +{ 0xAF2C, 0xAF2C, 0xAF2C }, +{ 0xAF2D, 0xAF2D, 0xAF2D }, +{ 0xAF2E, 0xAF2E, 0xAF2E }, +{ 0xAF2F, 0xAF2F, 0xAF2F }, +{ 0xAF30, 0xAF30, 0xAF30 }, +{ 0xAF31, 0xAF31, 0xAF31 }, +{ 0xAF32, 0xAF32, 0xAF32 }, +{ 0xAF33, 0xAF33, 0xAF33 }, +{ 0xAF34, 0xAF34, 0xAF34 }, +{ 0xAF35, 0xAF35, 0xAF35 }, +{ 0xAF36, 0xAF36, 0xAF36 }, +{ 0xAF37, 0xAF37, 0xAF37 }, +{ 0xAF38, 0xAF38, 0xAF38 }, +{ 0xAF39, 0xAF39, 0xAF39 }, +{ 0xAF3A, 0xAF3A, 0xAF3A }, +{ 0xAF3B, 0xAF3B, 0xAF3B }, +{ 0xAF3C, 0xAF3C, 0xAF3C }, +{ 0xAF3D, 0xAF3D, 0xAF3D }, +{ 0xAF3E, 0xAF3E, 0xAF3E }, +{ 0xAF3F, 0xAF3F, 0xAF3F }, +{ 0xAF40, 0xAF40, 0xAF40 }, +{ 0xAF41, 0xAF41, 0xAF41 }, +{ 0xAF42, 0xAF42, 0xAF42 }, +{ 0xAF43, 0xAF43, 0xAF43 }, +{ 0xAF44, 0xAF44, 0xAF44 }, +{ 0xAF45, 0xAF45, 0xAF45 }, +{ 0xAF46, 0xAF46, 0xAF46 }, +{ 0xAF47, 0xAF47, 0xAF47 }, +{ 0xAF48, 0xAF48, 0xAF48 }, +{ 0xAF49, 0xAF49, 0xAF49 }, +{ 0xAF4A, 0xAF4A, 0xAF4A }, +{ 0xAF4B, 0xAF4B, 0xAF4B }, +{ 0xAF4C, 0xAF4C, 0xAF4C }, +{ 0xAF4D, 0xAF4D, 0xAF4D }, +{ 0xAF4E, 0xAF4E, 0xAF4E }, +{ 0xAF4F, 0xAF4F, 0xAF4F }, +{ 0xAF50, 0xAF50, 0xAF50 }, +{ 0xAF51, 0xAF51, 0xAF51 }, +{ 0xAF52, 0xAF52, 0xAF52 }, +{ 0xAF53, 0xAF53, 0xAF53 }, +{ 0xAF54, 0xAF54, 0xAF54 }, +{ 0xAF55, 0xAF55, 0xAF55 }, +{ 0xAF56, 0xAF56, 0xAF56 }, +{ 0xAF57, 0xAF57, 0xAF57 }, +{ 0xAF58, 0xAF58, 0xAF58 }, +{ 0xAF59, 0xAF59, 0xAF59 }, +{ 0xAF5A, 0xAF5A, 0xAF5A }, +{ 0xAF5B, 0xAF5B, 0xAF5B }, +{ 0xAF5C, 0xAF5C, 0xAF5C }, +{ 0xAF5D, 0xAF5D, 0xAF5D }, +{ 0xAF5E, 0xAF5E, 0xAF5E }, +{ 0xAF5F, 0xAF5F, 0xAF5F }, +{ 0xAF60, 0xAF60, 0xAF60 }, +{ 0xAF61, 0xAF61, 0xAF61 }, +{ 0xAF62, 0xAF62, 0xAF62 }, +{ 0xAF63, 0xAF63, 0xAF63 }, +{ 0xAF64, 0xAF64, 0xAF64 }, +{ 0xAF65, 0xAF65, 0xAF65 }, +{ 0xAF66, 0xAF66, 0xAF66 }, +{ 0xAF67, 0xAF67, 0xAF67 }, +{ 0xAF68, 0xAF68, 0xAF68 }, +{ 0xAF69, 0xAF69, 0xAF69 }, +{ 0xAF6A, 0xAF6A, 0xAF6A }, +{ 0xAF6B, 0xAF6B, 0xAF6B }, +{ 0xAF6C, 0xAF6C, 0xAF6C }, +{ 0xAF6D, 0xAF6D, 0xAF6D }, +{ 0xAF6E, 0xAF6E, 0xAF6E }, +{ 0xAF6F, 0xAF6F, 0xAF6F }, +{ 0xAF70, 0xAF70, 0xAF70 }, +{ 0xAF71, 0xAF71, 0xAF71 }, +{ 0xAF72, 0xAF72, 0xAF72 }, +{ 0xAF73, 0xAF73, 0xAF73 }, +{ 0xAF74, 0xAF74, 0xAF74 }, +{ 0xAF75, 0xAF75, 0xAF75 }, +{ 0xAF76, 0xAF76, 0xAF76 }, +{ 0xAF77, 0xAF77, 0xAF77 }, +{ 0xAF78, 0xAF78, 0xAF78 }, +{ 0xAF79, 0xAF79, 0xAF79 }, +{ 0xAF7A, 0xAF7A, 0xAF7A }, +{ 0xAF7B, 0xAF7B, 0xAF7B }, +{ 0xAF7C, 0xAF7C, 0xAF7C }, +{ 0xAF7D, 0xAF7D, 0xAF7D }, +{ 0xAF7E, 0xAF7E, 0xAF7E }, +{ 0xAF7F, 0xAF7F, 0xAF7F }, +{ 0xAF80, 0xAF80, 0xAF80 }, +{ 0xAF81, 0xAF81, 0xAF81 }, +{ 0xAF82, 0xAF82, 0xAF82 }, +{ 0xAF83, 0xAF83, 0xAF83 }, +{ 0xAF84, 0xAF84, 0xAF84 }, +{ 0xAF85, 0xAF85, 0xAF85 }, +{ 0xAF86, 0xAF86, 0xAF86 }, +{ 0xAF87, 0xAF87, 0xAF87 }, +{ 0xAF88, 0xAF88, 0xAF88 }, +{ 0xAF89, 0xAF89, 0xAF89 }, +{ 0xAF8A, 0xAF8A, 0xAF8A }, +{ 0xAF8B, 0xAF8B, 0xAF8B }, +{ 0xAF8C, 0xAF8C, 0xAF8C }, +{ 0xAF8D, 0xAF8D, 0xAF8D }, +{ 0xAF8E, 0xAF8E, 0xAF8E }, +{ 0xAF8F, 0xAF8F, 0xAF8F }, +{ 0xAF90, 0xAF90, 0xAF90 }, +{ 0xAF91, 0xAF91, 0xAF91 }, +{ 0xAF92, 0xAF92, 0xAF92 }, +{ 0xAF93, 0xAF93, 0xAF93 }, +{ 0xAF94, 0xAF94, 0xAF94 }, +{ 0xAF95, 0xAF95, 0xAF95 }, +{ 0xAF96, 0xAF96, 0xAF96 }, +{ 0xAF97, 0xAF97, 0xAF97 }, +{ 0xAF98, 0xAF98, 0xAF98 }, +{ 0xAF99, 0xAF99, 0xAF99 }, +{ 0xAF9A, 0xAF9A, 0xAF9A }, +{ 0xAF9B, 0xAF9B, 0xAF9B }, +{ 0xAF9C, 0xAF9C, 0xAF9C }, +{ 0xAF9D, 0xAF9D, 0xAF9D }, +{ 0xAF9E, 0xAF9E, 0xAF9E }, +{ 0xAF9F, 0xAF9F, 0xAF9F }, +{ 0xAFA0, 0xAFA0, 0xAFA0 }, +{ 0xAFA1, 0xAFA1, 0xAFA1 }, +{ 0xAFA2, 0xAFA2, 0xAFA2 }, +{ 0xAFA3, 0xAFA3, 0xAFA3 }, +{ 0xAFA4, 0xAFA4, 0xAFA4 }, +{ 0xAFA5, 0xAFA5, 0xAFA5 }, +{ 0xAFA6, 0xAFA6, 0xAFA6 }, +{ 0xAFA7, 0xAFA7, 0xAFA7 }, +{ 0xAFA8, 0xAFA8, 0xAFA8 }, +{ 0xAFA9, 0xAFA9, 0xAFA9 }, +{ 0xAFAA, 0xAFAA, 0xAFAA }, +{ 0xAFAB, 0xAFAB, 0xAFAB }, +{ 0xAFAC, 0xAFAC, 0xAFAC }, +{ 0xAFAD, 0xAFAD, 0xAFAD }, +{ 0xAFAE, 0xAFAE, 0xAFAE }, +{ 0xAFAF, 0xAFAF, 0xAFAF }, +{ 0xAFB0, 0xAFB0, 0xAFB0 }, +{ 0xAFB1, 0xAFB1, 0xAFB1 }, +{ 0xAFB2, 0xAFB2, 0xAFB2 }, +{ 0xAFB3, 0xAFB3, 0xAFB3 }, +{ 0xAFB4, 0xAFB4, 0xAFB4 }, +{ 0xAFB5, 0xAFB5, 0xAFB5 }, +{ 0xAFB6, 0xAFB6, 0xAFB6 }, +{ 0xAFB7, 0xAFB7, 0xAFB7 }, +{ 0xAFB8, 0xAFB8, 0xAFB8 }, +{ 0xAFB9, 0xAFB9, 0xAFB9 }, +{ 0xAFBA, 0xAFBA, 0xAFBA }, +{ 0xAFBB, 0xAFBB, 0xAFBB }, +{ 0xAFBC, 0xAFBC, 0xAFBC }, +{ 0xAFBD, 0xAFBD, 0xAFBD }, +{ 0xAFBE, 0xAFBE, 0xAFBE }, +{ 0xAFBF, 0xAFBF, 0xAFBF }, +{ 0xAFC0, 0xAFC0, 0xAFC0 }, +{ 0xAFC1, 0xAFC1, 0xAFC1 }, +{ 0xAFC2, 0xAFC2, 0xAFC2 }, +{ 0xAFC3, 0xAFC3, 0xAFC3 }, +{ 0xAFC4, 0xAFC4, 0xAFC4 }, +{ 0xAFC5, 0xAFC5, 0xAFC5 }, +{ 0xAFC6, 0xAFC6, 0xAFC6 }, +{ 0xAFC7, 0xAFC7, 0xAFC7 }, +{ 0xAFC8, 0xAFC8, 0xAFC8 }, +{ 0xAFC9, 0xAFC9, 0xAFC9 }, +{ 0xAFCA, 0xAFCA, 0xAFCA }, +{ 0xAFCB, 0xAFCB, 0xAFCB }, +{ 0xAFCC, 0xAFCC, 0xAFCC }, +{ 0xAFCD, 0xAFCD, 0xAFCD }, +{ 0xAFCE, 0xAFCE, 0xAFCE }, +{ 0xAFCF, 0xAFCF, 0xAFCF }, +{ 0xAFD0, 0xAFD0, 0xAFD0 }, +{ 0xAFD1, 0xAFD1, 0xAFD1 }, +{ 0xAFD2, 0xAFD2, 0xAFD2 }, +{ 0xAFD3, 0xAFD3, 0xAFD3 }, +{ 0xAFD4, 0xAFD4, 0xAFD4 }, +{ 0xAFD5, 0xAFD5, 0xAFD5 }, +{ 0xAFD6, 0xAFD6, 0xAFD6 }, +{ 0xAFD7, 0xAFD7, 0xAFD7 }, +{ 0xAFD8, 0xAFD8, 0xAFD8 }, +{ 0xAFD9, 0xAFD9, 0xAFD9 }, +{ 0xAFDA, 0xAFDA, 0xAFDA }, +{ 0xAFDB, 0xAFDB, 0xAFDB }, +{ 0xAFDC, 0xAFDC, 0xAFDC }, +{ 0xAFDD, 0xAFDD, 0xAFDD }, +{ 0xAFDE, 0xAFDE, 0xAFDE }, +{ 0xAFDF, 0xAFDF, 0xAFDF }, +{ 0xAFE0, 0xAFE0, 0xAFE0 }, +{ 0xAFE1, 0xAFE1, 0xAFE1 }, +{ 0xAFE2, 0xAFE2, 0xAFE2 }, +{ 0xAFE3, 0xAFE3, 0xAFE3 }, +{ 0xAFE4, 0xAFE4, 0xAFE4 }, +{ 0xAFE5, 0xAFE5, 0xAFE5 }, +{ 0xAFE6, 0xAFE6, 0xAFE6 }, +{ 0xAFE7, 0xAFE7, 0xAFE7 }, +{ 0xAFE8, 0xAFE8, 0xAFE8 }, +{ 0xAFE9, 0xAFE9, 0xAFE9 }, +{ 0xAFEA, 0xAFEA, 0xAFEA }, +{ 0xAFEB, 0xAFEB, 0xAFEB }, +{ 0xAFEC, 0xAFEC, 0xAFEC }, +{ 0xAFED, 0xAFED, 0xAFED }, +{ 0xAFEE, 0xAFEE, 0xAFEE }, +{ 0xAFEF, 0xAFEF, 0xAFEF }, +{ 0xAFF0, 0xAFF0, 0xAFF0 }, +{ 0xAFF1, 0xAFF1, 0xAFF1 }, +{ 0xAFF2, 0xAFF2, 0xAFF2 }, +{ 0xAFF3, 0xAFF3, 0xAFF3 }, +{ 0xAFF4, 0xAFF4, 0xAFF4 }, +{ 0xAFF5, 0xAFF5, 0xAFF5 }, +{ 0xAFF6, 0xAFF6, 0xAFF6 }, +{ 0xAFF7, 0xAFF7, 0xAFF7 }, +{ 0xAFF8, 0xAFF8, 0xAFF8 }, +{ 0xAFF9, 0xAFF9, 0xAFF9 }, +{ 0xAFFA, 0xAFFA, 0xAFFA }, +{ 0xAFFB, 0xAFFB, 0xAFFB }, +{ 0xAFFC, 0xAFFC, 0xAFFC }, +{ 0xAFFD, 0xAFFD, 0xAFFD }, +{ 0xAFFE, 0xAFFE, 0xAFFE }, +{ 0xAFFF, 0xAFFF, 0xAFFF }, +{ 0xB000, 0xB000, 0xB000 }, +{ 0xB001, 0xB001, 0xB001 }, +{ 0xB002, 0xB002, 0xB002 }, +{ 0xB003, 0xB003, 0xB003 }, +{ 0xB004, 0xB004, 0xB004 }, +{ 0xB005, 0xB005, 0xB005 }, +{ 0xB006, 0xB006, 0xB006 }, +{ 0xB007, 0xB007, 0xB007 }, +{ 0xB008, 0xB008, 0xB008 }, +{ 0xB009, 0xB009, 0xB009 }, +{ 0xB00A, 0xB00A, 0xB00A }, +{ 0xB00B, 0xB00B, 0xB00B }, +{ 0xB00C, 0xB00C, 0xB00C }, +{ 0xB00D, 0xB00D, 0xB00D }, +{ 0xB00E, 0xB00E, 0xB00E }, +{ 0xB00F, 0xB00F, 0xB00F }, +{ 0xB010, 0xB010, 0xB010 }, +{ 0xB011, 0xB011, 0xB011 }, +{ 0xB012, 0xB012, 0xB012 }, +{ 0xB013, 0xB013, 0xB013 }, +{ 0xB014, 0xB014, 0xB014 }, +{ 0xB015, 0xB015, 0xB015 }, +{ 0xB016, 0xB016, 0xB016 }, +{ 0xB017, 0xB017, 0xB017 }, +{ 0xB018, 0xB018, 0xB018 }, +{ 0xB019, 0xB019, 0xB019 }, +{ 0xB01A, 0xB01A, 0xB01A }, +{ 0xB01B, 0xB01B, 0xB01B }, +{ 0xB01C, 0xB01C, 0xB01C }, +{ 0xB01D, 0xB01D, 0xB01D }, +{ 0xB01E, 0xB01E, 0xB01E }, +{ 0xB01F, 0xB01F, 0xB01F }, +{ 0xB020, 0xB020, 0xB020 }, +{ 0xB021, 0xB021, 0xB021 }, +{ 0xB022, 0xB022, 0xB022 }, +{ 0xB023, 0xB023, 0xB023 }, +{ 0xB024, 0xB024, 0xB024 }, +{ 0xB025, 0xB025, 0xB025 }, +{ 0xB026, 0xB026, 0xB026 }, +{ 0xB027, 0xB027, 0xB027 }, +{ 0xB028, 0xB028, 0xB028 }, +{ 0xB029, 0xB029, 0xB029 }, +{ 0xB02A, 0xB02A, 0xB02A }, +{ 0xB02B, 0xB02B, 0xB02B }, +{ 0xB02C, 0xB02C, 0xB02C }, +{ 0xB02D, 0xB02D, 0xB02D }, +{ 0xB02E, 0xB02E, 0xB02E }, +{ 0xB02F, 0xB02F, 0xB02F }, +{ 0xB030, 0xB030, 0xB030 }, +{ 0xB031, 0xB031, 0xB031 }, +{ 0xB032, 0xB032, 0xB032 }, +{ 0xB033, 0xB033, 0xB033 }, +{ 0xB034, 0xB034, 0xB034 }, +{ 0xB035, 0xB035, 0xB035 }, +{ 0xB036, 0xB036, 0xB036 }, +{ 0xB037, 0xB037, 0xB037 }, +{ 0xB038, 0xB038, 0xB038 }, +{ 0xB039, 0xB039, 0xB039 }, +{ 0xB03A, 0xB03A, 0xB03A }, +{ 0xB03B, 0xB03B, 0xB03B }, +{ 0xB03C, 0xB03C, 0xB03C }, +{ 0xB03D, 0xB03D, 0xB03D }, +{ 0xB03E, 0xB03E, 0xB03E }, +{ 0xB03F, 0xB03F, 0xB03F }, +{ 0xB040, 0xB040, 0xB040 }, +{ 0xB041, 0xB041, 0xB041 }, +{ 0xB042, 0xB042, 0xB042 }, +{ 0xB043, 0xB043, 0xB043 }, +{ 0xB044, 0xB044, 0xB044 }, +{ 0xB045, 0xB045, 0xB045 }, +{ 0xB046, 0xB046, 0xB046 }, +{ 0xB047, 0xB047, 0xB047 }, +{ 0xB048, 0xB048, 0xB048 }, +{ 0xB049, 0xB049, 0xB049 }, +{ 0xB04A, 0xB04A, 0xB04A }, +{ 0xB04B, 0xB04B, 0xB04B }, +{ 0xB04C, 0xB04C, 0xB04C }, +{ 0xB04D, 0xB04D, 0xB04D }, +{ 0xB04E, 0xB04E, 0xB04E }, +{ 0xB04F, 0xB04F, 0xB04F }, +{ 0xB050, 0xB050, 0xB050 }, +{ 0xB051, 0xB051, 0xB051 }, +{ 0xB052, 0xB052, 0xB052 }, +{ 0xB053, 0xB053, 0xB053 }, +{ 0xB054, 0xB054, 0xB054 }, +{ 0xB055, 0xB055, 0xB055 }, +{ 0xB056, 0xB056, 0xB056 }, +{ 0xB057, 0xB057, 0xB057 }, +{ 0xB058, 0xB058, 0xB058 }, +{ 0xB059, 0xB059, 0xB059 }, +{ 0xB05A, 0xB05A, 0xB05A }, +{ 0xB05B, 0xB05B, 0xB05B }, +{ 0xB05C, 0xB05C, 0xB05C }, +{ 0xB05D, 0xB05D, 0xB05D }, +{ 0xB05E, 0xB05E, 0xB05E }, +{ 0xB05F, 0xB05F, 0xB05F }, +{ 0xB060, 0xB060, 0xB060 }, +{ 0xB061, 0xB061, 0xB061 }, +{ 0xB062, 0xB062, 0xB062 }, +{ 0xB063, 0xB063, 0xB063 }, +{ 0xB064, 0xB064, 0xB064 }, +{ 0xB065, 0xB065, 0xB065 }, +{ 0xB066, 0xB066, 0xB066 }, +{ 0xB067, 0xB067, 0xB067 }, +{ 0xB068, 0xB068, 0xB068 }, +{ 0xB069, 0xB069, 0xB069 }, +{ 0xB06A, 0xB06A, 0xB06A }, +{ 0xB06B, 0xB06B, 0xB06B }, +{ 0xB06C, 0xB06C, 0xB06C }, +{ 0xB06D, 0xB06D, 0xB06D }, +{ 0xB06E, 0xB06E, 0xB06E }, +{ 0xB06F, 0xB06F, 0xB06F }, +{ 0xB070, 0xB070, 0xB070 }, +{ 0xB071, 0xB071, 0xB071 }, +{ 0xB072, 0xB072, 0xB072 }, +{ 0xB073, 0xB073, 0xB073 }, +{ 0xB074, 0xB074, 0xB074 }, +{ 0xB075, 0xB075, 0xB075 }, +{ 0xB076, 0xB076, 0xB076 }, +{ 0xB077, 0xB077, 0xB077 }, +{ 0xB078, 0xB078, 0xB078 }, +{ 0xB079, 0xB079, 0xB079 }, +{ 0xB07A, 0xB07A, 0xB07A }, +{ 0xB07B, 0xB07B, 0xB07B }, +{ 0xB07C, 0xB07C, 0xB07C }, +{ 0xB07D, 0xB07D, 0xB07D }, +{ 0xB07E, 0xB07E, 0xB07E }, +{ 0xB07F, 0xB07F, 0xB07F }, +{ 0xB080, 0xB080, 0xB080 }, +{ 0xB081, 0xB081, 0xB081 }, +{ 0xB082, 0xB082, 0xB082 }, +{ 0xB083, 0xB083, 0xB083 }, +{ 0xB084, 0xB084, 0xB084 }, +{ 0xB085, 0xB085, 0xB085 }, +{ 0xB086, 0xB086, 0xB086 }, +{ 0xB087, 0xB087, 0xB087 }, +{ 0xB088, 0xB088, 0xB088 }, +{ 0xB089, 0xB089, 0xB089 }, +{ 0xB08A, 0xB08A, 0xB08A }, +{ 0xB08B, 0xB08B, 0xB08B }, +{ 0xB08C, 0xB08C, 0xB08C }, +{ 0xB08D, 0xB08D, 0xB08D }, +{ 0xB08E, 0xB08E, 0xB08E }, +{ 0xB08F, 0xB08F, 0xB08F }, +{ 0xB090, 0xB090, 0xB090 }, +{ 0xB091, 0xB091, 0xB091 }, +{ 0xB092, 0xB092, 0xB092 }, +{ 0xB093, 0xB093, 0xB093 }, +{ 0xB094, 0xB094, 0xB094 }, +{ 0xB095, 0xB095, 0xB095 }, +{ 0xB096, 0xB096, 0xB096 }, +{ 0xB097, 0xB097, 0xB097 }, +{ 0xB098, 0xB098, 0xB098 }, +{ 0xB099, 0xB099, 0xB099 }, +{ 0xB09A, 0xB09A, 0xB09A }, +{ 0xB09B, 0xB09B, 0xB09B }, +{ 0xB09C, 0xB09C, 0xB09C }, +{ 0xB09D, 0xB09D, 0xB09D }, +{ 0xB09E, 0xB09E, 0xB09E }, +{ 0xB09F, 0xB09F, 0xB09F }, +{ 0xB0A0, 0xB0A0, 0xB0A0 }, +{ 0xB0A1, 0xB0A1, 0xB0A1 }, +{ 0xB0A2, 0xB0A2, 0xB0A2 }, +{ 0xB0A3, 0xB0A3, 0xB0A3 }, +{ 0xB0A4, 0xB0A4, 0xB0A4 }, +{ 0xB0A5, 0xB0A5, 0xB0A5 }, +{ 0xB0A6, 0xB0A6, 0xB0A6 }, +{ 0xB0A7, 0xB0A7, 0xB0A7 }, +{ 0xB0A8, 0xB0A8, 0xB0A8 }, +{ 0xB0A9, 0xB0A9, 0xB0A9 }, +{ 0xB0AA, 0xB0AA, 0xB0AA }, +{ 0xB0AB, 0xB0AB, 0xB0AB }, +{ 0xB0AC, 0xB0AC, 0xB0AC }, +{ 0xB0AD, 0xB0AD, 0xB0AD }, +{ 0xB0AE, 0xB0AE, 0xB0AE }, +{ 0xB0AF, 0xB0AF, 0xB0AF }, +{ 0xB0B0, 0xB0B0, 0xB0B0 }, +{ 0xB0B1, 0xB0B1, 0xB0B1 }, +{ 0xB0B2, 0xB0B2, 0xB0B2 }, +{ 0xB0B3, 0xB0B3, 0xB0B3 }, +{ 0xB0B4, 0xB0B4, 0xB0B4 }, +{ 0xB0B5, 0xB0B5, 0xB0B5 }, +{ 0xB0B6, 0xB0B6, 0xB0B6 }, +{ 0xB0B7, 0xB0B7, 0xB0B7 }, +{ 0xB0B8, 0xB0B8, 0xB0B8 }, +{ 0xB0B9, 0xB0B9, 0xB0B9 }, +{ 0xB0BA, 0xB0BA, 0xB0BA }, +{ 0xB0BB, 0xB0BB, 0xB0BB }, +{ 0xB0BC, 0xB0BC, 0xB0BC }, +{ 0xB0BD, 0xB0BD, 0xB0BD }, +{ 0xB0BE, 0xB0BE, 0xB0BE }, +{ 0xB0BF, 0xB0BF, 0xB0BF }, +{ 0xB0C0, 0xB0C0, 0xB0C0 }, +{ 0xB0C1, 0xB0C1, 0xB0C1 }, +{ 0xB0C2, 0xB0C2, 0xB0C2 }, +{ 0xB0C3, 0xB0C3, 0xB0C3 }, +{ 0xB0C4, 0xB0C4, 0xB0C4 }, +{ 0xB0C5, 0xB0C5, 0xB0C5 }, +{ 0xB0C6, 0xB0C6, 0xB0C6 }, +{ 0xB0C7, 0xB0C7, 0xB0C7 }, +{ 0xB0C8, 0xB0C8, 0xB0C8 }, +{ 0xB0C9, 0xB0C9, 0xB0C9 }, +{ 0xB0CA, 0xB0CA, 0xB0CA }, +{ 0xB0CB, 0xB0CB, 0xB0CB }, +{ 0xB0CC, 0xB0CC, 0xB0CC }, +{ 0xB0CD, 0xB0CD, 0xB0CD }, +{ 0xB0CE, 0xB0CE, 0xB0CE }, +{ 0xB0CF, 0xB0CF, 0xB0CF }, +{ 0xB0D0, 0xB0D0, 0xB0D0 }, +{ 0xB0D1, 0xB0D1, 0xB0D1 }, +{ 0xB0D2, 0xB0D2, 0xB0D2 }, +{ 0xB0D3, 0xB0D3, 0xB0D3 }, +{ 0xB0D4, 0xB0D4, 0xB0D4 }, +{ 0xB0D5, 0xB0D5, 0xB0D5 }, +{ 0xB0D6, 0xB0D6, 0xB0D6 }, +{ 0xB0D7, 0xB0D7, 0xB0D7 }, +{ 0xB0D8, 0xB0D8, 0xB0D8 }, +{ 0xB0D9, 0xB0D9, 0xB0D9 }, +{ 0xB0DA, 0xB0DA, 0xB0DA }, +{ 0xB0DB, 0xB0DB, 0xB0DB }, +{ 0xB0DC, 0xB0DC, 0xB0DC }, +{ 0xB0DD, 0xB0DD, 0xB0DD }, +{ 0xB0DE, 0xB0DE, 0xB0DE }, +{ 0xB0DF, 0xB0DF, 0xB0DF }, +{ 0xB0E0, 0xB0E0, 0xB0E0 }, +{ 0xB0E1, 0xB0E1, 0xB0E1 }, +{ 0xB0E2, 0xB0E2, 0xB0E2 }, +{ 0xB0E3, 0xB0E3, 0xB0E3 }, +{ 0xB0E4, 0xB0E4, 0xB0E4 }, +{ 0xB0E5, 0xB0E5, 0xB0E5 }, +{ 0xB0E6, 0xB0E6, 0xB0E6 }, +{ 0xB0E7, 0xB0E7, 0xB0E7 }, +{ 0xB0E8, 0xB0E8, 0xB0E8 }, +{ 0xB0E9, 0xB0E9, 0xB0E9 }, +{ 0xB0EA, 0xB0EA, 0xB0EA }, +{ 0xB0EB, 0xB0EB, 0xB0EB }, +{ 0xB0EC, 0xB0EC, 0xB0EC }, +{ 0xB0ED, 0xB0ED, 0xB0ED }, +{ 0xB0EE, 0xB0EE, 0xB0EE }, +{ 0xB0EF, 0xB0EF, 0xB0EF }, +{ 0xB0F0, 0xB0F0, 0xB0F0 }, +{ 0xB0F1, 0xB0F1, 0xB0F1 }, +{ 0xB0F2, 0xB0F2, 0xB0F2 }, +{ 0xB0F3, 0xB0F3, 0xB0F3 }, +{ 0xB0F4, 0xB0F4, 0xB0F4 }, +{ 0xB0F5, 0xB0F5, 0xB0F5 }, +{ 0xB0F6, 0xB0F6, 0xB0F6 }, +{ 0xB0F7, 0xB0F7, 0xB0F7 }, +{ 0xB0F8, 0xB0F8, 0xB0F8 }, +{ 0xB0F9, 0xB0F9, 0xB0F9 }, +{ 0xB0FA, 0xB0FA, 0xB0FA }, +{ 0xB0FB, 0xB0FB, 0xB0FB }, +{ 0xB0FC, 0xB0FC, 0xB0FC }, +{ 0xB0FD, 0xB0FD, 0xB0FD }, +{ 0xB0FE, 0xB0FE, 0xB0FE }, +{ 0xB0FF, 0xB0FF, 0xB0FF }, +{ 0xB100, 0xB100, 0xB100 }, +{ 0xB101, 0xB101, 0xB101 }, +{ 0xB102, 0xB102, 0xB102 }, +{ 0xB103, 0xB103, 0xB103 }, +{ 0xB104, 0xB104, 0xB104 }, +{ 0xB105, 0xB105, 0xB105 }, +{ 0xB106, 0xB106, 0xB106 }, +{ 0xB107, 0xB107, 0xB107 }, +{ 0xB108, 0xB108, 0xB108 }, +{ 0xB109, 0xB109, 0xB109 }, +{ 0xB10A, 0xB10A, 0xB10A }, +{ 0xB10B, 0xB10B, 0xB10B }, +{ 0xB10C, 0xB10C, 0xB10C }, +{ 0xB10D, 0xB10D, 0xB10D }, +{ 0xB10E, 0xB10E, 0xB10E }, +{ 0xB10F, 0xB10F, 0xB10F }, +{ 0xB110, 0xB110, 0xB110 }, +{ 0xB111, 0xB111, 0xB111 }, +{ 0xB112, 0xB112, 0xB112 }, +{ 0xB113, 0xB113, 0xB113 }, +{ 0xB114, 0xB114, 0xB114 }, +{ 0xB115, 0xB115, 0xB115 }, +{ 0xB116, 0xB116, 0xB116 }, +{ 0xB117, 0xB117, 0xB117 }, +{ 0xB118, 0xB118, 0xB118 }, +{ 0xB119, 0xB119, 0xB119 }, +{ 0xB11A, 0xB11A, 0xB11A }, +{ 0xB11B, 0xB11B, 0xB11B }, +{ 0xB11C, 0xB11C, 0xB11C }, +{ 0xB11D, 0xB11D, 0xB11D }, +{ 0xB11E, 0xB11E, 0xB11E }, +{ 0xB11F, 0xB11F, 0xB11F }, +{ 0xB120, 0xB120, 0xB120 }, +{ 0xB121, 0xB121, 0xB121 }, +{ 0xB122, 0xB122, 0xB122 }, +{ 0xB123, 0xB123, 0xB123 }, +{ 0xB124, 0xB124, 0xB124 }, +{ 0xB125, 0xB125, 0xB125 }, +{ 0xB126, 0xB126, 0xB126 }, +{ 0xB127, 0xB127, 0xB127 }, +{ 0xB128, 0xB128, 0xB128 }, +{ 0xB129, 0xB129, 0xB129 }, +{ 0xB12A, 0xB12A, 0xB12A }, +{ 0xB12B, 0xB12B, 0xB12B }, +{ 0xB12C, 0xB12C, 0xB12C }, +{ 0xB12D, 0xB12D, 0xB12D }, +{ 0xB12E, 0xB12E, 0xB12E }, +{ 0xB12F, 0xB12F, 0xB12F }, +{ 0xB130, 0xB130, 0xB130 }, +{ 0xB131, 0xB131, 0xB131 }, +{ 0xB132, 0xB132, 0xB132 }, +{ 0xB133, 0xB133, 0xB133 }, +{ 0xB134, 0xB134, 0xB134 }, +{ 0xB135, 0xB135, 0xB135 }, +{ 0xB136, 0xB136, 0xB136 }, +{ 0xB137, 0xB137, 0xB137 }, +{ 0xB138, 0xB138, 0xB138 }, +{ 0xB139, 0xB139, 0xB139 }, +{ 0xB13A, 0xB13A, 0xB13A }, +{ 0xB13B, 0xB13B, 0xB13B }, +{ 0xB13C, 0xB13C, 0xB13C }, +{ 0xB13D, 0xB13D, 0xB13D }, +{ 0xB13E, 0xB13E, 0xB13E }, +{ 0xB13F, 0xB13F, 0xB13F }, +{ 0xB140, 0xB140, 0xB140 }, +{ 0xB141, 0xB141, 0xB141 }, +{ 0xB142, 0xB142, 0xB142 }, +{ 0xB143, 0xB143, 0xB143 }, +{ 0xB144, 0xB144, 0xB144 }, +{ 0xB145, 0xB145, 0xB145 }, +{ 0xB146, 0xB146, 0xB146 }, +{ 0xB147, 0xB147, 0xB147 }, +{ 0xB148, 0xB148, 0xB148 }, +{ 0xB149, 0xB149, 0xB149 }, +{ 0xB14A, 0xB14A, 0xB14A }, +{ 0xB14B, 0xB14B, 0xB14B }, +{ 0xB14C, 0xB14C, 0xB14C }, +{ 0xB14D, 0xB14D, 0xB14D }, +{ 0xB14E, 0xB14E, 0xB14E }, +{ 0xB14F, 0xB14F, 0xB14F }, +{ 0xB150, 0xB150, 0xB150 }, +{ 0xB151, 0xB151, 0xB151 }, +{ 0xB152, 0xB152, 0xB152 }, +{ 0xB153, 0xB153, 0xB153 }, +{ 0xB154, 0xB154, 0xB154 }, +{ 0xB155, 0xB155, 0xB155 }, +{ 0xB156, 0xB156, 0xB156 }, +{ 0xB157, 0xB157, 0xB157 }, +{ 0xB158, 0xB158, 0xB158 }, +{ 0xB159, 0xB159, 0xB159 }, +{ 0xB15A, 0xB15A, 0xB15A }, +{ 0xB15B, 0xB15B, 0xB15B }, +{ 0xB15C, 0xB15C, 0xB15C }, +{ 0xB15D, 0xB15D, 0xB15D }, +{ 0xB15E, 0xB15E, 0xB15E }, +{ 0xB15F, 0xB15F, 0xB15F }, +{ 0xB160, 0xB160, 0xB160 }, +{ 0xB161, 0xB161, 0xB161 }, +{ 0xB162, 0xB162, 0xB162 }, +{ 0xB163, 0xB163, 0xB163 }, +{ 0xB164, 0xB164, 0xB164 }, +{ 0xB165, 0xB165, 0xB165 }, +{ 0xB166, 0xB166, 0xB166 }, +{ 0xB167, 0xB167, 0xB167 }, +{ 0xB168, 0xB168, 0xB168 }, +{ 0xB169, 0xB169, 0xB169 }, +{ 0xB16A, 0xB16A, 0xB16A }, +{ 0xB16B, 0xB16B, 0xB16B }, +{ 0xB16C, 0xB16C, 0xB16C }, +{ 0xB16D, 0xB16D, 0xB16D }, +{ 0xB16E, 0xB16E, 0xB16E }, +{ 0xB16F, 0xB16F, 0xB16F }, +{ 0xB170, 0xB170, 0xB170 }, +{ 0xB171, 0xB171, 0xB171 }, +{ 0xB172, 0xB172, 0xB172 }, +{ 0xB173, 0xB173, 0xB173 }, +{ 0xB174, 0xB174, 0xB174 }, +{ 0xB175, 0xB175, 0xB175 }, +{ 0xB176, 0xB176, 0xB176 }, +{ 0xB177, 0xB177, 0xB177 }, +{ 0xB178, 0xB178, 0xB178 }, +{ 0xB179, 0xB179, 0xB179 }, +{ 0xB17A, 0xB17A, 0xB17A }, +{ 0xB17B, 0xB17B, 0xB17B }, +{ 0xB17C, 0xB17C, 0xB17C }, +{ 0xB17D, 0xB17D, 0xB17D }, +{ 0xB17E, 0xB17E, 0xB17E }, +{ 0xB17F, 0xB17F, 0xB17F }, +{ 0xB180, 0xB180, 0xB180 }, +{ 0xB181, 0xB181, 0xB181 }, +{ 0xB182, 0xB182, 0xB182 }, +{ 0xB183, 0xB183, 0xB183 }, +{ 0xB184, 0xB184, 0xB184 }, +{ 0xB185, 0xB185, 0xB185 }, +{ 0xB186, 0xB186, 0xB186 }, +{ 0xB187, 0xB187, 0xB187 }, +{ 0xB188, 0xB188, 0xB188 }, +{ 0xB189, 0xB189, 0xB189 }, +{ 0xB18A, 0xB18A, 0xB18A }, +{ 0xB18B, 0xB18B, 0xB18B }, +{ 0xB18C, 0xB18C, 0xB18C }, +{ 0xB18D, 0xB18D, 0xB18D }, +{ 0xB18E, 0xB18E, 0xB18E }, +{ 0xB18F, 0xB18F, 0xB18F }, +{ 0xB190, 0xB190, 0xB190 }, +{ 0xB191, 0xB191, 0xB191 }, +{ 0xB192, 0xB192, 0xB192 }, +{ 0xB193, 0xB193, 0xB193 }, +{ 0xB194, 0xB194, 0xB194 }, +{ 0xB195, 0xB195, 0xB195 }, +{ 0xB196, 0xB196, 0xB196 }, +{ 0xB197, 0xB197, 0xB197 }, +{ 0xB198, 0xB198, 0xB198 }, +{ 0xB199, 0xB199, 0xB199 }, +{ 0xB19A, 0xB19A, 0xB19A }, +{ 0xB19B, 0xB19B, 0xB19B }, +{ 0xB19C, 0xB19C, 0xB19C }, +{ 0xB19D, 0xB19D, 0xB19D }, +{ 0xB19E, 0xB19E, 0xB19E }, +{ 0xB19F, 0xB19F, 0xB19F }, +{ 0xB1A0, 0xB1A0, 0xB1A0 }, +{ 0xB1A1, 0xB1A1, 0xB1A1 }, +{ 0xB1A2, 0xB1A2, 0xB1A2 }, +{ 0xB1A3, 0xB1A3, 0xB1A3 }, +{ 0xB1A4, 0xB1A4, 0xB1A4 }, +{ 0xB1A5, 0xB1A5, 0xB1A5 }, +{ 0xB1A6, 0xB1A6, 0xB1A6 }, +{ 0xB1A7, 0xB1A7, 0xB1A7 }, +{ 0xB1A8, 0xB1A8, 0xB1A8 }, +{ 0xB1A9, 0xB1A9, 0xB1A9 }, +{ 0xB1AA, 0xB1AA, 0xB1AA }, +{ 0xB1AB, 0xB1AB, 0xB1AB }, +{ 0xB1AC, 0xB1AC, 0xB1AC }, +{ 0xB1AD, 0xB1AD, 0xB1AD }, +{ 0xB1AE, 0xB1AE, 0xB1AE }, +{ 0xB1AF, 0xB1AF, 0xB1AF }, +{ 0xB1B0, 0xB1B0, 0xB1B0 }, +{ 0xB1B1, 0xB1B1, 0xB1B1 }, +{ 0xB1B2, 0xB1B2, 0xB1B2 }, +{ 0xB1B3, 0xB1B3, 0xB1B3 }, +{ 0xB1B4, 0xB1B4, 0xB1B4 }, +{ 0xB1B5, 0xB1B5, 0xB1B5 }, +{ 0xB1B6, 0xB1B6, 0xB1B6 }, +{ 0xB1B7, 0xB1B7, 0xB1B7 }, +{ 0xB1B8, 0xB1B8, 0xB1B8 }, +{ 0xB1B9, 0xB1B9, 0xB1B9 }, +{ 0xB1BA, 0xB1BA, 0xB1BA }, +{ 0xB1BB, 0xB1BB, 0xB1BB }, +{ 0xB1BC, 0xB1BC, 0xB1BC }, +{ 0xB1BD, 0xB1BD, 0xB1BD }, +{ 0xB1BE, 0xB1BE, 0xB1BE }, +{ 0xB1BF, 0xB1BF, 0xB1BF }, +{ 0xB1C0, 0xB1C0, 0xB1C0 }, +{ 0xB1C1, 0xB1C1, 0xB1C1 }, +{ 0xB1C2, 0xB1C2, 0xB1C2 }, +{ 0xB1C3, 0xB1C3, 0xB1C3 }, +{ 0xB1C4, 0xB1C4, 0xB1C4 }, +{ 0xB1C5, 0xB1C5, 0xB1C5 }, +{ 0xB1C6, 0xB1C6, 0xB1C6 }, +{ 0xB1C7, 0xB1C7, 0xB1C7 }, +{ 0xB1C8, 0xB1C8, 0xB1C8 }, +{ 0xB1C9, 0xB1C9, 0xB1C9 }, +{ 0xB1CA, 0xB1CA, 0xB1CA }, +{ 0xB1CB, 0xB1CB, 0xB1CB }, +{ 0xB1CC, 0xB1CC, 0xB1CC }, +{ 0xB1CD, 0xB1CD, 0xB1CD }, +{ 0xB1CE, 0xB1CE, 0xB1CE }, +{ 0xB1CF, 0xB1CF, 0xB1CF }, +{ 0xB1D0, 0xB1D0, 0xB1D0 }, +{ 0xB1D1, 0xB1D1, 0xB1D1 }, +{ 0xB1D2, 0xB1D2, 0xB1D2 }, +{ 0xB1D3, 0xB1D3, 0xB1D3 }, +{ 0xB1D4, 0xB1D4, 0xB1D4 }, +{ 0xB1D5, 0xB1D5, 0xB1D5 }, +{ 0xB1D6, 0xB1D6, 0xB1D6 }, +{ 0xB1D7, 0xB1D7, 0xB1D7 }, +{ 0xB1D8, 0xB1D8, 0xB1D8 }, +{ 0xB1D9, 0xB1D9, 0xB1D9 }, +{ 0xB1DA, 0xB1DA, 0xB1DA }, +{ 0xB1DB, 0xB1DB, 0xB1DB }, +{ 0xB1DC, 0xB1DC, 0xB1DC }, +{ 0xB1DD, 0xB1DD, 0xB1DD }, +{ 0xB1DE, 0xB1DE, 0xB1DE }, +{ 0xB1DF, 0xB1DF, 0xB1DF }, +{ 0xB1E0, 0xB1E0, 0xB1E0 }, +{ 0xB1E1, 0xB1E1, 0xB1E1 }, +{ 0xB1E2, 0xB1E2, 0xB1E2 }, +{ 0xB1E3, 0xB1E3, 0xB1E3 }, +{ 0xB1E4, 0xB1E4, 0xB1E4 }, +{ 0xB1E5, 0xB1E5, 0xB1E5 }, +{ 0xB1E6, 0xB1E6, 0xB1E6 }, +{ 0xB1E7, 0xB1E7, 0xB1E7 }, +{ 0xB1E8, 0xB1E8, 0xB1E8 }, +{ 0xB1E9, 0xB1E9, 0xB1E9 }, +{ 0xB1EA, 0xB1EA, 0xB1EA }, +{ 0xB1EB, 0xB1EB, 0xB1EB }, +{ 0xB1EC, 0xB1EC, 0xB1EC }, +{ 0xB1ED, 0xB1ED, 0xB1ED }, +{ 0xB1EE, 0xB1EE, 0xB1EE }, +{ 0xB1EF, 0xB1EF, 0xB1EF }, +{ 0xB1F0, 0xB1F0, 0xB1F0 }, +{ 0xB1F1, 0xB1F1, 0xB1F1 }, +{ 0xB1F2, 0xB1F2, 0xB1F2 }, +{ 0xB1F3, 0xB1F3, 0xB1F3 }, +{ 0xB1F4, 0xB1F4, 0xB1F4 }, +{ 0xB1F5, 0xB1F5, 0xB1F5 }, +{ 0xB1F6, 0xB1F6, 0xB1F6 }, +{ 0xB1F7, 0xB1F7, 0xB1F7 }, +{ 0xB1F8, 0xB1F8, 0xB1F8 }, +{ 0xB1F9, 0xB1F9, 0xB1F9 }, +{ 0xB1FA, 0xB1FA, 0xB1FA }, +{ 0xB1FB, 0xB1FB, 0xB1FB }, +{ 0xB1FC, 0xB1FC, 0xB1FC }, +{ 0xB1FD, 0xB1FD, 0xB1FD }, +{ 0xB1FE, 0xB1FE, 0xB1FE }, +{ 0xB1FF, 0xB1FF, 0xB1FF }, +{ 0xB200, 0xB200, 0xB200 }, +{ 0xB201, 0xB201, 0xB201 }, +{ 0xB202, 0xB202, 0xB202 }, +{ 0xB203, 0xB203, 0xB203 }, +{ 0xB204, 0xB204, 0xB204 }, +{ 0xB205, 0xB205, 0xB205 }, +{ 0xB206, 0xB206, 0xB206 }, +{ 0xB207, 0xB207, 0xB207 }, +{ 0xB208, 0xB208, 0xB208 }, +{ 0xB209, 0xB209, 0xB209 }, +{ 0xB20A, 0xB20A, 0xB20A }, +{ 0xB20B, 0xB20B, 0xB20B }, +{ 0xB20C, 0xB20C, 0xB20C }, +{ 0xB20D, 0xB20D, 0xB20D }, +{ 0xB20E, 0xB20E, 0xB20E }, +{ 0xB20F, 0xB20F, 0xB20F }, +{ 0xB210, 0xB210, 0xB210 }, +{ 0xB211, 0xB211, 0xB211 }, +{ 0xB212, 0xB212, 0xB212 }, +{ 0xB213, 0xB213, 0xB213 }, +{ 0xB214, 0xB214, 0xB214 }, +{ 0xB215, 0xB215, 0xB215 }, +{ 0xB216, 0xB216, 0xB216 }, +{ 0xB217, 0xB217, 0xB217 }, +{ 0xB218, 0xB218, 0xB218 }, +{ 0xB219, 0xB219, 0xB219 }, +{ 0xB21A, 0xB21A, 0xB21A }, +{ 0xB21B, 0xB21B, 0xB21B }, +{ 0xB21C, 0xB21C, 0xB21C }, +{ 0xB21D, 0xB21D, 0xB21D }, +{ 0xB21E, 0xB21E, 0xB21E }, +{ 0xB21F, 0xB21F, 0xB21F }, +{ 0xB220, 0xB220, 0xB220 }, +{ 0xB221, 0xB221, 0xB221 }, +{ 0xB222, 0xB222, 0xB222 }, +{ 0xB223, 0xB223, 0xB223 }, +{ 0xB224, 0xB224, 0xB224 }, +{ 0xB225, 0xB225, 0xB225 }, +{ 0xB226, 0xB226, 0xB226 }, +{ 0xB227, 0xB227, 0xB227 }, +{ 0xB228, 0xB228, 0xB228 }, +{ 0xB229, 0xB229, 0xB229 }, +{ 0xB22A, 0xB22A, 0xB22A }, +{ 0xB22B, 0xB22B, 0xB22B }, +{ 0xB22C, 0xB22C, 0xB22C }, +{ 0xB22D, 0xB22D, 0xB22D }, +{ 0xB22E, 0xB22E, 0xB22E }, +{ 0xB22F, 0xB22F, 0xB22F }, +{ 0xB230, 0xB230, 0xB230 }, +{ 0xB231, 0xB231, 0xB231 }, +{ 0xB232, 0xB232, 0xB232 }, +{ 0xB233, 0xB233, 0xB233 }, +{ 0xB234, 0xB234, 0xB234 }, +{ 0xB235, 0xB235, 0xB235 }, +{ 0xB236, 0xB236, 0xB236 }, +{ 0xB237, 0xB237, 0xB237 }, +{ 0xB238, 0xB238, 0xB238 }, +{ 0xB239, 0xB239, 0xB239 }, +{ 0xB23A, 0xB23A, 0xB23A }, +{ 0xB23B, 0xB23B, 0xB23B }, +{ 0xB23C, 0xB23C, 0xB23C }, +{ 0xB23D, 0xB23D, 0xB23D }, +{ 0xB23E, 0xB23E, 0xB23E }, +{ 0xB23F, 0xB23F, 0xB23F }, +{ 0xB240, 0xB240, 0xB240 }, +{ 0xB241, 0xB241, 0xB241 }, +{ 0xB242, 0xB242, 0xB242 }, +{ 0xB243, 0xB243, 0xB243 }, +{ 0xB244, 0xB244, 0xB244 }, +{ 0xB245, 0xB245, 0xB245 }, +{ 0xB246, 0xB246, 0xB246 }, +{ 0xB247, 0xB247, 0xB247 }, +{ 0xB248, 0xB248, 0xB248 }, +{ 0xB249, 0xB249, 0xB249 }, +{ 0xB24A, 0xB24A, 0xB24A }, +{ 0xB24B, 0xB24B, 0xB24B }, +{ 0xB24C, 0xB24C, 0xB24C }, +{ 0xB24D, 0xB24D, 0xB24D }, +{ 0xB24E, 0xB24E, 0xB24E }, +{ 0xB24F, 0xB24F, 0xB24F }, +{ 0xB250, 0xB250, 0xB250 }, +{ 0xB251, 0xB251, 0xB251 }, +{ 0xB252, 0xB252, 0xB252 }, +{ 0xB253, 0xB253, 0xB253 }, +{ 0xB254, 0xB254, 0xB254 }, +{ 0xB255, 0xB255, 0xB255 }, +{ 0xB256, 0xB256, 0xB256 }, +{ 0xB257, 0xB257, 0xB257 }, +{ 0xB258, 0xB258, 0xB258 }, +{ 0xB259, 0xB259, 0xB259 }, +{ 0xB25A, 0xB25A, 0xB25A }, +{ 0xB25B, 0xB25B, 0xB25B }, +{ 0xB25C, 0xB25C, 0xB25C }, +{ 0xB25D, 0xB25D, 0xB25D }, +{ 0xB25E, 0xB25E, 0xB25E }, +{ 0xB25F, 0xB25F, 0xB25F }, +{ 0xB260, 0xB260, 0xB260 }, +{ 0xB261, 0xB261, 0xB261 }, +{ 0xB262, 0xB262, 0xB262 }, +{ 0xB263, 0xB263, 0xB263 }, +{ 0xB264, 0xB264, 0xB264 }, +{ 0xB265, 0xB265, 0xB265 }, +{ 0xB266, 0xB266, 0xB266 }, +{ 0xB267, 0xB267, 0xB267 }, +{ 0xB268, 0xB268, 0xB268 }, +{ 0xB269, 0xB269, 0xB269 }, +{ 0xB26A, 0xB26A, 0xB26A }, +{ 0xB26B, 0xB26B, 0xB26B }, +{ 0xB26C, 0xB26C, 0xB26C }, +{ 0xB26D, 0xB26D, 0xB26D }, +{ 0xB26E, 0xB26E, 0xB26E }, +{ 0xB26F, 0xB26F, 0xB26F }, +{ 0xB270, 0xB270, 0xB270 }, +{ 0xB271, 0xB271, 0xB271 }, +{ 0xB272, 0xB272, 0xB272 }, +{ 0xB273, 0xB273, 0xB273 }, +{ 0xB274, 0xB274, 0xB274 }, +{ 0xB275, 0xB275, 0xB275 }, +{ 0xB276, 0xB276, 0xB276 }, +{ 0xB277, 0xB277, 0xB277 }, +{ 0xB278, 0xB278, 0xB278 }, +{ 0xB279, 0xB279, 0xB279 }, +{ 0xB27A, 0xB27A, 0xB27A }, +{ 0xB27B, 0xB27B, 0xB27B }, +{ 0xB27C, 0xB27C, 0xB27C }, +{ 0xB27D, 0xB27D, 0xB27D }, +{ 0xB27E, 0xB27E, 0xB27E }, +{ 0xB27F, 0xB27F, 0xB27F }, +{ 0xB280, 0xB280, 0xB280 }, +{ 0xB281, 0xB281, 0xB281 }, +{ 0xB282, 0xB282, 0xB282 }, +{ 0xB283, 0xB283, 0xB283 }, +{ 0xB284, 0xB284, 0xB284 }, +{ 0xB285, 0xB285, 0xB285 }, +{ 0xB286, 0xB286, 0xB286 }, +{ 0xB287, 0xB287, 0xB287 }, +{ 0xB288, 0xB288, 0xB288 }, +{ 0xB289, 0xB289, 0xB289 }, +{ 0xB28A, 0xB28A, 0xB28A }, +{ 0xB28B, 0xB28B, 0xB28B }, +{ 0xB28C, 0xB28C, 0xB28C }, +{ 0xB28D, 0xB28D, 0xB28D }, +{ 0xB28E, 0xB28E, 0xB28E }, +{ 0xB28F, 0xB28F, 0xB28F }, +{ 0xB290, 0xB290, 0xB290 }, +{ 0xB291, 0xB291, 0xB291 }, +{ 0xB292, 0xB292, 0xB292 }, +{ 0xB293, 0xB293, 0xB293 }, +{ 0xB294, 0xB294, 0xB294 }, +{ 0xB295, 0xB295, 0xB295 }, +{ 0xB296, 0xB296, 0xB296 }, +{ 0xB297, 0xB297, 0xB297 }, +{ 0xB298, 0xB298, 0xB298 }, +{ 0xB299, 0xB299, 0xB299 }, +{ 0xB29A, 0xB29A, 0xB29A }, +{ 0xB29B, 0xB29B, 0xB29B }, +{ 0xB29C, 0xB29C, 0xB29C }, +{ 0xB29D, 0xB29D, 0xB29D }, +{ 0xB29E, 0xB29E, 0xB29E }, +{ 0xB29F, 0xB29F, 0xB29F }, +{ 0xB2A0, 0xB2A0, 0xB2A0 }, +{ 0xB2A1, 0xB2A1, 0xB2A1 }, +{ 0xB2A2, 0xB2A2, 0xB2A2 }, +{ 0xB2A3, 0xB2A3, 0xB2A3 }, +{ 0xB2A4, 0xB2A4, 0xB2A4 }, +{ 0xB2A5, 0xB2A5, 0xB2A5 }, +{ 0xB2A6, 0xB2A6, 0xB2A6 }, +{ 0xB2A7, 0xB2A7, 0xB2A7 }, +{ 0xB2A8, 0xB2A8, 0xB2A8 }, +{ 0xB2A9, 0xB2A9, 0xB2A9 }, +{ 0xB2AA, 0xB2AA, 0xB2AA }, +{ 0xB2AB, 0xB2AB, 0xB2AB }, +{ 0xB2AC, 0xB2AC, 0xB2AC }, +{ 0xB2AD, 0xB2AD, 0xB2AD }, +{ 0xB2AE, 0xB2AE, 0xB2AE }, +{ 0xB2AF, 0xB2AF, 0xB2AF }, +{ 0xB2B0, 0xB2B0, 0xB2B0 }, +{ 0xB2B1, 0xB2B1, 0xB2B1 }, +{ 0xB2B2, 0xB2B2, 0xB2B2 }, +{ 0xB2B3, 0xB2B3, 0xB2B3 }, +{ 0xB2B4, 0xB2B4, 0xB2B4 }, +{ 0xB2B5, 0xB2B5, 0xB2B5 }, +{ 0xB2B6, 0xB2B6, 0xB2B6 }, +{ 0xB2B7, 0xB2B7, 0xB2B7 }, +{ 0xB2B8, 0xB2B8, 0xB2B8 }, +{ 0xB2B9, 0xB2B9, 0xB2B9 }, +{ 0xB2BA, 0xB2BA, 0xB2BA }, +{ 0xB2BB, 0xB2BB, 0xB2BB }, +{ 0xB2BC, 0xB2BC, 0xB2BC }, +{ 0xB2BD, 0xB2BD, 0xB2BD }, +{ 0xB2BE, 0xB2BE, 0xB2BE }, +{ 0xB2BF, 0xB2BF, 0xB2BF }, +{ 0xB2C0, 0xB2C0, 0xB2C0 }, +{ 0xB2C1, 0xB2C1, 0xB2C1 }, +{ 0xB2C2, 0xB2C2, 0xB2C2 }, +{ 0xB2C3, 0xB2C3, 0xB2C3 }, +{ 0xB2C4, 0xB2C4, 0xB2C4 }, +{ 0xB2C5, 0xB2C5, 0xB2C5 }, +{ 0xB2C6, 0xB2C6, 0xB2C6 }, +{ 0xB2C7, 0xB2C7, 0xB2C7 }, +{ 0xB2C8, 0xB2C8, 0xB2C8 }, +{ 0xB2C9, 0xB2C9, 0xB2C9 }, +{ 0xB2CA, 0xB2CA, 0xB2CA }, +{ 0xB2CB, 0xB2CB, 0xB2CB }, +{ 0xB2CC, 0xB2CC, 0xB2CC }, +{ 0xB2CD, 0xB2CD, 0xB2CD }, +{ 0xB2CE, 0xB2CE, 0xB2CE }, +{ 0xB2CF, 0xB2CF, 0xB2CF }, +{ 0xB2D0, 0xB2D0, 0xB2D0 }, +{ 0xB2D1, 0xB2D1, 0xB2D1 }, +{ 0xB2D2, 0xB2D2, 0xB2D2 }, +{ 0xB2D3, 0xB2D3, 0xB2D3 }, +{ 0xB2D4, 0xB2D4, 0xB2D4 }, +{ 0xB2D5, 0xB2D5, 0xB2D5 }, +{ 0xB2D6, 0xB2D6, 0xB2D6 }, +{ 0xB2D7, 0xB2D7, 0xB2D7 }, +{ 0xB2D8, 0xB2D8, 0xB2D8 }, +{ 0xB2D9, 0xB2D9, 0xB2D9 }, +{ 0xB2DA, 0xB2DA, 0xB2DA }, +{ 0xB2DB, 0xB2DB, 0xB2DB }, +{ 0xB2DC, 0xB2DC, 0xB2DC }, +{ 0xB2DD, 0xB2DD, 0xB2DD }, +{ 0xB2DE, 0xB2DE, 0xB2DE }, +{ 0xB2DF, 0xB2DF, 0xB2DF }, +{ 0xB2E0, 0xB2E0, 0xB2E0 }, +{ 0xB2E1, 0xB2E1, 0xB2E1 }, +{ 0xB2E2, 0xB2E2, 0xB2E2 }, +{ 0xB2E3, 0xB2E3, 0xB2E3 }, +{ 0xB2E4, 0xB2E4, 0xB2E4 }, +{ 0xB2E5, 0xB2E5, 0xB2E5 }, +{ 0xB2E6, 0xB2E6, 0xB2E6 }, +{ 0xB2E7, 0xB2E7, 0xB2E7 }, +{ 0xB2E8, 0xB2E8, 0xB2E8 }, +{ 0xB2E9, 0xB2E9, 0xB2E9 }, +{ 0xB2EA, 0xB2EA, 0xB2EA }, +{ 0xB2EB, 0xB2EB, 0xB2EB }, +{ 0xB2EC, 0xB2EC, 0xB2EC }, +{ 0xB2ED, 0xB2ED, 0xB2ED }, +{ 0xB2EE, 0xB2EE, 0xB2EE }, +{ 0xB2EF, 0xB2EF, 0xB2EF }, +{ 0xB2F0, 0xB2F0, 0xB2F0 }, +{ 0xB2F1, 0xB2F1, 0xB2F1 }, +{ 0xB2F2, 0xB2F2, 0xB2F2 }, +{ 0xB2F3, 0xB2F3, 0xB2F3 }, +{ 0xB2F4, 0xB2F4, 0xB2F4 }, +{ 0xB2F5, 0xB2F5, 0xB2F5 }, +{ 0xB2F6, 0xB2F6, 0xB2F6 }, +{ 0xB2F7, 0xB2F7, 0xB2F7 }, +{ 0xB2F8, 0xB2F8, 0xB2F8 }, +{ 0xB2F9, 0xB2F9, 0xB2F9 }, +{ 0xB2FA, 0xB2FA, 0xB2FA }, +{ 0xB2FB, 0xB2FB, 0xB2FB }, +{ 0xB2FC, 0xB2FC, 0xB2FC }, +{ 0xB2FD, 0xB2FD, 0xB2FD }, +{ 0xB2FE, 0xB2FE, 0xB2FE }, +{ 0xB2FF, 0xB2FF, 0xB2FF }, +{ 0xB300, 0xB300, 0xB300 }, +{ 0xB301, 0xB301, 0xB301 }, +{ 0xB302, 0xB302, 0xB302 }, +{ 0xB303, 0xB303, 0xB303 }, +{ 0xB304, 0xB304, 0xB304 }, +{ 0xB305, 0xB305, 0xB305 }, +{ 0xB306, 0xB306, 0xB306 }, +{ 0xB307, 0xB307, 0xB307 }, +{ 0xB308, 0xB308, 0xB308 }, +{ 0xB309, 0xB309, 0xB309 }, +{ 0xB30A, 0xB30A, 0xB30A }, +{ 0xB30B, 0xB30B, 0xB30B }, +{ 0xB30C, 0xB30C, 0xB30C }, +{ 0xB30D, 0xB30D, 0xB30D }, +{ 0xB30E, 0xB30E, 0xB30E }, +{ 0xB30F, 0xB30F, 0xB30F }, +{ 0xB310, 0xB310, 0xB310 }, +{ 0xB311, 0xB311, 0xB311 }, +{ 0xB312, 0xB312, 0xB312 }, +{ 0xB313, 0xB313, 0xB313 }, +{ 0xB314, 0xB314, 0xB314 }, +{ 0xB315, 0xB315, 0xB315 }, +{ 0xB316, 0xB316, 0xB316 }, +{ 0xB317, 0xB317, 0xB317 }, +{ 0xB318, 0xB318, 0xB318 }, +{ 0xB319, 0xB319, 0xB319 }, +{ 0xB31A, 0xB31A, 0xB31A }, +{ 0xB31B, 0xB31B, 0xB31B }, +{ 0xB31C, 0xB31C, 0xB31C }, +{ 0xB31D, 0xB31D, 0xB31D }, +{ 0xB31E, 0xB31E, 0xB31E }, +{ 0xB31F, 0xB31F, 0xB31F }, +{ 0xB320, 0xB320, 0xB320 }, +{ 0xB321, 0xB321, 0xB321 }, +{ 0xB322, 0xB322, 0xB322 }, +{ 0xB323, 0xB323, 0xB323 }, +{ 0xB324, 0xB324, 0xB324 }, +{ 0xB325, 0xB325, 0xB325 }, +{ 0xB326, 0xB326, 0xB326 }, +{ 0xB327, 0xB327, 0xB327 }, +{ 0xB328, 0xB328, 0xB328 }, +{ 0xB329, 0xB329, 0xB329 }, +{ 0xB32A, 0xB32A, 0xB32A }, +{ 0xB32B, 0xB32B, 0xB32B }, +{ 0xB32C, 0xB32C, 0xB32C }, +{ 0xB32D, 0xB32D, 0xB32D }, +{ 0xB32E, 0xB32E, 0xB32E }, +{ 0xB32F, 0xB32F, 0xB32F }, +{ 0xB330, 0xB330, 0xB330 }, +{ 0xB331, 0xB331, 0xB331 }, +{ 0xB332, 0xB332, 0xB332 }, +{ 0xB333, 0xB333, 0xB333 }, +{ 0xB334, 0xB334, 0xB334 }, +{ 0xB335, 0xB335, 0xB335 }, +{ 0xB336, 0xB336, 0xB336 }, +{ 0xB337, 0xB337, 0xB337 }, +{ 0xB338, 0xB338, 0xB338 }, +{ 0xB339, 0xB339, 0xB339 }, +{ 0xB33A, 0xB33A, 0xB33A }, +{ 0xB33B, 0xB33B, 0xB33B }, +{ 0xB33C, 0xB33C, 0xB33C }, +{ 0xB33D, 0xB33D, 0xB33D }, +{ 0xB33E, 0xB33E, 0xB33E }, +{ 0xB33F, 0xB33F, 0xB33F }, +{ 0xB340, 0xB340, 0xB340 }, +{ 0xB341, 0xB341, 0xB341 }, +{ 0xB342, 0xB342, 0xB342 }, +{ 0xB343, 0xB343, 0xB343 }, +{ 0xB344, 0xB344, 0xB344 }, +{ 0xB345, 0xB345, 0xB345 }, +{ 0xB346, 0xB346, 0xB346 }, +{ 0xB347, 0xB347, 0xB347 }, +{ 0xB348, 0xB348, 0xB348 }, +{ 0xB349, 0xB349, 0xB349 }, +{ 0xB34A, 0xB34A, 0xB34A }, +{ 0xB34B, 0xB34B, 0xB34B }, +{ 0xB34C, 0xB34C, 0xB34C }, +{ 0xB34D, 0xB34D, 0xB34D }, +{ 0xB34E, 0xB34E, 0xB34E }, +{ 0xB34F, 0xB34F, 0xB34F }, +{ 0xB350, 0xB350, 0xB350 }, +{ 0xB351, 0xB351, 0xB351 }, +{ 0xB352, 0xB352, 0xB352 }, +{ 0xB353, 0xB353, 0xB353 }, +{ 0xB354, 0xB354, 0xB354 }, +{ 0xB355, 0xB355, 0xB355 }, +{ 0xB356, 0xB356, 0xB356 }, +{ 0xB357, 0xB357, 0xB357 }, +{ 0xB358, 0xB358, 0xB358 }, +{ 0xB359, 0xB359, 0xB359 }, +{ 0xB35A, 0xB35A, 0xB35A }, +{ 0xB35B, 0xB35B, 0xB35B }, +{ 0xB35C, 0xB35C, 0xB35C }, +{ 0xB35D, 0xB35D, 0xB35D }, +{ 0xB35E, 0xB35E, 0xB35E }, +{ 0xB35F, 0xB35F, 0xB35F }, +{ 0xB360, 0xB360, 0xB360 }, +{ 0xB361, 0xB361, 0xB361 }, +{ 0xB362, 0xB362, 0xB362 }, +{ 0xB363, 0xB363, 0xB363 }, +{ 0xB364, 0xB364, 0xB364 }, +{ 0xB365, 0xB365, 0xB365 }, +{ 0xB366, 0xB366, 0xB366 }, +{ 0xB367, 0xB367, 0xB367 }, +{ 0xB368, 0xB368, 0xB368 }, +{ 0xB369, 0xB369, 0xB369 }, +{ 0xB36A, 0xB36A, 0xB36A }, +{ 0xB36B, 0xB36B, 0xB36B }, +{ 0xB36C, 0xB36C, 0xB36C }, +{ 0xB36D, 0xB36D, 0xB36D }, +{ 0xB36E, 0xB36E, 0xB36E }, +{ 0xB36F, 0xB36F, 0xB36F }, +{ 0xB370, 0xB370, 0xB370 }, +{ 0xB371, 0xB371, 0xB371 }, +{ 0xB372, 0xB372, 0xB372 }, +{ 0xB373, 0xB373, 0xB373 }, +{ 0xB374, 0xB374, 0xB374 }, +{ 0xB375, 0xB375, 0xB375 }, +{ 0xB376, 0xB376, 0xB376 }, +{ 0xB377, 0xB377, 0xB377 }, +{ 0xB378, 0xB378, 0xB378 }, +{ 0xB379, 0xB379, 0xB379 }, +{ 0xB37A, 0xB37A, 0xB37A }, +{ 0xB37B, 0xB37B, 0xB37B }, +{ 0xB37C, 0xB37C, 0xB37C }, +{ 0xB37D, 0xB37D, 0xB37D }, +{ 0xB37E, 0xB37E, 0xB37E }, +{ 0xB37F, 0xB37F, 0xB37F }, +{ 0xB380, 0xB380, 0xB380 }, +{ 0xB381, 0xB381, 0xB381 }, +{ 0xB382, 0xB382, 0xB382 }, +{ 0xB383, 0xB383, 0xB383 }, +{ 0xB384, 0xB384, 0xB384 }, +{ 0xB385, 0xB385, 0xB385 }, +{ 0xB386, 0xB386, 0xB386 }, +{ 0xB387, 0xB387, 0xB387 }, +{ 0xB388, 0xB388, 0xB388 }, +{ 0xB389, 0xB389, 0xB389 }, +{ 0xB38A, 0xB38A, 0xB38A }, +{ 0xB38B, 0xB38B, 0xB38B }, +{ 0xB38C, 0xB38C, 0xB38C }, +{ 0xB38D, 0xB38D, 0xB38D }, +{ 0xB38E, 0xB38E, 0xB38E }, +{ 0xB38F, 0xB38F, 0xB38F }, +{ 0xB390, 0xB390, 0xB390 }, +{ 0xB391, 0xB391, 0xB391 }, +{ 0xB392, 0xB392, 0xB392 }, +{ 0xB393, 0xB393, 0xB393 }, +{ 0xB394, 0xB394, 0xB394 }, +{ 0xB395, 0xB395, 0xB395 }, +{ 0xB396, 0xB396, 0xB396 }, +{ 0xB397, 0xB397, 0xB397 }, +{ 0xB398, 0xB398, 0xB398 }, +{ 0xB399, 0xB399, 0xB399 }, +{ 0xB39A, 0xB39A, 0xB39A }, +{ 0xB39B, 0xB39B, 0xB39B }, +{ 0xB39C, 0xB39C, 0xB39C }, +{ 0xB39D, 0xB39D, 0xB39D }, +{ 0xB39E, 0xB39E, 0xB39E }, +{ 0xB39F, 0xB39F, 0xB39F }, +{ 0xB3A0, 0xB3A0, 0xB3A0 }, +{ 0xB3A1, 0xB3A1, 0xB3A1 }, +{ 0xB3A2, 0xB3A2, 0xB3A2 }, +{ 0xB3A3, 0xB3A3, 0xB3A3 }, +{ 0xB3A4, 0xB3A4, 0xB3A4 }, +{ 0xB3A5, 0xB3A5, 0xB3A5 }, +{ 0xB3A6, 0xB3A6, 0xB3A6 }, +{ 0xB3A7, 0xB3A7, 0xB3A7 }, +{ 0xB3A8, 0xB3A8, 0xB3A8 }, +{ 0xB3A9, 0xB3A9, 0xB3A9 }, +{ 0xB3AA, 0xB3AA, 0xB3AA }, +{ 0xB3AB, 0xB3AB, 0xB3AB }, +{ 0xB3AC, 0xB3AC, 0xB3AC }, +{ 0xB3AD, 0xB3AD, 0xB3AD }, +{ 0xB3AE, 0xB3AE, 0xB3AE }, +{ 0xB3AF, 0xB3AF, 0xB3AF }, +{ 0xB3B0, 0xB3B0, 0xB3B0 }, +{ 0xB3B1, 0xB3B1, 0xB3B1 }, +{ 0xB3B2, 0xB3B2, 0xB3B2 }, +{ 0xB3B3, 0xB3B3, 0xB3B3 }, +{ 0xB3B4, 0xB3B4, 0xB3B4 }, +{ 0xB3B5, 0xB3B5, 0xB3B5 }, +{ 0xB3B6, 0xB3B6, 0xB3B6 }, +{ 0xB3B7, 0xB3B7, 0xB3B7 }, +{ 0xB3B8, 0xB3B8, 0xB3B8 }, +{ 0xB3B9, 0xB3B9, 0xB3B9 }, +{ 0xB3BA, 0xB3BA, 0xB3BA }, +{ 0xB3BB, 0xB3BB, 0xB3BB }, +{ 0xB3BC, 0xB3BC, 0xB3BC }, +{ 0xB3BD, 0xB3BD, 0xB3BD }, +{ 0xB3BE, 0xB3BE, 0xB3BE }, +{ 0xB3BF, 0xB3BF, 0xB3BF }, +{ 0xB3C0, 0xB3C0, 0xB3C0 }, +{ 0xB3C1, 0xB3C1, 0xB3C1 }, +{ 0xB3C2, 0xB3C2, 0xB3C2 }, +{ 0xB3C3, 0xB3C3, 0xB3C3 }, +{ 0xB3C4, 0xB3C4, 0xB3C4 }, +{ 0xB3C5, 0xB3C5, 0xB3C5 }, +{ 0xB3C6, 0xB3C6, 0xB3C6 }, +{ 0xB3C7, 0xB3C7, 0xB3C7 }, +{ 0xB3C8, 0xB3C8, 0xB3C8 }, +{ 0xB3C9, 0xB3C9, 0xB3C9 }, +{ 0xB3CA, 0xB3CA, 0xB3CA }, +{ 0xB3CB, 0xB3CB, 0xB3CB }, +{ 0xB3CC, 0xB3CC, 0xB3CC }, +{ 0xB3CD, 0xB3CD, 0xB3CD }, +{ 0xB3CE, 0xB3CE, 0xB3CE }, +{ 0xB3CF, 0xB3CF, 0xB3CF }, +{ 0xB3D0, 0xB3D0, 0xB3D0 }, +{ 0xB3D1, 0xB3D1, 0xB3D1 }, +{ 0xB3D2, 0xB3D2, 0xB3D2 }, +{ 0xB3D3, 0xB3D3, 0xB3D3 }, +{ 0xB3D4, 0xB3D4, 0xB3D4 }, +{ 0xB3D5, 0xB3D5, 0xB3D5 }, +{ 0xB3D6, 0xB3D6, 0xB3D6 }, +{ 0xB3D7, 0xB3D7, 0xB3D7 }, +{ 0xB3D8, 0xB3D8, 0xB3D8 }, +{ 0xB3D9, 0xB3D9, 0xB3D9 }, +{ 0xB3DA, 0xB3DA, 0xB3DA }, +{ 0xB3DB, 0xB3DB, 0xB3DB }, +{ 0xB3DC, 0xB3DC, 0xB3DC }, +{ 0xB3DD, 0xB3DD, 0xB3DD }, +{ 0xB3DE, 0xB3DE, 0xB3DE }, +{ 0xB3DF, 0xB3DF, 0xB3DF }, +{ 0xB3E0, 0xB3E0, 0xB3E0 }, +{ 0xB3E1, 0xB3E1, 0xB3E1 }, +{ 0xB3E2, 0xB3E2, 0xB3E2 }, +{ 0xB3E3, 0xB3E3, 0xB3E3 }, +{ 0xB3E4, 0xB3E4, 0xB3E4 }, +{ 0xB3E5, 0xB3E5, 0xB3E5 }, +{ 0xB3E6, 0xB3E6, 0xB3E6 }, +{ 0xB3E7, 0xB3E7, 0xB3E7 }, +{ 0xB3E8, 0xB3E8, 0xB3E8 }, +{ 0xB3E9, 0xB3E9, 0xB3E9 }, +{ 0xB3EA, 0xB3EA, 0xB3EA }, +{ 0xB3EB, 0xB3EB, 0xB3EB }, +{ 0xB3EC, 0xB3EC, 0xB3EC }, +{ 0xB3ED, 0xB3ED, 0xB3ED }, +{ 0xB3EE, 0xB3EE, 0xB3EE }, +{ 0xB3EF, 0xB3EF, 0xB3EF }, +{ 0xB3F0, 0xB3F0, 0xB3F0 }, +{ 0xB3F1, 0xB3F1, 0xB3F1 }, +{ 0xB3F2, 0xB3F2, 0xB3F2 }, +{ 0xB3F3, 0xB3F3, 0xB3F3 }, +{ 0xB3F4, 0xB3F4, 0xB3F4 }, +{ 0xB3F5, 0xB3F5, 0xB3F5 }, +{ 0xB3F6, 0xB3F6, 0xB3F6 }, +{ 0xB3F7, 0xB3F7, 0xB3F7 }, +{ 0xB3F8, 0xB3F8, 0xB3F8 }, +{ 0xB3F9, 0xB3F9, 0xB3F9 }, +{ 0xB3FA, 0xB3FA, 0xB3FA }, +{ 0xB3FB, 0xB3FB, 0xB3FB }, +{ 0xB3FC, 0xB3FC, 0xB3FC }, +{ 0xB3FD, 0xB3FD, 0xB3FD }, +{ 0xB3FE, 0xB3FE, 0xB3FE }, +{ 0xB3FF, 0xB3FF, 0xB3FF }, +{ 0xB400, 0xB400, 0xB400 }, +{ 0xB401, 0xB401, 0xB401 }, +{ 0xB402, 0xB402, 0xB402 }, +{ 0xB403, 0xB403, 0xB403 }, +{ 0xB404, 0xB404, 0xB404 }, +{ 0xB405, 0xB405, 0xB405 }, +{ 0xB406, 0xB406, 0xB406 }, +{ 0xB407, 0xB407, 0xB407 }, +{ 0xB408, 0xB408, 0xB408 }, +{ 0xB409, 0xB409, 0xB409 }, +{ 0xB40A, 0xB40A, 0xB40A }, +{ 0xB40B, 0xB40B, 0xB40B }, +{ 0xB40C, 0xB40C, 0xB40C }, +{ 0xB40D, 0xB40D, 0xB40D }, +{ 0xB40E, 0xB40E, 0xB40E }, +{ 0xB40F, 0xB40F, 0xB40F }, +{ 0xB410, 0xB410, 0xB410 }, +{ 0xB411, 0xB411, 0xB411 }, +{ 0xB412, 0xB412, 0xB412 }, +{ 0xB413, 0xB413, 0xB413 }, +{ 0xB414, 0xB414, 0xB414 }, +{ 0xB415, 0xB415, 0xB415 }, +{ 0xB416, 0xB416, 0xB416 }, +{ 0xB417, 0xB417, 0xB417 }, +{ 0xB418, 0xB418, 0xB418 }, +{ 0xB419, 0xB419, 0xB419 }, +{ 0xB41A, 0xB41A, 0xB41A }, +{ 0xB41B, 0xB41B, 0xB41B }, +{ 0xB41C, 0xB41C, 0xB41C }, +{ 0xB41D, 0xB41D, 0xB41D }, +{ 0xB41E, 0xB41E, 0xB41E }, +{ 0xB41F, 0xB41F, 0xB41F }, +{ 0xB420, 0xB420, 0xB420 }, +{ 0xB421, 0xB421, 0xB421 }, +{ 0xB422, 0xB422, 0xB422 }, +{ 0xB423, 0xB423, 0xB423 }, +{ 0xB424, 0xB424, 0xB424 }, +{ 0xB425, 0xB425, 0xB425 }, +{ 0xB426, 0xB426, 0xB426 }, +{ 0xB427, 0xB427, 0xB427 }, +{ 0xB428, 0xB428, 0xB428 }, +{ 0xB429, 0xB429, 0xB429 }, +{ 0xB42A, 0xB42A, 0xB42A }, +{ 0xB42B, 0xB42B, 0xB42B }, +{ 0xB42C, 0xB42C, 0xB42C }, +{ 0xB42D, 0xB42D, 0xB42D }, +{ 0xB42E, 0xB42E, 0xB42E }, +{ 0xB42F, 0xB42F, 0xB42F }, +{ 0xB430, 0xB430, 0xB430 }, +{ 0xB431, 0xB431, 0xB431 }, +{ 0xB432, 0xB432, 0xB432 }, +{ 0xB433, 0xB433, 0xB433 }, +{ 0xB434, 0xB434, 0xB434 }, +{ 0xB435, 0xB435, 0xB435 }, +{ 0xB436, 0xB436, 0xB436 }, +{ 0xB437, 0xB437, 0xB437 }, +{ 0xB438, 0xB438, 0xB438 }, +{ 0xB439, 0xB439, 0xB439 }, +{ 0xB43A, 0xB43A, 0xB43A }, +{ 0xB43B, 0xB43B, 0xB43B }, +{ 0xB43C, 0xB43C, 0xB43C }, +{ 0xB43D, 0xB43D, 0xB43D }, +{ 0xB43E, 0xB43E, 0xB43E }, +{ 0xB43F, 0xB43F, 0xB43F }, +{ 0xB440, 0xB440, 0xB440 }, +{ 0xB441, 0xB441, 0xB441 }, +{ 0xB442, 0xB442, 0xB442 }, +{ 0xB443, 0xB443, 0xB443 }, +{ 0xB444, 0xB444, 0xB444 }, +{ 0xB445, 0xB445, 0xB445 }, +{ 0xB446, 0xB446, 0xB446 }, +{ 0xB447, 0xB447, 0xB447 }, +{ 0xB448, 0xB448, 0xB448 }, +{ 0xB449, 0xB449, 0xB449 }, +{ 0xB44A, 0xB44A, 0xB44A }, +{ 0xB44B, 0xB44B, 0xB44B }, +{ 0xB44C, 0xB44C, 0xB44C }, +{ 0xB44D, 0xB44D, 0xB44D }, +{ 0xB44E, 0xB44E, 0xB44E }, +{ 0xB44F, 0xB44F, 0xB44F }, +{ 0xB450, 0xB450, 0xB450 }, +{ 0xB451, 0xB451, 0xB451 }, +{ 0xB452, 0xB452, 0xB452 }, +{ 0xB453, 0xB453, 0xB453 }, +{ 0xB454, 0xB454, 0xB454 }, +{ 0xB455, 0xB455, 0xB455 }, +{ 0xB456, 0xB456, 0xB456 }, +{ 0xB457, 0xB457, 0xB457 }, +{ 0xB458, 0xB458, 0xB458 }, +{ 0xB459, 0xB459, 0xB459 }, +{ 0xB45A, 0xB45A, 0xB45A }, +{ 0xB45B, 0xB45B, 0xB45B }, +{ 0xB45C, 0xB45C, 0xB45C }, +{ 0xB45D, 0xB45D, 0xB45D }, +{ 0xB45E, 0xB45E, 0xB45E }, +{ 0xB45F, 0xB45F, 0xB45F }, +{ 0xB460, 0xB460, 0xB460 }, +{ 0xB461, 0xB461, 0xB461 }, +{ 0xB462, 0xB462, 0xB462 }, +{ 0xB463, 0xB463, 0xB463 }, +{ 0xB464, 0xB464, 0xB464 }, +{ 0xB465, 0xB465, 0xB465 }, +{ 0xB466, 0xB466, 0xB466 }, +{ 0xB467, 0xB467, 0xB467 }, +{ 0xB468, 0xB468, 0xB468 }, +{ 0xB469, 0xB469, 0xB469 }, +{ 0xB46A, 0xB46A, 0xB46A }, +{ 0xB46B, 0xB46B, 0xB46B }, +{ 0xB46C, 0xB46C, 0xB46C }, +{ 0xB46D, 0xB46D, 0xB46D }, +{ 0xB46E, 0xB46E, 0xB46E }, +{ 0xB46F, 0xB46F, 0xB46F }, +{ 0xB470, 0xB470, 0xB470 }, +{ 0xB471, 0xB471, 0xB471 }, +{ 0xB472, 0xB472, 0xB472 }, +{ 0xB473, 0xB473, 0xB473 }, +{ 0xB474, 0xB474, 0xB474 }, +{ 0xB475, 0xB475, 0xB475 }, +{ 0xB476, 0xB476, 0xB476 }, +{ 0xB477, 0xB477, 0xB477 }, +{ 0xB478, 0xB478, 0xB478 }, +{ 0xB479, 0xB479, 0xB479 }, +{ 0xB47A, 0xB47A, 0xB47A }, +{ 0xB47B, 0xB47B, 0xB47B }, +{ 0xB47C, 0xB47C, 0xB47C }, +{ 0xB47D, 0xB47D, 0xB47D }, +{ 0xB47E, 0xB47E, 0xB47E }, +{ 0xB47F, 0xB47F, 0xB47F }, +{ 0xB480, 0xB480, 0xB480 }, +{ 0xB481, 0xB481, 0xB481 }, +{ 0xB482, 0xB482, 0xB482 }, +{ 0xB483, 0xB483, 0xB483 }, +{ 0xB484, 0xB484, 0xB484 }, +{ 0xB485, 0xB485, 0xB485 }, +{ 0xB486, 0xB486, 0xB486 }, +{ 0xB487, 0xB487, 0xB487 }, +{ 0xB488, 0xB488, 0xB488 }, +{ 0xB489, 0xB489, 0xB489 }, +{ 0xB48A, 0xB48A, 0xB48A }, +{ 0xB48B, 0xB48B, 0xB48B }, +{ 0xB48C, 0xB48C, 0xB48C }, +{ 0xB48D, 0xB48D, 0xB48D }, +{ 0xB48E, 0xB48E, 0xB48E }, +{ 0xB48F, 0xB48F, 0xB48F }, +{ 0xB490, 0xB490, 0xB490 }, +{ 0xB491, 0xB491, 0xB491 }, +{ 0xB492, 0xB492, 0xB492 }, +{ 0xB493, 0xB493, 0xB493 }, +{ 0xB494, 0xB494, 0xB494 }, +{ 0xB495, 0xB495, 0xB495 }, +{ 0xB496, 0xB496, 0xB496 }, +{ 0xB497, 0xB497, 0xB497 }, +{ 0xB498, 0xB498, 0xB498 }, +{ 0xB499, 0xB499, 0xB499 }, +{ 0xB49A, 0xB49A, 0xB49A }, +{ 0xB49B, 0xB49B, 0xB49B }, +{ 0xB49C, 0xB49C, 0xB49C }, +{ 0xB49D, 0xB49D, 0xB49D }, +{ 0xB49E, 0xB49E, 0xB49E }, +{ 0xB49F, 0xB49F, 0xB49F }, +{ 0xB4A0, 0xB4A0, 0xB4A0 }, +{ 0xB4A1, 0xB4A1, 0xB4A1 }, +{ 0xB4A2, 0xB4A2, 0xB4A2 }, +{ 0xB4A3, 0xB4A3, 0xB4A3 }, +{ 0xB4A4, 0xB4A4, 0xB4A4 }, +{ 0xB4A5, 0xB4A5, 0xB4A5 }, +{ 0xB4A6, 0xB4A6, 0xB4A6 }, +{ 0xB4A7, 0xB4A7, 0xB4A7 }, +{ 0xB4A8, 0xB4A8, 0xB4A8 }, +{ 0xB4A9, 0xB4A9, 0xB4A9 }, +{ 0xB4AA, 0xB4AA, 0xB4AA }, +{ 0xB4AB, 0xB4AB, 0xB4AB }, +{ 0xB4AC, 0xB4AC, 0xB4AC }, +{ 0xB4AD, 0xB4AD, 0xB4AD }, +{ 0xB4AE, 0xB4AE, 0xB4AE }, +{ 0xB4AF, 0xB4AF, 0xB4AF }, +{ 0xB4B0, 0xB4B0, 0xB4B0 }, +{ 0xB4B1, 0xB4B1, 0xB4B1 }, +{ 0xB4B2, 0xB4B2, 0xB4B2 }, +{ 0xB4B3, 0xB4B3, 0xB4B3 }, +{ 0xB4B4, 0xB4B4, 0xB4B4 }, +{ 0xB4B5, 0xB4B5, 0xB4B5 }, +{ 0xB4B6, 0xB4B6, 0xB4B6 }, +{ 0xB4B7, 0xB4B7, 0xB4B7 }, +{ 0xB4B8, 0xB4B8, 0xB4B8 }, +{ 0xB4B9, 0xB4B9, 0xB4B9 }, +{ 0xB4BA, 0xB4BA, 0xB4BA }, +{ 0xB4BB, 0xB4BB, 0xB4BB }, +{ 0xB4BC, 0xB4BC, 0xB4BC }, +{ 0xB4BD, 0xB4BD, 0xB4BD }, +{ 0xB4BE, 0xB4BE, 0xB4BE }, +{ 0xB4BF, 0xB4BF, 0xB4BF }, +{ 0xB4C0, 0xB4C0, 0xB4C0 }, +{ 0xB4C1, 0xB4C1, 0xB4C1 }, +{ 0xB4C2, 0xB4C2, 0xB4C2 }, +{ 0xB4C3, 0xB4C3, 0xB4C3 }, +{ 0xB4C4, 0xB4C4, 0xB4C4 }, +{ 0xB4C5, 0xB4C5, 0xB4C5 }, +{ 0xB4C6, 0xB4C6, 0xB4C6 }, +{ 0xB4C7, 0xB4C7, 0xB4C7 }, +{ 0xB4C8, 0xB4C8, 0xB4C8 }, +{ 0xB4C9, 0xB4C9, 0xB4C9 }, +{ 0xB4CA, 0xB4CA, 0xB4CA }, +{ 0xB4CB, 0xB4CB, 0xB4CB }, +{ 0xB4CC, 0xB4CC, 0xB4CC }, +{ 0xB4CD, 0xB4CD, 0xB4CD }, +{ 0xB4CE, 0xB4CE, 0xB4CE }, +{ 0xB4CF, 0xB4CF, 0xB4CF }, +{ 0xB4D0, 0xB4D0, 0xB4D0 }, +{ 0xB4D1, 0xB4D1, 0xB4D1 }, +{ 0xB4D2, 0xB4D2, 0xB4D2 }, +{ 0xB4D3, 0xB4D3, 0xB4D3 }, +{ 0xB4D4, 0xB4D4, 0xB4D4 }, +{ 0xB4D5, 0xB4D5, 0xB4D5 }, +{ 0xB4D6, 0xB4D6, 0xB4D6 }, +{ 0xB4D7, 0xB4D7, 0xB4D7 }, +{ 0xB4D8, 0xB4D8, 0xB4D8 }, +{ 0xB4D9, 0xB4D9, 0xB4D9 }, +{ 0xB4DA, 0xB4DA, 0xB4DA }, +{ 0xB4DB, 0xB4DB, 0xB4DB }, +{ 0xB4DC, 0xB4DC, 0xB4DC }, +{ 0xB4DD, 0xB4DD, 0xB4DD }, +{ 0xB4DE, 0xB4DE, 0xB4DE }, +{ 0xB4DF, 0xB4DF, 0xB4DF }, +{ 0xB4E0, 0xB4E0, 0xB4E0 }, +{ 0xB4E1, 0xB4E1, 0xB4E1 }, +{ 0xB4E2, 0xB4E2, 0xB4E2 }, +{ 0xB4E3, 0xB4E3, 0xB4E3 }, +{ 0xB4E4, 0xB4E4, 0xB4E4 }, +{ 0xB4E5, 0xB4E5, 0xB4E5 }, +{ 0xB4E6, 0xB4E6, 0xB4E6 }, +{ 0xB4E7, 0xB4E7, 0xB4E7 }, +{ 0xB4E8, 0xB4E8, 0xB4E8 }, +{ 0xB4E9, 0xB4E9, 0xB4E9 }, +{ 0xB4EA, 0xB4EA, 0xB4EA }, +{ 0xB4EB, 0xB4EB, 0xB4EB }, +{ 0xB4EC, 0xB4EC, 0xB4EC }, +{ 0xB4ED, 0xB4ED, 0xB4ED }, +{ 0xB4EE, 0xB4EE, 0xB4EE }, +{ 0xB4EF, 0xB4EF, 0xB4EF }, +{ 0xB4F0, 0xB4F0, 0xB4F0 }, +{ 0xB4F1, 0xB4F1, 0xB4F1 }, +{ 0xB4F2, 0xB4F2, 0xB4F2 }, +{ 0xB4F3, 0xB4F3, 0xB4F3 }, +{ 0xB4F4, 0xB4F4, 0xB4F4 }, +{ 0xB4F5, 0xB4F5, 0xB4F5 }, +{ 0xB4F6, 0xB4F6, 0xB4F6 }, +{ 0xB4F7, 0xB4F7, 0xB4F7 }, +{ 0xB4F8, 0xB4F8, 0xB4F8 }, +{ 0xB4F9, 0xB4F9, 0xB4F9 }, +{ 0xB4FA, 0xB4FA, 0xB4FA }, +{ 0xB4FB, 0xB4FB, 0xB4FB }, +{ 0xB4FC, 0xB4FC, 0xB4FC }, +{ 0xB4FD, 0xB4FD, 0xB4FD }, +{ 0xB4FE, 0xB4FE, 0xB4FE }, +{ 0xB4FF, 0xB4FF, 0xB4FF }, +{ 0xB500, 0xB500, 0xB500 }, +{ 0xB501, 0xB501, 0xB501 }, +{ 0xB502, 0xB502, 0xB502 }, +{ 0xB503, 0xB503, 0xB503 }, +{ 0xB504, 0xB504, 0xB504 }, +{ 0xB505, 0xB505, 0xB505 }, +{ 0xB506, 0xB506, 0xB506 }, +{ 0xB507, 0xB507, 0xB507 }, +{ 0xB508, 0xB508, 0xB508 }, +{ 0xB509, 0xB509, 0xB509 }, +{ 0xB50A, 0xB50A, 0xB50A }, +{ 0xB50B, 0xB50B, 0xB50B }, +{ 0xB50C, 0xB50C, 0xB50C }, +{ 0xB50D, 0xB50D, 0xB50D }, +{ 0xB50E, 0xB50E, 0xB50E }, +{ 0xB50F, 0xB50F, 0xB50F }, +{ 0xB510, 0xB510, 0xB510 }, +{ 0xB511, 0xB511, 0xB511 }, +{ 0xB512, 0xB512, 0xB512 }, +{ 0xB513, 0xB513, 0xB513 }, +{ 0xB514, 0xB514, 0xB514 }, +{ 0xB515, 0xB515, 0xB515 }, +{ 0xB516, 0xB516, 0xB516 }, +{ 0xB517, 0xB517, 0xB517 }, +{ 0xB518, 0xB518, 0xB518 }, +{ 0xB519, 0xB519, 0xB519 }, +{ 0xB51A, 0xB51A, 0xB51A }, +{ 0xB51B, 0xB51B, 0xB51B }, +{ 0xB51C, 0xB51C, 0xB51C }, +{ 0xB51D, 0xB51D, 0xB51D }, +{ 0xB51E, 0xB51E, 0xB51E }, +{ 0xB51F, 0xB51F, 0xB51F }, +{ 0xB520, 0xB520, 0xB520 }, +{ 0xB521, 0xB521, 0xB521 }, +{ 0xB522, 0xB522, 0xB522 }, +{ 0xB523, 0xB523, 0xB523 }, +{ 0xB524, 0xB524, 0xB524 }, +{ 0xB525, 0xB525, 0xB525 }, +{ 0xB526, 0xB526, 0xB526 }, +{ 0xB527, 0xB527, 0xB527 }, +{ 0xB528, 0xB528, 0xB528 }, +{ 0xB529, 0xB529, 0xB529 }, +{ 0xB52A, 0xB52A, 0xB52A }, +{ 0xB52B, 0xB52B, 0xB52B }, +{ 0xB52C, 0xB52C, 0xB52C }, +{ 0xB52D, 0xB52D, 0xB52D }, +{ 0xB52E, 0xB52E, 0xB52E }, +{ 0xB52F, 0xB52F, 0xB52F }, +{ 0xB530, 0xB530, 0xB530 }, +{ 0xB531, 0xB531, 0xB531 }, +{ 0xB532, 0xB532, 0xB532 }, +{ 0xB533, 0xB533, 0xB533 }, +{ 0xB534, 0xB534, 0xB534 }, +{ 0xB535, 0xB535, 0xB535 }, +{ 0xB536, 0xB536, 0xB536 }, +{ 0xB537, 0xB537, 0xB537 }, +{ 0xB538, 0xB538, 0xB538 }, +{ 0xB539, 0xB539, 0xB539 }, +{ 0xB53A, 0xB53A, 0xB53A }, +{ 0xB53B, 0xB53B, 0xB53B }, +{ 0xB53C, 0xB53C, 0xB53C }, +{ 0xB53D, 0xB53D, 0xB53D }, +{ 0xB53E, 0xB53E, 0xB53E }, +{ 0xB53F, 0xB53F, 0xB53F }, +{ 0xB540, 0xB540, 0xB540 }, +{ 0xB541, 0xB541, 0xB541 }, +{ 0xB542, 0xB542, 0xB542 }, +{ 0xB543, 0xB543, 0xB543 }, +{ 0xB544, 0xB544, 0xB544 }, +{ 0xB545, 0xB545, 0xB545 }, +{ 0xB546, 0xB546, 0xB546 }, +{ 0xB547, 0xB547, 0xB547 }, +{ 0xB548, 0xB548, 0xB548 }, +{ 0xB549, 0xB549, 0xB549 }, +{ 0xB54A, 0xB54A, 0xB54A }, +{ 0xB54B, 0xB54B, 0xB54B }, +{ 0xB54C, 0xB54C, 0xB54C }, +{ 0xB54D, 0xB54D, 0xB54D }, +{ 0xB54E, 0xB54E, 0xB54E }, +{ 0xB54F, 0xB54F, 0xB54F }, +{ 0xB550, 0xB550, 0xB550 }, +{ 0xB551, 0xB551, 0xB551 }, +{ 0xB552, 0xB552, 0xB552 }, +{ 0xB553, 0xB553, 0xB553 }, +{ 0xB554, 0xB554, 0xB554 }, +{ 0xB555, 0xB555, 0xB555 }, +{ 0xB556, 0xB556, 0xB556 }, +{ 0xB557, 0xB557, 0xB557 }, +{ 0xB558, 0xB558, 0xB558 }, +{ 0xB559, 0xB559, 0xB559 }, +{ 0xB55A, 0xB55A, 0xB55A }, +{ 0xB55B, 0xB55B, 0xB55B }, +{ 0xB55C, 0xB55C, 0xB55C }, +{ 0xB55D, 0xB55D, 0xB55D }, +{ 0xB55E, 0xB55E, 0xB55E }, +{ 0xB55F, 0xB55F, 0xB55F }, +{ 0xB560, 0xB560, 0xB560 }, +{ 0xB561, 0xB561, 0xB561 }, +{ 0xB562, 0xB562, 0xB562 }, +{ 0xB563, 0xB563, 0xB563 }, +{ 0xB564, 0xB564, 0xB564 }, +{ 0xB565, 0xB565, 0xB565 }, +{ 0xB566, 0xB566, 0xB566 }, +{ 0xB567, 0xB567, 0xB567 }, +{ 0xB568, 0xB568, 0xB568 }, +{ 0xB569, 0xB569, 0xB569 }, +{ 0xB56A, 0xB56A, 0xB56A }, +{ 0xB56B, 0xB56B, 0xB56B }, +{ 0xB56C, 0xB56C, 0xB56C }, +{ 0xB56D, 0xB56D, 0xB56D }, +{ 0xB56E, 0xB56E, 0xB56E }, +{ 0xB56F, 0xB56F, 0xB56F }, +{ 0xB570, 0xB570, 0xB570 }, +{ 0xB571, 0xB571, 0xB571 }, +{ 0xB572, 0xB572, 0xB572 }, +{ 0xB573, 0xB573, 0xB573 }, +{ 0xB574, 0xB574, 0xB574 }, +{ 0xB575, 0xB575, 0xB575 }, +{ 0xB576, 0xB576, 0xB576 }, +{ 0xB577, 0xB577, 0xB577 }, +{ 0xB578, 0xB578, 0xB578 }, +{ 0xB579, 0xB579, 0xB579 }, +{ 0xB57A, 0xB57A, 0xB57A }, +{ 0xB57B, 0xB57B, 0xB57B }, +{ 0xB57C, 0xB57C, 0xB57C }, +{ 0xB57D, 0xB57D, 0xB57D }, +{ 0xB57E, 0xB57E, 0xB57E }, +{ 0xB57F, 0xB57F, 0xB57F }, +{ 0xB580, 0xB580, 0xB580 }, +{ 0xB581, 0xB581, 0xB581 }, +{ 0xB582, 0xB582, 0xB582 }, +{ 0xB583, 0xB583, 0xB583 }, +{ 0xB584, 0xB584, 0xB584 }, +{ 0xB585, 0xB585, 0xB585 }, +{ 0xB586, 0xB586, 0xB586 }, +{ 0xB587, 0xB587, 0xB587 }, +{ 0xB588, 0xB588, 0xB588 }, +{ 0xB589, 0xB589, 0xB589 }, +{ 0xB58A, 0xB58A, 0xB58A }, +{ 0xB58B, 0xB58B, 0xB58B }, +{ 0xB58C, 0xB58C, 0xB58C }, +{ 0xB58D, 0xB58D, 0xB58D }, +{ 0xB58E, 0xB58E, 0xB58E }, +{ 0xB58F, 0xB58F, 0xB58F }, +{ 0xB590, 0xB590, 0xB590 }, +{ 0xB591, 0xB591, 0xB591 }, +{ 0xB592, 0xB592, 0xB592 }, +{ 0xB593, 0xB593, 0xB593 }, +{ 0xB594, 0xB594, 0xB594 }, +{ 0xB595, 0xB595, 0xB595 }, +{ 0xB596, 0xB596, 0xB596 }, +{ 0xB597, 0xB597, 0xB597 }, +{ 0xB598, 0xB598, 0xB598 }, +{ 0xB599, 0xB599, 0xB599 }, +{ 0xB59A, 0xB59A, 0xB59A }, +{ 0xB59B, 0xB59B, 0xB59B }, +{ 0xB59C, 0xB59C, 0xB59C }, +{ 0xB59D, 0xB59D, 0xB59D }, +{ 0xB59E, 0xB59E, 0xB59E }, +{ 0xB59F, 0xB59F, 0xB59F }, +{ 0xB5A0, 0xB5A0, 0xB5A0 }, +{ 0xB5A1, 0xB5A1, 0xB5A1 }, +{ 0xB5A2, 0xB5A2, 0xB5A2 }, +{ 0xB5A3, 0xB5A3, 0xB5A3 }, +{ 0xB5A4, 0xB5A4, 0xB5A4 }, +{ 0xB5A5, 0xB5A5, 0xB5A5 }, +{ 0xB5A6, 0xB5A6, 0xB5A6 }, +{ 0xB5A7, 0xB5A7, 0xB5A7 }, +{ 0xB5A8, 0xB5A8, 0xB5A8 }, +{ 0xB5A9, 0xB5A9, 0xB5A9 }, +{ 0xB5AA, 0xB5AA, 0xB5AA }, +{ 0xB5AB, 0xB5AB, 0xB5AB }, +{ 0xB5AC, 0xB5AC, 0xB5AC }, +{ 0xB5AD, 0xB5AD, 0xB5AD }, +{ 0xB5AE, 0xB5AE, 0xB5AE }, +{ 0xB5AF, 0xB5AF, 0xB5AF }, +{ 0xB5B0, 0xB5B0, 0xB5B0 }, +{ 0xB5B1, 0xB5B1, 0xB5B1 }, +{ 0xB5B2, 0xB5B2, 0xB5B2 }, +{ 0xB5B3, 0xB5B3, 0xB5B3 }, +{ 0xB5B4, 0xB5B4, 0xB5B4 }, +{ 0xB5B5, 0xB5B5, 0xB5B5 }, +{ 0xB5B6, 0xB5B6, 0xB5B6 }, +{ 0xB5B7, 0xB5B7, 0xB5B7 }, +{ 0xB5B8, 0xB5B8, 0xB5B8 }, +{ 0xB5B9, 0xB5B9, 0xB5B9 }, +{ 0xB5BA, 0xB5BA, 0xB5BA }, +{ 0xB5BB, 0xB5BB, 0xB5BB }, +{ 0xB5BC, 0xB5BC, 0xB5BC }, +{ 0xB5BD, 0xB5BD, 0xB5BD }, +{ 0xB5BE, 0xB5BE, 0xB5BE }, +{ 0xB5BF, 0xB5BF, 0xB5BF }, +{ 0xB5C0, 0xB5C0, 0xB5C0 }, +{ 0xB5C1, 0xB5C1, 0xB5C1 }, +{ 0xB5C2, 0xB5C2, 0xB5C2 }, +{ 0xB5C3, 0xB5C3, 0xB5C3 }, +{ 0xB5C4, 0xB5C4, 0xB5C4 }, +{ 0xB5C5, 0xB5C5, 0xB5C5 }, +{ 0xB5C6, 0xB5C6, 0xB5C6 }, +{ 0xB5C7, 0xB5C7, 0xB5C7 }, +{ 0xB5C8, 0xB5C8, 0xB5C8 }, +{ 0xB5C9, 0xB5C9, 0xB5C9 }, +{ 0xB5CA, 0xB5CA, 0xB5CA }, +{ 0xB5CB, 0xB5CB, 0xB5CB }, +{ 0xB5CC, 0xB5CC, 0xB5CC }, +{ 0xB5CD, 0xB5CD, 0xB5CD }, +{ 0xB5CE, 0xB5CE, 0xB5CE }, +{ 0xB5CF, 0xB5CF, 0xB5CF }, +{ 0xB5D0, 0xB5D0, 0xB5D0 }, +{ 0xB5D1, 0xB5D1, 0xB5D1 }, +{ 0xB5D2, 0xB5D2, 0xB5D2 }, +{ 0xB5D3, 0xB5D3, 0xB5D3 }, +{ 0xB5D4, 0xB5D4, 0xB5D4 }, +{ 0xB5D5, 0xB5D5, 0xB5D5 }, +{ 0xB5D6, 0xB5D6, 0xB5D6 }, +{ 0xB5D7, 0xB5D7, 0xB5D7 }, +{ 0xB5D8, 0xB5D8, 0xB5D8 }, +{ 0xB5D9, 0xB5D9, 0xB5D9 }, +{ 0xB5DA, 0xB5DA, 0xB5DA }, +{ 0xB5DB, 0xB5DB, 0xB5DB }, +{ 0xB5DC, 0xB5DC, 0xB5DC }, +{ 0xB5DD, 0xB5DD, 0xB5DD }, +{ 0xB5DE, 0xB5DE, 0xB5DE }, +{ 0xB5DF, 0xB5DF, 0xB5DF }, +{ 0xB5E0, 0xB5E0, 0xB5E0 }, +{ 0xB5E1, 0xB5E1, 0xB5E1 }, +{ 0xB5E2, 0xB5E2, 0xB5E2 }, +{ 0xB5E3, 0xB5E3, 0xB5E3 }, +{ 0xB5E4, 0xB5E4, 0xB5E4 }, +{ 0xB5E5, 0xB5E5, 0xB5E5 }, +{ 0xB5E6, 0xB5E6, 0xB5E6 }, +{ 0xB5E7, 0xB5E7, 0xB5E7 }, +{ 0xB5E8, 0xB5E8, 0xB5E8 }, +{ 0xB5E9, 0xB5E9, 0xB5E9 }, +{ 0xB5EA, 0xB5EA, 0xB5EA }, +{ 0xB5EB, 0xB5EB, 0xB5EB }, +{ 0xB5EC, 0xB5EC, 0xB5EC }, +{ 0xB5ED, 0xB5ED, 0xB5ED }, +{ 0xB5EE, 0xB5EE, 0xB5EE }, +{ 0xB5EF, 0xB5EF, 0xB5EF }, +{ 0xB5F0, 0xB5F0, 0xB5F0 }, +{ 0xB5F1, 0xB5F1, 0xB5F1 }, +{ 0xB5F2, 0xB5F2, 0xB5F2 }, +{ 0xB5F3, 0xB5F3, 0xB5F3 }, +{ 0xB5F4, 0xB5F4, 0xB5F4 }, +{ 0xB5F5, 0xB5F5, 0xB5F5 }, +{ 0xB5F6, 0xB5F6, 0xB5F6 }, +{ 0xB5F7, 0xB5F7, 0xB5F7 }, +{ 0xB5F8, 0xB5F8, 0xB5F8 }, +{ 0xB5F9, 0xB5F9, 0xB5F9 }, +{ 0xB5FA, 0xB5FA, 0xB5FA }, +{ 0xB5FB, 0xB5FB, 0xB5FB }, +{ 0xB5FC, 0xB5FC, 0xB5FC }, +{ 0xB5FD, 0xB5FD, 0xB5FD }, +{ 0xB5FE, 0xB5FE, 0xB5FE }, +{ 0xB5FF, 0xB5FF, 0xB5FF }, +{ 0xB600, 0xB600, 0xB600 }, +{ 0xB601, 0xB601, 0xB601 }, +{ 0xB602, 0xB602, 0xB602 }, +{ 0xB603, 0xB603, 0xB603 }, +{ 0xB604, 0xB604, 0xB604 }, +{ 0xB605, 0xB605, 0xB605 }, +{ 0xB606, 0xB606, 0xB606 }, +{ 0xB607, 0xB607, 0xB607 }, +{ 0xB608, 0xB608, 0xB608 }, +{ 0xB609, 0xB609, 0xB609 }, +{ 0xB60A, 0xB60A, 0xB60A }, +{ 0xB60B, 0xB60B, 0xB60B }, +{ 0xB60C, 0xB60C, 0xB60C }, +{ 0xB60D, 0xB60D, 0xB60D }, +{ 0xB60E, 0xB60E, 0xB60E }, +{ 0xB60F, 0xB60F, 0xB60F }, +{ 0xB610, 0xB610, 0xB610 }, +{ 0xB611, 0xB611, 0xB611 }, +{ 0xB612, 0xB612, 0xB612 }, +{ 0xB613, 0xB613, 0xB613 }, +{ 0xB614, 0xB614, 0xB614 }, +{ 0xB615, 0xB615, 0xB615 }, +{ 0xB616, 0xB616, 0xB616 }, +{ 0xB617, 0xB617, 0xB617 }, +{ 0xB618, 0xB618, 0xB618 }, +{ 0xB619, 0xB619, 0xB619 }, +{ 0xB61A, 0xB61A, 0xB61A }, +{ 0xB61B, 0xB61B, 0xB61B }, +{ 0xB61C, 0xB61C, 0xB61C }, +{ 0xB61D, 0xB61D, 0xB61D }, +{ 0xB61E, 0xB61E, 0xB61E }, +{ 0xB61F, 0xB61F, 0xB61F }, +{ 0xB620, 0xB620, 0xB620 }, +{ 0xB621, 0xB621, 0xB621 }, +{ 0xB622, 0xB622, 0xB622 }, +{ 0xB623, 0xB623, 0xB623 }, +{ 0xB624, 0xB624, 0xB624 }, +{ 0xB625, 0xB625, 0xB625 }, +{ 0xB626, 0xB626, 0xB626 }, +{ 0xB627, 0xB627, 0xB627 }, +{ 0xB628, 0xB628, 0xB628 }, +{ 0xB629, 0xB629, 0xB629 }, +{ 0xB62A, 0xB62A, 0xB62A }, +{ 0xB62B, 0xB62B, 0xB62B }, +{ 0xB62C, 0xB62C, 0xB62C }, +{ 0xB62D, 0xB62D, 0xB62D }, +{ 0xB62E, 0xB62E, 0xB62E }, +{ 0xB62F, 0xB62F, 0xB62F }, +{ 0xB630, 0xB630, 0xB630 }, +{ 0xB631, 0xB631, 0xB631 }, +{ 0xB632, 0xB632, 0xB632 }, +{ 0xB633, 0xB633, 0xB633 }, +{ 0xB634, 0xB634, 0xB634 }, +{ 0xB635, 0xB635, 0xB635 }, +{ 0xB636, 0xB636, 0xB636 }, +{ 0xB637, 0xB637, 0xB637 }, +{ 0xB638, 0xB638, 0xB638 }, +{ 0xB639, 0xB639, 0xB639 }, +{ 0xB63A, 0xB63A, 0xB63A }, +{ 0xB63B, 0xB63B, 0xB63B }, +{ 0xB63C, 0xB63C, 0xB63C }, +{ 0xB63D, 0xB63D, 0xB63D }, +{ 0xB63E, 0xB63E, 0xB63E }, +{ 0xB63F, 0xB63F, 0xB63F }, +{ 0xB640, 0xB640, 0xB640 }, +{ 0xB641, 0xB641, 0xB641 }, +{ 0xB642, 0xB642, 0xB642 }, +{ 0xB643, 0xB643, 0xB643 }, +{ 0xB644, 0xB644, 0xB644 }, +{ 0xB645, 0xB645, 0xB645 }, +{ 0xB646, 0xB646, 0xB646 }, +{ 0xB647, 0xB647, 0xB647 }, +{ 0xB648, 0xB648, 0xB648 }, +{ 0xB649, 0xB649, 0xB649 }, +{ 0xB64A, 0xB64A, 0xB64A }, +{ 0xB64B, 0xB64B, 0xB64B }, +{ 0xB64C, 0xB64C, 0xB64C }, +{ 0xB64D, 0xB64D, 0xB64D }, +{ 0xB64E, 0xB64E, 0xB64E }, +{ 0xB64F, 0xB64F, 0xB64F }, +{ 0xB650, 0xB650, 0xB650 }, +{ 0xB651, 0xB651, 0xB651 }, +{ 0xB652, 0xB652, 0xB652 }, +{ 0xB653, 0xB653, 0xB653 }, +{ 0xB654, 0xB654, 0xB654 }, +{ 0xB655, 0xB655, 0xB655 }, +{ 0xB656, 0xB656, 0xB656 }, +{ 0xB657, 0xB657, 0xB657 }, +{ 0xB658, 0xB658, 0xB658 }, +{ 0xB659, 0xB659, 0xB659 }, +{ 0xB65A, 0xB65A, 0xB65A }, +{ 0xB65B, 0xB65B, 0xB65B }, +{ 0xB65C, 0xB65C, 0xB65C }, +{ 0xB65D, 0xB65D, 0xB65D }, +{ 0xB65E, 0xB65E, 0xB65E }, +{ 0xB65F, 0xB65F, 0xB65F }, +{ 0xB660, 0xB660, 0xB660 }, +{ 0xB661, 0xB661, 0xB661 }, +{ 0xB662, 0xB662, 0xB662 }, +{ 0xB663, 0xB663, 0xB663 }, +{ 0xB664, 0xB664, 0xB664 }, +{ 0xB665, 0xB665, 0xB665 }, +{ 0xB666, 0xB666, 0xB666 }, +{ 0xB667, 0xB667, 0xB667 }, +{ 0xB668, 0xB668, 0xB668 }, +{ 0xB669, 0xB669, 0xB669 }, +{ 0xB66A, 0xB66A, 0xB66A }, +{ 0xB66B, 0xB66B, 0xB66B }, +{ 0xB66C, 0xB66C, 0xB66C }, +{ 0xB66D, 0xB66D, 0xB66D }, +{ 0xB66E, 0xB66E, 0xB66E }, +{ 0xB66F, 0xB66F, 0xB66F }, +{ 0xB670, 0xB670, 0xB670 }, +{ 0xB671, 0xB671, 0xB671 }, +{ 0xB672, 0xB672, 0xB672 }, +{ 0xB673, 0xB673, 0xB673 }, +{ 0xB674, 0xB674, 0xB674 }, +{ 0xB675, 0xB675, 0xB675 }, +{ 0xB676, 0xB676, 0xB676 }, +{ 0xB677, 0xB677, 0xB677 }, +{ 0xB678, 0xB678, 0xB678 }, +{ 0xB679, 0xB679, 0xB679 }, +{ 0xB67A, 0xB67A, 0xB67A }, +{ 0xB67B, 0xB67B, 0xB67B }, +{ 0xB67C, 0xB67C, 0xB67C }, +{ 0xB67D, 0xB67D, 0xB67D }, +{ 0xB67E, 0xB67E, 0xB67E }, +{ 0xB67F, 0xB67F, 0xB67F }, +{ 0xB680, 0xB680, 0xB680 }, +{ 0xB681, 0xB681, 0xB681 }, +{ 0xB682, 0xB682, 0xB682 }, +{ 0xB683, 0xB683, 0xB683 }, +{ 0xB684, 0xB684, 0xB684 }, +{ 0xB685, 0xB685, 0xB685 }, +{ 0xB686, 0xB686, 0xB686 }, +{ 0xB687, 0xB687, 0xB687 }, +{ 0xB688, 0xB688, 0xB688 }, +{ 0xB689, 0xB689, 0xB689 }, +{ 0xB68A, 0xB68A, 0xB68A }, +{ 0xB68B, 0xB68B, 0xB68B }, +{ 0xB68C, 0xB68C, 0xB68C }, +{ 0xB68D, 0xB68D, 0xB68D }, +{ 0xB68E, 0xB68E, 0xB68E }, +{ 0xB68F, 0xB68F, 0xB68F }, +{ 0xB690, 0xB690, 0xB690 }, +{ 0xB691, 0xB691, 0xB691 }, +{ 0xB692, 0xB692, 0xB692 }, +{ 0xB693, 0xB693, 0xB693 }, +{ 0xB694, 0xB694, 0xB694 }, +{ 0xB695, 0xB695, 0xB695 }, +{ 0xB696, 0xB696, 0xB696 }, +{ 0xB697, 0xB697, 0xB697 }, +{ 0xB698, 0xB698, 0xB698 }, +{ 0xB699, 0xB699, 0xB699 }, +{ 0xB69A, 0xB69A, 0xB69A }, +{ 0xB69B, 0xB69B, 0xB69B }, +{ 0xB69C, 0xB69C, 0xB69C }, +{ 0xB69D, 0xB69D, 0xB69D }, +{ 0xB69E, 0xB69E, 0xB69E }, +{ 0xB69F, 0xB69F, 0xB69F }, +{ 0xB6A0, 0xB6A0, 0xB6A0 }, +{ 0xB6A1, 0xB6A1, 0xB6A1 }, +{ 0xB6A2, 0xB6A2, 0xB6A2 }, +{ 0xB6A3, 0xB6A3, 0xB6A3 }, +{ 0xB6A4, 0xB6A4, 0xB6A4 }, +{ 0xB6A5, 0xB6A5, 0xB6A5 }, +{ 0xB6A6, 0xB6A6, 0xB6A6 }, +{ 0xB6A7, 0xB6A7, 0xB6A7 }, +{ 0xB6A8, 0xB6A8, 0xB6A8 }, +{ 0xB6A9, 0xB6A9, 0xB6A9 }, +{ 0xB6AA, 0xB6AA, 0xB6AA }, +{ 0xB6AB, 0xB6AB, 0xB6AB }, +{ 0xB6AC, 0xB6AC, 0xB6AC }, +{ 0xB6AD, 0xB6AD, 0xB6AD }, +{ 0xB6AE, 0xB6AE, 0xB6AE }, +{ 0xB6AF, 0xB6AF, 0xB6AF }, +{ 0xB6B0, 0xB6B0, 0xB6B0 }, +{ 0xB6B1, 0xB6B1, 0xB6B1 }, +{ 0xB6B2, 0xB6B2, 0xB6B2 }, +{ 0xB6B3, 0xB6B3, 0xB6B3 }, +{ 0xB6B4, 0xB6B4, 0xB6B4 }, +{ 0xB6B5, 0xB6B5, 0xB6B5 }, +{ 0xB6B6, 0xB6B6, 0xB6B6 }, +{ 0xB6B7, 0xB6B7, 0xB6B7 }, +{ 0xB6B8, 0xB6B8, 0xB6B8 }, +{ 0xB6B9, 0xB6B9, 0xB6B9 }, +{ 0xB6BA, 0xB6BA, 0xB6BA }, +{ 0xB6BB, 0xB6BB, 0xB6BB }, +{ 0xB6BC, 0xB6BC, 0xB6BC }, +{ 0xB6BD, 0xB6BD, 0xB6BD }, +{ 0xB6BE, 0xB6BE, 0xB6BE }, +{ 0xB6BF, 0xB6BF, 0xB6BF }, +{ 0xB6C0, 0xB6C0, 0xB6C0 }, +{ 0xB6C1, 0xB6C1, 0xB6C1 }, +{ 0xB6C2, 0xB6C2, 0xB6C2 }, +{ 0xB6C3, 0xB6C3, 0xB6C3 }, +{ 0xB6C4, 0xB6C4, 0xB6C4 }, +{ 0xB6C5, 0xB6C5, 0xB6C5 }, +{ 0xB6C6, 0xB6C6, 0xB6C6 }, +{ 0xB6C7, 0xB6C7, 0xB6C7 }, +{ 0xB6C8, 0xB6C8, 0xB6C8 }, +{ 0xB6C9, 0xB6C9, 0xB6C9 }, +{ 0xB6CA, 0xB6CA, 0xB6CA }, +{ 0xB6CB, 0xB6CB, 0xB6CB }, +{ 0xB6CC, 0xB6CC, 0xB6CC }, +{ 0xB6CD, 0xB6CD, 0xB6CD }, +{ 0xB6CE, 0xB6CE, 0xB6CE }, +{ 0xB6CF, 0xB6CF, 0xB6CF }, +{ 0xB6D0, 0xB6D0, 0xB6D0 }, +{ 0xB6D1, 0xB6D1, 0xB6D1 }, +{ 0xB6D2, 0xB6D2, 0xB6D2 }, +{ 0xB6D3, 0xB6D3, 0xB6D3 }, +{ 0xB6D4, 0xB6D4, 0xB6D4 }, +{ 0xB6D5, 0xB6D5, 0xB6D5 }, +{ 0xB6D6, 0xB6D6, 0xB6D6 }, +{ 0xB6D7, 0xB6D7, 0xB6D7 }, +{ 0xB6D8, 0xB6D8, 0xB6D8 }, +{ 0xB6D9, 0xB6D9, 0xB6D9 }, +{ 0xB6DA, 0xB6DA, 0xB6DA }, +{ 0xB6DB, 0xB6DB, 0xB6DB }, +{ 0xB6DC, 0xB6DC, 0xB6DC }, +{ 0xB6DD, 0xB6DD, 0xB6DD }, +{ 0xB6DE, 0xB6DE, 0xB6DE }, +{ 0xB6DF, 0xB6DF, 0xB6DF }, +{ 0xB6E0, 0xB6E0, 0xB6E0 }, +{ 0xB6E1, 0xB6E1, 0xB6E1 }, +{ 0xB6E2, 0xB6E2, 0xB6E2 }, +{ 0xB6E3, 0xB6E3, 0xB6E3 }, +{ 0xB6E4, 0xB6E4, 0xB6E4 }, +{ 0xB6E5, 0xB6E5, 0xB6E5 }, +{ 0xB6E6, 0xB6E6, 0xB6E6 }, +{ 0xB6E7, 0xB6E7, 0xB6E7 }, +{ 0xB6E8, 0xB6E8, 0xB6E8 }, +{ 0xB6E9, 0xB6E9, 0xB6E9 }, +{ 0xB6EA, 0xB6EA, 0xB6EA }, +{ 0xB6EB, 0xB6EB, 0xB6EB }, +{ 0xB6EC, 0xB6EC, 0xB6EC }, +{ 0xB6ED, 0xB6ED, 0xB6ED }, +{ 0xB6EE, 0xB6EE, 0xB6EE }, +{ 0xB6EF, 0xB6EF, 0xB6EF }, +{ 0xB6F0, 0xB6F0, 0xB6F0 }, +{ 0xB6F1, 0xB6F1, 0xB6F1 }, +{ 0xB6F2, 0xB6F2, 0xB6F2 }, +{ 0xB6F3, 0xB6F3, 0xB6F3 }, +{ 0xB6F4, 0xB6F4, 0xB6F4 }, +{ 0xB6F5, 0xB6F5, 0xB6F5 }, +{ 0xB6F6, 0xB6F6, 0xB6F6 }, +{ 0xB6F7, 0xB6F7, 0xB6F7 }, +{ 0xB6F8, 0xB6F8, 0xB6F8 }, +{ 0xB6F9, 0xB6F9, 0xB6F9 }, +{ 0xB6FA, 0xB6FA, 0xB6FA }, +{ 0xB6FB, 0xB6FB, 0xB6FB }, +{ 0xB6FC, 0xB6FC, 0xB6FC }, +{ 0xB6FD, 0xB6FD, 0xB6FD }, +{ 0xB6FE, 0xB6FE, 0xB6FE }, +{ 0xB6FF, 0xB6FF, 0xB6FF }, +{ 0xB700, 0xB700, 0xB700 }, +{ 0xB701, 0xB701, 0xB701 }, +{ 0xB702, 0xB702, 0xB702 }, +{ 0xB703, 0xB703, 0xB703 }, +{ 0xB704, 0xB704, 0xB704 }, +{ 0xB705, 0xB705, 0xB705 }, +{ 0xB706, 0xB706, 0xB706 }, +{ 0xB707, 0xB707, 0xB707 }, +{ 0xB708, 0xB708, 0xB708 }, +{ 0xB709, 0xB709, 0xB709 }, +{ 0xB70A, 0xB70A, 0xB70A }, +{ 0xB70B, 0xB70B, 0xB70B }, +{ 0xB70C, 0xB70C, 0xB70C }, +{ 0xB70D, 0xB70D, 0xB70D }, +{ 0xB70E, 0xB70E, 0xB70E }, +{ 0xB70F, 0xB70F, 0xB70F }, +{ 0xB710, 0xB710, 0xB710 }, +{ 0xB711, 0xB711, 0xB711 }, +{ 0xB712, 0xB712, 0xB712 }, +{ 0xB713, 0xB713, 0xB713 }, +{ 0xB714, 0xB714, 0xB714 }, +{ 0xB715, 0xB715, 0xB715 }, +{ 0xB716, 0xB716, 0xB716 }, +{ 0xB717, 0xB717, 0xB717 }, +{ 0xB718, 0xB718, 0xB718 }, +{ 0xB719, 0xB719, 0xB719 }, +{ 0xB71A, 0xB71A, 0xB71A }, +{ 0xB71B, 0xB71B, 0xB71B }, +{ 0xB71C, 0xB71C, 0xB71C }, +{ 0xB71D, 0xB71D, 0xB71D }, +{ 0xB71E, 0xB71E, 0xB71E }, +{ 0xB71F, 0xB71F, 0xB71F }, +{ 0xB720, 0xB720, 0xB720 }, +{ 0xB721, 0xB721, 0xB721 }, +{ 0xB722, 0xB722, 0xB722 }, +{ 0xB723, 0xB723, 0xB723 }, +{ 0xB724, 0xB724, 0xB724 }, +{ 0xB725, 0xB725, 0xB725 }, +{ 0xB726, 0xB726, 0xB726 }, +{ 0xB727, 0xB727, 0xB727 }, +{ 0xB728, 0xB728, 0xB728 }, +{ 0xB729, 0xB729, 0xB729 }, +{ 0xB72A, 0xB72A, 0xB72A }, +{ 0xB72B, 0xB72B, 0xB72B }, +{ 0xB72C, 0xB72C, 0xB72C }, +{ 0xB72D, 0xB72D, 0xB72D }, +{ 0xB72E, 0xB72E, 0xB72E }, +{ 0xB72F, 0xB72F, 0xB72F }, +{ 0xB730, 0xB730, 0xB730 }, +{ 0xB731, 0xB731, 0xB731 }, +{ 0xB732, 0xB732, 0xB732 }, +{ 0xB733, 0xB733, 0xB733 }, +{ 0xB734, 0xB734, 0xB734 }, +{ 0xB735, 0xB735, 0xB735 }, +{ 0xB736, 0xB736, 0xB736 }, +{ 0xB737, 0xB737, 0xB737 }, +{ 0xB738, 0xB738, 0xB738 }, +{ 0xB739, 0xB739, 0xB739 }, +{ 0xB73A, 0xB73A, 0xB73A }, +{ 0xB73B, 0xB73B, 0xB73B }, +{ 0xB73C, 0xB73C, 0xB73C }, +{ 0xB73D, 0xB73D, 0xB73D }, +{ 0xB73E, 0xB73E, 0xB73E }, +{ 0xB73F, 0xB73F, 0xB73F }, +{ 0xB740, 0xB740, 0xB740 }, +{ 0xB741, 0xB741, 0xB741 }, +{ 0xB742, 0xB742, 0xB742 }, +{ 0xB743, 0xB743, 0xB743 }, +{ 0xB744, 0xB744, 0xB744 }, +{ 0xB745, 0xB745, 0xB745 }, +{ 0xB746, 0xB746, 0xB746 }, +{ 0xB747, 0xB747, 0xB747 }, +{ 0xB748, 0xB748, 0xB748 }, +{ 0xB749, 0xB749, 0xB749 }, +{ 0xB74A, 0xB74A, 0xB74A }, +{ 0xB74B, 0xB74B, 0xB74B }, +{ 0xB74C, 0xB74C, 0xB74C }, +{ 0xB74D, 0xB74D, 0xB74D }, +{ 0xB74E, 0xB74E, 0xB74E }, +{ 0xB74F, 0xB74F, 0xB74F }, +{ 0xB750, 0xB750, 0xB750 }, +{ 0xB751, 0xB751, 0xB751 }, +{ 0xB752, 0xB752, 0xB752 }, +{ 0xB753, 0xB753, 0xB753 }, +{ 0xB754, 0xB754, 0xB754 }, +{ 0xB755, 0xB755, 0xB755 }, +{ 0xB756, 0xB756, 0xB756 }, +{ 0xB757, 0xB757, 0xB757 }, +{ 0xB758, 0xB758, 0xB758 }, +{ 0xB759, 0xB759, 0xB759 }, +{ 0xB75A, 0xB75A, 0xB75A }, +{ 0xB75B, 0xB75B, 0xB75B }, +{ 0xB75C, 0xB75C, 0xB75C }, +{ 0xB75D, 0xB75D, 0xB75D }, +{ 0xB75E, 0xB75E, 0xB75E }, +{ 0xB75F, 0xB75F, 0xB75F }, +{ 0xB760, 0xB760, 0xB760 }, +{ 0xB761, 0xB761, 0xB761 }, +{ 0xB762, 0xB762, 0xB762 }, +{ 0xB763, 0xB763, 0xB763 }, +{ 0xB764, 0xB764, 0xB764 }, +{ 0xB765, 0xB765, 0xB765 }, +{ 0xB766, 0xB766, 0xB766 }, +{ 0xB767, 0xB767, 0xB767 }, +{ 0xB768, 0xB768, 0xB768 }, +{ 0xB769, 0xB769, 0xB769 }, +{ 0xB76A, 0xB76A, 0xB76A }, +{ 0xB76B, 0xB76B, 0xB76B }, +{ 0xB76C, 0xB76C, 0xB76C }, +{ 0xB76D, 0xB76D, 0xB76D }, +{ 0xB76E, 0xB76E, 0xB76E }, +{ 0xB76F, 0xB76F, 0xB76F }, +{ 0xB770, 0xB770, 0xB770 }, +{ 0xB771, 0xB771, 0xB771 }, +{ 0xB772, 0xB772, 0xB772 }, +{ 0xB773, 0xB773, 0xB773 }, +{ 0xB774, 0xB774, 0xB774 }, +{ 0xB775, 0xB775, 0xB775 }, +{ 0xB776, 0xB776, 0xB776 }, +{ 0xB777, 0xB777, 0xB777 }, +{ 0xB778, 0xB778, 0xB778 }, +{ 0xB779, 0xB779, 0xB779 }, +{ 0xB77A, 0xB77A, 0xB77A }, +{ 0xB77B, 0xB77B, 0xB77B }, +{ 0xB77C, 0xB77C, 0xB77C }, +{ 0xB77D, 0xB77D, 0xB77D }, +{ 0xB77E, 0xB77E, 0xB77E }, +{ 0xB77F, 0xB77F, 0xB77F }, +{ 0xB780, 0xB780, 0xB780 }, +{ 0xB781, 0xB781, 0xB781 }, +{ 0xB782, 0xB782, 0xB782 }, +{ 0xB783, 0xB783, 0xB783 }, +{ 0xB784, 0xB784, 0xB784 }, +{ 0xB785, 0xB785, 0xB785 }, +{ 0xB786, 0xB786, 0xB786 }, +{ 0xB787, 0xB787, 0xB787 }, +{ 0xB788, 0xB788, 0xB788 }, +{ 0xB789, 0xB789, 0xB789 }, +{ 0xB78A, 0xB78A, 0xB78A }, +{ 0xB78B, 0xB78B, 0xB78B }, +{ 0xB78C, 0xB78C, 0xB78C }, +{ 0xB78D, 0xB78D, 0xB78D }, +{ 0xB78E, 0xB78E, 0xB78E }, +{ 0xB78F, 0xB78F, 0xB78F }, +{ 0xB790, 0xB790, 0xB790 }, +{ 0xB791, 0xB791, 0xB791 }, +{ 0xB792, 0xB792, 0xB792 }, +{ 0xB793, 0xB793, 0xB793 }, +{ 0xB794, 0xB794, 0xB794 }, +{ 0xB795, 0xB795, 0xB795 }, +{ 0xB796, 0xB796, 0xB796 }, +{ 0xB797, 0xB797, 0xB797 }, +{ 0xB798, 0xB798, 0xB798 }, +{ 0xB799, 0xB799, 0xB799 }, +{ 0xB79A, 0xB79A, 0xB79A }, +{ 0xB79B, 0xB79B, 0xB79B }, +{ 0xB79C, 0xB79C, 0xB79C }, +{ 0xB79D, 0xB79D, 0xB79D }, +{ 0xB79E, 0xB79E, 0xB79E }, +{ 0xB79F, 0xB79F, 0xB79F }, +{ 0xB7A0, 0xB7A0, 0xB7A0 }, +{ 0xB7A1, 0xB7A1, 0xB7A1 }, +{ 0xB7A2, 0xB7A2, 0xB7A2 }, +{ 0xB7A3, 0xB7A3, 0xB7A3 }, +{ 0xB7A4, 0xB7A4, 0xB7A4 }, +{ 0xB7A5, 0xB7A5, 0xB7A5 }, +{ 0xB7A6, 0xB7A6, 0xB7A6 }, +{ 0xB7A7, 0xB7A7, 0xB7A7 }, +{ 0xB7A8, 0xB7A8, 0xB7A8 }, +{ 0xB7A9, 0xB7A9, 0xB7A9 }, +{ 0xB7AA, 0xB7AA, 0xB7AA }, +{ 0xB7AB, 0xB7AB, 0xB7AB }, +{ 0xB7AC, 0xB7AC, 0xB7AC }, +{ 0xB7AD, 0xB7AD, 0xB7AD }, +{ 0xB7AE, 0xB7AE, 0xB7AE }, +{ 0xB7AF, 0xB7AF, 0xB7AF }, +{ 0xB7B0, 0xB7B0, 0xB7B0 }, +{ 0xB7B1, 0xB7B1, 0xB7B1 }, +{ 0xB7B2, 0xB7B2, 0xB7B2 }, +{ 0xB7B3, 0xB7B3, 0xB7B3 }, +{ 0xB7B4, 0xB7B4, 0xB7B4 }, +{ 0xB7B5, 0xB7B5, 0xB7B5 }, +{ 0xB7B6, 0xB7B6, 0xB7B6 }, +{ 0xB7B7, 0xB7B7, 0xB7B7 }, +{ 0xB7B8, 0xB7B8, 0xB7B8 }, +{ 0xB7B9, 0xB7B9, 0xB7B9 }, +{ 0xB7BA, 0xB7BA, 0xB7BA }, +{ 0xB7BB, 0xB7BB, 0xB7BB }, +{ 0xB7BC, 0xB7BC, 0xB7BC }, +{ 0xB7BD, 0xB7BD, 0xB7BD }, +{ 0xB7BE, 0xB7BE, 0xB7BE }, +{ 0xB7BF, 0xB7BF, 0xB7BF }, +{ 0xB7C0, 0xB7C0, 0xB7C0 }, +{ 0xB7C1, 0xB7C1, 0xB7C1 }, +{ 0xB7C2, 0xB7C2, 0xB7C2 }, +{ 0xB7C3, 0xB7C3, 0xB7C3 }, +{ 0xB7C4, 0xB7C4, 0xB7C4 }, +{ 0xB7C5, 0xB7C5, 0xB7C5 }, +{ 0xB7C6, 0xB7C6, 0xB7C6 }, +{ 0xB7C7, 0xB7C7, 0xB7C7 }, +{ 0xB7C8, 0xB7C8, 0xB7C8 }, +{ 0xB7C9, 0xB7C9, 0xB7C9 }, +{ 0xB7CA, 0xB7CA, 0xB7CA }, +{ 0xB7CB, 0xB7CB, 0xB7CB }, +{ 0xB7CC, 0xB7CC, 0xB7CC }, +{ 0xB7CD, 0xB7CD, 0xB7CD }, +{ 0xB7CE, 0xB7CE, 0xB7CE }, +{ 0xB7CF, 0xB7CF, 0xB7CF }, +{ 0xB7D0, 0xB7D0, 0xB7D0 }, +{ 0xB7D1, 0xB7D1, 0xB7D1 }, +{ 0xB7D2, 0xB7D2, 0xB7D2 }, +{ 0xB7D3, 0xB7D3, 0xB7D3 }, +{ 0xB7D4, 0xB7D4, 0xB7D4 }, +{ 0xB7D5, 0xB7D5, 0xB7D5 }, +{ 0xB7D6, 0xB7D6, 0xB7D6 }, +{ 0xB7D7, 0xB7D7, 0xB7D7 }, +{ 0xB7D8, 0xB7D8, 0xB7D8 }, +{ 0xB7D9, 0xB7D9, 0xB7D9 }, +{ 0xB7DA, 0xB7DA, 0xB7DA }, +{ 0xB7DB, 0xB7DB, 0xB7DB }, +{ 0xB7DC, 0xB7DC, 0xB7DC }, +{ 0xB7DD, 0xB7DD, 0xB7DD }, +{ 0xB7DE, 0xB7DE, 0xB7DE }, +{ 0xB7DF, 0xB7DF, 0xB7DF }, +{ 0xB7E0, 0xB7E0, 0xB7E0 }, +{ 0xB7E1, 0xB7E1, 0xB7E1 }, +{ 0xB7E2, 0xB7E2, 0xB7E2 }, +{ 0xB7E3, 0xB7E3, 0xB7E3 }, +{ 0xB7E4, 0xB7E4, 0xB7E4 }, +{ 0xB7E5, 0xB7E5, 0xB7E5 }, +{ 0xB7E6, 0xB7E6, 0xB7E6 }, +{ 0xB7E7, 0xB7E7, 0xB7E7 }, +{ 0xB7E8, 0xB7E8, 0xB7E8 }, +{ 0xB7E9, 0xB7E9, 0xB7E9 }, +{ 0xB7EA, 0xB7EA, 0xB7EA }, +{ 0xB7EB, 0xB7EB, 0xB7EB }, +{ 0xB7EC, 0xB7EC, 0xB7EC }, +{ 0xB7ED, 0xB7ED, 0xB7ED }, +{ 0xB7EE, 0xB7EE, 0xB7EE }, +{ 0xB7EF, 0xB7EF, 0xB7EF }, +{ 0xB7F0, 0xB7F0, 0xB7F0 }, +{ 0xB7F1, 0xB7F1, 0xB7F1 }, +{ 0xB7F2, 0xB7F2, 0xB7F2 }, +{ 0xB7F3, 0xB7F3, 0xB7F3 }, +{ 0xB7F4, 0xB7F4, 0xB7F4 }, +{ 0xB7F5, 0xB7F5, 0xB7F5 }, +{ 0xB7F6, 0xB7F6, 0xB7F6 }, +{ 0xB7F7, 0xB7F7, 0xB7F7 }, +{ 0xB7F8, 0xB7F8, 0xB7F8 }, +{ 0xB7F9, 0xB7F9, 0xB7F9 }, +{ 0xB7FA, 0xB7FA, 0xB7FA }, +{ 0xB7FB, 0xB7FB, 0xB7FB }, +{ 0xB7FC, 0xB7FC, 0xB7FC }, +{ 0xB7FD, 0xB7FD, 0xB7FD }, +{ 0xB7FE, 0xB7FE, 0xB7FE }, +{ 0xB7FF, 0xB7FF, 0xB7FF }, +{ 0xB800, 0xB800, 0xB800 }, +{ 0xB801, 0xB801, 0xB801 }, +{ 0xB802, 0xB802, 0xB802 }, +{ 0xB803, 0xB803, 0xB803 }, +{ 0xB804, 0xB804, 0xB804 }, +{ 0xB805, 0xB805, 0xB805 }, +{ 0xB806, 0xB806, 0xB806 }, +{ 0xB807, 0xB807, 0xB807 }, +{ 0xB808, 0xB808, 0xB808 }, +{ 0xB809, 0xB809, 0xB809 }, +{ 0xB80A, 0xB80A, 0xB80A }, +{ 0xB80B, 0xB80B, 0xB80B }, +{ 0xB80C, 0xB80C, 0xB80C }, +{ 0xB80D, 0xB80D, 0xB80D }, +{ 0xB80E, 0xB80E, 0xB80E }, +{ 0xB80F, 0xB80F, 0xB80F }, +{ 0xB810, 0xB810, 0xB810 }, +{ 0xB811, 0xB811, 0xB811 }, +{ 0xB812, 0xB812, 0xB812 }, +{ 0xB813, 0xB813, 0xB813 }, +{ 0xB814, 0xB814, 0xB814 }, +{ 0xB815, 0xB815, 0xB815 }, +{ 0xB816, 0xB816, 0xB816 }, +{ 0xB817, 0xB817, 0xB817 }, +{ 0xB818, 0xB818, 0xB818 }, +{ 0xB819, 0xB819, 0xB819 }, +{ 0xB81A, 0xB81A, 0xB81A }, +{ 0xB81B, 0xB81B, 0xB81B }, +{ 0xB81C, 0xB81C, 0xB81C }, +{ 0xB81D, 0xB81D, 0xB81D }, +{ 0xB81E, 0xB81E, 0xB81E }, +{ 0xB81F, 0xB81F, 0xB81F }, +{ 0xB820, 0xB820, 0xB820 }, +{ 0xB821, 0xB821, 0xB821 }, +{ 0xB822, 0xB822, 0xB822 }, +{ 0xB823, 0xB823, 0xB823 }, +{ 0xB824, 0xB824, 0xB824 }, +{ 0xB825, 0xB825, 0xB825 }, +{ 0xB826, 0xB826, 0xB826 }, +{ 0xB827, 0xB827, 0xB827 }, +{ 0xB828, 0xB828, 0xB828 }, +{ 0xB829, 0xB829, 0xB829 }, +{ 0xB82A, 0xB82A, 0xB82A }, +{ 0xB82B, 0xB82B, 0xB82B }, +{ 0xB82C, 0xB82C, 0xB82C }, +{ 0xB82D, 0xB82D, 0xB82D }, +{ 0xB82E, 0xB82E, 0xB82E }, +{ 0xB82F, 0xB82F, 0xB82F }, +{ 0xB830, 0xB830, 0xB830 }, +{ 0xB831, 0xB831, 0xB831 }, +{ 0xB832, 0xB832, 0xB832 }, +{ 0xB833, 0xB833, 0xB833 }, +{ 0xB834, 0xB834, 0xB834 }, +{ 0xB835, 0xB835, 0xB835 }, +{ 0xB836, 0xB836, 0xB836 }, +{ 0xB837, 0xB837, 0xB837 }, +{ 0xB838, 0xB838, 0xB838 }, +{ 0xB839, 0xB839, 0xB839 }, +{ 0xB83A, 0xB83A, 0xB83A }, +{ 0xB83B, 0xB83B, 0xB83B }, +{ 0xB83C, 0xB83C, 0xB83C }, +{ 0xB83D, 0xB83D, 0xB83D }, +{ 0xB83E, 0xB83E, 0xB83E }, +{ 0xB83F, 0xB83F, 0xB83F }, +{ 0xB840, 0xB840, 0xB840 }, +{ 0xB841, 0xB841, 0xB841 }, +{ 0xB842, 0xB842, 0xB842 }, +{ 0xB843, 0xB843, 0xB843 }, +{ 0xB844, 0xB844, 0xB844 }, +{ 0xB845, 0xB845, 0xB845 }, +{ 0xB846, 0xB846, 0xB846 }, +{ 0xB847, 0xB847, 0xB847 }, +{ 0xB848, 0xB848, 0xB848 }, +{ 0xB849, 0xB849, 0xB849 }, +{ 0xB84A, 0xB84A, 0xB84A }, +{ 0xB84B, 0xB84B, 0xB84B }, +{ 0xB84C, 0xB84C, 0xB84C }, +{ 0xB84D, 0xB84D, 0xB84D }, +{ 0xB84E, 0xB84E, 0xB84E }, +{ 0xB84F, 0xB84F, 0xB84F }, +{ 0xB850, 0xB850, 0xB850 }, +{ 0xB851, 0xB851, 0xB851 }, +{ 0xB852, 0xB852, 0xB852 }, +{ 0xB853, 0xB853, 0xB853 }, +{ 0xB854, 0xB854, 0xB854 }, +{ 0xB855, 0xB855, 0xB855 }, +{ 0xB856, 0xB856, 0xB856 }, +{ 0xB857, 0xB857, 0xB857 }, +{ 0xB858, 0xB858, 0xB858 }, +{ 0xB859, 0xB859, 0xB859 }, +{ 0xB85A, 0xB85A, 0xB85A }, +{ 0xB85B, 0xB85B, 0xB85B }, +{ 0xB85C, 0xB85C, 0xB85C }, +{ 0xB85D, 0xB85D, 0xB85D }, +{ 0xB85E, 0xB85E, 0xB85E }, +{ 0xB85F, 0xB85F, 0xB85F }, +{ 0xB860, 0xB860, 0xB860 }, +{ 0xB861, 0xB861, 0xB861 }, +{ 0xB862, 0xB862, 0xB862 }, +{ 0xB863, 0xB863, 0xB863 }, +{ 0xB864, 0xB864, 0xB864 }, +{ 0xB865, 0xB865, 0xB865 }, +{ 0xB866, 0xB866, 0xB866 }, +{ 0xB867, 0xB867, 0xB867 }, +{ 0xB868, 0xB868, 0xB868 }, +{ 0xB869, 0xB869, 0xB869 }, +{ 0xB86A, 0xB86A, 0xB86A }, +{ 0xB86B, 0xB86B, 0xB86B }, +{ 0xB86C, 0xB86C, 0xB86C }, +{ 0xB86D, 0xB86D, 0xB86D }, +{ 0xB86E, 0xB86E, 0xB86E }, +{ 0xB86F, 0xB86F, 0xB86F }, +{ 0xB870, 0xB870, 0xB870 }, +{ 0xB871, 0xB871, 0xB871 }, +{ 0xB872, 0xB872, 0xB872 }, +{ 0xB873, 0xB873, 0xB873 }, +{ 0xB874, 0xB874, 0xB874 }, +{ 0xB875, 0xB875, 0xB875 }, +{ 0xB876, 0xB876, 0xB876 }, +{ 0xB877, 0xB877, 0xB877 }, +{ 0xB878, 0xB878, 0xB878 }, +{ 0xB879, 0xB879, 0xB879 }, +{ 0xB87A, 0xB87A, 0xB87A }, +{ 0xB87B, 0xB87B, 0xB87B }, +{ 0xB87C, 0xB87C, 0xB87C }, +{ 0xB87D, 0xB87D, 0xB87D }, +{ 0xB87E, 0xB87E, 0xB87E }, +{ 0xB87F, 0xB87F, 0xB87F }, +{ 0xB880, 0xB880, 0xB880 }, +{ 0xB881, 0xB881, 0xB881 }, +{ 0xB882, 0xB882, 0xB882 }, +{ 0xB883, 0xB883, 0xB883 }, +{ 0xB884, 0xB884, 0xB884 }, +{ 0xB885, 0xB885, 0xB885 }, +{ 0xB886, 0xB886, 0xB886 }, +{ 0xB887, 0xB887, 0xB887 }, +{ 0xB888, 0xB888, 0xB888 }, +{ 0xB889, 0xB889, 0xB889 }, +{ 0xB88A, 0xB88A, 0xB88A }, +{ 0xB88B, 0xB88B, 0xB88B }, +{ 0xB88C, 0xB88C, 0xB88C }, +{ 0xB88D, 0xB88D, 0xB88D }, +{ 0xB88E, 0xB88E, 0xB88E }, +{ 0xB88F, 0xB88F, 0xB88F }, +{ 0xB890, 0xB890, 0xB890 }, +{ 0xB891, 0xB891, 0xB891 }, +{ 0xB892, 0xB892, 0xB892 }, +{ 0xB893, 0xB893, 0xB893 }, +{ 0xB894, 0xB894, 0xB894 }, +{ 0xB895, 0xB895, 0xB895 }, +{ 0xB896, 0xB896, 0xB896 }, +{ 0xB897, 0xB897, 0xB897 }, +{ 0xB898, 0xB898, 0xB898 }, +{ 0xB899, 0xB899, 0xB899 }, +{ 0xB89A, 0xB89A, 0xB89A }, +{ 0xB89B, 0xB89B, 0xB89B }, +{ 0xB89C, 0xB89C, 0xB89C }, +{ 0xB89D, 0xB89D, 0xB89D }, +{ 0xB89E, 0xB89E, 0xB89E }, +{ 0xB89F, 0xB89F, 0xB89F }, +{ 0xB8A0, 0xB8A0, 0xB8A0 }, +{ 0xB8A1, 0xB8A1, 0xB8A1 }, +{ 0xB8A2, 0xB8A2, 0xB8A2 }, +{ 0xB8A3, 0xB8A3, 0xB8A3 }, +{ 0xB8A4, 0xB8A4, 0xB8A4 }, +{ 0xB8A5, 0xB8A5, 0xB8A5 }, +{ 0xB8A6, 0xB8A6, 0xB8A6 }, +{ 0xB8A7, 0xB8A7, 0xB8A7 }, +{ 0xB8A8, 0xB8A8, 0xB8A8 }, +{ 0xB8A9, 0xB8A9, 0xB8A9 }, +{ 0xB8AA, 0xB8AA, 0xB8AA }, +{ 0xB8AB, 0xB8AB, 0xB8AB }, +{ 0xB8AC, 0xB8AC, 0xB8AC }, +{ 0xB8AD, 0xB8AD, 0xB8AD }, +{ 0xB8AE, 0xB8AE, 0xB8AE }, +{ 0xB8AF, 0xB8AF, 0xB8AF }, +{ 0xB8B0, 0xB8B0, 0xB8B0 }, +{ 0xB8B1, 0xB8B1, 0xB8B1 }, +{ 0xB8B2, 0xB8B2, 0xB8B2 }, +{ 0xB8B3, 0xB8B3, 0xB8B3 }, +{ 0xB8B4, 0xB8B4, 0xB8B4 }, +{ 0xB8B5, 0xB8B5, 0xB8B5 }, +{ 0xB8B6, 0xB8B6, 0xB8B6 }, +{ 0xB8B7, 0xB8B7, 0xB8B7 }, +{ 0xB8B8, 0xB8B8, 0xB8B8 }, +{ 0xB8B9, 0xB8B9, 0xB8B9 }, +{ 0xB8BA, 0xB8BA, 0xB8BA }, +{ 0xB8BB, 0xB8BB, 0xB8BB }, +{ 0xB8BC, 0xB8BC, 0xB8BC }, +{ 0xB8BD, 0xB8BD, 0xB8BD }, +{ 0xB8BE, 0xB8BE, 0xB8BE }, +{ 0xB8BF, 0xB8BF, 0xB8BF }, +{ 0xB8C0, 0xB8C0, 0xB8C0 }, +{ 0xB8C1, 0xB8C1, 0xB8C1 }, +{ 0xB8C2, 0xB8C2, 0xB8C2 }, +{ 0xB8C3, 0xB8C3, 0xB8C3 }, +{ 0xB8C4, 0xB8C4, 0xB8C4 }, +{ 0xB8C5, 0xB8C5, 0xB8C5 }, +{ 0xB8C6, 0xB8C6, 0xB8C6 }, +{ 0xB8C7, 0xB8C7, 0xB8C7 }, +{ 0xB8C8, 0xB8C8, 0xB8C8 }, +{ 0xB8C9, 0xB8C9, 0xB8C9 }, +{ 0xB8CA, 0xB8CA, 0xB8CA }, +{ 0xB8CB, 0xB8CB, 0xB8CB }, +{ 0xB8CC, 0xB8CC, 0xB8CC }, +{ 0xB8CD, 0xB8CD, 0xB8CD }, +{ 0xB8CE, 0xB8CE, 0xB8CE }, +{ 0xB8CF, 0xB8CF, 0xB8CF }, +{ 0xB8D0, 0xB8D0, 0xB8D0 }, +{ 0xB8D1, 0xB8D1, 0xB8D1 }, +{ 0xB8D2, 0xB8D2, 0xB8D2 }, +{ 0xB8D3, 0xB8D3, 0xB8D3 }, +{ 0xB8D4, 0xB8D4, 0xB8D4 }, +{ 0xB8D5, 0xB8D5, 0xB8D5 }, +{ 0xB8D6, 0xB8D6, 0xB8D6 }, +{ 0xB8D7, 0xB8D7, 0xB8D7 }, +{ 0xB8D8, 0xB8D8, 0xB8D8 }, +{ 0xB8D9, 0xB8D9, 0xB8D9 }, +{ 0xB8DA, 0xB8DA, 0xB8DA }, +{ 0xB8DB, 0xB8DB, 0xB8DB }, +{ 0xB8DC, 0xB8DC, 0xB8DC }, +{ 0xB8DD, 0xB8DD, 0xB8DD }, +{ 0xB8DE, 0xB8DE, 0xB8DE }, +{ 0xB8DF, 0xB8DF, 0xB8DF }, +{ 0xB8E0, 0xB8E0, 0xB8E0 }, +{ 0xB8E1, 0xB8E1, 0xB8E1 }, +{ 0xB8E2, 0xB8E2, 0xB8E2 }, +{ 0xB8E3, 0xB8E3, 0xB8E3 }, +{ 0xB8E4, 0xB8E4, 0xB8E4 }, +{ 0xB8E5, 0xB8E5, 0xB8E5 }, +{ 0xB8E6, 0xB8E6, 0xB8E6 }, +{ 0xB8E7, 0xB8E7, 0xB8E7 }, +{ 0xB8E8, 0xB8E8, 0xB8E8 }, +{ 0xB8E9, 0xB8E9, 0xB8E9 }, +{ 0xB8EA, 0xB8EA, 0xB8EA }, +{ 0xB8EB, 0xB8EB, 0xB8EB }, +{ 0xB8EC, 0xB8EC, 0xB8EC }, +{ 0xB8ED, 0xB8ED, 0xB8ED }, +{ 0xB8EE, 0xB8EE, 0xB8EE }, +{ 0xB8EF, 0xB8EF, 0xB8EF }, +{ 0xB8F0, 0xB8F0, 0xB8F0 }, +{ 0xB8F1, 0xB8F1, 0xB8F1 }, +{ 0xB8F2, 0xB8F2, 0xB8F2 }, +{ 0xB8F3, 0xB8F3, 0xB8F3 }, +{ 0xB8F4, 0xB8F4, 0xB8F4 }, +{ 0xB8F5, 0xB8F5, 0xB8F5 }, +{ 0xB8F6, 0xB8F6, 0xB8F6 }, +{ 0xB8F7, 0xB8F7, 0xB8F7 }, +{ 0xB8F8, 0xB8F8, 0xB8F8 }, +{ 0xB8F9, 0xB8F9, 0xB8F9 }, +{ 0xB8FA, 0xB8FA, 0xB8FA }, +{ 0xB8FB, 0xB8FB, 0xB8FB }, +{ 0xB8FC, 0xB8FC, 0xB8FC }, +{ 0xB8FD, 0xB8FD, 0xB8FD }, +{ 0xB8FE, 0xB8FE, 0xB8FE }, +{ 0xB8FF, 0xB8FF, 0xB8FF }, +{ 0xB900, 0xB900, 0xB900 }, +{ 0xB901, 0xB901, 0xB901 }, +{ 0xB902, 0xB902, 0xB902 }, +{ 0xB903, 0xB903, 0xB903 }, +{ 0xB904, 0xB904, 0xB904 }, +{ 0xB905, 0xB905, 0xB905 }, +{ 0xB906, 0xB906, 0xB906 }, +{ 0xB907, 0xB907, 0xB907 }, +{ 0xB908, 0xB908, 0xB908 }, +{ 0xB909, 0xB909, 0xB909 }, +{ 0xB90A, 0xB90A, 0xB90A }, +{ 0xB90B, 0xB90B, 0xB90B }, +{ 0xB90C, 0xB90C, 0xB90C }, +{ 0xB90D, 0xB90D, 0xB90D }, +{ 0xB90E, 0xB90E, 0xB90E }, +{ 0xB90F, 0xB90F, 0xB90F }, +{ 0xB910, 0xB910, 0xB910 }, +{ 0xB911, 0xB911, 0xB911 }, +{ 0xB912, 0xB912, 0xB912 }, +{ 0xB913, 0xB913, 0xB913 }, +{ 0xB914, 0xB914, 0xB914 }, +{ 0xB915, 0xB915, 0xB915 }, +{ 0xB916, 0xB916, 0xB916 }, +{ 0xB917, 0xB917, 0xB917 }, +{ 0xB918, 0xB918, 0xB918 }, +{ 0xB919, 0xB919, 0xB919 }, +{ 0xB91A, 0xB91A, 0xB91A }, +{ 0xB91B, 0xB91B, 0xB91B }, +{ 0xB91C, 0xB91C, 0xB91C }, +{ 0xB91D, 0xB91D, 0xB91D }, +{ 0xB91E, 0xB91E, 0xB91E }, +{ 0xB91F, 0xB91F, 0xB91F }, +{ 0xB920, 0xB920, 0xB920 }, +{ 0xB921, 0xB921, 0xB921 }, +{ 0xB922, 0xB922, 0xB922 }, +{ 0xB923, 0xB923, 0xB923 }, +{ 0xB924, 0xB924, 0xB924 }, +{ 0xB925, 0xB925, 0xB925 }, +{ 0xB926, 0xB926, 0xB926 }, +{ 0xB927, 0xB927, 0xB927 }, +{ 0xB928, 0xB928, 0xB928 }, +{ 0xB929, 0xB929, 0xB929 }, +{ 0xB92A, 0xB92A, 0xB92A }, +{ 0xB92B, 0xB92B, 0xB92B }, +{ 0xB92C, 0xB92C, 0xB92C }, +{ 0xB92D, 0xB92D, 0xB92D }, +{ 0xB92E, 0xB92E, 0xB92E }, +{ 0xB92F, 0xB92F, 0xB92F }, +{ 0xB930, 0xB930, 0xB930 }, +{ 0xB931, 0xB931, 0xB931 }, +{ 0xB932, 0xB932, 0xB932 }, +{ 0xB933, 0xB933, 0xB933 }, +{ 0xB934, 0xB934, 0xB934 }, +{ 0xB935, 0xB935, 0xB935 }, +{ 0xB936, 0xB936, 0xB936 }, +{ 0xB937, 0xB937, 0xB937 }, +{ 0xB938, 0xB938, 0xB938 }, +{ 0xB939, 0xB939, 0xB939 }, +{ 0xB93A, 0xB93A, 0xB93A }, +{ 0xB93B, 0xB93B, 0xB93B }, +{ 0xB93C, 0xB93C, 0xB93C }, +{ 0xB93D, 0xB93D, 0xB93D }, +{ 0xB93E, 0xB93E, 0xB93E }, +{ 0xB93F, 0xB93F, 0xB93F }, +{ 0xB940, 0xB940, 0xB940 }, +{ 0xB941, 0xB941, 0xB941 }, +{ 0xB942, 0xB942, 0xB942 }, +{ 0xB943, 0xB943, 0xB943 }, +{ 0xB944, 0xB944, 0xB944 }, +{ 0xB945, 0xB945, 0xB945 }, +{ 0xB946, 0xB946, 0xB946 }, +{ 0xB947, 0xB947, 0xB947 }, +{ 0xB948, 0xB948, 0xB948 }, +{ 0xB949, 0xB949, 0xB949 }, +{ 0xB94A, 0xB94A, 0xB94A }, +{ 0xB94B, 0xB94B, 0xB94B }, +{ 0xB94C, 0xB94C, 0xB94C }, +{ 0xB94D, 0xB94D, 0xB94D }, +{ 0xB94E, 0xB94E, 0xB94E }, +{ 0xB94F, 0xB94F, 0xB94F }, +{ 0xB950, 0xB950, 0xB950 }, +{ 0xB951, 0xB951, 0xB951 }, +{ 0xB952, 0xB952, 0xB952 }, +{ 0xB953, 0xB953, 0xB953 }, +{ 0xB954, 0xB954, 0xB954 }, +{ 0xB955, 0xB955, 0xB955 }, +{ 0xB956, 0xB956, 0xB956 }, +{ 0xB957, 0xB957, 0xB957 }, +{ 0xB958, 0xB958, 0xB958 }, +{ 0xB959, 0xB959, 0xB959 }, +{ 0xB95A, 0xB95A, 0xB95A }, +{ 0xB95B, 0xB95B, 0xB95B }, +{ 0xB95C, 0xB95C, 0xB95C }, +{ 0xB95D, 0xB95D, 0xB95D }, +{ 0xB95E, 0xB95E, 0xB95E }, +{ 0xB95F, 0xB95F, 0xB95F }, +{ 0xB960, 0xB960, 0xB960 }, +{ 0xB961, 0xB961, 0xB961 }, +{ 0xB962, 0xB962, 0xB962 }, +{ 0xB963, 0xB963, 0xB963 }, +{ 0xB964, 0xB964, 0xB964 }, +{ 0xB965, 0xB965, 0xB965 }, +{ 0xB966, 0xB966, 0xB966 }, +{ 0xB967, 0xB967, 0xB967 }, +{ 0xB968, 0xB968, 0xB968 }, +{ 0xB969, 0xB969, 0xB969 }, +{ 0xB96A, 0xB96A, 0xB96A }, +{ 0xB96B, 0xB96B, 0xB96B }, +{ 0xB96C, 0xB96C, 0xB96C }, +{ 0xB96D, 0xB96D, 0xB96D }, +{ 0xB96E, 0xB96E, 0xB96E }, +{ 0xB96F, 0xB96F, 0xB96F }, +{ 0xB970, 0xB970, 0xB970 }, +{ 0xB971, 0xB971, 0xB971 }, +{ 0xB972, 0xB972, 0xB972 }, +{ 0xB973, 0xB973, 0xB973 }, +{ 0xB974, 0xB974, 0xB974 }, +{ 0xB975, 0xB975, 0xB975 }, +{ 0xB976, 0xB976, 0xB976 }, +{ 0xB977, 0xB977, 0xB977 }, +{ 0xB978, 0xB978, 0xB978 }, +{ 0xB979, 0xB979, 0xB979 }, +{ 0xB97A, 0xB97A, 0xB97A }, +{ 0xB97B, 0xB97B, 0xB97B }, +{ 0xB97C, 0xB97C, 0xB97C }, +{ 0xB97D, 0xB97D, 0xB97D }, +{ 0xB97E, 0xB97E, 0xB97E }, +{ 0xB97F, 0xB97F, 0xB97F }, +{ 0xB980, 0xB980, 0xB980 }, +{ 0xB981, 0xB981, 0xB981 }, +{ 0xB982, 0xB982, 0xB982 }, +{ 0xB983, 0xB983, 0xB983 }, +{ 0xB984, 0xB984, 0xB984 }, +{ 0xB985, 0xB985, 0xB985 }, +{ 0xB986, 0xB986, 0xB986 }, +{ 0xB987, 0xB987, 0xB987 }, +{ 0xB988, 0xB988, 0xB988 }, +{ 0xB989, 0xB989, 0xB989 }, +{ 0xB98A, 0xB98A, 0xB98A }, +{ 0xB98B, 0xB98B, 0xB98B }, +{ 0xB98C, 0xB98C, 0xB98C }, +{ 0xB98D, 0xB98D, 0xB98D }, +{ 0xB98E, 0xB98E, 0xB98E }, +{ 0xB98F, 0xB98F, 0xB98F }, +{ 0xB990, 0xB990, 0xB990 }, +{ 0xB991, 0xB991, 0xB991 }, +{ 0xB992, 0xB992, 0xB992 }, +{ 0xB993, 0xB993, 0xB993 }, +{ 0xB994, 0xB994, 0xB994 }, +{ 0xB995, 0xB995, 0xB995 }, +{ 0xB996, 0xB996, 0xB996 }, +{ 0xB997, 0xB997, 0xB997 }, +{ 0xB998, 0xB998, 0xB998 }, +{ 0xB999, 0xB999, 0xB999 }, +{ 0xB99A, 0xB99A, 0xB99A }, +{ 0xB99B, 0xB99B, 0xB99B }, +{ 0xB99C, 0xB99C, 0xB99C }, +{ 0xB99D, 0xB99D, 0xB99D }, +{ 0xB99E, 0xB99E, 0xB99E }, +{ 0xB99F, 0xB99F, 0xB99F }, +{ 0xB9A0, 0xB9A0, 0xB9A0 }, +{ 0xB9A1, 0xB9A1, 0xB9A1 }, +{ 0xB9A2, 0xB9A2, 0xB9A2 }, +{ 0xB9A3, 0xB9A3, 0xB9A3 }, +{ 0xB9A4, 0xB9A4, 0xB9A4 }, +{ 0xB9A5, 0xB9A5, 0xB9A5 }, +{ 0xB9A6, 0xB9A6, 0xB9A6 }, +{ 0xB9A7, 0xB9A7, 0xB9A7 }, +{ 0xB9A8, 0xB9A8, 0xB9A8 }, +{ 0xB9A9, 0xB9A9, 0xB9A9 }, +{ 0xB9AA, 0xB9AA, 0xB9AA }, +{ 0xB9AB, 0xB9AB, 0xB9AB }, +{ 0xB9AC, 0xB9AC, 0xB9AC }, +{ 0xB9AD, 0xB9AD, 0xB9AD }, +{ 0xB9AE, 0xB9AE, 0xB9AE }, +{ 0xB9AF, 0xB9AF, 0xB9AF }, +{ 0xB9B0, 0xB9B0, 0xB9B0 }, +{ 0xB9B1, 0xB9B1, 0xB9B1 }, +{ 0xB9B2, 0xB9B2, 0xB9B2 }, +{ 0xB9B3, 0xB9B3, 0xB9B3 }, +{ 0xB9B4, 0xB9B4, 0xB9B4 }, +{ 0xB9B5, 0xB9B5, 0xB9B5 }, +{ 0xB9B6, 0xB9B6, 0xB9B6 }, +{ 0xB9B7, 0xB9B7, 0xB9B7 }, +{ 0xB9B8, 0xB9B8, 0xB9B8 }, +{ 0xB9B9, 0xB9B9, 0xB9B9 }, +{ 0xB9BA, 0xB9BA, 0xB9BA }, +{ 0xB9BB, 0xB9BB, 0xB9BB }, +{ 0xB9BC, 0xB9BC, 0xB9BC }, +{ 0xB9BD, 0xB9BD, 0xB9BD }, +{ 0xB9BE, 0xB9BE, 0xB9BE }, +{ 0xB9BF, 0xB9BF, 0xB9BF }, +{ 0xB9C0, 0xB9C0, 0xB9C0 }, +{ 0xB9C1, 0xB9C1, 0xB9C1 }, +{ 0xB9C2, 0xB9C2, 0xB9C2 }, +{ 0xB9C3, 0xB9C3, 0xB9C3 }, +{ 0xB9C4, 0xB9C4, 0xB9C4 }, +{ 0xB9C5, 0xB9C5, 0xB9C5 }, +{ 0xB9C6, 0xB9C6, 0xB9C6 }, +{ 0xB9C7, 0xB9C7, 0xB9C7 }, +{ 0xB9C8, 0xB9C8, 0xB9C8 }, +{ 0xB9C9, 0xB9C9, 0xB9C9 }, +{ 0xB9CA, 0xB9CA, 0xB9CA }, +{ 0xB9CB, 0xB9CB, 0xB9CB }, +{ 0xB9CC, 0xB9CC, 0xB9CC }, +{ 0xB9CD, 0xB9CD, 0xB9CD }, +{ 0xB9CE, 0xB9CE, 0xB9CE }, +{ 0xB9CF, 0xB9CF, 0xB9CF }, +{ 0xB9D0, 0xB9D0, 0xB9D0 }, +{ 0xB9D1, 0xB9D1, 0xB9D1 }, +{ 0xB9D2, 0xB9D2, 0xB9D2 }, +{ 0xB9D3, 0xB9D3, 0xB9D3 }, +{ 0xB9D4, 0xB9D4, 0xB9D4 }, +{ 0xB9D5, 0xB9D5, 0xB9D5 }, +{ 0xB9D6, 0xB9D6, 0xB9D6 }, +{ 0xB9D7, 0xB9D7, 0xB9D7 }, +{ 0xB9D8, 0xB9D8, 0xB9D8 }, +{ 0xB9D9, 0xB9D9, 0xB9D9 }, +{ 0xB9DA, 0xB9DA, 0xB9DA }, +{ 0xB9DB, 0xB9DB, 0xB9DB }, +{ 0xB9DC, 0xB9DC, 0xB9DC }, +{ 0xB9DD, 0xB9DD, 0xB9DD }, +{ 0xB9DE, 0xB9DE, 0xB9DE }, +{ 0xB9DF, 0xB9DF, 0xB9DF }, +{ 0xB9E0, 0xB9E0, 0xB9E0 }, +{ 0xB9E1, 0xB9E1, 0xB9E1 }, +{ 0xB9E2, 0xB9E2, 0xB9E2 }, +{ 0xB9E3, 0xB9E3, 0xB9E3 }, +{ 0xB9E4, 0xB9E4, 0xB9E4 }, +{ 0xB9E5, 0xB9E5, 0xB9E5 }, +{ 0xB9E6, 0xB9E6, 0xB9E6 }, +{ 0xB9E7, 0xB9E7, 0xB9E7 }, +{ 0xB9E8, 0xB9E8, 0xB9E8 }, +{ 0xB9E9, 0xB9E9, 0xB9E9 }, +{ 0xB9EA, 0xB9EA, 0xB9EA }, +{ 0xB9EB, 0xB9EB, 0xB9EB }, +{ 0xB9EC, 0xB9EC, 0xB9EC }, +{ 0xB9ED, 0xB9ED, 0xB9ED }, +{ 0xB9EE, 0xB9EE, 0xB9EE }, +{ 0xB9EF, 0xB9EF, 0xB9EF }, +{ 0xB9F0, 0xB9F0, 0xB9F0 }, +{ 0xB9F1, 0xB9F1, 0xB9F1 }, +{ 0xB9F2, 0xB9F2, 0xB9F2 }, +{ 0xB9F3, 0xB9F3, 0xB9F3 }, +{ 0xB9F4, 0xB9F4, 0xB9F4 }, +{ 0xB9F5, 0xB9F5, 0xB9F5 }, +{ 0xB9F6, 0xB9F6, 0xB9F6 }, +{ 0xB9F7, 0xB9F7, 0xB9F7 }, +{ 0xB9F8, 0xB9F8, 0xB9F8 }, +{ 0xB9F9, 0xB9F9, 0xB9F9 }, +{ 0xB9FA, 0xB9FA, 0xB9FA }, +{ 0xB9FB, 0xB9FB, 0xB9FB }, +{ 0xB9FC, 0xB9FC, 0xB9FC }, +{ 0xB9FD, 0xB9FD, 0xB9FD }, +{ 0xB9FE, 0xB9FE, 0xB9FE }, +{ 0xB9FF, 0xB9FF, 0xB9FF }, +{ 0xBA00, 0xBA00, 0xBA00 }, +{ 0xBA01, 0xBA01, 0xBA01 }, +{ 0xBA02, 0xBA02, 0xBA02 }, +{ 0xBA03, 0xBA03, 0xBA03 }, +{ 0xBA04, 0xBA04, 0xBA04 }, +{ 0xBA05, 0xBA05, 0xBA05 }, +{ 0xBA06, 0xBA06, 0xBA06 }, +{ 0xBA07, 0xBA07, 0xBA07 }, +{ 0xBA08, 0xBA08, 0xBA08 }, +{ 0xBA09, 0xBA09, 0xBA09 }, +{ 0xBA0A, 0xBA0A, 0xBA0A }, +{ 0xBA0B, 0xBA0B, 0xBA0B }, +{ 0xBA0C, 0xBA0C, 0xBA0C }, +{ 0xBA0D, 0xBA0D, 0xBA0D }, +{ 0xBA0E, 0xBA0E, 0xBA0E }, +{ 0xBA0F, 0xBA0F, 0xBA0F }, +{ 0xBA10, 0xBA10, 0xBA10 }, +{ 0xBA11, 0xBA11, 0xBA11 }, +{ 0xBA12, 0xBA12, 0xBA12 }, +{ 0xBA13, 0xBA13, 0xBA13 }, +{ 0xBA14, 0xBA14, 0xBA14 }, +{ 0xBA15, 0xBA15, 0xBA15 }, +{ 0xBA16, 0xBA16, 0xBA16 }, +{ 0xBA17, 0xBA17, 0xBA17 }, +{ 0xBA18, 0xBA18, 0xBA18 }, +{ 0xBA19, 0xBA19, 0xBA19 }, +{ 0xBA1A, 0xBA1A, 0xBA1A }, +{ 0xBA1B, 0xBA1B, 0xBA1B }, +{ 0xBA1C, 0xBA1C, 0xBA1C }, +{ 0xBA1D, 0xBA1D, 0xBA1D }, +{ 0xBA1E, 0xBA1E, 0xBA1E }, +{ 0xBA1F, 0xBA1F, 0xBA1F }, +{ 0xBA20, 0xBA20, 0xBA20 }, +{ 0xBA21, 0xBA21, 0xBA21 }, +{ 0xBA22, 0xBA22, 0xBA22 }, +{ 0xBA23, 0xBA23, 0xBA23 }, +{ 0xBA24, 0xBA24, 0xBA24 }, +{ 0xBA25, 0xBA25, 0xBA25 }, +{ 0xBA26, 0xBA26, 0xBA26 }, +{ 0xBA27, 0xBA27, 0xBA27 }, +{ 0xBA28, 0xBA28, 0xBA28 }, +{ 0xBA29, 0xBA29, 0xBA29 }, +{ 0xBA2A, 0xBA2A, 0xBA2A }, +{ 0xBA2B, 0xBA2B, 0xBA2B }, +{ 0xBA2C, 0xBA2C, 0xBA2C }, +{ 0xBA2D, 0xBA2D, 0xBA2D }, +{ 0xBA2E, 0xBA2E, 0xBA2E }, +{ 0xBA2F, 0xBA2F, 0xBA2F }, +{ 0xBA30, 0xBA30, 0xBA30 }, +{ 0xBA31, 0xBA31, 0xBA31 }, +{ 0xBA32, 0xBA32, 0xBA32 }, +{ 0xBA33, 0xBA33, 0xBA33 }, +{ 0xBA34, 0xBA34, 0xBA34 }, +{ 0xBA35, 0xBA35, 0xBA35 }, +{ 0xBA36, 0xBA36, 0xBA36 }, +{ 0xBA37, 0xBA37, 0xBA37 }, +{ 0xBA38, 0xBA38, 0xBA38 }, +{ 0xBA39, 0xBA39, 0xBA39 }, +{ 0xBA3A, 0xBA3A, 0xBA3A }, +{ 0xBA3B, 0xBA3B, 0xBA3B }, +{ 0xBA3C, 0xBA3C, 0xBA3C }, +{ 0xBA3D, 0xBA3D, 0xBA3D }, +{ 0xBA3E, 0xBA3E, 0xBA3E }, +{ 0xBA3F, 0xBA3F, 0xBA3F }, +{ 0xBA40, 0xBA40, 0xBA40 }, +{ 0xBA41, 0xBA41, 0xBA41 }, +{ 0xBA42, 0xBA42, 0xBA42 }, +{ 0xBA43, 0xBA43, 0xBA43 }, +{ 0xBA44, 0xBA44, 0xBA44 }, +{ 0xBA45, 0xBA45, 0xBA45 }, +{ 0xBA46, 0xBA46, 0xBA46 }, +{ 0xBA47, 0xBA47, 0xBA47 }, +{ 0xBA48, 0xBA48, 0xBA48 }, +{ 0xBA49, 0xBA49, 0xBA49 }, +{ 0xBA4A, 0xBA4A, 0xBA4A }, +{ 0xBA4B, 0xBA4B, 0xBA4B }, +{ 0xBA4C, 0xBA4C, 0xBA4C }, +{ 0xBA4D, 0xBA4D, 0xBA4D }, +{ 0xBA4E, 0xBA4E, 0xBA4E }, +{ 0xBA4F, 0xBA4F, 0xBA4F }, +{ 0xBA50, 0xBA50, 0xBA50 }, +{ 0xBA51, 0xBA51, 0xBA51 }, +{ 0xBA52, 0xBA52, 0xBA52 }, +{ 0xBA53, 0xBA53, 0xBA53 }, +{ 0xBA54, 0xBA54, 0xBA54 }, +{ 0xBA55, 0xBA55, 0xBA55 }, +{ 0xBA56, 0xBA56, 0xBA56 }, +{ 0xBA57, 0xBA57, 0xBA57 }, +{ 0xBA58, 0xBA58, 0xBA58 }, +{ 0xBA59, 0xBA59, 0xBA59 }, +{ 0xBA5A, 0xBA5A, 0xBA5A }, +{ 0xBA5B, 0xBA5B, 0xBA5B }, +{ 0xBA5C, 0xBA5C, 0xBA5C }, +{ 0xBA5D, 0xBA5D, 0xBA5D }, +{ 0xBA5E, 0xBA5E, 0xBA5E }, +{ 0xBA5F, 0xBA5F, 0xBA5F }, +{ 0xBA60, 0xBA60, 0xBA60 }, +{ 0xBA61, 0xBA61, 0xBA61 }, +{ 0xBA62, 0xBA62, 0xBA62 }, +{ 0xBA63, 0xBA63, 0xBA63 }, +{ 0xBA64, 0xBA64, 0xBA64 }, +{ 0xBA65, 0xBA65, 0xBA65 }, +{ 0xBA66, 0xBA66, 0xBA66 }, +{ 0xBA67, 0xBA67, 0xBA67 }, +{ 0xBA68, 0xBA68, 0xBA68 }, +{ 0xBA69, 0xBA69, 0xBA69 }, +{ 0xBA6A, 0xBA6A, 0xBA6A }, +{ 0xBA6B, 0xBA6B, 0xBA6B }, +{ 0xBA6C, 0xBA6C, 0xBA6C }, +{ 0xBA6D, 0xBA6D, 0xBA6D }, +{ 0xBA6E, 0xBA6E, 0xBA6E }, +{ 0xBA6F, 0xBA6F, 0xBA6F }, +{ 0xBA70, 0xBA70, 0xBA70 }, +{ 0xBA71, 0xBA71, 0xBA71 }, +{ 0xBA72, 0xBA72, 0xBA72 }, +{ 0xBA73, 0xBA73, 0xBA73 }, +{ 0xBA74, 0xBA74, 0xBA74 }, +{ 0xBA75, 0xBA75, 0xBA75 }, +{ 0xBA76, 0xBA76, 0xBA76 }, +{ 0xBA77, 0xBA77, 0xBA77 }, +{ 0xBA78, 0xBA78, 0xBA78 }, +{ 0xBA79, 0xBA79, 0xBA79 }, +{ 0xBA7A, 0xBA7A, 0xBA7A }, +{ 0xBA7B, 0xBA7B, 0xBA7B }, +{ 0xBA7C, 0xBA7C, 0xBA7C }, +{ 0xBA7D, 0xBA7D, 0xBA7D }, +{ 0xBA7E, 0xBA7E, 0xBA7E }, +{ 0xBA7F, 0xBA7F, 0xBA7F }, +{ 0xBA80, 0xBA80, 0xBA80 }, +{ 0xBA81, 0xBA81, 0xBA81 }, +{ 0xBA82, 0xBA82, 0xBA82 }, +{ 0xBA83, 0xBA83, 0xBA83 }, +{ 0xBA84, 0xBA84, 0xBA84 }, +{ 0xBA85, 0xBA85, 0xBA85 }, +{ 0xBA86, 0xBA86, 0xBA86 }, +{ 0xBA87, 0xBA87, 0xBA87 }, +{ 0xBA88, 0xBA88, 0xBA88 }, +{ 0xBA89, 0xBA89, 0xBA89 }, +{ 0xBA8A, 0xBA8A, 0xBA8A }, +{ 0xBA8B, 0xBA8B, 0xBA8B }, +{ 0xBA8C, 0xBA8C, 0xBA8C }, +{ 0xBA8D, 0xBA8D, 0xBA8D }, +{ 0xBA8E, 0xBA8E, 0xBA8E }, +{ 0xBA8F, 0xBA8F, 0xBA8F }, +{ 0xBA90, 0xBA90, 0xBA90 }, +{ 0xBA91, 0xBA91, 0xBA91 }, +{ 0xBA92, 0xBA92, 0xBA92 }, +{ 0xBA93, 0xBA93, 0xBA93 }, +{ 0xBA94, 0xBA94, 0xBA94 }, +{ 0xBA95, 0xBA95, 0xBA95 }, +{ 0xBA96, 0xBA96, 0xBA96 }, +{ 0xBA97, 0xBA97, 0xBA97 }, +{ 0xBA98, 0xBA98, 0xBA98 }, +{ 0xBA99, 0xBA99, 0xBA99 }, +{ 0xBA9A, 0xBA9A, 0xBA9A }, +{ 0xBA9B, 0xBA9B, 0xBA9B }, +{ 0xBA9C, 0xBA9C, 0xBA9C }, +{ 0xBA9D, 0xBA9D, 0xBA9D }, +{ 0xBA9E, 0xBA9E, 0xBA9E }, +{ 0xBA9F, 0xBA9F, 0xBA9F }, +{ 0xBAA0, 0xBAA0, 0xBAA0 }, +{ 0xBAA1, 0xBAA1, 0xBAA1 }, +{ 0xBAA2, 0xBAA2, 0xBAA2 }, +{ 0xBAA3, 0xBAA3, 0xBAA3 }, +{ 0xBAA4, 0xBAA4, 0xBAA4 }, +{ 0xBAA5, 0xBAA5, 0xBAA5 }, +{ 0xBAA6, 0xBAA6, 0xBAA6 }, +{ 0xBAA7, 0xBAA7, 0xBAA7 }, +{ 0xBAA8, 0xBAA8, 0xBAA8 }, +{ 0xBAA9, 0xBAA9, 0xBAA9 }, +{ 0xBAAA, 0xBAAA, 0xBAAA }, +{ 0xBAAB, 0xBAAB, 0xBAAB }, +{ 0xBAAC, 0xBAAC, 0xBAAC }, +{ 0xBAAD, 0xBAAD, 0xBAAD }, +{ 0xBAAE, 0xBAAE, 0xBAAE }, +{ 0xBAAF, 0xBAAF, 0xBAAF }, +{ 0xBAB0, 0xBAB0, 0xBAB0 }, +{ 0xBAB1, 0xBAB1, 0xBAB1 }, +{ 0xBAB2, 0xBAB2, 0xBAB2 }, +{ 0xBAB3, 0xBAB3, 0xBAB3 }, +{ 0xBAB4, 0xBAB4, 0xBAB4 }, +{ 0xBAB5, 0xBAB5, 0xBAB5 }, +{ 0xBAB6, 0xBAB6, 0xBAB6 }, +{ 0xBAB7, 0xBAB7, 0xBAB7 }, +{ 0xBAB8, 0xBAB8, 0xBAB8 }, +{ 0xBAB9, 0xBAB9, 0xBAB9 }, +{ 0xBABA, 0xBABA, 0xBABA }, +{ 0xBABB, 0xBABB, 0xBABB }, +{ 0xBABC, 0xBABC, 0xBABC }, +{ 0xBABD, 0xBABD, 0xBABD }, +{ 0xBABE, 0xBABE, 0xBABE }, +{ 0xBABF, 0xBABF, 0xBABF }, +{ 0xBAC0, 0xBAC0, 0xBAC0 }, +{ 0xBAC1, 0xBAC1, 0xBAC1 }, +{ 0xBAC2, 0xBAC2, 0xBAC2 }, +{ 0xBAC3, 0xBAC3, 0xBAC3 }, +{ 0xBAC4, 0xBAC4, 0xBAC4 }, +{ 0xBAC5, 0xBAC5, 0xBAC5 }, +{ 0xBAC6, 0xBAC6, 0xBAC6 }, +{ 0xBAC7, 0xBAC7, 0xBAC7 }, +{ 0xBAC8, 0xBAC8, 0xBAC8 }, +{ 0xBAC9, 0xBAC9, 0xBAC9 }, +{ 0xBACA, 0xBACA, 0xBACA }, +{ 0xBACB, 0xBACB, 0xBACB }, +{ 0xBACC, 0xBACC, 0xBACC }, +{ 0xBACD, 0xBACD, 0xBACD }, +{ 0xBACE, 0xBACE, 0xBACE }, +{ 0xBACF, 0xBACF, 0xBACF }, +{ 0xBAD0, 0xBAD0, 0xBAD0 }, +{ 0xBAD1, 0xBAD1, 0xBAD1 }, +{ 0xBAD2, 0xBAD2, 0xBAD2 }, +{ 0xBAD3, 0xBAD3, 0xBAD3 }, +{ 0xBAD4, 0xBAD4, 0xBAD4 }, +{ 0xBAD5, 0xBAD5, 0xBAD5 }, +{ 0xBAD6, 0xBAD6, 0xBAD6 }, +{ 0xBAD7, 0xBAD7, 0xBAD7 }, +{ 0xBAD8, 0xBAD8, 0xBAD8 }, +{ 0xBAD9, 0xBAD9, 0xBAD9 }, +{ 0xBADA, 0xBADA, 0xBADA }, +{ 0xBADB, 0xBADB, 0xBADB }, +{ 0xBADC, 0xBADC, 0xBADC }, +{ 0xBADD, 0xBADD, 0xBADD }, +{ 0xBADE, 0xBADE, 0xBADE }, +{ 0xBADF, 0xBADF, 0xBADF }, +{ 0xBAE0, 0xBAE0, 0xBAE0 }, +{ 0xBAE1, 0xBAE1, 0xBAE1 }, +{ 0xBAE2, 0xBAE2, 0xBAE2 }, +{ 0xBAE3, 0xBAE3, 0xBAE3 }, +{ 0xBAE4, 0xBAE4, 0xBAE4 }, +{ 0xBAE5, 0xBAE5, 0xBAE5 }, +{ 0xBAE6, 0xBAE6, 0xBAE6 }, +{ 0xBAE7, 0xBAE7, 0xBAE7 }, +{ 0xBAE8, 0xBAE8, 0xBAE8 }, +{ 0xBAE9, 0xBAE9, 0xBAE9 }, +{ 0xBAEA, 0xBAEA, 0xBAEA }, +{ 0xBAEB, 0xBAEB, 0xBAEB }, +{ 0xBAEC, 0xBAEC, 0xBAEC }, +{ 0xBAED, 0xBAED, 0xBAED }, +{ 0xBAEE, 0xBAEE, 0xBAEE }, +{ 0xBAEF, 0xBAEF, 0xBAEF }, +{ 0xBAF0, 0xBAF0, 0xBAF0 }, +{ 0xBAF1, 0xBAF1, 0xBAF1 }, +{ 0xBAF2, 0xBAF2, 0xBAF2 }, +{ 0xBAF3, 0xBAF3, 0xBAF3 }, +{ 0xBAF4, 0xBAF4, 0xBAF4 }, +{ 0xBAF5, 0xBAF5, 0xBAF5 }, +{ 0xBAF6, 0xBAF6, 0xBAF6 }, +{ 0xBAF7, 0xBAF7, 0xBAF7 }, +{ 0xBAF8, 0xBAF8, 0xBAF8 }, +{ 0xBAF9, 0xBAF9, 0xBAF9 }, +{ 0xBAFA, 0xBAFA, 0xBAFA }, +{ 0xBAFB, 0xBAFB, 0xBAFB }, +{ 0xBAFC, 0xBAFC, 0xBAFC }, +{ 0xBAFD, 0xBAFD, 0xBAFD }, +{ 0xBAFE, 0xBAFE, 0xBAFE }, +{ 0xBAFF, 0xBAFF, 0xBAFF }, +{ 0xBB00, 0xBB00, 0xBB00 }, +{ 0xBB01, 0xBB01, 0xBB01 }, +{ 0xBB02, 0xBB02, 0xBB02 }, +{ 0xBB03, 0xBB03, 0xBB03 }, +{ 0xBB04, 0xBB04, 0xBB04 }, +{ 0xBB05, 0xBB05, 0xBB05 }, +{ 0xBB06, 0xBB06, 0xBB06 }, +{ 0xBB07, 0xBB07, 0xBB07 }, +{ 0xBB08, 0xBB08, 0xBB08 }, +{ 0xBB09, 0xBB09, 0xBB09 }, +{ 0xBB0A, 0xBB0A, 0xBB0A }, +{ 0xBB0B, 0xBB0B, 0xBB0B }, +{ 0xBB0C, 0xBB0C, 0xBB0C }, +{ 0xBB0D, 0xBB0D, 0xBB0D }, +{ 0xBB0E, 0xBB0E, 0xBB0E }, +{ 0xBB0F, 0xBB0F, 0xBB0F }, +{ 0xBB10, 0xBB10, 0xBB10 }, +{ 0xBB11, 0xBB11, 0xBB11 }, +{ 0xBB12, 0xBB12, 0xBB12 }, +{ 0xBB13, 0xBB13, 0xBB13 }, +{ 0xBB14, 0xBB14, 0xBB14 }, +{ 0xBB15, 0xBB15, 0xBB15 }, +{ 0xBB16, 0xBB16, 0xBB16 }, +{ 0xBB17, 0xBB17, 0xBB17 }, +{ 0xBB18, 0xBB18, 0xBB18 }, +{ 0xBB19, 0xBB19, 0xBB19 }, +{ 0xBB1A, 0xBB1A, 0xBB1A }, +{ 0xBB1B, 0xBB1B, 0xBB1B }, +{ 0xBB1C, 0xBB1C, 0xBB1C }, +{ 0xBB1D, 0xBB1D, 0xBB1D }, +{ 0xBB1E, 0xBB1E, 0xBB1E }, +{ 0xBB1F, 0xBB1F, 0xBB1F }, +{ 0xBB20, 0xBB20, 0xBB20 }, +{ 0xBB21, 0xBB21, 0xBB21 }, +{ 0xBB22, 0xBB22, 0xBB22 }, +{ 0xBB23, 0xBB23, 0xBB23 }, +{ 0xBB24, 0xBB24, 0xBB24 }, +{ 0xBB25, 0xBB25, 0xBB25 }, +{ 0xBB26, 0xBB26, 0xBB26 }, +{ 0xBB27, 0xBB27, 0xBB27 }, +{ 0xBB28, 0xBB28, 0xBB28 }, +{ 0xBB29, 0xBB29, 0xBB29 }, +{ 0xBB2A, 0xBB2A, 0xBB2A }, +{ 0xBB2B, 0xBB2B, 0xBB2B }, +{ 0xBB2C, 0xBB2C, 0xBB2C }, +{ 0xBB2D, 0xBB2D, 0xBB2D }, +{ 0xBB2E, 0xBB2E, 0xBB2E }, +{ 0xBB2F, 0xBB2F, 0xBB2F }, +{ 0xBB30, 0xBB30, 0xBB30 }, +{ 0xBB31, 0xBB31, 0xBB31 }, +{ 0xBB32, 0xBB32, 0xBB32 }, +{ 0xBB33, 0xBB33, 0xBB33 }, +{ 0xBB34, 0xBB34, 0xBB34 }, +{ 0xBB35, 0xBB35, 0xBB35 }, +{ 0xBB36, 0xBB36, 0xBB36 }, +{ 0xBB37, 0xBB37, 0xBB37 }, +{ 0xBB38, 0xBB38, 0xBB38 }, +{ 0xBB39, 0xBB39, 0xBB39 }, +{ 0xBB3A, 0xBB3A, 0xBB3A }, +{ 0xBB3B, 0xBB3B, 0xBB3B }, +{ 0xBB3C, 0xBB3C, 0xBB3C }, +{ 0xBB3D, 0xBB3D, 0xBB3D }, +{ 0xBB3E, 0xBB3E, 0xBB3E }, +{ 0xBB3F, 0xBB3F, 0xBB3F }, +{ 0xBB40, 0xBB40, 0xBB40 }, +{ 0xBB41, 0xBB41, 0xBB41 }, +{ 0xBB42, 0xBB42, 0xBB42 }, +{ 0xBB43, 0xBB43, 0xBB43 }, +{ 0xBB44, 0xBB44, 0xBB44 }, +{ 0xBB45, 0xBB45, 0xBB45 }, +{ 0xBB46, 0xBB46, 0xBB46 }, +{ 0xBB47, 0xBB47, 0xBB47 }, +{ 0xBB48, 0xBB48, 0xBB48 }, +{ 0xBB49, 0xBB49, 0xBB49 }, +{ 0xBB4A, 0xBB4A, 0xBB4A }, +{ 0xBB4B, 0xBB4B, 0xBB4B }, +{ 0xBB4C, 0xBB4C, 0xBB4C }, +{ 0xBB4D, 0xBB4D, 0xBB4D }, +{ 0xBB4E, 0xBB4E, 0xBB4E }, +{ 0xBB4F, 0xBB4F, 0xBB4F }, +{ 0xBB50, 0xBB50, 0xBB50 }, +{ 0xBB51, 0xBB51, 0xBB51 }, +{ 0xBB52, 0xBB52, 0xBB52 }, +{ 0xBB53, 0xBB53, 0xBB53 }, +{ 0xBB54, 0xBB54, 0xBB54 }, +{ 0xBB55, 0xBB55, 0xBB55 }, +{ 0xBB56, 0xBB56, 0xBB56 }, +{ 0xBB57, 0xBB57, 0xBB57 }, +{ 0xBB58, 0xBB58, 0xBB58 }, +{ 0xBB59, 0xBB59, 0xBB59 }, +{ 0xBB5A, 0xBB5A, 0xBB5A }, +{ 0xBB5B, 0xBB5B, 0xBB5B }, +{ 0xBB5C, 0xBB5C, 0xBB5C }, +{ 0xBB5D, 0xBB5D, 0xBB5D }, +{ 0xBB5E, 0xBB5E, 0xBB5E }, +{ 0xBB5F, 0xBB5F, 0xBB5F }, +{ 0xBB60, 0xBB60, 0xBB60 }, +{ 0xBB61, 0xBB61, 0xBB61 }, +{ 0xBB62, 0xBB62, 0xBB62 }, +{ 0xBB63, 0xBB63, 0xBB63 }, +{ 0xBB64, 0xBB64, 0xBB64 }, +{ 0xBB65, 0xBB65, 0xBB65 }, +{ 0xBB66, 0xBB66, 0xBB66 }, +{ 0xBB67, 0xBB67, 0xBB67 }, +{ 0xBB68, 0xBB68, 0xBB68 }, +{ 0xBB69, 0xBB69, 0xBB69 }, +{ 0xBB6A, 0xBB6A, 0xBB6A }, +{ 0xBB6B, 0xBB6B, 0xBB6B }, +{ 0xBB6C, 0xBB6C, 0xBB6C }, +{ 0xBB6D, 0xBB6D, 0xBB6D }, +{ 0xBB6E, 0xBB6E, 0xBB6E }, +{ 0xBB6F, 0xBB6F, 0xBB6F }, +{ 0xBB70, 0xBB70, 0xBB70 }, +{ 0xBB71, 0xBB71, 0xBB71 }, +{ 0xBB72, 0xBB72, 0xBB72 }, +{ 0xBB73, 0xBB73, 0xBB73 }, +{ 0xBB74, 0xBB74, 0xBB74 }, +{ 0xBB75, 0xBB75, 0xBB75 }, +{ 0xBB76, 0xBB76, 0xBB76 }, +{ 0xBB77, 0xBB77, 0xBB77 }, +{ 0xBB78, 0xBB78, 0xBB78 }, +{ 0xBB79, 0xBB79, 0xBB79 }, +{ 0xBB7A, 0xBB7A, 0xBB7A }, +{ 0xBB7B, 0xBB7B, 0xBB7B }, +{ 0xBB7C, 0xBB7C, 0xBB7C }, +{ 0xBB7D, 0xBB7D, 0xBB7D }, +{ 0xBB7E, 0xBB7E, 0xBB7E }, +{ 0xBB7F, 0xBB7F, 0xBB7F }, +{ 0xBB80, 0xBB80, 0xBB80 }, +{ 0xBB81, 0xBB81, 0xBB81 }, +{ 0xBB82, 0xBB82, 0xBB82 }, +{ 0xBB83, 0xBB83, 0xBB83 }, +{ 0xBB84, 0xBB84, 0xBB84 }, +{ 0xBB85, 0xBB85, 0xBB85 }, +{ 0xBB86, 0xBB86, 0xBB86 }, +{ 0xBB87, 0xBB87, 0xBB87 }, +{ 0xBB88, 0xBB88, 0xBB88 }, +{ 0xBB89, 0xBB89, 0xBB89 }, +{ 0xBB8A, 0xBB8A, 0xBB8A }, +{ 0xBB8B, 0xBB8B, 0xBB8B }, +{ 0xBB8C, 0xBB8C, 0xBB8C }, +{ 0xBB8D, 0xBB8D, 0xBB8D }, +{ 0xBB8E, 0xBB8E, 0xBB8E }, +{ 0xBB8F, 0xBB8F, 0xBB8F }, +{ 0xBB90, 0xBB90, 0xBB90 }, +{ 0xBB91, 0xBB91, 0xBB91 }, +{ 0xBB92, 0xBB92, 0xBB92 }, +{ 0xBB93, 0xBB93, 0xBB93 }, +{ 0xBB94, 0xBB94, 0xBB94 }, +{ 0xBB95, 0xBB95, 0xBB95 }, +{ 0xBB96, 0xBB96, 0xBB96 }, +{ 0xBB97, 0xBB97, 0xBB97 }, +{ 0xBB98, 0xBB98, 0xBB98 }, +{ 0xBB99, 0xBB99, 0xBB99 }, +{ 0xBB9A, 0xBB9A, 0xBB9A }, +{ 0xBB9B, 0xBB9B, 0xBB9B }, +{ 0xBB9C, 0xBB9C, 0xBB9C }, +{ 0xBB9D, 0xBB9D, 0xBB9D }, +{ 0xBB9E, 0xBB9E, 0xBB9E }, +{ 0xBB9F, 0xBB9F, 0xBB9F }, +{ 0xBBA0, 0xBBA0, 0xBBA0 }, +{ 0xBBA1, 0xBBA1, 0xBBA1 }, +{ 0xBBA2, 0xBBA2, 0xBBA2 }, +{ 0xBBA3, 0xBBA3, 0xBBA3 }, +{ 0xBBA4, 0xBBA4, 0xBBA4 }, +{ 0xBBA5, 0xBBA5, 0xBBA5 }, +{ 0xBBA6, 0xBBA6, 0xBBA6 }, +{ 0xBBA7, 0xBBA7, 0xBBA7 }, +{ 0xBBA8, 0xBBA8, 0xBBA8 }, +{ 0xBBA9, 0xBBA9, 0xBBA9 }, +{ 0xBBAA, 0xBBAA, 0xBBAA }, +{ 0xBBAB, 0xBBAB, 0xBBAB }, +{ 0xBBAC, 0xBBAC, 0xBBAC }, +{ 0xBBAD, 0xBBAD, 0xBBAD }, +{ 0xBBAE, 0xBBAE, 0xBBAE }, +{ 0xBBAF, 0xBBAF, 0xBBAF }, +{ 0xBBB0, 0xBBB0, 0xBBB0 }, +{ 0xBBB1, 0xBBB1, 0xBBB1 }, +{ 0xBBB2, 0xBBB2, 0xBBB2 }, +{ 0xBBB3, 0xBBB3, 0xBBB3 }, +{ 0xBBB4, 0xBBB4, 0xBBB4 }, +{ 0xBBB5, 0xBBB5, 0xBBB5 }, +{ 0xBBB6, 0xBBB6, 0xBBB6 }, +{ 0xBBB7, 0xBBB7, 0xBBB7 }, +{ 0xBBB8, 0xBBB8, 0xBBB8 }, +{ 0xBBB9, 0xBBB9, 0xBBB9 }, +{ 0xBBBA, 0xBBBA, 0xBBBA }, +{ 0xBBBB, 0xBBBB, 0xBBBB }, +{ 0xBBBC, 0xBBBC, 0xBBBC }, +{ 0xBBBD, 0xBBBD, 0xBBBD }, +{ 0xBBBE, 0xBBBE, 0xBBBE }, +{ 0xBBBF, 0xBBBF, 0xBBBF }, +{ 0xBBC0, 0xBBC0, 0xBBC0 }, +{ 0xBBC1, 0xBBC1, 0xBBC1 }, +{ 0xBBC2, 0xBBC2, 0xBBC2 }, +{ 0xBBC3, 0xBBC3, 0xBBC3 }, +{ 0xBBC4, 0xBBC4, 0xBBC4 }, +{ 0xBBC5, 0xBBC5, 0xBBC5 }, +{ 0xBBC6, 0xBBC6, 0xBBC6 }, +{ 0xBBC7, 0xBBC7, 0xBBC7 }, +{ 0xBBC8, 0xBBC8, 0xBBC8 }, +{ 0xBBC9, 0xBBC9, 0xBBC9 }, +{ 0xBBCA, 0xBBCA, 0xBBCA }, +{ 0xBBCB, 0xBBCB, 0xBBCB }, +{ 0xBBCC, 0xBBCC, 0xBBCC }, +{ 0xBBCD, 0xBBCD, 0xBBCD }, +{ 0xBBCE, 0xBBCE, 0xBBCE }, +{ 0xBBCF, 0xBBCF, 0xBBCF }, +{ 0xBBD0, 0xBBD0, 0xBBD0 }, +{ 0xBBD1, 0xBBD1, 0xBBD1 }, +{ 0xBBD2, 0xBBD2, 0xBBD2 }, +{ 0xBBD3, 0xBBD3, 0xBBD3 }, +{ 0xBBD4, 0xBBD4, 0xBBD4 }, +{ 0xBBD5, 0xBBD5, 0xBBD5 }, +{ 0xBBD6, 0xBBD6, 0xBBD6 }, +{ 0xBBD7, 0xBBD7, 0xBBD7 }, +{ 0xBBD8, 0xBBD8, 0xBBD8 }, +{ 0xBBD9, 0xBBD9, 0xBBD9 }, +{ 0xBBDA, 0xBBDA, 0xBBDA }, +{ 0xBBDB, 0xBBDB, 0xBBDB }, +{ 0xBBDC, 0xBBDC, 0xBBDC }, +{ 0xBBDD, 0xBBDD, 0xBBDD }, +{ 0xBBDE, 0xBBDE, 0xBBDE }, +{ 0xBBDF, 0xBBDF, 0xBBDF }, +{ 0xBBE0, 0xBBE0, 0xBBE0 }, +{ 0xBBE1, 0xBBE1, 0xBBE1 }, +{ 0xBBE2, 0xBBE2, 0xBBE2 }, +{ 0xBBE3, 0xBBE3, 0xBBE3 }, +{ 0xBBE4, 0xBBE4, 0xBBE4 }, +{ 0xBBE5, 0xBBE5, 0xBBE5 }, +{ 0xBBE6, 0xBBE6, 0xBBE6 }, +{ 0xBBE7, 0xBBE7, 0xBBE7 }, +{ 0xBBE8, 0xBBE8, 0xBBE8 }, +{ 0xBBE9, 0xBBE9, 0xBBE9 }, +{ 0xBBEA, 0xBBEA, 0xBBEA }, +{ 0xBBEB, 0xBBEB, 0xBBEB }, +{ 0xBBEC, 0xBBEC, 0xBBEC }, +{ 0xBBED, 0xBBED, 0xBBED }, +{ 0xBBEE, 0xBBEE, 0xBBEE }, +{ 0xBBEF, 0xBBEF, 0xBBEF }, +{ 0xBBF0, 0xBBF0, 0xBBF0 }, +{ 0xBBF1, 0xBBF1, 0xBBF1 }, +{ 0xBBF2, 0xBBF2, 0xBBF2 }, +{ 0xBBF3, 0xBBF3, 0xBBF3 }, +{ 0xBBF4, 0xBBF4, 0xBBF4 }, +{ 0xBBF5, 0xBBF5, 0xBBF5 }, +{ 0xBBF6, 0xBBF6, 0xBBF6 }, +{ 0xBBF7, 0xBBF7, 0xBBF7 }, +{ 0xBBF8, 0xBBF8, 0xBBF8 }, +{ 0xBBF9, 0xBBF9, 0xBBF9 }, +{ 0xBBFA, 0xBBFA, 0xBBFA }, +{ 0xBBFB, 0xBBFB, 0xBBFB }, +{ 0xBBFC, 0xBBFC, 0xBBFC }, +{ 0xBBFD, 0xBBFD, 0xBBFD }, +{ 0xBBFE, 0xBBFE, 0xBBFE }, +{ 0xBBFF, 0xBBFF, 0xBBFF }, +{ 0xBC00, 0xBC00, 0xBC00 }, +{ 0xBC01, 0xBC01, 0xBC01 }, +{ 0xBC02, 0xBC02, 0xBC02 }, +{ 0xBC03, 0xBC03, 0xBC03 }, +{ 0xBC04, 0xBC04, 0xBC04 }, +{ 0xBC05, 0xBC05, 0xBC05 }, +{ 0xBC06, 0xBC06, 0xBC06 }, +{ 0xBC07, 0xBC07, 0xBC07 }, +{ 0xBC08, 0xBC08, 0xBC08 }, +{ 0xBC09, 0xBC09, 0xBC09 }, +{ 0xBC0A, 0xBC0A, 0xBC0A }, +{ 0xBC0B, 0xBC0B, 0xBC0B }, +{ 0xBC0C, 0xBC0C, 0xBC0C }, +{ 0xBC0D, 0xBC0D, 0xBC0D }, +{ 0xBC0E, 0xBC0E, 0xBC0E }, +{ 0xBC0F, 0xBC0F, 0xBC0F }, +{ 0xBC10, 0xBC10, 0xBC10 }, +{ 0xBC11, 0xBC11, 0xBC11 }, +{ 0xBC12, 0xBC12, 0xBC12 }, +{ 0xBC13, 0xBC13, 0xBC13 }, +{ 0xBC14, 0xBC14, 0xBC14 }, +{ 0xBC15, 0xBC15, 0xBC15 }, +{ 0xBC16, 0xBC16, 0xBC16 }, +{ 0xBC17, 0xBC17, 0xBC17 }, +{ 0xBC18, 0xBC18, 0xBC18 }, +{ 0xBC19, 0xBC19, 0xBC19 }, +{ 0xBC1A, 0xBC1A, 0xBC1A }, +{ 0xBC1B, 0xBC1B, 0xBC1B }, +{ 0xBC1C, 0xBC1C, 0xBC1C }, +{ 0xBC1D, 0xBC1D, 0xBC1D }, +{ 0xBC1E, 0xBC1E, 0xBC1E }, +{ 0xBC1F, 0xBC1F, 0xBC1F }, +{ 0xBC20, 0xBC20, 0xBC20 }, +{ 0xBC21, 0xBC21, 0xBC21 }, +{ 0xBC22, 0xBC22, 0xBC22 }, +{ 0xBC23, 0xBC23, 0xBC23 }, +{ 0xBC24, 0xBC24, 0xBC24 }, +{ 0xBC25, 0xBC25, 0xBC25 }, +{ 0xBC26, 0xBC26, 0xBC26 }, +{ 0xBC27, 0xBC27, 0xBC27 }, +{ 0xBC28, 0xBC28, 0xBC28 }, +{ 0xBC29, 0xBC29, 0xBC29 }, +{ 0xBC2A, 0xBC2A, 0xBC2A }, +{ 0xBC2B, 0xBC2B, 0xBC2B }, +{ 0xBC2C, 0xBC2C, 0xBC2C }, +{ 0xBC2D, 0xBC2D, 0xBC2D }, +{ 0xBC2E, 0xBC2E, 0xBC2E }, +{ 0xBC2F, 0xBC2F, 0xBC2F }, +{ 0xBC30, 0xBC30, 0xBC30 }, +{ 0xBC31, 0xBC31, 0xBC31 }, +{ 0xBC32, 0xBC32, 0xBC32 }, +{ 0xBC33, 0xBC33, 0xBC33 }, +{ 0xBC34, 0xBC34, 0xBC34 }, +{ 0xBC35, 0xBC35, 0xBC35 }, +{ 0xBC36, 0xBC36, 0xBC36 }, +{ 0xBC37, 0xBC37, 0xBC37 }, +{ 0xBC38, 0xBC38, 0xBC38 }, +{ 0xBC39, 0xBC39, 0xBC39 }, +{ 0xBC3A, 0xBC3A, 0xBC3A }, +{ 0xBC3B, 0xBC3B, 0xBC3B }, +{ 0xBC3C, 0xBC3C, 0xBC3C }, +{ 0xBC3D, 0xBC3D, 0xBC3D }, +{ 0xBC3E, 0xBC3E, 0xBC3E }, +{ 0xBC3F, 0xBC3F, 0xBC3F }, +{ 0xBC40, 0xBC40, 0xBC40 }, +{ 0xBC41, 0xBC41, 0xBC41 }, +{ 0xBC42, 0xBC42, 0xBC42 }, +{ 0xBC43, 0xBC43, 0xBC43 }, +{ 0xBC44, 0xBC44, 0xBC44 }, +{ 0xBC45, 0xBC45, 0xBC45 }, +{ 0xBC46, 0xBC46, 0xBC46 }, +{ 0xBC47, 0xBC47, 0xBC47 }, +{ 0xBC48, 0xBC48, 0xBC48 }, +{ 0xBC49, 0xBC49, 0xBC49 }, +{ 0xBC4A, 0xBC4A, 0xBC4A }, +{ 0xBC4B, 0xBC4B, 0xBC4B }, +{ 0xBC4C, 0xBC4C, 0xBC4C }, +{ 0xBC4D, 0xBC4D, 0xBC4D }, +{ 0xBC4E, 0xBC4E, 0xBC4E }, +{ 0xBC4F, 0xBC4F, 0xBC4F }, +{ 0xBC50, 0xBC50, 0xBC50 }, +{ 0xBC51, 0xBC51, 0xBC51 }, +{ 0xBC52, 0xBC52, 0xBC52 }, +{ 0xBC53, 0xBC53, 0xBC53 }, +{ 0xBC54, 0xBC54, 0xBC54 }, +{ 0xBC55, 0xBC55, 0xBC55 }, +{ 0xBC56, 0xBC56, 0xBC56 }, +{ 0xBC57, 0xBC57, 0xBC57 }, +{ 0xBC58, 0xBC58, 0xBC58 }, +{ 0xBC59, 0xBC59, 0xBC59 }, +{ 0xBC5A, 0xBC5A, 0xBC5A }, +{ 0xBC5B, 0xBC5B, 0xBC5B }, +{ 0xBC5C, 0xBC5C, 0xBC5C }, +{ 0xBC5D, 0xBC5D, 0xBC5D }, +{ 0xBC5E, 0xBC5E, 0xBC5E }, +{ 0xBC5F, 0xBC5F, 0xBC5F }, +{ 0xBC60, 0xBC60, 0xBC60 }, +{ 0xBC61, 0xBC61, 0xBC61 }, +{ 0xBC62, 0xBC62, 0xBC62 }, +{ 0xBC63, 0xBC63, 0xBC63 }, +{ 0xBC64, 0xBC64, 0xBC64 }, +{ 0xBC65, 0xBC65, 0xBC65 }, +{ 0xBC66, 0xBC66, 0xBC66 }, +{ 0xBC67, 0xBC67, 0xBC67 }, +{ 0xBC68, 0xBC68, 0xBC68 }, +{ 0xBC69, 0xBC69, 0xBC69 }, +{ 0xBC6A, 0xBC6A, 0xBC6A }, +{ 0xBC6B, 0xBC6B, 0xBC6B }, +{ 0xBC6C, 0xBC6C, 0xBC6C }, +{ 0xBC6D, 0xBC6D, 0xBC6D }, +{ 0xBC6E, 0xBC6E, 0xBC6E }, +{ 0xBC6F, 0xBC6F, 0xBC6F }, +{ 0xBC70, 0xBC70, 0xBC70 }, +{ 0xBC71, 0xBC71, 0xBC71 }, +{ 0xBC72, 0xBC72, 0xBC72 }, +{ 0xBC73, 0xBC73, 0xBC73 }, +{ 0xBC74, 0xBC74, 0xBC74 }, +{ 0xBC75, 0xBC75, 0xBC75 }, +{ 0xBC76, 0xBC76, 0xBC76 }, +{ 0xBC77, 0xBC77, 0xBC77 }, +{ 0xBC78, 0xBC78, 0xBC78 }, +{ 0xBC79, 0xBC79, 0xBC79 }, +{ 0xBC7A, 0xBC7A, 0xBC7A }, +{ 0xBC7B, 0xBC7B, 0xBC7B }, +{ 0xBC7C, 0xBC7C, 0xBC7C }, +{ 0xBC7D, 0xBC7D, 0xBC7D }, +{ 0xBC7E, 0xBC7E, 0xBC7E }, +{ 0xBC7F, 0xBC7F, 0xBC7F }, +{ 0xBC80, 0xBC80, 0xBC80 }, +{ 0xBC81, 0xBC81, 0xBC81 }, +{ 0xBC82, 0xBC82, 0xBC82 }, +{ 0xBC83, 0xBC83, 0xBC83 }, +{ 0xBC84, 0xBC84, 0xBC84 }, +{ 0xBC85, 0xBC85, 0xBC85 }, +{ 0xBC86, 0xBC86, 0xBC86 }, +{ 0xBC87, 0xBC87, 0xBC87 }, +{ 0xBC88, 0xBC88, 0xBC88 }, +{ 0xBC89, 0xBC89, 0xBC89 }, +{ 0xBC8A, 0xBC8A, 0xBC8A }, +{ 0xBC8B, 0xBC8B, 0xBC8B }, +{ 0xBC8C, 0xBC8C, 0xBC8C }, +{ 0xBC8D, 0xBC8D, 0xBC8D }, +{ 0xBC8E, 0xBC8E, 0xBC8E }, +{ 0xBC8F, 0xBC8F, 0xBC8F }, +{ 0xBC90, 0xBC90, 0xBC90 }, +{ 0xBC91, 0xBC91, 0xBC91 }, +{ 0xBC92, 0xBC92, 0xBC92 }, +{ 0xBC93, 0xBC93, 0xBC93 }, +{ 0xBC94, 0xBC94, 0xBC94 }, +{ 0xBC95, 0xBC95, 0xBC95 }, +{ 0xBC96, 0xBC96, 0xBC96 }, +{ 0xBC97, 0xBC97, 0xBC97 }, +{ 0xBC98, 0xBC98, 0xBC98 }, +{ 0xBC99, 0xBC99, 0xBC99 }, +{ 0xBC9A, 0xBC9A, 0xBC9A }, +{ 0xBC9B, 0xBC9B, 0xBC9B }, +{ 0xBC9C, 0xBC9C, 0xBC9C }, +{ 0xBC9D, 0xBC9D, 0xBC9D }, +{ 0xBC9E, 0xBC9E, 0xBC9E }, +{ 0xBC9F, 0xBC9F, 0xBC9F }, +{ 0xBCA0, 0xBCA0, 0xBCA0 }, +{ 0xBCA1, 0xBCA1, 0xBCA1 }, +{ 0xBCA2, 0xBCA2, 0xBCA2 }, +{ 0xBCA3, 0xBCA3, 0xBCA3 }, +{ 0xBCA4, 0xBCA4, 0xBCA4 }, +{ 0xBCA5, 0xBCA5, 0xBCA5 }, +{ 0xBCA6, 0xBCA6, 0xBCA6 }, +{ 0xBCA7, 0xBCA7, 0xBCA7 }, +{ 0xBCA8, 0xBCA8, 0xBCA8 }, +{ 0xBCA9, 0xBCA9, 0xBCA9 }, +{ 0xBCAA, 0xBCAA, 0xBCAA }, +{ 0xBCAB, 0xBCAB, 0xBCAB }, +{ 0xBCAC, 0xBCAC, 0xBCAC }, +{ 0xBCAD, 0xBCAD, 0xBCAD }, +{ 0xBCAE, 0xBCAE, 0xBCAE }, +{ 0xBCAF, 0xBCAF, 0xBCAF }, +{ 0xBCB0, 0xBCB0, 0xBCB0 }, +{ 0xBCB1, 0xBCB1, 0xBCB1 }, +{ 0xBCB2, 0xBCB2, 0xBCB2 }, +{ 0xBCB3, 0xBCB3, 0xBCB3 }, +{ 0xBCB4, 0xBCB4, 0xBCB4 }, +{ 0xBCB5, 0xBCB5, 0xBCB5 }, +{ 0xBCB6, 0xBCB6, 0xBCB6 }, +{ 0xBCB7, 0xBCB7, 0xBCB7 }, +{ 0xBCB8, 0xBCB8, 0xBCB8 }, +{ 0xBCB9, 0xBCB9, 0xBCB9 }, +{ 0xBCBA, 0xBCBA, 0xBCBA }, +{ 0xBCBB, 0xBCBB, 0xBCBB }, +{ 0xBCBC, 0xBCBC, 0xBCBC }, +{ 0xBCBD, 0xBCBD, 0xBCBD }, +{ 0xBCBE, 0xBCBE, 0xBCBE }, +{ 0xBCBF, 0xBCBF, 0xBCBF }, +{ 0xBCC0, 0xBCC0, 0xBCC0 }, +{ 0xBCC1, 0xBCC1, 0xBCC1 }, +{ 0xBCC2, 0xBCC2, 0xBCC2 }, +{ 0xBCC3, 0xBCC3, 0xBCC3 }, +{ 0xBCC4, 0xBCC4, 0xBCC4 }, +{ 0xBCC5, 0xBCC5, 0xBCC5 }, +{ 0xBCC6, 0xBCC6, 0xBCC6 }, +{ 0xBCC7, 0xBCC7, 0xBCC7 }, +{ 0xBCC8, 0xBCC8, 0xBCC8 }, +{ 0xBCC9, 0xBCC9, 0xBCC9 }, +{ 0xBCCA, 0xBCCA, 0xBCCA }, +{ 0xBCCB, 0xBCCB, 0xBCCB }, +{ 0xBCCC, 0xBCCC, 0xBCCC }, +{ 0xBCCD, 0xBCCD, 0xBCCD }, +{ 0xBCCE, 0xBCCE, 0xBCCE }, +{ 0xBCCF, 0xBCCF, 0xBCCF }, +{ 0xBCD0, 0xBCD0, 0xBCD0 }, +{ 0xBCD1, 0xBCD1, 0xBCD1 }, +{ 0xBCD2, 0xBCD2, 0xBCD2 }, +{ 0xBCD3, 0xBCD3, 0xBCD3 }, +{ 0xBCD4, 0xBCD4, 0xBCD4 }, +{ 0xBCD5, 0xBCD5, 0xBCD5 }, +{ 0xBCD6, 0xBCD6, 0xBCD6 }, +{ 0xBCD7, 0xBCD7, 0xBCD7 }, +{ 0xBCD8, 0xBCD8, 0xBCD8 }, +{ 0xBCD9, 0xBCD9, 0xBCD9 }, +{ 0xBCDA, 0xBCDA, 0xBCDA }, +{ 0xBCDB, 0xBCDB, 0xBCDB }, +{ 0xBCDC, 0xBCDC, 0xBCDC }, +{ 0xBCDD, 0xBCDD, 0xBCDD }, +{ 0xBCDE, 0xBCDE, 0xBCDE }, +{ 0xBCDF, 0xBCDF, 0xBCDF }, +{ 0xBCE0, 0xBCE0, 0xBCE0 }, +{ 0xBCE1, 0xBCE1, 0xBCE1 }, +{ 0xBCE2, 0xBCE2, 0xBCE2 }, +{ 0xBCE3, 0xBCE3, 0xBCE3 }, +{ 0xBCE4, 0xBCE4, 0xBCE4 }, +{ 0xBCE5, 0xBCE5, 0xBCE5 }, +{ 0xBCE6, 0xBCE6, 0xBCE6 }, +{ 0xBCE7, 0xBCE7, 0xBCE7 }, +{ 0xBCE8, 0xBCE8, 0xBCE8 }, +{ 0xBCE9, 0xBCE9, 0xBCE9 }, +{ 0xBCEA, 0xBCEA, 0xBCEA }, +{ 0xBCEB, 0xBCEB, 0xBCEB }, +{ 0xBCEC, 0xBCEC, 0xBCEC }, +{ 0xBCED, 0xBCED, 0xBCED }, +{ 0xBCEE, 0xBCEE, 0xBCEE }, +{ 0xBCEF, 0xBCEF, 0xBCEF }, +{ 0xBCF0, 0xBCF0, 0xBCF0 }, +{ 0xBCF1, 0xBCF1, 0xBCF1 }, +{ 0xBCF2, 0xBCF2, 0xBCF2 }, +{ 0xBCF3, 0xBCF3, 0xBCF3 }, +{ 0xBCF4, 0xBCF4, 0xBCF4 }, +{ 0xBCF5, 0xBCF5, 0xBCF5 }, +{ 0xBCF6, 0xBCF6, 0xBCF6 }, +{ 0xBCF7, 0xBCF7, 0xBCF7 }, +{ 0xBCF8, 0xBCF8, 0xBCF8 }, +{ 0xBCF9, 0xBCF9, 0xBCF9 }, +{ 0xBCFA, 0xBCFA, 0xBCFA }, +{ 0xBCFB, 0xBCFB, 0xBCFB }, +{ 0xBCFC, 0xBCFC, 0xBCFC }, +{ 0xBCFD, 0xBCFD, 0xBCFD }, +{ 0xBCFE, 0xBCFE, 0xBCFE }, +{ 0xBCFF, 0xBCFF, 0xBCFF }, +{ 0xBD00, 0xBD00, 0xBD00 }, +{ 0xBD01, 0xBD01, 0xBD01 }, +{ 0xBD02, 0xBD02, 0xBD02 }, +{ 0xBD03, 0xBD03, 0xBD03 }, +{ 0xBD04, 0xBD04, 0xBD04 }, +{ 0xBD05, 0xBD05, 0xBD05 }, +{ 0xBD06, 0xBD06, 0xBD06 }, +{ 0xBD07, 0xBD07, 0xBD07 }, +{ 0xBD08, 0xBD08, 0xBD08 }, +{ 0xBD09, 0xBD09, 0xBD09 }, +{ 0xBD0A, 0xBD0A, 0xBD0A }, +{ 0xBD0B, 0xBD0B, 0xBD0B }, +{ 0xBD0C, 0xBD0C, 0xBD0C }, +{ 0xBD0D, 0xBD0D, 0xBD0D }, +{ 0xBD0E, 0xBD0E, 0xBD0E }, +{ 0xBD0F, 0xBD0F, 0xBD0F }, +{ 0xBD10, 0xBD10, 0xBD10 }, +{ 0xBD11, 0xBD11, 0xBD11 }, +{ 0xBD12, 0xBD12, 0xBD12 }, +{ 0xBD13, 0xBD13, 0xBD13 }, +{ 0xBD14, 0xBD14, 0xBD14 }, +{ 0xBD15, 0xBD15, 0xBD15 }, +{ 0xBD16, 0xBD16, 0xBD16 }, +{ 0xBD17, 0xBD17, 0xBD17 }, +{ 0xBD18, 0xBD18, 0xBD18 }, +{ 0xBD19, 0xBD19, 0xBD19 }, +{ 0xBD1A, 0xBD1A, 0xBD1A }, +{ 0xBD1B, 0xBD1B, 0xBD1B }, +{ 0xBD1C, 0xBD1C, 0xBD1C }, +{ 0xBD1D, 0xBD1D, 0xBD1D }, +{ 0xBD1E, 0xBD1E, 0xBD1E }, +{ 0xBD1F, 0xBD1F, 0xBD1F }, +{ 0xBD20, 0xBD20, 0xBD20 }, +{ 0xBD21, 0xBD21, 0xBD21 }, +{ 0xBD22, 0xBD22, 0xBD22 }, +{ 0xBD23, 0xBD23, 0xBD23 }, +{ 0xBD24, 0xBD24, 0xBD24 }, +{ 0xBD25, 0xBD25, 0xBD25 }, +{ 0xBD26, 0xBD26, 0xBD26 }, +{ 0xBD27, 0xBD27, 0xBD27 }, +{ 0xBD28, 0xBD28, 0xBD28 }, +{ 0xBD29, 0xBD29, 0xBD29 }, +{ 0xBD2A, 0xBD2A, 0xBD2A }, +{ 0xBD2B, 0xBD2B, 0xBD2B }, +{ 0xBD2C, 0xBD2C, 0xBD2C }, +{ 0xBD2D, 0xBD2D, 0xBD2D }, +{ 0xBD2E, 0xBD2E, 0xBD2E }, +{ 0xBD2F, 0xBD2F, 0xBD2F }, +{ 0xBD30, 0xBD30, 0xBD30 }, +{ 0xBD31, 0xBD31, 0xBD31 }, +{ 0xBD32, 0xBD32, 0xBD32 }, +{ 0xBD33, 0xBD33, 0xBD33 }, +{ 0xBD34, 0xBD34, 0xBD34 }, +{ 0xBD35, 0xBD35, 0xBD35 }, +{ 0xBD36, 0xBD36, 0xBD36 }, +{ 0xBD37, 0xBD37, 0xBD37 }, +{ 0xBD38, 0xBD38, 0xBD38 }, +{ 0xBD39, 0xBD39, 0xBD39 }, +{ 0xBD3A, 0xBD3A, 0xBD3A }, +{ 0xBD3B, 0xBD3B, 0xBD3B }, +{ 0xBD3C, 0xBD3C, 0xBD3C }, +{ 0xBD3D, 0xBD3D, 0xBD3D }, +{ 0xBD3E, 0xBD3E, 0xBD3E }, +{ 0xBD3F, 0xBD3F, 0xBD3F }, +{ 0xBD40, 0xBD40, 0xBD40 }, +{ 0xBD41, 0xBD41, 0xBD41 }, +{ 0xBD42, 0xBD42, 0xBD42 }, +{ 0xBD43, 0xBD43, 0xBD43 }, +{ 0xBD44, 0xBD44, 0xBD44 }, +{ 0xBD45, 0xBD45, 0xBD45 }, +{ 0xBD46, 0xBD46, 0xBD46 }, +{ 0xBD47, 0xBD47, 0xBD47 }, +{ 0xBD48, 0xBD48, 0xBD48 }, +{ 0xBD49, 0xBD49, 0xBD49 }, +{ 0xBD4A, 0xBD4A, 0xBD4A }, +{ 0xBD4B, 0xBD4B, 0xBD4B }, +{ 0xBD4C, 0xBD4C, 0xBD4C }, +{ 0xBD4D, 0xBD4D, 0xBD4D }, +{ 0xBD4E, 0xBD4E, 0xBD4E }, +{ 0xBD4F, 0xBD4F, 0xBD4F }, +{ 0xBD50, 0xBD50, 0xBD50 }, +{ 0xBD51, 0xBD51, 0xBD51 }, +{ 0xBD52, 0xBD52, 0xBD52 }, +{ 0xBD53, 0xBD53, 0xBD53 }, +{ 0xBD54, 0xBD54, 0xBD54 }, +{ 0xBD55, 0xBD55, 0xBD55 }, +{ 0xBD56, 0xBD56, 0xBD56 }, +{ 0xBD57, 0xBD57, 0xBD57 }, +{ 0xBD58, 0xBD58, 0xBD58 }, +{ 0xBD59, 0xBD59, 0xBD59 }, +{ 0xBD5A, 0xBD5A, 0xBD5A }, +{ 0xBD5B, 0xBD5B, 0xBD5B }, +{ 0xBD5C, 0xBD5C, 0xBD5C }, +{ 0xBD5D, 0xBD5D, 0xBD5D }, +{ 0xBD5E, 0xBD5E, 0xBD5E }, +{ 0xBD5F, 0xBD5F, 0xBD5F }, +{ 0xBD60, 0xBD60, 0xBD60 }, +{ 0xBD61, 0xBD61, 0xBD61 }, +{ 0xBD62, 0xBD62, 0xBD62 }, +{ 0xBD63, 0xBD63, 0xBD63 }, +{ 0xBD64, 0xBD64, 0xBD64 }, +{ 0xBD65, 0xBD65, 0xBD65 }, +{ 0xBD66, 0xBD66, 0xBD66 }, +{ 0xBD67, 0xBD67, 0xBD67 }, +{ 0xBD68, 0xBD68, 0xBD68 }, +{ 0xBD69, 0xBD69, 0xBD69 }, +{ 0xBD6A, 0xBD6A, 0xBD6A }, +{ 0xBD6B, 0xBD6B, 0xBD6B }, +{ 0xBD6C, 0xBD6C, 0xBD6C }, +{ 0xBD6D, 0xBD6D, 0xBD6D }, +{ 0xBD6E, 0xBD6E, 0xBD6E }, +{ 0xBD6F, 0xBD6F, 0xBD6F }, +{ 0xBD70, 0xBD70, 0xBD70 }, +{ 0xBD71, 0xBD71, 0xBD71 }, +{ 0xBD72, 0xBD72, 0xBD72 }, +{ 0xBD73, 0xBD73, 0xBD73 }, +{ 0xBD74, 0xBD74, 0xBD74 }, +{ 0xBD75, 0xBD75, 0xBD75 }, +{ 0xBD76, 0xBD76, 0xBD76 }, +{ 0xBD77, 0xBD77, 0xBD77 }, +{ 0xBD78, 0xBD78, 0xBD78 }, +{ 0xBD79, 0xBD79, 0xBD79 }, +{ 0xBD7A, 0xBD7A, 0xBD7A }, +{ 0xBD7B, 0xBD7B, 0xBD7B }, +{ 0xBD7C, 0xBD7C, 0xBD7C }, +{ 0xBD7D, 0xBD7D, 0xBD7D }, +{ 0xBD7E, 0xBD7E, 0xBD7E }, +{ 0xBD7F, 0xBD7F, 0xBD7F }, +{ 0xBD80, 0xBD80, 0xBD80 }, +{ 0xBD81, 0xBD81, 0xBD81 }, +{ 0xBD82, 0xBD82, 0xBD82 }, +{ 0xBD83, 0xBD83, 0xBD83 }, +{ 0xBD84, 0xBD84, 0xBD84 }, +{ 0xBD85, 0xBD85, 0xBD85 }, +{ 0xBD86, 0xBD86, 0xBD86 }, +{ 0xBD87, 0xBD87, 0xBD87 }, +{ 0xBD88, 0xBD88, 0xBD88 }, +{ 0xBD89, 0xBD89, 0xBD89 }, +{ 0xBD8A, 0xBD8A, 0xBD8A }, +{ 0xBD8B, 0xBD8B, 0xBD8B }, +{ 0xBD8C, 0xBD8C, 0xBD8C }, +{ 0xBD8D, 0xBD8D, 0xBD8D }, +{ 0xBD8E, 0xBD8E, 0xBD8E }, +{ 0xBD8F, 0xBD8F, 0xBD8F }, +{ 0xBD90, 0xBD90, 0xBD90 }, +{ 0xBD91, 0xBD91, 0xBD91 }, +{ 0xBD92, 0xBD92, 0xBD92 }, +{ 0xBD93, 0xBD93, 0xBD93 }, +{ 0xBD94, 0xBD94, 0xBD94 }, +{ 0xBD95, 0xBD95, 0xBD95 }, +{ 0xBD96, 0xBD96, 0xBD96 }, +{ 0xBD97, 0xBD97, 0xBD97 }, +{ 0xBD98, 0xBD98, 0xBD98 }, +{ 0xBD99, 0xBD99, 0xBD99 }, +{ 0xBD9A, 0xBD9A, 0xBD9A }, +{ 0xBD9B, 0xBD9B, 0xBD9B }, +{ 0xBD9C, 0xBD9C, 0xBD9C }, +{ 0xBD9D, 0xBD9D, 0xBD9D }, +{ 0xBD9E, 0xBD9E, 0xBD9E }, +{ 0xBD9F, 0xBD9F, 0xBD9F }, +{ 0xBDA0, 0xBDA0, 0xBDA0 }, +{ 0xBDA1, 0xBDA1, 0xBDA1 }, +{ 0xBDA2, 0xBDA2, 0xBDA2 }, +{ 0xBDA3, 0xBDA3, 0xBDA3 }, +{ 0xBDA4, 0xBDA4, 0xBDA4 }, +{ 0xBDA5, 0xBDA5, 0xBDA5 }, +{ 0xBDA6, 0xBDA6, 0xBDA6 }, +{ 0xBDA7, 0xBDA7, 0xBDA7 }, +{ 0xBDA8, 0xBDA8, 0xBDA8 }, +{ 0xBDA9, 0xBDA9, 0xBDA9 }, +{ 0xBDAA, 0xBDAA, 0xBDAA }, +{ 0xBDAB, 0xBDAB, 0xBDAB }, +{ 0xBDAC, 0xBDAC, 0xBDAC }, +{ 0xBDAD, 0xBDAD, 0xBDAD }, +{ 0xBDAE, 0xBDAE, 0xBDAE }, +{ 0xBDAF, 0xBDAF, 0xBDAF }, +{ 0xBDB0, 0xBDB0, 0xBDB0 }, +{ 0xBDB1, 0xBDB1, 0xBDB1 }, +{ 0xBDB2, 0xBDB2, 0xBDB2 }, +{ 0xBDB3, 0xBDB3, 0xBDB3 }, +{ 0xBDB4, 0xBDB4, 0xBDB4 }, +{ 0xBDB5, 0xBDB5, 0xBDB5 }, +{ 0xBDB6, 0xBDB6, 0xBDB6 }, +{ 0xBDB7, 0xBDB7, 0xBDB7 }, +{ 0xBDB8, 0xBDB8, 0xBDB8 }, +{ 0xBDB9, 0xBDB9, 0xBDB9 }, +{ 0xBDBA, 0xBDBA, 0xBDBA }, +{ 0xBDBB, 0xBDBB, 0xBDBB }, +{ 0xBDBC, 0xBDBC, 0xBDBC }, +{ 0xBDBD, 0xBDBD, 0xBDBD }, +{ 0xBDBE, 0xBDBE, 0xBDBE }, +{ 0xBDBF, 0xBDBF, 0xBDBF }, +{ 0xBDC0, 0xBDC0, 0xBDC0 }, +{ 0xBDC1, 0xBDC1, 0xBDC1 }, +{ 0xBDC2, 0xBDC2, 0xBDC2 }, +{ 0xBDC3, 0xBDC3, 0xBDC3 }, +{ 0xBDC4, 0xBDC4, 0xBDC4 }, +{ 0xBDC5, 0xBDC5, 0xBDC5 }, +{ 0xBDC6, 0xBDC6, 0xBDC6 }, +{ 0xBDC7, 0xBDC7, 0xBDC7 }, +{ 0xBDC8, 0xBDC8, 0xBDC8 }, +{ 0xBDC9, 0xBDC9, 0xBDC9 }, +{ 0xBDCA, 0xBDCA, 0xBDCA }, +{ 0xBDCB, 0xBDCB, 0xBDCB }, +{ 0xBDCC, 0xBDCC, 0xBDCC }, +{ 0xBDCD, 0xBDCD, 0xBDCD }, +{ 0xBDCE, 0xBDCE, 0xBDCE }, +{ 0xBDCF, 0xBDCF, 0xBDCF }, +{ 0xBDD0, 0xBDD0, 0xBDD0 }, +{ 0xBDD1, 0xBDD1, 0xBDD1 }, +{ 0xBDD2, 0xBDD2, 0xBDD2 }, +{ 0xBDD3, 0xBDD3, 0xBDD3 }, +{ 0xBDD4, 0xBDD4, 0xBDD4 }, +{ 0xBDD5, 0xBDD5, 0xBDD5 }, +{ 0xBDD6, 0xBDD6, 0xBDD6 }, +{ 0xBDD7, 0xBDD7, 0xBDD7 }, +{ 0xBDD8, 0xBDD8, 0xBDD8 }, +{ 0xBDD9, 0xBDD9, 0xBDD9 }, +{ 0xBDDA, 0xBDDA, 0xBDDA }, +{ 0xBDDB, 0xBDDB, 0xBDDB }, +{ 0xBDDC, 0xBDDC, 0xBDDC }, +{ 0xBDDD, 0xBDDD, 0xBDDD }, +{ 0xBDDE, 0xBDDE, 0xBDDE }, +{ 0xBDDF, 0xBDDF, 0xBDDF }, +{ 0xBDE0, 0xBDE0, 0xBDE0 }, +{ 0xBDE1, 0xBDE1, 0xBDE1 }, +{ 0xBDE2, 0xBDE2, 0xBDE2 }, +{ 0xBDE3, 0xBDE3, 0xBDE3 }, +{ 0xBDE4, 0xBDE4, 0xBDE4 }, +{ 0xBDE5, 0xBDE5, 0xBDE5 }, +{ 0xBDE6, 0xBDE6, 0xBDE6 }, +{ 0xBDE7, 0xBDE7, 0xBDE7 }, +{ 0xBDE8, 0xBDE8, 0xBDE8 }, +{ 0xBDE9, 0xBDE9, 0xBDE9 }, +{ 0xBDEA, 0xBDEA, 0xBDEA }, +{ 0xBDEB, 0xBDEB, 0xBDEB }, +{ 0xBDEC, 0xBDEC, 0xBDEC }, +{ 0xBDED, 0xBDED, 0xBDED }, +{ 0xBDEE, 0xBDEE, 0xBDEE }, +{ 0xBDEF, 0xBDEF, 0xBDEF }, +{ 0xBDF0, 0xBDF0, 0xBDF0 }, +{ 0xBDF1, 0xBDF1, 0xBDF1 }, +{ 0xBDF2, 0xBDF2, 0xBDF2 }, +{ 0xBDF3, 0xBDF3, 0xBDF3 }, +{ 0xBDF4, 0xBDF4, 0xBDF4 }, +{ 0xBDF5, 0xBDF5, 0xBDF5 }, +{ 0xBDF6, 0xBDF6, 0xBDF6 }, +{ 0xBDF7, 0xBDF7, 0xBDF7 }, +{ 0xBDF8, 0xBDF8, 0xBDF8 }, +{ 0xBDF9, 0xBDF9, 0xBDF9 }, +{ 0xBDFA, 0xBDFA, 0xBDFA }, +{ 0xBDFB, 0xBDFB, 0xBDFB }, +{ 0xBDFC, 0xBDFC, 0xBDFC }, +{ 0xBDFD, 0xBDFD, 0xBDFD }, +{ 0xBDFE, 0xBDFE, 0xBDFE }, +{ 0xBDFF, 0xBDFF, 0xBDFF }, +{ 0xBE00, 0xBE00, 0xBE00 }, +{ 0xBE01, 0xBE01, 0xBE01 }, +{ 0xBE02, 0xBE02, 0xBE02 }, +{ 0xBE03, 0xBE03, 0xBE03 }, +{ 0xBE04, 0xBE04, 0xBE04 }, +{ 0xBE05, 0xBE05, 0xBE05 }, +{ 0xBE06, 0xBE06, 0xBE06 }, +{ 0xBE07, 0xBE07, 0xBE07 }, +{ 0xBE08, 0xBE08, 0xBE08 }, +{ 0xBE09, 0xBE09, 0xBE09 }, +{ 0xBE0A, 0xBE0A, 0xBE0A }, +{ 0xBE0B, 0xBE0B, 0xBE0B }, +{ 0xBE0C, 0xBE0C, 0xBE0C }, +{ 0xBE0D, 0xBE0D, 0xBE0D }, +{ 0xBE0E, 0xBE0E, 0xBE0E }, +{ 0xBE0F, 0xBE0F, 0xBE0F }, +{ 0xBE10, 0xBE10, 0xBE10 }, +{ 0xBE11, 0xBE11, 0xBE11 }, +{ 0xBE12, 0xBE12, 0xBE12 }, +{ 0xBE13, 0xBE13, 0xBE13 }, +{ 0xBE14, 0xBE14, 0xBE14 }, +{ 0xBE15, 0xBE15, 0xBE15 }, +{ 0xBE16, 0xBE16, 0xBE16 }, +{ 0xBE17, 0xBE17, 0xBE17 }, +{ 0xBE18, 0xBE18, 0xBE18 }, +{ 0xBE19, 0xBE19, 0xBE19 }, +{ 0xBE1A, 0xBE1A, 0xBE1A }, +{ 0xBE1B, 0xBE1B, 0xBE1B }, +{ 0xBE1C, 0xBE1C, 0xBE1C }, +{ 0xBE1D, 0xBE1D, 0xBE1D }, +{ 0xBE1E, 0xBE1E, 0xBE1E }, +{ 0xBE1F, 0xBE1F, 0xBE1F }, +{ 0xBE20, 0xBE20, 0xBE20 }, +{ 0xBE21, 0xBE21, 0xBE21 }, +{ 0xBE22, 0xBE22, 0xBE22 }, +{ 0xBE23, 0xBE23, 0xBE23 }, +{ 0xBE24, 0xBE24, 0xBE24 }, +{ 0xBE25, 0xBE25, 0xBE25 }, +{ 0xBE26, 0xBE26, 0xBE26 }, +{ 0xBE27, 0xBE27, 0xBE27 }, +{ 0xBE28, 0xBE28, 0xBE28 }, +{ 0xBE29, 0xBE29, 0xBE29 }, +{ 0xBE2A, 0xBE2A, 0xBE2A }, +{ 0xBE2B, 0xBE2B, 0xBE2B }, +{ 0xBE2C, 0xBE2C, 0xBE2C }, +{ 0xBE2D, 0xBE2D, 0xBE2D }, +{ 0xBE2E, 0xBE2E, 0xBE2E }, +{ 0xBE2F, 0xBE2F, 0xBE2F }, +{ 0xBE30, 0xBE30, 0xBE30 }, +{ 0xBE31, 0xBE31, 0xBE31 }, +{ 0xBE32, 0xBE32, 0xBE32 }, +{ 0xBE33, 0xBE33, 0xBE33 }, +{ 0xBE34, 0xBE34, 0xBE34 }, +{ 0xBE35, 0xBE35, 0xBE35 }, +{ 0xBE36, 0xBE36, 0xBE36 }, +{ 0xBE37, 0xBE37, 0xBE37 }, +{ 0xBE38, 0xBE38, 0xBE38 }, +{ 0xBE39, 0xBE39, 0xBE39 }, +{ 0xBE3A, 0xBE3A, 0xBE3A }, +{ 0xBE3B, 0xBE3B, 0xBE3B }, +{ 0xBE3C, 0xBE3C, 0xBE3C }, +{ 0xBE3D, 0xBE3D, 0xBE3D }, +{ 0xBE3E, 0xBE3E, 0xBE3E }, +{ 0xBE3F, 0xBE3F, 0xBE3F }, +{ 0xBE40, 0xBE40, 0xBE40 }, +{ 0xBE41, 0xBE41, 0xBE41 }, +{ 0xBE42, 0xBE42, 0xBE42 }, +{ 0xBE43, 0xBE43, 0xBE43 }, +{ 0xBE44, 0xBE44, 0xBE44 }, +{ 0xBE45, 0xBE45, 0xBE45 }, +{ 0xBE46, 0xBE46, 0xBE46 }, +{ 0xBE47, 0xBE47, 0xBE47 }, +{ 0xBE48, 0xBE48, 0xBE48 }, +{ 0xBE49, 0xBE49, 0xBE49 }, +{ 0xBE4A, 0xBE4A, 0xBE4A }, +{ 0xBE4B, 0xBE4B, 0xBE4B }, +{ 0xBE4C, 0xBE4C, 0xBE4C }, +{ 0xBE4D, 0xBE4D, 0xBE4D }, +{ 0xBE4E, 0xBE4E, 0xBE4E }, +{ 0xBE4F, 0xBE4F, 0xBE4F }, +{ 0xBE50, 0xBE50, 0xBE50 }, +{ 0xBE51, 0xBE51, 0xBE51 }, +{ 0xBE52, 0xBE52, 0xBE52 }, +{ 0xBE53, 0xBE53, 0xBE53 }, +{ 0xBE54, 0xBE54, 0xBE54 }, +{ 0xBE55, 0xBE55, 0xBE55 }, +{ 0xBE56, 0xBE56, 0xBE56 }, +{ 0xBE57, 0xBE57, 0xBE57 }, +{ 0xBE58, 0xBE58, 0xBE58 }, +{ 0xBE59, 0xBE59, 0xBE59 }, +{ 0xBE5A, 0xBE5A, 0xBE5A }, +{ 0xBE5B, 0xBE5B, 0xBE5B }, +{ 0xBE5C, 0xBE5C, 0xBE5C }, +{ 0xBE5D, 0xBE5D, 0xBE5D }, +{ 0xBE5E, 0xBE5E, 0xBE5E }, +{ 0xBE5F, 0xBE5F, 0xBE5F }, +{ 0xBE60, 0xBE60, 0xBE60 }, +{ 0xBE61, 0xBE61, 0xBE61 }, +{ 0xBE62, 0xBE62, 0xBE62 }, +{ 0xBE63, 0xBE63, 0xBE63 }, +{ 0xBE64, 0xBE64, 0xBE64 }, +{ 0xBE65, 0xBE65, 0xBE65 }, +{ 0xBE66, 0xBE66, 0xBE66 }, +{ 0xBE67, 0xBE67, 0xBE67 }, +{ 0xBE68, 0xBE68, 0xBE68 }, +{ 0xBE69, 0xBE69, 0xBE69 }, +{ 0xBE6A, 0xBE6A, 0xBE6A }, +{ 0xBE6B, 0xBE6B, 0xBE6B }, +{ 0xBE6C, 0xBE6C, 0xBE6C }, +{ 0xBE6D, 0xBE6D, 0xBE6D }, +{ 0xBE6E, 0xBE6E, 0xBE6E }, +{ 0xBE6F, 0xBE6F, 0xBE6F }, +{ 0xBE70, 0xBE70, 0xBE70 }, +{ 0xBE71, 0xBE71, 0xBE71 }, +{ 0xBE72, 0xBE72, 0xBE72 }, +{ 0xBE73, 0xBE73, 0xBE73 }, +{ 0xBE74, 0xBE74, 0xBE74 }, +{ 0xBE75, 0xBE75, 0xBE75 }, +{ 0xBE76, 0xBE76, 0xBE76 }, +{ 0xBE77, 0xBE77, 0xBE77 }, +{ 0xBE78, 0xBE78, 0xBE78 }, +{ 0xBE79, 0xBE79, 0xBE79 }, +{ 0xBE7A, 0xBE7A, 0xBE7A }, +{ 0xBE7B, 0xBE7B, 0xBE7B }, +{ 0xBE7C, 0xBE7C, 0xBE7C }, +{ 0xBE7D, 0xBE7D, 0xBE7D }, +{ 0xBE7E, 0xBE7E, 0xBE7E }, +{ 0xBE7F, 0xBE7F, 0xBE7F }, +{ 0xBE80, 0xBE80, 0xBE80 }, +{ 0xBE81, 0xBE81, 0xBE81 }, +{ 0xBE82, 0xBE82, 0xBE82 }, +{ 0xBE83, 0xBE83, 0xBE83 }, +{ 0xBE84, 0xBE84, 0xBE84 }, +{ 0xBE85, 0xBE85, 0xBE85 }, +{ 0xBE86, 0xBE86, 0xBE86 }, +{ 0xBE87, 0xBE87, 0xBE87 }, +{ 0xBE88, 0xBE88, 0xBE88 }, +{ 0xBE89, 0xBE89, 0xBE89 }, +{ 0xBE8A, 0xBE8A, 0xBE8A }, +{ 0xBE8B, 0xBE8B, 0xBE8B }, +{ 0xBE8C, 0xBE8C, 0xBE8C }, +{ 0xBE8D, 0xBE8D, 0xBE8D }, +{ 0xBE8E, 0xBE8E, 0xBE8E }, +{ 0xBE8F, 0xBE8F, 0xBE8F }, +{ 0xBE90, 0xBE90, 0xBE90 }, +{ 0xBE91, 0xBE91, 0xBE91 }, +{ 0xBE92, 0xBE92, 0xBE92 }, +{ 0xBE93, 0xBE93, 0xBE93 }, +{ 0xBE94, 0xBE94, 0xBE94 }, +{ 0xBE95, 0xBE95, 0xBE95 }, +{ 0xBE96, 0xBE96, 0xBE96 }, +{ 0xBE97, 0xBE97, 0xBE97 }, +{ 0xBE98, 0xBE98, 0xBE98 }, +{ 0xBE99, 0xBE99, 0xBE99 }, +{ 0xBE9A, 0xBE9A, 0xBE9A }, +{ 0xBE9B, 0xBE9B, 0xBE9B }, +{ 0xBE9C, 0xBE9C, 0xBE9C }, +{ 0xBE9D, 0xBE9D, 0xBE9D }, +{ 0xBE9E, 0xBE9E, 0xBE9E }, +{ 0xBE9F, 0xBE9F, 0xBE9F }, +{ 0xBEA0, 0xBEA0, 0xBEA0 }, +{ 0xBEA1, 0xBEA1, 0xBEA1 }, +{ 0xBEA2, 0xBEA2, 0xBEA2 }, +{ 0xBEA3, 0xBEA3, 0xBEA3 }, +{ 0xBEA4, 0xBEA4, 0xBEA4 }, +{ 0xBEA5, 0xBEA5, 0xBEA5 }, +{ 0xBEA6, 0xBEA6, 0xBEA6 }, +{ 0xBEA7, 0xBEA7, 0xBEA7 }, +{ 0xBEA8, 0xBEA8, 0xBEA8 }, +{ 0xBEA9, 0xBEA9, 0xBEA9 }, +{ 0xBEAA, 0xBEAA, 0xBEAA }, +{ 0xBEAB, 0xBEAB, 0xBEAB }, +{ 0xBEAC, 0xBEAC, 0xBEAC }, +{ 0xBEAD, 0xBEAD, 0xBEAD }, +{ 0xBEAE, 0xBEAE, 0xBEAE }, +{ 0xBEAF, 0xBEAF, 0xBEAF }, +{ 0xBEB0, 0xBEB0, 0xBEB0 }, +{ 0xBEB1, 0xBEB1, 0xBEB1 }, +{ 0xBEB2, 0xBEB2, 0xBEB2 }, +{ 0xBEB3, 0xBEB3, 0xBEB3 }, +{ 0xBEB4, 0xBEB4, 0xBEB4 }, +{ 0xBEB5, 0xBEB5, 0xBEB5 }, +{ 0xBEB6, 0xBEB6, 0xBEB6 }, +{ 0xBEB7, 0xBEB7, 0xBEB7 }, +{ 0xBEB8, 0xBEB8, 0xBEB8 }, +{ 0xBEB9, 0xBEB9, 0xBEB9 }, +{ 0xBEBA, 0xBEBA, 0xBEBA }, +{ 0xBEBB, 0xBEBB, 0xBEBB }, +{ 0xBEBC, 0xBEBC, 0xBEBC }, +{ 0xBEBD, 0xBEBD, 0xBEBD }, +{ 0xBEBE, 0xBEBE, 0xBEBE }, +{ 0xBEBF, 0xBEBF, 0xBEBF }, +{ 0xBEC0, 0xBEC0, 0xBEC0 }, +{ 0xBEC1, 0xBEC1, 0xBEC1 }, +{ 0xBEC2, 0xBEC2, 0xBEC2 }, +{ 0xBEC3, 0xBEC3, 0xBEC3 }, +{ 0xBEC4, 0xBEC4, 0xBEC4 }, +{ 0xBEC5, 0xBEC5, 0xBEC5 }, +{ 0xBEC6, 0xBEC6, 0xBEC6 }, +{ 0xBEC7, 0xBEC7, 0xBEC7 }, +{ 0xBEC8, 0xBEC8, 0xBEC8 }, +{ 0xBEC9, 0xBEC9, 0xBEC9 }, +{ 0xBECA, 0xBECA, 0xBECA }, +{ 0xBECB, 0xBECB, 0xBECB }, +{ 0xBECC, 0xBECC, 0xBECC }, +{ 0xBECD, 0xBECD, 0xBECD }, +{ 0xBECE, 0xBECE, 0xBECE }, +{ 0xBECF, 0xBECF, 0xBECF }, +{ 0xBED0, 0xBED0, 0xBED0 }, +{ 0xBED1, 0xBED1, 0xBED1 }, +{ 0xBED2, 0xBED2, 0xBED2 }, +{ 0xBED3, 0xBED3, 0xBED3 }, +{ 0xBED4, 0xBED4, 0xBED4 }, +{ 0xBED5, 0xBED5, 0xBED5 }, +{ 0xBED6, 0xBED6, 0xBED6 }, +{ 0xBED7, 0xBED7, 0xBED7 }, +{ 0xBED8, 0xBED8, 0xBED8 }, +{ 0xBED9, 0xBED9, 0xBED9 }, +{ 0xBEDA, 0xBEDA, 0xBEDA }, +{ 0xBEDB, 0xBEDB, 0xBEDB }, +{ 0xBEDC, 0xBEDC, 0xBEDC }, +{ 0xBEDD, 0xBEDD, 0xBEDD }, +{ 0xBEDE, 0xBEDE, 0xBEDE }, +{ 0xBEDF, 0xBEDF, 0xBEDF }, +{ 0xBEE0, 0xBEE0, 0xBEE0 }, +{ 0xBEE1, 0xBEE1, 0xBEE1 }, +{ 0xBEE2, 0xBEE2, 0xBEE2 }, +{ 0xBEE3, 0xBEE3, 0xBEE3 }, +{ 0xBEE4, 0xBEE4, 0xBEE4 }, +{ 0xBEE5, 0xBEE5, 0xBEE5 }, +{ 0xBEE6, 0xBEE6, 0xBEE6 }, +{ 0xBEE7, 0xBEE7, 0xBEE7 }, +{ 0xBEE8, 0xBEE8, 0xBEE8 }, +{ 0xBEE9, 0xBEE9, 0xBEE9 }, +{ 0xBEEA, 0xBEEA, 0xBEEA }, +{ 0xBEEB, 0xBEEB, 0xBEEB }, +{ 0xBEEC, 0xBEEC, 0xBEEC }, +{ 0xBEED, 0xBEED, 0xBEED }, +{ 0xBEEE, 0xBEEE, 0xBEEE }, +{ 0xBEEF, 0xBEEF, 0xBEEF }, +{ 0xBEF0, 0xBEF0, 0xBEF0 }, +{ 0xBEF1, 0xBEF1, 0xBEF1 }, +{ 0xBEF2, 0xBEF2, 0xBEF2 }, +{ 0xBEF3, 0xBEF3, 0xBEF3 }, +{ 0xBEF4, 0xBEF4, 0xBEF4 }, +{ 0xBEF5, 0xBEF5, 0xBEF5 }, +{ 0xBEF6, 0xBEF6, 0xBEF6 }, +{ 0xBEF7, 0xBEF7, 0xBEF7 }, +{ 0xBEF8, 0xBEF8, 0xBEF8 }, +{ 0xBEF9, 0xBEF9, 0xBEF9 }, +{ 0xBEFA, 0xBEFA, 0xBEFA }, +{ 0xBEFB, 0xBEFB, 0xBEFB }, +{ 0xBEFC, 0xBEFC, 0xBEFC }, +{ 0xBEFD, 0xBEFD, 0xBEFD }, +{ 0xBEFE, 0xBEFE, 0xBEFE }, +{ 0xBEFF, 0xBEFF, 0xBEFF }, +{ 0xBF00, 0xBF00, 0xBF00 }, +{ 0xBF01, 0xBF01, 0xBF01 }, +{ 0xBF02, 0xBF02, 0xBF02 }, +{ 0xBF03, 0xBF03, 0xBF03 }, +{ 0xBF04, 0xBF04, 0xBF04 }, +{ 0xBF05, 0xBF05, 0xBF05 }, +{ 0xBF06, 0xBF06, 0xBF06 }, +{ 0xBF07, 0xBF07, 0xBF07 }, +{ 0xBF08, 0xBF08, 0xBF08 }, +{ 0xBF09, 0xBF09, 0xBF09 }, +{ 0xBF0A, 0xBF0A, 0xBF0A }, +{ 0xBF0B, 0xBF0B, 0xBF0B }, +{ 0xBF0C, 0xBF0C, 0xBF0C }, +{ 0xBF0D, 0xBF0D, 0xBF0D }, +{ 0xBF0E, 0xBF0E, 0xBF0E }, +{ 0xBF0F, 0xBF0F, 0xBF0F }, +{ 0xBF10, 0xBF10, 0xBF10 }, +{ 0xBF11, 0xBF11, 0xBF11 }, +{ 0xBF12, 0xBF12, 0xBF12 }, +{ 0xBF13, 0xBF13, 0xBF13 }, +{ 0xBF14, 0xBF14, 0xBF14 }, +{ 0xBF15, 0xBF15, 0xBF15 }, +{ 0xBF16, 0xBF16, 0xBF16 }, +{ 0xBF17, 0xBF17, 0xBF17 }, +{ 0xBF18, 0xBF18, 0xBF18 }, +{ 0xBF19, 0xBF19, 0xBF19 }, +{ 0xBF1A, 0xBF1A, 0xBF1A }, +{ 0xBF1B, 0xBF1B, 0xBF1B }, +{ 0xBF1C, 0xBF1C, 0xBF1C }, +{ 0xBF1D, 0xBF1D, 0xBF1D }, +{ 0xBF1E, 0xBF1E, 0xBF1E }, +{ 0xBF1F, 0xBF1F, 0xBF1F }, +{ 0xBF20, 0xBF20, 0xBF20 }, +{ 0xBF21, 0xBF21, 0xBF21 }, +{ 0xBF22, 0xBF22, 0xBF22 }, +{ 0xBF23, 0xBF23, 0xBF23 }, +{ 0xBF24, 0xBF24, 0xBF24 }, +{ 0xBF25, 0xBF25, 0xBF25 }, +{ 0xBF26, 0xBF26, 0xBF26 }, +{ 0xBF27, 0xBF27, 0xBF27 }, +{ 0xBF28, 0xBF28, 0xBF28 }, +{ 0xBF29, 0xBF29, 0xBF29 }, +{ 0xBF2A, 0xBF2A, 0xBF2A }, +{ 0xBF2B, 0xBF2B, 0xBF2B }, +{ 0xBF2C, 0xBF2C, 0xBF2C }, +{ 0xBF2D, 0xBF2D, 0xBF2D }, +{ 0xBF2E, 0xBF2E, 0xBF2E }, +{ 0xBF2F, 0xBF2F, 0xBF2F }, +{ 0xBF30, 0xBF30, 0xBF30 }, +{ 0xBF31, 0xBF31, 0xBF31 }, +{ 0xBF32, 0xBF32, 0xBF32 }, +{ 0xBF33, 0xBF33, 0xBF33 }, +{ 0xBF34, 0xBF34, 0xBF34 }, +{ 0xBF35, 0xBF35, 0xBF35 }, +{ 0xBF36, 0xBF36, 0xBF36 }, +{ 0xBF37, 0xBF37, 0xBF37 }, +{ 0xBF38, 0xBF38, 0xBF38 }, +{ 0xBF39, 0xBF39, 0xBF39 }, +{ 0xBF3A, 0xBF3A, 0xBF3A }, +{ 0xBF3B, 0xBF3B, 0xBF3B }, +{ 0xBF3C, 0xBF3C, 0xBF3C }, +{ 0xBF3D, 0xBF3D, 0xBF3D }, +{ 0xBF3E, 0xBF3E, 0xBF3E }, +{ 0xBF3F, 0xBF3F, 0xBF3F }, +{ 0xBF40, 0xBF40, 0xBF40 }, +{ 0xBF41, 0xBF41, 0xBF41 }, +{ 0xBF42, 0xBF42, 0xBF42 }, +{ 0xBF43, 0xBF43, 0xBF43 }, +{ 0xBF44, 0xBF44, 0xBF44 }, +{ 0xBF45, 0xBF45, 0xBF45 }, +{ 0xBF46, 0xBF46, 0xBF46 }, +{ 0xBF47, 0xBF47, 0xBF47 }, +{ 0xBF48, 0xBF48, 0xBF48 }, +{ 0xBF49, 0xBF49, 0xBF49 }, +{ 0xBF4A, 0xBF4A, 0xBF4A }, +{ 0xBF4B, 0xBF4B, 0xBF4B }, +{ 0xBF4C, 0xBF4C, 0xBF4C }, +{ 0xBF4D, 0xBF4D, 0xBF4D }, +{ 0xBF4E, 0xBF4E, 0xBF4E }, +{ 0xBF4F, 0xBF4F, 0xBF4F }, +{ 0xBF50, 0xBF50, 0xBF50 }, +{ 0xBF51, 0xBF51, 0xBF51 }, +{ 0xBF52, 0xBF52, 0xBF52 }, +{ 0xBF53, 0xBF53, 0xBF53 }, +{ 0xBF54, 0xBF54, 0xBF54 }, +{ 0xBF55, 0xBF55, 0xBF55 }, +{ 0xBF56, 0xBF56, 0xBF56 }, +{ 0xBF57, 0xBF57, 0xBF57 }, +{ 0xBF58, 0xBF58, 0xBF58 }, +{ 0xBF59, 0xBF59, 0xBF59 }, +{ 0xBF5A, 0xBF5A, 0xBF5A }, +{ 0xBF5B, 0xBF5B, 0xBF5B }, +{ 0xBF5C, 0xBF5C, 0xBF5C }, +{ 0xBF5D, 0xBF5D, 0xBF5D }, +{ 0xBF5E, 0xBF5E, 0xBF5E }, +{ 0xBF5F, 0xBF5F, 0xBF5F }, +{ 0xBF60, 0xBF60, 0xBF60 }, +{ 0xBF61, 0xBF61, 0xBF61 }, +{ 0xBF62, 0xBF62, 0xBF62 }, +{ 0xBF63, 0xBF63, 0xBF63 }, +{ 0xBF64, 0xBF64, 0xBF64 }, +{ 0xBF65, 0xBF65, 0xBF65 }, +{ 0xBF66, 0xBF66, 0xBF66 }, +{ 0xBF67, 0xBF67, 0xBF67 }, +{ 0xBF68, 0xBF68, 0xBF68 }, +{ 0xBF69, 0xBF69, 0xBF69 }, +{ 0xBF6A, 0xBF6A, 0xBF6A }, +{ 0xBF6B, 0xBF6B, 0xBF6B }, +{ 0xBF6C, 0xBF6C, 0xBF6C }, +{ 0xBF6D, 0xBF6D, 0xBF6D }, +{ 0xBF6E, 0xBF6E, 0xBF6E }, +{ 0xBF6F, 0xBF6F, 0xBF6F }, +{ 0xBF70, 0xBF70, 0xBF70 }, +{ 0xBF71, 0xBF71, 0xBF71 }, +{ 0xBF72, 0xBF72, 0xBF72 }, +{ 0xBF73, 0xBF73, 0xBF73 }, +{ 0xBF74, 0xBF74, 0xBF74 }, +{ 0xBF75, 0xBF75, 0xBF75 }, +{ 0xBF76, 0xBF76, 0xBF76 }, +{ 0xBF77, 0xBF77, 0xBF77 }, +{ 0xBF78, 0xBF78, 0xBF78 }, +{ 0xBF79, 0xBF79, 0xBF79 }, +{ 0xBF7A, 0xBF7A, 0xBF7A }, +{ 0xBF7B, 0xBF7B, 0xBF7B }, +{ 0xBF7C, 0xBF7C, 0xBF7C }, +{ 0xBF7D, 0xBF7D, 0xBF7D }, +{ 0xBF7E, 0xBF7E, 0xBF7E }, +{ 0xBF7F, 0xBF7F, 0xBF7F }, +{ 0xBF80, 0xBF80, 0xBF80 }, +{ 0xBF81, 0xBF81, 0xBF81 }, +{ 0xBF82, 0xBF82, 0xBF82 }, +{ 0xBF83, 0xBF83, 0xBF83 }, +{ 0xBF84, 0xBF84, 0xBF84 }, +{ 0xBF85, 0xBF85, 0xBF85 }, +{ 0xBF86, 0xBF86, 0xBF86 }, +{ 0xBF87, 0xBF87, 0xBF87 }, +{ 0xBF88, 0xBF88, 0xBF88 }, +{ 0xBF89, 0xBF89, 0xBF89 }, +{ 0xBF8A, 0xBF8A, 0xBF8A }, +{ 0xBF8B, 0xBF8B, 0xBF8B }, +{ 0xBF8C, 0xBF8C, 0xBF8C }, +{ 0xBF8D, 0xBF8D, 0xBF8D }, +{ 0xBF8E, 0xBF8E, 0xBF8E }, +{ 0xBF8F, 0xBF8F, 0xBF8F }, +{ 0xBF90, 0xBF90, 0xBF90 }, +{ 0xBF91, 0xBF91, 0xBF91 }, +{ 0xBF92, 0xBF92, 0xBF92 }, +{ 0xBF93, 0xBF93, 0xBF93 }, +{ 0xBF94, 0xBF94, 0xBF94 }, +{ 0xBF95, 0xBF95, 0xBF95 }, +{ 0xBF96, 0xBF96, 0xBF96 }, +{ 0xBF97, 0xBF97, 0xBF97 }, +{ 0xBF98, 0xBF98, 0xBF98 }, +{ 0xBF99, 0xBF99, 0xBF99 }, +{ 0xBF9A, 0xBF9A, 0xBF9A }, +{ 0xBF9B, 0xBF9B, 0xBF9B }, +{ 0xBF9C, 0xBF9C, 0xBF9C }, +{ 0xBF9D, 0xBF9D, 0xBF9D }, +{ 0xBF9E, 0xBF9E, 0xBF9E }, +{ 0xBF9F, 0xBF9F, 0xBF9F }, +{ 0xBFA0, 0xBFA0, 0xBFA0 }, +{ 0xBFA1, 0xBFA1, 0xBFA1 }, +{ 0xBFA2, 0xBFA2, 0xBFA2 }, +{ 0xBFA3, 0xBFA3, 0xBFA3 }, +{ 0xBFA4, 0xBFA4, 0xBFA4 }, +{ 0xBFA5, 0xBFA5, 0xBFA5 }, +{ 0xBFA6, 0xBFA6, 0xBFA6 }, +{ 0xBFA7, 0xBFA7, 0xBFA7 }, +{ 0xBFA8, 0xBFA8, 0xBFA8 }, +{ 0xBFA9, 0xBFA9, 0xBFA9 }, +{ 0xBFAA, 0xBFAA, 0xBFAA }, +{ 0xBFAB, 0xBFAB, 0xBFAB }, +{ 0xBFAC, 0xBFAC, 0xBFAC }, +{ 0xBFAD, 0xBFAD, 0xBFAD }, +{ 0xBFAE, 0xBFAE, 0xBFAE }, +{ 0xBFAF, 0xBFAF, 0xBFAF }, +{ 0xBFB0, 0xBFB0, 0xBFB0 }, +{ 0xBFB1, 0xBFB1, 0xBFB1 }, +{ 0xBFB2, 0xBFB2, 0xBFB2 }, +{ 0xBFB3, 0xBFB3, 0xBFB3 }, +{ 0xBFB4, 0xBFB4, 0xBFB4 }, +{ 0xBFB5, 0xBFB5, 0xBFB5 }, +{ 0xBFB6, 0xBFB6, 0xBFB6 }, +{ 0xBFB7, 0xBFB7, 0xBFB7 }, +{ 0xBFB8, 0xBFB8, 0xBFB8 }, +{ 0xBFB9, 0xBFB9, 0xBFB9 }, +{ 0xBFBA, 0xBFBA, 0xBFBA }, +{ 0xBFBB, 0xBFBB, 0xBFBB }, +{ 0xBFBC, 0xBFBC, 0xBFBC }, +{ 0xBFBD, 0xBFBD, 0xBFBD }, +{ 0xBFBE, 0xBFBE, 0xBFBE }, +{ 0xBFBF, 0xBFBF, 0xBFBF }, +{ 0xBFC0, 0xBFC0, 0xBFC0 }, +{ 0xBFC1, 0xBFC1, 0xBFC1 }, +{ 0xBFC2, 0xBFC2, 0xBFC2 }, +{ 0xBFC3, 0xBFC3, 0xBFC3 }, +{ 0xBFC4, 0xBFC4, 0xBFC4 }, +{ 0xBFC5, 0xBFC5, 0xBFC5 }, +{ 0xBFC6, 0xBFC6, 0xBFC6 }, +{ 0xBFC7, 0xBFC7, 0xBFC7 }, +{ 0xBFC8, 0xBFC8, 0xBFC8 }, +{ 0xBFC9, 0xBFC9, 0xBFC9 }, +{ 0xBFCA, 0xBFCA, 0xBFCA }, +{ 0xBFCB, 0xBFCB, 0xBFCB }, +{ 0xBFCC, 0xBFCC, 0xBFCC }, +{ 0xBFCD, 0xBFCD, 0xBFCD }, +{ 0xBFCE, 0xBFCE, 0xBFCE }, +{ 0xBFCF, 0xBFCF, 0xBFCF }, +{ 0xBFD0, 0xBFD0, 0xBFD0 }, +{ 0xBFD1, 0xBFD1, 0xBFD1 }, +{ 0xBFD2, 0xBFD2, 0xBFD2 }, +{ 0xBFD3, 0xBFD3, 0xBFD3 }, +{ 0xBFD4, 0xBFD4, 0xBFD4 }, +{ 0xBFD5, 0xBFD5, 0xBFD5 }, +{ 0xBFD6, 0xBFD6, 0xBFD6 }, +{ 0xBFD7, 0xBFD7, 0xBFD7 }, +{ 0xBFD8, 0xBFD8, 0xBFD8 }, +{ 0xBFD9, 0xBFD9, 0xBFD9 }, +{ 0xBFDA, 0xBFDA, 0xBFDA }, +{ 0xBFDB, 0xBFDB, 0xBFDB }, +{ 0xBFDC, 0xBFDC, 0xBFDC }, +{ 0xBFDD, 0xBFDD, 0xBFDD }, +{ 0xBFDE, 0xBFDE, 0xBFDE }, +{ 0xBFDF, 0xBFDF, 0xBFDF }, +{ 0xBFE0, 0xBFE0, 0xBFE0 }, +{ 0xBFE1, 0xBFE1, 0xBFE1 }, +{ 0xBFE2, 0xBFE2, 0xBFE2 }, +{ 0xBFE3, 0xBFE3, 0xBFE3 }, +{ 0xBFE4, 0xBFE4, 0xBFE4 }, +{ 0xBFE5, 0xBFE5, 0xBFE5 }, +{ 0xBFE6, 0xBFE6, 0xBFE6 }, +{ 0xBFE7, 0xBFE7, 0xBFE7 }, +{ 0xBFE8, 0xBFE8, 0xBFE8 }, +{ 0xBFE9, 0xBFE9, 0xBFE9 }, +{ 0xBFEA, 0xBFEA, 0xBFEA }, +{ 0xBFEB, 0xBFEB, 0xBFEB }, +{ 0xBFEC, 0xBFEC, 0xBFEC }, +{ 0xBFED, 0xBFED, 0xBFED }, +{ 0xBFEE, 0xBFEE, 0xBFEE }, +{ 0xBFEF, 0xBFEF, 0xBFEF }, +{ 0xBFF0, 0xBFF0, 0xBFF0 }, +{ 0xBFF1, 0xBFF1, 0xBFF1 }, +{ 0xBFF2, 0xBFF2, 0xBFF2 }, +{ 0xBFF3, 0xBFF3, 0xBFF3 }, +{ 0xBFF4, 0xBFF4, 0xBFF4 }, +{ 0xBFF5, 0xBFF5, 0xBFF5 }, +{ 0xBFF6, 0xBFF6, 0xBFF6 }, +{ 0xBFF7, 0xBFF7, 0xBFF7 }, +{ 0xBFF8, 0xBFF8, 0xBFF8 }, +{ 0xBFF9, 0xBFF9, 0xBFF9 }, +{ 0xBFFA, 0xBFFA, 0xBFFA }, +{ 0xBFFB, 0xBFFB, 0xBFFB }, +{ 0xBFFC, 0xBFFC, 0xBFFC }, +{ 0xBFFD, 0xBFFD, 0xBFFD }, +{ 0xBFFE, 0xBFFE, 0xBFFE }, +{ 0xBFFF, 0xBFFF, 0xBFFF }, +{ 0xC000, 0xC000, 0xC000 }, +{ 0xC001, 0xC001, 0xC001 }, +{ 0xC002, 0xC002, 0xC002 }, +{ 0xC003, 0xC003, 0xC003 }, +{ 0xC004, 0xC004, 0xC004 }, +{ 0xC005, 0xC005, 0xC005 }, +{ 0xC006, 0xC006, 0xC006 }, +{ 0xC007, 0xC007, 0xC007 }, +{ 0xC008, 0xC008, 0xC008 }, +{ 0xC009, 0xC009, 0xC009 }, +{ 0xC00A, 0xC00A, 0xC00A }, +{ 0xC00B, 0xC00B, 0xC00B }, +{ 0xC00C, 0xC00C, 0xC00C }, +{ 0xC00D, 0xC00D, 0xC00D }, +{ 0xC00E, 0xC00E, 0xC00E }, +{ 0xC00F, 0xC00F, 0xC00F }, +{ 0xC010, 0xC010, 0xC010 }, +{ 0xC011, 0xC011, 0xC011 }, +{ 0xC012, 0xC012, 0xC012 }, +{ 0xC013, 0xC013, 0xC013 }, +{ 0xC014, 0xC014, 0xC014 }, +{ 0xC015, 0xC015, 0xC015 }, +{ 0xC016, 0xC016, 0xC016 }, +{ 0xC017, 0xC017, 0xC017 }, +{ 0xC018, 0xC018, 0xC018 }, +{ 0xC019, 0xC019, 0xC019 }, +{ 0xC01A, 0xC01A, 0xC01A }, +{ 0xC01B, 0xC01B, 0xC01B }, +{ 0xC01C, 0xC01C, 0xC01C }, +{ 0xC01D, 0xC01D, 0xC01D }, +{ 0xC01E, 0xC01E, 0xC01E }, +{ 0xC01F, 0xC01F, 0xC01F }, +{ 0xC020, 0xC020, 0xC020 }, +{ 0xC021, 0xC021, 0xC021 }, +{ 0xC022, 0xC022, 0xC022 }, +{ 0xC023, 0xC023, 0xC023 }, +{ 0xC024, 0xC024, 0xC024 }, +{ 0xC025, 0xC025, 0xC025 }, +{ 0xC026, 0xC026, 0xC026 }, +{ 0xC027, 0xC027, 0xC027 }, +{ 0xC028, 0xC028, 0xC028 }, +{ 0xC029, 0xC029, 0xC029 }, +{ 0xC02A, 0xC02A, 0xC02A }, +{ 0xC02B, 0xC02B, 0xC02B }, +{ 0xC02C, 0xC02C, 0xC02C }, +{ 0xC02D, 0xC02D, 0xC02D }, +{ 0xC02E, 0xC02E, 0xC02E }, +{ 0xC02F, 0xC02F, 0xC02F }, +{ 0xC030, 0xC030, 0xC030 }, +{ 0xC031, 0xC031, 0xC031 }, +{ 0xC032, 0xC032, 0xC032 }, +{ 0xC033, 0xC033, 0xC033 }, +{ 0xC034, 0xC034, 0xC034 }, +{ 0xC035, 0xC035, 0xC035 }, +{ 0xC036, 0xC036, 0xC036 }, +{ 0xC037, 0xC037, 0xC037 }, +{ 0xC038, 0xC038, 0xC038 }, +{ 0xC039, 0xC039, 0xC039 }, +{ 0xC03A, 0xC03A, 0xC03A }, +{ 0xC03B, 0xC03B, 0xC03B }, +{ 0xC03C, 0xC03C, 0xC03C }, +{ 0xC03D, 0xC03D, 0xC03D }, +{ 0xC03E, 0xC03E, 0xC03E }, +{ 0xC03F, 0xC03F, 0xC03F }, +{ 0xC040, 0xC040, 0xC040 }, +{ 0xC041, 0xC041, 0xC041 }, +{ 0xC042, 0xC042, 0xC042 }, +{ 0xC043, 0xC043, 0xC043 }, +{ 0xC044, 0xC044, 0xC044 }, +{ 0xC045, 0xC045, 0xC045 }, +{ 0xC046, 0xC046, 0xC046 }, +{ 0xC047, 0xC047, 0xC047 }, +{ 0xC048, 0xC048, 0xC048 }, +{ 0xC049, 0xC049, 0xC049 }, +{ 0xC04A, 0xC04A, 0xC04A }, +{ 0xC04B, 0xC04B, 0xC04B }, +{ 0xC04C, 0xC04C, 0xC04C }, +{ 0xC04D, 0xC04D, 0xC04D }, +{ 0xC04E, 0xC04E, 0xC04E }, +{ 0xC04F, 0xC04F, 0xC04F }, +{ 0xC050, 0xC050, 0xC050 }, +{ 0xC051, 0xC051, 0xC051 }, +{ 0xC052, 0xC052, 0xC052 }, +{ 0xC053, 0xC053, 0xC053 }, +{ 0xC054, 0xC054, 0xC054 }, +{ 0xC055, 0xC055, 0xC055 }, +{ 0xC056, 0xC056, 0xC056 }, +{ 0xC057, 0xC057, 0xC057 }, +{ 0xC058, 0xC058, 0xC058 }, +{ 0xC059, 0xC059, 0xC059 }, +{ 0xC05A, 0xC05A, 0xC05A }, +{ 0xC05B, 0xC05B, 0xC05B }, +{ 0xC05C, 0xC05C, 0xC05C }, +{ 0xC05D, 0xC05D, 0xC05D }, +{ 0xC05E, 0xC05E, 0xC05E }, +{ 0xC05F, 0xC05F, 0xC05F }, +{ 0xC060, 0xC060, 0xC060 }, +{ 0xC061, 0xC061, 0xC061 }, +{ 0xC062, 0xC062, 0xC062 }, +{ 0xC063, 0xC063, 0xC063 }, +{ 0xC064, 0xC064, 0xC064 }, +{ 0xC065, 0xC065, 0xC065 }, +{ 0xC066, 0xC066, 0xC066 }, +{ 0xC067, 0xC067, 0xC067 }, +{ 0xC068, 0xC068, 0xC068 }, +{ 0xC069, 0xC069, 0xC069 }, +{ 0xC06A, 0xC06A, 0xC06A }, +{ 0xC06B, 0xC06B, 0xC06B }, +{ 0xC06C, 0xC06C, 0xC06C }, +{ 0xC06D, 0xC06D, 0xC06D }, +{ 0xC06E, 0xC06E, 0xC06E }, +{ 0xC06F, 0xC06F, 0xC06F }, +{ 0xC070, 0xC070, 0xC070 }, +{ 0xC071, 0xC071, 0xC071 }, +{ 0xC072, 0xC072, 0xC072 }, +{ 0xC073, 0xC073, 0xC073 }, +{ 0xC074, 0xC074, 0xC074 }, +{ 0xC075, 0xC075, 0xC075 }, +{ 0xC076, 0xC076, 0xC076 }, +{ 0xC077, 0xC077, 0xC077 }, +{ 0xC078, 0xC078, 0xC078 }, +{ 0xC079, 0xC079, 0xC079 }, +{ 0xC07A, 0xC07A, 0xC07A }, +{ 0xC07B, 0xC07B, 0xC07B }, +{ 0xC07C, 0xC07C, 0xC07C }, +{ 0xC07D, 0xC07D, 0xC07D }, +{ 0xC07E, 0xC07E, 0xC07E }, +{ 0xC07F, 0xC07F, 0xC07F }, +{ 0xC080, 0xC080, 0xC080 }, +{ 0xC081, 0xC081, 0xC081 }, +{ 0xC082, 0xC082, 0xC082 }, +{ 0xC083, 0xC083, 0xC083 }, +{ 0xC084, 0xC084, 0xC084 }, +{ 0xC085, 0xC085, 0xC085 }, +{ 0xC086, 0xC086, 0xC086 }, +{ 0xC087, 0xC087, 0xC087 }, +{ 0xC088, 0xC088, 0xC088 }, +{ 0xC089, 0xC089, 0xC089 }, +{ 0xC08A, 0xC08A, 0xC08A }, +{ 0xC08B, 0xC08B, 0xC08B }, +{ 0xC08C, 0xC08C, 0xC08C }, +{ 0xC08D, 0xC08D, 0xC08D }, +{ 0xC08E, 0xC08E, 0xC08E }, +{ 0xC08F, 0xC08F, 0xC08F }, +{ 0xC090, 0xC090, 0xC090 }, +{ 0xC091, 0xC091, 0xC091 }, +{ 0xC092, 0xC092, 0xC092 }, +{ 0xC093, 0xC093, 0xC093 }, +{ 0xC094, 0xC094, 0xC094 }, +{ 0xC095, 0xC095, 0xC095 }, +{ 0xC096, 0xC096, 0xC096 }, +{ 0xC097, 0xC097, 0xC097 }, +{ 0xC098, 0xC098, 0xC098 }, +{ 0xC099, 0xC099, 0xC099 }, +{ 0xC09A, 0xC09A, 0xC09A }, +{ 0xC09B, 0xC09B, 0xC09B }, +{ 0xC09C, 0xC09C, 0xC09C }, +{ 0xC09D, 0xC09D, 0xC09D }, +{ 0xC09E, 0xC09E, 0xC09E }, +{ 0xC09F, 0xC09F, 0xC09F }, +{ 0xC0A0, 0xC0A0, 0xC0A0 }, +{ 0xC0A1, 0xC0A1, 0xC0A1 }, +{ 0xC0A2, 0xC0A2, 0xC0A2 }, +{ 0xC0A3, 0xC0A3, 0xC0A3 }, +{ 0xC0A4, 0xC0A4, 0xC0A4 }, +{ 0xC0A5, 0xC0A5, 0xC0A5 }, +{ 0xC0A6, 0xC0A6, 0xC0A6 }, +{ 0xC0A7, 0xC0A7, 0xC0A7 }, +{ 0xC0A8, 0xC0A8, 0xC0A8 }, +{ 0xC0A9, 0xC0A9, 0xC0A9 }, +{ 0xC0AA, 0xC0AA, 0xC0AA }, +{ 0xC0AB, 0xC0AB, 0xC0AB }, +{ 0xC0AC, 0xC0AC, 0xC0AC }, +{ 0xC0AD, 0xC0AD, 0xC0AD }, +{ 0xC0AE, 0xC0AE, 0xC0AE }, +{ 0xC0AF, 0xC0AF, 0xC0AF }, +{ 0xC0B0, 0xC0B0, 0xC0B0 }, +{ 0xC0B1, 0xC0B1, 0xC0B1 }, +{ 0xC0B2, 0xC0B2, 0xC0B2 }, +{ 0xC0B3, 0xC0B3, 0xC0B3 }, +{ 0xC0B4, 0xC0B4, 0xC0B4 }, +{ 0xC0B5, 0xC0B5, 0xC0B5 }, +{ 0xC0B6, 0xC0B6, 0xC0B6 }, +{ 0xC0B7, 0xC0B7, 0xC0B7 }, +{ 0xC0B8, 0xC0B8, 0xC0B8 }, +{ 0xC0B9, 0xC0B9, 0xC0B9 }, +{ 0xC0BA, 0xC0BA, 0xC0BA }, +{ 0xC0BB, 0xC0BB, 0xC0BB }, +{ 0xC0BC, 0xC0BC, 0xC0BC }, +{ 0xC0BD, 0xC0BD, 0xC0BD }, +{ 0xC0BE, 0xC0BE, 0xC0BE }, +{ 0xC0BF, 0xC0BF, 0xC0BF }, +{ 0xC0C0, 0xC0C0, 0xC0C0 }, +{ 0xC0C1, 0xC0C1, 0xC0C1 }, +{ 0xC0C2, 0xC0C2, 0xC0C2 }, +{ 0xC0C3, 0xC0C3, 0xC0C3 }, +{ 0xC0C4, 0xC0C4, 0xC0C4 }, +{ 0xC0C5, 0xC0C5, 0xC0C5 }, +{ 0xC0C6, 0xC0C6, 0xC0C6 }, +{ 0xC0C7, 0xC0C7, 0xC0C7 }, +{ 0xC0C8, 0xC0C8, 0xC0C8 }, +{ 0xC0C9, 0xC0C9, 0xC0C9 }, +{ 0xC0CA, 0xC0CA, 0xC0CA }, +{ 0xC0CB, 0xC0CB, 0xC0CB }, +{ 0xC0CC, 0xC0CC, 0xC0CC }, +{ 0xC0CD, 0xC0CD, 0xC0CD }, +{ 0xC0CE, 0xC0CE, 0xC0CE }, +{ 0xC0CF, 0xC0CF, 0xC0CF }, +{ 0xC0D0, 0xC0D0, 0xC0D0 }, +{ 0xC0D1, 0xC0D1, 0xC0D1 }, +{ 0xC0D2, 0xC0D2, 0xC0D2 }, +{ 0xC0D3, 0xC0D3, 0xC0D3 }, +{ 0xC0D4, 0xC0D4, 0xC0D4 }, +{ 0xC0D5, 0xC0D5, 0xC0D5 }, +{ 0xC0D6, 0xC0D6, 0xC0D6 }, +{ 0xC0D7, 0xC0D7, 0xC0D7 }, +{ 0xC0D8, 0xC0D8, 0xC0D8 }, +{ 0xC0D9, 0xC0D9, 0xC0D9 }, +{ 0xC0DA, 0xC0DA, 0xC0DA }, +{ 0xC0DB, 0xC0DB, 0xC0DB }, +{ 0xC0DC, 0xC0DC, 0xC0DC }, +{ 0xC0DD, 0xC0DD, 0xC0DD }, +{ 0xC0DE, 0xC0DE, 0xC0DE }, +{ 0xC0DF, 0xC0DF, 0xC0DF }, +{ 0xC0E0, 0xC0E0, 0xC0E0 }, +{ 0xC0E1, 0xC0E1, 0xC0E1 }, +{ 0xC0E2, 0xC0E2, 0xC0E2 }, +{ 0xC0E3, 0xC0E3, 0xC0E3 }, +{ 0xC0E4, 0xC0E4, 0xC0E4 }, +{ 0xC0E5, 0xC0E5, 0xC0E5 }, +{ 0xC0E6, 0xC0E6, 0xC0E6 }, +{ 0xC0E7, 0xC0E7, 0xC0E7 }, +{ 0xC0E8, 0xC0E8, 0xC0E8 }, +{ 0xC0E9, 0xC0E9, 0xC0E9 }, +{ 0xC0EA, 0xC0EA, 0xC0EA }, +{ 0xC0EB, 0xC0EB, 0xC0EB }, +{ 0xC0EC, 0xC0EC, 0xC0EC }, +{ 0xC0ED, 0xC0ED, 0xC0ED }, +{ 0xC0EE, 0xC0EE, 0xC0EE }, +{ 0xC0EF, 0xC0EF, 0xC0EF }, +{ 0xC0F0, 0xC0F0, 0xC0F0 }, +{ 0xC0F1, 0xC0F1, 0xC0F1 }, +{ 0xC0F2, 0xC0F2, 0xC0F2 }, +{ 0xC0F3, 0xC0F3, 0xC0F3 }, +{ 0xC0F4, 0xC0F4, 0xC0F4 }, +{ 0xC0F5, 0xC0F5, 0xC0F5 }, +{ 0xC0F6, 0xC0F6, 0xC0F6 }, +{ 0xC0F7, 0xC0F7, 0xC0F7 }, +{ 0xC0F8, 0xC0F8, 0xC0F8 }, +{ 0xC0F9, 0xC0F9, 0xC0F9 }, +{ 0xC0FA, 0xC0FA, 0xC0FA }, +{ 0xC0FB, 0xC0FB, 0xC0FB }, +{ 0xC0FC, 0xC0FC, 0xC0FC }, +{ 0xC0FD, 0xC0FD, 0xC0FD }, +{ 0xC0FE, 0xC0FE, 0xC0FE }, +{ 0xC0FF, 0xC0FF, 0xC0FF }, +{ 0xC100, 0xC100, 0xC100 }, +{ 0xC101, 0xC101, 0xC101 }, +{ 0xC102, 0xC102, 0xC102 }, +{ 0xC103, 0xC103, 0xC103 }, +{ 0xC104, 0xC104, 0xC104 }, +{ 0xC105, 0xC105, 0xC105 }, +{ 0xC106, 0xC106, 0xC106 }, +{ 0xC107, 0xC107, 0xC107 }, +{ 0xC108, 0xC108, 0xC108 }, +{ 0xC109, 0xC109, 0xC109 }, +{ 0xC10A, 0xC10A, 0xC10A }, +{ 0xC10B, 0xC10B, 0xC10B }, +{ 0xC10C, 0xC10C, 0xC10C }, +{ 0xC10D, 0xC10D, 0xC10D }, +{ 0xC10E, 0xC10E, 0xC10E }, +{ 0xC10F, 0xC10F, 0xC10F }, +{ 0xC110, 0xC110, 0xC110 }, +{ 0xC111, 0xC111, 0xC111 }, +{ 0xC112, 0xC112, 0xC112 }, +{ 0xC113, 0xC113, 0xC113 }, +{ 0xC114, 0xC114, 0xC114 }, +{ 0xC115, 0xC115, 0xC115 }, +{ 0xC116, 0xC116, 0xC116 }, +{ 0xC117, 0xC117, 0xC117 }, +{ 0xC118, 0xC118, 0xC118 }, +{ 0xC119, 0xC119, 0xC119 }, +{ 0xC11A, 0xC11A, 0xC11A }, +{ 0xC11B, 0xC11B, 0xC11B }, +{ 0xC11C, 0xC11C, 0xC11C }, +{ 0xC11D, 0xC11D, 0xC11D }, +{ 0xC11E, 0xC11E, 0xC11E }, +{ 0xC11F, 0xC11F, 0xC11F }, +{ 0xC120, 0xC120, 0xC120 }, +{ 0xC121, 0xC121, 0xC121 }, +{ 0xC122, 0xC122, 0xC122 }, +{ 0xC123, 0xC123, 0xC123 }, +{ 0xC124, 0xC124, 0xC124 }, +{ 0xC125, 0xC125, 0xC125 }, +{ 0xC126, 0xC126, 0xC126 }, +{ 0xC127, 0xC127, 0xC127 }, +{ 0xC128, 0xC128, 0xC128 }, +{ 0xC129, 0xC129, 0xC129 }, +{ 0xC12A, 0xC12A, 0xC12A }, +{ 0xC12B, 0xC12B, 0xC12B }, +{ 0xC12C, 0xC12C, 0xC12C }, +{ 0xC12D, 0xC12D, 0xC12D }, +{ 0xC12E, 0xC12E, 0xC12E }, +{ 0xC12F, 0xC12F, 0xC12F }, +{ 0xC130, 0xC130, 0xC130 }, +{ 0xC131, 0xC131, 0xC131 }, +{ 0xC132, 0xC132, 0xC132 }, +{ 0xC133, 0xC133, 0xC133 }, +{ 0xC134, 0xC134, 0xC134 }, +{ 0xC135, 0xC135, 0xC135 }, +{ 0xC136, 0xC136, 0xC136 }, +{ 0xC137, 0xC137, 0xC137 }, +{ 0xC138, 0xC138, 0xC138 }, +{ 0xC139, 0xC139, 0xC139 }, +{ 0xC13A, 0xC13A, 0xC13A }, +{ 0xC13B, 0xC13B, 0xC13B }, +{ 0xC13C, 0xC13C, 0xC13C }, +{ 0xC13D, 0xC13D, 0xC13D }, +{ 0xC13E, 0xC13E, 0xC13E }, +{ 0xC13F, 0xC13F, 0xC13F }, +{ 0xC140, 0xC140, 0xC140 }, +{ 0xC141, 0xC141, 0xC141 }, +{ 0xC142, 0xC142, 0xC142 }, +{ 0xC143, 0xC143, 0xC143 }, +{ 0xC144, 0xC144, 0xC144 }, +{ 0xC145, 0xC145, 0xC145 }, +{ 0xC146, 0xC146, 0xC146 }, +{ 0xC147, 0xC147, 0xC147 }, +{ 0xC148, 0xC148, 0xC148 }, +{ 0xC149, 0xC149, 0xC149 }, +{ 0xC14A, 0xC14A, 0xC14A }, +{ 0xC14B, 0xC14B, 0xC14B }, +{ 0xC14C, 0xC14C, 0xC14C }, +{ 0xC14D, 0xC14D, 0xC14D }, +{ 0xC14E, 0xC14E, 0xC14E }, +{ 0xC14F, 0xC14F, 0xC14F }, +{ 0xC150, 0xC150, 0xC150 }, +{ 0xC151, 0xC151, 0xC151 }, +{ 0xC152, 0xC152, 0xC152 }, +{ 0xC153, 0xC153, 0xC153 }, +{ 0xC154, 0xC154, 0xC154 }, +{ 0xC155, 0xC155, 0xC155 }, +{ 0xC156, 0xC156, 0xC156 }, +{ 0xC157, 0xC157, 0xC157 }, +{ 0xC158, 0xC158, 0xC158 }, +{ 0xC159, 0xC159, 0xC159 }, +{ 0xC15A, 0xC15A, 0xC15A }, +{ 0xC15B, 0xC15B, 0xC15B }, +{ 0xC15C, 0xC15C, 0xC15C }, +{ 0xC15D, 0xC15D, 0xC15D }, +{ 0xC15E, 0xC15E, 0xC15E }, +{ 0xC15F, 0xC15F, 0xC15F }, +{ 0xC160, 0xC160, 0xC160 }, +{ 0xC161, 0xC161, 0xC161 }, +{ 0xC162, 0xC162, 0xC162 }, +{ 0xC163, 0xC163, 0xC163 }, +{ 0xC164, 0xC164, 0xC164 }, +{ 0xC165, 0xC165, 0xC165 }, +{ 0xC166, 0xC166, 0xC166 }, +{ 0xC167, 0xC167, 0xC167 }, +{ 0xC168, 0xC168, 0xC168 }, +{ 0xC169, 0xC169, 0xC169 }, +{ 0xC16A, 0xC16A, 0xC16A }, +{ 0xC16B, 0xC16B, 0xC16B }, +{ 0xC16C, 0xC16C, 0xC16C }, +{ 0xC16D, 0xC16D, 0xC16D }, +{ 0xC16E, 0xC16E, 0xC16E }, +{ 0xC16F, 0xC16F, 0xC16F }, +{ 0xC170, 0xC170, 0xC170 }, +{ 0xC171, 0xC171, 0xC171 }, +{ 0xC172, 0xC172, 0xC172 }, +{ 0xC173, 0xC173, 0xC173 }, +{ 0xC174, 0xC174, 0xC174 }, +{ 0xC175, 0xC175, 0xC175 }, +{ 0xC176, 0xC176, 0xC176 }, +{ 0xC177, 0xC177, 0xC177 }, +{ 0xC178, 0xC178, 0xC178 }, +{ 0xC179, 0xC179, 0xC179 }, +{ 0xC17A, 0xC17A, 0xC17A }, +{ 0xC17B, 0xC17B, 0xC17B }, +{ 0xC17C, 0xC17C, 0xC17C }, +{ 0xC17D, 0xC17D, 0xC17D }, +{ 0xC17E, 0xC17E, 0xC17E }, +{ 0xC17F, 0xC17F, 0xC17F }, +{ 0xC180, 0xC180, 0xC180 }, +{ 0xC181, 0xC181, 0xC181 }, +{ 0xC182, 0xC182, 0xC182 }, +{ 0xC183, 0xC183, 0xC183 }, +{ 0xC184, 0xC184, 0xC184 }, +{ 0xC185, 0xC185, 0xC185 }, +{ 0xC186, 0xC186, 0xC186 }, +{ 0xC187, 0xC187, 0xC187 }, +{ 0xC188, 0xC188, 0xC188 }, +{ 0xC189, 0xC189, 0xC189 }, +{ 0xC18A, 0xC18A, 0xC18A }, +{ 0xC18B, 0xC18B, 0xC18B }, +{ 0xC18C, 0xC18C, 0xC18C }, +{ 0xC18D, 0xC18D, 0xC18D }, +{ 0xC18E, 0xC18E, 0xC18E }, +{ 0xC18F, 0xC18F, 0xC18F }, +{ 0xC190, 0xC190, 0xC190 }, +{ 0xC191, 0xC191, 0xC191 }, +{ 0xC192, 0xC192, 0xC192 }, +{ 0xC193, 0xC193, 0xC193 }, +{ 0xC194, 0xC194, 0xC194 }, +{ 0xC195, 0xC195, 0xC195 }, +{ 0xC196, 0xC196, 0xC196 }, +{ 0xC197, 0xC197, 0xC197 }, +{ 0xC198, 0xC198, 0xC198 }, +{ 0xC199, 0xC199, 0xC199 }, +{ 0xC19A, 0xC19A, 0xC19A }, +{ 0xC19B, 0xC19B, 0xC19B }, +{ 0xC19C, 0xC19C, 0xC19C }, +{ 0xC19D, 0xC19D, 0xC19D }, +{ 0xC19E, 0xC19E, 0xC19E }, +{ 0xC19F, 0xC19F, 0xC19F }, +{ 0xC1A0, 0xC1A0, 0xC1A0 }, +{ 0xC1A1, 0xC1A1, 0xC1A1 }, +{ 0xC1A2, 0xC1A2, 0xC1A2 }, +{ 0xC1A3, 0xC1A3, 0xC1A3 }, +{ 0xC1A4, 0xC1A4, 0xC1A4 }, +{ 0xC1A5, 0xC1A5, 0xC1A5 }, +{ 0xC1A6, 0xC1A6, 0xC1A6 }, +{ 0xC1A7, 0xC1A7, 0xC1A7 }, +{ 0xC1A8, 0xC1A8, 0xC1A8 }, +{ 0xC1A9, 0xC1A9, 0xC1A9 }, +{ 0xC1AA, 0xC1AA, 0xC1AA }, +{ 0xC1AB, 0xC1AB, 0xC1AB }, +{ 0xC1AC, 0xC1AC, 0xC1AC }, +{ 0xC1AD, 0xC1AD, 0xC1AD }, +{ 0xC1AE, 0xC1AE, 0xC1AE }, +{ 0xC1AF, 0xC1AF, 0xC1AF }, +{ 0xC1B0, 0xC1B0, 0xC1B0 }, +{ 0xC1B1, 0xC1B1, 0xC1B1 }, +{ 0xC1B2, 0xC1B2, 0xC1B2 }, +{ 0xC1B3, 0xC1B3, 0xC1B3 }, +{ 0xC1B4, 0xC1B4, 0xC1B4 }, +{ 0xC1B5, 0xC1B5, 0xC1B5 }, +{ 0xC1B6, 0xC1B6, 0xC1B6 }, +{ 0xC1B7, 0xC1B7, 0xC1B7 }, +{ 0xC1B8, 0xC1B8, 0xC1B8 }, +{ 0xC1B9, 0xC1B9, 0xC1B9 }, +{ 0xC1BA, 0xC1BA, 0xC1BA }, +{ 0xC1BB, 0xC1BB, 0xC1BB }, +{ 0xC1BC, 0xC1BC, 0xC1BC }, +{ 0xC1BD, 0xC1BD, 0xC1BD }, +{ 0xC1BE, 0xC1BE, 0xC1BE }, +{ 0xC1BF, 0xC1BF, 0xC1BF }, +{ 0xC1C0, 0xC1C0, 0xC1C0 }, +{ 0xC1C1, 0xC1C1, 0xC1C1 }, +{ 0xC1C2, 0xC1C2, 0xC1C2 }, +{ 0xC1C3, 0xC1C3, 0xC1C3 }, +{ 0xC1C4, 0xC1C4, 0xC1C4 }, +{ 0xC1C5, 0xC1C5, 0xC1C5 }, +{ 0xC1C6, 0xC1C6, 0xC1C6 }, +{ 0xC1C7, 0xC1C7, 0xC1C7 }, +{ 0xC1C8, 0xC1C8, 0xC1C8 }, +{ 0xC1C9, 0xC1C9, 0xC1C9 }, +{ 0xC1CA, 0xC1CA, 0xC1CA }, +{ 0xC1CB, 0xC1CB, 0xC1CB }, +{ 0xC1CC, 0xC1CC, 0xC1CC }, +{ 0xC1CD, 0xC1CD, 0xC1CD }, +{ 0xC1CE, 0xC1CE, 0xC1CE }, +{ 0xC1CF, 0xC1CF, 0xC1CF }, +{ 0xC1D0, 0xC1D0, 0xC1D0 }, +{ 0xC1D1, 0xC1D1, 0xC1D1 }, +{ 0xC1D2, 0xC1D2, 0xC1D2 }, +{ 0xC1D3, 0xC1D3, 0xC1D3 }, +{ 0xC1D4, 0xC1D4, 0xC1D4 }, +{ 0xC1D5, 0xC1D5, 0xC1D5 }, +{ 0xC1D6, 0xC1D6, 0xC1D6 }, +{ 0xC1D7, 0xC1D7, 0xC1D7 }, +{ 0xC1D8, 0xC1D8, 0xC1D8 }, +{ 0xC1D9, 0xC1D9, 0xC1D9 }, +{ 0xC1DA, 0xC1DA, 0xC1DA }, +{ 0xC1DB, 0xC1DB, 0xC1DB }, +{ 0xC1DC, 0xC1DC, 0xC1DC }, +{ 0xC1DD, 0xC1DD, 0xC1DD }, +{ 0xC1DE, 0xC1DE, 0xC1DE }, +{ 0xC1DF, 0xC1DF, 0xC1DF }, +{ 0xC1E0, 0xC1E0, 0xC1E0 }, +{ 0xC1E1, 0xC1E1, 0xC1E1 }, +{ 0xC1E2, 0xC1E2, 0xC1E2 }, +{ 0xC1E3, 0xC1E3, 0xC1E3 }, +{ 0xC1E4, 0xC1E4, 0xC1E4 }, +{ 0xC1E5, 0xC1E5, 0xC1E5 }, +{ 0xC1E6, 0xC1E6, 0xC1E6 }, +{ 0xC1E7, 0xC1E7, 0xC1E7 }, +{ 0xC1E8, 0xC1E8, 0xC1E8 }, +{ 0xC1E9, 0xC1E9, 0xC1E9 }, +{ 0xC1EA, 0xC1EA, 0xC1EA }, +{ 0xC1EB, 0xC1EB, 0xC1EB }, +{ 0xC1EC, 0xC1EC, 0xC1EC }, +{ 0xC1ED, 0xC1ED, 0xC1ED }, +{ 0xC1EE, 0xC1EE, 0xC1EE }, +{ 0xC1EF, 0xC1EF, 0xC1EF }, +{ 0xC1F0, 0xC1F0, 0xC1F0 }, +{ 0xC1F1, 0xC1F1, 0xC1F1 }, +{ 0xC1F2, 0xC1F2, 0xC1F2 }, +{ 0xC1F3, 0xC1F3, 0xC1F3 }, +{ 0xC1F4, 0xC1F4, 0xC1F4 }, +{ 0xC1F5, 0xC1F5, 0xC1F5 }, +{ 0xC1F6, 0xC1F6, 0xC1F6 }, +{ 0xC1F7, 0xC1F7, 0xC1F7 }, +{ 0xC1F8, 0xC1F8, 0xC1F8 }, +{ 0xC1F9, 0xC1F9, 0xC1F9 }, +{ 0xC1FA, 0xC1FA, 0xC1FA }, +{ 0xC1FB, 0xC1FB, 0xC1FB }, +{ 0xC1FC, 0xC1FC, 0xC1FC }, +{ 0xC1FD, 0xC1FD, 0xC1FD }, +{ 0xC1FE, 0xC1FE, 0xC1FE }, +{ 0xC1FF, 0xC1FF, 0xC1FF }, +{ 0xC200, 0xC200, 0xC200 }, +{ 0xC201, 0xC201, 0xC201 }, +{ 0xC202, 0xC202, 0xC202 }, +{ 0xC203, 0xC203, 0xC203 }, +{ 0xC204, 0xC204, 0xC204 }, +{ 0xC205, 0xC205, 0xC205 }, +{ 0xC206, 0xC206, 0xC206 }, +{ 0xC207, 0xC207, 0xC207 }, +{ 0xC208, 0xC208, 0xC208 }, +{ 0xC209, 0xC209, 0xC209 }, +{ 0xC20A, 0xC20A, 0xC20A }, +{ 0xC20B, 0xC20B, 0xC20B }, +{ 0xC20C, 0xC20C, 0xC20C }, +{ 0xC20D, 0xC20D, 0xC20D }, +{ 0xC20E, 0xC20E, 0xC20E }, +{ 0xC20F, 0xC20F, 0xC20F }, +{ 0xC210, 0xC210, 0xC210 }, +{ 0xC211, 0xC211, 0xC211 }, +{ 0xC212, 0xC212, 0xC212 }, +{ 0xC213, 0xC213, 0xC213 }, +{ 0xC214, 0xC214, 0xC214 }, +{ 0xC215, 0xC215, 0xC215 }, +{ 0xC216, 0xC216, 0xC216 }, +{ 0xC217, 0xC217, 0xC217 }, +{ 0xC218, 0xC218, 0xC218 }, +{ 0xC219, 0xC219, 0xC219 }, +{ 0xC21A, 0xC21A, 0xC21A }, +{ 0xC21B, 0xC21B, 0xC21B }, +{ 0xC21C, 0xC21C, 0xC21C }, +{ 0xC21D, 0xC21D, 0xC21D }, +{ 0xC21E, 0xC21E, 0xC21E }, +{ 0xC21F, 0xC21F, 0xC21F }, +{ 0xC220, 0xC220, 0xC220 }, +{ 0xC221, 0xC221, 0xC221 }, +{ 0xC222, 0xC222, 0xC222 }, +{ 0xC223, 0xC223, 0xC223 }, +{ 0xC224, 0xC224, 0xC224 }, +{ 0xC225, 0xC225, 0xC225 }, +{ 0xC226, 0xC226, 0xC226 }, +{ 0xC227, 0xC227, 0xC227 }, +{ 0xC228, 0xC228, 0xC228 }, +{ 0xC229, 0xC229, 0xC229 }, +{ 0xC22A, 0xC22A, 0xC22A }, +{ 0xC22B, 0xC22B, 0xC22B }, +{ 0xC22C, 0xC22C, 0xC22C }, +{ 0xC22D, 0xC22D, 0xC22D }, +{ 0xC22E, 0xC22E, 0xC22E }, +{ 0xC22F, 0xC22F, 0xC22F }, +{ 0xC230, 0xC230, 0xC230 }, +{ 0xC231, 0xC231, 0xC231 }, +{ 0xC232, 0xC232, 0xC232 }, +{ 0xC233, 0xC233, 0xC233 }, +{ 0xC234, 0xC234, 0xC234 }, +{ 0xC235, 0xC235, 0xC235 }, +{ 0xC236, 0xC236, 0xC236 }, +{ 0xC237, 0xC237, 0xC237 }, +{ 0xC238, 0xC238, 0xC238 }, +{ 0xC239, 0xC239, 0xC239 }, +{ 0xC23A, 0xC23A, 0xC23A }, +{ 0xC23B, 0xC23B, 0xC23B }, +{ 0xC23C, 0xC23C, 0xC23C }, +{ 0xC23D, 0xC23D, 0xC23D }, +{ 0xC23E, 0xC23E, 0xC23E }, +{ 0xC23F, 0xC23F, 0xC23F }, +{ 0xC240, 0xC240, 0xC240 }, +{ 0xC241, 0xC241, 0xC241 }, +{ 0xC242, 0xC242, 0xC242 }, +{ 0xC243, 0xC243, 0xC243 }, +{ 0xC244, 0xC244, 0xC244 }, +{ 0xC245, 0xC245, 0xC245 }, +{ 0xC246, 0xC246, 0xC246 }, +{ 0xC247, 0xC247, 0xC247 }, +{ 0xC248, 0xC248, 0xC248 }, +{ 0xC249, 0xC249, 0xC249 }, +{ 0xC24A, 0xC24A, 0xC24A }, +{ 0xC24B, 0xC24B, 0xC24B }, +{ 0xC24C, 0xC24C, 0xC24C }, +{ 0xC24D, 0xC24D, 0xC24D }, +{ 0xC24E, 0xC24E, 0xC24E }, +{ 0xC24F, 0xC24F, 0xC24F }, +{ 0xC250, 0xC250, 0xC250 }, +{ 0xC251, 0xC251, 0xC251 }, +{ 0xC252, 0xC252, 0xC252 }, +{ 0xC253, 0xC253, 0xC253 }, +{ 0xC254, 0xC254, 0xC254 }, +{ 0xC255, 0xC255, 0xC255 }, +{ 0xC256, 0xC256, 0xC256 }, +{ 0xC257, 0xC257, 0xC257 }, +{ 0xC258, 0xC258, 0xC258 }, +{ 0xC259, 0xC259, 0xC259 }, +{ 0xC25A, 0xC25A, 0xC25A }, +{ 0xC25B, 0xC25B, 0xC25B }, +{ 0xC25C, 0xC25C, 0xC25C }, +{ 0xC25D, 0xC25D, 0xC25D }, +{ 0xC25E, 0xC25E, 0xC25E }, +{ 0xC25F, 0xC25F, 0xC25F }, +{ 0xC260, 0xC260, 0xC260 }, +{ 0xC261, 0xC261, 0xC261 }, +{ 0xC262, 0xC262, 0xC262 }, +{ 0xC263, 0xC263, 0xC263 }, +{ 0xC264, 0xC264, 0xC264 }, +{ 0xC265, 0xC265, 0xC265 }, +{ 0xC266, 0xC266, 0xC266 }, +{ 0xC267, 0xC267, 0xC267 }, +{ 0xC268, 0xC268, 0xC268 }, +{ 0xC269, 0xC269, 0xC269 }, +{ 0xC26A, 0xC26A, 0xC26A }, +{ 0xC26B, 0xC26B, 0xC26B }, +{ 0xC26C, 0xC26C, 0xC26C }, +{ 0xC26D, 0xC26D, 0xC26D }, +{ 0xC26E, 0xC26E, 0xC26E }, +{ 0xC26F, 0xC26F, 0xC26F }, +{ 0xC270, 0xC270, 0xC270 }, +{ 0xC271, 0xC271, 0xC271 }, +{ 0xC272, 0xC272, 0xC272 }, +{ 0xC273, 0xC273, 0xC273 }, +{ 0xC274, 0xC274, 0xC274 }, +{ 0xC275, 0xC275, 0xC275 }, +{ 0xC276, 0xC276, 0xC276 }, +{ 0xC277, 0xC277, 0xC277 }, +{ 0xC278, 0xC278, 0xC278 }, +{ 0xC279, 0xC279, 0xC279 }, +{ 0xC27A, 0xC27A, 0xC27A }, +{ 0xC27B, 0xC27B, 0xC27B }, +{ 0xC27C, 0xC27C, 0xC27C }, +{ 0xC27D, 0xC27D, 0xC27D }, +{ 0xC27E, 0xC27E, 0xC27E }, +{ 0xC27F, 0xC27F, 0xC27F }, +{ 0xC280, 0xC280, 0xC280 }, +{ 0xC281, 0xC281, 0xC281 }, +{ 0xC282, 0xC282, 0xC282 }, +{ 0xC283, 0xC283, 0xC283 }, +{ 0xC284, 0xC284, 0xC284 }, +{ 0xC285, 0xC285, 0xC285 }, +{ 0xC286, 0xC286, 0xC286 }, +{ 0xC287, 0xC287, 0xC287 }, +{ 0xC288, 0xC288, 0xC288 }, +{ 0xC289, 0xC289, 0xC289 }, +{ 0xC28A, 0xC28A, 0xC28A }, +{ 0xC28B, 0xC28B, 0xC28B }, +{ 0xC28C, 0xC28C, 0xC28C }, +{ 0xC28D, 0xC28D, 0xC28D }, +{ 0xC28E, 0xC28E, 0xC28E }, +{ 0xC28F, 0xC28F, 0xC28F }, +{ 0xC290, 0xC290, 0xC290 }, +{ 0xC291, 0xC291, 0xC291 }, +{ 0xC292, 0xC292, 0xC292 }, +{ 0xC293, 0xC293, 0xC293 }, +{ 0xC294, 0xC294, 0xC294 }, +{ 0xC295, 0xC295, 0xC295 }, +{ 0xC296, 0xC296, 0xC296 }, +{ 0xC297, 0xC297, 0xC297 }, +{ 0xC298, 0xC298, 0xC298 }, +{ 0xC299, 0xC299, 0xC299 }, +{ 0xC29A, 0xC29A, 0xC29A }, +{ 0xC29B, 0xC29B, 0xC29B }, +{ 0xC29C, 0xC29C, 0xC29C }, +{ 0xC29D, 0xC29D, 0xC29D }, +{ 0xC29E, 0xC29E, 0xC29E }, +{ 0xC29F, 0xC29F, 0xC29F }, +{ 0xC2A0, 0xC2A0, 0xC2A0 }, +{ 0xC2A1, 0xC2A1, 0xC2A1 }, +{ 0xC2A2, 0xC2A2, 0xC2A2 }, +{ 0xC2A3, 0xC2A3, 0xC2A3 }, +{ 0xC2A4, 0xC2A4, 0xC2A4 }, +{ 0xC2A5, 0xC2A5, 0xC2A5 }, +{ 0xC2A6, 0xC2A6, 0xC2A6 }, +{ 0xC2A7, 0xC2A7, 0xC2A7 }, +{ 0xC2A8, 0xC2A8, 0xC2A8 }, +{ 0xC2A9, 0xC2A9, 0xC2A9 }, +{ 0xC2AA, 0xC2AA, 0xC2AA }, +{ 0xC2AB, 0xC2AB, 0xC2AB }, +{ 0xC2AC, 0xC2AC, 0xC2AC }, +{ 0xC2AD, 0xC2AD, 0xC2AD }, +{ 0xC2AE, 0xC2AE, 0xC2AE }, +{ 0xC2AF, 0xC2AF, 0xC2AF }, +{ 0xC2B0, 0xC2B0, 0xC2B0 }, +{ 0xC2B1, 0xC2B1, 0xC2B1 }, +{ 0xC2B2, 0xC2B2, 0xC2B2 }, +{ 0xC2B3, 0xC2B3, 0xC2B3 }, +{ 0xC2B4, 0xC2B4, 0xC2B4 }, +{ 0xC2B5, 0xC2B5, 0xC2B5 }, +{ 0xC2B6, 0xC2B6, 0xC2B6 }, +{ 0xC2B7, 0xC2B7, 0xC2B7 }, +{ 0xC2B8, 0xC2B8, 0xC2B8 }, +{ 0xC2B9, 0xC2B9, 0xC2B9 }, +{ 0xC2BA, 0xC2BA, 0xC2BA }, +{ 0xC2BB, 0xC2BB, 0xC2BB }, +{ 0xC2BC, 0xC2BC, 0xC2BC }, +{ 0xC2BD, 0xC2BD, 0xC2BD }, +{ 0xC2BE, 0xC2BE, 0xC2BE }, +{ 0xC2BF, 0xC2BF, 0xC2BF }, +{ 0xC2C0, 0xC2C0, 0xC2C0 }, +{ 0xC2C1, 0xC2C1, 0xC2C1 }, +{ 0xC2C2, 0xC2C2, 0xC2C2 }, +{ 0xC2C3, 0xC2C3, 0xC2C3 }, +{ 0xC2C4, 0xC2C4, 0xC2C4 }, +{ 0xC2C5, 0xC2C5, 0xC2C5 }, +{ 0xC2C6, 0xC2C6, 0xC2C6 }, +{ 0xC2C7, 0xC2C7, 0xC2C7 }, +{ 0xC2C8, 0xC2C8, 0xC2C8 }, +{ 0xC2C9, 0xC2C9, 0xC2C9 }, +{ 0xC2CA, 0xC2CA, 0xC2CA }, +{ 0xC2CB, 0xC2CB, 0xC2CB }, +{ 0xC2CC, 0xC2CC, 0xC2CC }, +{ 0xC2CD, 0xC2CD, 0xC2CD }, +{ 0xC2CE, 0xC2CE, 0xC2CE }, +{ 0xC2CF, 0xC2CF, 0xC2CF }, +{ 0xC2D0, 0xC2D0, 0xC2D0 }, +{ 0xC2D1, 0xC2D1, 0xC2D1 }, +{ 0xC2D2, 0xC2D2, 0xC2D2 }, +{ 0xC2D3, 0xC2D3, 0xC2D3 }, +{ 0xC2D4, 0xC2D4, 0xC2D4 }, +{ 0xC2D5, 0xC2D5, 0xC2D5 }, +{ 0xC2D6, 0xC2D6, 0xC2D6 }, +{ 0xC2D7, 0xC2D7, 0xC2D7 }, +{ 0xC2D8, 0xC2D8, 0xC2D8 }, +{ 0xC2D9, 0xC2D9, 0xC2D9 }, +{ 0xC2DA, 0xC2DA, 0xC2DA }, +{ 0xC2DB, 0xC2DB, 0xC2DB }, +{ 0xC2DC, 0xC2DC, 0xC2DC }, +{ 0xC2DD, 0xC2DD, 0xC2DD }, +{ 0xC2DE, 0xC2DE, 0xC2DE }, +{ 0xC2DF, 0xC2DF, 0xC2DF }, +{ 0xC2E0, 0xC2E0, 0xC2E0 }, +{ 0xC2E1, 0xC2E1, 0xC2E1 }, +{ 0xC2E2, 0xC2E2, 0xC2E2 }, +{ 0xC2E3, 0xC2E3, 0xC2E3 }, +{ 0xC2E4, 0xC2E4, 0xC2E4 }, +{ 0xC2E5, 0xC2E5, 0xC2E5 }, +{ 0xC2E6, 0xC2E6, 0xC2E6 }, +{ 0xC2E7, 0xC2E7, 0xC2E7 }, +{ 0xC2E8, 0xC2E8, 0xC2E8 }, +{ 0xC2E9, 0xC2E9, 0xC2E9 }, +{ 0xC2EA, 0xC2EA, 0xC2EA }, +{ 0xC2EB, 0xC2EB, 0xC2EB }, +{ 0xC2EC, 0xC2EC, 0xC2EC }, +{ 0xC2ED, 0xC2ED, 0xC2ED }, +{ 0xC2EE, 0xC2EE, 0xC2EE }, +{ 0xC2EF, 0xC2EF, 0xC2EF }, +{ 0xC2F0, 0xC2F0, 0xC2F0 }, +{ 0xC2F1, 0xC2F1, 0xC2F1 }, +{ 0xC2F2, 0xC2F2, 0xC2F2 }, +{ 0xC2F3, 0xC2F3, 0xC2F3 }, +{ 0xC2F4, 0xC2F4, 0xC2F4 }, +{ 0xC2F5, 0xC2F5, 0xC2F5 }, +{ 0xC2F6, 0xC2F6, 0xC2F6 }, +{ 0xC2F7, 0xC2F7, 0xC2F7 }, +{ 0xC2F8, 0xC2F8, 0xC2F8 }, +{ 0xC2F9, 0xC2F9, 0xC2F9 }, +{ 0xC2FA, 0xC2FA, 0xC2FA }, +{ 0xC2FB, 0xC2FB, 0xC2FB }, +{ 0xC2FC, 0xC2FC, 0xC2FC }, +{ 0xC2FD, 0xC2FD, 0xC2FD }, +{ 0xC2FE, 0xC2FE, 0xC2FE }, +{ 0xC2FF, 0xC2FF, 0xC2FF }, +{ 0xC300, 0xC300, 0xC300 }, +{ 0xC301, 0xC301, 0xC301 }, +{ 0xC302, 0xC302, 0xC302 }, +{ 0xC303, 0xC303, 0xC303 }, +{ 0xC304, 0xC304, 0xC304 }, +{ 0xC305, 0xC305, 0xC305 }, +{ 0xC306, 0xC306, 0xC306 }, +{ 0xC307, 0xC307, 0xC307 }, +{ 0xC308, 0xC308, 0xC308 }, +{ 0xC309, 0xC309, 0xC309 }, +{ 0xC30A, 0xC30A, 0xC30A }, +{ 0xC30B, 0xC30B, 0xC30B }, +{ 0xC30C, 0xC30C, 0xC30C }, +{ 0xC30D, 0xC30D, 0xC30D }, +{ 0xC30E, 0xC30E, 0xC30E }, +{ 0xC30F, 0xC30F, 0xC30F }, +{ 0xC310, 0xC310, 0xC310 }, +{ 0xC311, 0xC311, 0xC311 }, +{ 0xC312, 0xC312, 0xC312 }, +{ 0xC313, 0xC313, 0xC313 }, +{ 0xC314, 0xC314, 0xC314 }, +{ 0xC315, 0xC315, 0xC315 }, +{ 0xC316, 0xC316, 0xC316 }, +{ 0xC317, 0xC317, 0xC317 }, +{ 0xC318, 0xC318, 0xC318 }, +{ 0xC319, 0xC319, 0xC319 }, +{ 0xC31A, 0xC31A, 0xC31A }, +{ 0xC31B, 0xC31B, 0xC31B }, +{ 0xC31C, 0xC31C, 0xC31C }, +{ 0xC31D, 0xC31D, 0xC31D }, +{ 0xC31E, 0xC31E, 0xC31E }, +{ 0xC31F, 0xC31F, 0xC31F }, +{ 0xC320, 0xC320, 0xC320 }, +{ 0xC321, 0xC321, 0xC321 }, +{ 0xC322, 0xC322, 0xC322 }, +{ 0xC323, 0xC323, 0xC323 }, +{ 0xC324, 0xC324, 0xC324 }, +{ 0xC325, 0xC325, 0xC325 }, +{ 0xC326, 0xC326, 0xC326 }, +{ 0xC327, 0xC327, 0xC327 }, +{ 0xC328, 0xC328, 0xC328 }, +{ 0xC329, 0xC329, 0xC329 }, +{ 0xC32A, 0xC32A, 0xC32A }, +{ 0xC32B, 0xC32B, 0xC32B }, +{ 0xC32C, 0xC32C, 0xC32C }, +{ 0xC32D, 0xC32D, 0xC32D }, +{ 0xC32E, 0xC32E, 0xC32E }, +{ 0xC32F, 0xC32F, 0xC32F }, +{ 0xC330, 0xC330, 0xC330 }, +{ 0xC331, 0xC331, 0xC331 }, +{ 0xC332, 0xC332, 0xC332 }, +{ 0xC333, 0xC333, 0xC333 }, +{ 0xC334, 0xC334, 0xC334 }, +{ 0xC335, 0xC335, 0xC335 }, +{ 0xC336, 0xC336, 0xC336 }, +{ 0xC337, 0xC337, 0xC337 }, +{ 0xC338, 0xC338, 0xC338 }, +{ 0xC339, 0xC339, 0xC339 }, +{ 0xC33A, 0xC33A, 0xC33A }, +{ 0xC33B, 0xC33B, 0xC33B }, +{ 0xC33C, 0xC33C, 0xC33C }, +{ 0xC33D, 0xC33D, 0xC33D }, +{ 0xC33E, 0xC33E, 0xC33E }, +{ 0xC33F, 0xC33F, 0xC33F }, +{ 0xC340, 0xC340, 0xC340 }, +{ 0xC341, 0xC341, 0xC341 }, +{ 0xC342, 0xC342, 0xC342 }, +{ 0xC343, 0xC343, 0xC343 }, +{ 0xC344, 0xC344, 0xC344 }, +{ 0xC345, 0xC345, 0xC345 }, +{ 0xC346, 0xC346, 0xC346 }, +{ 0xC347, 0xC347, 0xC347 }, +{ 0xC348, 0xC348, 0xC348 }, +{ 0xC349, 0xC349, 0xC349 }, +{ 0xC34A, 0xC34A, 0xC34A }, +{ 0xC34B, 0xC34B, 0xC34B }, +{ 0xC34C, 0xC34C, 0xC34C }, +{ 0xC34D, 0xC34D, 0xC34D }, +{ 0xC34E, 0xC34E, 0xC34E }, +{ 0xC34F, 0xC34F, 0xC34F }, +{ 0xC350, 0xC350, 0xC350 }, +{ 0xC351, 0xC351, 0xC351 }, +{ 0xC352, 0xC352, 0xC352 }, +{ 0xC353, 0xC353, 0xC353 }, +{ 0xC354, 0xC354, 0xC354 }, +{ 0xC355, 0xC355, 0xC355 }, +{ 0xC356, 0xC356, 0xC356 }, +{ 0xC357, 0xC357, 0xC357 }, +{ 0xC358, 0xC358, 0xC358 }, +{ 0xC359, 0xC359, 0xC359 }, +{ 0xC35A, 0xC35A, 0xC35A }, +{ 0xC35B, 0xC35B, 0xC35B }, +{ 0xC35C, 0xC35C, 0xC35C }, +{ 0xC35D, 0xC35D, 0xC35D }, +{ 0xC35E, 0xC35E, 0xC35E }, +{ 0xC35F, 0xC35F, 0xC35F }, +{ 0xC360, 0xC360, 0xC360 }, +{ 0xC361, 0xC361, 0xC361 }, +{ 0xC362, 0xC362, 0xC362 }, +{ 0xC363, 0xC363, 0xC363 }, +{ 0xC364, 0xC364, 0xC364 }, +{ 0xC365, 0xC365, 0xC365 }, +{ 0xC366, 0xC366, 0xC366 }, +{ 0xC367, 0xC367, 0xC367 }, +{ 0xC368, 0xC368, 0xC368 }, +{ 0xC369, 0xC369, 0xC369 }, +{ 0xC36A, 0xC36A, 0xC36A }, +{ 0xC36B, 0xC36B, 0xC36B }, +{ 0xC36C, 0xC36C, 0xC36C }, +{ 0xC36D, 0xC36D, 0xC36D }, +{ 0xC36E, 0xC36E, 0xC36E }, +{ 0xC36F, 0xC36F, 0xC36F }, +{ 0xC370, 0xC370, 0xC370 }, +{ 0xC371, 0xC371, 0xC371 }, +{ 0xC372, 0xC372, 0xC372 }, +{ 0xC373, 0xC373, 0xC373 }, +{ 0xC374, 0xC374, 0xC374 }, +{ 0xC375, 0xC375, 0xC375 }, +{ 0xC376, 0xC376, 0xC376 }, +{ 0xC377, 0xC377, 0xC377 }, +{ 0xC378, 0xC378, 0xC378 }, +{ 0xC379, 0xC379, 0xC379 }, +{ 0xC37A, 0xC37A, 0xC37A }, +{ 0xC37B, 0xC37B, 0xC37B }, +{ 0xC37C, 0xC37C, 0xC37C }, +{ 0xC37D, 0xC37D, 0xC37D }, +{ 0xC37E, 0xC37E, 0xC37E }, +{ 0xC37F, 0xC37F, 0xC37F }, +{ 0xC380, 0xC380, 0xC380 }, +{ 0xC381, 0xC381, 0xC381 }, +{ 0xC382, 0xC382, 0xC382 }, +{ 0xC383, 0xC383, 0xC383 }, +{ 0xC384, 0xC384, 0xC384 }, +{ 0xC385, 0xC385, 0xC385 }, +{ 0xC386, 0xC386, 0xC386 }, +{ 0xC387, 0xC387, 0xC387 }, +{ 0xC388, 0xC388, 0xC388 }, +{ 0xC389, 0xC389, 0xC389 }, +{ 0xC38A, 0xC38A, 0xC38A }, +{ 0xC38B, 0xC38B, 0xC38B }, +{ 0xC38C, 0xC38C, 0xC38C }, +{ 0xC38D, 0xC38D, 0xC38D }, +{ 0xC38E, 0xC38E, 0xC38E }, +{ 0xC38F, 0xC38F, 0xC38F }, +{ 0xC390, 0xC390, 0xC390 }, +{ 0xC391, 0xC391, 0xC391 }, +{ 0xC392, 0xC392, 0xC392 }, +{ 0xC393, 0xC393, 0xC393 }, +{ 0xC394, 0xC394, 0xC394 }, +{ 0xC395, 0xC395, 0xC395 }, +{ 0xC396, 0xC396, 0xC396 }, +{ 0xC397, 0xC397, 0xC397 }, +{ 0xC398, 0xC398, 0xC398 }, +{ 0xC399, 0xC399, 0xC399 }, +{ 0xC39A, 0xC39A, 0xC39A }, +{ 0xC39B, 0xC39B, 0xC39B }, +{ 0xC39C, 0xC39C, 0xC39C }, +{ 0xC39D, 0xC39D, 0xC39D }, +{ 0xC39E, 0xC39E, 0xC39E }, +{ 0xC39F, 0xC39F, 0xC39F }, +{ 0xC3A0, 0xC3A0, 0xC3A0 }, +{ 0xC3A1, 0xC3A1, 0xC3A1 }, +{ 0xC3A2, 0xC3A2, 0xC3A2 }, +{ 0xC3A3, 0xC3A3, 0xC3A3 }, +{ 0xC3A4, 0xC3A4, 0xC3A4 }, +{ 0xC3A5, 0xC3A5, 0xC3A5 }, +{ 0xC3A6, 0xC3A6, 0xC3A6 }, +{ 0xC3A7, 0xC3A7, 0xC3A7 }, +{ 0xC3A8, 0xC3A8, 0xC3A8 }, +{ 0xC3A9, 0xC3A9, 0xC3A9 }, +{ 0xC3AA, 0xC3AA, 0xC3AA }, +{ 0xC3AB, 0xC3AB, 0xC3AB }, +{ 0xC3AC, 0xC3AC, 0xC3AC }, +{ 0xC3AD, 0xC3AD, 0xC3AD }, +{ 0xC3AE, 0xC3AE, 0xC3AE }, +{ 0xC3AF, 0xC3AF, 0xC3AF }, +{ 0xC3B0, 0xC3B0, 0xC3B0 }, +{ 0xC3B1, 0xC3B1, 0xC3B1 }, +{ 0xC3B2, 0xC3B2, 0xC3B2 }, +{ 0xC3B3, 0xC3B3, 0xC3B3 }, +{ 0xC3B4, 0xC3B4, 0xC3B4 }, +{ 0xC3B5, 0xC3B5, 0xC3B5 }, +{ 0xC3B6, 0xC3B6, 0xC3B6 }, +{ 0xC3B7, 0xC3B7, 0xC3B7 }, +{ 0xC3B8, 0xC3B8, 0xC3B8 }, +{ 0xC3B9, 0xC3B9, 0xC3B9 }, +{ 0xC3BA, 0xC3BA, 0xC3BA }, +{ 0xC3BB, 0xC3BB, 0xC3BB }, +{ 0xC3BC, 0xC3BC, 0xC3BC }, +{ 0xC3BD, 0xC3BD, 0xC3BD }, +{ 0xC3BE, 0xC3BE, 0xC3BE }, +{ 0xC3BF, 0xC3BF, 0xC3BF }, +{ 0xC3C0, 0xC3C0, 0xC3C0 }, +{ 0xC3C1, 0xC3C1, 0xC3C1 }, +{ 0xC3C2, 0xC3C2, 0xC3C2 }, +{ 0xC3C3, 0xC3C3, 0xC3C3 }, +{ 0xC3C4, 0xC3C4, 0xC3C4 }, +{ 0xC3C5, 0xC3C5, 0xC3C5 }, +{ 0xC3C6, 0xC3C6, 0xC3C6 }, +{ 0xC3C7, 0xC3C7, 0xC3C7 }, +{ 0xC3C8, 0xC3C8, 0xC3C8 }, +{ 0xC3C9, 0xC3C9, 0xC3C9 }, +{ 0xC3CA, 0xC3CA, 0xC3CA }, +{ 0xC3CB, 0xC3CB, 0xC3CB }, +{ 0xC3CC, 0xC3CC, 0xC3CC }, +{ 0xC3CD, 0xC3CD, 0xC3CD }, +{ 0xC3CE, 0xC3CE, 0xC3CE }, +{ 0xC3CF, 0xC3CF, 0xC3CF }, +{ 0xC3D0, 0xC3D0, 0xC3D0 }, +{ 0xC3D1, 0xC3D1, 0xC3D1 }, +{ 0xC3D2, 0xC3D2, 0xC3D2 }, +{ 0xC3D3, 0xC3D3, 0xC3D3 }, +{ 0xC3D4, 0xC3D4, 0xC3D4 }, +{ 0xC3D5, 0xC3D5, 0xC3D5 }, +{ 0xC3D6, 0xC3D6, 0xC3D6 }, +{ 0xC3D7, 0xC3D7, 0xC3D7 }, +{ 0xC3D8, 0xC3D8, 0xC3D8 }, +{ 0xC3D9, 0xC3D9, 0xC3D9 }, +{ 0xC3DA, 0xC3DA, 0xC3DA }, +{ 0xC3DB, 0xC3DB, 0xC3DB }, +{ 0xC3DC, 0xC3DC, 0xC3DC }, +{ 0xC3DD, 0xC3DD, 0xC3DD }, +{ 0xC3DE, 0xC3DE, 0xC3DE }, +{ 0xC3DF, 0xC3DF, 0xC3DF }, +{ 0xC3E0, 0xC3E0, 0xC3E0 }, +{ 0xC3E1, 0xC3E1, 0xC3E1 }, +{ 0xC3E2, 0xC3E2, 0xC3E2 }, +{ 0xC3E3, 0xC3E3, 0xC3E3 }, +{ 0xC3E4, 0xC3E4, 0xC3E4 }, +{ 0xC3E5, 0xC3E5, 0xC3E5 }, +{ 0xC3E6, 0xC3E6, 0xC3E6 }, +{ 0xC3E7, 0xC3E7, 0xC3E7 }, +{ 0xC3E8, 0xC3E8, 0xC3E8 }, +{ 0xC3E9, 0xC3E9, 0xC3E9 }, +{ 0xC3EA, 0xC3EA, 0xC3EA }, +{ 0xC3EB, 0xC3EB, 0xC3EB }, +{ 0xC3EC, 0xC3EC, 0xC3EC }, +{ 0xC3ED, 0xC3ED, 0xC3ED }, +{ 0xC3EE, 0xC3EE, 0xC3EE }, +{ 0xC3EF, 0xC3EF, 0xC3EF }, +{ 0xC3F0, 0xC3F0, 0xC3F0 }, +{ 0xC3F1, 0xC3F1, 0xC3F1 }, +{ 0xC3F2, 0xC3F2, 0xC3F2 }, +{ 0xC3F3, 0xC3F3, 0xC3F3 }, +{ 0xC3F4, 0xC3F4, 0xC3F4 }, +{ 0xC3F5, 0xC3F5, 0xC3F5 }, +{ 0xC3F6, 0xC3F6, 0xC3F6 }, +{ 0xC3F7, 0xC3F7, 0xC3F7 }, +{ 0xC3F8, 0xC3F8, 0xC3F8 }, +{ 0xC3F9, 0xC3F9, 0xC3F9 }, +{ 0xC3FA, 0xC3FA, 0xC3FA }, +{ 0xC3FB, 0xC3FB, 0xC3FB }, +{ 0xC3FC, 0xC3FC, 0xC3FC }, +{ 0xC3FD, 0xC3FD, 0xC3FD }, +{ 0xC3FE, 0xC3FE, 0xC3FE }, +{ 0xC3FF, 0xC3FF, 0xC3FF }, +{ 0xC400, 0xC400, 0xC400 }, +{ 0xC401, 0xC401, 0xC401 }, +{ 0xC402, 0xC402, 0xC402 }, +{ 0xC403, 0xC403, 0xC403 }, +{ 0xC404, 0xC404, 0xC404 }, +{ 0xC405, 0xC405, 0xC405 }, +{ 0xC406, 0xC406, 0xC406 }, +{ 0xC407, 0xC407, 0xC407 }, +{ 0xC408, 0xC408, 0xC408 }, +{ 0xC409, 0xC409, 0xC409 }, +{ 0xC40A, 0xC40A, 0xC40A }, +{ 0xC40B, 0xC40B, 0xC40B }, +{ 0xC40C, 0xC40C, 0xC40C }, +{ 0xC40D, 0xC40D, 0xC40D }, +{ 0xC40E, 0xC40E, 0xC40E }, +{ 0xC40F, 0xC40F, 0xC40F }, +{ 0xC410, 0xC410, 0xC410 }, +{ 0xC411, 0xC411, 0xC411 }, +{ 0xC412, 0xC412, 0xC412 }, +{ 0xC413, 0xC413, 0xC413 }, +{ 0xC414, 0xC414, 0xC414 }, +{ 0xC415, 0xC415, 0xC415 }, +{ 0xC416, 0xC416, 0xC416 }, +{ 0xC417, 0xC417, 0xC417 }, +{ 0xC418, 0xC418, 0xC418 }, +{ 0xC419, 0xC419, 0xC419 }, +{ 0xC41A, 0xC41A, 0xC41A }, +{ 0xC41B, 0xC41B, 0xC41B }, +{ 0xC41C, 0xC41C, 0xC41C }, +{ 0xC41D, 0xC41D, 0xC41D }, +{ 0xC41E, 0xC41E, 0xC41E }, +{ 0xC41F, 0xC41F, 0xC41F }, +{ 0xC420, 0xC420, 0xC420 }, +{ 0xC421, 0xC421, 0xC421 }, +{ 0xC422, 0xC422, 0xC422 }, +{ 0xC423, 0xC423, 0xC423 }, +{ 0xC424, 0xC424, 0xC424 }, +{ 0xC425, 0xC425, 0xC425 }, +{ 0xC426, 0xC426, 0xC426 }, +{ 0xC427, 0xC427, 0xC427 }, +{ 0xC428, 0xC428, 0xC428 }, +{ 0xC429, 0xC429, 0xC429 }, +{ 0xC42A, 0xC42A, 0xC42A }, +{ 0xC42B, 0xC42B, 0xC42B }, +{ 0xC42C, 0xC42C, 0xC42C }, +{ 0xC42D, 0xC42D, 0xC42D }, +{ 0xC42E, 0xC42E, 0xC42E }, +{ 0xC42F, 0xC42F, 0xC42F }, +{ 0xC430, 0xC430, 0xC430 }, +{ 0xC431, 0xC431, 0xC431 }, +{ 0xC432, 0xC432, 0xC432 }, +{ 0xC433, 0xC433, 0xC433 }, +{ 0xC434, 0xC434, 0xC434 }, +{ 0xC435, 0xC435, 0xC435 }, +{ 0xC436, 0xC436, 0xC436 }, +{ 0xC437, 0xC437, 0xC437 }, +{ 0xC438, 0xC438, 0xC438 }, +{ 0xC439, 0xC439, 0xC439 }, +{ 0xC43A, 0xC43A, 0xC43A }, +{ 0xC43B, 0xC43B, 0xC43B }, +{ 0xC43C, 0xC43C, 0xC43C }, +{ 0xC43D, 0xC43D, 0xC43D }, +{ 0xC43E, 0xC43E, 0xC43E }, +{ 0xC43F, 0xC43F, 0xC43F }, +{ 0xC440, 0xC440, 0xC440 }, +{ 0xC441, 0xC441, 0xC441 }, +{ 0xC442, 0xC442, 0xC442 }, +{ 0xC443, 0xC443, 0xC443 }, +{ 0xC444, 0xC444, 0xC444 }, +{ 0xC445, 0xC445, 0xC445 }, +{ 0xC446, 0xC446, 0xC446 }, +{ 0xC447, 0xC447, 0xC447 }, +{ 0xC448, 0xC448, 0xC448 }, +{ 0xC449, 0xC449, 0xC449 }, +{ 0xC44A, 0xC44A, 0xC44A }, +{ 0xC44B, 0xC44B, 0xC44B }, +{ 0xC44C, 0xC44C, 0xC44C }, +{ 0xC44D, 0xC44D, 0xC44D }, +{ 0xC44E, 0xC44E, 0xC44E }, +{ 0xC44F, 0xC44F, 0xC44F }, +{ 0xC450, 0xC450, 0xC450 }, +{ 0xC451, 0xC451, 0xC451 }, +{ 0xC452, 0xC452, 0xC452 }, +{ 0xC453, 0xC453, 0xC453 }, +{ 0xC454, 0xC454, 0xC454 }, +{ 0xC455, 0xC455, 0xC455 }, +{ 0xC456, 0xC456, 0xC456 }, +{ 0xC457, 0xC457, 0xC457 }, +{ 0xC458, 0xC458, 0xC458 }, +{ 0xC459, 0xC459, 0xC459 }, +{ 0xC45A, 0xC45A, 0xC45A }, +{ 0xC45B, 0xC45B, 0xC45B }, +{ 0xC45C, 0xC45C, 0xC45C }, +{ 0xC45D, 0xC45D, 0xC45D }, +{ 0xC45E, 0xC45E, 0xC45E }, +{ 0xC45F, 0xC45F, 0xC45F }, +{ 0xC460, 0xC460, 0xC460 }, +{ 0xC461, 0xC461, 0xC461 }, +{ 0xC462, 0xC462, 0xC462 }, +{ 0xC463, 0xC463, 0xC463 }, +{ 0xC464, 0xC464, 0xC464 }, +{ 0xC465, 0xC465, 0xC465 }, +{ 0xC466, 0xC466, 0xC466 }, +{ 0xC467, 0xC467, 0xC467 }, +{ 0xC468, 0xC468, 0xC468 }, +{ 0xC469, 0xC469, 0xC469 }, +{ 0xC46A, 0xC46A, 0xC46A }, +{ 0xC46B, 0xC46B, 0xC46B }, +{ 0xC46C, 0xC46C, 0xC46C }, +{ 0xC46D, 0xC46D, 0xC46D }, +{ 0xC46E, 0xC46E, 0xC46E }, +{ 0xC46F, 0xC46F, 0xC46F }, +{ 0xC470, 0xC470, 0xC470 }, +{ 0xC471, 0xC471, 0xC471 }, +{ 0xC472, 0xC472, 0xC472 }, +{ 0xC473, 0xC473, 0xC473 }, +{ 0xC474, 0xC474, 0xC474 }, +{ 0xC475, 0xC475, 0xC475 }, +{ 0xC476, 0xC476, 0xC476 }, +{ 0xC477, 0xC477, 0xC477 }, +{ 0xC478, 0xC478, 0xC478 }, +{ 0xC479, 0xC479, 0xC479 }, +{ 0xC47A, 0xC47A, 0xC47A }, +{ 0xC47B, 0xC47B, 0xC47B }, +{ 0xC47C, 0xC47C, 0xC47C }, +{ 0xC47D, 0xC47D, 0xC47D }, +{ 0xC47E, 0xC47E, 0xC47E }, +{ 0xC47F, 0xC47F, 0xC47F }, +{ 0xC480, 0xC480, 0xC480 }, +{ 0xC481, 0xC481, 0xC481 }, +{ 0xC482, 0xC482, 0xC482 }, +{ 0xC483, 0xC483, 0xC483 }, +{ 0xC484, 0xC484, 0xC484 }, +{ 0xC485, 0xC485, 0xC485 }, +{ 0xC486, 0xC486, 0xC486 }, +{ 0xC487, 0xC487, 0xC487 }, +{ 0xC488, 0xC488, 0xC488 }, +{ 0xC489, 0xC489, 0xC489 }, +{ 0xC48A, 0xC48A, 0xC48A }, +{ 0xC48B, 0xC48B, 0xC48B }, +{ 0xC48C, 0xC48C, 0xC48C }, +{ 0xC48D, 0xC48D, 0xC48D }, +{ 0xC48E, 0xC48E, 0xC48E }, +{ 0xC48F, 0xC48F, 0xC48F }, +{ 0xC490, 0xC490, 0xC490 }, +{ 0xC491, 0xC491, 0xC491 }, +{ 0xC492, 0xC492, 0xC492 }, +{ 0xC493, 0xC493, 0xC493 }, +{ 0xC494, 0xC494, 0xC494 }, +{ 0xC495, 0xC495, 0xC495 }, +{ 0xC496, 0xC496, 0xC496 }, +{ 0xC497, 0xC497, 0xC497 }, +{ 0xC498, 0xC498, 0xC498 }, +{ 0xC499, 0xC499, 0xC499 }, +{ 0xC49A, 0xC49A, 0xC49A }, +{ 0xC49B, 0xC49B, 0xC49B }, +{ 0xC49C, 0xC49C, 0xC49C }, +{ 0xC49D, 0xC49D, 0xC49D }, +{ 0xC49E, 0xC49E, 0xC49E }, +{ 0xC49F, 0xC49F, 0xC49F }, +{ 0xC4A0, 0xC4A0, 0xC4A0 }, +{ 0xC4A1, 0xC4A1, 0xC4A1 }, +{ 0xC4A2, 0xC4A2, 0xC4A2 }, +{ 0xC4A3, 0xC4A3, 0xC4A3 }, +{ 0xC4A4, 0xC4A4, 0xC4A4 }, +{ 0xC4A5, 0xC4A5, 0xC4A5 }, +{ 0xC4A6, 0xC4A6, 0xC4A6 }, +{ 0xC4A7, 0xC4A7, 0xC4A7 }, +{ 0xC4A8, 0xC4A8, 0xC4A8 }, +{ 0xC4A9, 0xC4A9, 0xC4A9 }, +{ 0xC4AA, 0xC4AA, 0xC4AA }, +{ 0xC4AB, 0xC4AB, 0xC4AB }, +{ 0xC4AC, 0xC4AC, 0xC4AC }, +{ 0xC4AD, 0xC4AD, 0xC4AD }, +{ 0xC4AE, 0xC4AE, 0xC4AE }, +{ 0xC4AF, 0xC4AF, 0xC4AF }, +{ 0xC4B0, 0xC4B0, 0xC4B0 }, +{ 0xC4B1, 0xC4B1, 0xC4B1 }, +{ 0xC4B2, 0xC4B2, 0xC4B2 }, +{ 0xC4B3, 0xC4B3, 0xC4B3 }, +{ 0xC4B4, 0xC4B4, 0xC4B4 }, +{ 0xC4B5, 0xC4B5, 0xC4B5 }, +{ 0xC4B6, 0xC4B6, 0xC4B6 }, +{ 0xC4B7, 0xC4B7, 0xC4B7 }, +{ 0xC4B8, 0xC4B8, 0xC4B8 }, +{ 0xC4B9, 0xC4B9, 0xC4B9 }, +{ 0xC4BA, 0xC4BA, 0xC4BA }, +{ 0xC4BB, 0xC4BB, 0xC4BB }, +{ 0xC4BC, 0xC4BC, 0xC4BC }, +{ 0xC4BD, 0xC4BD, 0xC4BD }, +{ 0xC4BE, 0xC4BE, 0xC4BE }, +{ 0xC4BF, 0xC4BF, 0xC4BF }, +{ 0xC4C0, 0xC4C0, 0xC4C0 }, +{ 0xC4C1, 0xC4C1, 0xC4C1 }, +{ 0xC4C2, 0xC4C2, 0xC4C2 }, +{ 0xC4C3, 0xC4C3, 0xC4C3 }, +{ 0xC4C4, 0xC4C4, 0xC4C4 }, +{ 0xC4C5, 0xC4C5, 0xC4C5 }, +{ 0xC4C6, 0xC4C6, 0xC4C6 }, +{ 0xC4C7, 0xC4C7, 0xC4C7 }, +{ 0xC4C8, 0xC4C8, 0xC4C8 }, +{ 0xC4C9, 0xC4C9, 0xC4C9 }, +{ 0xC4CA, 0xC4CA, 0xC4CA }, +{ 0xC4CB, 0xC4CB, 0xC4CB }, +{ 0xC4CC, 0xC4CC, 0xC4CC }, +{ 0xC4CD, 0xC4CD, 0xC4CD }, +{ 0xC4CE, 0xC4CE, 0xC4CE }, +{ 0xC4CF, 0xC4CF, 0xC4CF }, +{ 0xC4D0, 0xC4D0, 0xC4D0 }, +{ 0xC4D1, 0xC4D1, 0xC4D1 }, +{ 0xC4D2, 0xC4D2, 0xC4D2 }, +{ 0xC4D3, 0xC4D3, 0xC4D3 }, +{ 0xC4D4, 0xC4D4, 0xC4D4 }, +{ 0xC4D5, 0xC4D5, 0xC4D5 }, +{ 0xC4D6, 0xC4D6, 0xC4D6 }, +{ 0xC4D7, 0xC4D7, 0xC4D7 }, +{ 0xC4D8, 0xC4D8, 0xC4D8 }, +{ 0xC4D9, 0xC4D9, 0xC4D9 }, +{ 0xC4DA, 0xC4DA, 0xC4DA }, +{ 0xC4DB, 0xC4DB, 0xC4DB }, +{ 0xC4DC, 0xC4DC, 0xC4DC }, +{ 0xC4DD, 0xC4DD, 0xC4DD }, +{ 0xC4DE, 0xC4DE, 0xC4DE }, +{ 0xC4DF, 0xC4DF, 0xC4DF }, +{ 0xC4E0, 0xC4E0, 0xC4E0 }, +{ 0xC4E1, 0xC4E1, 0xC4E1 }, +{ 0xC4E2, 0xC4E2, 0xC4E2 }, +{ 0xC4E3, 0xC4E3, 0xC4E3 }, +{ 0xC4E4, 0xC4E4, 0xC4E4 }, +{ 0xC4E5, 0xC4E5, 0xC4E5 }, +{ 0xC4E6, 0xC4E6, 0xC4E6 }, +{ 0xC4E7, 0xC4E7, 0xC4E7 }, +{ 0xC4E8, 0xC4E8, 0xC4E8 }, +{ 0xC4E9, 0xC4E9, 0xC4E9 }, +{ 0xC4EA, 0xC4EA, 0xC4EA }, +{ 0xC4EB, 0xC4EB, 0xC4EB }, +{ 0xC4EC, 0xC4EC, 0xC4EC }, +{ 0xC4ED, 0xC4ED, 0xC4ED }, +{ 0xC4EE, 0xC4EE, 0xC4EE }, +{ 0xC4EF, 0xC4EF, 0xC4EF }, +{ 0xC4F0, 0xC4F0, 0xC4F0 }, +{ 0xC4F1, 0xC4F1, 0xC4F1 }, +{ 0xC4F2, 0xC4F2, 0xC4F2 }, +{ 0xC4F3, 0xC4F3, 0xC4F3 }, +{ 0xC4F4, 0xC4F4, 0xC4F4 }, +{ 0xC4F5, 0xC4F5, 0xC4F5 }, +{ 0xC4F6, 0xC4F6, 0xC4F6 }, +{ 0xC4F7, 0xC4F7, 0xC4F7 }, +{ 0xC4F8, 0xC4F8, 0xC4F8 }, +{ 0xC4F9, 0xC4F9, 0xC4F9 }, +{ 0xC4FA, 0xC4FA, 0xC4FA }, +{ 0xC4FB, 0xC4FB, 0xC4FB }, +{ 0xC4FC, 0xC4FC, 0xC4FC }, +{ 0xC4FD, 0xC4FD, 0xC4FD }, +{ 0xC4FE, 0xC4FE, 0xC4FE }, +{ 0xC4FF, 0xC4FF, 0xC4FF }, +{ 0xC500, 0xC500, 0xC500 }, +{ 0xC501, 0xC501, 0xC501 }, +{ 0xC502, 0xC502, 0xC502 }, +{ 0xC503, 0xC503, 0xC503 }, +{ 0xC504, 0xC504, 0xC504 }, +{ 0xC505, 0xC505, 0xC505 }, +{ 0xC506, 0xC506, 0xC506 }, +{ 0xC507, 0xC507, 0xC507 }, +{ 0xC508, 0xC508, 0xC508 }, +{ 0xC509, 0xC509, 0xC509 }, +{ 0xC50A, 0xC50A, 0xC50A }, +{ 0xC50B, 0xC50B, 0xC50B }, +{ 0xC50C, 0xC50C, 0xC50C }, +{ 0xC50D, 0xC50D, 0xC50D }, +{ 0xC50E, 0xC50E, 0xC50E }, +{ 0xC50F, 0xC50F, 0xC50F }, +{ 0xC510, 0xC510, 0xC510 }, +{ 0xC511, 0xC511, 0xC511 }, +{ 0xC512, 0xC512, 0xC512 }, +{ 0xC513, 0xC513, 0xC513 }, +{ 0xC514, 0xC514, 0xC514 }, +{ 0xC515, 0xC515, 0xC515 }, +{ 0xC516, 0xC516, 0xC516 }, +{ 0xC517, 0xC517, 0xC517 }, +{ 0xC518, 0xC518, 0xC518 }, +{ 0xC519, 0xC519, 0xC519 }, +{ 0xC51A, 0xC51A, 0xC51A }, +{ 0xC51B, 0xC51B, 0xC51B }, +{ 0xC51C, 0xC51C, 0xC51C }, +{ 0xC51D, 0xC51D, 0xC51D }, +{ 0xC51E, 0xC51E, 0xC51E }, +{ 0xC51F, 0xC51F, 0xC51F }, +{ 0xC520, 0xC520, 0xC520 }, +{ 0xC521, 0xC521, 0xC521 }, +{ 0xC522, 0xC522, 0xC522 }, +{ 0xC523, 0xC523, 0xC523 }, +{ 0xC524, 0xC524, 0xC524 }, +{ 0xC525, 0xC525, 0xC525 }, +{ 0xC526, 0xC526, 0xC526 }, +{ 0xC527, 0xC527, 0xC527 }, +{ 0xC528, 0xC528, 0xC528 }, +{ 0xC529, 0xC529, 0xC529 }, +{ 0xC52A, 0xC52A, 0xC52A }, +{ 0xC52B, 0xC52B, 0xC52B }, +{ 0xC52C, 0xC52C, 0xC52C }, +{ 0xC52D, 0xC52D, 0xC52D }, +{ 0xC52E, 0xC52E, 0xC52E }, +{ 0xC52F, 0xC52F, 0xC52F }, +{ 0xC530, 0xC530, 0xC530 }, +{ 0xC531, 0xC531, 0xC531 }, +{ 0xC532, 0xC532, 0xC532 }, +{ 0xC533, 0xC533, 0xC533 }, +{ 0xC534, 0xC534, 0xC534 }, +{ 0xC535, 0xC535, 0xC535 }, +{ 0xC536, 0xC536, 0xC536 }, +{ 0xC537, 0xC537, 0xC537 }, +{ 0xC538, 0xC538, 0xC538 }, +{ 0xC539, 0xC539, 0xC539 }, +{ 0xC53A, 0xC53A, 0xC53A }, +{ 0xC53B, 0xC53B, 0xC53B }, +{ 0xC53C, 0xC53C, 0xC53C }, +{ 0xC53D, 0xC53D, 0xC53D }, +{ 0xC53E, 0xC53E, 0xC53E }, +{ 0xC53F, 0xC53F, 0xC53F }, +{ 0xC540, 0xC540, 0xC540 }, +{ 0xC541, 0xC541, 0xC541 }, +{ 0xC542, 0xC542, 0xC542 }, +{ 0xC543, 0xC543, 0xC543 }, +{ 0xC544, 0xC544, 0xC544 }, +{ 0xC545, 0xC545, 0xC545 }, +{ 0xC546, 0xC546, 0xC546 }, +{ 0xC547, 0xC547, 0xC547 }, +{ 0xC548, 0xC548, 0xC548 }, +{ 0xC549, 0xC549, 0xC549 }, +{ 0xC54A, 0xC54A, 0xC54A }, +{ 0xC54B, 0xC54B, 0xC54B }, +{ 0xC54C, 0xC54C, 0xC54C }, +{ 0xC54D, 0xC54D, 0xC54D }, +{ 0xC54E, 0xC54E, 0xC54E }, +{ 0xC54F, 0xC54F, 0xC54F }, +{ 0xC550, 0xC550, 0xC550 }, +{ 0xC551, 0xC551, 0xC551 }, +{ 0xC552, 0xC552, 0xC552 }, +{ 0xC553, 0xC553, 0xC553 }, +{ 0xC554, 0xC554, 0xC554 }, +{ 0xC555, 0xC555, 0xC555 }, +{ 0xC556, 0xC556, 0xC556 }, +{ 0xC557, 0xC557, 0xC557 }, +{ 0xC558, 0xC558, 0xC558 }, +{ 0xC559, 0xC559, 0xC559 }, +{ 0xC55A, 0xC55A, 0xC55A }, +{ 0xC55B, 0xC55B, 0xC55B }, +{ 0xC55C, 0xC55C, 0xC55C }, +{ 0xC55D, 0xC55D, 0xC55D }, +{ 0xC55E, 0xC55E, 0xC55E }, +{ 0xC55F, 0xC55F, 0xC55F }, +{ 0xC560, 0xC560, 0xC560 }, +{ 0xC561, 0xC561, 0xC561 }, +{ 0xC562, 0xC562, 0xC562 }, +{ 0xC563, 0xC563, 0xC563 }, +{ 0xC564, 0xC564, 0xC564 }, +{ 0xC565, 0xC565, 0xC565 }, +{ 0xC566, 0xC566, 0xC566 }, +{ 0xC567, 0xC567, 0xC567 }, +{ 0xC568, 0xC568, 0xC568 }, +{ 0xC569, 0xC569, 0xC569 }, +{ 0xC56A, 0xC56A, 0xC56A }, +{ 0xC56B, 0xC56B, 0xC56B }, +{ 0xC56C, 0xC56C, 0xC56C }, +{ 0xC56D, 0xC56D, 0xC56D }, +{ 0xC56E, 0xC56E, 0xC56E }, +{ 0xC56F, 0xC56F, 0xC56F }, +{ 0xC570, 0xC570, 0xC570 }, +{ 0xC571, 0xC571, 0xC571 }, +{ 0xC572, 0xC572, 0xC572 }, +{ 0xC573, 0xC573, 0xC573 }, +{ 0xC574, 0xC574, 0xC574 }, +{ 0xC575, 0xC575, 0xC575 }, +{ 0xC576, 0xC576, 0xC576 }, +{ 0xC577, 0xC577, 0xC577 }, +{ 0xC578, 0xC578, 0xC578 }, +{ 0xC579, 0xC579, 0xC579 }, +{ 0xC57A, 0xC57A, 0xC57A }, +{ 0xC57B, 0xC57B, 0xC57B }, +{ 0xC57C, 0xC57C, 0xC57C }, +{ 0xC57D, 0xC57D, 0xC57D }, +{ 0xC57E, 0xC57E, 0xC57E }, +{ 0xC57F, 0xC57F, 0xC57F }, +{ 0xC580, 0xC580, 0xC580 }, +{ 0xC581, 0xC581, 0xC581 }, +{ 0xC582, 0xC582, 0xC582 }, +{ 0xC583, 0xC583, 0xC583 }, +{ 0xC584, 0xC584, 0xC584 }, +{ 0xC585, 0xC585, 0xC585 }, +{ 0xC586, 0xC586, 0xC586 }, +{ 0xC587, 0xC587, 0xC587 }, +{ 0xC588, 0xC588, 0xC588 }, +{ 0xC589, 0xC589, 0xC589 }, +{ 0xC58A, 0xC58A, 0xC58A }, +{ 0xC58B, 0xC58B, 0xC58B }, +{ 0xC58C, 0xC58C, 0xC58C }, +{ 0xC58D, 0xC58D, 0xC58D }, +{ 0xC58E, 0xC58E, 0xC58E }, +{ 0xC58F, 0xC58F, 0xC58F }, +{ 0xC590, 0xC590, 0xC590 }, +{ 0xC591, 0xC591, 0xC591 }, +{ 0xC592, 0xC592, 0xC592 }, +{ 0xC593, 0xC593, 0xC593 }, +{ 0xC594, 0xC594, 0xC594 }, +{ 0xC595, 0xC595, 0xC595 }, +{ 0xC596, 0xC596, 0xC596 }, +{ 0xC597, 0xC597, 0xC597 }, +{ 0xC598, 0xC598, 0xC598 }, +{ 0xC599, 0xC599, 0xC599 }, +{ 0xC59A, 0xC59A, 0xC59A }, +{ 0xC59B, 0xC59B, 0xC59B }, +{ 0xC59C, 0xC59C, 0xC59C }, +{ 0xC59D, 0xC59D, 0xC59D }, +{ 0xC59E, 0xC59E, 0xC59E }, +{ 0xC59F, 0xC59F, 0xC59F }, +{ 0xC5A0, 0xC5A0, 0xC5A0 }, +{ 0xC5A1, 0xC5A1, 0xC5A1 }, +{ 0xC5A2, 0xC5A2, 0xC5A2 }, +{ 0xC5A3, 0xC5A3, 0xC5A3 }, +{ 0xC5A4, 0xC5A4, 0xC5A4 }, +{ 0xC5A5, 0xC5A5, 0xC5A5 }, +{ 0xC5A6, 0xC5A6, 0xC5A6 }, +{ 0xC5A7, 0xC5A7, 0xC5A7 }, +{ 0xC5A8, 0xC5A8, 0xC5A8 }, +{ 0xC5A9, 0xC5A9, 0xC5A9 }, +{ 0xC5AA, 0xC5AA, 0xC5AA }, +{ 0xC5AB, 0xC5AB, 0xC5AB }, +{ 0xC5AC, 0xC5AC, 0xC5AC }, +{ 0xC5AD, 0xC5AD, 0xC5AD }, +{ 0xC5AE, 0xC5AE, 0xC5AE }, +{ 0xC5AF, 0xC5AF, 0xC5AF }, +{ 0xC5B0, 0xC5B0, 0xC5B0 }, +{ 0xC5B1, 0xC5B1, 0xC5B1 }, +{ 0xC5B2, 0xC5B2, 0xC5B2 }, +{ 0xC5B3, 0xC5B3, 0xC5B3 }, +{ 0xC5B4, 0xC5B4, 0xC5B4 }, +{ 0xC5B5, 0xC5B5, 0xC5B5 }, +{ 0xC5B6, 0xC5B6, 0xC5B6 }, +{ 0xC5B7, 0xC5B7, 0xC5B7 }, +{ 0xC5B8, 0xC5B8, 0xC5B8 }, +{ 0xC5B9, 0xC5B9, 0xC5B9 }, +{ 0xC5BA, 0xC5BA, 0xC5BA }, +{ 0xC5BB, 0xC5BB, 0xC5BB }, +{ 0xC5BC, 0xC5BC, 0xC5BC }, +{ 0xC5BD, 0xC5BD, 0xC5BD }, +{ 0xC5BE, 0xC5BE, 0xC5BE }, +{ 0xC5BF, 0xC5BF, 0xC5BF }, +{ 0xC5C0, 0xC5C0, 0xC5C0 }, +{ 0xC5C1, 0xC5C1, 0xC5C1 }, +{ 0xC5C2, 0xC5C2, 0xC5C2 }, +{ 0xC5C3, 0xC5C3, 0xC5C3 }, +{ 0xC5C4, 0xC5C4, 0xC5C4 }, +{ 0xC5C5, 0xC5C5, 0xC5C5 }, +{ 0xC5C6, 0xC5C6, 0xC5C6 }, +{ 0xC5C7, 0xC5C7, 0xC5C7 }, +{ 0xC5C8, 0xC5C8, 0xC5C8 }, +{ 0xC5C9, 0xC5C9, 0xC5C9 }, +{ 0xC5CA, 0xC5CA, 0xC5CA }, +{ 0xC5CB, 0xC5CB, 0xC5CB }, +{ 0xC5CC, 0xC5CC, 0xC5CC }, +{ 0xC5CD, 0xC5CD, 0xC5CD }, +{ 0xC5CE, 0xC5CE, 0xC5CE }, +{ 0xC5CF, 0xC5CF, 0xC5CF }, +{ 0xC5D0, 0xC5D0, 0xC5D0 }, +{ 0xC5D1, 0xC5D1, 0xC5D1 }, +{ 0xC5D2, 0xC5D2, 0xC5D2 }, +{ 0xC5D3, 0xC5D3, 0xC5D3 }, +{ 0xC5D4, 0xC5D4, 0xC5D4 }, +{ 0xC5D5, 0xC5D5, 0xC5D5 }, +{ 0xC5D6, 0xC5D6, 0xC5D6 }, +{ 0xC5D7, 0xC5D7, 0xC5D7 }, +{ 0xC5D8, 0xC5D8, 0xC5D8 }, +{ 0xC5D9, 0xC5D9, 0xC5D9 }, +{ 0xC5DA, 0xC5DA, 0xC5DA }, +{ 0xC5DB, 0xC5DB, 0xC5DB }, +{ 0xC5DC, 0xC5DC, 0xC5DC }, +{ 0xC5DD, 0xC5DD, 0xC5DD }, +{ 0xC5DE, 0xC5DE, 0xC5DE }, +{ 0xC5DF, 0xC5DF, 0xC5DF }, +{ 0xC5E0, 0xC5E0, 0xC5E0 }, +{ 0xC5E1, 0xC5E1, 0xC5E1 }, +{ 0xC5E2, 0xC5E2, 0xC5E2 }, +{ 0xC5E3, 0xC5E3, 0xC5E3 }, +{ 0xC5E4, 0xC5E4, 0xC5E4 }, +{ 0xC5E5, 0xC5E5, 0xC5E5 }, +{ 0xC5E6, 0xC5E6, 0xC5E6 }, +{ 0xC5E7, 0xC5E7, 0xC5E7 }, +{ 0xC5E8, 0xC5E8, 0xC5E8 }, +{ 0xC5E9, 0xC5E9, 0xC5E9 }, +{ 0xC5EA, 0xC5EA, 0xC5EA }, +{ 0xC5EB, 0xC5EB, 0xC5EB }, +{ 0xC5EC, 0xC5EC, 0xC5EC }, +{ 0xC5ED, 0xC5ED, 0xC5ED }, +{ 0xC5EE, 0xC5EE, 0xC5EE }, +{ 0xC5EF, 0xC5EF, 0xC5EF }, +{ 0xC5F0, 0xC5F0, 0xC5F0 }, +{ 0xC5F1, 0xC5F1, 0xC5F1 }, +{ 0xC5F2, 0xC5F2, 0xC5F2 }, +{ 0xC5F3, 0xC5F3, 0xC5F3 }, +{ 0xC5F4, 0xC5F4, 0xC5F4 }, +{ 0xC5F5, 0xC5F5, 0xC5F5 }, +{ 0xC5F6, 0xC5F6, 0xC5F6 }, +{ 0xC5F7, 0xC5F7, 0xC5F7 }, +{ 0xC5F8, 0xC5F8, 0xC5F8 }, +{ 0xC5F9, 0xC5F9, 0xC5F9 }, +{ 0xC5FA, 0xC5FA, 0xC5FA }, +{ 0xC5FB, 0xC5FB, 0xC5FB }, +{ 0xC5FC, 0xC5FC, 0xC5FC }, +{ 0xC5FD, 0xC5FD, 0xC5FD }, +{ 0xC5FE, 0xC5FE, 0xC5FE }, +{ 0xC5FF, 0xC5FF, 0xC5FF }, +{ 0xC600, 0xC600, 0xC600 }, +{ 0xC601, 0xC601, 0xC601 }, +{ 0xC602, 0xC602, 0xC602 }, +{ 0xC603, 0xC603, 0xC603 }, +{ 0xC604, 0xC604, 0xC604 }, +{ 0xC605, 0xC605, 0xC605 }, +{ 0xC606, 0xC606, 0xC606 }, +{ 0xC607, 0xC607, 0xC607 }, +{ 0xC608, 0xC608, 0xC608 }, +{ 0xC609, 0xC609, 0xC609 }, +{ 0xC60A, 0xC60A, 0xC60A }, +{ 0xC60B, 0xC60B, 0xC60B }, +{ 0xC60C, 0xC60C, 0xC60C }, +{ 0xC60D, 0xC60D, 0xC60D }, +{ 0xC60E, 0xC60E, 0xC60E }, +{ 0xC60F, 0xC60F, 0xC60F }, +{ 0xC610, 0xC610, 0xC610 }, +{ 0xC611, 0xC611, 0xC611 }, +{ 0xC612, 0xC612, 0xC612 }, +{ 0xC613, 0xC613, 0xC613 }, +{ 0xC614, 0xC614, 0xC614 }, +{ 0xC615, 0xC615, 0xC615 }, +{ 0xC616, 0xC616, 0xC616 }, +{ 0xC617, 0xC617, 0xC617 }, +{ 0xC618, 0xC618, 0xC618 }, +{ 0xC619, 0xC619, 0xC619 }, +{ 0xC61A, 0xC61A, 0xC61A }, +{ 0xC61B, 0xC61B, 0xC61B }, +{ 0xC61C, 0xC61C, 0xC61C }, +{ 0xC61D, 0xC61D, 0xC61D }, +{ 0xC61E, 0xC61E, 0xC61E }, +{ 0xC61F, 0xC61F, 0xC61F }, +{ 0xC620, 0xC620, 0xC620 }, +{ 0xC621, 0xC621, 0xC621 }, +{ 0xC622, 0xC622, 0xC622 }, +{ 0xC623, 0xC623, 0xC623 }, +{ 0xC624, 0xC624, 0xC624 }, +{ 0xC625, 0xC625, 0xC625 }, +{ 0xC626, 0xC626, 0xC626 }, +{ 0xC627, 0xC627, 0xC627 }, +{ 0xC628, 0xC628, 0xC628 }, +{ 0xC629, 0xC629, 0xC629 }, +{ 0xC62A, 0xC62A, 0xC62A }, +{ 0xC62B, 0xC62B, 0xC62B }, +{ 0xC62C, 0xC62C, 0xC62C }, +{ 0xC62D, 0xC62D, 0xC62D }, +{ 0xC62E, 0xC62E, 0xC62E }, +{ 0xC62F, 0xC62F, 0xC62F }, +{ 0xC630, 0xC630, 0xC630 }, +{ 0xC631, 0xC631, 0xC631 }, +{ 0xC632, 0xC632, 0xC632 }, +{ 0xC633, 0xC633, 0xC633 }, +{ 0xC634, 0xC634, 0xC634 }, +{ 0xC635, 0xC635, 0xC635 }, +{ 0xC636, 0xC636, 0xC636 }, +{ 0xC637, 0xC637, 0xC637 }, +{ 0xC638, 0xC638, 0xC638 }, +{ 0xC639, 0xC639, 0xC639 }, +{ 0xC63A, 0xC63A, 0xC63A }, +{ 0xC63B, 0xC63B, 0xC63B }, +{ 0xC63C, 0xC63C, 0xC63C }, +{ 0xC63D, 0xC63D, 0xC63D }, +{ 0xC63E, 0xC63E, 0xC63E }, +{ 0xC63F, 0xC63F, 0xC63F }, +{ 0xC640, 0xC640, 0xC640 }, +{ 0xC641, 0xC641, 0xC641 }, +{ 0xC642, 0xC642, 0xC642 }, +{ 0xC643, 0xC643, 0xC643 }, +{ 0xC644, 0xC644, 0xC644 }, +{ 0xC645, 0xC645, 0xC645 }, +{ 0xC646, 0xC646, 0xC646 }, +{ 0xC647, 0xC647, 0xC647 }, +{ 0xC648, 0xC648, 0xC648 }, +{ 0xC649, 0xC649, 0xC649 }, +{ 0xC64A, 0xC64A, 0xC64A }, +{ 0xC64B, 0xC64B, 0xC64B }, +{ 0xC64C, 0xC64C, 0xC64C }, +{ 0xC64D, 0xC64D, 0xC64D }, +{ 0xC64E, 0xC64E, 0xC64E }, +{ 0xC64F, 0xC64F, 0xC64F }, +{ 0xC650, 0xC650, 0xC650 }, +{ 0xC651, 0xC651, 0xC651 }, +{ 0xC652, 0xC652, 0xC652 }, +{ 0xC653, 0xC653, 0xC653 }, +{ 0xC654, 0xC654, 0xC654 }, +{ 0xC655, 0xC655, 0xC655 }, +{ 0xC656, 0xC656, 0xC656 }, +{ 0xC657, 0xC657, 0xC657 }, +{ 0xC658, 0xC658, 0xC658 }, +{ 0xC659, 0xC659, 0xC659 }, +{ 0xC65A, 0xC65A, 0xC65A }, +{ 0xC65B, 0xC65B, 0xC65B }, +{ 0xC65C, 0xC65C, 0xC65C }, +{ 0xC65D, 0xC65D, 0xC65D }, +{ 0xC65E, 0xC65E, 0xC65E }, +{ 0xC65F, 0xC65F, 0xC65F }, +{ 0xC660, 0xC660, 0xC660 }, +{ 0xC661, 0xC661, 0xC661 }, +{ 0xC662, 0xC662, 0xC662 }, +{ 0xC663, 0xC663, 0xC663 }, +{ 0xC664, 0xC664, 0xC664 }, +{ 0xC665, 0xC665, 0xC665 }, +{ 0xC666, 0xC666, 0xC666 }, +{ 0xC667, 0xC667, 0xC667 }, +{ 0xC668, 0xC668, 0xC668 }, +{ 0xC669, 0xC669, 0xC669 }, +{ 0xC66A, 0xC66A, 0xC66A }, +{ 0xC66B, 0xC66B, 0xC66B }, +{ 0xC66C, 0xC66C, 0xC66C }, +{ 0xC66D, 0xC66D, 0xC66D }, +{ 0xC66E, 0xC66E, 0xC66E }, +{ 0xC66F, 0xC66F, 0xC66F }, +{ 0xC670, 0xC670, 0xC670 }, +{ 0xC671, 0xC671, 0xC671 }, +{ 0xC672, 0xC672, 0xC672 }, +{ 0xC673, 0xC673, 0xC673 }, +{ 0xC674, 0xC674, 0xC674 }, +{ 0xC675, 0xC675, 0xC675 }, +{ 0xC676, 0xC676, 0xC676 }, +{ 0xC677, 0xC677, 0xC677 }, +{ 0xC678, 0xC678, 0xC678 }, +{ 0xC679, 0xC679, 0xC679 }, +{ 0xC67A, 0xC67A, 0xC67A }, +{ 0xC67B, 0xC67B, 0xC67B }, +{ 0xC67C, 0xC67C, 0xC67C }, +{ 0xC67D, 0xC67D, 0xC67D }, +{ 0xC67E, 0xC67E, 0xC67E }, +{ 0xC67F, 0xC67F, 0xC67F }, +{ 0xC680, 0xC680, 0xC680 }, +{ 0xC681, 0xC681, 0xC681 }, +{ 0xC682, 0xC682, 0xC682 }, +{ 0xC683, 0xC683, 0xC683 }, +{ 0xC684, 0xC684, 0xC684 }, +{ 0xC685, 0xC685, 0xC685 }, +{ 0xC686, 0xC686, 0xC686 }, +{ 0xC687, 0xC687, 0xC687 }, +{ 0xC688, 0xC688, 0xC688 }, +{ 0xC689, 0xC689, 0xC689 }, +{ 0xC68A, 0xC68A, 0xC68A }, +{ 0xC68B, 0xC68B, 0xC68B }, +{ 0xC68C, 0xC68C, 0xC68C }, +{ 0xC68D, 0xC68D, 0xC68D }, +{ 0xC68E, 0xC68E, 0xC68E }, +{ 0xC68F, 0xC68F, 0xC68F }, +{ 0xC690, 0xC690, 0xC690 }, +{ 0xC691, 0xC691, 0xC691 }, +{ 0xC692, 0xC692, 0xC692 }, +{ 0xC693, 0xC693, 0xC693 }, +{ 0xC694, 0xC694, 0xC694 }, +{ 0xC695, 0xC695, 0xC695 }, +{ 0xC696, 0xC696, 0xC696 }, +{ 0xC697, 0xC697, 0xC697 }, +{ 0xC698, 0xC698, 0xC698 }, +{ 0xC699, 0xC699, 0xC699 }, +{ 0xC69A, 0xC69A, 0xC69A }, +{ 0xC69B, 0xC69B, 0xC69B }, +{ 0xC69C, 0xC69C, 0xC69C }, +{ 0xC69D, 0xC69D, 0xC69D }, +{ 0xC69E, 0xC69E, 0xC69E }, +{ 0xC69F, 0xC69F, 0xC69F }, +{ 0xC6A0, 0xC6A0, 0xC6A0 }, +{ 0xC6A1, 0xC6A1, 0xC6A1 }, +{ 0xC6A2, 0xC6A2, 0xC6A2 }, +{ 0xC6A3, 0xC6A3, 0xC6A3 }, +{ 0xC6A4, 0xC6A4, 0xC6A4 }, +{ 0xC6A5, 0xC6A5, 0xC6A5 }, +{ 0xC6A6, 0xC6A6, 0xC6A6 }, +{ 0xC6A7, 0xC6A7, 0xC6A7 }, +{ 0xC6A8, 0xC6A8, 0xC6A8 }, +{ 0xC6A9, 0xC6A9, 0xC6A9 }, +{ 0xC6AA, 0xC6AA, 0xC6AA }, +{ 0xC6AB, 0xC6AB, 0xC6AB }, +{ 0xC6AC, 0xC6AC, 0xC6AC }, +{ 0xC6AD, 0xC6AD, 0xC6AD }, +{ 0xC6AE, 0xC6AE, 0xC6AE }, +{ 0xC6AF, 0xC6AF, 0xC6AF }, +{ 0xC6B0, 0xC6B0, 0xC6B0 }, +{ 0xC6B1, 0xC6B1, 0xC6B1 }, +{ 0xC6B2, 0xC6B2, 0xC6B2 }, +{ 0xC6B3, 0xC6B3, 0xC6B3 }, +{ 0xC6B4, 0xC6B4, 0xC6B4 }, +{ 0xC6B5, 0xC6B5, 0xC6B5 }, +{ 0xC6B6, 0xC6B6, 0xC6B6 }, +{ 0xC6B7, 0xC6B7, 0xC6B7 }, +{ 0xC6B8, 0xC6B8, 0xC6B8 }, +{ 0xC6B9, 0xC6B9, 0xC6B9 }, +{ 0xC6BA, 0xC6BA, 0xC6BA }, +{ 0xC6BB, 0xC6BB, 0xC6BB }, +{ 0xC6BC, 0xC6BC, 0xC6BC }, +{ 0xC6BD, 0xC6BD, 0xC6BD }, +{ 0xC6BE, 0xC6BE, 0xC6BE }, +{ 0xC6BF, 0xC6BF, 0xC6BF }, +{ 0xC6C0, 0xC6C0, 0xC6C0 }, +{ 0xC6C1, 0xC6C1, 0xC6C1 }, +{ 0xC6C2, 0xC6C2, 0xC6C2 }, +{ 0xC6C3, 0xC6C3, 0xC6C3 }, +{ 0xC6C4, 0xC6C4, 0xC6C4 }, +{ 0xC6C5, 0xC6C5, 0xC6C5 }, +{ 0xC6C6, 0xC6C6, 0xC6C6 }, +{ 0xC6C7, 0xC6C7, 0xC6C7 }, +{ 0xC6C8, 0xC6C8, 0xC6C8 }, +{ 0xC6C9, 0xC6C9, 0xC6C9 }, +{ 0xC6CA, 0xC6CA, 0xC6CA }, +{ 0xC6CB, 0xC6CB, 0xC6CB }, +{ 0xC6CC, 0xC6CC, 0xC6CC }, +{ 0xC6CD, 0xC6CD, 0xC6CD }, +{ 0xC6CE, 0xC6CE, 0xC6CE }, +{ 0xC6CF, 0xC6CF, 0xC6CF }, +{ 0xC6D0, 0xC6D0, 0xC6D0 }, +{ 0xC6D1, 0xC6D1, 0xC6D1 }, +{ 0xC6D2, 0xC6D2, 0xC6D2 }, +{ 0xC6D3, 0xC6D3, 0xC6D3 }, +{ 0xC6D4, 0xC6D4, 0xC6D4 }, +{ 0xC6D5, 0xC6D5, 0xC6D5 }, +{ 0xC6D6, 0xC6D6, 0xC6D6 }, +{ 0xC6D7, 0xC6D7, 0xC6D7 }, +{ 0xC6D8, 0xC6D8, 0xC6D8 }, +{ 0xC6D9, 0xC6D9, 0xC6D9 }, +{ 0xC6DA, 0xC6DA, 0xC6DA }, +{ 0xC6DB, 0xC6DB, 0xC6DB }, +{ 0xC6DC, 0xC6DC, 0xC6DC }, +{ 0xC6DD, 0xC6DD, 0xC6DD }, +{ 0xC6DE, 0xC6DE, 0xC6DE }, +{ 0xC6DF, 0xC6DF, 0xC6DF }, +{ 0xC6E0, 0xC6E0, 0xC6E0 }, +{ 0xC6E1, 0xC6E1, 0xC6E1 }, +{ 0xC6E2, 0xC6E2, 0xC6E2 }, +{ 0xC6E3, 0xC6E3, 0xC6E3 }, +{ 0xC6E4, 0xC6E4, 0xC6E4 }, +{ 0xC6E5, 0xC6E5, 0xC6E5 }, +{ 0xC6E6, 0xC6E6, 0xC6E6 }, +{ 0xC6E7, 0xC6E7, 0xC6E7 }, +{ 0xC6E8, 0xC6E8, 0xC6E8 }, +{ 0xC6E9, 0xC6E9, 0xC6E9 }, +{ 0xC6EA, 0xC6EA, 0xC6EA }, +{ 0xC6EB, 0xC6EB, 0xC6EB }, +{ 0xC6EC, 0xC6EC, 0xC6EC }, +{ 0xC6ED, 0xC6ED, 0xC6ED }, +{ 0xC6EE, 0xC6EE, 0xC6EE }, +{ 0xC6EF, 0xC6EF, 0xC6EF }, +{ 0xC6F0, 0xC6F0, 0xC6F0 }, +{ 0xC6F1, 0xC6F1, 0xC6F1 }, +{ 0xC6F2, 0xC6F2, 0xC6F2 }, +{ 0xC6F3, 0xC6F3, 0xC6F3 }, +{ 0xC6F4, 0xC6F4, 0xC6F4 }, +{ 0xC6F5, 0xC6F5, 0xC6F5 }, +{ 0xC6F6, 0xC6F6, 0xC6F6 }, +{ 0xC6F7, 0xC6F7, 0xC6F7 }, +{ 0xC6F8, 0xC6F8, 0xC6F8 }, +{ 0xC6F9, 0xC6F9, 0xC6F9 }, +{ 0xC6FA, 0xC6FA, 0xC6FA }, +{ 0xC6FB, 0xC6FB, 0xC6FB }, +{ 0xC6FC, 0xC6FC, 0xC6FC }, +{ 0xC6FD, 0xC6FD, 0xC6FD }, +{ 0xC6FE, 0xC6FE, 0xC6FE }, +{ 0xC6FF, 0xC6FF, 0xC6FF }, +{ 0xC700, 0xC700, 0xC700 }, +{ 0xC701, 0xC701, 0xC701 }, +{ 0xC702, 0xC702, 0xC702 }, +{ 0xC703, 0xC703, 0xC703 }, +{ 0xC704, 0xC704, 0xC704 }, +{ 0xC705, 0xC705, 0xC705 }, +{ 0xC706, 0xC706, 0xC706 }, +{ 0xC707, 0xC707, 0xC707 }, +{ 0xC708, 0xC708, 0xC708 }, +{ 0xC709, 0xC709, 0xC709 }, +{ 0xC70A, 0xC70A, 0xC70A }, +{ 0xC70B, 0xC70B, 0xC70B }, +{ 0xC70C, 0xC70C, 0xC70C }, +{ 0xC70D, 0xC70D, 0xC70D }, +{ 0xC70E, 0xC70E, 0xC70E }, +{ 0xC70F, 0xC70F, 0xC70F }, +{ 0xC710, 0xC710, 0xC710 }, +{ 0xC711, 0xC711, 0xC711 }, +{ 0xC712, 0xC712, 0xC712 }, +{ 0xC713, 0xC713, 0xC713 }, +{ 0xC714, 0xC714, 0xC714 }, +{ 0xC715, 0xC715, 0xC715 }, +{ 0xC716, 0xC716, 0xC716 }, +{ 0xC717, 0xC717, 0xC717 }, +{ 0xC718, 0xC718, 0xC718 }, +{ 0xC719, 0xC719, 0xC719 }, +{ 0xC71A, 0xC71A, 0xC71A }, +{ 0xC71B, 0xC71B, 0xC71B }, +{ 0xC71C, 0xC71C, 0xC71C }, +{ 0xC71D, 0xC71D, 0xC71D }, +{ 0xC71E, 0xC71E, 0xC71E }, +{ 0xC71F, 0xC71F, 0xC71F }, +{ 0xC720, 0xC720, 0xC720 }, +{ 0xC721, 0xC721, 0xC721 }, +{ 0xC722, 0xC722, 0xC722 }, +{ 0xC723, 0xC723, 0xC723 }, +{ 0xC724, 0xC724, 0xC724 }, +{ 0xC725, 0xC725, 0xC725 }, +{ 0xC726, 0xC726, 0xC726 }, +{ 0xC727, 0xC727, 0xC727 }, +{ 0xC728, 0xC728, 0xC728 }, +{ 0xC729, 0xC729, 0xC729 }, +{ 0xC72A, 0xC72A, 0xC72A }, +{ 0xC72B, 0xC72B, 0xC72B }, +{ 0xC72C, 0xC72C, 0xC72C }, +{ 0xC72D, 0xC72D, 0xC72D }, +{ 0xC72E, 0xC72E, 0xC72E }, +{ 0xC72F, 0xC72F, 0xC72F }, +{ 0xC730, 0xC730, 0xC730 }, +{ 0xC731, 0xC731, 0xC731 }, +{ 0xC732, 0xC732, 0xC732 }, +{ 0xC733, 0xC733, 0xC733 }, +{ 0xC734, 0xC734, 0xC734 }, +{ 0xC735, 0xC735, 0xC735 }, +{ 0xC736, 0xC736, 0xC736 }, +{ 0xC737, 0xC737, 0xC737 }, +{ 0xC738, 0xC738, 0xC738 }, +{ 0xC739, 0xC739, 0xC739 }, +{ 0xC73A, 0xC73A, 0xC73A }, +{ 0xC73B, 0xC73B, 0xC73B }, +{ 0xC73C, 0xC73C, 0xC73C }, +{ 0xC73D, 0xC73D, 0xC73D }, +{ 0xC73E, 0xC73E, 0xC73E }, +{ 0xC73F, 0xC73F, 0xC73F }, +{ 0xC740, 0xC740, 0xC740 }, +{ 0xC741, 0xC741, 0xC741 }, +{ 0xC742, 0xC742, 0xC742 }, +{ 0xC743, 0xC743, 0xC743 }, +{ 0xC744, 0xC744, 0xC744 }, +{ 0xC745, 0xC745, 0xC745 }, +{ 0xC746, 0xC746, 0xC746 }, +{ 0xC747, 0xC747, 0xC747 }, +{ 0xC748, 0xC748, 0xC748 }, +{ 0xC749, 0xC749, 0xC749 }, +{ 0xC74A, 0xC74A, 0xC74A }, +{ 0xC74B, 0xC74B, 0xC74B }, +{ 0xC74C, 0xC74C, 0xC74C }, +{ 0xC74D, 0xC74D, 0xC74D }, +{ 0xC74E, 0xC74E, 0xC74E }, +{ 0xC74F, 0xC74F, 0xC74F }, +{ 0xC750, 0xC750, 0xC750 }, +{ 0xC751, 0xC751, 0xC751 }, +{ 0xC752, 0xC752, 0xC752 }, +{ 0xC753, 0xC753, 0xC753 }, +{ 0xC754, 0xC754, 0xC754 }, +{ 0xC755, 0xC755, 0xC755 }, +{ 0xC756, 0xC756, 0xC756 }, +{ 0xC757, 0xC757, 0xC757 }, +{ 0xC758, 0xC758, 0xC758 }, +{ 0xC759, 0xC759, 0xC759 }, +{ 0xC75A, 0xC75A, 0xC75A }, +{ 0xC75B, 0xC75B, 0xC75B }, +{ 0xC75C, 0xC75C, 0xC75C }, +{ 0xC75D, 0xC75D, 0xC75D }, +{ 0xC75E, 0xC75E, 0xC75E }, +{ 0xC75F, 0xC75F, 0xC75F }, +{ 0xC760, 0xC760, 0xC760 }, +{ 0xC761, 0xC761, 0xC761 }, +{ 0xC762, 0xC762, 0xC762 }, +{ 0xC763, 0xC763, 0xC763 }, +{ 0xC764, 0xC764, 0xC764 }, +{ 0xC765, 0xC765, 0xC765 }, +{ 0xC766, 0xC766, 0xC766 }, +{ 0xC767, 0xC767, 0xC767 }, +{ 0xC768, 0xC768, 0xC768 }, +{ 0xC769, 0xC769, 0xC769 }, +{ 0xC76A, 0xC76A, 0xC76A }, +{ 0xC76B, 0xC76B, 0xC76B }, +{ 0xC76C, 0xC76C, 0xC76C }, +{ 0xC76D, 0xC76D, 0xC76D }, +{ 0xC76E, 0xC76E, 0xC76E }, +{ 0xC76F, 0xC76F, 0xC76F }, +{ 0xC770, 0xC770, 0xC770 }, +{ 0xC771, 0xC771, 0xC771 }, +{ 0xC772, 0xC772, 0xC772 }, +{ 0xC773, 0xC773, 0xC773 }, +{ 0xC774, 0xC774, 0xC774 }, +{ 0xC775, 0xC775, 0xC775 }, +{ 0xC776, 0xC776, 0xC776 }, +{ 0xC777, 0xC777, 0xC777 }, +{ 0xC778, 0xC778, 0xC778 }, +{ 0xC779, 0xC779, 0xC779 }, +{ 0xC77A, 0xC77A, 0xC77A }, +{ 0xC77B, 0xC77B, 0xC77B }, +{ 0xC77C, 0xC77C, 0xC77C }, +{ 0xC77D, 0xC77D, 0xC77D }, +{ 0xC77E, 0xC77E, 0xC77E }, +{ 0xC77F, 0xC77F, 0xC77F }, +{ 0xC780, 0xC780, 0xC780 }, +{ 0xC781, 0xC781, 0xC781 }, +{ 0xC782, 0xC782, 0xC782 }, +{ 0xC783, 0xC783, 0xC783 }, +{ 0xC784, 0xC784, 0xC784 }, +{ 0xC785, 0xC785, 0xC785 }, +{ 0xC786, 0xC786, 0xC786 }, +{ 0xC787, 0xC787, 0xC787 }, +{ 0xC788, 0xC788, 0xC788 }, +{ 0xC789, 0xC789, 0xC789 }, +{ 0xC78A, 0xC78A, 0xC78A }, +{ 0xC78B, 0xC78B, 0xC78B }, +{ 0xC78C, 0xC78C, 0xC78C }, +{ 0xC78D, 0xC78D, 0xC78D }, +{ 0xC78E, 0xC78E, 0xC78E }, +{ 0xC78F, 0xC78F, 0xC78F }, +{ 0xC790, 0xC790, 0xC790 }, +{ 0xC791, 0xC791, 0xC791 }, +{ 0xC792, 0xC792, 0xC792 }, +{ 0xC793, 0xC793, 0xC793 }, +{ 0xC794, 0xC794, 0xC794 }, +{ 0xC795, 0xC795, 0xC795 }, +{ 0xC796, 0xC796, 0xC796 }, +{ 0xC797, 0xC797, 0xC797 }, +{ 0xC798, 0xC798, 0xC798 }, +{ 0xC799, 0xC799, 0xC799 }, +{ 0xC79A, 0xC79A, 0xC79A }, +{ 0xC79B, 0xC79B, 0xC79B }, +{ 0xC79C, 0xC79C, 0xC79C }, +{ 0xC79D, 0xC79D, 0xC79D }, +{ 0xC79E, 0xC79E, 0xC79E }, +{ 0xC79F, 0xC79F, 0xC79F }, +{ 0xC7A0, 0xC7A0, 0xC7A0 }, +{ 0xC7A1, 0xC7A1, 0xC7A1 }, +{ 0xC7A2, 0xC7A2, 0xC7A2 }, +{ 0xC7A3, 0xC7A3, 0xC7A3 }, +{ 0xC7A4, 0xC7A4, 0xC7A4 }, +{ 0xC7A5, 0xC7A5, 0xC7A5 }, +{ 0xC7A6, 0xC7A6, 0xC7A6 }, +{ 0xC7A7, 0xC7A7, 0xC7A7 }, +{ 0xC7A8, 0xC7A8, 0xC7A8 }, +{ 0xC7A9, 0xC7A9, 0xC7A9 }, +{ 0xC7AA, 0xC7AA, 0xC7AA }, +{ 0xC7AB, 0xC7AB, 0xC7AB }, +{ 0xC7AC, 0xC7AC, 0xC7AC }, +{ 0xC7AD, 0xC7AD, 0xC7AD }, +{ 0xC7AE, 0xC7AE, 0xC7AE }, +{ 0xC7AF, 0xC7AF, 0xC7AF }, +{ 0xC7B0, 0xC7B0, 0xC7B0 }, +{ 0xC7B1, 0xC7B1, 0xC7B1 }, +{ 0xC7B2, 0xC7B2, 0xC7B2 }, +{ 0xC7B3, 0xC7B3, 0xC7B3 }, +{ 0xC7B4, 0xC7B4, 0xC7B4 }, +{ 0xC7B5, 0xC7B5, 0xC7B5 }, +{ 0xC7B6, 0xC7B6, 0xC7B6 }, +{ 0xC7B7, 0xC7B7, 0xC7B7 }, +{ 0xC7B8, 0xC7B8, 0xC7B8 }, +{ 0xC7B9, 0xC7B9, 0xC7B9 }, +{ 0xC7BA, 0xC7BA, 0xC7BA }, +{ 0xC7BB, 0xC7BB, 0xC7BB }, +{ 0xC7BC, 0xC7BC, 0xC7BC }, +{ 0xC7BD, 0xC7BD, 0xC7BD }, +{ 0xC7BE, 0xC7BE, 0xC7BE }, +{ 0xC7BF, 0xC7BF, 0xC7BF }, +{ 0xC7C0, 0xC7C0, 0xC7C0 }, +{ 0xC7C1, 0xC7C1, 0xC7C1 }, +{ 0xC7C2, 0xC7C2, 0xC7C2 }, +{ 0xC7C3, 0xC7C3, 0xC7C3 }, +{ 0xC7C4, 0xC7C4, 0xC7C4 }, +{ 0xC7C5, 0xC7C5, 0xC7C5 }, +{ 0xC7C6, 0xC7C6, 0xC7C6 }, +{ 0xC7C7, 0xC7C7, 0xC7C7 }, +{ 0xC7C8, 0xC7C8, 0xC7C8 }, +{ 0xC7C9, 0xC7C9, 0xC7C9 }, +{ 0xC7CA, 0xC7CA, 0xC7CA }, +{ 0xC7CB, 0xC7CB, 0xC7CB }, +{ 0xC7CC, 0xC7CC, 0xC7CC }, +{ 0xC7CD, 0xC7CD, 0xC7CD }, +{ 0xC7CE, 0xC7CE, 0xC7CE }, +{ 0xC7CF, 0xC7CF, 0xC7CF }, +{ 0xC7D0, 0xC7D0, 0xC7D0 }, +{ 0xC7D1, 0xC7D1, 0xC7D1 }, +{ 0xC7D2, 0xC7D2, 0xC7D2 }, +{ 0xC7D3, 0xC7D3, 0xC7D3 }, +{ 0xC7D4, 0xC7D4, 0xC7D4 }, +{ 0xC7D5, 0xC7D5, 0xC7D5 }, +{ 0xC7D6, 0xC7D6, 0xC7D6 }, +{ 0xC7D7, 0xC7D7, 0xC7D7 }, +{ 0xC7D8, 0xC7D8, 0xC7D8 }, +{ 0xC7D9, 0xC7D9, 0xC7D9 }, +{ 0xC7DA, 0xC7DA, 0xC7DA }, +{ 0xC7DB, 0xC7DB, 0xC7DB }, +{ 0xC7DC, 0xC7DC, 0xC7DC }, +{ 0xC7DD, 0xC7DD, 0xC7DD }, +{ 0xC7DE, 0xC7DE, 0xC7DE }, +{ 0xC7DF, 0xC7DF, 0xC7DF }, +{ 0xC7E0, 0xC7E0, 0xC7E0 }, +{ 0xC7E1, 0xC7E1, 0xC7E1 }, +{ 0xC7E2, 0xC7E2, 0xC7E2 }, +{ 0xC7E3, 0xC7E3, 0xC7E3 }, +{ 0xC7E4, 0xC7E4, 0xC7E4 }, +{ 0xC7E5, 0xC7E5, 0xC7E5 }, +{ 0xC7E6, 0xC7E6, 0xC7E6 }, +{ 0xC7E7, 0xC7E7, 0xC7E7 }, +{ 0xC7E8, 0xC7E8, 0xC7E8 }, +{ 0xC7E9, 0xC7E9, 0xC7E9 }, +{ 0xC7EA, 0xC7EA, 0xC7EA }, +{ 0xC7EB, 0xC7EB, 0xC7EB }, +{ 0xC7EC, 0xC7EC, 0xC7EC }, +{ 0xC7ED, 0xC7ED, 0xC7ED }, +{ 0xC7EE, 0xC7EE, 0xC7EE }, +{ 0xC7EF, 0xC7EF, 0xC7EF }, +{ 0xC7F0, 0xC7F0, 0xC7F0 }, +{ 0xC7F1, 0xC7F1, 0xC7F1 }, +{ 0xC7F2, 0xC7F2, 0xC7F2 }, +{ 0xC7F3, 0xC7F3, 0xC7F3 }, +{ 0xC7F4, 0xC7F4, 0xC7F4 }, +{ 0xC7F5, 0xC7F5, 0xC7F5 }, +{ 0xC7F6, 0xC7F6, 0xC7F6 }, +{ 0xC7F7, 0xC7F7, 0xC7F7 }, +{ 0xC7F8, 0xC7F8, 0xC7F8 }, +{ 0xC7F9, 0xC7F9, 0xC7F9 }, +{ 0xC7FA, 0xC7FA, 0xC7FA }, +{ 0xC7FB, 0xC7FB, 0xC7FB }, +{ 0xC7FC, 0xC7FC, 0xC7FC }, +{ 0xC7FD, 0xC7FD, 0xC7FD }, +{ 0xC7FE, 0xC7FE, 0xC7FE }, +{ 0xC7FF, 0xC7FF, 0xC7FF }, +{ 0xC800, 0xC800, 0xC800 }, +{ 0xC801, 0xC801, 0xC801 }, +{ 0xC802, 0xC802, 0xC802 }, +{ 0xC803, 0xC803, 0xC803 }, +{ 0xC804, 0xC804, 0xC804 }, +{ 0xC805, 0xC805, 0xC805 }, +{ 0xC806, 0xC806, 0xC806 }, +{ 0xC807, 0xC807, 0xC807 }, +{ 0xC808, 0xC808, 0xC808 }, +{ 0xC809, 0xC809, 0xC809 }, +{ 0xC80A, 0xC80A, 0xC80A }, +{ 0xC80B, 0xC80B, 0xC80B }, +{ 0xC80C, 0xC80C, 0xC80C }, +{ 0xC80D, 0xC80D, 0xC80D }, +{ 0xC80E, 0xC80E, 0xC80E }, +{ 0xC80F, 0xC80F, 0xC80F }, +{ 0xC810, 0xC810, 0xC810 }, +{ 0xC811, 0xC811, 0xC811 }, +{ 0xC812, 0xC812, 0xC812 }, +{ 0xC813, 0xC813, 0xC813 }, +{ 0xC814, 0xC814, 0xC814 }, +{ 0xC815, 0xC815, 0xC815 }, +{ 0xC816, 0xC816, 0xC816 }, +{ 0xC817, 0xC817, 0xC817 }, +{ 0xC818, 0xC818, 0xC818 }, +{ 0xC819, 0xC819, 0xC819 }, +{ 0xC81A, 0xC81A, 0xC81A }, +{ 0xC81B, 0xC81B, 0xC81B }, +{ 0xC81C, 0xC81C, 0xC81C }, +{ 0xC81D, 0xC81D, 0xC81D }, +{ 0xC81E, 0xC81E, 0xC81E }, +{ 0xC81F, 0xC81F, 0xC81F }, +{ 0xC820, 0xC820, 0xC820 }, +{ 0xC821, 0xC821, 0xC821 }, +{ 0xC822, 0xC822, 0xC822 }, +{ 0xC823, 0xC823, 0xC823 }, +{ 0xC824, 0xC824, 0xC824 }, +{ 0xC825, 0xC825, 0xC825 }, +{ 0xC826, 0xC826, 0xC826 }, +{ 0xC827, 0xC827, 0xC827 }, +{ 0xC828, 0xC828, 0xC828 }, +{ 0xC829, 0xC829, 0xC829 }, +{ 0xC82A, 0xC82A, 0xC82A }, +{ 0xC82B, 0xC82B, 0xC82B }, +{ 0xC82C, 0xC82C, 0xC82C }, +{ 0xC82D, 0xC82D, 0xC82D }, +{ 0xC82E, 0xC82E, 0xC82E }, +{ 0xC82F, 0xC82F, 0xC82F }, +{ 0xC830, 0xC830, 0xC830 }, +{ 0xC831, 0xC831, 0xC831 }, +{ 0xC832, 0xC832, 0xC832 }, +{ 0xC833, 0xC833, 0xC833 }, +{ 0xC834, 0xC834, 0xC834 }, +{ 0xC835, 0xC835, 0xC835 }, +{ 0xC836, 0xC836, 0xC836 }, +{ 0xC837, 0xC837, 0xC837 }, +{ 0xC838, 0xC838, 0xC838 }, +{ 0xC839, 0xC839, 0xC839 }, +{ 0xC83A, 0xC83A, 0xC83A }, +{ 0xC83B, 0xC83B, 0xC83B }, +{ 0xC83C, 0xC83C, 0xC83C }, +{ 0xC83D, 0xC83D, 0xC83D }, +{ 0xC83E, 0xC83E, 0xC83E }, +{ 0xC83F, 0xC83F, 0xC83F }, +{ 0xC840, 0xC840, 0xC840 }, +{ 0xC841, 0xC841, 0xC841 }, +{ 0xC842, 0xC842, 0xC842 }, +{ 0xC843, 0xC843, 0xC843 }, +{ 0xC844, 0xC844, 0xC844 }, +{ 0xC845, 0xC845, 0xC845 }, +{ 0xC846, 0xC846, 0xC846 }, +{ 0xC847, 0xC847, 0xC847 }, +{ 0xC848, 0xC848, 0xC848 }, +{ 0xC849, 0xC849, 0xC849 }, +{ 0xC84A, 0xC84A, 0xC84A }, +{ 0xC84B, 0xC84B, 0xC84B }, +{ 0xC84C, 0xC84C, 0xC84C }, +{ 0xC84D, 0xC84D, 0xC84D }, +{ 0xC84E, 0xC84E, 0xC84E }, +{ 0xC84F, 0xC84F, 0xC84F }, +{ 0xC850, 0xC850, 0xC850 }, +{ 0xC851, 0xC851, 0xC851 }, +{ 0xC852, 0xC852, 0xC852 }, +{ 0xC853, 0xC853, 0xC853 }, +{ 0xC854, 0xC854, 0xC854 }, +{ 0xC855, 0xC855, 0xC855 }, +{ 0xC856, 0xC856, 0xC856 }, +{ 0xC857, 0xC857, 0xC857 }, +{ 0xC858, 0xC858, 0xC858 }, +{ 0xC859, 0xC859, 0xC859 }, +{ 0xC85A, 0xC85A, 0xC85A }, +{ 0xC85B, 0xC85B, 0xC85B }, +{ 0xC85C, 0xC85C, 0xC85C }, +{ 0xC85D, 0xC85D, 0xC85D }, +{ 0xC85E, 0xC85E, 0xC85E }, +{ 0xC85F, 0xC85F, 0xC85F }, +{ 0xC860, 0xC860, 0xC860 }, +{ 0xC861, 0xC861, 0xC861 }, +{ 0xC862, 0xC862, 0xC862 }, +{ 0xC863, 0xC863, 0xC863 }, +{ 0xC864, 0xC864, 0xC864 }, +{ 0xC865, 0xC865, 0xC865 }, +{ 0xC866, 0xC866, 0xC866 }, +{ 0xC867, 0xC867, 0xC867 }, +{ 0xC868, 0xC868, 0xC868 }, +{ 0xC869, 0xC869, 0xC869 }, +{ 0xC86A, 0xC86A, 0xC86A }, +{ 0xC86B, 0xC86B, 0xC86B }, +{ 0xC86C, 0xC86C, 0xC86C }, +{ 0xC86D, 0xC86D, 0xC86D }, +{ 0xC86E, 0xC86E, 0xC86E }, +{ 0xC86F, 0xC86F, 0xC86F }, +{ 0xC870, 0xC870, 0xC870 }, +{ 0xC871, 0xC871, 0xC871 }, +{ 0xC872, 0xC872, 0xC872 }, +{ 0xC873, 0xC873, 0xC873 }, +{ 0xC874, 0xC874, 0xC874 }, +{ 0xC875, 0xC875, 0xC875 }, +{ 0xC876, 0xC876, 0xC876 }, +{ 0xC877, 0xC877, 0xC877 }, +{ 0xC878, 0xC878, 0xC878 }, +{ 0xC879, 0xC879, 0xC879 }, +{ 0xC87A, 0xC87A, 0xC87A }, +{ 0xC87B, 0xC87B, 0xC87B }, +{ 0xC87C, 0xC87C, 0xC87C }, +{ 0xC87D, 0xC87D, 0xC87D }, +{ 0xC87E, 0xC87E, 0xC87E }, +{ 0xC87F, 0xC87F, 0xC87F }, +{ 0xC880, 0xC880, 0xC880 }, +{ 0xC881, 0xC881, 0xC881 }, +{ 0xC882, 0xC882, 0xC882 }, +{ 0xC883, 0xC883, 0xC883 }, +{ 0xC884, 0xC884, 0xC884 }, +{ 0xC885, 0xC885, 0xC885 }, +{ 0xC886, 0xC886, 0xC886 }, +{ 0xC887, 0xC887, 0xC887 }, +{ 0xC888, 0xC888, 0xC888 }, +{ 0xC889, 0xC889, 0xC889 }, +{ 0xC88A, 0xC88A, 0xC88A }, +{ 0xC88B, 0xC88B, 0xC88B }, +{ 0xC88C, 0xC88C, 0xC88C }, +{ 0xC88D, 0xC88D, 0xC88D }, +{ 0xC88E, 0xC88E, 0xC88E }, +{ 0xC88F, 0xC88F, 0xC88F }, +{ 0xC890, 0xC890, 0xC890 }, +{ 0xC891, 0xC891, 0xC891 }, +{ 0xC892, 0xC892, 0xC892 }, +{ 0xC893, 0xC893, 0xC893 }, +{ 0xC894, 0xC894, 0xC894 }, +{ 0xC895, 0xC895, 0xC895 }, +{ 0xC896, 0xC896, 0xC896 }, +{ 0xC897, 0xC897, 0xC897 }, +{ 0xC898, 0xC898, 0xC898 }, +{ 0xC899, 0xC899, 0xC899 }, +{ 0xC89A, 0xC89A, 0xC89A }, +{ 0xC89B, 0xC89B, 0xC89B }, +{ 0xC89C, 0xC89C, 0xC89C }, +{ 0xC89D, 0xC89D, 0xC89D }, +{ 0xC89E, 0xC89E, 0xC89E }, +{ 0xC89F, 0xC89F, 0xC89F }, +{ 0xC8A0, 0xC8A0, 0xC8A0 }, +{ 0xC8A1, 0xC8A1, 0xC8A1 }, +{ 0xC8A2, 0xC8A2, 0xC8A2 }, +{ 0xC8A3, 0xC8A3, 0xC8A3 }, +{ 0xC8A4, 0xC8A4, 0xC8A4 }, +{ 0xC8A5, 0xC8A5, 0xC8A5 }, +{ 0xC8A6, 0xC8A6, 0xC8A6 }, +{ 0xC8A7, 0xC8A7, 0xC8A7 }, +{ 0xC8A8, 0xC8A8, 0xC8A8 }, +{ 0xC8A9, 0xC8A9, 0xC8A9 }, +{ 0xC8AA, 0xC8AA, 0xC8AA }, +{ 0xC8AB, 0xC8AB, 0xC8AB }, +{ 0xC8AC, 0xC8AC, 0xC8AC }, +{ 0xC8AD, 0xC8AD, 0xC8AD }, +{ 0xC8AE, 0xC8AE, 0xC8AE }, +{ 0xC8AF, 0xC8AF, 0xC8AF }, +{ 0xC8B0, 0xC8B0, 0xC8B0 }, +{ 0xC8B1, 0xC8B1, 0xC8B1 }, +{ 0xC8B2, 0xC8B2, 0xC8B2 }, +{ 0xC8B3, 0xC8B3, 0xC8B3 }, +{ 0xC8B4, 0xC8B4, 0xC8B4 }, +{ 0xC8B5, 0xC8B5, 0xC8B5 }, +{ 0xC8B6, 0xC8B6, 0xC8B6 }, +{ 0xC8B7, 0xC8B7, 0xC8B7 }, +{ 0xC8B8, 0xC8B8, 0xC8B8 }, +{ 0xC8B9, 0xC8B9, 0xC8B9 }, +{ 0xC8BA, 0xC8BA, 0xC8BA }, +{ 0xC8BB, 0xC8BB, 0xC8BB }, +{ 0xC8BC, 0xC8BC, 0xC8BC }, +{ 0xC8BD, 0xC8BD, 0xC8BD }, +{ 0xC8BE, 0xC8BE, 0xC8BE }, +{ 0xC8BF, 0xC8BF, 0xC8BF }, +{ 0xC8C0, 0xC8C0, 0xC8C0 }, +{ 0xC8C1, 0xC8C1, 0xC8C1 }, +{ 0xC8C2, 0xC8C2, 0xC8C2 }, +{ 0xC8C3, 0xC8C3, 0xC8C3 }, +{ 0xC8C4, 0xC8C4, 0xC8C4 }, +{ 0xC8C5, 0xC8C5, 0xC8C5 }, +{ 0xC8C6, 0xC8C6, 0xC8C6 }, +{ 0xC8C7, 0xC8C7, 0xC8C7 }, +{ 0xC8C8, 0xC8C8, 0xC8C8 }, +{ 0xC8C9, 0xC8C9, 0xC8C9 }, +{ 0xC8CA, 0xC8CA, 0xC8CA }, +{ 0xC8CB, 0xC8CB, 0xC8CB }, +{ 0xC8CC, 0xC8CC, 0xC8CC }, +{ 0xC8CD, 0xC8CD, 0xC8CD }, +{ 0xC8CE, 0xC8CE, 0xC8CE }, +{ 0xC8CF, 0xC8CF, 0xC8CF }, +{ 0xC8D0, 0xC8D0, 0xC8D0 }, +{ 0xC8D1, 0xC8D1, 0xC8D1 }, +{ 0xC8D2, 0xC8D2, 0xC8D2 }, +{ 0xC8D3, 0xC8D3, 0xC8D3 }, +{ 0xC8D4, 0xC8D4, 0xC8D4 }, +{ 0xC8D5, 0xC8D5, 0xC8D5 }, +{ 0xC8D6, 0xC8D6, 0xC8D6 }, +{ 0xC8D7, 0xC8D7, 0xC8D7 }, +{ 0xC8D8, 0xC8D8, 0xC8D8 }, +{ 0xC8D9, 0xC8D9, 0xC8D9 }, +{ 0xC8DA, 0xC8DA, 0xC8DA }, +{ 0xC8DB, 0xC8DB, 0xC8DB }, +{ 0xC8DC, 0xC8DC, 0xC8DC }, +{ 0xC8DD, 0xC8DD, 0xC8DD }, +{ 0xC8DE, 0xC8DE, 0xC8DE }, +{ 0xC8DF, 0xC8DF, 0xC8DF }, +{ 0xC8E0, 0xC8E0, 0xC8E0 }, +{ 0xC8E1, 0xC8E1, 0xC8E1 }, +{ 0xC8E2, 0xC8E2, 0xC8E2 }, +{ 0xC8E3, 0xC8E3, 0xC8E3 }, +{ 0xC8E4, 0xC8E4, 0xC8E4 }, +{ 0xC8E5, 0xC8E5, 0xC8E5 }, +{ 0xC8E6, 0xC8E6, 0xC8E6 }, +{ 0xC8E7, 0xC8E7, 0xC8E7 }, +{ 0xC8E8, 0xC8E8, 0xC8E8 }, +{ 0xC8E9, 0xC8E9, 0xC8E9 }, +{ 0xC8EA, 0xC8EA, 0xC8EA }, +{ 0xC8EB, 0xC8EB, 0xC8EB }, +{ 0xC8EC, 0xC8EC, 0xC8EC }, +{ 0xC8ED, 0xC8ED, 0xC8ED }, +{ 0xC8EE, 0xC8EE, 0xC8EE }, +{ 0xC8EF, 0xC8EF, 0xC8EF }, +{ 0xC8F0, 0xC8F0, 0xC8F0 }, +{ 0xC8F1, 0xC8F1, 0xC8F1 }, +{ 0xC8F2, 0xC8F2, 0xC8F2 }, +{ 0xC8F3, 0xC8F3, 0xC8F3 }, +{ 0xC8F4, 0xC8F4, 0xC8F4 }, +{ 0xC8F5, 0xC8F5, 0xC8F5 }, +{ 0xC8F6, 0xC8F6, 0xC8F6 }, +{ 0xC8F7, 0xC8F7, 0xC8F7 }, +{ 0xC8F8, 0xC8F8, 0xC8F8 }, +{ 0xC8F9, 0xC8F9, 0xC8F9 }, +{ 0xC8FA, 0xC8FA, 0xC8FA }, +{ 0xC8FB, 0xC8FB, 0xC8FB }, +{ 0xC8FC, 0xC8FC, 0xC8FC }, +{ 0xC8FD, 0xC8FD, 0xC8FD }, +{ 0xC8FE, 0xC8FE, 0xC8FE }, +{ 0xC8FF, 0xC8FF, 0xC8FF }, +{ 0xC900, 0xC900, 0xC900 }, +{ 0xC901, 0xC901, 0xC901 }, +{ 0xC902, 0xC902, 0xC902 }, +{ 0xC903, 0xC903, 0xC903 }, +{ 0xC904, 0xC904, 0xC904 }, +{ 0xC905, 0xC905, 0xC905 }, +{ 0xC906, 0xC906, 0xC906 }, +{ 0xC907, 0xC907, 0xC907 }, +{ 0xC908, 0xC908, 0xC908 }, +{ 0xC909, 0xC909, 0xC909 }, +{ 0xC90A, 0xC90A, 0xC90A }, +{ 0xC90B, 0xC90B, 0xC90B }, +{ 0xC90C, 0xC90C, 0xC90C }, +{ 0xC90D, 0xC90D, 0xC90D }, +{ 0xC90E, 0xC90E, 0xC90E }, +{ 0xC90F, 0xC90F, 0xC90F }, +{ 0xC910, 0xC910, 0xC910 }, +{ 0xC911, 0xC911, 0xC911 }, +{ 0xC912, 0xC912, 0xC912 }, +{ 0xC913, 0xC913, 0xC913 }, +{ 0xC914, 0xC914, 0xC914 }, +{ 0xC915, 0xC915, 0xC915 }, +{ 0xC916, 0xC916, 0xC916 }, +{ 0xC917, 0xC917, 0xC917 }, +{ 0xC918, 0xC918, 0xC918 }, +{ 0xC919, 0xC919, 0xC919 }, +{ 0xC91A, 0xC91A, 0xC91A }, +{ 0xC91B, 0xC91B, 0xC91B }, +{ 0xC91C, 0xC91C, 0xC91C }, +{ 0xC91D, 0xC91D, 0xC91D }, +{ 0xC91E, 0xC91E, 0xC91E }, +{ 0xC91F, 0xC91F, 0xC91F }, +{ 0xC920, 0xC920, 0xC920 }, +{ 0xC921, 0xC921, 0xC921 }, +{ 0xC922, 0xC922, 0xC922 }, +{ 0xC923, 0xC923, 0xC923 }, +{ 0xC924, 0xC924, 0xC924 }, +{ 0xC925, 0xC925, 0xC925 }, +{ 0xC926, 0xC926, 0xC926 }, +{ 0xC927, 0xC927, 0xC927 }, +{ 0xC928, 0xC928, 0xC928 }, +{ 0xC929, 0xC929, 0xC929 }, +{ 0xC92A, 0xC92A, 0xC92A }, +{ 0xC92B, 0xC92B, 0xC92B }, +{ 0xC92C, 0xC92C, 0xC92C }, +{ 0xC92D, 0xC92D, 0xC92D }, +{ 0xC92E, 0xC92E, 0xC92E }, +{ 0xC92F, 0xC92F, 0xC92F }, +{ 0xC930, 0xC930, 0xC930 }, +{ 0xC931, 0xC931, 0xC931 }, +{ 0xC932, 0xC932, 0xC932 }, +{ 0xC933, 0xC933, 0xC933 }, +{ 0xC934, 0xC934, 0xC934 }, +{ 0xC935, 0xC935, 0xC935 }, +{ 0xC936, 0xC936, 0xC936 }, +{ 0xC937, 0xC937, 0xC937 }, +{ 0xC938, 0xC938, 0xC938 }, +{ 0xC939, 0xC939, 0xC939 }, +{ 0xC93A, 0xC93A, 0xC93A }, +{ 0xC93B, 0xC93B, 0xC93B }, +{ 0xC93C, 0xC93C, 0xC93C }, +{ 0xC93D, 0xC93D, 0xC93D }, +{ 0xC93E, 0xC93E, 0xC93E }, +{ 0xC93F, 0xC93F, 0xC93F }, +{ 0xC940, 0xC940, 0xC940 }, +{ 0xC941, 0xC941, 0xC941 }, +{ 0xC942, 0xC942, 0xC942 }, +{ 0xC943, 0xC943, 0xC943 }, +{ 0xC944, 0xC944, 0xC944 }, +{ 0xC945, 0xC945, 0xC945 }, +{ 0xC946, 0xC946, 0xC946 }, +{ 0xC947, 0xC947, 0xC947 }, +{ 0xC948, 0xC948, 0xC948 }, +{ 0xC949, 0xC949, 0xC949 }, +{ 0xC94A, 0xC94A, 0xC94A }, +{ 0xC94B, 0xC94B, 0xC94B }, +{ 0xC94C, 0xC94C, 0xC94C }, +{ 0xC94D, 0xC94D, 0xC94D }, +{ 0xC94E, 0xC94E, 0xC94E }, +{ 0xC94F, 0xC94F, 0xC94F }, +{ 0xC950, 0xC950, 0xC950 }, +{ 0xC951, 0xC951, 0xC951 }, +{ 0xC952, 0xC952, 0xC952 }, +{ 0xC953, 0xC953, 0xC953 }, +{ 0xC954, 0xC954, 0xC954 }, +{ 0xC955, 0xC955, 0xC955 }, +{ 0xC956, 0xC956, 0xC956 }, +{ 0xC957, 0xC957, 0xC957 }, +{ 0xC958, 0xC958, 0xC958 }, +{ 0xC959, 0xC959, 0xC959 }, +{ 0xC95A, 0xC95A, 0xC95A }, +{ 0xC95B, 0xC95B, 0xC95B }, +{ 0xC95C, 0xC95C, 0xC95C }, +{ 0xC95D, 0xC95D, 0xC95D }, +{ 0xC95E, 0xC95E, 0xC95E }, +{ 0xC95F, 0xC95F, 0xC95F }, +{ 0xC960, 0xC960, 0xC960 }, +{ 0xC961, 0xC961, 0xC961 }, +{ 0xC962, 0xC962, 0xC962 }, +{ 0xC963, 0xC963, 0xC963 }, +{ 0xC964, 0xC964, 0xC964 }, +{ 0xC965, 0xC965, 0xC965 }, +{ 0xC966, 0xC966, 0xC966 }, +{ 0xC967, 0xC967, 0xC967 }, +{ 0xC968, 0xC968, 0xC968 }, +{ 0xC969, 0xC969, 0xC969 }, +{ 0xC96A, 0xC96A, 0xC96A }, +{ 0xC96B, 0xC96B, 0xC96B }, +{ 0xC96C, 0xC96C, 0xC96C }, +{ 0xC96D, 0xC96D, 0xC96D }, +{ 0xC96E, 0xC96E, 0xC96E }, +{ 0xC96F, 0xC96F, 0xC96F }, +{ 0xC970, 0xC970, 0xC970 }, +{ 0xC971, 0xC971, 0xC971 }, +{ 0xC972, 0xC972, 0xC972 }, +{ 0xC973, 0xC973, 0xC973 }, +{ 0xC974, 0xC974, 0xC974 }, +{ 0xC975, 0xC975, 0xC975 }, +{ 0xC976, 0xC976, 0xC976 }, +{ 0xC977, 0xC977, 0xC977 }, +{ 0xC978, 0xC978, 0xC978 }, +{ 0xC979, 0xC979, 0xC979 }, +{ 0xC97A, 0xC97A, 0xC97A }, +{ 0xC97B, 0xC97B, 0xC97B }, +{ 0xC97C, 0xC97C, 0xC97C }, +{ 0xC97D, 0xC97D, 0xC97D }, +{ 0xC97E, 0xC97E, 0xC97E }, +{ 0xC97F, 0xC97F, 0xC97F }, +{ 0xC980, 0xC980, 0xC980 }, +{ 0xC981, 0xC981, 0xC981 }, +{ 0xC982, 0xC982, 0xC982 }, +{ 0xC983, 0xC983, 0xC983 }, +{ 0xC984, 0xC984, 0xC984 }, +{ 0xC985, 0xC985, 0xC985 }, +{ 0xC986, 0xC986, 0xC986 }, +{ 0xC987, 0xC987, 0xC987 }, +{ 0xC988, 0xC988, 0xC988 }, +{ 0xC989, 0xC989, 0xC989 }, +{ 0xC98A, 0xC98A, 0xC98A }, +{ 0xC98B, 0xC98B, 0xC98B }, +{ 0xC98C, 0xC98C, 0xC98C }, +{ 0xC98D, 0xC98D, 0xC98D }, +{ 0xC98E, 0xC98E, 0xC98E }, +{ 0xC98F, 0xC98F, 0xC98F }, +{ 0xC990, 0xC990, 0xC990 }, +{ 0xC991, 0xC991, 0xC991 }, +{ 0xC992, 0xC992, 0xC992 }, +{ 0xC993, 0xC993, 0xC993 }, +{ 0xC994, 0xC994, 0xC994 }, +{ 0xC995, 0xC995, 0xC995 }, +{ 0xC996, 0xC996, 0xC996 }, +{ 0xC997, 0xC997, 0xC997 }, +{ 0xC998, 0xC998, 0xC998 }, +{ 0xC999, 0xC999, 0xC999 }, +{ 0xC99A, 0xC99A, 0xC99A }, +{ 0xC99B, 0xC99B, 0xC99B }, +{ 0xC99C, 0xC99C, 0xC99C }, +{ 0xC99D, 0xC99D, 0xC99D }, +{ 0xC99E, 0xC99E, 0xC99E }, +{ 0xC99F, 0xC99F, 0xC99F }, +{ 0xC9A0, 0xC9A0, 0xC9A0 }, +{ 0xC9A1, 0xC9A1, 0xC9A1 }, +{ 0xC9A2, 0xC9A2, 0xC9A2 }, +{ 0xC9A3, 0xC9A3, 0xC9A3 }, +{ 0xC9A4, 0xC9A4, 0xC9A4 }, +{ 0xC9A5, 0xC9A5, 0xC9A5 }, +{ 0xC9A6, 0xC9A6, 0xC9A6 }, +{ 0xC9A7, 0xC9A7, 0xC9A7 }, +{ 0xC9A8, 0xC9A8, 0xC9A8 }, +{ 0xC9A9, 0xC9A9, 0xC9A9 }, +{ 0xC9AA, 0xC9AA, 0xC9AA }, +{ 0xC9AB, 0xC9AB, 0xC9AB }, +{ 0xC9AC, 0xC9AC, 0xC9AC }, +{ 0xC9AD, 0xC9AD, 0xC9AD }, +{ 0xC9AE, 0xC9AE, 0xC9AE }, +{ 0xC9AF, 0xC9AF, 0xC9AF }, +{ 0xC9B0, 0xC9B0, 0xC9B0 }, +{ 0xC9B1, 0xC9B1, 0xC9B1 }, +{ 0xC9B2, 0xC9B2, 0xC9B2 }, +{ 0xC9B3, 0xC9B3, 0xC9B3 }, +{ 0xC9B4, 0xC9B4, 0xC9B4 }, +{ 0xC9B5, 0xC9B5, 0xC9B5 }, +{ 0xC9B6, 0xC9B6, 0xC9B6 }, +{ 0xC9B7, 0xC9B7, 0xC9B7 }, +{ 0xC9B8, 0xC9B8, 0xC9B8 }, +{ 0xC9B9, 0xC9B9, 0xC9B9 }, +{ 0xC9BA, 0xC9BA, 0xC9BA }, +{ 0xC9BB, 0xC9BB, 0xC9BB }, +{ 0xC9BC, 0xC9BC, 0xC9BC }, +{ 0xC9BD, 0xC9BD, 0xC9BD }, +{ 0xC9BE, 0xC9BE, 0xC9BE }, +{ 0xC9BF, 0xC9BF, 0xC9BF }, +{ 0xC9C0, 0xC9C0, 0xC9C0 }, +{ 0xC9C1, 0xC9C1, 0xC9C1 }, +{ 0xC9C2, 0xC9C2, 0xC9C2 }, +{ 0xC9C3, 0xC9C3, 0xC9C3 }, +{ 0xC9C4, 0xC9C4, 0xC9C4 }, +{ 0xC9C5, 0xC9C5, 0xC9C5 }, +{ 0xC9C6, 0xC9C6, 0xC9C6 }, +{ 0xC9C7, 0xC9C7, 0xC9C7 }, +{ 0xC9C8, 0xC9C8, 0xC9C8 }, +{ 0xC9C9, 0xC9C9, 0xC9C9 }, +{ 0xC9CA, 0xC9CA, 0xC9CA }, +{ 0xC9CB, 0xC9CB, 0xC9CB }, +{ 0xC9CC, 0xC9CC, 0xC9CC }, +{ 0xC9CD, 0xC9CD, 0xC9CD }, +{ 0xC9CE, 0xC9CE, 0xC9CE }, +{ 0xC9CF, 0xC9CF, 0xC9CF }, +{ 0xC9D0, 0xC9D0, 0xC9D0 }, +{ 0xC9D1, 0xC9D1, 0xC9D1 }, +{ 0xC9D2, 0xC9D2, 0xC9D2 }, +{ 0xC9D3, 0xC9D3, 0xC9D3 }, +{ 0xC9D4, 0xC9D4, 0xC9D4 }, +{ 0xC9D5, 0xC9D5, 0xC9D5 }, +{ 0xC9D6, 0xC9D6, 0xC9D6 }, +{ 0xC9D7, 0xC9D7, 0xC9D7 }, +{ 0xC9D8, 0xC9D8, 0xC9D8 }, +{ 0xC9D9, 0xC9D9, 0xC9D9 }, +{ 0xC9DA, 0xC9DA, 0xC9DA }, +{ 0xC9DB, 0xC9DB, 0xC9DB }, +{ 0xC9DC, 0xC9DC, 0xC9DC }, +{ 0xC9DD, 0xC9DD, 0xC9DD }, +{ 0xC9DE, 0xC9DE, 0xC9DE }, +{ 0xC9DF, 0xC9DF, 0xC9DF }, +{ 0xC9E0, 0xC9E0, 0xC9E0 }, +{ 0xC9E1, 0xC9E1, 0xC9E1 }, +{ 0xC9E2, 0xC9E2, 0xC9E2 }, +{ 0xC9E3, 0xC9E3, 0xC9E3 }, +{ 0xC9E4, 0xC9E4, 0xC9E4 }, +{ 0xC9E5, 0xC9E5, 0xC9E5 }, +{ 0xC9E6, 0xC9E6, 0xC9E6 }, +{ 0xC9E7, 0xC9E7, 0xC9E7 }, +{ 0xC9E8, 0xC9E8, 0xC9E8 }, +{ 0xC9E9, 0xC9E9, 0xC9E9 }, +{ 0xC9EA, 0xC9EA, 0xC9EA }, +{ 0xC9EB, 0xC9EB, 0xC9EB }, +{ 0xC9EC, 0xC9EC, 0xC9EC }, +{ 0xC9ED, 0xC9ED, 0xC9ED }, +{ 0xC9EE, 0xC9EE, 0xC9EE }, +{ 0xC9EF, 0xC9EF, 0xC9EF }, +{ 0xC9F0, 0xC9F0, 0xC9F0 }, +{ 0xC9F1, 0xC9F1, 0xC9F1 }, +{ 0xC9F2, 0xC9F2, 0xC9F2 }, +{ 0xC9F3, 0xC9F3, 0xC9F3 }, +{ 0xC9F4, 0xC9F4, 0xC9F4 }, +{ 0xC9F5, 0xC9F5, 0xC9F5 }, +{ 0xC9F6, 0xC9F6, 0xC9F6 }, +{ 0xC9F7, 0xC9F7, 0xC9F7 }, +{ 0xC9F8, 0xC9F8, 0xC9F8 }, +{ 0xC9F9, 0xC9F9, 0xC9F9 }, +{ 0xC9FA, 0xC9FA, 0xC9FA }, +{ 0xC9FB, 0xC9FB, 0xC9FB }, +{ 0xC9FC, 0xC9FC, 0xC9FC }, +{ 0xC9FD, 0xC9FD, 0xC9FD }, +{ 0xC9FE, 0xC9FE, 0xC9FE }, +{ 0xC9FF, 0xC9FF, 0xC9FF }, +{ 0xCA00, 0xCA00, 0xCA00 }, +{ 0xCA01, 0xCA01, 0xCA01 }, +{ 0xCA02, 0xCA02, 0xCA02 }, +{ 0xCA03, 0xCA03, 0xCA03 }, +{ 0xCA04, 0xCA04, 0xCA04 }, +{ 0xCA05, 0xCA05, 0xCA05 }, +{ 0xCA06, 0xCA06, 0xCA06 }, +{ 0xCA07, 0xCA07, 0xCA07 }, +{ 0xCA08, 0xCA08, 0xCA08 }, +{ 0xCA09, 0xCA09, 0xCA09 }, +{ 0xCA0A, 0xCA0A, 0xCA0A }, +{ 0xCA0B, 0xCA0B, 0xCA0B }, +{ 0xCA0C, 0xCA0C, 0xCA0C }, +{ 0xCA0D, 0xCA0D, 0xCA0D }, +{ 0xCA0E, 0xCA0E, 0xCA0E }, +{ 0xCA0F, 0xCA0F, 0xCA0F }, +{ 0xCA10, 0xCA10, 0xCA10 }, +{ 0xCA11, 0xCA11, 0xCA11 }, +{ 0xCA12, 0xCA12, 0xCA12 }, +{ 0xCA13, 0xCA13, 0xCA13 }, +{ 0xCA14, 0xCA14, 0xCA14 }, +{ 0xCA15, 0xCA15, 0xCA15 }, +{ 0xCA16, 0xCA16, 0xCA16 }, +{ 0xCA17, 0xCA17, 0xCA17 }, +{ 0xCA18, 0xCA18, 0xCA18 }, +{ 0xCA19, 0xCA19, 0xCA19 }, +{ 0xCA1A, 0xCA1A, 0xCA1A }, +{ 0xCA1B, 0xCA1B, 0xCA1B }, +{ 0xCA1C, 0xCA1C, 0xCA1C }, +{ 0xCA1D, 0xCA1D, 0xCA1D }, +{ 0xCA1E, 0xCA1E, 0xCA1E }, +{ 0xCA1F, 0xCA1F, 0xCA1F }, +{ 0xCA20, 0xCA20, 0xCA20 }, +{ 0xCA21, 0xCA21, 0xCA21 }, +{ 0xCA22, 0xCA22, 0xCA22 }, +{ 0xCA23, 0xCA23, 0xCA23 }, +{ 0xCA24, 0xCA24, 0xCA24 }, +{ 0xCA25, 0xCA25, 0xCA25 }, +{ 0xCA26, 0xCA26, 0xCA26 }, +{ 0xCA27, 0xCA27, 0xCA27 }, +{ 0xCA28, 0xCA28, 0xCA28 }, +{ 0xCA29, 0xCA29, 0xCA29 }, +{ 0xCA2A, 0xCA2A, 0xCA2A }, +{ 0xCA2B, 0xCA2B, 0xCA2B }, +{ 0xCA2C, 0xCA2C, 0xCA2C }, +{ 0xCA2D, 0xCA2D, 0xCA2D }, +{ 0xCA2E, 0xCA2E, 0xCA2E }, +{ 0xCA2F, 0xCA2F, 0xCA2F }, +{ 0xCA30, 0xCA30, 0xCA30 }, +{ 0xCA31, 0xCA31, 0xCA31 }, +{ 0xCA32, 0xCA32, 0xCA32 }, +{ 0xCA33, 0xCA33, 0xCA33 }, +{ 0xCA34, 0xCA34, 0xCA34 }, +{ 0xCA35, 0xCA35, 0xCA35 }, +{ 0xCA36, 0xCA36, 0xCA36 }, +{ 0xCA37, 0xCA37, 0xCA37 }, +{ 0xCA38, 0xCA38, 0xCA38 }, +{ 0xCA39, 0xCA39, 0xCA39 }, +{ 0xCA3A, 0xCA3A, 0xCA3A }, +{ 0xCA3B, 0xCA3B, 0xCA3B }, +{ 0xCA3C, 0xCA3C, 0xCA3C }, +{ 0xCA3D, 0xCA3D, 0xCA3D }, +{ 0xCA3E, 0xCA3E, 0xCA3E }, +{ 0xCA3F, 0xCA3F, 0xCA3F }, +{ 0xCA40, 0xCA40, 0xCA40 }, +{ 0xCA41, 0xCA41, 0xCA41 }, +{ 0xCA42, 0xCA42, 0xCA42 }, +{ 0xCA43, 0xCA43, 0xCA43 }, +{ 0xCA44, 0xCA44, 0xCA44 }, +{ 0xCA45, 0xCA45, 0xCA45 }, +{ 0xCA46, 0xCA46, 0xCA46 }, +{ 0xCA47, 0xCA47, 0xCA47 }, +{ 0xCA48, 0xCA48, 0xCA48 }, +{ 0xCA49, 0xCA49, 0xCA49 }, +{ 0xCA4A, 0xCA4A, 0xCA4A }, +{ 0xCA4B, 0xCA4B, 0xCA4B }, +{ 0xCA4C, 0xCA4C, 0xCA4C }, +{ 0xCA4D, 0xCA4D, 0xCA4D }, +{ 0xCA4E, 0xCA4E, 0xCA4E }, +{ 0xCA4F, 0xCA4F, 0xCA4F }, +{ 0xCA50, 0xCA50, 0xCA50 }, +{ 0xCA51, 0xCA51, 0xCA51 }, +{ 0xCA52, 0xCA52, 0xCA52 }, +{ 0xCA53, 0xCA53, 0xCA53 }, +{ 0xCA54, 0xCA54, 0xCA54 }, +{ 0xCA55, 0xCA55, 0xCA55 }, +{ 0xCA56, 0xCA56, 0xCA56 }, +{ 0xCA57, 0xCA57, 0xCA57 }, +{ 0xCA58, 0xCA58, 0xCA58 }, +{ 0xCA59, 0xCA59, 0xCA59 }, +{ 0xCA5A, 0xCA5A, 0xCA5A }, +{ 0xCA5B, 0xCA5B, 0xCA5B }, +{ 0xCA5C, 0xCA5C, 0xCA5C }, +{ 0xCA5D, 0xCA5D, 0xCA5D }, +{ 0xCA5E, 0xCA5E, 0xCA5E }, +{ 0xCA5F, 0xCA5F, 0xCA5F }, +{ 0xCA60, 0xCA60, 0xCA60 }, +{ 0xCA61, 0xCA61, 0xCA61 }, +{ 0xCA62, 0xCA62, 0xCA62 }, +{ 0xCA63, 0xCA63, 0xCA63 }, +{ 0xCA64, 0xCA64, 0xCA64 }, +{ 0xCA65, 0xCA65, 0xCA65 }, +{ 0xCA66, 0xCA66, 0xCA66 }, +{ 0xCA67, 0xCA67, 0xCA67 }, +{ 0xCA68, 0xCA68, 0xCA68 }, +{ 0xCA69, 0xCA69, 0xCA69 }, +{ 0xCA6A, 0xCA6A, 0xCA6A }, +{ 0xCA6B, 0xCA6B, 0xCA6B }, +{ 0xCA6C, 0xCA6C, 0xCA6C }, +{ 0xCA6D, 0xCA6D, 0xCA6D }, +{ 0xCA6E, 0xCA6E, 0xCA6E }, +{ 0xCA6F, 0xCA6F, 0xCA6F }, +{ 0xCA70, 0xCA70, 0xCA70 }, +{ 0xCA71, 0xCA71, 0xCA71 }, +{ 0xCA72, 0xCA72, 0xCA72 }, +{ 0xCA73, 0xCA73, 0xCA73 }, +{ 0xCA74, 0xCA74, 0xCA74 }, +{ 0xCA75, 0xCA75, 0xCA75 }, +{ 0xCA76, 0xCA76, 0xCA76 }, +{ 0xCA77, 0xCA77, 0xCA77 }, +{ 0xCA78, 0xCA78, 0xCA78 }, +{ 0xCA79, 0xCA79, 0xCA79 }, +{ 0xCA7A, 0xCA7A, 0xCA7A }, +{ 0xCA7B, 0xCA7B, 0xCA7B }, +{ 0xCA7C, 0xCA7C, 0xCA7C }, +{ 0xCA7D, 0xCA7D, 0xCA7D }, +{ 0xCA7E, 0xCA7E, 0xCA7E }, +{ 0xCA7F, 0xCA7F, 0xCA7F }, +{ 0xCA80, 0xCA80, 0xCA80 }, +{ 0xCA81, 0xCA81, 0xCA81 }, +{ 0xCA82, 0xCA82, 0xCA82 }, +{ 0xCA83, 0xCA83, 0xCA83 }, +{ 0xCA84, 0xCA84, 0xCA84 }, +{ 0xCA85, 0xCA85, 0xCA85 }, +{ 0xCA86, 0xCA86, 0xCA86 }, +{ 0xCA87, 0xCA87, 0xCA87 }, +{ 0xCA88, 0xCA88, 0xCA88 }, +{ 0xCA89, 0xCA89, 0xCA89 }, +{ 0xCA8A, 0xCA8A, 0xCA8A }, +{ 0xCA8B, 0xCA8B, 0xCA8B }, +{ 0xCA8C, 0xCA8C, 0xCA8C }, +{ 0xCA8D, 0xCA8D, 0xCA8D }, +{ 0xCA8E, 0xCA8E, 0xCA8E }, +{ 0xCA8F, 0xCA8F, 0xCA8F }, +{ 0xCA90, 0xCA90, 0xCA90 }, +{ 0xCA91, 0xCA91, 0xCA91 }, +{ 0xCA92, 0xCA92, 0xCA92 }, +{ 0xCA93, 0xCA93, 0xCA93 }, +{ 0xCA94, 0xCA94, 0xCA94 }, +{ 0xCA95, 0xCA95, 0xCA95 }, +{ 0xCA96, 0xCA96, 0xCA96 }, +{ 0xCA97, 0xCA97, 0xCA97 }, +{ 0xCA98, 0xCA98, 0xCA98 }, +{ 0xCA99, 0xCA99, 0xCA99 }, +{ 0xCA9A, 0xCA9A, 0xCA9A }, +{ 0xCA9B, 0xCA9B, 0xCA9B }, +{ 0xCA9C, 0xCA9C, 0xCA9C }, +{ 0xCA9D, 0xCA9D, 0xCA9D }, +{ 0xCA9E, 0xCA9E, 0xCA9E }, +{ 0xCA9F, 0xCA9F, 0xCA9F }, +{ 0xCAA0, 0xCAA0, 0xCAA0 }, +{ 0xCAA1, 0xCAA1, 0xCAA1 }, +{ 0xCAA2, 0xCAA2, 0xCAA2 }, +{ 0xCAA3, 0xCAA3, 0xCAA3 }, +{ 0xCAA4, 0xCAA4, 0xCAA4 }, +{ 0xCAA5, 0xCAA5, 0xCAA5 }, +{ 0xCAA6, 0xCAA6, 0xCAA6 }, +{ 0xCAA7, 0xCAA7, 0xCAA7 }, +{ 0xCAA8, 0xCAA8, 0xCAA8 }, +{ 0xCAA9, 0xCAA9, 0xCAA9 }, +{ 0xCAAA, 0xCAAA, 0xCAAA }, +{ 0xCAAB, 0xCAAB, 0xCAAB }, +{ 0xCAAC, 0xCAAC, 0xCAAC }, +{ 0xCAAD, 0xCAAD, 0xCAAD }, +{ 0xCAAE, 0xCAAE, 0xCAAE }, +{ 0xCAAF, 0xCAAF, 0xCAAF }, +{ 0xCAB0, 0xCAB0, 0xCAB0 }, +{ 0xCAB1, 0xCAB1, 0xCAB1 }, +{ 0xCAB2, 0xCAB2, 0xCAB2 }, +{ 0xCAB3, 0xCAB3, 0xCAB3 }, +{ 0xCAB4, 0xCAB4, 0xCAB4 }, +{ 0xCAB5, 0xCAB5, 0xCAB5 }, +{ 0xCAB6, 0xCAB6, 0xCAB6 }, +{ 0xCAB7, 0xCAB7, 0xCAB7 }, +{ 0xCAB8, 0xCAB8, 0xCAB8 }, +{ 0xCAB9, 0xCAB9, 0xCAB9 }, +{ 0xCABA, 0xCABA, 0xCABA }, +{ 0xCABB, 0xCABB, 0xCABB }, +{ 0xCABC, 0xCABC, 0xCABC }, +{ 0xCABD, 0xCABD, 0xCABD }, +{ 0xCABE, 0xCABE, 0xCABE }, +{ 0xCABF, 0xCABF, 0xCABF }, +{ 0xCAC0, 0xCAC0, 0xCAC0 }, +{ 0xCAC1, 0xCAC1, 0xCAC1 }, +{ 0xCAC2, 0xCAC2, 0xCAC2 }, +{ 0xCAC3, 0xCAC3, 0xCAC3 }, +{ 0xCAC4, 0xCAC4, 0xCAC4 }, +{ 0xCAC5, 0xCAC5, 0xCAC5 }, +{ 0xCAC6, 0xCAC6, 0xCAC6 }, +{ 0xCAC7, 0xCAC7, 0xCAC7 }, +{ 0xCAC8, 0xCAC8, 0xCAC8 }, +{ 0xCAC9, 0xCAC9, 0xCAC9 }, +{ 0xCACA, 0xCACA, 0xCACA }, +{ 0xCACB, 0xCACB, 0xCACB }, +{ 0xCACC, 0xCACC, 0xCACC }, +{ 0xCACD, 0xCACD, 0xCACD }, +{ 0xCACE, 0xCACE, 0xCACE }, +{ 0xCACF, 0xCACF, 0xCACF }, +{ 0xCAD0, 0xCAD0, 0xCAD0 }, +{ 0xCAD1, 0xCAD1, 0xCAD1 }, +{ 0xCAD2, 0xCAD2, 0xCAD2 }, +{ 0xCAD3, 0xCAD3, 0xCAD3 }, +{ 0xCAD4, 0xCAD4, 0xCAD4 }, +{ 0xCAD5, 0xCAD5, 0xCAD5 }, +{ 0xCAD6, 0xCAD6, 0xCAD6 }, +{ 0xCAD7, 0xCAD7, 0xCAD7 }, +{ 0xCAD8, 0xCAD8, 0xCAD8 }, +{ 0xCAD9, 0xCAD9, 0xCAD9 }, +{ 0xCADA, 0xCADA, 0xCADA }, +{ 0xCADB, 0xCADB, 0xCADB }, +{ 0xCADC, 0xCADC, 0xCADC }, +{ 0xCADD, 0xCADD, 0xCADD }, +{ 0xCADE, 0xCADE, 0xCADE }, +{ 0xCADF, 0xCADF, 0xCADF }, +{ 0xCAE0, 0xCAE0, 0xCAE0 }, +{ 0xCAE1, 0xCAE1, 0xCAE1 }, +{ 0xCAE2, 0xCAE2, 0xCAE2 }, +{ 0xCAE3, 0xCAE3, 0xCAE3 }, +{ 0xCAE4, 0xCAE4, 0xCAE4 }, +{ 0xCAE5, 0xCAE5, 0xCAE5 }, +{ 0xCAE6, 0xCAE6, 0xCAE6 }, +{ 0xCAE7, 0xCAE7, 0xCAE7 }, +{ 0xCAE8, 0xCAE8, 0xCAE8 }, +{ 0xCAE9, 0xCAE9, 0xCAE9 }, +{ 0xCAEA, 0xCAEA, 0xCAEA }, +{ 0xCAEB, 0xCAEB, 0xCAEB }, +{ 0xCAEC, 0xCAEC, 0xCAEC }, +{ 0xCAED, 0xCAED, 0xCAED }, +{ 0xCAEE, 0xCAEE, 0xCAEE }, +{ 0xCAEF, 0xCAEF, 0xCAEF }, +{ 0xCAF0, 0xCAF0, 0xCAF0 }, +{ 0xCAF1, 0xCAF1, 0xCAF1 }, +{ 0xCAF2, 0xCAF2, 0xCAF2 }, +{ 0xCAF3, 0xCAF3, 0xCAF3 }, +{ 0xCAF4, 0xCAF4, 0xCAF4 }, +{ 0xCAF5, 0xCAF5, 0xCAF5 }, +{ 0xCAF6, 0xCAF6, 0xCAF6 }, +{ 0xCAF7, 0xCAF7, 0xCAF7 }, +{ 0xCAF8, 0xCAF8, 0xCAF8 }, +{ 0xCAF9, 0xCAF9, 0xCAF9 }, +{ 0xCAFA, 0xCAFA, 0xCAFA }, +{ 0xCAFB, 0xCAFB, 0xCAFB }, +{ 0xCAFC, 0xCAFC, 0xCAFC }, +{ 0xCAFD, 0xCAFD, 0xCAFD }, +{ 0xCAFE, 0xCAFE, 0xCAFE }, +{ 0xCAFF, 0xCAFF, 0xCAFF }, +{ 0xCB00, 0xCB00, 0xCB00 }, +{ 0xCB01, 0xCB01, 0xCB01 }, +{ 0xCB02, 0xCB02, 0xCB02 }, +{ 0xCB03, 0xCB03, 0xCB03 }, +{ 0xCB04, 0xCB04, 0xCB04 }, +{ 0xCB05, 0xCB05, 0xCB05 }, +{ 0xCB06, 0xCB06, 0xCB06 }, +{ 0xCB07, 0xCB07, 0xCB07 }, +{ 0xCB08, 0xCB08, 0xCB08 }, +{ 0xCB09, 0xCB09, 0xCB09 }, +{ 0xCB0A, 0xCB0A, 0xCB0A }, +{ 0xCB0B, 0xCB0B, 0xCB0B }, +{ 0xCB0C, 0xCB0C, 0xCB0C }, +{ 0xCB0D, 0xCB0D, 0xCB0D }, +{ 0xCB0E, 0xCB0E, 0xCB0E }, +{ 0xCB0F, 0xCB0F, 0xCB0F }, +{ 0xCB10, 0xCB10, 0xCB10 }, +{ 0xCB11, 0xCB11, 0xCB11 }, +{ 0xCB12, 0xCB12, 0xCB12 }, +{ 0xCB13, 0xCB13, 0xCB13 }, +{ 0xCB14, 0xCB14, 0xCB14 }, +{ 0xCB15, 0xCB15, 0xCB15 }, +{ 0xCB16, 0xCB16, 0xCB16 }, +{ 0xCB17, 0xCB17, 0xCB17 }, +{ 0xCB18, 0xCB18, 0xCB18 }, +{ 0xCB19, 0xCB19, 0xCB19 }, +{ 0xCB1A, 0xCB1A, 0xCB1A }, +{ 0xCB1B, 0xCB1B, 0xCB1B }, +{ 0xCB1C, 0xCB1C, 0xCB1C }, +{ 0xCB1D, 0xCB1D, 0xCB1D }, +{ 0xCB1E, 0xCB1E, 0xCB1E }, +{ 0xCB1F, 0xCB1F, 0xCB1F }, +{ 0xCB20, 0xCB20, 0xCB20 }, +{ 0xCB21, 0xCB21, 0xCB21 }, +{ 0xCB22, 0xCB22, 0xCB22 }, +{ 0xCB23, 0xCB23, 0xCB23 }, +{ 0xCB24, 0xCB24, 0xCB24 }, +{ 0xCB25, 0xCB25, 0xCB25 }, +{ 0xCB26, 0xCB26, 0xCB26 }, +{ 0xCB27, 0xCB27, 0xCB27 }, +{ 0xCB28, 0xCB28, 0xCB28 }, +{ 0xCB29, 0xCB29, 0xCB29 }, +{ 0xCB2A, 0xCB2A, 0xCB2A }, +{ 0xCB2B, 0xCB2B, 0xCB2B }, +{ 0xCB2C, 0xCB2C, 0xCB2C }, +{ 0xCB2D, 0xCB2D, 0xCB2D }, +{ 0xCB2E, 0xCB2E, 0xCB2E }, +{ 0xCB2F, 0xCB2F, 0xCB2F }, +{ 0xCB30, 0xCB30, 0xCB30 }, +{ 0xCB31, 0xCB31, 0xCB31 }, +{ 0xCB32, 0xCB32, 0xCB32 }, +{ 0xCB33, 0xCB33, 0xCB33 }, +{ 0xCB34, 0xCB34, 0xCB34 }, +{ 0xCB35, 0xCB35, 0xCB35 }, +{ 0xCB36, 0xCB36, 0xCB36 }, +{ 0xCB37, 0xCB37, 0xCB37 }, +{ 0xCB38, 0xCB38, 0xCB38 }, +{ 0xCB39, 0xCB39, 0xCB39 }, +{ 0xCB3A, 0xCB3A, 0xCB3A }, +{ 0xCB3B, 0xCB3B, 0xCB3B }, +{ 0xCB3C, 0xCB3C, 0xCB3C }, +{ 0xCB3D, 0xCB3D, 0xCB3D }, +{ 0xCB3E, 0xCB3E, 0xCB3E }, +{ 0xCB3F, 0xCB3F, 0xCB3F }, +{ 0xCB40, 0xCB40, 0xCB40 }, +{ 0xCB41, 0xCB41, 0xCB41 }, +{ 0xCB42, 0xCB42, 0xCB42 }, +{ 0xCB43, 0xCB43, 0xCB43 }, +{ 0xCB44, 0xCB44, 0xCB44 }, +{ 0xCB45, 0xCB45, 0xCB45 }, +{ 0xCB46, 0xCB46, 0xCB46 }, +{ 0xCB47, 0xCB47, 0xCB47 }, +{ 0xCB48, 0xCB48, 0xCB48 }, +{ 0xCB49, 0xCB49, 0xCB49 }, +{ 0xCB4A, 0xCB4A, 0xCB4A }, +{ 0xCB4B, 0xCB4B, 0xCB4B }, +{ 0xCB4C, 0xCB4C, 0xCB4C }, +{ 0xCB4D, 0xCB4D, 0xCB4D }, +{ 0xCB4E, 0xCB4E, 0xCB4E }, +{ 0xCB4F, 0xCB4F, 0xCB4F }, +{ 0xCB50, 0xCB50, 0xCB50 }, +{ 0xCB51, 0xCB51, 0xCB51 }, +{ 0xCB52, 0xCB52, 0xCB52 }, +{ 0xCB53, 0xCB53, 0xCB53 }, +{ 0xCB54, 0xCB54, 0xCB54 }, +{ 0xCB55, 0xCB55, 0xCB55 }, +{ 0xCB56, 0xCB56, 0xCB56 }, +{ 0xCB57, 0xCB57, 0xCB57 }, +{ 0xCB58, 0xCB58, 0xCB58 }, +{ 0xCB59, 0xCB59, 0xCB59 }, +{ 0xCB5A, 0xCB5A, 0xCB5A }, +{ 0xCB5B, 0xCB5B, 0xCB5B }, +{ 0xCB5C, 0xCB5C, 0xCB5C }, +{ 0xCB5D, 0xCB5D, 0xCB5D }, +{ 0xCB5E, 0xCB5E, 0xCB5E }, +{ 0xCB5F, 0xCB5F, 0xCB5F }, +{ 0xCB60, 0xCB60, 0xCB60 }, +{ 0xCB61, 0xCB61, 0xCB61 }, +{ 0xCB62, 0xCB62, 0xCB62 }, +{ 0xCB63, 0xCB63, 0xCB63 }, +{ 0xCB64, 0xCB64, 0xCB64 }, +{ 0xCB65, 0xCB65, 0xCB65 }, +{ 0xCB66, 0xCB66, 0xCB66 }, +{ 0xCB67, 0xCB67, 0xCB67 }, +{ 0xCB68, 0xCB68, 0xCB68 }, +{ 0xCB69, 0xCB69, 0xCB69 }, +{ 0xCB6A, 0xCB6A, 0xCB6A }, +{ 0xCB6B, 0xCB6B, 0xCB6B }, +{ 0xCB6C, 0xCB6C, 0xCB6C }, +{ 0xCB6D, 0xCB6D, 0xCB6D }, +{ 0xCB6E, 0xCB6E, 0xCB6E }, +{ 0xCB6F, 0xCB6F, 0xCB6F }, +{ 0xCB70, 0xCB70, 0xCB70 }, +{ 0xCB71, 0xCB71, 0xCB71 }, +{ 0xCB72, 0xCB72, 0xCB72 }, +{ 0xCB73, 0xCB73, 0xCB73 }, +{ 0xCB74, 0xCB74, 0xCB74 }, +{ 0xCB75, 0xCB75, 0xCB75 }, +{ 0xCB76, 0xCB76, 0xCB76 }, +{ 0xCB77, 0xCB77, 0xCB77 }, +{ 0xCB78, 0xCB78, 0xCB78 }, +{ 0xCB79, 0xCB79, 0xCB79 }, +{ 0xCB7A, 0xCB7A, 0xCB7A }, +{ 0xCB7B, 0xCB7B, 0xCB7B }, +{ 0xCB7C, 0xCB7C, 0xCB7C }, +{ 0xCB7D, 0xCB7D, 0xCB7D }, +{ 0xCB7E, 0xCB7E, 0xCB7E }, +{ 0xCB7F, 0xCB7F, 0xCB7F }, +{ 0xCB80, 0xCB80, 0xCB80 }, +{ 0xCB81, 0xCB81, 0xCB81 }, +{ 0xCB82, 0xCB82, 0xCB82 }, +{ 0xCB83, 0xCB83, 0xCB83 }, +{ 0xCB84, 0xCB84, 0xCB84 }, +{ 0xCB85, 0xCB85, 0xCB85 }, +{ 0xCB86, 0xCB86, 0xCB86 }, +{ 0xCB87, 0xCB87, 0xCB87 }, +{ 0xCB88, 0xCB88, 0xCB88 }, +{ 0xCB89, 0xCB89, 0xCB89 }, +{ 0xCB8A, 0xCB8A, 0xCB8A }, +{ 0xCB8B, 0xCB8B, 0xCB8B }, +{ 0xCB8C, 0xCB8C, 0xCB8C }, +{ 0xCB8D, 0xCB8D, 0xCB8D }, +{ 0xCB8E, 0xCB8E, 0xCB8E }, +{ 0xCB8F, 0xCB8F, 0xCB8F }, +{ 0xCB90, 0xCB90, 0xCB90 }, +{ 0xCB91, 0xCB91, 0xCB91 }, +{ 0xCB92, 0xCB92, 0xCB92 }, +{ 0xCB93, 0xCB93, 0xCB93 }, +{ 0xCB94, 0xCB94, 0xCB94 }, +{ 0xCB95, 0xCB95, 0xCB95 }, +{ 0xCB96, 0xCB96, 0xCB96 }, +{ 0xCB97, 0xCB97, 0xCB97 }, +{ 0xCB98, 0xCB98, 0xCB98 }, +{ 0xCB99, 0xCB99, 0xCB99 }, +{ 0xCB9A, 0xCB9A, 0xCB9A }, +{ 0xCB9B, 0xCB9B, 0xCB9B }, +{ 0xCB9C, 0xCB9C, 0xCB9C }, +{ 0xCB9D, 0xCB9D, 0xCB9D }, +{ 0xCB9E, 0xCB9E, 0xCB9E }, +{ 0xCB9F, 0xCB9F, 0xCB9F }, +{ 0xCBA0, 0xCBA0, 0xCBA0 }, +{ 0xCBA1, 0xCBA1, 0xCBA1 }, +{ 0xCBA2, 0xCBA2, 0xCBA2 }, +{ 0xCBA3, 0xCBA3, 0xCBA3 }, +{ 0xCBA4, 0xCBA4, 0xCBA4 }, +{ 0xCBA5, 0xCBA5, 0xCBA5 }, +{ 0xCBA6, 0xCBA6, 0xCBA6 }, +{ 0xCBA7, 0xCBA7, 0xCBA7 }, +{ 0xCBA8, 0xCBA8, 0xCBA8 }, +{ 0xCBA9, 0xCBA9, 0xCBA9 }, +{ 0xCBAA, 0xCBAA, 0xCBAA }, +{ 0xCBAB, 0xCBAB, 0xCBAB }, +{ 0xCBAC, 0xCBAC, 0xCBAC }, +{ 0xCBAD, 0xCBAD, 0xCBAD }, +{ 0xCBAE, 0xCBAE, 0xCBAE }, +{ 0xCBAF, 0xCBAF, 0xCBAF }, +{ 0xCBB0, 0xCBB0, 0xCBB0 }, +{ 0xCBB1, 0xCBB1, 0xCBB1 }, +{ 0xCBB2, 0xCBB2, 0xCBB2 }, +{ 0xCBB3, 0xCBB3, 0xCBB3 }, +{ 0xCBB4, 0xCBB4, 0xCBB4 }, +{ 0xCBB5, 0xCBB5, 0xCBB5 }, +{ 0xCBB6, 0xCBB6, 0xCBB6 }, +{ 0xCBB7, 0xCBB7, 0xCBB7 }, +{ 0xCBB8, 0xCBB8, 0xCBB8 }, +{ 0xCBB9, 0xCBB9, 0xCBB9 }, +{ 0xCBBA, 0xCBBA, 0xCBBA }, +{ 0xCBBB, 0xCBBB, 0xCBBB }, +{ 0xCBBC, 0xCBBC, 0xCBBC }, +{ 0xCBBD, 0xCBBD, 0xCBBD }, +{ 0xCBBE, 0xCBBE, 0xCBBE }, +{ 0xCBBF, 0xCBBF, 0xCBBF }, +{ 0xCBC0, 0xCBC0, 0xCBC0 }, +{ 0xCBC1, 0xCBC1, 0xCBC1 }, +{ 0xCBC2, 0xCBC2, 0xCBC2 }, +{ 0xCBC3, 0xCBC3, 0xCBC3 }, +{ 0xCBC4, 0xCBC4, 0xCBC4 }, +{ 0xCBC5, 0xCBC5, 0xCBC5 }, +{ 0xCBC6, 0xCBC6, 0xCBC6 }, +{ 0xCBC7, 0xCBC7, 0xCBC7 }, +{ 0xCBC8, 0xCBC8, 0xCBC8 }, +{ 0xCBC9, 0xCBC9, 0xCBC9 }, +{ 0xCBCA, 0xCBCA, 0xCBCA }, +{ 0xCBCB, 0xCBCB, 0xCBCB }, +{ 0xCBCC, 0xCBCC, 0xCBCC }, +{ 0xCBCD, 0xCBCD, 0xCBCD }, +{ 0xCBCE, 0xCBCE, 0xCBCE }, +{ 0xCBCF, 0xCBCF, 0xCBCF }, +{ 0xCBD0, 0xCBD0, 0xCBD0 }, +{ 0xCBD1, 0xCBD1, 0xCBD1 }, +{ 0xCBD2, 0xCBD2, 0xCBD2 }, +{ 0xCBD3, 0xCBD3, 0xCBD3 }, +{ 0xCBD4, 0xCBD4, 0xCBD4 }, +{ 0xCBD5, 0xCBD5, 0xCBD5 }, +{ 0xCBD6, 0xCBD6, 0xCBD6 }, +{ 0xCBD7, 0xCBD7, 0xCBD7 }, +{ 0xCBD8, 0xCBD8, 0xCBD8 }, +{ 0xCBD9, 0xCBD9, 0xCBD9 }, +{ 0xCBDA, 0xCBDA, 0xCBDA }, +{ 0xCBDB, 0xCBDB, 0xCBDB }, +{ 0xCBDC, 0xCBDC, 0xCBDC }, +{ 0xCBDD, 0xCBDD, 0xCBDD }, +{ 0xCBDE, 0xCBDE, 0xCBDE }, +{ 0xCBDF, 0xCBDF, 0xCBDF }, +{ 0xCBE0, 0xCBE0, 0xCBE0 }, +{ 0xCBE1, 0xCBE1, 0xCBE1 }, +{ 0xCBE2, 0xCBE2, 0xCBE2 }, +{ 0xCBE3, 0xCBE3, 0xCBE3 }, +{ 0xCBE4, 0xCBE4, 0xCBE4 }, +{ 0xCBE5, 0xCBE5, 0xCBE5 }, +{ 0xCBE6, 0xCBE6, 0xCBE6 }, +{ 0xCBE7, 0xCBE7, 0xCBE7 }, +{ 0xCBE8, 0xCBE8, 0xCBE8 }, +{ 0xCBE9, 0xCBE9, 0xCBE9 }, +{ 0xCBEA, 0xCBEA, 0xCBEA }, +{ 0xCBEB, 0xCBEB, 0xCBEB }, +{ 0xCBEC, 0xCBEC, 0xCBEC }, +{ 0xCBED, 0xCBED, 0xCBED }, +{ 0xCBEE, 0xCBEE, 0xCBEE }, +{ 0xCBEF, 0xCBEF, 0xCBEF }, +{ 0xCBF0, 0xCBF0, 0xCBF0 }, +{ 0xCBF1, 0xCBF1, 0xCBF1 }, +{ 0xCBF2, 0xCBF2, 0xCBF2 }, +{ 0xCBF3, 0xCBF3, 0xCBF3 }, +{ 0xCBF4, 0xCBF4, 0xCBF4 }, +{ 0xCBF5, 0xCBF5, 0xCBF5 }, +{ 0xCBF6, 0xCBF6, 0xCBF6 }, +{ 0xCBF7, 0xCBF7, 0xCBF7 }, +{ 0xCBF8, 0xCBF8, 0xCBF8 }, +{ 0xCBF9, 0xCBF9, 0xCBF9 }, +{ 0xCBFA, 0xCBFA, 0xCBFA }, +{ 0xCBFB, 0xCBFB, 0xCBFB }, +{ 0xCBFC, 0xCBFC, 0xCBFC }, +{ 0xCBFD, 0xCBFD, 0xCBFD }, +{ 0xCBFE, 0xCBFE, 0xCBFE }, +{ 0xCBFF, 0xCBFF, 0xCBFF }, +{ 0xCC00, 0xCC00, 0xCC00 }, +{ 0xCC01, 0xCC01, 0xCC01 }, +{ 0xCC02, 0xCC02, 0xCC02 }, +{ 0xCC03, 0xCC03, 0xCC03 }, +{ 0xCC04, 0xCC04, 0xCC04 }, +{ 0xCC05, 0xCC05, 0xCC05 }, +{ 0xCC06, 0xCC06, 0xCC06 }, +{ 0xCC07, 0xCC07, 0xCC07 }, +{ 0xCC08, 0xCC08, 0xCC08 }, +{ 0xCC09, 0xCC09, 0xCC09 }, +{ 0xCC0A, 0xCC0A, 0xCC0A }, +{ 0xCC0B, 0xCC0B, 0xCC0B }, +{ 0xCC0C, 0xCC0C, 0xCC0C }, +{ 0xCC0D, 0xCC0D, 0xCC0D }, +{ 0xCC0E, 0xCC0E, 0xCC0E }, +{ 0xCC0F, 0xCC0F, 0xCC0F }, +{ 0xCC10, 0xCC10, 0xCC10 }, +{ 0xCC11, 0xCC11, 0xCC11 }, +{ 0xCC12, 0xCC12, 0xCC12 }, +{ 0xCC13, 0xCC13, 0xCC13 }, +{ 0xCC14, 0xCC14, 0xCC14 }, +{ 0xCC15, 0xCC15, 0xCC15 }, +{ 0xCC16, 0xCC16, 0xCC16 }, +{ 0xCC17, 0xCC17, 0xCC17 }, +{ 0xCC18, 0xCC18, 0xCC18 }, +{ 0xCC19, 0xCC19, 0xCC19 }, +{ 0xCC1A, 0xCC1A, 0xCC1A }, +{ 0xCC1B, 0xCC1B, 0xCC1B }, +{ 0xCC1C, 0xCC1C, 0xCC1C }, +{ 0xCC1D, 0xCC1D, 0xCC1D }, +{ 0xCC1E, 0xCC1E, 0xCC1E }, +{ 0xCC1F, 0xCC1F, 0xCC1F }, +{ 0xCC20, 0xCC20, 0xCC20 }, +{ 0xCC21, 0xCC21, 0xCC21 }, +{ 0xCC22, 0xCC22, 0xCC22 }, +{ 0xCC23, 0xCC23, 0xCC23 }, +{ 0xCC24, 0xCC24, 0xCC24 }, +{ 0xCC25, 0xCC25, 0xCC25 }, +{ 0xCC26, 0xCC26, 0xCC26 }, +{ 0xCC27, 0xCC27, 0xCC27 }, +{ 0xCC28, 0xCC28, 0xCC28 }, +{ 0xCC29, 0xCC29, 0xCC29 }, +{ 0xCC2A, 0xCC2A, 0xCC2A }, +{ 0xCC2B, 0xCC2B, 0xCC2B }, +{ 0xCC2C, 0xCC2C, 0xCC2C }, +{ 0xCC2D, 0xCC2D, 0xCC2D }, +{ 0xCC2E, 0xCC2E, 0xCC2E }, +{ 0xCC2F, 0xCC2F, 0xCC2F }, +{ 0xCC30, 0xCC30, 0xCC30 }, +{ 0xCC31, 0xCC31, 0xCC31 }, +{ 0xCC32, 0xCC32, 0xCC32 }, +{ 0xCC33, 0xCC33, 0xCC33 }, +{ 0xCC34, 0xCC34, 0xCC34 }, +{ 0xCC35, 0xCC35, 0xCC35 }, +{ 0xCC36, 0xCC36, 0xCC36 }, +{ 0xCC37, 0xCC37, 0xCC37 }, +{ 0xCC38, 0xCC38, 0xCC38 }, +{ 0xCC39, 0xCC39, 0xCC39 }, +{ 0xCC3A, 0xCC3A, 0xCC3A }, +{ 0xCC3B, 0xCC3B, 0xCC3B }, +{ 0xCC3C, 0xCC3C, 0xCC3C }, +{ 0xCC3D, 0xCC3D, 0xCC3D }, +{ 0xCC3E, 0xCC3E, 0xCC3E }, +{ 0xCC3F, 0xCC3F, 0xCC3F }, +{ 0xCC40, 0xCC40, 0xCC40 }, +{ 0xCC41, 0xCC41, 0xCC41 }, +{ 0xCC42, 0xCC42, 0xCC42 }, +{ 0xCC43, 0xCC43, 0xCC43 }, +{ 0xCC44, 0xCC44, 0xCC44 }, +{ 0xCC45, 0xCC45, 0xCC45 }, +{ 0xCC46, 0xCC46, 0xCC46 }, +{ 0xCC47, 0xCC47, 0xCC47 }, +{ 0xCC48, 0xCC48, 0xCC48 }, +{ 0xCC49, 0xCC49, 0xCC49 }, +{ 0xCC4A, 0xCC4A, 0xCC4A }, +{ 0xCC4B, 0xCC4B, 0xCC4B }, +{ 0xCC4C, 0xCC4C, 0xCC4C }, +{ 0xCC4D, 0xCC4D, 0xCC4D }, +{ 0xCC4E, 0xCC4E, 0xCC4E }, +{ 0xCC4F, 0xCC4F, 0xCC4F }, +{ 0xCC50, 0xCC50, 0xCC50 }, +{ 0xCC51, 0xCC51, 0xCC51 }, +{ 0xCC52, 0xCC52, 0xCC52 }, +{ 0xCC53, 0xCC53, 0xCC53 }, +{ 0xCC54, 0xCC54, 0xCC54 }, +{ 0xCC55, 0xCC55, 0xCC55 }, +{ 0xCC56, 0xCC56, 0xCC56 }, +{ 0xCC57, 0xCC57, 0xCC57 }, +{ 0xCC58, 0xCC58, 0xCC58 }, +{ 0xCC59, 0xCC59, 0xCC59 }, +{ 0xCC5A, 0xCC5A, 0xCC5A }, +{ 0xCC5B, 0xCC5B, 0xCC5B }, +{ 0xCC5C, 0xCC5C, 0xCC5C }, +{ 0xCC5D, 0xCC5D, 0xCC5D }, +{ 0xCC5E, 0xCC5E, 0xCC5E }, +{ 0xCC5F, 0xCC5F, 0xCC5F }, +{ 0xCC60, 0xCC60, 0xCC60 }, +{ 0xCC61, 0xCC61, 0xCC61 }, +{ 0xCC62, 0xCC62, 0xCC62 }, +{ 0xCC63, 0xCC63, 0xCC63 }, +{ 0xCC64, 0xCC64, 0xCC64 }, +{ 0xCC65, 0xCC65, 0xCC65 }, +{ 0xCC66, 0xCC66, 0xCC66 }, +{ 0xCC67, 0xCC67, 0xCC67 }, +{ 0xCC68, 0xCC68, 0xCC68 }, +{ 0xCC69, 0xCC69, 0xCC69 }, +{ 0xCC6A, 0xCC6A, 0xCC6A }, +{ 0xCC6B, 0xCC6B, 0xCC6B }, +{ 0xCC6C, 0xCC6C, 0xCC6C }, +{ 0xCC6D, 0xCC6D, 0xCC6D }, +{ 0xCC6E, 0xCC6E, 0xCC6E }, +{ 0xCC6F, 0xCC6F, 0xCC6F }, +{ 0xCC70, 0xCC70, 0xCC70 }, +{ 0xCC71, 0xCC71, 0xCC71 }, +{ 0xCC72, 0xCC72, 0xCC72 }, +{ 0xCC73, 0xCC73, 0xCC73 }, +{ 0xCC74, 0xCC74, 0xCC74 }, +{ 0xCC75, 0xCC75, 0xCC75 }, +{ 0xCC76, 0xCC76, 0xCC76 }, +{ 0xCC77, 0xCC77, 0xCC77 }, +{ 0xCC78, 0xCC78, 0xCC78 }, +{ 0xCC79, 0xCC79, 0xCC79 }, +{ 0xCC7A, 0xCC7A, 0xCC7A }, +{ 0xCC7B, 0xCC7B, 0xCC7B }, +{ 0xCC7C, 0xCC7C, 0xCC7C }, +{ 0xCC7D, 0xCC7D, 0xCC7D }, +{ 0xCC7E, 0xCC7E, 0xCC7E }, +{ 0xCC7F, 0xCC7F, 0xCC7F }, +{ 0xCC80, 0xCC80, 0xCC80 }, +{ 0xCC81, 0xCC81, 0xCC81 }, +{ 0xCC82, 0xCC82, 0xCC82 }, +{ 0xCC83, 0xCC83, 0xCC83 }, +{ 0xCC84, 0xCC84, 0xCC84 }, +{ 0xCC85, 0xCC85, 0xCC85 }, +{ 0xCC86, 0xCC86, 0xCC86 }, +{ 0xCC87, 0xCC87, 0xCC87 }, +{ 0xCC88, 0xCC88, 0xCC88 }, +{ 0xCC89, 0xCC89, 0xCC89 }, +{ 0xCC8A, 0xCC8A, 0xCC8A }, +{ 0xCC8B, 0xCC8B, 0xCC8B }, +{ 0xCC8C, 0xCC8C, 0xCC8C }, +{ 0xCC8D, 0xCC8D, 0xCC8D }, +{ 0xCC8E, 0xCC8E, 0xCC8E }, +{ 0xCC8F, 0xCC8F, 0xCC8F }, +{ 0xCC90, 0xCC90, 0xCC90 }, +{ 0xCC91, 0xCC91, 0xCC91 }, +{ 0xCC92, 0xCC92, 0xCC92 }, +{ 0xCC93, 0xCC93, 0xCC93 }, +{ 0xCC94, 0xCC94, 0xCC94 }, +{ 0xCC95, 0xCC95, 0xCC95 }, +{ 0xCC96, 0xCC96, 0xCC96 }, +{ 0xCC97, 0xCC97, 0xCC97 }, +{ 0xCC98, 0xCC98, 0xCC98 }, +{ 0xCC99, 0xCC99, 0xCC99 }, +{ 0xCC9A, 0xCC9A, 0xCC9A }, +{ 0xCC9B, 0xCC9B, 0xCC9B }, +{ 0xCC9C, 0xCC9C, 0xCC9C }, +{ 0xCC9D, 0xCC9D, 0xCC9D }, +{ 0xCC9E, 0xCC9E, 0xCC9E }, +{ 0xCC9F, 0xCC9F, 0xCC9F }, +{ 0xCCA0, 0xCCA0, 0xCCA0 }, +{ 0xCCA1, 0xCCA1, 0xCCA1 }, +{ 0xCCA2, 0xCCA2, 0xCCA2 }, +{ 0xCCA3, 0xCCA3, 0xCCA3 }, +{ 0xCCA4, 0xCCA4, 0xCCA4 }, +{ 0xCCA5, 0xCCA5, 0xCCA5 }, +{ 0xCCA6, 0xCCA6, 0xCCA6 }, +{ 0xCCA7, 0xCCA7, 0xCCA7 }, +{ 0xCCA8, 0xCCA8, 0xCCA8 }, +{ 0xCCA9, 0xCCA9, 0xCCA9 }, +{ 0xCCAA, 0xCCAA, 0xCCAA }, +{ 0xCCAB, 0xCCAB, 0xCCAB }, +{ 0xCCAC, 0xCCAC, 0xCCAC }, +{ 0xCCAD, 0xCCAD, 0xCCAD }, +{ 0xCCAE, 0xCCAE, 0xCCAE }, +{ 0xCCAF, 0xCCAF, 0xCCAF }, +{ 0xCCB0, 0xCCB0, 0xCCB0 }, +{ 0xCCB1, 0xCCB1, 0xCCB1 }, +{ 0xCCB2, 0xCCB2, 0xCCB2 }, +{ 0xCCB3, 0xCCB3, 0xCCB3 }, +{ 0xCCB4, 0xCCB4, 0xCCB4 }, +{ 0xCCB5, 0xCCB5, 0xCCB5 }, +{ 0xCCB6, 0xCCB6, 0xCCB6 }, +{ 0xCCB7, 0xCCB7, 0xCCB7 }, +{ 0xCCB8, 0xCCB8, 0xCCB8 }, +{ 0xCCB9, 0xCCB9, 0xCCB9 }, +{ 0xCCBA, 0xCCBA, 0xCCBA }, +{ 0xCCBB, 0xCCBB, 0xCCBB }, +{ 0xCCBC, 0xCCBC, 0xCCBC }, +{ 0xCCBD, 0xCCBD, 0xCCBD }, +{ 0xCCBE, 0xCCBE, 0xCCBE }, +{ 0xCCBF, 0xCCBF, 0xCCBF }, +{ 0xCCC0, 0xCCC0, 0xCCC0 }, +{ 0xCCC1, 0xCCC1, 0xCCC1 }, +{ 0xCCC2, 0xCCC2, 0xCCC2 }, +{ 0xCCC3, 0xCCC3, 0xCCC3 }, +{ 0xCCC4, 0xCCC4, 0xCCC4 }, +{ 0xCCC5, 0xCCC5, 0xCCC5 }, +{ 0xCCC6, 0xCCC6, 0xCCC6 }, +{ 0xCCC7, 0xCCC7, 0xCCC7 }, +{ 0xCCC8, 0xCCC8, 0xCCC8 }, +{ 0xCCC9, 0xCCC9, 0xCCC9 }, +{ 0xCCCA, 0xCCCA, 0xCCCA }, +{ 0xCCCB, 0xCCCB, 0xCCCB }, +{ 0xCCCC, 0xCCCC, 0xCCCC }, +{ 0xCCCD, 0xCCCD, 0xCCCD }, +{ 0xCCCE, 0xCCCE, 0xCCCE }, +{ 0xCCCF, 0xCCCF, 0xCCCF }, +{ 0xCCD0, 0xCCD0, 0xCCD0 }, +{ 0xCCD1, 0xCCD1, 0xCCD1 }, +{ 0xCCD2, 0xCCD2, 0xCCD2 }, +{ 0xCCD3, 0xCCD3, 0xCCD3 }, +{ 0xCCD4, 0xCCD4, 0xCCD4 }, +{ 0xCCD5, 0xCCD5, 0xCCD5 }, +{ 0xCCD6, 0xCCD6, 0xCCD6 }, +{ 0xCCD7, 0xCCD7, 0xCCD7 }, +{ 0xCCD8, 0xCCD8, 0xCCD8 }, +{ 0xCCD9, 0xCCD9, 0xCCD9 }, +{ 0xCCDA, 0xCCDA, 0xCCDA }, +{ 0xCCDB, 0xCCDB, 0xCCDB }, +{ 0xCCDC, 0xCCDC, 0xCCDC }, +{ 0xCCDD, 0xCCDD, 0xCCDD }, +{ 0xCCDE, 0xCCDE, 0xCCDE }, +{ 0xCCDF, 0xCCDF, 0xCCDF }, +{ 0xCCE0, 0xCCE0, 0xCCE0 }, +{ 0xCCE1, 0xCCE1, 0xCCE1 }, +{ 0xCCE2, 0xCCE2, 0xCCE2 }, +{ 0xCCE3, 0xCCE3, 0xCCE3 }, +{ 0xCCE4, 0xCCE4, 0xCCE4 }, +{ 0xCCE5, 0xCCE5, 0xCCE5 }, +{ 0xCCE6, 0xCCE6, 0xCCE6 }, +{ 0xCCE7, 0xCCE7, 0xCCE7 }, +{ 0xCCE8, 0xCCE8, 0xCCE8 }, +{ 0xCCE9, 0xCCE9, 0xCCE9 }, +{ 0xCCEA, 0xCCEA, 0xCCEA }, +{ 0xCCEB, 0xCCEB, 0xCCEB }, +{ 0xCCEC, 0xCCEC, 0xCCEC }, +{ 0xCCED, 0xCCED, 0xCCED }, +{ 0xCCEE, 0xCCEE, 0xCCEE }, +{ 0xCCEF, 0xCCEF, 0xCCEF }, +{ 0xCCF0, 0xCCF0, 0xCCF0 }, +{ 0xCCF1, 0xCCF1, 0xCCF1 }, +{ 0xCCF2, 0xCCF2, 0xCCF2 }, +{ 0xCCF3, 0xCCF3, 0xCCF3 }, +{ 0xCCF4, 0xCCF4, 0xCCF4 }, +{ 0xCCF5, 0xCCF5, 0xCCF5 }, +{ 0xCCF6, 0xCCF6, 0xCCF6 }, +{ 0xCCF7, 0xCCF7, 0xCCF7 }, +{ 0xCCF8, 0xCCF8, 0xCCF8 }, +{ 0xCCF9, 0xCCF9, 0xCCF9 }, +{ 0xCCFA, 0xCCFA, 0xCCFA }, +{ 0xCCFB, 0xCCFB, 0xCCFB }, +{ 0xCCFC, 0xCCFC, 0xCCFC }, +{ 0xCCFD, 0xCCFD, 0xCCFD }, +{ 0xCCFE, 0xCCFE, 0xCCFE }, +{ 0xCCFF, 0xCCFF, 0xCCFF }, +{ 0xCD00, 0xCD00, 0xCD00 }, +{ 0xCD01, 0xCD01, 0xCD01 }, +{ 0xCD02, 0xCD02, 0xCD02 }, +{ 0xCD03, 0xCD03, 0xCD03 }, +{ 0xCD04, 0xCD04, 0xCD04 }, +{ 0xCD05, 0xCD05, 0xCD05 }, +{ 0xCD06, 0xCD06, 0xCD06 }, +{ 0xCD07, 0xCD07, 0xCD07 }, +{ 0xCD08, 0xCD08, 0xCD08 }, +{ 0xCD09, 0xCD09, 0xCD09 }, +{ 0xCD0A, 0xCD0A, 0xCD0A }, +{ 0xCD0B, 0xCD0B, 0xCD0B }, +{ 0xCD0C, 0xCD0C, 0xCD0C }, +{ 0xCD0D, 0xCD0D, 0xCD0D }, +{ 0xCD0E, 0xCD0E, 0xCD0E }, +{ 0xCD0F, 0xCD0F, 0xCD0F }, +{ 0xCD10, 0xCD10, 0xCD10 }, +{ 0xCD11, 0xCD11, 0xCD11 }, +{ 0xCD12, 0xCD12, 0xCD12 }, +{ 0xCD13, 0xCD13, 0xCD13 }, +{ 0xCD14, 0xCD14, 0xCD14 }, +{ 0xCD15, 0xCD15, 0xCD15 }, +{ 0xCD16, 0xCD16, 0xCD16 }, +{ 0xCD17, 0xCD17, 0xCD17 }, +{ 0xCD18, 0xCD18, 0xCD18 }, +{ 0xCD19, 0xCD19, 0xCD19 }, +{ 0xCD1A, 0xCD1A, 0xCD1A }, +{ 0xCD1B, 0xCD1B, 0xCD1B }, +{ 0xCD1C, 0xCD1C, 0xCD1C }, +{ 0xCD1D, 0xCD1D, 0xCD1D }, +{ 0xCD1E, 0xCD1E, 0xCD1E }, +{ 0xCD1F, 0xCD1F, 0xCD1F }, +{ 0xCD20, 0xCD20, 0xCD20 }, +{ 0xCD21, 0xCD21, 0xCD21 }, +{ 0xCD22, 0xCD22, 0xCD22 }, +{ 0xCD23, 0xCD23, 0xCD23 }, +{ 0xCD24, 0xCD24, 0xCD24 }, +{ 0xCD25, 0xCD25, 0xCD25 }, +{ 0xCD26, 0xCD26, 0xCD26 }, +{ 0xCD27, 0xCD27, 0xCD27 }, +{ 0xCD28, 0xCD28, 0xCD28 }, +{ 0xCD29, 0xCD29, 0xCD29 }, +{ 0xCD2A, 0xCD2A, 0xCD2A }, +{ 0xCD2B, 0xCD2B, 0xCD2B }, +{ 0xCD2C, 0xCD2C, 0xCD2C }, +{ 0xCD2D, 0xCD2D, 0xCD2D }, +{ 0xCD2E, 0xCD2E, 0xCD2E }, +{ 0xCD2F, 0xCD2F, 0xCD2F }, +{ 0xCD30, 0xCD30, 0xCD30 }, +{ 0xCD31, 0xCD31, 0xCD31 }, +{ 0xCD32, 0xCD32, 0xCD32 }, +{ 0xCD33, 0xCD33, 0xCD33 }, +{ 0xCD34, 0xCD34, 0xCD34 }, +{ 0xCD35, 0xCD35, 0xCD35 }, +{ 0xCD36, 0xCD36, 0xCD36 }, +{ 0xCD37, 0xCD37, 0xCD37 }, +{ 0xCD38, 0xCD38, 0xCD38 }, +{ 0xCD39, 0xCD39, 0xCD39 }, +{ 0xCD3A, 0xCD3A, 0xCD3A }, +{ 0xCD3B, 0xCD3B, 0xCD3B }, +{ 0xCD3C, 0xCD3C, 0xCD3C }, +{ 0xCD3D, 0xCD3D, 0xCD3D }, +{ 0xCD3E, 0xCD3E, 0xCD3E }, +{ 0xCD3F, 0xCD3F, 0xCD3F }, +{ 0xCD40, 0xCD40, 0xCD40 }, +{ 0xCD41, 0xCD41, 0xCD41 }, +{ 0xCD42, 0xCD42, 0xCD42 }, +{ 0xCD43, 0xCD43, 0xCD43 }, +{ 0xCD44, 0xCD44, 0xCD44 }, +{ 0xCD45, 0xCD45, 0xCD45 }, +{ 0xCD46, 0xCD46, 0xCD46 }, +{ 0xCD47, 0xCD47, 0xCD47 }, +{ 0xCD48, 0xCD48, 0xCD48 }, +{ 0xCD49, 0xCD49, 0xCD49 }, +{ 0xCD4A, 0xCD4A, 0xCD4A }, +{ 0xCD4B, 0xCD4B, 0xCD4B }, +{ 0xCD4C, 0xCD4C, 0xCD4C }, +{ 0xCD4D, 0xCD4D, 0xCD4D }, +{ 0xCD4E, 0xCD4E, 0xCD4E }, +{ 0xCD4F, 0xCD4F, 0xCD4F }, +{ 0xCD50, 0xCD50, 0xCD50 }, +{ 0xCD51, 0xCD51, 0xCD51 }, +{ 0xCD52, 0xCD52, 0xCD52 }, +{ 0xCD53, 0xCD53, 0xCD53 }, +{ 0xCD54, 0xCD54, 0xCD54 }, +{ 0xCD55, 0xCD55, 0xCD55 }, +{ 0xCD56, 0xCD56, 0xCD56 }, +{ 0xCD57, 0xCD57, 0xCD57 }, +{ 0xCD58, 0xCD58, 0xCD58 }, +{ 0xCD59, 0xCD59, 0xCD59 }, +{ 0xCD5A, 0xCD5A, 0xCD5A }, +{ 0xCD5B, 0xCD5B, 0xCD5B }, +{ 0xCD5C, 0xCD5C, 0xCD5C }, +{ 0xCD5D, 0xCD5D, 0xCD5D }, +{ 0xCD5E, 0xCD5E, 0xCD5E }, +{ 0xCD5F, 0xCD5F, 0xCD5F }, +{ 0xCD60, 0xCD60, 0xCD60 }, +{ 0xCD61, 0xCD61, 0xCD61 }, +{ 0xCD62, 0xCD62, 0xCD62 }, +{ 0xCD63, 0xCD63, 0xCD63 }, +{ 0xCD64, 0xCD64, 0xCD64 }, +{ 0xCD65, 0xCD65, 0xCD65 }, +{ 0xCD66, 0xCD66, 0xCD66 }, +{ 0xCD67, 0xCD67, 0xCD67 }, +{ 0xCD68, 0xCD68, 0xCD68 }, +{ 0xCD69, 0xCD69, 0xCD69 }, +{ 0xCD6A, 0xCD6A, 0xCD6A }, +{ 0xCD6B, 0xCD6B, 0xCD6B }, +{ 0xCD6C, 0xCD6C, 0xCD6C }, +{ 0xCD6D, 0xCD6D, 0xCD6D }, +{ 0xCD6E, 0xCD6E, 0xCD6E }, +{ 0xCD6F, 0xCD6F, 0xCD6F }, +{ 0xCD70, 0xCD70, 0xCD70 }, +{ 0xCD71, 0xCD71, 0xCD71 }, +{ 0xCD72, 0xCD72, 0xCD72 }, +{ 0xCD73, 0xCD73, 0xCD73 }, +{ 0xCD74, 0xCD74, 0xCD74 }, +{ 0xCD75, 0xCD75, 0xCD75 }, +{ 0xCD76, 0xCD76, 0xCD76 }, +{ 0xCD77, 0xCD77, 0xCD77 }, +{ 0xCD78, 0xCD78, 0xCD78 }, +{ 0xCD79, 0xCD79, 0xCD79 }, +{ 0xCD7A, 0xCD7A, 0xCD7A }, +{ 0xCD7B, 0xCD7B, 0xCD7B }, +{ 0xCD7C, 0xCD7C, 0xCD7C }, +{ 0xCD7D, 0xCD7D, 0xCD7D }, +{ 0xCD7E, 0xCD7E, 0xCD7E }, +{ 0xCD7F, 0xCD7F, 0xCD7F }, +{ 0xCD80, 0xCD80, 0xCD80 }, +{ 0xCD81, 0xCD81, 0xCD81 }, +{ 0xCD82, 0xCD82, 0xCD82 }, +{ 0xCD83, 0xCD83, 0xCD83 }, +{ 0xCD84, 0xCD84, 0xCD84 }, +{ 0xCD85, 0xCD85, 0xCD85 }, +{ 0xCD86, 0xCD86, 0xCD86 }, +{ 0xCD87, 0xCD87, 0xCD87 }, +{ 0xCD88, 0xCD88, 0xCD88 }, +{ 0xCD89, 0xCD89, 0xCD89 }, +{ 0xCD8A, 0xCD8A, 0xCD8A }, +{ 0xCD8B, 0xCD8B, 0xCD8B }, +{ 0xCD8C, 0xCD8C, 0xCD8C }, +{ 0xCD8D, 0xCD8D, 0xCD8D }, +{ 0xCD8E, 0xCD8E, 0xCD8E }, +{ 0xCD8F, 0xCD8F, 0xCD8F }, +{ 0xCD90, 0xCD90, 0xCD90 }, +{ 0xCD91, 0xCD91, 0xCD91 }, +{ 0xCD92, 0xCD92, 0xCD92 }, +{ 0xCD93, 0xCD93, 0xCD93 }, +{ 0xCD94, 0xCD94, 0xCD94 }, +{ 0xCD95, 0xCD95, 0xCD95 }, +{ 0xCD96, 0xCD96, 0xCD96 }, +{ 0xCD97, 0xCD97, 0xCD97 }, +{ 0xCD98, 0xCD98, 0xCD98 }, +{ 0xCD99, 0xCD99, 0xCD99 }, +{ 0xCD9A, 0xCD9A, 0xCD9A }, +{ 0xCD9B, 0xCD9B, 0xCD9B }, +{ 0xCD9C, 0xCD9C, 0xCD9C }, +{ 0xCD9D, 0xCD9D, 0xCD9D }, +{ 0xCD9E, 0xCD9E, 0xCD9E }, +{ 0xCD9F, 0xCD9F, 0xCD9F }, +{ 0xCDA0, 0xCDA0, 0xCDA0 }, +{ 0xCDA1, 0xCDA1, 0xCDA1 }, +{ 0xCDA2, 0xCDA2, 0xCDA2 }, +{ 0xCDA3, 0xCDA3, 0xCDA3 }, +{ 0xCDA4, 0xCDA4, 0xCDA4 }, +{ 0xCDA5, 0xCDA5, 0xCDA5 }, +{ 0xCDA6, 0xCDA6, 0xCDA6 }, +{ 0xCDA7, 0xCDA7, 0xCDA7 }, +{ 0xCDA8, 0xCDA8, 0xCDA8 }, +{ 0xCDA9, 0xCDA9, 0xCDA9 }, +{ 0xCDAA, 0xCDAA, 0xCDAA }, +{ 0xCDAB, 0xCDAB, 0xCDAB }, +{ 0xCDAC, 0xCDAC, 0xCDAC }, +{ 0xCDAD, 0xCDAD, 0xCDAD }, +{ 0xCDAE, 0xCDAE, 0xCDAE }, +{ 0xCDAF, 0xCDAF, 0xCDAF }, +{ 0xCDB0, 0xCDB0, 0xCDB0 }, +{ 0xCDB1, 0xCDB1, 0xCDB1 }, +{ 0xCDB2, 0xCDB2, 0xCDB2 }, +{ 0xCDB3, 0xCDB3, 0xCDB3 }, +{ 0xCDB4, 0xCDB4, 0xCDB4 }, +{ 0xCDB5, 0xCDB5, 0xCDB5 }, +{ 0xCDB6, 0xCDB6, 0xCDB6 }, +{ 0xCDB7, 0xCDB7, 0xCDB7 }, +{ 0xCDB8, 0xCDB8, 0xCDB8 }, +{ 0xCDB9, 0xCDB9, 0xCDB9 }, +{ 0xCDBA, 0xCDBA, 0xCDBA }, +{ 0xCDBB, 0xCDBB, 0xCDBB }, +{ 0xCDBC, 0xCDBC, 0xCDBC }, +{ 0xCDBD, 0xCDBD, 0xCDBD }, +{ 0xCDBE, 0xCDBE, 0xCDBE }, +{ 0xCDBF, 0xCDBF, 0xCDBF }, +{ 0xCDC0, 0xCDC0, 0xCDC0 }, +{ 0xCDC1, 0xCDC1, 0xCDC1 }, +{ 0xCDC2, 0xCDC2, 0xCDC2 }, +{ 0xCDC3, 0xCDC3, 0xCDC3 }, +{ 0xCDC4, 0xCDC4, 0xCDC4 }, +{ 0xCDC5, 0xCDC5, 0xCDC5 }, +{ 0xCDC6, 0xCDC6, 0xCDC6 }, +{ 0xCDC7, 0xCDC7, 0xCDC7 }, +{ 0xCDC8, 0xCDC8, 0xCDC8 }, +{ 0xCDC9, 0xCDC9, 0xCDC9 }, +{ 0xCDCA, 0xCDCA, 0xCDCA }, +{ 0xCDCB, 0xCDCB, 0xCDCB }, +{ 0xCDCC, 0xCDCC, 0xCDCC }, +{ 0xCDCD, 0xCDCD, 0xCDCD }, +{ 0xCDCE, 0xCDCE, 0xCDCE }, +{ 0xCDCF, 0xCDCF, 0xCDCF }, +{ 0xCDD0, 0xCDD0, 0xCDD0 }, +{ 0xCDD1, 0xCDD1, 0xCDD1 }, +{ 0xCDD2, 0xCDD2, 0xCDD2 }, +{ 0xCDD3, 0xCDD3, 0xCDD3 }, +{ 0xCDD4, 0xCDD4, 0xCDD4 }, +{ 0xCDD5, 0xCDD5, 0xCDD5 }, +{ 0xCDD6, 0xCDD6, 0xCDD6 }, +{ 0xCDD7, 0xCDD7, 0xCDD7 }, +{ 0xCDD8, 0xCDD8, 0xCDD8 }, +{ 0xCDD9, 0xCDD9, 0xCDD9 }, +{ 0xCDDA, 0xCDDA, 0xCDDA }, +{ 0xCDDB, 0xCDDB, 0xCDDB }, +{ 0xCDDC, 0xCDDC, 0xCDDC }, +{ 0xCDDD, 0xCDDD, 0xCDDD }, +{ 0xCDDE, 0xCDDE, 0xCDDE }, +{ 0xCDDF, 0xCDDF, 0xCDDF }, +{ 0xCDE0, 0xCDE0, 0xCDE0 }, +{ 0xCDE1, 0xCDE1, 0xCDE1 }, +{ 0xCDE2, 0xCDE2, 0xCDE2 }, +{ 0xCDE3, 0xCDE3, 0xCDE3 }, +{ 0xCDE4, 0xCDE4, 0xCDE4 }, +{ 0xCDE5, 0xCDE5, 0xCDE5 }, +{ 0xCDE6, 0xCDE6, 0xCDE6 }, +{ 0xCDE7, 0xCDE7, 0xCDE7 }, +{ 0xCDE8, 0xCDE8, 0xCDE8 }, +{ 0xCDE9, 0xCDE9, 0xCDE9 }, +{ 0xCDEA, 0xCDEA, 0xCDEA }, +{ 0xCDEB, 0xCDEB, 0xCDEB }, +{ 0xCDEC, 0xCDEC, 0xCDEC }, +{ 0xCDED, 0xCDED, 0xCDED }, +{ 0xCDEE, 0xCDEE, 0xCDEE }, +{ 0xCDEF, 0xCDEF, 0xCDEF }, +{ 0xCDF0, 0xCDF0, 0xCDF0 }, +{ 0xCDF1, 0xCDF1, 0xCDF1 }, +{ 0xCDF2, 0xCDF2, 0xCDF2 }, +{ 0xCDF3, 0xCDF3, 0xCDF3 }, +{ 0xCDF4, 0xCDF4, 0xCDF4 }, +{ 0xCDF5, 0xCDF5, 0xCDF5 }, +{ 0xCDF6, 0xCDF6, 0xCDF6 }, +{ 0xCDF7, 0xCDF7, 0xCDF7 }, +{ 0xCDF8, 0xCDF8, 0xCDF8 }, +{ 0xCDF9, 0xCDF9, 0xCDF9 }, +{ 0xCDFA, 0xCDFA, 0xCDFA }, +{ 0xCDFB, 0xCDFB, 0xCDFB }, +{ 0xCDFC, 0xCDFC, 0xCDFC }, +{ 0xCDFD, 0xCDFD, 0xCDFD }, +{ 0xCDFE, 0xCDFE, 0xCDFE }, +{ 0xCDFF, 0xCDFF, 0xCDFF }, +{ 0xCE00, 0xCE00, 0xCE00 }, +{ 0xCE01, 0xCE01, 0xCE01 }, +{ 0xCE02, 0xCE02, 0xCE02 }, +{ 0xCE03, 0xCE03, 0xCE03 }, +{ 0xCE04, 0xCE04, 0xCE04 }, +{ 0xCE05, 0xCE05, 0xCE05 }, +{ 0xCE06, 0xCE06, 0xCE06 }, +{ 0xCE07, 0xCE07, 0xCE07 }, +{ 0xCE08, 0xCE08, 0xCE08 }, +{ 0xCE09, 0xCE09, 0xCE09 }, +{ 0xCE0A, 0xCE0A, 0xCE0A }, +{ 0xCE0B, 0xCE0B, 0xCE0B }, +{ 0xCE0C, 0xCE0C, 0xCE0C }, +{ 0xCE0D, 0xCE0D, 0xCE0D }, +{ 0xCE0E, 0xCE0E, 0xCE0E }, +{ 0xCE0F, 0xCE0F, 0xCE0F }, +{ 0xCE10, 0xCE10, 0xCE10 }, +{ 0xCE11, 0xCE11, 0xCE11 }, +{ 0xCE12, 0xCE12, 0xCE12 }, +{ 0xCE13, 0xCE13, 0xCE13 }, +{ 0xCE14, 0xCE14, 0xCE14 }, +{ 0xCE15, 0xCE15, 0xCE15 }, +{ 0xCE16, 0xCE16, 0xCE16 }, +{ 0xCE17, 0xCE17, 0xCE17 }, +{ 0xCE18, 0xCE18, 0xCE18 }, +{ 0xCE19, 0xCE19, 0xCE19 }, +{ 0xCE1A, 0xCE1A, 0xCE1A }, +{ 0xCE1B, 0xCE1B, 0xCE1B }, +{ 0xCE1C, 0xCE1C, 0xCE1C }, +{ 0xCE1D, 0xCE1D, 0xCE1D }, +{ 0xCE1E, 0xCE1E, 0xCE1E }, +{ 0xCE1F, 0xCE1F, 0xCE1F }, +{ 0xCE20, 0xCE20, 0xCE20 }, +{ 0xCE21, 0xCE21, 0xCE21 }, +{ 0xCE22, 0xCE22, 0xCE22 }, +{ 0xCE23, 0xCE23, 0xCE23 }, +{ 0xCE24, 0xCE24, 0xCE24 }, +{ 0xCE25, 0xCE25, 0xCE25 }, +{ 0xCE26, 0xCE26, 0xCE26 }, +{ 0xCE27, 0xCE27, 0xCE27 }, +{ 0xCE28, 0xCE28, 0xCE28 }, +{ 0xCE29, 0xCE29, 0xCE29 }, +{ 0xCE2A, 0xCE2A, 0xCE2A }, +{ 0xCE2B, 0xCE2B, 0xCE2B }, +{ 0xCE2C, 0xCE2C, 0xCE2C }, +{ 0xCE2D, 0xCE2D, 0xCE2D }, +{ 0xCE2E, 0xCE2E, 0xCE2E }, +{ 0xCE2F, 0xCE2F, 0xCE2F }, +{ 0xCE30, 0xCE30, 0xCE30 }, +{ 0xCE31, 0xCE31, 0xCE31 }, +{ 0xCE32, 0xCE32, 0xCE32 }, +{ 0xCE33, 0xCE33, 0xCE33 }, +{ 0xCE34, 0xCE34, 0xCE34 }, +{ 0xCE35, 0xCE35, 0xCE35 }, +{ 0xCE36, 0xCE36, 0xCE36 }, +{ 0xCE37, 0xCE37, 0xCE37 }, +{ 0xCE38, 0xCE38, 0xCE38 }, +{ 0xCE39, 0xCE39, 0xCE39 }, +{ 0xCE3A, 0xCE3A, 0xCE3A }, +{ 0xCE3B, 0xCE3B, 0xCE3B }, +{ 0xCE3C, 0xCE3C, 0xCE3C }, +{ 0xCE3D, 0xCE3D, 0xCE3D }, +{ 0xCE3E, 0xCE3E, 0xCE3E }, +{ 0xCE3F, 0xCE3F, 0xCE3F }, +{ 0xCE40, 0xCE40, 0xCE40 }, +{ 0xCE41, 0xCE41, 0xCE41 }, +{ 0xCE42, 0xCE42, 0xCE42 }, +{ 0xCE43, 0xCE43, 0xCE43 }, +{ 0xCE44, 0xCE44, 0xCE44 }, +{ 0xCE45, 0xCE45, 0xCE45 }, +{ 0xCE46, 0xCE46, 0xCE46 }, +{ 0xCE47, 0xCE47, 0xCE47 }, +{ 0xCE48, 0xCE48, 0xCE48 }, +{ 0xCE49, 0xCE49, 0xCE49 }, +{ 0xCE4A, 0xCE4A, 0xCE4A }, +{ 0xCE4B, 0xCE4B, 0xCE4B }, +{ 0xCE4C, 0xCE4C, 0xCE4C }, +{ 0xCE4D, 0xCE4D, 0xCE4D }, +{ 0xCE4E, 0xCE4E, 0xCE4E }, +{ 0xCE4F, 0xCE4F, 0xCE4F }, +{ 0xCE50, 0xCE50, 0xCE50 }, +{ 0xCE51, 0xCE51, 0xCE51 }, +{ 0xCE52, 0xCE52, 0xCE52 }, +{ 0xCE53, 0xCE53, 0xCE53 }, +{ 0xCE54, 0xCE54, 0xCE54 }, +{ 0xCE55, 0xCE55, 0xCE55 }, +{ 0xCE56, 0xCE56, 0xCE56 }, +{ 0xCE57, 0xCE57, 0xCE57 }, +{ 0xCE58, 0xCE58, 0xCE58 }, +{ 0xCE59, 0xCE59, 0xCE59 }, +{ 0xCE5A, 0xCE5A, 0xCE5A }, +{ 0xCE5B, 0xCE5B, 0xCE5B }, +{ 0xCE5C, 0xCE5C, 0xCE5C }, +{ 0xCE5D, 0xCE5D, 0xCE5D }, +{ 0xCE5E, 0xCE5E, 0xCE5E }, +{ 0xCE5F, 0xCE5F, 0xCE5F }, +{ 0xCE60, 0xCE60, 0xCE60 }, +{ 0xCE61, 0xCE61, 0xCE61 }, +{ 0xCE62, 0xCE62, 0xCE62 }, +{ 0xCE63, 0xCE63, 0xCE63 }, +{ 0xCE64, 0xCE64, 0xCE64 }, +{ 0xCE65, 0xCE65, 0xCE65 }, +{ 0xCE66, 0xCE66, 0xCE66 }, +{ 0xCE67, 0xCE67, 0xCE67 }, +{ 0xCE68, 0xCE68, 0xCE68 }, +{ 0xCE69, 0xCE69, 0xCE69 }, +{ 0xCE6A, 0xCE6A, 0xCE6A }, +{ 0xCE6B, 0xCE6B, 0xCE6B }, +{ 0xCE6C, 0xCE6C, 0xCE6C }, +{ 0xCE6D, 0xCE6D, 0xCE6D }, +{ 0xCE6E, 0xCE6E, 0xCE6E }, +{ 0xCE6F, 0xCE6F, 0xCE6F }, +{ 0xCE70, 0xCE70, 0xCE70 }, +{ 0xCE71, 0xCE71, 0xCE71 }, +{ 0xCE72, 0xCE72, 0xCE72 }, +{ 0xCE73, 0xCE73, 0xCE73 }, +{ 0xCE74, 0xCE74, 0xCE74 }, +{ 0xCE75, 0xCE75, 0xCE75 }, +{ 0xCE76, 0xCE76, 0xCE76 }, +{ 0xCE77, 0xCE77, 0xCE77 }, +{ 0xCE78, 0xCE78, 0xCE78 }, +{ 0xCE79, 0xCE79, 0xCE79 }, +{ 0xCE7A, 0xCE7A, 0xCE7A }, +{ 0xCE7B, 0xCE7B, 0xCE7B }, +{ 0xCE7C, 0xCE7C, 0xCE7C }, +{ 0xCE7D, 0xCE7D, 0xCE7D }, +{ 0xCE7E, 0xCE7E, 0xCE7E }, +{ 0xCE7F, 0xCE7F, 0xCE7F }, +{ 0xCE80, 0xCE80, 0xCE80 }, +{ 0xCE81, 0xCE81, 0xCE81 }, +{ 0xCE82, 0xCE82, 0xCE82 }, +{ 0xCE83, 0xCE83, 0xCE83 }, +{ 0xCE84, 0xCE84, 0xCE84 }, +{ 0xCE85, 0xCE85, 0xCE85 }, +{ 0xCE86, 0xCE86, 0xCE86 }, +{ 0xCE87, 0xCE87, 0xCE87 }, +{ 0xCE88, 0xCE88, 0xCE88 }, +{ 0xCE89, 0xCE89, 0xCE89 }, +{ 0xCE8A, 0xCE8A, 0xCE8A }, +{ 0xCE8B, 0xCE8B, 0xCE8B }, +{ 0xCE8C, 0xCE8C, 0xCE8C }, +{ 0xCE8D, 0xCE8D, 0xCE8D }, +{ 0xCE8E, 0xCE8E, 0xCE8E }, +{ 0xCE8F, 0xCE8F, 0xCE8F }, +{ 0xCE90, 0xCE90, 0xCE90 }, +{ 0xCE91, 0xCE91, 0xCE91 }, +{ 0xCE92, 0xCE92, 0xCE92 }, +{ 0xCE93, 0xCE93, 0xCE93 }, +{ 0xCE94, 0xCE94, 0xCE94 }, +{ 0xCE95, 0xCE95, 0xCE95 }, +{ 0xCE96, 0xCE96, 0xCE96 }, +{ 0xCE97, 0xCE97, 0xCE97 }, +{ 0xCE98, 0xCE98, 0xCE98 }, +{ 0xCE99, 0xCE99, 0xCE99 }, +{ 0xCE9A, 0xCE9A, 0xCE9A }, +{ 0xCE9B, 0xCE9B, 0xCE9B }, +{ 0xCE9C, 0xCE9C, 0xCE9C }, +{ 0xCE9D, 0xCE9D, 0xCE9D }, +{ 0xCE9E, 0xCE9E, 0xCE9E }, +{ 0xCE9F, 0xCE9F, 0xCE9F }, +{ 0xCEA0, 0xCEA0, 0xCEA0 }, +{ 0xCEA1, 0xCEA1, 0xCEA1 }, +{ 0xCEA2, 0xCEA2, 0xCEA2 }, +{ 0xCEA3, 0xCEA3, 0xCEA3 }, +{ 0xCEA4, 0xCEA4, 0xCEA4 }, +{ 0xCEA5, 0xCEA5, 0xCEA5 }, +{ 0xCEA6, 0xCEA6, 0xCEA6 }, +{ 0xCEA7, 0xCEA7, 0xCEA7 }, +{ 0xCEA8, 0xCEA8, 0xCEA8 }, +{ 0xCEA9, 0xCEA9, 0xCEA9 }, +{ 0xCEAA, 0xCEAA, 0xCEAA }, +{ 0xCEAB, 0xCEAB, 0xCEAB }, +{ 0xCEAC, 0xCEAC, 0xCEAC }, +{ 0xCEAD, 0xCEAD, 0xCEAD }, +{ 0xCEAE, 0xCEAE, 0xCEAE }, +{ 0xCEAF, 0xCEAF, 0xCEAF }, +{ 0xCEB0, 0xCEB0, 0xCEB0 }, +{ 0xCEB1, 0xCEB1, 0xCEB1 }, +{ 0xCEB2, 0xCEB2, 0xCEB2 }, +{ 0xCEB3, 0xCEB3, 0xCEB3 }, +{ 0xCEB4, 0xCEB4, 0xCEB4 }, +{ 0xCEB5, 0xCEB5, 0xCEB5 }, +{ 0xCEB6, 0xCEB6, 0xCEB6 }, +{ 0xCEB7, 0xCEB7, 0xCEB7 }, +{ 0xCEB8, 0xCEB8, 0xCEB8 }, +{ 0xCEB9, 0xCEB9, 0xCEB9 }, +{ 0xCEBA, 0xCEBA, 0xCEBA }, +{ 0xCEBB, 0xCEBB, 0xCEBB }, +{ 0xCEBC, 0xCEBC, 0xCEBC }, +{ 0xCEBD, 0xCEBD, 0xCEBD }, +{ 0xCEBE, 0xCEBE, 0xCEBE }, +{ 0xCEBF, 0xCEBF, 0xCEBF }, +{ 0xCEC0, 0xCEC0, 0xCEC0 }, +{ 0xCEC1, 0xCEC1, 0xCEC1 }, +{ 0xCEC2, 0xCEC2, 0xCEC2 }, +{ 0xCEC3, 0xCEC3, 0xCEC3 }, +{ 0xCEC4, 0xCEC4, 0xCEC4 }, +{ 0xCEC5, 0xCEC5, 0xCEC5 }, +{ 0xCEC6, 0xCEC6, 0xCEC6 }, +{ 0xCEC7, 0xCEC7, 0xCEC7 }, +{ 0xCEC8, 0xCEC8, 0xCEC8 }, +{ 0xCEC9, 0xCEC9, 0xCEC9 }, +{ 0xCECA, 0xCECA, 0xCECA }, +{ 0xCECB, 0xCECB, 0xCECB }, +{ 0xCECC, 0xCECC, 0xCECC }, +{ 0xCECD, 0xCECD, 0xCECD }, +{ 0xCECE, 0xCECE, 0xCECE }, +{ 0xCECF, 0xCECF, 0xCECF }, +{ 0xCED0, 0xCED0, 0xCED0 }, +{ 0xCED1, 0xCED1, 0xCED1 }, +{ 0xCED2, 0xCED2, 0xCED2 }, +{ 0xCED3, 0xCED3, 0xCED3 }, +{ 0xCED4, 0xCED4, 0xCED4 }, +{ 0xCED5, 0xCED5, 0xCED5 }, +{ 0xCED6, 0xCED6, 0xCED6 }, +{ 0xCED7, 0xCED7, 0xCED7 }, +{ 0xCED8, 0xCED8, 0xCED8 }, +{ 0xCED9, 0xCED9, 0xCED9 }, +{ 0xCEDA, 0xCEDA, 0xCEDA }, +{ 0xCEDB, 0xCEDB, 0xCEDB }, +{ 0xCEDC, 0xCEDC, 0xCEDC }, +{ 0xCEDD, 0xCEDD, 0xCEDD }, +{ 0xCEDE, 0xCEDE, 0xCEDE }, +{ 0xCEDF, 0xCEDF, 0xCEDF }, +{ 0xCEE0, 0xCEE0, 0xCEE0 }, +{ 0xCEE1, 0xCEE1, 0xCEE1 }, +{ 0xCEE2, 0xCEE2, 0xCEE2 }, +{ 0xCEE3, 0xCEE3, 0xCEE3 }, +{ 0xCEE4, 0xCEE4, 0xCEE4 }, +{ 0xCEE5, 0xCEE5, 0xCEE5 }, +{ 0xCEE6, 0xCEE6, 0xCEE6 }, +{ 0xCEE7, 0xCEE7, 0xCEE7 }, +{ 0xCEE8, 0xCEE8, 0xCEE8 }, +{ 0xCEE9, 0xCEE9, 0xCEE9 }, +{ 0xCEEA, 0xCEEA, 0xCEEA }, +{ 0xCEEB, 0xCEEB, 0xCEEB }, +{ 0xCEEC, 0xCEEC, 0xCEEC }, +{ 0xCEED, 0xCEED, 0xCEED }, +{ 0xCEEE, 0xCEEE, 0xCEEE }, +{ 0xCEEF, 0xCEEF, 0xCEEF }, +{ 0xCEF0, 0xCEF0, 0xCEF0 }, +{ 0xCEF1, 0xCEF1, 0xCEF1 }, +{ 0xCEF2, 0xCEF2, 0xCEF2 }, +{ 0xCEF3, 0xCEF3, 0xCEF3 }, +{ 0xCEF4, 0xCEF4, 0xCEF4 }, +{ 0xCEF5, 0xCEF5, 0xCEF5 }, +{ 0xCEF6, 0xCEF6, 0xCEF6 }, +{ 0xCEF7, 0xCEF7, 0xCEF7 }, +{ 0xCEF8, 0xCEF8, 0xCEF8 }, +{ 0xCEF9, 0xCEF9, 0xCEF9 }, +{ 0xCEFA, 0xCEFA, 0xCEFA }, +{ 0xCEFB, 0xCEFB, 0xCEFB }, +{ 0xCEFC, 0xCEFC, 0xCEFC }, +{ 0xCEFD, 0xCEFD, 0xCEFD }, +{ 0xCEFE, 0xCEFE, 0xCEFE }, +{ 0xCEFF, 0xCEFF, 0xCEFF }, +{ 0xCF00, 0xCF00, 0xCF00 }, +{ 0xCF01, 0xCF01, 0xCF01 }, +{ 0xCF02, 0xCF02, 0xCF02 }, +{ 0xCF03, 0xCF03, 0xCF03 }, +{ 0xCF04, 0xCF04, 0xCF04 }, +{ 0xCF05, 0xCF05, 0xCF05 }, +{ 0xCF06, 0xCF06, 0xCF06 }, +{ 0xCF07, 0xCF07, 0xCF07 }, +{ 0xCF08, 0xCF08, 0xCF08 }, +{ 0xCF09, 0xCF09, 0xCF09 }, +{ 0xCF0A, 0xCF0A, 0xCF0A }, +{ 0xCF0B, 0xCF0B, 0xCF0B }, +{ 0xCF0C, 0xCF0C, 0xCF0C }, +{ 0xCF0D, 0xCF0D, 0xCF0D }, +{ 0xCF0E, 0xCF0E, 0xCF0E }, +{ 0xCF0F, 0xCF0F, 0xCF0F }, +{ 0xCF10, 0xCF10, 0xCF10 }, +{ 0xCF11, 0xCF11, 0xCF11 }, +{ 0xCF12, 0xCF12, 0xCF12 }, +{ 0xCF13, 0xCF13, 0xCF13 }, +{ 0xCF14, 0xCF14, 0xCF14 }, +{ 0xCF15, 0xCF15, 0xCF15 }, +{ 0xCF16, 0xCF16, 0xCF16 }, +{ 0xCF17, 0xCF17, 0xCF17 }, +{ 0xCF18, 0xCF18, 0xCF18 }, +{ 0xCF19, 0xCF19, 0xCF19 }, +{ 0xCF1A, 0xCF1A, 0xCF1A }, +{ 0xCF1B, 0xCF1B, 0xCF1B }, +{ 0xCF1C, 0xCF1C, 0xCF1C }, +{ 0xCF1D, 0xCF1D, 0xCF1D }, +{ 0xCF1E, 0xCF1E, 0xCF1E }, +{ 0xCF1F, 0xCF1F, 0xCF1F }, +{ 0xCF20, 0xCF20, 0xCF20 }, +{ 0xCF21, 0xCF21, 0xCF21 }, +{ 0xCF22, 0xCF22, 0xCF22 }, +{ 0xCF23, 0xCF23, 0xCF23 }, +{ 0xCF24, 0xCF24, 0xCF24 }, +{ 0xCF25, 0xCF25, 0xCF25 }, +{ 0xCF26, 0xCF26, 0xCF26 }, +{ 0xCF27, 0xCF27, 0xCF27 }, +{ 0xCF28, 0xCF28, 0xCF28 }, +{ 0xCF29, 0xCF29, 0xCF29 }, +{ 0xCF2A, 0xCF2A, 0xCF2A }, +{ 0xCF2B, 0xCF2B, 0xCF2B }, +{ 0xCF2C, 0xCF2C, 0xCF2C }, +{ 0xCF2D, 0xCF2D, 0xCF2D }, +{ 0xCF2E, 0xCF2E, 0xCF2E }, +{ 0xCF2F, 0xCF2F, 0xCF2F }, +{ 0xCF30, 0xCF30, 0xCF30 }, +{ 0xCF31, 0xCF31, 0xCF31 }, +{ 0xCF32, 0xCF32, 0xCF32 }, +{ 0xCF33, 0xCF33, 0xCF33 }, +{ 0xCF34, 0xCF34, 0xCF34 }, +{ 0xCF35, 0xCF35, 0xCF35 }, +{ 0xCF36, 0xCF36, 0xCF36 }, +{ 0xCF37, 0xCF37, 0xCF37 }, +{ 0xCF38, 0xCF38, 0xCF38 }, +{ 0xCF39, 0xCF39, 0xCF39 }, +{ 0xCF3A, 0xCF3A, 0xCF3A }, +{ 0xCF3B, 0xCF3B, 0xCF3B }, +{ 0xCF3C, 0xCF3C, 0xCF3C }, +{ 0xCF3D, 0xCF3D, 0xCF3D }, +{ 0xCF3E, 0xCF3E, 0xCF3E }, +{ 0xCF3F, 0xCF3F, 0xCF3F }, +{ 0xCF40, 0xCF40, 0xCF40 }, +{ 0xCF41, 0xCF41, 0xCF41 }, +{ 0xCF42, 0xCF42, 0xCF42 }, +{ 0xCF43, 0xCF43, 0xCF43 }, +{ 0xCF44, 0xCF44, 0xCF44 }, +{ 0xCF45, 0xCF45, 0xCF45 }, +{ 0xCF46, 0xCF46, 0xCF46 }, +{ 0xCF47, 0xCF47, 0xCF47 }, +{ 0xCF48, 0xCF48, 0xCF48 }, +{ 0xCF49, 0xCF49, 0xCF49 }, +{ 0xCF4A, 0xCF4A, 0xCF4A }, +{ 0xCF4B, 0xCF4B, 0xCF4B }, +{ 0xCF4C, 0xCF4C, 0xCF4C }, +{ 0xCF4D, 0xCF4D, 0xCF4D }, +{ 0xCF4E, 0xCF4E, 0xCF4E }, +{ 0xCF4F, 0xCF4F, 0xCF4F }, +{ 0xCF50, 0xCF50, 0xCF50 }, +{ 0xCF51, 0xCF51, 0xCF51 }, +{ 0xCF52, 0xCF52, 0xCF52 }, +{ 0xCF53, 0xCF53, 0xCF53 }, +{ 0xCF54, 0xCF54, 0xCF54 }, +{ 0xCF55, 0xCF55, 0xCF55 }, +{ 0xCF56, 0xCF56, 0xCF56 }, +{ 0xCF57, 0xCF57, 0xCF57 }, +{ 0xCF58, 0xCF58, 0xCF58 }, +{ 0xCF59, 0xCF59, 0xCF59 }, +{ 0xCF5A, 0xCF5A, 0xCF5A }, +{ 0xCF5B, 0xCF5B, 0xCF5B }, +{ 0xCF5C, 0xCF5C, 0xCF5C }, +{ 0xCF5D, 0xCF5D, 0xCF5D }, +{ 0xCF5E, 0xCF5E, 0xCF5E }, +{ 0xCF5F, 0xCF5F, 0xCF5F }, +{ 0xCF60, 0xCF60, 0xCF60 }, +{ 0xCF61, 0xCF61, 0xCF61 }, +{ 0xCF62, 0xCF62, 0xCF62 }, +{ 0xCF63, 0xCF63, 0xCF63 }, +{ 0xCF64, 0xCF64, 0xCF64 }, +{ 0xCF65, 0xCF65, 0xCF65 }, +{ 0xCF66, 0xCF66, 0xCF66 }, +{ 0xCF67, 0xCF67, 0xCF67 }, +{ 0xCF68, 0xCF68, 0xCF68 }, +{ 0xCF69, 0xCF69, 0xCF69 }, +{ 0xCF6A, 0xCF6A, 0xCF6A }, +{ 0xCF6B, 0xCF6B, 0xCF6B }, +{ 0xCF6C, 0xCF6C, 0xCF6C }, +{ 0xCF6D, 0xCF6D, 0xCF6D }, +{ 0xCF6E, 0xCF6E, 0xCF6E }, +{ 0xCF6F, 0xCF6F, 0xCF6F }, +{ 0xCF70, 0xCF70, 0xCF70 }, +{ 0xCF71, 0xCF71, 0xCF71 }, +{ 0xCF72, 0xCF72, 0xCF72 }, +{ 0xCF73, 0xCF73, 0xCF73 }, +{ 0xCF74, 0xCF74, 0xCF74 }, +{ 0xCF75, 0xCF75, 0xCF75 }, +{ 0xCF76, 0xCF76, 0xCF76 }, +{ 0xCF77, 0xCF77, 0xCF77 }, +{ 0xCF78, 0xCF78, 0xCF78 }, +{ 0xCF79, 0xCF79, 0xCF79 }, +{ 0xCF7A, 0xCF7A, 0xCF7A }, +{ 0xCF7B, 0xCF7B, 0xCF7B }, +{ 0xCF7C, 0xCF7C, 0xCF7C }, +{ 0xCF7D, 0xCF7D, 0xCF7D }, +{ 0xCF7E, 0xCF7E, 0xCF7E }, +{ 0xCF7F, 0xCF7F, 0xCF7F }, +{ 0xCF80, 0xCF80, 0xCF80 }, +{ 0xCF81, 0xCF81, 0xCF81 }, +{ 0xCF82, 0xCF82, 0xCF82 }, +{ 0xCF83, 0xCF83, 0xCF83 }, +{ 0xCF84, 0xCF84, 0xCF84 }, +{ 0xCF85, 0xCF85, 0xCF85 }, +{ 0xCF86, 0xCF86, 0xCF86 }, +{ 0xCF87, 0xCF87, 0xCF87 }, +{ 0xCF88, 0xCF88, 0xCF88 }, +{ 0xCF89, 0xCF89, 0xCF89 }, +{ 0xCF8A, 0xCF8A, 0xCF8A }, +{ 0xCF8B, 0xCF8B, 0xCF8B }, +{ 0xCF8C, 0xCF8C, 0xCF8C }, +{ 0xCF8D, 0xCF8D, 0xCF8D }, +{ 0xCF8E, 0xCF8E, 0xCF8E }, +{ 0xCF8F, 0xCF8F, 0xCF8F }, +{ 0xCF90, 0xCF90, 0xCF90 }, +{ 0xCF91, 0xCF91, 0xCF91 }, +{ 0xCF92, 0xCF92, 0xCF92 }, +{ 0xCF93, 0xCF93, 0xCF93 }, +{ 0xCF94, 0xCF94, 0xCF94 }, +{ 0xCF95, 0xCF95, 0xCF95 }, +{ 0xCF96, 0xCF96, 0xCF96 }, +{ 0xCF97, 0xCF97, 0xCF97 }, +{ 0xCF98, 0xCF98, 0xCF98 }, +{ 0xCF99, 0xCF99, 0xCF99 }, +{ 0xCF9A, 0xCF9A, 0xCF9A }, +{ 0xCF9B, 0xCF9B, 0xCF9B }, +{ 0xCF9C, 0xCF9C, 0xCF9C }, +{ 0xCF9D, 0xCF9D, 0xCF9D }, +{ 0xCF9E, 0xCF9E, 0xCF9E }, +{ 0xCF9F, 0xCF9F, 0xCF9F }, +{ 0xCFA0, 0xCFA0, 0xCFA0 }, +{ 0xCFA1, 0xCFA1, 0xCFA1 }, +{ 0xCFA2, 0xCFA2, 0xCFA2 }, +{ 0xCFA3, 0xCFA3, 0xCFA3 }, +{ 0xCFA4, 0xCFA4, 0xCFA4 }, +{ 0xCFA5, 0xCFA5, 0xCFA5 }, +{ 0xCFA6, 0xCFA6, 0xCFA6 }, +{ 0xCFA7, 0xCFA7, 0xCFA7 }, +{ 0xCFA8, 0xCFA8, 0xCFA8 }, +{ 0xCFA9, 0xCFA9, 0xCFA9 }, +{ 0xCFAA, 0xCFAA, 0xCFAA }, +{ 0xCFAB, 0xCFAB, 0xCFAB }, +{ 0xCFAC, 0xCFAC, 0xCFAC }, +{ 0xCFAD, 0xCFAD, 0xCFAD }, +{ 0xCFAE, 0xCFAE, 0xCFAE }, +{ 0xCFAF, 0xCFAF, 0xCFAF }, +{ 0xCFB0, 0xCFB0, 0xCFB0 }, +{ 0xCFB1, 0xCFB1, 0xCFB1 }, +{ 0xCFB2, 0xCFB2, 0xCFB2 }, +{ 0xCFB3, 0xCFB3, 0xCFB3 }, +{ 0xCFB4, 0xCFB4, 0xCFB4 }, +{ 0xCFB5, 0xCFB5, 0xCFB5 }, +{ 0xCFB6, 0xCFB6, 0xCFB6 }, +{ 0xCFB7, 0xCFB7, 0xCFB7 }, +{ 0xCFB8, 0xCFB8, 0xCFB8 }, +{ 0xCFB9, 0xCFB9, 0xCFB9 }, +{ 0xCFBA, 0xCFBA, 0xCFBA }, +{ 0xCFBB, 0xCFBB, 0xCFBB }, +{ 0xCFBC, 0xCFBC, 0xCFBC }, +{ 0xCFBD, 0xCFBD, 0xCFBD }, +{ 0xCFBE, 0xCFBE, 0xCFBE }, +{ 0xCFBF, 0xCFBF, 0xCFBF }, +{ 0xCFC0, 0xCFC0, 0xCFC0 }, +{ 0xCFC1, 0xCFC1, 0xCFC1 }, +{ 0xCFC2, 0xCFC2, 0xCFC2 }, +{ 0xCFC3, 0xCFC3, 0xCFC3 }, +{ 0xCFC4, 0xCFC4, 0xCFC4 }, +{ 0xCFC5, 0xCFC5, 0xCFC5 }, +{ 0xCFC6, 0xCFC6, 0xCFC6 }, +{ 0xCFC7, 0xCFC7, 0xCFC7 }, +{ 0xCFC8, 0xCFC8, 0xCFC8 }, +{ 0xCFC9, 0xCFC9, 0xCFC9 }, +{ 0xCFCA, 0xCFCA, 0xCFCA }, +{ 0xCFCB, 0xCFCB, 0xCFCB }, +{ 0xCFCC, 0xCFCC, 0xCFCC }, +{ 0xCFCD, 0xCFCD, 0xCFCD }, +{ 0xCFCE, 0xCFCE, 0xCFCE }, +{ 0xCFCF, 0xCFCF, 0xCFCF }, +{ 0xCFD0, 0xCFD0, 0xCFD0 }, +{ 0xCFD1, 0xCFD1, 0xCFD1 }, +{ 0xCFD2, 0xCFD2, 0xCFD2 }, +{ 0xCFD3, 0xCFD3, 0xCFD3 }, +{ 0xCFD4, 0xCFD4, 0xCFD4 }, +{ 0xCFD5, 0xCFD5, 0xCFD5 }, +{ 0xCFD6, 0xCFD6, 0xCFD6 }, +{ 0xCFD7, 0xCFD7, 0xCFD7 }, +{ 0xCFD8, 0xCFD8, 0xCFD8 }, +{ 0xCFD9, 0xCFD9, 0xCFD9 }, +{ 0xCFDA, 0xCFDA, 0xCFDA }, +{ 0xCFDB, 0xCFDB, 0xCFDB }, +{ 0xCFDC, 0xCFDC, 0xCFDC }, +{ 0xCFDD, 0xCFDD, 0xCFDD }, +{ 0xCFDE, 0xCFDE, 0xCFDE }, +{ 0xCFDF, 0xCFDF, 0xCFDF }, +{ 0xCFE0, 0xCFE0, 0xCFE0 }, +{ 0xCFE1, 0xCFE1, 0xCFE1 }, +{ 0xCFE2, 0xCFE2, 0xCFE2 }, +{ 0xCFE3, 0xCFE3, 0xCFE3 }, +{ 0xCFE4, 0xCFE4, 0xCFE4 }, +{ 0xCFE5, 0xCFE5, 0xCFE5 }, +{ 0xCFE6, 0xCFE6, 0xCFE6 }, +{ 0xCFE7, 0xCFE7, 0xCFE7 }, +{ 0xCFE8, 0xCFE8, 0xCFE8 }, +{ 0xCFE9, 0xCFE9, 0xCFE9 }, +{ 0xCFEA, 0xCFEA, 0xCFEA }, +{ 0xCFEB, 0xCFEB, 0xCFEB }, +{ 0xCFEC, 0xCFEC, 0xCFEC }, +{ 0xCFED, 0xCFED, 0xCFED }, +{ 0xCFEE, 0xCFEE, 0xCFEE }, +{ 0xCFEF, 0xCFEF, 0xCFEF }, +{ 0xCFF0, 0xCFF0, 0xCFF0 }, +{ 0xCFF1, 0xCFF1, 0xCFF1 }, +{ 0xCFF2, 0xCFF2, 0xCFF2 }, +{ 0xCFF3, 0xCFF3, 0xCFF3 }, +{ 0xCFF4, 0xCFF4, 0xCFF4 }, +{ 0xCFF5, 0xCFF5, 0xCFF5 }, +{ 0xCFF6, 0xCFF6, 0xCFF6 }, +{ 0xCFF7, 0xCFF7, 0xCFF7 }, +{ 0xCFF8, 0xCFF8, 0xCFF8 }, +{ 0xCFF9, 0xCFF9, 0xCFF9 }, +{ 0xCFFA, 0xCFFA, 0xCFFA }, +{ 0xCFFB, 0xCFFB, 0xCFFB }, +{ 0xCFFC, 0xCFFC, 0xCFFC }, +{ 0xCFFD, 0xCFFD, 0xCFFD }, +{ 0xCFFE, 0xCFFE, 0xCFFE }, +{ 0xCFFF, 0xCFFF, 0xCFFF }, +{ 0xD000, 0xD000, 0xD000 }, +{ 0xD001, 0xD001, 0xD001 }, +{ 0xD002, 0xD002, 0xD002 }, +{ 0xD003, 0xD003, 0xD003 }, +{ 0xD004, 0xD004, 0xD004 }, +{ 0xD005, 0xD005, 0xD005 }, +{ 0xD006, 0xD006, 0xD006 }, +{ 0xD007, 0xD007, 0xD007 }, +{ 0xD008, 0xD008, 0xD008 }, +{ 0xD009, 0xD009, 0xD009 }, +{ 0xD00A, 0xD00A, 0xD00A }, +{ 0xD00B, 0xD00B, 0xD00B }, +{ 0xD00C, 0xD00C, 0xD00C }, +{ 0xD00D, 0xD00D, 0xD00D }, +{ 0xD00E, 0xD00E, 0xD00E }, +{ 0xD00F, 0xD00F, 0xD00F }, +{ 0xD010, 0xD010, 0xD010 }, +{ 0xD011, 0xD011, 0xD011 }, +{ 0xD012, 0xD012, 0xD012 }, +{ 0xD013, 0xD013, 0xD013 }, +{ 0xD014, 0xD014, 0xD014 }, +{ 0xD015, 0xD015, 0xD015 }, +{ 0xD016, 0xD016, 0xD016 }, +{ 0xD017, 0xD017, 0xD017 }, +{ 0xD018, 0xD018, 0xD018 }, +{ 0xD019, 0xD019, 0xD019 }, +{ 0xD01A, 0xD01A, 0xD01A }, +{ 0xD01B, 0xD01B, 0xD01B }, +{ 0xD01C, 0xD01C, 0xD01C }, +{ 0xD01D, 0xD01D, 0xD01D }, +{ 0xD01E, 0xD01E, 0xD01E }, +{ 0xD01F, 0xD01F, 0xD01F }, +{ 0xD020, 0xD020, 0xD020 }, +{ 0xD021, 0xD021, 0xD021 }, +{ 0xD022, 0xD022, 0xD022 }, +{ 0xD023, 0xD023, 0xD023 }, +{ 0xD024, 0xD024, 0xD024 }, +{ 0xD025, 0xD025, 0xD025 }, +{ 0xD026, 0xD026, 0xD026 }, +{ 0xD027, 0xD027, 0xD027 }, +{ 0xD028, 0xD028, 0xD028 }, +{ 0xD029, 0xD029, 0xD029 }, +{ 0xD02A, 0xD02A, 0xD02A }, +{ 0xD02B, 0xD02B, 0xD02B }, +{ 0xD02C, 0xD02C, 0xD02C }, +{ 0xD02D, 0xD02D, 0xD02D }, +{ 0xD02E, 0xD02E, 0xD02E }, +{ 0xD02F, 0xD02F, 0xD02F }, +{ 0xD030, 0xD030, 0xD030 }, +{ 0xD031, 0xD031, 0xD031 }, +{ 0xD032, 0xD032, 0xD032 }, +{ 0xD033, 0xD033, 0xD033 }, +{ 0xD034, 0xD034, 0xD034 }, +{ 0xD035, 0xD035, 0xD035 }, +{ 0xD036, 0xD036, 0xD036 }, +{ 0xD037, 0xD037, 0xD037 }, +{ 0xD038, 0xD038, 0xD038 }, +{ 0xD039, 0xD039, 0xD039 }, +{ 0xD03A, 0xD03A, 0xD03A }, +{ 0xD03B, 0xD03B, 0xD03B }, +{ 0xD03C, 0xD03C, 0xD03C }, +{ 0xD03D, 0xD03D, 0xD03D }, +{ 0xD03E, 0xD03E, 0xD03E }, +{ 0xD03F, 0xD03F, 0xD03F }, +{ 0xD040, 0xD040, 0xD040 }, +{ 0xD041, 0xD041, 0xD041 }, +{ 0xD042, 0xD042, 0xD042 }, +{ 0xD043, 0xD043, 0xD043 }, +{ 0xD044, 0xD044, 0xD044 }, +{ 0xD045, 0xD045, 0xD045 }, +{ 0xD046, 0xD046, 0xD046 }, +{ 0xD047, 0xD047, 0xD047 }, +{ 0xD048, 0xD048, 0xD048 }, +{ 0xD049, 0xD049, 0xD049 }, +{ 0xD04A, 0xD04A, 0xD04A }, +{ 0xD04B, 0xD04B, 0xD04B }, +{ 0xD04C, 0xD04C, 0xD04C }, +{ 0xD04D, 0xD04D, 0xD04D }, +{ 0xD04E, 0xD04E, 0xD04E }, +{ 0xD04F, 0xD04F, 0xD04F }, +{ 0xD050, 0xD050, 0xD050 }, +{ 0xD051, 0xD051, 0xD051 }, +{ 0xD052, 0xD052, 0xD052 }, +{ 0xD053, 0xD053, 0xD053 }, +{ 0xD054, 0xD054, 0xD054 }, +{ 0xD055, 0xD055, 0xD055 }, +{ 0xD056, 0xD056, 0xD056 }, +{ 0xD057, 0xD057, 0xD057 }, +{ 0xD058, 0xD058, 0xD058 }, +{ 0xD059, 0xD059, 0xD059 }, +{ 0xD05A, 0xD05A, 0xD05A }, +{ 0xD05B, 0xD05B, 0xD05B }, +{ 0xD05C, 0xD05C, 0xD05C }, +{ 0xD05D, 0xD05D, 0xD05D }, +{ 0xD05E, 0xD05E, 0xD05E }, +{ 0xD05F, 0xD05F, 0xD05F }, +{ 0xD060, 0xD060, 0xD060 }, +{ 0xD061, 0xD061, 0xD061 }, +{ 0xD062, 0xD062, 0xD062 }, +{ 0xD063, 0xD063, 0xD063 }, +{ 0xD064, 0xD064, 0xD064 }, +{ 0xD065, 0xD065, 0xD065 }, +{ 0xD066, 0xD066, 0xD066 }, +{ 0xD067, 0xD067, 0xD067 }, +{ 0xD068, 0xD068, 0xD068 }, +{ 0xD069, 0xD069, 0xD069 }, +{ 0xD06A, 0xD06A, 0xD06A }, +{ 0xD06B, 0xD06B, 0xD06B }, +{ 0xD06C, 0xD06C, 0xD06C }, +{ 0xD06D, 0xD06D, 0xD06D }, +{ 0xD06E, 0xD06E, 0xD06E }, +{ 0xD06F, 0xD06F, 0xD06F }, +{ 0xD070, 0xD070, 0xD070 }, +{ 0xD071, 0xD071, 0xD071 }, +{ 0xD072, 0xD072, 0xD072 }, +{ 0xD073, 0xD073, 0xD073 }, +{ 0xD074, 0xD074, 0xD074 }, +{ 0xD075, 0xD075, 0xD075 }, +{ 0xD076, 0xD076, 0xD076 }, +{ 0xD077, 0xD077, 0xD077 }, +{ 0xD078, 0xD078, 0xD078 }, +{ 0xD079, 0xD079, 0xD079 }, +{ 0xD07A, 0xD07A, 0xD07A }, +{ 0xD07B, 0xD07B, 0xD07B }, +{ 0xD07C, 0xD07C, 0xD07C }, +{ 0xD07D, 0xD07D, 0xD07D }, +{ 0xD07E, 0xD07E, 0xD07E }, +{ 0xD07F, 0xD07F, 0xD07F }, +{ 0xD080, 0xD080, 0xD080 }, +{ 0xD081, 0xD081, 0xD081 }, +{ 0xD082, 0xD082, 0xD082 }, +{ 0xD083, 0xD083, 0xD083 }, +{ 0xD084, 0xD084, 0xD084 }, +{ 0xD085, 0xD085, 0xD085 }, +{ 0xD086, 0xD086, 0xD086 }, +{ 0xD087, 0xD087, 0xD087 }, +{ 0xD088, 0xD088, 0xD088 }, +{ 0xD089, 0xD089, 0xD089 }, +{ 0xD08A, 0xD08A, 0xD08A }, +{ 0xD08B, 0xD08B, 0xD08B }, +{ 0xD08C, 0xD08C, 0xD08C }, +{ 0xD08D, 0xD08D, 0xD08D }, +{ 0xD08E, 0xD08E, 0xD08E }, +{ 0xD08F, 0xD08F, 0xD08F }, +{ 0xD090, 0xD090, 0xD090 }, +{ 0xD091, 0xD091, 0xD091 }, +{ 0xD092, 0xD092, 0xD092 }, +{ 0xD093, 0xD093, 0xD093 }, +{ 0xD094, 0xD094, 0xD094 }, +{ 0xD095, 0xD095, 0xD095 }, +{ 0xD096, 0xD096, 0xD096 }, +{ 0xD097, 0xD097, 0xD097 }, +{ 0xD098, 0xD098, 0xD098 }, +{ 0xD099, 0xD099, 0xD099 }, +{ 0xD09A, 0xD09A, 0xD09A }, +{ 0xD09B, 0xD09B, 0xD09B }, +{ 0xD09C, 0xD09C, 0xD09C }, +{ 0xD09D, 0xD09D, 0xD09D }, +{ 0xD09E, 0xD09E, 0xD09E }, +{ 0xD09F, 0xD09F, 0xD09F }, +{ 0xD0A0, 0xD0A0, 0xD0A0 }, +{ 0xD0A1, 0xD0A1, 0xD0A1 }, +{ 0xD0A2, 0xD0A2, 0xD0A2 }, +{ 0xD0A3, 0xD0A3, 0xD0A3 }, +{ 0xD0A4, 0xD0A4, 0xD0A4 }, +{ 0xD0A5, 0xD0A5, 0xD0A5 }, +{ 0xD0A6, 0xD0A6, 0xD0A6 }, +{ 0xD0A7, 0xD0A7, 0xD0A7 }, +{ 0xD0A8, 0xD0A8, 0xD0A8 }, +{ 0xD0A9, 0xD0A9, 0xD0A9 }, +{ 0xD0AA, 0xD0AA, 0xD0AA }, +{ 0xD0AB, 0xD0AB, 0xD0AB }, +{ 0xD0AC, 0xD0AC, 0xD0AC }, +{ 0xD0AD, 0xD0AD, 0xD0AD }, +{ 0xD0AE, 0xD0AE, 0xD0AE }, +{ 0xD0AF, 0xD0AF, 0xD0AF }, +{ 0xD0B0, 0xD0B0, 0xD0B0 }, +{ 0xD0B1, 0xD0B1, 0xD0B1 }, +{ 0xD0B2, 0xD0B2, 0xD0B2 }, +{ 0xD0B3, 0xD0B3, 0xD0B3 }, +{ 0xD0B4, 0xD0B4, 0xD0B4 }, +{ 0xD0B5, 0xD0B5, 0xD0B5 }, +{ 0xD0B6, 0xD0B6, 0xD0B6 }, +{ 0xD0B7, 0xD0B7, 0xD0B7 }, +{ 0xD0B8, 0xD0B8, 0xD0B8 }, +{ 0xD0B9, 0xD0B9, 0xD0B9 }, +{ 0xD0BA, 0xD0BA, 0xD0BA }, +{ 0xD0BB, 0xD0BB, 0xD0BB }, +{ 0xD0BC, 0xD0BC, 0xD0BC }, +{ 0xD0BD, 0xD0BD, 0xD0BD }, +{ 0xD0BE, 0xD0BE, 0xD0BE }, +{ 0xD0BF, 0xD0BF, 0xD0BF }, +{ 0xD0C0, 0xD0C0, 0xD0C0 }, +{ 0xD0C1, 0xD0C1, 0xD0C1 }, +{ 0xD0C2, 0xD0C2, 0xD0C2 }, +{ 0xD0C3, 0xD0C3, 0xD0C3 }, +{ 0xD0C4, 0xD0C4, 0xD0C4 }, +{ 0xD0C5, 0xD0C5, 0xD0C5 }, +{ 0xD0C6, 0xD0C6, 0xD0C6 }, +{ 0xD0C7, 0xD0C7, 0xD0C7 }, +{ 0xD0C8, 0xD0C8, 0xD0C8 }, +{ 0xD0C9, 0xD0C9, 0xD0C9 }, +{ 0xD0CA, 0xD0CA, 0xD0CA }, +{ 0xD0CB, 0xD0CB, 0xD0CB }, +{ 0xD0CC, 0xD0CC, 0xD0CC }, +{ 0xD0CD, 0xD0CD, 0xD0CD }, +{ 0xD0CE, 0xD0CE, 0xD0CE }, +{ 0xD0CF, 0xD0CF, 0xD0CF }, +{ 0xD0D0, 0xD0D0, 0xD0D0 }, +{ 0xD0D1, 0xD0D1, 0xD0D1 }, +{ 0xD0D2, 0xD0D2, 0xD0D2 }, +{ 0xD0D3, 0xD0D3, 0xD0D3 }, +{ 0xD0D4, 0xD0D4, 0xD0D4 }, +{ 0xD0D5, 0xD0D5, 0xD0D5 }, +{ 0xD0D6, 0xD0D6, 0xD0D6 }, +{ 0xD0D7, 0xD0D7, 0xD0D7 }, +{ 0xD0D8, 0xD0D8, 0xD0D8 }, +{ 0xD0D9, 0xD0D9, 0xD0D9 }, +{ 0xD0DA, 0xD0DA, 0xD0DA }, +{ 0xD0DB, 0xD0DB, 0xD0DB }, +{ 0xD0DC, 0xD0DC, 0xD0DC }, +{ 0xD0DD, 0xD0DD, 0xD0DD }, +{ 0xD0DE, 0xD0DE, 0xD0DE }, +{ 0xD0DF, 0xD0DF, 0xD0DF }, +{ 0xD0E0, 0xD0E0, 0xD0E0 }, +{ 0xD0E1, 0xD0E1, 0xD0E1 }, +{ 0xD0E2, 0xD0E2, 0xD0E2 }, +{ 0xD0E3, 0xD0E3, 0xD0E3 }, +{ 0xD0E4, 0xD0E4, 0xD0E4 }, +{ 0xD0E5, 0xD0E5, 0xD0E5 }, +{ 0xD0E6, 0xD0E6, 0xD0E6 }, +{ 0xD0E7, 0xD0E7, 0xD0E7 }, +{ 0xD0E8, 0xD0E8, 0xD0E8 }, +{ 0xD0E9, 0xD0E9, 0xD0E9 }, +{ 0xD0EA, 0xD0EA, 0xD0EA }, +{ 0xD0EB, 0xD0EB, 0xD0EB }, +{ 0xD0EC, 0xD0EC, 0xD0EC }, +{ 0xD0ED, 0xD0ED, 0xD0ED }, +{ 0xD0EE, 0xD0EE, 0xD0EE }, +{ 0xD0EF, 0xD0EF, 0xD0EF }, +{ 0xD0F0, 0xD0F0, 0xD0F0 }, +{ 0xD0F1, 0xD0F1, 0xD0F1 }, +{ 0xD0F2, 0xD0F2, 0xD0F2 }, +{ 0xD0F3, 0xD0F3, 0xD0F3 }, +{ 0xD0F4, 0xD0F4, 0xD0F4 }, +{ 0xD0F5, 0xD0F5, 0xD0F5 }, +{ 0xD0F6, 0xD0F6, 0xD0F6 }, +{ 0xD0F7, 0xD0F7, 0xD0F7 }, +{ 0xD0F8, 0xD0F8, 0xD0F8 }, +{ 0xD0F9, 0xD0F9, 0xD0F9 }, +{ 0xD0FA, 0xD0FA, 0xD0FA }, +{ 0xD0FB, 0xD0FB, 0xD0FB }, +{ 0xD0FC, 0xD0FC, 0xD0FC }, +{ 0xD0FD, 0xD0FD, 0xD0FD }, +{ 0xD0FE, 0xD0FE, 0xD0FE }, +{ 0xD0FF, 0xD0FF, 0xD0FF }, +{ 0xD100, 0xD100, 0xD100 }, +{ 0xD101, 0xD101, 0xD101 }, +{ 0xD102, 0xD102, 0xD102 }, +{ 0xD103, 0xD103, 0xD103 }, +{ 0xD104, 0xD104, 0xD104 }, +{ 0xD105, 0xD105, 0xD105 }, +{ 0xD106, 0xD106, 0xD106 }, +{ 0xD107, 0xD107, 0xD107 }, +{ 0xD108, 0xD108, 0xD108 }, +{ 0xD109, 0xD109, 0xD109 }, +{ 0xD10A, 0xD10A, 0xD10A }, +{ 0xD10B, 0xD10B, 0xD10B }, +{ 0xD10C, 0xD10C, 0xD10C }, +{ 0xD10D, 0xD10D, 0xD10D }, +{ 0xD10E, 0xD10E, 0xD10E }, +{ 0xD10F, 0xD10F, 0xD10F }, +{ 0xD110, 0xD110, 0xD110 }, +{ 0xD111, 0xD111, 0xD111 }, +{ 0xD112, 0xD112, 0xD112 }, +{ 0xD113, 0xD113, 0xD113 }, +{ 0xD114, 0xD114, 0xD114 }, +{ 0xD115, 0xD115, 0xD115 }, +{ 0xD116, 0xD116, 0xD116 }, +{ 0xD117, 0xD117, 0xD117 }, +{ 0xD118, 0xD118, 0xD118 }, +{ 0xD119, 0xD119, 0xD119 }, +{ 0xD11A, 0xD11A, 0xD11A }, +{ 0xD11B, 0xD11B, 0xD11B }, +{ 0xD11C, 0xD11C, 0xD11C }, +{ 0xD11D, 0xD11D, 0xD11D }, +{ 0xD11E, 0xD11E, 0xD11E }, +{ 0xD11F, 0xD11F, 0xD11F }, +{ 0xD120, 0xD120, 0xD120 }, +{ 0xD121, 0xD121, 0xD121 }, +{ 0xD122, 0xD122, 0xD122 }, +{ 0xD123, 0xD123, 0xD123 }, +{ 0xD124, 0xD124, 0xD124 }, +{ 0xD125, 0xD125, 0xD125 }, +{ 0xD126, 0xD126, 0xD126 }, +{ 0xD127, 0xD127, 0xD127 }, +{ 0xD128, 0xD128, 0xD128 }, +{ 0xD129, 0xD129, 0xD129 }, +{ 0xD12A, 0xD12A, 0xD12A }, +{ 0xD12B, 0xD12B, 0xD12B }, +{ 0xD12C, 0xD12C, 0xD12C }, +{ 0xD12D, 0xD12D, 0xD12D }, +{ 0xD12E, 0xD12E, 0xD12E }, +{ 0xD12F, 0xD12F, 0xD12F }, +{ 0xD130, 0xD130, 0xD130 }, +{ 0xD131, 0xD131, 0xD131 }, +{ 0xD132, 0xD132, 0xD132 }, +{ 0xD133, 0xD133, 0xD133 }, +{ 0xD134, 0xD134, 0xD134 }, +{ 0xD135, 0xD135, 0xD135 }, +{ 0xD136, 0xD136, 0xD136 }, +{ 0xD137, 0xD137, 0xD137 }, +{ 0xD138, 0xD138, 0xD138 }, +{ 0xD139, 0xD139, 0xD139 }, +{ 0xD13A, 0xD13A, 0xD13A }, +{ 0xD13B, 0xD13B, 0xD13B }, +{ 0xD13C, 0xD13C, 0xD13C }, +{ 0xD13D, 0xD13D, 0xD13D }, +{ 0xD13E, 0xD13E, 0xD13E }, +{ 0xD13F, 0xD13F, 0xD13F }, +{ 0xD140, 0xD140, 0xD140 }, +{ 0xD141, 0xD141, 0xD141 }, +{ 0xD142, 0xD142, 0xD142 }, +{ 0xD143, 0xD143, 0xD143 }, +{ 0xD144, 0xD144, 0xD144 }, +{ 0xD145, 0xD145, 0xD145 }, +{ 0xD146, 0xD146, 0xD146 }, +{ 0xD147, 0xD147, 0xD147 }, +{ 0xD148, 0xD148, 0xD148 }, +{ 0xD149, 0xD149, 0xD149 }, +{ 0xD14A, 0xD14A, 0xD14A }, +{ 0xD14B, 0xD14B, 0xD14B }, +{ 0xD14C, 0xD14C, 0xD14C }, +{ 0xD14D, 0xD14D, 0xD14D }, +{ 0xD14E, 0xD14E, 0xD14E }, +{ 0xD14F, 0xD14F, 0xD14F }, +{ 0xD150, 0xD150, 0xD150 }, +{ 0xD151, 0xD151, 0xD151 }, +{ 0xD152, 0xD152, 0xD152 }, +{ 0xD153, 0xD153, 0xD153 }, +{ 0xD154, 0xD154, 0xD154 }, +{ 0xD155, 0xD155, 0xD155 }, +{ 0xD156, 0xD156, 0xD156 }, +{ 0xD157, 0xD157, 0xD157 }, +{ 0xD158, 0xD158, 0xD158 }, +{ 0xD159, 0xD159, 0xD159 }, +{ 0xD15A, 0xD15A, 0xD15A }, +{ 0xD15B, 0xD15B, 0xD15B }, +{ 0xD15C, 0xD15C, 0xD15C }, +{ 0xD15D, 0xD15D, 0xD15D }, +{ 0xD15E, 0xD15E, 0xD15E }, +{ 0xD15F, 0xD15F, 0xD15F }, +{ 0xD160, 0xD160, 0xD160 }, +{ 0xD161, 0xD161, 0xD161 }, +{ 0xD162, 0xD162, 0xD162 }, +{ 0xD163, 0xD163, 0xD163 }, +{ 0xD164, 0xD164, 0xD164 }, +{ 0xD165, 0xD165, 0xD165 }, +{ 0xD166, 0xD166, 0xD166 }, +{ 0xD167, 0xD167, 0xD167 }, +{ 0xD168, 0xD168, 0xD168 }, +{ 0xD169, 0xD169, 0xD169 }, +{ 0xD16A, 0xD16A, 0xD16A }, +{ 0xD16B, 0xD16B, 0xD16B }, +{ 0xD16C, 0xD16C, 0xD16C }, +{ 0xD16D, 0xD16D, 0xD16D }, +{ 0xD16E, 0xD16E, 0xD16E }, +{ 0xD16F, 0xD16F, 0xD16F }, +{ 0xD170, 0xD170, 0xD170 }, +{ 0xD171, 0xD171, 0xD171 }, +{ 0xD172, 0xD172, 0xD172 }, +{ 0xD173, 0xD173, 0xD173 }, +{ 0xD174, 0xD174, 0xD174 }, +{ 0xD175, 0xD175, 0xD175 }, +{ 0xD176, 0xD176, 0xD176 }, +{ 0xD177, 0xD177, 0xD177 }, +{ 0xD178, 0xD178, 0xD178 }, +{ 0xD179, 0xD179, 0xD179 }, +{ 0xD17A, 0xD17A, 0xD17A }, +{ 0xD17B, 0xD17B, 0xD17B }, +{ 0xD17C, 0xD17C, 0xD17C }, +{ 0xD17D, 0xD17D, 0xD17D }, +{ 0xD17E, 0xD17E, 0xD17E }, +{ 0xD17F, 0xD17F, 0xD17F }, +{ 0xD180, 0xD180, 0xD180 }, +{ 0xD181, 0xD181, 0xD181 }, +{ 0xD182, 0xD182, 0xD182 }, +{ 0xD183, 0xD183, 0xD183 }, +{ 0xD184, 0xD184, 0xD184 }, +{ 0xD185, 0xD185, 0xD185 }, +{ 0xD186, 0xD186, 0xD186 }, +{ 0xD187, 0xD187, 0xD187 }, +{ 0xD188, 0xD188, 0xD188 }, +{ 0xD189, 0xD189, 0xD189 }, +{ 0xD18A, 0xD18A, 0xD18A }, +{ 0xD18B, 0xD18B, 0xD18B }, +{ 0xD18C, 0xD18C, 0xD18C }, +{ 0xD18D, 0xD18D, 0xD18D }, +{ 0xD18E, 0xD18E, 0xD18E }, +{ 0xD18F, 0xD18F, 0xD18F }, +{ 0xD190, 0xD190, 0xD190 }, +{ 0xD191, 0xD191, 0xD191 }, +{ 0xD192, 0xD192, 0xD192 }, +{ 0xD193, 0xD193, 0xD193 }, +{ 0xD194, 0xD194, 0xD194 }, +{ 0xD195, 0xD195, 0xD195 }, +{ 0xD196, 0xD196, 0xD196 }, +{ 0xD197, 0xD197, 0xD197 }, +{ 0xD198, 0xD198, 0xD198 }, +{ 0xD199, 0xD199, 0xD199 }, +{ 0xD19A, 0xD19A, 0xD19A }, +{ 0xD19B, 0xD19B, 0xD19B }, +{ 0xD19C, 0xD19C, 0xD19C }, +{ 0xD19D, 0xD19D, 0xD19D }, +{ 0xD19E, 0xD19E, 0xD19E }, +{ 0xD19F, 0xD19F, 0xD19F }, +{ 0xD1A0, 0xD1A0, 0xD1A0 }, +{ 0xD1A1, 0xD1A1, 0xD1A1 }, +{ 0xD1A2, 0xD1A2, 0xD1A2 }, +{ 0xD1A3, 0xD1A3, 0xD1A3 }, +{ 0xD1A4, 0xD1A4, 0xD1A4 }, +{ 0xD1A5, 0xD1A5, 0xD1A5 }, +{ 0xD1A6, 0xD1A6, 0xD1A6 }, +{ 0xD1A7, 0xD1A7, 0xD1A7 }, +{ 0xD1A8, 0xD1A8, 0xD1A8 }, +{ 0xD1A9, 0xD1A9, 0xD1A9 }, +{ 0xD1AA, 0xD1AA, 0xD1AA }, +{ 0xD1AB, 0xD1AB, 0xD1AB }, +{ 0xD1AC, 0xD1AC, 0xD1AC }, +{ 0xD1AD, 0xD1AD, 0xD1AD }, +{ 0xD1AE, 0xD1AE, 0xD1AE }, +{ 0xD1AF, 0xD1AF, 0xD1AF }, +{ 0xD1B0, 0xD1B0, 0xD1B0 }, +{ 0xD1B1, 0xD1B1, 0xD1B1 }, +{ 0xD1B2, 0xD1B2, 0xD1B2 }, +{ 0xD1B3, 0xD1B3, 0xD1B3 }, +{ 0xD1B4, 0xD1B4, 0xD1B4 }, +{ 0xD1B5, 0xD1B5, 0xD1B5 }, +{ 0xD1B6, 0xD1B6, 0xD1B6 }, +{ 0xD1B7, 0xD1B7, 0xD1B7 }, +{ 0xD1B8, 0xD1B8, 0xD1B8 }, +{ 0xD1B9, 0xD1B9, 0xD1B9 }, +{ 0xD1BA, 0xD1BA, 0xD1BA }, +{ 0xD1BB, 0xD1BB, 0xD1BB }, +{ 0xD1BC, 0xD1BC, 0xD1BC }, +{ 0xD1BD, 0xD1BD, 0xD1BD }, +{ 0xD1BE, 0xD1BE, 0xD1BE }, +{ 0xD1BF, 0xD1BF, 0xD1BF }, +{ 0xD1C0, 0xD1C0, 0xD1C0 }, +{ 0xD1C1, 0xD1C1, 0xD1C1 }, +{ 0xD1C2, 0xD1C2, 0xD1C2 }, +{ 0xD1C3, 0xD1C3, 0xD1C3 }, +{ 0xD1C4, 0xD1C4, 0xD1C4 }, +{ 0xD1C5, 0xD1C5, 0xD1C5 }, +{ 0xD1C6, 0xD1C6, 0xD1C6 }, +{ 0xD1C7, 0xD1C7, 0xD1C7 }, +{ 0xD1C8, 0xD1C8, 0xD1C8 }, +{ 0xD1C9, 0xD1C9, 0xD1C9 }, +{ 0xD1CA, 0xD1CA, 0xD1CA }, +{ 0xD1CB, 0xD1CB, 0xD1CB }, +{ 0xD1CC, 0xD1CC, 0xD1CC }, +{ 0xD1CD, 0xD1CD, 0xD1CD }, +{ 0xD1CE, 0xD1CE, 0xD1CE }, +{ 0xD1CF, 0xD1CF, 0xD1CF }, +{ 0xD1D0, 0xD1D0, 0xD1D0 }, +{ 0xD1D1, 0xD1D1, 0xD1D1 }, +{ 0xD1D2, 0xD1D2, 0xD1D2 }, +{ 0xD1D3, 0xD1D3, 0xD1D3 }, +{ 0xD1D4, 0xD1D4, 0xD1D4 }, +{ 0xD1D5, 0xD1D5, 0xD1D5 }, +{ 0xD1D6, 0xD1D6, 0xD1D6 }, +{ 0xD1D7, 0xD1D7, 0xD1D7 }, +{ 0xD1D8, 0xD1D8, 0xD1D8 }, +{ 0xD1D9, 0xD1D9, 0xD1D9 }, +{ 0xD1DA, 0xD1DA, 0xD1DA }, +{ 0xD1DB, 0xD1DB, 0xD1DB }, +{ 0xD1DC, 0xD1DC, 0xD1DC }, +{ 0xD1DD, 0xD1DD, 0xD1DD }, +{ 0xD1DE, 0xD1DE, 0xD1DE }, +{ 0xD1DF, 0xD1DF, 0xD1DF }, +{ 0xD1E0, 0xD1E0, 0xD1E0 }, +{ 0xD1E1, 0xD1E1, 0xD1E1 }, +{ 0xD1E2, 0xD1E2, 0xD1E2 }, +{ 0xD1E3, 0xD1E3, 0xD1E3 }, +{ 0xD1E4, 0xD1E4, 0xD1E4 }, +{ 0xD1E5, 0xD1E5, 0xD1E5 }, +{ 0xD1E6, 0xD1E6, 0xD1E6 }, +{ 0xD1E7, 0xD1E7, 0xD1E7 }, +{ 0xD1E8, 0xD1E8, 0xD1E8 }, +{ 0xD1E9, 0xD1E9, 0xD1E9 }, +{ 0xD1EA, 0xD1EA, 0xD1EA }, +{ 0xD1EB, 0xD1EB, 0xD1EB }, +{ 0xD1EC, 0xD1EC, 0xD1EC }, +{ 0xD1ED, 0xD1ED, 0xD1ED }, +{ 0xD1EE, 0xD1EE, 0xD1EE }, +{ 0xD1EF, 0xD1EF, 0xD1EF }, +{ 0xD1F0, 0xD1F0, 0xD1F0 }, +{ 0xD1F1, 0xD1F1, 0xD1F1 }, +{ 0xD1F2, 0xD1F2, 0xD1F2 }, +{ 0xD1F3, 0xD1F3, 0xD1F3 }, +{ 0xD1F4, 0xD1F4, 0xD1F4 }, +{ 0xD1F5, 0xD1F5, 0xD1F5 }, +{ 0xD1F6, 0xD1F6, 0xD1F6 }, +{ 0xD1F7, 0xD1F7, 0xD1F7 }, +{ 0xD1F8, 0xD1F8, 0xD1F8 }, +{ 0xD1F9, 0xD1F9, 0xD1F9 }, +{ 0xD1FA, 0xD1FA, 0xD1FA }, +{ 0xD1FB, 0xD1FB, 0xD1FB }, +{ 0xD1FC, 0xD1FC, 0xD1FC }, +{ 0xD1FD, 0xD1FD, 0xD1FD }, +{ 0xD1FE, 0xD1FE, 0xD1FE }, +{ 0xD1FF, 0xD1FF, 0xD1FF }, +{ 0xD200, 0xD200, 0xD200 }, +{ 0xD201, 0xD201, 0xD201 }, +{ 0xD202, 0xD202, 0xD202 }, +{ 0xD203, 0xD203, 0xD203 }, +{ 0xD204, 0xD204, 0xD204 }, +{ 0xD205, 0xD205, 0xD205 }, +{ 0xD206, 0xD206, 0xD206 }, +{ 0xD207, 0xD207, 0xD207 }, +{ 0xD208, 0xD208, 0xD208 }, +{ 0xD209, 0xD209, 0xD209 }, +{ 0xD20A, 0xD20A, 0xD20A }, +{ 0xD20B, 0xD20B, 0xD20B }, +{ 0xD20C, 0xD20C, 0xD20C }, +{ 0xD20D, 0xD20D, 0xD20D }, +{ 0xD20E, 0xD20E, 0xD20E }, +{ 0xD20F, 0xD20F, 0xD20F }, +{ 0xD210, 0xD210, 0xD210 }, +{ 0xD211, 0xD211, 0xD211 }, +{ 0xD212, 0xD212, 0xD212 }, +{ 0xD213, 0xD213, 0xD213 }, +{ 0xD214, 0xD214, 0xD214 }, +{ 0xD215, 0xD215, 0xD215 }, +{ 0xD216, 0xD216, 0xD216 }, +{ 0xD217, 0xD217, 0xD217 }, +{ 0xD218, 0xD218, 0xD218 }, +{ 0xD219, 0xD219, 0xD219 }, +{ 0xD21A, 0xD21A, 0xD21A }, +{ 0xD21B, 0xD21B, 0xD21B }, +{ 0xD21C, 0xD21C, 0xD21C }, +{ 0xD21D, 0xD21D, 0xD21D }, +{ 0xD21E, 0xD21E, 0xD21E }, +{ 0xD21F, 0xD21F, 0xD21F }, +{ 0xD220, 0xD220, 0xD220 }, +{ 0xD221, 0xD221, 0xD221 }, +{ 0xD222, 0xD222, 0xD222 }, +{ 0xD223, 0xD223, 0xD223 }, +{ 0xD224, 0xD224, 0xD224 }, +{ 0xD225, 0xD225, 0xD225 }, +{ 0xD226, 0xD226, 0xD226 }, +{ 0xD227, 0xD227, 0xD227 }, +{ 0xD228, 0xD228, 0xD228 }, +{ 0xD229, 0xD229, 0xD229 }, +{ 0xD22A, 0xD22A, 0xD22A }, +{ 0xD22B, 0xD22B, 0xD22B }, +{ 0xD22C, 0xD22C, 0xD22C }, +{ 0xD22D, 0xD22D, 0xD22D }, +{ 0xD22E, 0xD22E, 0xD22E }, +{ 0xD22F, 0xD22F, 0xD22F }, +{ 0xD230, 0xD230, 0xD230 }, +{ 0xD231, 0xD231, 0xD231 }, +{ 0xD232, 0xD232, 0xD232 }, +{ 0xD233, 0xD233, 0xD233 }, +{ 0xD234, 0xD234, 0xD234 }, +{ 0xD235, 0xD235, 0xD235 }, +{ 0xD236, 0xD236, 0xD236 }, +{ 0xD237, 0xD237, 0xD237 }, +{ 0xD238, 0xD238, 0xD238 }, +{ 0xD239, 0xD239, 0xD239 }, +{ 0xD23A, 0xD23A, 0xD23A }, +{ 0xD23B, 0xD23B, 0xD23B }, +{ 0xD23C, 0xD23C, 0xD23C }, +{ 0xD23D, 0xD23D, 0xD23D }, +{ 0xD23E, 0xD23E, 0xD23E }, +{ 0xD23F, 0xD23F, 0xD23F }, +{ 0xD240, 0xD240, 0xD240 }, +{ 0xD241, 0xD241, 0xD241 }, +{ 0xD242, 0xD242, 0xD242 }, +{ 0xD243, 0xD243, 0xD243 }, +{ 0xD244, 0xD244, 0xD244 }, +{ 0xD245, 0xD245, 0xD245 }, +{ 0xD246, 0xD246, 0xD246 }, +{ 0xD247, 0xD247, 0xD247 }, +{ 0xD248, 0xD248, 0xD248 }, +{ 0xD249, 0xD249, 0xD249 }, +{ 0xD24A, 0xD24A, 0xD24A }, +{ 0xD24B, 0xD24B, 0xD24B }, +{ 0xD24C, 0xD24C, 0xD24C }, +{ 0xD24D, 0xD24D, 0xD24D }, +{ 0xD24E, 0xD24E, 0xD24E }, +{ 0xD24F, 0xD24F, 0xD24F }, +{ 0xD250, 0xD250, 0xD250 }, +{ 0xD251, 0xD251, 0xD251 }, +{ 0xD252, 0xD252, 0xD252 }, +{ 0xD253, 0xD253, 0xD253 }, +{ 0xD254, 0xD254, 0xD254 }, +{ 0xD255, 0xD255, 0xD255 }, +{ 0xD256, 0xD256, 0xD256 }, +{ 0xD257, 0xD257, 0xD257 }, +{ 0xD258, 0xD258, 0xD258 }, +{ 0xD259, 0xD259, 0xD259 }, +{ 0xD25A, 0xD25A, 0xD25A }, +{ 0xD25B, 0xD25B, 0xD25B }, +{ 0xD25C, 0xD25C, 0xD25C }, +{ 0xD25D, 0xD25D, 0xD25D }, +{ 0xD25E, 0xD25E, 0xD25E }, +{ 0xD25F, 0xD25F, 0xD25F }, +{ 0xD260, 0xD260, 0xD260 }, +{ 0xD261, 0xD261, 0xD261 }, +{ 0xD262, 0xD262, 0xD262 }, +{ 0xD263, 0xD263, 0xD263 }, +{ 0xD264, 0xD264, 0xD264 }, +{ 0xD265, 0xD265, 0xD265 }, +{ 0xD266, 0xD266, 0xD266 }, +{ 0xD267, 0xD267, 0xD267 }, +{ 0xD268, 0xD268, 0xD268 }, +{ 0xD269, 0xD269, 0xD269 }, +{ 0xD26A, 0xD26A, 0xD26A }, +{ 0xD26B, 0xD26B, 0xD26B }, +{ 0xD26C, 0xD26C, 0xD26C }, +{ 0xD26D, 0xD26D, 0xD26D }, +{ 0xD26E, 0xD26E, 0xD26E }, +{ 0xD26F, 0xD26F, 0xD26F }, +{ 0xD270, 0xD270, 0xD270 }, +{ 0xD271, 0xD271, 0xD271 }, +{ 0xD272, 0xD272, 0xD272 }, +{ 0xD273, 0xD273, 0xD273 }, +{ 0xD274, 0xD274, 0xD274 }, +{ 0xD275, 0xD275, 0xD275 }, +{ 0xD276, 0xD276, 0xD276 }, +{ 0xD277, 0xD277, 0xD277 }, +{ 0xD278, 0xD278, 0xD278 }, +{ 0xD279, 0xD279, 0xD279 }, +{ 0xD27A, 0xD27A, 0xD27A }, +{ 0xD27B, 0xD27B, 0xD27B }, +{ 0xD27C, 0xD27C, 0xD27C }, +{ 0xD27D, 0xD27D, 0xD27D }, +{ 0xD27E, 0xD27E, 0xD27E }, +{ 0xD27F, 0xD27F, 0xD27F }, +{ 0xD280, 0xD280, 0xD280 }, +{ 0xD281, 0xD281, 0xD281 }, +{ 0xD282, 0xD282, 0xD282 }, +{ 0xD283, 0xD283, 0xD283 }, +{ 0xD284, 0xD284, 0xD284 }, +{ 0xD285, 0xD285, 0xD285 }, +{ 0xD286, 0xD286, 0xD286 }, +{ 0xD287, 0xD287, 0xD287 }, +{ 0xD288, 0xD288, 0xD288 }, +{ 0xD289, 0xD289, 0xD289 }, +{ 0xD28A, 0xD28A, 0xD28A }, +{ 0xD28B, 0xD28B, 0xD28B }, +{ 0xD28C, 0xD28C, 0xD28C }, +{ 0xD28D, 0xD28D, 0xD28D }, +{ 0xD28E, 0xD28E, 0xD28E }, +{ 0xD28F, 0xD28F, 0xD28F }, +{ 0xD290, 0xD290, 0xD290 }, +{ 0xD291, 0xD291, 0xD291 }, +{ 0xD292, 0xD292, 0xD292 }, +{ 0xD293, 0xD293, 0xD293 }, +{ 0xD294, 0xD294, 0xD294 }, +{ 0xD295, 0xD295, 0xD295 }, +{ 0xD296, 0xD296, 0xD296 }, +{ 0xD297, 0xD297, 0xD297 }, +{ 0xD298, 0xD298, 0xD298 }, +{ 0xD299, 0xD299, 0xD299 }, +{ 0xD29A, 0xD29A, 0xD29A }, +{ 0xD29B, 0xD29B, 0xD29B }, +{ 0xD29C, 0xD29C, 0xD29C }, +{ 0xD29D, 0xD29D, 0xD29D }, +{ 0xD29E, 0xD29E, 0xD29E }, +{ 0xD29F, 0xD29F, 0xD29F }, +{ 0xD2A0, 0xD2A0, 0xD2A0 }, +{ 0xD2A1, 0xD2A1, 0xD2A1 }, +{ 0xD2A2, 0xD2A2, 0xD2A2 }, +{ 0xD2A3, 0xD2A3, 0xD2A3 }, +{ 0xD2A4, 0xD2A4, 0xD2A4 }, +{ 0xD2A5, 0xD2A5, 0xD2A5 }, +{ 0xD2A6, 0xD2A6, 0xD2A6 }, +{ 0xD2A7, 0xD2A7, 0xD2A7 }, +{ 0xD2A8, 0xD2A8, 0xD2A8 }, +{ 0xD2A9, 0xD2A9, 0xD2A9 }, +{ 0xD2AA, 0xD2AA, 0xD2AA }, +{ 0xD2AB, 0xD2AB, 0xD2AB }, +{ 0xD2AC, 0xD2AC, 0xD2AC }, +{ 0xD2AD, 0xD2AD, 0xD2AD }, +{ 0xD2AE, 0xD2AE, 0xD2AE }, +{ 0xD2AF, 0xD2AF, 0xD2AF }, +{ 0xD2B0, 0xD2B0, 0xD2B0 }, +{ 0xD2B1, 0xD2B1, 0xD2B1 }, +{ 0xD2B2, 0xD2B2, 0xD2B2 }, +{ 0xD2B3, 0xD2B3, 0xD2B3 }, +{ 0xD2B4, 0xD2B4, 0xD2B4 }, +{ 0xD2B5, 0xD2B5, 0xD2B5 }, +{ 0xD2B6, 0xD2B6, 0xD2B6 }, +{ 0xD2B7, 0xD2B7, 0xD2B7 }, +{ 0xD2B8, 0xD2B8, 0xD2B8 }, +{ 0xD2B9, 0xD2B9, 0xD2B9 }, +{ 0xD2BA, 0xD2BA, 0xD2BA }, +{ 0xD2BB, 0xD2BB, 0xD2BB }, +{ 0xD2BC, 0xD2BC, 0xD2BC }, +{ 0xD2BD, 0xD2BD, 0xD2BD }, +{ 0xD2BE, 0xD2BE, 0xD2BE }, +{ 0xD2BF, 0xD2BF, 0xD2BF }, +{ 0xD2C0, 0xD2C0, 0xD2C0 }, +{ 0xD2C1, 0xD2C1, 0xD2C1 }, +{ 0xD2C2, 0xD2C2, 0xD2C2 }, +{ 0xD2C3, 0xD2C3, 0xD2C3 }, +{ 0xD2C4, 0xD2C4, 0xD2C4 }, +{ 0xD2C5, 0xD2C5, 0xD2C5 }, +{ 0xD2C6, 0xD2C6, 0xD2C6 }, +{ 0xD2C7, 0xD2C7, 0xD2C7 }, +{ 0xD2C8, 0xD2C8, 0xD2C8 }, +{ 0xD2C9, 0xD2C9, 0xD2C9 }, +{ 0xD2CA, 0xD2CA, 0xD2CA }, +{ 0xD2CB, 0xD2CB, 0xD2CB }, +{ 0xD2CC, 0xD2CC, 0xD2CC }, +{ 0xD2CD, 0xD2CD, 0xD2CD }, +{ 0xD2CE, 0xD2CE, 0xD2CE }, +{ 0xD2CF, 0xD2CF, 0xD2CF }, +{ 0xD2D0, 0xD2D0, 0xD2D0 }, +{ 0xD2D1, 0xD2D1, 0xD2D1 }, +{ 0xD2D2, 0xD2D2, 0xD2D2 }, +{ 0xD2D3, 0xD2D3, 0xD2D3 }, +{ 0xD2D4, 0xD2D4, 0xD2D4 }, +{ 0xD2D5, 0xD2D5, 0xD2D5 }, +{ 0xD2D6, 0xD2D6, 0xD2D6 }, +{ 0xD2D7, 0xD2D7, 0xD2D7 }, +{ 0xD2D8, 0xD2D8, 0xD2D8 }, +{ 0xD2D9, 0xD2D9, 0xD2D9 }, +{ 0xD2DA, 0xD2DA, 0xD2DA }, +{ 0xD2DB, 0xD2DB, 0xD2DB }, +{ 0xD2DC, 0xD2DC, 0xD2DC }, +{ 0xD2DD, 0xD2DD, 0xD2DD }, +{ 0xD2DE, 0xD2DE, 0xD2DE }, +{ 0xD2DF, 0xD2DF, 0xD2DF }, +{ 0xD2E0, 0xD2E0, 0xD2E0 }, +{ 0xD2E1, 0xD2E1, 0xD2E1 }, +{ 0xD2E2, 0xD2E2, 0xD2E2 }, +{ 0xD2E3, 0xD2E3, 0xD2E3 }, +{ 0xD2E4, 0xD2E4, 0xD2E4 }, +{ 0xD2E5, 0xD2E5, 0xD2E5 }, +{ 0xD2E6, 0xD2E6, 0xD2E6 }, +{ 0xD2E7, 0xD2E7, 0xD2E7 }, +{ 0xD2E8, 0xD2E8, 0xD2E8 }, +{ 0xD2E9, 0xD2E9, 0xD2E9 }, +{ 0xD2EA, 0xD2EA, 0xD2EA }, +{ 0xD2EB, 0xD2EB, 0xD2EB }, +{ 0xD2EC, 0xD2EC, 0xD2EC }, +{ 0xD2ED, 0xD2ED, 0xD2ED }, +{ 0xD2EE, 0xD2EE, 0xD2EE }, +{ 0xD2EF, 0xD2EF, 0xD2EF }, +{ 0xD2F0, 0xD2F0, 0xD2F0 }, +{ 0xD2F1, 0xD2F1, 0xD2F1 }, +{ 0xD2F2, 0xD2F2, 0xD2F2 }, +{ 0xD2F3, 0xD2F3, 0xD2F3 }, +{ 0xD2F4, 0xD2F4, 0xD2F4 }, +{ 0xD2F5, 0xD2F5, 0xD2F5 }, +{ 0xD2F6, 0xD2F6, 0xD2F6 }, +{ 0xD2F7, 0xD2F7, 0xD2F7 }, +{ 0xD2F8, 0xD2F8, 0xD2F8 }, +{ 0xD2F9, 0xD2F9, 0xD2F9 }, +{ 0xD2FA, 0xD2FA, 0xD2FA }, +{ 0xD2FB, 0xD2FB, 0xD2FB }, +{ 0xD2FC, 0xD2FC, 0xD2FC }, +{ 0xD2FD, 0xD2FD, 0xD2FD }, +{ 0xD2FE, 0xD2FE, 0xD2FE }, +{ 0xD2FF, 0xD2FF, 0xD2FF }, +{ 0xD300, 0xD300, 0xD300 }, +{ 0xD301, 0xD301, 0xD301 }, +{ 0xD302, 0xD302, 0xD302 }, +{ 0xD303, 0xD303, 0xD303 }, +{ 0xD304, 0xD304, 0xD304 }, +{ 0xD305, 0xD305, 0xD305 }, +{ 0xD306, 0xD306, 0xD306 }, +{ 0xD307, 0xD307, 0xD307 }, +{ 0xD308, 0xD308, 0xD308 }, +{ 0xD309, 0xD309, 0xD309 }, +{ 0xD30A, 0xD30A, 0xD30A }, +{ 0xD30B, 0xD30B, 0xD30B }, +{ 0xD30C, 0xD30C, 0xD30C }, +{ 0xD30D, 0xD30D, 0xD30D }, +{ 0xD30E, 0xD30E, 0xD30E }, +{ 0xD30F, 0xD30F, 0xD30F }, +{ 0xD310, 0xD310, 0xD310 }, +{ 0xD311, 0xD311, 0xD311 }, +{ 0xD312, 0xD312, 0xD312 }, +{ 0xD313, 0xD313, 0xD313 }, +{ 0xD314, 0xD314, 0xD314 }, +{ 0xD315, 0xD315, 0xD315 }, +{ 0xD316, 0xD316, 0xD316 }, +{ 0xD317, 0xD317, 0xD317 }, +{ 0xD318, 0xD318, 0xD318 }, +{ 0xD319, 0xD319, 0xD319 }, +{ 0xD31A, 0xD31A, 0xD31A }, +{ 0xD31B, 0xD31B, 0xD31B }, +{ 0xD31C, 0xD31C, 0xD31C }, +{ 0xD31D, 0xD31D, 0xD31D }, +{ 0xD31E, 0xD31E, 0xD31E }, +{ 0xD31F, 0xD31F, 0xD31F }, +{ 0xD320, 0xD320, 0xD320 }, +{ 0xD321, 0xD321, 0xD321 }, +{ 0xD322, 0xD322, 0xD322 }, +{ 0xD323, 0xD323, 0xD323 }, +{ 0xD324, 0xD324, 0xD324 }, +{ 0xD325, 0xD325, 0xD325 }, +{ 0xD326, 0xD326, 0xD326 }, +{ 0xD327, 0xD327, 0xD327 }, +{ 0xD328, 0xD328, 0xD328 }, +{ 0xD329, 0xD329, 0xD329 }, +{ 0xD32A, 0xD32A, 0xD32A }, +{ 0xD32B, 0xD32B, 0xD32B }, +{ 0xD32C, 0xD32C, 0xD32C }, +{ 0xD32D, 0xD32D, 0xD32D }, +{ 0xD32E, 0xD32E, 0xD32E }, +{ 0xD32F, 0xD32F, 0xD32F }, +{ 0xD330, 0xD330, 0xD330 }, +{ 0xD331, 0xD331, 0xD331 }, +{ 0xD332, 0xD332, 0xD332 }, +{ 0xD333, 0xD333, 0xD333 }, +{ 0xD334, 0xD334, 0xD334 }, +{ 0xD335, 0xD335, 0xD335 }, +{ 0xD336, 0xD336, 0xD336 }, +{ 0xD337, 0xD337, 0xD337 }, +{ 0xD338, 0xD338, 0xD338 }, +{ 0xD339, 0xD339, 0xD339 }, +{ 0xD33A, 0xD33A, 0xD33A }, +{ 0xD33B, 0xD33B, 0xD33B }, +{ 0xD33C, 0xD33C, 0xD33C }, +{ 0xD33D, 0xD33D, 0xD33D }, +{ 0xD33E, 0xD33E, 0xD33E }, +{ 0xD33F, 0xD33F, 0xD33F }, +{ 0xD340, 0xD340, 0xD340 }, +{ 0xD341, 0xD341, 0xD341 }, +{ 0xD342, 0xD342, 0xD342 }, +{ 0xD343, 0xD343, 0xD343 }, +{ 0xD344, 0xD344, 0xD344 }, +{ 0xD345, 0xD345, 0xD345 }, +{ 0xD346, 0xD346, 0xD346 }, +{ 0xD347, 0xD347, 0xD347 }, +{ 0xD348, 0xD348, 0xD348 }, +{ 0xD349, 0xD349, 0xD349 }, +{ 0xD34A, 0xD34A, 0xD34A }, +{ 0xD34B, 0xD34B, 0xD34B }, +{ 0xD34C, 0xD34C, 0xD34C }, +{ 0xD34D, 0xD34D, 0xD34D }, +{ 0xD34E, 0xD34E, 0xD34E }, +{ 0xD34F, 0xD34F, 0xD34F }, +{ 0xD350, 0xD350, 0xD350 }, +{ 0xD351, 0xD351, 0xD351 }, +{ 0xD352, 0xD352, 0xD352 }, +{ 0xD353, 0xD353, 0xD353 }, +{ 0xD354, 0xD354, 0xD354 }, +{ 0xD355, 0xD355, 0xD355 }, +{ 0xD356, 0xD356, 0xD356 }, +{ 0xD357, 0xD357, 0xD357 }, +{ 0xD358, 0xD358, 0xD358 }, +{ 0xD359, 0xD359, 0xD359 }, +{ 0xD35A, 0xD35A, 0xD35A }, +{ 0xD35B, 0xD35B, 0xD35B }, +{ 0xD35C, 0xD35C, 0xD35C }, +{ 0xD35D, 0xD35D, 0xD35D }, +{ 0xD35E, 0xD35E, 0xD35E }, +{ 0xD35F, 0xD35F, 0xD35F }, +{ 0xD360, 0xD360, 0xD360 }, +{ 0xD361, 0xD361, 0xD361 }, +{ 0xD362, 0xD362, 0xD362 }, +{ 0xD363, 0xD363, 0xD363 }, +{ 0xD364, 0xD364, 0xD364 }, +{ 0xD365, 0xD365, 0xD365 }, +{ 0xD366, 0xD366, 0xD366 }, +{ 0xD367, 0xD367, 0xD367 }, +{ 0xD368, 0xD368, 0xD368 }, +{ 0xD369, 0xD369, 0xD369 }, +{ 0xD36A, 0xD36A, 0xD36A }, +{ 0xD36B, 0xD36B, 0xD36B }, +{ 0xD36C, 0xD36C, 0xD36C }, +{ 0xD36D, 0xD36D, 0xD36D }, +{ 0xD36E, 0xD36E, 0xD36E }, +{ 0xD36F, 0xD36F, 0xD36F }, +{ 0xD370, 0xD370, 0xD370 }, +{ 0xD371, 0xD371, 0xD371 }, +{ 0xD372, 0xD372, 0xD372 }, +{ 0xD373, 0xD373, 0xD373 }, +{ 0xD374, 0xD374, 0xD374 }, +{ 0xD375, 0xD375, 0xD375 }, +{ 0xD376, 0xD376, 0xD376 }, +{ 0xD377, 0xD377, 0xD377 }, +{ 0xD378, 0xD378, 0xD378 }, +{ 0xD379, 0xD379, 0xD379 }, +{ 0xD37A, 0xD37A, 0xD37A }, +{ 0xD37B, 0xD37B, 0xD37B }, +{ 0xD37C, 0xD37C, 0xD37C }, +{ 0xD37D, 0xD37D, 0xD37D }, +{ 0xD37E, 0xD37E, 0xD37E }, +{ 0xD37F, 0xD37F, 0xD37F }, +{ 0xD380, 0xD380, 0xD380 }, +{ 0xD381, 0xD381, 0xD381 }, +{ 0xD382, 0xD382, 0xD382 }, +{ 0xD383, 0xD383, 0xD383 }, +{ 0xD384, 0xD384, 0xD384 }, +{ 0xD385, 0xD385, 0xD385 }, +{ 0xD386, 0xD386, 0xD386 }, +{ 0xD387, 0xD387, 0xD387 }, +{ 0xD388, 0xD388, 0xD388 }, +{ 0xD389, 0xD389, 0xD389 }, +{ 0xD38A, 0xD38A, 0xD38A }, +{ 0xD38B, 0xD38B, 0xD38B }, +{ 0xD38C, 0xD38C, 0xD38C }, +{ 0xD38D, 0xD38D, 0xD38D }, +{ 0xD38E, 0xD38E, 0xD38E }, +{ 0xD38F, 0xD38F, 0xD38F }, +{ 0xD390, 0xD390, 0xD390 }, +{ 0xD391, 0xD391, 0xD391 }, +{ 0xD392, 0xD392, 0xD392 }, +{ 0xD393, 0xD393, 0xD393 }, +{ 0xD394, 0xD394, 0xD394 }, +{ 0xD395, 0xD395, 0xD395 }, +{ 0xD396, 0xD396, 0xD396 }, +{ 0xD397, 0xD397, 0xD397 }, +{ 0xD398, 0xD398, 0xD398 }, +{ 0xD399, 0xD399, 0xD399 }, +{ 0xD39A, 0xD39A, 0xD39A }, +{ 0xD39B, 0xD39B, 0xD39B }, +{ 0xD39C, 0xD39C, 0xD39C }, +{ 0xD39D, 0xD39D, 0xD39D }, +{ 0xD39E, 0xD39E, 0xD39E }, +{ 0xD39F, 0xD39F, 0xD39F }, +{ 0xD3A0, 0xD3A0, 0xD3A0 }, +{ 0xD3A1, 0xD3A1, 0xD3A1 }, +{ 0xD3A2, 0xD3A2, 0xD3A2 }, +{ 0xD3A3, 0xD3A3, 0xD3A3 }, +{ 0xD3A4, 0xD3A4, 0xD3A4 }, +{ 0xD3A5, 0xD3A5, 0xD3A5 }, +{ 0xD3A6, 0xD3A6, 0xD3A6 }, +{ 0xD3A7, 0xD3A7, 0xD3A7 }, +{ 0xD3A8, 0xD3A8, 0xD3A8 }, +{ 0xD3A9, 0xD3A9, 0xD3A9 }, +{ 0xD3AA, 0xD3AA, 0xD3AA }, +{ 0xD3AB, 0xD3AB, 0xD3AB }, +{ 0xD3AC, 0xD3AC, 0xD3AC }, +{ 0xD3AD, 0xD3AD, 0xD3AD }, +{ 0xD3AE, 0xD3AE, 0xD3AE }, +{ 0xD3AF, 0xD3AF, 0xD3AF }, +{ 0xD3B0, 0xD3B0, 0xD3B0 }, +{ 0xD3B1, 0xD3B1, 0xD3B1 }, +{ 0xD3B2, 0xD3B2, 0xD3B2 }, +{ 0xD3B3, 0xD3B3, 0xD3B3 }, +{ 0xD3B4, 0xD3B4, 0xD3B4 }, +{ 0xD3B5, 0xD3B5, 0xD3B5 }, +{ 0xD3B6, 0xD3B6, 0xD3B6 }, +{ 0xD3B7, 0xD3B7, 0xD3B7 }, +{ 0xD3B8, 0xD3B8, 0xD3B8 }, +{ 0xD3B9, 0xD3B9, 0xD3B9 }, +{ 0xD3BA, 0xD3BA, 0xD3BA }, +{ 0xD3BB, 0xD3BB, 0xD3BB }, +{ 0xD3BC, 0xD3BC, 0xD3BC }, +{ 0xD3BD, 0xD3BD, 0xD3BD }, +{ 0xD3BE, 0xD3BE, 0xD3BE }, +{ 0xD3BF, 0xD3BF, 0xD3BF }, +{ 0xD3C0, 0xD3C0, 0xD3C0 }, +{ 0xD3C1, 0xD3C1, 0xD3C1 }, +{ 0xD3C2, 0xD3C2, 0xD3C2 }, +{ 0xD3C3, 0xD3C3, 0xD3C3 }, +{ 0xD3C4, 0xD3C4, 0xD3C4 }, +{ 0xD3C5, 0xD3C5, 0xD3C5 }, +{ 0xD3C6, 0xD3C6, 0xD3C6 }, +{ 0xD3C7, 0xD3C7, 0xD3C7 }, +{ 0xD3C8, 0xD3C8, 0xD3C8 }, +{ 0xD3C9, 0xD3C9, 0xD3C9 }, +{ 0xD3CA, 0xD3CA, 0xD3CA }, +{ 0xD3CB, 0xD3CB, 0xD3CB }, +{ 0xD3CC, 0xD3CC, 0xD3CC }, +{ 0xD3CD, 0xD3CD, 0xD3CD }, +{ 0xD3CE, 0xD3CE, 0xD3CE }, +{ 0xD3CF, 0xD3CF, 0xD3CF }, +{ 0xD3D0, 0xD3D0, 0xD3D0 }, +{ 0xD3D1, 0xD3D1, 0xD3D1 }, +{ 0xD3D2, 0xD3D2, 0xD3D2 }, +{ 0xD3D3, 0xD3D3, 0xD3D3 }, +{ 0xD3D4, 0xD3D4, 0xD3D4 }, +{ 0xD3D5, 0xD3D5, 0xD3D5 }, +{ 0xD3D6, 0xD3D6, 0xD3D6 }, +{ 0xD3D7, 0xD3D7, 0xD3D7 }, +{ 0xD3D8, 0xD3D8, 0xD3D8 }, +{ 0xD3D9, 0xD3D9, 0xD3D9 }, +{ 0xD3DA, 0xD3DA, 0xD3DA }, +{ 0xD3DB, 0xD3DB, 0xD3DB }, +{ 0xD3DC, 0xD3DC, 0xD3DC }, +{ 0xD3DD, 0xD3DD, 0xD3DD }, +{ 0xD3DE, 0xD3DE, 0xD3DE }, +{ 0xD3DF, 0xD3DF, 0xD3DF }, +{ 0xD3E0, 0xD3E0, 0xD3E0 }, +{ 0xD3E1, 0xD3E1, 0xD3E1 }, +{ 0xD3E2, 0xD3E2, 0xD3E2 }, +{ 0xD3E3, 0xD3E3, 0xD3E3 }, +{ 0xD3E4, 0xD3E4, 0xD3E4 }, +{ 0xD3E5, 0xD3E5, 0xD3E5 }, +{ 0xD3E6, 0xD3E6, 0xD3E6 }, +{ 0xD3E7, 0xD3E7, 0xD3E7 }, +{ 0xD3E8, 0xD3E8, 0xD3E8 }, +{ 0xD3E9, 0xD3E9, 0xD3E9 }, +{ 0xD3EA, 0xD3EA, 0xD3EA }, +{ 0xD3EB, 0xD3EB, 0xD3EB }, +{ 0xD3EC, 0xD3EC, 0xD3EC }, +{ 0xD3ED, 0xD3ED, 0xD3ED }, +{ 0xD3EE, 0xD3EE, 0xD3EE }, +{ 0xD3EF, 0xD3EF, 0xD3EF }, +{ 0xD3F0, 0xD3F0, 0xD3F0 }, +{ 0xD3F1, 0xD3F1, 0xD3F1 }, +{ 0xD3F2, 0xD3F2, 0xD3F2 }, +{ 0xD3F3, 0xD3F3, 0xD3F3 }, +{ 0xD3F4, 0xD3F4, 0xD3F4 }, +{ 0xD3F5, 0xD3F5, 0xD3F5 }, +{ 0xD3F6, 0xD3F6, 0xD3F6 }, +{ 0xD3F7, 0xD3F7, 0xD3F7 }, +{ 0xD3F8, 0xD3F8, 0xD3F8 }, +{ 0xD3F9, 0xD3F9, 0xD3F9 }, +{ 0xD3FA, 0xD3FA, 0xD3FA }, +{ 0xD3FB, 0xD3FB, 0xD3FB }, +{ 0xD3FC, 0xD3FC, 0xD3FC }, +{ 0xD3FD, 0xD3FD, 0xD3FD }, +{ 0xD3FE, 0xD3FE, 0xD3FE }, +{ 0xD3FF, 0xD3FF, 0xD3FF }, +{ 0xD400, 0xD400, 0xD400 }, +{ 0xD401, 0xD401, 0xD401 }, +{ 0xD402, 0xD402, 0xD402 }, +{ 0xD403, 0xD403, 0xD403 }, +{ 0xD404, 0xD404, 0xD404 }, +{ 0xD405, 0xD405, 0xD405 }, +{ 0xD406, 0xD406, 0xD406 }, +{ 0xD407, 0xD407, 0xD407 }, +{ 0xD408, 0xD408, 0xD408 }, +{ 0xD409, 0xD409, 0xD409 }, +{ 0xD40A, 0xD40A, 0xD40A }, +{ 0xD40B, 0xD40B, 0xD40B }, +{ 0xD40C, 0xD40C, 0xD40C }, +{ 0xD40D, 0xD40D, 0xD40D }, +{ 0xD40E, 0xD40E, 0xD40E }, +{ 0xD40F, 0xD40F, 0xD40F }, +{ 0xD410, 0xD410, 0xD410 }, +{ 0xD411, 0xD411, 0xD411 }, +{ 0xD412, 0xD412, 0xD412 }, +{ 0xD413, 0xD413, 0xD413 }, +{ 0xD414, 0xD414, 0xD414 }, +{ 0xD415, 0xD415, 0xD415 }, +{ 0xD416, 0xD416, 0xD416 }, +{ 0xD417, 0xD417, 0xD417 }, +{ 0xD418, 0xD418, 0xD418 }, +{ 0xD419, 0xD419, 0xD419 }, +{ 0xD41A, 0xD41A, 0xD41A }, +{ 0xD41B, 0xD41B, 0xD41B }, +{ 0xD41C, 0xD41C, 0xD41C }, +{ 0xD41D, 0xD41D, 0xD41D }, +{ 0xD41E, 0xD41E, 0xD41E }, +{ 0xD41F, 0xD41F, 0xD41F }, +{ 0xD420, 0xD420, 0xD420 }, +{ 0xD421, 0xD421, 0xD421 }, +{ 0xD422, 0xD422, 0xD422 }, +{ 0xD423, 0xD423, 0xD423 }, +{ 0xD424, 0xD424, 0xD424 }, +{ 0xD425, 0xD425, 0xD425 }, +{ 0xD426, 0xD426, 0xD426 }, +{ 0xD427, 0xD427, 0xD427 }, +{ 0xD428, 0xD428, 0xD428 }, +{ 0xD429, 0xD429, 0xD429 }, +{ 0xD42A, 0xD42A, 0xD42A }, +{ 0xD42B, 0xD42B, 0xD42B }, +{ 0xD42C, 0xD42C, 0xD42C }, +{ 0xD42D, 0xD42D, 0xD42D }, +{ 0xD42E, 0xD42E, 0xD42E }, +{ 0xD42F, 0xD42F, 0xD42F }, +{ 0xD430, 0xD430, 0xD430 }, +{ 0xD431, 0xD431, 0xD431 }, +{ 0xD432, 0xD432, 0xD432 }, +{ 0xD433, 0xD433, 0xD433 }, +{ 0xD434, 0xD434, 0xD434 }, +{ 0xD435, 0xD435, 0xD435 }, +{ 0xD436, 0xD436, 0xD436 }, +{ 0xD437, 0xD437, 0xD437 }, +{ 0xD438, 0xD438, 0xD438 }, +{ 0xD439, 0xD439, 0xD439 }, +{ 0xD43A, 0xD43A, 0xD43A }, +{ 0xD43B, 0xD43B, 0xD43B }, +{ 0xD43C, 0xD43C, 0xD43C }, +{ 0xD43D, 0xD43D, 0xD43D }, +{ 0xD43E, 0xD43E, 0xD43E }, +{ 0xD43F, 0xD43F, 0xD43F }, +{ 0xD440, 0xD440, 0xD440 }, +{ 0xD441, 0xD441, 0xD441 }, +{ 0xD442, 0xD442, 0xD442 }, +{ 0xD443, 0xD443, 0xD443 }, +{ 0xD444, 0xD444, 0xD444 }, +{ 0xD445, 0xD445, 0xD445 }, +{ 0xD446, 0xD446, 0xD446 }, +{ 0xD447, 0xD447, 0xD447 }, +{ 0xD448, 0xD448, 0xD448 }, +{ 0xD449, 0xD449, 0xD449 }, +{ 0xD44A, 0xD44A, 0xD44A }, +{ 0xD44B, 0xD44B, 0xD44B }, +{ 0xD44C, 0xD44C, 0xD44C }, +{ 0xD44D, 0xD44D, 0xD44D }, +{ 0xD44E, 0xD44E, 0xD44E }, +{ 0xD44F, 0xD44F, 0xD44F }, +{ 0xD450, 0xD450, 0xD450 }, +{ 0xD451, 0xD451, 0xD451 }, +{ 0xD452, 0xD452, 0xD452 }, +{ 0xD453, 0xD453, 0xD453 }, +{ 0xD454, 0xD454, 0xD454 }, +{ 0xD455, 0xD455, 0xD455 }, +{ 0xD456, 0xD456, 0xD456 }, +{ 0xD457, 0xD457, 0xD457 }, +{ 0xD458, 0xD458, 0xD458 }, +{ 0xD459, 0xD459, 0xD459 }, +{ 0xD45A, 0xD45A, 0xD45A }, +{ 0xD45B, 0xD45B, 0xD45B }, +{ 0xD45C, 0xD45C, 0xD45C }, +{ 0xD45D, 0xD45D, 0xD45D }, +{ 0xD45E, 0xD45E, 0xD45E }, +{ 0xD45F, 0xD45F, 0xD45F }, +{ 0xD460, 0xD460, 0xD460 }, +{ 0xD461, 0xD461, 0xD461 }, +{ 0xD462, 0xD462, 0xD462 }, +{ 0xD463, 0xD463, 0xD463 }, +{ 0xD464, 0xD464, 0xD464 }, +{ 0xD465, 0xD465, 0xD465 }, +{ 0xD466, 0xD466, 0xD466 }, +{ 0xD467, 0xD467, 0xD467 }, +{ 0xD468, 0xD468, 0xD468 }, +{ 0xD469, 0xD469, 0xD469 }, +{ 0xD46A, 0xD46A, 0xD46A }, +{ 0xD46B, 0xD46B, 0xD46B }, +{ 0xD46C, 0xD46C, 0xD46C }, +{ 0xD46D, 0xD46D, 0xD46D }, +{ 0xD46E, 0xD46E, 0xD46E }, +{ 0xD46F, 0xD46F, 0xD46F }, +{ 0xD470, 0xD470, 0xD470 }, +{ 0xD471, 0xD471, 0xD471 }, +{ 0xD472, 0xD472, 0xD472 }, +{ 0xD473, 0xD473, 0xD473 }, +{ 0xD474, 0xD474, 0xD474 }, +{ 0xD475, 0xD475, 0xD475 }, +{ 0xD476, 0xD476, 0xD476 }, +{ 0xD477, 0xD477, 0xD477 }, +{ 0xD478, 0xD478, 0xD478 }, +{ 0xD479, 0xD479, 0xD479 }, +{ 0xD47A, 0xD47A, 0xD47A }, +{ 0xD47B, 0xD47B, 0xD47B }, +{ 0xD47C, 0xD47C, 0xD47C }, +{ 0xD47D, 0xD47D, 0xD47D }, +{ 0xD47E, 0xD47E, 0xD47E }, +{ 0xD47F, 0xD47F, 0xD47F }, +{ 0xD480, 0xD480, 0xD480 }, +{ 0xD481, 0xD481, 0xD481 }, +{ 0xD482, 0xD482, 0xD482 }, +{ 0xD483, 0xD483, 0xD483 }, +{ 0xD484, 0xD484, 0xD484 }, +{ 0xD485, 0xD485, 0xD485 }, +{ 0xD486, 0xD486, 0xD486 }, +{ 0xD487, 0xD487, 0xD487 }, +{ 0xD488, 0xD488, 0xD488 }, +{ 0xD489, 0xD489, 0xD489 }, +{ 0xD48A, 0xD48A, 0xD48A }, +{ 0xD48B, 0xD48B, 0xD48B }, +{ 0xD48C, 0xD48C, 0xD48C }, +{ 0xD48D, 0xD48D, 0xD48D }, +{ 0xD48E, 0xD48E, 0xD48E }, +{ 0xD48F, 0xD48F, 0xD48F }, +{ 0xD490, 0xD490, 0xD490 }, +{ 0xD491, 0xD491, 0xD491 }, +{ 0xD492, 0xD492, 0xD492 }, +{ 0xD493, 0xD493, 0xD493 }, +{ 0xD494, 0xD494, 0xD494 }, +{ 0xD495, 0xD495, 0xD495 }, +{ 0xD496, 0xD496, 0xD496 }, +{ 0xD497, 0xD497, 0xD497 }, +{ 0xD498, 0xD498, 0xD498 }, +{ 0xD499, 0xD499, 0xD499 }, +{ 0xD49A, 0xD49A, 0xD49A }, +{ 0xD49B, 0xD49B, 0xD49B }, +{ 0xD49C, 0xD49C, 0xD49C }, +{ 0xD49D, 0xD49D, 0xD49D }, +{ 0xD49E, 0xD49E, 0xD49E }, +{ 0xD49F, 0xD49F, 0xD49F }, +{ 0xD4A0, 0xD4A0, 0xD4A0 }, +{ 0xD4A1, 0xD4A1, 0xD4A1 }, +{ 0xD4A2, 0xD4A2, 0xD4A2 }, +{ 0xD4A3, 0xD4A3, 0xD4A3 }, +{ 0xD4A4, 0xD4A4, 0xD4A4 }, +{ 0xD4A5, 0xD4A5, 0xD4A5 }, +{ 0xD4A6, 0xD4A6, 0xD4A6 }, +{ 0xD4A7, 0xD4A7, 0xD4A7 }, +{ 0xD4A8, 0xD4A8, 0xD4A8 }, +{ 0xD4A9, 0xD4A9, 0xD4A9 }, +{ 0xD4AA, 0xD4AA, 0xD4AA }, +{ 0xD4AB, 0xD4AB, 0xD4AB }, +{ 0xD4AC, 0xD4AC, 0xD4AC }, +{ 0xD4AD, 0xD4AD, 0xD4AD }, +{ 0xD4AE, 0xD4AE, 0xD4AE }, +{ 0xD4AF, 0xD4AF, 0xD4AF }, +{ 0xD4B0, 0xD4B0, 0xD4B0 }, +{ 0xD4B1, 0xD4B1, 0xD4B1 }, +{ 0xD4B2, 0xD4B2, 0xD4B2 }, +{ 0xD4B3, 0xD4B3, 0xD4B3 }, +{ 0xD4B4, 0xD4B4, 0xD4B4 }, +{ 0xD4B5, 0xD4B5, 0xD4B5 }, +{ 0xD4B6, 0xD4B6, 0xD4B6 }, +{ 0xD4B7, 0xD4B7, 0xD4B7 }, +{ 0xD4B8, 0xD4B8, 0xD4B8 }, +{ 0xD4B9, 0xD4B9, 0xD4B9 }, +{ 0xD4BA, 0xD4BA, 0xD4BA }, +{ 0xD4BB, 0xD4BB, 0xD4BB }, +{ 0xD4BC, 0xD4BC, 0xD4BC }, +{ 0xD4BD, 0xD4BD, 0xD4BD }, +{ 0xD4BE, 0xD4BE, 0xD4BE }, +{ 0xD4BF, 0xD4BF, 0xD4BF }, +{ 0xD4C0, 0xD4C0, 0xD4C0 }, +{ 0xD4C1, 0xD4C1, 0xD4C1 }, +{ 0xD4C2, 0xD4C2, 0xD4C2 }, +{ 0xD4C3, 0xD4C3, 0xD4C3 }, +{ 0xD4C4, 0xD4C4, 0xD4C4 }, +{ 0xD4C5, 0xD4C5, 0xD4C5 }, +{ 0xD4C6, 0xD4C6, 0xD4C6 }, +{ 0xD4C7, 0xD4C7, 0xD4C7 }, +{ 0xD4C8, 0xD4C8, 0xD4C8 }, +{ 0xD4C9, 0xD4C9, 0xD4C9 }, +{ 0xD4CA, 0xD4CA, 0xD4CA }, +{ 0xD4CB, 0xD4CB, 0xD4CB }, +{ 0xD4CC, 0xD4CC, 0xD4CC }, +{ 0xD4CD, 0xD4CD, 0xD4CD }, +{ 0xD4CE, 0xD4CE, 0xD4CE }, +{ 0xD4CF, 0xD4CF, 0xD4CF }, +{ 0xD4D0, 0xD4D0, 0xD4D0 }, +{ 0xD4D1, 0xD4D1, 0xD4D1 }, +{ 0xD4D2, 0xD4D2, 0xD4D2 }, +{ 0xD4D3, 0xD4D3, 0xD4D3 }, +{ 0xD4D4, 0xD4D4, 0xD4D4 }, +{ 0xD4D5, 0xD4D5, 0xD4D5 }, +{ 0xD4D6, 0xD4D6, 0xD4D6 }, +{ 0xD4D7, 0xD4D7, 0xD4D7 }, +{ 0xD4D8, 0xD4D8, 0xD4D8 }, +{ 0xD4D9, 0xD4D9, 0xD4D9 }, +{ 0xD4DA, 0xD4DA, 0xD4DA }, +{ 0xD4DB, 0xD4DB, 0xD4DB }, +{ 0xD4DC, 0xD4DC, 0xD4DC }, +{ 0xD4DD, 0xD4DD, 0xD4DD }, +{ 0xD4DE, 0xD4DE, 0xD4DE }, +{ 0xD4DF, 0xD4DF, 0xD4DF }, +{ 0xD4E0, 0xD4E0, 0xD4E0 }, +{ 0xD4E1, 0xD4E1, 0xD4E1 }, +{ 0xD4E2, 0xD4E2, 0xD4E2 }, +{ 0xD4E3, 0xD4E3, 0xD4E3 }, +{ 0xD4E4, 0xD4E4, 0xD4E4 }, +{ 0xD4E5, 0xD4E5, 0xD4E5 }, +{ 0xD4E6, 0xD4E6, 0xD4E6 }, +{ 0xD4E7, 0xD4E7, 0xD4E7 }, +{ 0xD4E8, 0xD4E8, 0xD4E8 }, +{ 0xD4E9, 0xD4E9, 0xD4E9 }, +{ 0xD4EA, 0xD4EA, 0xD4EA }, +{ 0xD4EB, 0xD4EB, 0xD4EB }, +{ 0xD4EC, 0xD4EC, 0xD4EC }, +{ 0xD4ED, 0xD4ED, 0xD4ED }, +{ 0xD4EE, 0xD4EE, 0xD4EE }, +{ 0xD4EF, 0xD4EF, 0xD4EF }, +{ 0xD4F0, 0xD4F0, 0xD4F0 }, +{ 0xD4F1, 0xD4F1, 0xD4F1 }, +{ 0xD4F2, 0xD4F2, 0xD4F2 }, +{ 0xD4F3, 0xD4F3, 0xD4F3 }, +{ 0xD4F4, 0xD4F4, 0xD4F4 }, +{ 0xD4F5, 0xD4F5, 0xD4F5 }, +{ 0xD4F6, 0xD4F6, 0xD4F6 }, +{ 0xD4F7, 0xD4F7, 0xD4F7 }, +{ 0xD4F8, 0xD4F8, 0xD4F8 }, +{ 0xD4F9, 0xD4F9, 0xD4F9 }, +{ 0xD4FA, 0xD4FA, 0xD4FA }, +{ 0xD4FB, 0xD4FB, 0xD4FB }, +{ 0xD4FC, 0xD4FC, 0xD4FC }, +{ 0xD4FD, 0xD4FD, 0xD4FD }, +{ 0xD4FE, 0xD4FE, 0xD4FE }, +{ 0xD4FF, 0xD4FF, 0xD4FF }, +{ 0xD500, 0xD500, 0xD500 }, +{ 0xD501, 0xD501, 0xD501 }, +{ 0xD502, 0xD502, 0xD502 }, +{ 0xD503, 0xD503, 0xD503 }, +{ 0xD504, 0xD504, 0xD504 }, +{ 0xD505, 0xD505, 0xD505 }, +{ 0xD506, 0xD506, 0xD506 }, +{ 0xD507, 0xD507, 0xD507 }, +{ 0xD508, 0xD508, 0xD508 }, +{ 0xD509, 0xD509, 0xD509 }, +{ 0xD50A, 0xD50A, 0xD50A }, +{ 0xD50B, 0xD50B, 0xD50B }, +{ 0xD50C, 0xD50C, 0xD50C }, +{ 0xD50D, 0xD50D, 0xD50D }, +{ 0xD50E, 0xD50E, 0xD50E }, +{ 0xD50F, 0xD50F, 0xD50F }, +{ 0xD510, 0xD510, 0xD510 }, +{ 0xD511, 0xD511, 0xD511 }, +{ 0xD512, 0xD512, 0xD512 }, +{ 0xD513, 0xD513, 0xD513 }, +{ 0xD514, 0xD514, 0xD514 }, +{ 0xD515, 0xD515, 0xD515 }, +{ 0xD516, 0xD516, 0xD516 }, +{ 0xD517, 0xD517, 0xD517 }, +{ 0xD518, 0xD518, 0xD518 }, +{ 0xD519, 0xD519, 0xD519 }, +{ 0xD51A, 0xD51A, 0xD51A }, +{ 0xD51B, 0xD51B, 0xD51B }, +{ 0xD51C, 0xD51C, 0xD51C }, +{ 0xD51D, 0xD51D, 0xD51D }, +{ 0xD51E, 0xD51E, 0xD51E }, +{ 0xD51F, 0xD51F, 0xD51F }, +{ 0xD520, 0xD520, 0xD520 }, +{ 0xD521, 0xD521, 0xD521 }, +{ 0xD522, 0xD522, 0xD522 }, +{ 0xD523, 0xD523, 0xD523 }, +{ 0xD524, 0xD524, 0xD524 }, +{ 0xD525, 0xD525, 0xD525 }, +{ 0xD526, 0xD526, 0xD526 }, +{ 0xD527, 0xD527, 0xD527 }, +{ 0xD528, 0xD528, 0xD528 }, +{ 0xD529, 0xD529, 0xD529 }, +{ 0xD52A, 0xD52A, 0xD52A }, +{ 0xD52B, 0xD52B, 0xD52B }, +{ 0xD52C, 0xD52C, 0xD52C }, +{ 0xD52D, 0xD52D, 0xD52D }, +{ 0xD52E, 0xD52E, 0xD52E }, +{ 0xD52F, 0xD52F, 0xD52F }, +{ 0xD530, 0xD530, 0xD530 }, +{ 0xD531, 0xD531, 0xD531 }, +{ 0xD532, 0xD532, 0xD532 }, +{ 0xD533, 0xD533, 0xD533 }, +{ 0xD534, 0xD534, 0xD534 }, +{ 0xD535, 0xD535, 0xD535 }, +{ 0xD536, 0xD536, 0xD536 }, +{ 0xD537, 0xD537, 0xD537 }, +{ 0xD538, 0xD538, 0xD538 }, +{ 0xD539, 0xD539, 0xD539 }, +{ 0xD53A, 0xD53A, 0xD53A }, +{ 0xD53B, 0xD53B, 0xD53B }, +{ 0xD53C, 0xD53C, 0xD53C }, +{ 0xD53D, 0xD53D, 0xD53D }, +{ 0xD53E, 0xD53E, 0xD53E }, +{ 0xD53F, 0xD53F, 0xD53F }, +{ 0xD540, 0xD540, 0xD540 }, +{ 0xD541, 0xD541, 0xD541 }, +{ 0xD542, 0xD542, 0xD542 }, +{ 0xD543, 0xD543, 0xD543 }, +{ 0xD544, 0xD544, 0xD544 }, +{ 0xD545, 0xD545, 0xD545 }, +{ 0xD546, 0xD546, 0xD546 }, +{ 0xD547, 0xD547, 0xD547 }, +{ 0xD548, 0xD548, 0xD548 }, +{ 0xD549, 0xD549, 0xD549 }, +{ 0xD54A, 0xD54A, 0xD54A }, +{ 0xD54B, 0xD54B, 0xD54B }, +{ 0xD54C, 0xD54C, 0xD54C }, +{ 0xD54D, 0xD54D, 0xD54D }, +{ 0xD54E, 0xD54E, 0xD54E }, +{ 0xD54F, 0xD54F, 0xD54F }, +{ 0xD550, 0xD550, 0xD550 }, +{ 0xD551, 0xD551, 0xD551 }, +{ 0xD552, 0xD552, 0xD552 }, +{ 0xD553, 0xD553, 0xD553 }, +{ 0xD554, 0xD554, 0xD554 }, +{ 0xD555, 0xD555, 0xD555 }, +{ 0xD556, 0xD556, 0xD556 }, +{ 0xD557, 0xD557, 0xD557 }, +{ 0xD558, 0xD558, 0xD558 }, +{ 0xD559, 0xD559, 0xD559 }, +{ 0xD55A, 0xD55A, 0xD55A }, +{ 0xD55B, 0xD55B, 0xD55B }, +{ 0xD55C, 0xD55C, 0xD55C }, +{ 0xD55D, 0xD55D, 0xD55D }, +{ 0xD55E, 0xD55E, 0xD55E }, +{ 0xD55F, 0xD55F, 0xD55F }, +{ 0xD560, 0xD560, 0xD560 }, +{ 0xD561, 0xD561, 0xD561 }, +{ 0xD562, 0xD562, 0xD562 }, +{ 0xD563, 0xD563, 0xD563 }, +{ 0xD564, 0xD564, 0xD564 }, +{ 0xD565, 0xD565, 0xD565 }, +{ 0xD566, 0xD566, 0xD566 }, +{ 0xD567, 0xD567, 0xD567 }, +{ 0xD568, 0xD568, 0xD568 }, +{ 0xD569, 0xD569, 0xD569 }, +{ 0xD56A, 0xD56A, 0xD56A }, +{ 0xD56B, 0xD56B, 0xD56B }, +{ 0xD56C, 0xD56C, 0xD56C }, +{ 0xD56D, 0xD56D, 0xD56D }, +{ 0xD56E, 0xD56E, 0xD56E }, +{ 0xD56F, 0xD56F, 0xD56F }, +{ 0xD570, 0xD570, 0xD570 }, +{ 0xD571, 0xD571, 0xD571 }, +{ 0xD572, 0xD572, 0xD572 }, +{ 0xD573, 0xD573, 0xD573 }, +{ 0xD574, 0xD574, 0xD574 }, +{ 0xD575, 0xD575, 0xD575 }, +{ 0xD576, 0xD576, 0xD576 }, +{ 0xD577, 0xD577, 0xD577 }, +{ 0xD578, 0xD578, 0xD578 }, +{ 0xD579, 0xD579, 0xD579 }, +{ 0xD57A, 0xD57A, 0xD57A }, +{ 0xD57B, 0xD57B, 0xD57B }, +{ 0xD57C, 0xD57C, 0xD57C }, +{ 0xD57D, 0xD57D, 0xD57D }, +{ 0xD57E, 0xD57E, 0xD57E }, +{ 0xD57F, 0xD57F, 0xD57F }, +{ 0xD580, 0xD580, 0xD580 }, +{ 0xD581, 0xD581, 0xD581 }, +{ 0xD582, 0xD582, 0xD582 }, +{ 0xD583, 0xD583, 0xD583 }, +{ 0xD584, 0xD584, 0xD584 }, +{ 0xD585, 0xD585, 0xD585 }, +{ 0xD586, 0xD586, 0xD586 }, +{ 0xD587, 0xD587, 0xD587 }, +{ 0xD588, 0xD588, 0xD588 }, +{ 0xD589, 0xD589, 0xD589 }, +{ 0xD58A, 0xD58A, 0xD58A }, +{ 0xD58B, 0xD58B, 0xD58B }, +{ 0xD58C, 0xD58C, 0xD58C }, +{ 0xD58D, 0xD58D, 0xD58D }, +{ 0xD58E, 0xD58E, 0xD58E }, +{ 0xD58F, 0xD58F, 0xD58F }, +{ 0xD590, 0xD590, 0xD590 }, +{ 0xD591, 0xD591, 0xD591 }, +{ 0xD592, 0xD592, 0xD592 }, +{ 0xD593, 0xD593, 0xD593 }, +{ 0xD594, 0xD594, 0xD594 }, +{ 0xD595, 0xD595, 0xD595 }, +{ 0xD596, 0xD596, 0xD596 }, +{ 0xD597, 0xD597, 0xD597 }, +{ 0xD598, 0xD598, 0xD598 }, +{ 0xD599, 0xD599, 0xD599 }, +{ 0xD59A, 0xD59A, 0xD59A }, +{ 0xD59B, 0xD59B, 0xD59B }, +{ 0xD59C, 0xD59C, 0xD59C }, +{ 0xD59D, 0xD59D, 0xD59D }, +{ 0xD59E, 0xD59E, 0xD59E }, +{ 0xD59F, 0xD59F, 0xD59F }, +{ 0xD5A0, 0xD5A0, 0xD5A0 }, +{ 0xD5A1, 0xD5A1, 0xD5A1 }, +{ 0xD5A2, 0xD5A2, 0xD5A2 }, +{ 0xD5A3, 0xD5A3, 0xD5A3 }, +{ 0xD5A4, 0xD5A4, 0xD5A4 }, +{ 0xD5A5, 0xD5A5, 0xD5A5 }, +{ 0xD5A6, 0xD5A6, 0xD5A6 }, +{ 0xD5A7, 0xD5A7, 0xD5A7 }, +{ 0xD5A8, 0xD5A8, 0xD5A8 }, +{ 0xD5A9, 0xD5A9, 0xD5A9 }, +{ 0xD5AA, 0xD5AA, 0xD5AA }, +{ 0xD5AB, 0xD5AB, 0xD5AB }, +{ 0xD5AC, 0xD5AC, 0xD5AC }, +{ 0xD5AD, 0xD5AD, 0xD5AD }, +{ 0xD5AE, 0xD5AE, 0xD5AE }, +{ 0xD5AF, 0xD5AF, 0xD5AF }, +{ 0xD5B0, 0xD5B0, 0xD5B0 }, +{ 0xD5B1, 0xD5B1, 0xD5B1 }, +{ 0xD5B2, 0xD5B2, 0xD5B2 }, +{ 0xD5B3, 0xD5B3, 0xD5B3 }, +{ 0xD5B4, 0xD5B4, 0xD5B4 }, +{ 0xD5B5, 0xD5B5, 0xD5B5 }, +{ 0xD5B6, 0xD5B6, 0xD5B6 }, +{ 0xD5B7, 0xD5B7, 0xD5B7 }, +{ 0xD5B8, 0xD5B8, 0xD5B8 }, +{ 0xD5B9, 0xD5B9, 0xD5B9 }, +{ 0xD5BA, 0xD5BA, 0xD5BA }, +{ 0xD5BB, 0xD5BB, 0xD5BB }, +{ 0xD5BC, 0xD5BC, 0xD5BC }, +{ 0xD5BD, 0xD5BD, 0xD5BD }, +{ 0xD5BE, 0xD5BE, 0xD5BE }, +{ 0xD5BF, 0xD5BF, 0xD5BF }, +{ 0xD5C0, 0xD5C0, 0xD5C0 }, +{ 0xD5C1, 0xD5C1, 0xD5C1 }, +{ 0xD5C2, 0xD5C2, 0xD5C2 }, +{ 0xD5C3, 0xD5C3, 0xD5C3 }, +{ 0xD5C4, 0xD5C4, 0xD5C4 }, +{ 0xD5C5, 0xD5C5, 0xD5C5 }, +{ 0xD5C6, 0xD5C6, 0xD5C6 }, +{ 0xD5C7, 0xD5C7, 0xD5C7 }, +{ 0xD5C8, 0xD5C8, 0xD5C8 }, +{ 0xD5C9, 0xD5C9, 0xD5C9 }, +{ 0xD5CA, 0xD5CA, 0xD5CA }, +{ 0xD5CB, 0xD5CB, 0xD5CB }, +{ 0xD5CC, 0xD5CC, 0xD5CC }, +{ 0xD5CD, 0xD5CD, 0xD5CD }, +{ 0xD5CE, 0xD5CE, 0xD5CE }, +{ 0xD5CF, 0xD5CF, 0xD5CF }, +{ 0xD5D0, 0xD5D0, 0xD5D0 }, +{ 0xD5D1, 0xD5D1, 0xD5D1 }, +{ 0xD5D2, 0xD5D2, 0xD5D2 }, +{ 0xD5D3, 0xD5D3, 0xD5D3 }, +{ 0xD5D4, 0xD5D4, 0xD5D4 }, +{ 0xD5D5, 0xD5D5, 0xD5D5 }, +{ 0xD5D6, 0xD5D6, 0xD5D6 }, +{ 0xD5D7, 0xD5D7, 0xD5D7 }, +{ 0xD5D8, 0xD5D8, 0xD5D8 }, +{ 0xD5D9, 0xD5D9, 0xD5D9 }, +{ 0xD5DA, 0xD5DA, 0xD5DA }, +{ 0xD5DB, 0xD5DB, 0xD5DB }, +{ 0xD5DC, 0xD5DC, 0xD5DC }, +{ 0xD5DD, 0xD5DD, 0xD5DD }, +{ 0xD5DE, 0xD5DE, 0xD5DE }, +{ 0xD5DF, 0xD5DF, 0xD5DF }, +{ 0xD5E0, 0xD5E0, 0xD5E0 }, +{ 0xD5E1, 0xD5E1, 0xD5E1 }, +{ 0xD5E2, 0xD5E2, 0xD5E2 }, +{ 0xD5E3, 0xD5E3, 0xD5E3 }, +{ 0xD5E4, 0xD5E4, 0xD5E4 }, +{ 0xD5E5, 0xD5E5, 0xD5E5 }, +{ 0xD5E6, 0xD5E6, 0xD5E6 }, +{ 0xD5E7, 0xD5E7, 0xD5E7 }, +{ 0xD5E8, 0xD5E8, 0xD5E8 }, +{ 0xD5E9, 0xD5E9, 0xD5E9 }, +{ 0xD5EA, 0xD5EA, 0xD5EA }, +{ 0xD5EB, 0xD5EB, 0xD5EB }, +{ 0xD5EC, 0xD5EC, 0xD5EC }, +{ 0xD5ED, 0xD5ED, 0xD5ED }, +{ 0xD5EE, 0xD5EE, 0xD5EE }, +{ 0xD5EF, 0xD5EF, 0xD5EF }, +{ 0xD5F0, 0xD5F0, 0xD5F0 }, +{ 0xD5F1, 0xD5F1, 0xD5F1 }, +{ 0xD5F2, 0xD5F2, 0xD5F2 }, +{ 0xD5F3, 0xD5F3, 0xD5F3 }, +{ 0xD5F4, 0xD5F4, 0xD5F4 }, +{ 0xD5F5, 0xD5F5, 0xD5F5 }, +{ 0xD5F6, 0xD5F6, 0xD5F6 }, +{ 0xD5F7, 0xD5F7, 0xD5F7 }, +{ 0xD5F8, 0xD5F8, 0xD5F8 }, +{ 0xD5F9, 0xD5F9, 0xD5F9 }, +{ 0xD5FA, 0xD5FA, 0xD5FA }, +{ 0xD5FB, 0xD5FB, 0xD5FB }, +{ 0xD5FC, 0xD5FC, 0xD5FC }, +{ 0xD5FD, 0xD5FD, 0xD5FD }, +{ 0xD5FE, 0xD5FE, 0xD5FE }, +{ 0xD5FF, 0xD5FF, 0xD5FF }, +{ 0xD600, 0xD600, 0xD600 }, +{ 0xD601, 0xD601, 0xD601 }, +{ 0xD602, 0xD602, 0xD602 }, +{ 0xD603, 0xD603, 0xD603 }, +{ 0xD604, 0xD604, 0xD604 }, +{ 0xD605, 0xD605, 0xD605 }, +{ 0xD606, 0xD606, 0xD606 }, +{ 0xD607, 0xD607, 0xD607 }, +{ 0xD608, 0xD608, 0xD608 }, +{ 0xD609, 0xD609, 0xD609 }, +{ 0xD60A, 0xD60A, 0xD60A }, +{ 0xD60B, 0xD60B, 0xD60B }, +{ 0xD60C, 0xD60C, 0xD60C }, +{ 0xD60D, 0xD60D, 0xD60D }, +{ 0xD60E, 0xD60E, 0xD60E }, +{ 0xD60F, 0xD60F, 0xD60F }, +{ 0xD610, 0xD610, 0xD610 }, +{ 0xD611, 0xD611, 0xD611 }, +{ 0xD612, 0xD612, 0xD612 }, +{ 0xD613, 0xD613, 0xD613 }, +{ 0xD614, 0xD614, 0xD614 }, +{ 0xD615, 0xD615, 0xD615 }, +{ 0xD616, 0xD616, 0xD616 }, +{ 0xD617, 0xD617, 0xD617 }, +{ 0xD618, 0xD618, 0xD618 }, +{ 0xD619, 0xD619, 0xD619 }, +{ 0xD61A, 0xD61A, 0xD61A }, +{ 0xD61B, 0xD61B, 0xD61B }, +{ 0xD61C, 0xD61C, 0xD61C }, +{ 0xD61D, 0xD61D, 0xD61D }, +{ 0xD61E, 0xD61E, 0xD61E }, +{ 0xD61F, 0xD61F, 0xD61F }, +{ 0xD620, 0xD620, 0xD620 }, +{ 0xD621, 0xD621, 0xD621 }, +{ 0xD622, 0xD622, 0xD622 }, +{ 0xD623, 0xD623, 0xD623 }, +{ 0xD624, 0xD624, 0xD624 }, +{ 0xD625, 0xD625, 0xD625 }, +{ 0xD626, 0xD626, 0xD626 }, +{ 0xD627, 0xD627, 0xD627 }, +{ 0xD628, 0xD628, 0xD628 }, +{ 0xD629, 0xD629, 0xD629 }, +{ 0xD62A, 0xD62A, 0xD62A }, +{ 0xD62B, 0xD62B, 0xD62B }, +{ 0xD62C, 0xD62C, 0xD62C }, +{ 0xD62D, 0xD62D, 0xD62D }, +{ 0xD62E, 0xD62E, 0xD62E }, +{ 0xD62F, 0xD62F, 0xD62F }, +{ 0xD630, 0xD630, 0xD630 }, +{ 0xD631, 0xD631, 0xD631 }, +{ 0xD632, 0xD632, 0xD632 }, +{ 0xD633, 0xD633, 0xD633 }, +{ 0xD634, 0xD634, 0xD634 }, +{ 0xD635, 0xD635, 0xD635 }, +{ 0xD636, 0xD636, 0xD636 }, +{ 0xD637, 0xD637, 0xD637 }, +{ 0xD638, 0xD638, 0xD638 }, +{ 0xD639, 0xD639, 0xD639 }, +{ 0xD63A, 0xD63A, 0xD63A }, +{ 0xD63B, 0xD63B, 0xD63B }, +{ 0xD63C, 0xD63C, 0xD63C }, +{ 0xD63D, 0xD63D, 0xD63D }, +{ 0xD63E, 0xD63E, 0xD63E }, +{ 0xD63F, 0xD63F, 0xD63F }, +{ 0xD640, 0xD640, 0xD640 }, +{ 0xD641, 0xD641, 0xD641 }, +{ 0xD642, 0xD642, 0xD642 }, +{ 0xD643, 0xD643, 0xD643 }, +{ 0xD644, 0xD644, 0xD644 }, +{ 0xD645, 0xD645, 0xD645 }, +{ 0xD646, 0xD646, 0xD646 }, +{ 0xD647, 0xD647, 0xD647 }, +{ 0xD648, 0xD648, 0xD648 }, +{ 0xD649, 0xD649, 0xD649 }, +{ 0xD64A, 0xD64A, 0xD64A }, +{ 0xD64B, 0xD64B, 0xD64B }, +{ 0xD64C, 0xD64C, 0xD64C }, +{ 0xD64D, 0xD64D, 0xD64D }, +{ 0xD64E, 0xD64E, 0xD64E }, +{ 0xD64F, 0xD64F, 0xD64F }, +{ 0xD650, 0xD650, 0xD650 }, +{ 0xD651, 0xD651, 0xD651 }, +{ 0xD652, 0xD652, 0xD652 }, +{ 0xD653, 0xD653, 0xD653 }, +{ 0xD654, 0xD654, 0xD654 }, +{ 0xD655, 0xD655, 0xD655 }, +{ 0xD656, 0xD656, 0xD656 }, +{ 0xD657, 0xD657, 0xD657 }, +{ 0xD658, 0xD658, 0xD658 }, +{ 0xD659, 0xD659, 0xD659 }, +{ 0xD65A, 0xD65A, 0xD65A }, +{ 0xD65B, 0xD65B, 0xD65B }, +{ 0xD65C, 0xD65C, 0xD65C }, +{ 0xD65D, 0xD65D, 0xD65D }, +{ 0xD65E, 0xD65E, 0xD65E }, +{ 0xD65F, 0xD65F, 0xD65F }, +{ 0xD660, 0xD660, 0xD660 }, +{ 0xD661, 0xD661, 0xD661 }, +{ 0xD662, 0xD662, 0xD662 }, +{ 0xD663, 0xD663, 0xD663 }, +{ 0xD664, 0xD664, 0xD664 }, +{ 0xD665, 0xD665, 0xD665 }, +{ 0xD666, 0xD666, 0xD666 }, +{ 0xD667, 0xD667, 0xD667 }, +{ 0xD668, 0xD668, 0xD668 }, +{ 0xD669, 0xD669, 0xD669 }, +{ 0xD66A, 0xD66A, 0xD66A }, +{ 0xD66B, 0xD66B, 0xD66B }, +{ 0xD66C, 0xD66C, 0xD66C }, +{ 0xD66D, 0xD66D, 0xD66D }, +{ 0xD66E, 0xD66E, 0xD66E }, +{ 0xD66F, 0xD66F, 0xD66F }, +{ 0xD670, 0xD670, 0xD670 }, +{ 0xD671, 0xD671, 0xD671 }, +{ 0xD672, 0xD672, 0xD672 }, +{ 0xD673, 0xD673, 0xD673 }, +{ 0xD674, 0xD674, 0xD674 }, +{ 0xD675, 0xD675, 0xD675 }, +{ 0xD676, 0xD676, 0xD676 }, +{ 0xD677, 0xD677, 0xD677 }, +{ 0xD678, 0xD678, 0xD678 }, +{ 0xD679, 0xD679, 0xD679 }, +{ 0xD67A, 0xD67A, 0xD67A }, +{ 0xD67B, 0xD67B, 0xD67B }, +{ 0xD67C, 0xD67C, 0xD67C }, +{ 0xD67D, 0xD67D, 0xD67D }, +{ 0xD67E, 0xD67E, 0xD67E }, +{ 0xD67F, 0xD67F, 0xD67F }, +{ 0xD680, 0xD680, 0xD680 }, +{ 0xD681, 0xD681, 0xD681 }, +{ 0xD682, 0xD682, 0xD682 }, +{ 0xD683, 0xD683, 0xD683 }, +{ 0xD684, 0xD684, 0xD684 }, +{ 0xD685, 0xD685, 0xD685 }, +{ 0xD686, 0xD686, 0xD686 }, +{ 0xD687, 0xD687, 0xD687 }, +{ 0xD688, 0xD688, 0xD688 }, +{ 0xD689, 0xD689, 0xD689 }, +{ 0xD68A, 0xD68A, 0xD68A }, +{ 0xD68B, 0xD68B, 0xD68B }, +{ 0xD68C, 0xD68C, 0xD68C }, +{ 0xD68D, 0xD68D, 0xD68D }, +{ 0xD68E, 0xD68E, 0xD68E }, +{ 0xD68F, 0xD68F, 0xD68F }, +{ 0xD690, 0xD690, 0xD690 }, +{ 0xD691, 0xD691, 0xD691 }, +{ 0xD692, 0xD692, 0xD692 }, +{ 0xD693, 0xD693, 0xD693 }, +{ 0xD694, 0xD694, 0xD694 }, +{ 0xD695, 0xD695, 0xD695 }, +{ 0xD696, 0xD696, 0xD696 }, +{ 0xD697, 0xD697, 0xD697 }, +{ 0xD698, 0xD698, 0xD698 }, +{ 0xD699, 0xD699, 0xD699 }, +{ 0xD69A, 0xD69A, 0xD69A }, +{ 0xD69B, 0xD69B, 0xD69B }, +{ 0xD69C, 0xD69C, 0xD69C }, +{ 0xD69D, 0xD69D, 0xD69D }, +{ 0xD69E, 0xD69E, 0xD69E }, +{ 0xD69F, 0xD69F, 0xD69F }, +{ 0xD6A0, 0xD6A0, 0xD6A0 }, +{ 0xD6A1, 0xD6A1, 0xD6A1 }, +{ 0xD6A2, 0xD6A2, 0xD6A2 }, +{ 0xD6A3, 0xD6A3, 0xD6A3 }, +{ 0xD6A4, 0xD6A4, 0xD6A4 }, +{ 0xD6A5, 0xD6A5, 0xD6A5 }, +{ 0xD6A6, 0xD6A6, 0xD6A6 }, +{ 0xD6A7, 0xD6A7, 0xD6A7 }, +{ 0xD6A8, 0xD6A8, 0xD6A8 }, +{ 0xD6A9, 0xD6A9, 0xD6A9 }, +{ 0xD6AA, 0xD6AA, 0xD6AA }, +{ 0xD6AB, 0xD6AB, 0xD6AB }, +{ 0xD6AC, 0xD6AC, 0xD6AC }, +{ 0xD6AD, 0xD6AD, 0xD6AD }, +{ 0xD6AE, 0xD6AE, 0xD6AE }, +{ 0xD6AF, 0xD6AF, 0xD6AF }, +{ 0xD6B0, 0xD6B0, 0xD6B0 }, +{ 0xD6B1, 0xD6B1, 0xD6B1 }, +{ 0xD6B2, 0xD6B2, 0xD6B2 }, +{ 0xD6B3, 0xD6B3, 0xD6B3 }, +{ 0xD6B4, 0xD6B4, 0xD6B4 }, +{ 0xD6B5, 0xD6B5, 0xD6B5 }, +{ 0xD6B6, 0xD6B6, 0xD6B6 }, +{ 0xD6B7, 0xD6B7, 0xD6B7 }, +{ 0xD6B8, 0xD6B8, 0xD6B8 }, +{ 0xD6B9, 0xD6B9, 0xD6B9 }, +{ 0xD6BA, 0xD6BA, 0xD6BA }, +{ 0xD6BB, 0xD6BB, 0xD6BB }, +{ 0xD6BC, 0xD6BC, 0xD6BC }, +{ 0xD6BD, 0xD6BD, 0xD6BD }, +{ 0xD6BE, 0xD6BE, 0xD6BE }, +{ 0xD6BF, 0xD6BF, 0xD6BF }, +{ 0xD6C0, 0xD6C0, 0xD6C0 }, +{ 0xD6C1, 0xD6C1, 0xD6C1 }, +{ 0xD6C2, 0xD6C2, 0xD6C2 }, +{ 0xD6C3, 0xD6C3, 0xD6C3 }, +{ 0xD6C4, 0xD6C4, 0xD6C4 }, +{ 0xD6C5, 0xD6C5, 0xD6C5 }, +{ 0xD6C6, 0xD6C6, 0xD6C6 }, +{ 0xD6C7, 0xD6C7, 0xD6C7 }, +{ 0xD6C8, 0xD6C8, 0xD6C8 }, +{ 0xD6C9, 0xD6C9, 0xD6C9 }, +{ 0xD6CA, 0xD6CA, 0xD6CA }, +{ 0xD6CB, 0xD6CB, 0xD6CB }, +{ 0xD6CC, 0xD6CC, 0xD6CC }, +{ 0xD6CD, 0xD6CD, 0xD6CD }, +{ 0xD6CE, 0xD6CE, 0xD6CE }, +{ 0xD6CF, 0xD6CF, 0xD6CF }, +{ 0xD6D0, 0xD6D0, 0xD6D0 }, +{ 0xD6D1, 0xD6D1, 0xD6D1 }, +{ 0xD6D2, 0xD6D2, 0xD6D2 }, +{ 0xD6D3, 0xD6D3, 0xD6D3 }, +{ 0xD6D4, 0xD6D4, 0xD6D4 }, +{ 0xD6D5, 0xD6D5, 0xD6D5 }, +{ 0xD6D6, 0xD6D6, 0xD6D6 }, +{ 0xD6D7, 0xD6D7, 0xD6D7 }, +{ 0xD6D8, 0xD6D8, 0xD6D8 }, +{ 0xD6D9, 0xD6D9, 0xD6D9 }, +{ 0xD6DA, 0xD6DA, 0xD6DA }, +{ 0xD6DB, 0xD6DB, 0xD6DB }, +{ 0xD6DC, 0xD6DC, 0xD6DC }, +{ 0xD6DD, 0xD6DD, 0xD6DD }, +{ 0xD6DE, 0xD6DE, 0xD6DE }, +{ 0xD6DF, 0xD6DF, 0xD6DF }, +{ 0xD6E0, 0xD6E0, 0xD6E0 }, +{ 0xD6E1, 0xD6E1, 0xD6E1 }, +{ 0xD6E2, 0xD6E2, 0xD6E2 }, +{ 0xD6E3, 0xD6E3, 0xD6E3 }, +{ 0xD6E4, 0xD6E4, 0xD6E4 }, +{ 0xD6E5, 0xD6E5, 0xD6E5 }, +{ 0xD6E6, 0xD6E6, 0xD6E6 }, +{ 0xD6E7, 0xD6E7, 0xD6E7 }, +{ 0xD6E8, 0xD6E8, 0xD6E8 }, +{ 0xD6E9, 0xD6E9, 0xD6E9 }, +{ 0xD6EA, 0xD6EA, 0xD6EA }, +{ 0xD6EB, 0xD6EB, 0xD6EB }, +{ 0xD6EC, 0xD6EC, 0xD6EC }, +{ 0xD6ED, 0xD6ED, 0xD6ED }, +{ 0xD6EE, 0xD6EE, 0xD6EE }, +{ 0xD6EF, 0xD6EF, 0xD6EF }, +{ 0xD6F0, 0xD6F0, 0xD6F0 }, +{ 0xD6F1, 0xD6F1, 0xD6F1 }, +{ 0xD6F2, 0xD6F2, 0xD6F2 }, +{ 0xD6F3, 0xD6F3, 0xD6F3 }, +{ 0xD6F4, 0xD6F4, 0xD6F4 }, +{ 0xD6F5, 0xD6F5, 0xD6F5 }, +{ 0xD6F6, 0xD6F6, 0xD6F6 }, +{ 0xD6F7, 0xD6F7, 0xD6F7 }, +{ 0xD6F8, 0xD6F8, 0xD6F8 }, +{ 0xD6F9, 0xD6F9, 0xD6F9 }, +{ 0xD6FA, 0xD6FA, 0xD6FA }, +{ 0xD6FB, 0xD6FB, 0xD6FB }, +{ 0xD6FC, 0xD6FC, 0xD6FC }, +{ 0xD6FD, 0xD6FD, 0xD6FD }, +{ 0xD6FE, 0xD6FE, 0xD6FE }, +{ 0xD6FF, 0xD6FF, 0xD6FF }, +{ 0xD700, 0xD700, 0xD700 }, +{ 0xD701, 0xD701, 0xD701 }, +{ 0xD702, 0xD702, 0xD702 }, +{ 0xD703, 0xD703, 0xD703 }, +{ 0xD704, 0xD704, 0xD704 }, +{ 0xD705, 0xD705, 0xD705 }, +{ 0xD706, 0xD706, 0xD706 }, +{ 0xD707, 0xD707, 0xD707 }, +{ 0xD708, 0xD708, 0xD708 }, +{ 0xD709, 0xD709, 0xD709 }, +{ 0xD70A, 0xD70A, 0xD70A }, +{ 0xD70B, 0xD70B, 0xD70B }, +{ 0xD70C, 0xD70C, 0xD70C }, +{ 0xD70D, 0xD70D, 0xD70D }, +{ 0xD70E, 0xD70E, 0xD70E }, +{ 0xD70F, 0xD70F, 0xD70F }, +{ 0xD710, 0xD710, 0xD710 }, +{ 0xD711, 0xD711, 0xD711 }, +{ 0xD712, 0xD712, 0xD712 }, +{ 0xD713, 0xD713, 0xD713 }, +{ 0xD714, 0xD714, 0xD714 }, +{ 0xD715, 0xD715, 0xD715 }, +{ 0xD716, 0xD716, 0xD716 }, +{ 0xD717, 0xD717, 0xD717 }, +{ 0xD718, 0xD718, 0xD718 }, +{ 0xD719, 0xD719, 0xD719 }, +{ 0xD71A, 0xD71A, 0xD71A }, +{ 0xD71B, 0xD71B, 0xD71B }, +{ 0xD71C, 0xD71C, 0xD71C }, +{ 0xD71D, 0xD71D, 0xD71D }, +{ 0xD71E, 0xD71E, 0xD71E }, +{ 0xD71F, 0xD71F, 0xD71F }, +{ 0xD720, 0xD720, 0xD720 }, +{ 0xD721, 0xD721, 0xD721 }, +{ 0xD722, 0xD722, 0xD722 }, +{ 0xD723, 0xD723, 0xD723 }, +{ 0xD724, 0xD724, 0xD724 }, +{ 0xD725, 0xD725, 0xD725 }, +{ 0xD726, 0xD726, 0xD726 }, +{ 0xD727, 0xD727, 0xD727 }, +{ 0xD728, 0xD728, 0xD728 }, +{ 0xD729, 0xD729, 0xD729 }, +{ 0xD72A, 0xD72A, 0xD72A }, +{ 0xD72B, 0xD72B, 0xD72B }, +{ 0xD72C, 0xD72C, 0xD72C }, +{ 0xD72D, 0xD72D, 0xD72D }, +{ 0xD72E, 0xD72E, 0xD72E }, +{ 0xD72F, 0xD72F, 0xD72F }, +{ 0xD730, 0xD730, 0xD730 }, +{ 0xD731, 0xD731, 0xD731 }, +{ 0xD732, 0xD732, 0xD732 }, +{ 0xD733, 0xD733, 0xD733 }, +{ 0xD734, 0xD734, 0xD734 }, +{ 0xD735, 0xD735, 0xD735 }, +{ 0xD736, 0xD736, 0xD736 }, +{ 0xD737, 0xD737, 0xD737 }, +{ 0xD738, 0xD738, 0xD738 }, +{ 0xD739, 0xD739, 0xD739 }, +{ 0xD73A, 0xD73A, 0xD73A }, +{ 0xD73B, 0xD73B, 0xD73B }, +{ 0xD73C, 0xD73C, 0xD73C }, +{ 0xD73D, 0xD73D, 0xD73D }, +{ 0xD73E, 0xD73E, 0xD73E }, +{ 0xD73F, 0xD73F, 0xD73F }, +{ 0xD740, 0xD740, 0xD740 }, +{ 0xD741, 0xD741, 0xD741 }, +{ 0xD742, 0xD742, 0xD742 }, +{ 0xD743, 0xD743, 0xD743 }, +{ 0xD744, 0xD744, 0xD744 }, +{ 0xD745, 0xD745, 0xD745 }, +{ 0xD746, 0xD746, 0xD746 }, +{ 0xD747, 0xD747, 0xD747 }, +{ 0xD748, 0xD748, 0xD748 }, +{ 0xD749, 0xD749, 0xD749 }, +{ 0xD74A, 0xD74A, 0xD74A }, +{ 0xD74B, 0xD74B, 0xD74B }, +{ 0xD74C, 0xD74C, 0xD74C }, +{ 0xD74D, 0xD74D, 0xD74D }, +{ 0xD74E, 0xD74E, 0xD74E }, +{ 0xD74F, 0xD74F, 0xD74F }, +{ 0xD750, 0xD750, 0xD750 }, +{ 0xD751, 0xD751, 0xD751 }, +{ 0xD752, 0xD752, 0xD752 }, +{ 0xD753, 0xD753, 0xD753 }, +{ 0xD754, 0xD754, 0xD754 }, +{ 0xD755, 0xD755, 0xD755 }, +{ 0xD756, 0xD756, 0xD756 }, +{ 0xD757, 0xD757, 0xD757 }, +{ 0xD758, 0xD758, 0xD758 }, +{ 0xD759, 0xD759, 0xD759 }, +{ 0xD75A, 0xD75A, 0xD75A }, +{ 0xD75B, 0xD75B, 0xD75B }, +{ 0xD75C, 0xD75C, 0xD75C }, +{ 0xD75D, 0xD75D, 0xD75D }, +{ 0xD75E, 0xD75E, 0xD75E }, +{ 0xD75F, 0xD75F, 0xD75F }, +{ 0xD760, 0xD760, 0xD760 }, +{ 0xD761, 0xD761, 0xD761 }, +{ 0xD762, 0xD762, 0xD762 }, +{ 0xD763, 0xD763, 0xD763 }, +{ 0xD764, 0xD764, 0xD764 }, +{ 0xD765, 0xD765, 0xD765 }, +{ 0xD766, 0xD766, 0xD766 }, +{ 0xD767, 0xD767, 0xD767 }, +{ 0xD768, 0xD768, 0xD768 }, +{ 0xD769, 0xD769, 0xD769 }, +{ 0xD76A, 0xD76A, 0xD76A }, +{ 0xD76B, 0xD76B, 0xD76B }, +{ 0xD76C, 0xD76C, 0xD76C }, +{ 0xD76D, 0xD76D, 0xD76D }, +{ 0xD76E, 0xD76E, 0xD76E }, +{ 0xD76F, 0xD76F, 0xD76F }, +{ 0xD770, 0xD770, 0xD770 }, +{ 0xD771, 0xD771, 0xD771 }, +{ 0xD772, 0xD772, 0xD772 }, +{ 0xD773, 0xD773, 0xD773 }, +{ 0xD774, 0xD774, 0xD774 }, +{ 0xD775, 0xD775, 0xD775 }, +{ 0xD776, 0xD776, 0xD776 }, +{ 0xD777, 0xD777, 0xD777 }, +{ 0xD778, 0xD778, 0xD778 }, +{ 0xD779, 0xD779, 0xD779 }, +{ 0xD77A, 0xD77A, 0xD77A }, +{ 0xD77B, 0xD77B, 0xD77B }, +{ 0xD77C, 0xD77C, 0xD77C }, +{ 0xD77D, 0xD77D, 0xD77D }, +{ 0xD77E, 0xD77E, 0xD77E }, +{ 0xD77F, 0xD77F, 0xD77F }, +{ 0xD780, 0xD780, 0xD780 }, +{ 0xD781, 0xD781, 0xD781 }, +{ 0xD782, 0xD782, 0xD782 }, +{ 0xD783, 0xD783, 0xD783 }, +{ 0xD784, 0xD784, 0xD784 }, +{ 0xD785, 0xD785, 0xD785 }, +{ 0xD786, 0xD786, 0xD786 }, +{ 0xD787, 0xD787, 0xD787 }, +{ 0xD788, 0xD788, 0xD788 }, +{ 0xD789, 0xD789, 0xD789 }, +{ 0xD78A, 0xD78A, 0xD78A }, +{ 0xD78B, 0xD78B, 0xD78B }, +{ 0xD78C, 0xD78C, 0xD78C }, +{ 0xD78D, 0xD78D, 0xD78D }, +{ 0xD78E, 0xD78E, 0xD78E }, +{ 0xD78F, 0xD78F, 0xD78F }, +{ 0xD790, 0xD790, 0xD790 }, +{ 0xD791, 0xD791, 0xD791 }, +{ 0xD792, 0xD792, 0xD792 }, +{ 0xD793, 0xD793, 0xD793 }, +{ 0xD794, 0xD794, 0xD794 }, +{ 0xD795, 0xD795, 0xD795 }, +{ 0xD796, 0xD796, 0xD796 }, +{ 0xD797, 0xD797, 0xD797 }, +{ 0xD798, 0xD798, 0xD798 }, +{ 0xD799, 0xD799, 0xD799 }, +{ 0xD79A, 0xD79A, 0xD79A }, +{ 0xD79B, 0xD79B, 0xD79B }, +{ 0xD79C, 0xD79C, 0xD79C }, +{ 0xD79D, 0xD79D, 0xD79D }, +{ 0xD79E, 0xD79E, 0xD79E }, +{ 0xD79F, 0xD79F, 0xD79F }, +{ 0xD7A0, 0xD7A0, 0xD7A0 }, +{ 0xD7A1, 0xD7A1, 0xD7A1 }, +{ 0xD7A2, 0xD7A2, 0xD7A2 }, +{ 0xD7A3, 0xD7A3, 0xD7A3 }, +{ 0xF900, 0xF900, 0xF900 }, +{ 0xF901, 0xF901, 0xF901 }, +{ 0xF902, 0xF902, 0xF902 }, +{ 0xF903, 0xF903, 0xF903 }, +{ 0xF904, 0xF904, 0xF904 }, +{ 0xF905, 0xF905, 0xF905 }, +{ 0xF906, 0xF906, 0xF906 }, +{ 0xF907, 0xF907, 0xF907 }, +{ 0xF908, 0xF908, 0xF908 }, +{ 0xF909, 0xF909, 0xF909 }, +{ 0xF90A, 0xF90A, 0xF90A }, +{ 0xF90B, 0xF90B, 0xF90B }, +{ 0xF90C, 0xF90C, 0xF90C }, +{ 0xF90D, 0xF90D, 0xF90D }, +{ 0xF90E, 0xF90E, 0xF90E }, +{ 0xF90F, 0xF90F, 0xF90F }, +{ 0xF910, 0xF910, 0xF910 }, +{ 0xF911, 0xF911, 0xF911 }, +{ 0xF912, 0xF912, 0xF912 }, +{ 0xF913, 0xF913, 0xF913 }, +{ 0xF914, 0xF914, 0xF914 }, +{ 0xF915, 0xF915, 0xF915 }, +{ 0xF916, 0xF916, 0xF916 }, +{ 0xF917, 0xF917, 0xF917 }, +{ 0xF918, 0xF918, 0xF918 }, +{ 0xF919, 0xF919, 0xF919 }, +{ 0xF91A, 0xF91A, 0xF91A }, +{ 0xF91B, 0xF91B, 0xF91B }, +{ 0xF91C, 0xF91C, 0xF91C }, +{ 0xF91D, 0xF91D, 0xF91D }, +{ 0xF91E, 0xF91E, 0xF91E }, +{ 0xF91F, 0xF91F, 0xF91F }, +{ 0xF920, 0xF920, 0xF920 }, +{ 0xF921, 0xF921, 0xF921 }, +{ 0xF922, 0xF922, 0xF922 }, +{ 0xF923, 0xF923, 0xF923 }, +{ 0xF924, 0xF924, 0xF924 }, +{ 0xF925, 0xF925, 0xF925 }, +{ 0xF926, 0xF926, 0xF926 }, +{ 0xF927, 0xF927, 0xF927 }, +{ 0xF928, 0xF928, 0xF928 }, +{ 0xF929, 0xF929, 0xF929 }, +{ 0xF92A, 0xF92A, 0xF92A }, +{ 0xF92B, 0xF92B, 0xF92B }, +{ 0xF92C, 0xF92C, 0xF92C }, +{ 0xF92D, 0xF92D, 0xF92D }, +{ 0xF92E, 0xF92E, 0xF92E }, +{ 0xF92F, 0xF92F, 0xF92F }, +{ 0xF930, 0xF930, 0xF930 }, +{ 0xF931, 0xF931, 0xF931 }, +{ 0xF932, 0xF932, 0xF932 }, +{ 0xF933, 0xF933, 0xF933 }, +{ 0xF934, 0xF934, 0xF934 }, +{ 0xF935, 0xF935, 0xF935 }, +{ 0xF936, 0xF936, 0xF936 }, +{ 0xF937, 0xF937, 0xF937 }, +{ 0xF938, 0xF938, 0xF938 }, +{ 0xF939, 0xF939, 0xF939 }, +{ 0xF93A, 0xF93A, 0xF93A }, +{ 0xF93B, 0xF93B, 0xF93B }, +{ 0xF93C, 0xF93C, 0xF93C }, +{ 0xF93D, 0xF93D, 0xF93D }, +{ 0xF93E, 0xF93E, 0xF93E }, +{ 0xF93F, 0xF93F, 0xF93F }, +{ 0xF940, 0xF940, 0xF940 }, +{ 0xF941, 0xF941, 0xF941 }, +{ 0xF942, 0xF942, 0xF942 }, +{ 0xF943, 0xF943, 0xF943 }, +{ 0xF944, 0xF944, 0xF944 }, +{ 0xF945, 0xF945, 0xF945 }, +{ 0xF946, 0xF946, 0xF946 }, +{ 0xF947, 0xF947, 0xF947 }, +{ 0xF948, 0xF948, 0xF948 }, +{ 0xF949, 0xF949, 0xF949 }, +{ 0xF94A, 0xF94A, 0xF94A }, +{ 0xF94B, 0xF94B, 0xF94B }, +{ 0xF94C, 0xF94C, 0xF94C }, +{ 0xF94D, 0xF94D, 0xF94D }, +{ 0xF94E, 0xF94E, 0xF94E }, +{ 0xF94F, 0xF94F, 0xF94F }, +{ 0xF950, 0xF950, 0xF950 }, +{ 0xF951, 0xF951, 0xF951 }, +{ 0xF952, 0xF952, 0xF952 }, +{ 0xF953, 0xF953, 0xF953 }, +{ 0xF954, 0xF954, 0xF954 }, +{ 0xF955, 0xF955, 0xF955 }, +{ 0xF956, 0xF956, 0xF956 }, +{ 0xF957, 0xF957, 0xF957 }, +{ 0xF958, 0xF958, 0xF958 }, +{ 0xF959, 0xF959, 0xF959 }, +{ 0xF95A, 0xF95A, 0xF95A }, +{ 0xF95B, 0xF95B, 0xF95B }, +{ 0xF95C, 0xF95C, 0xF95C }, +{ 0xF95D, 0xF95D, 0xF95D }, +{ 0xF95E, 0xF95E, 0xF95E }, +{ 0xF95F, 0xF95F, 0xF95F }, +{ 0xF960, 0xF960, 0xF960 }, +{ 0xF961, 0xF961, 0xF961 }, +{ 0xF962, 0xF962, 0xF962 }, +{ 0xF963, 0xF963, 0xF963 }, +{ 0xF964, 0xF964, 0xF964 }, +{ 0xF965, 0xF965, 0xF965 }, +{ 0xF966, 0xF966, 0xF966 }, +{ 0xF967, 0xF967, 0xF967 }, +{ 0xF968, 0xF968, 0xF968 }, +{ 0xF969, 0xF969, 0xF969 }, +{ 0xF96A, 0xF96A, 0xF96A }, +{ 0xF96B, 0xF96B, 0xF96B }, +{ 0xF96C, 0xF96C, 0xF96C }, +{ 0xF96D, 0xF96D, 0xF96D }, +{ 0xF96E, 0xF96E, 0xF96E }, +{ 0xF96F, 0xF96F, 0xF96F }, +{ 0xF970, 0xF970, 0xF970 }, +{ 0xF971, 0xF971, 0xF971 }, +{ 0xF972, 0xF972, 0xF972 }, +{ 0xF973, 0xF973, 0xF973 }, +{ 0xF974, 0xF974, 0xF974 }, +{ 0xF975, 0xF975, 0xF975 }, +{ 0xF976, 0xF976, 0xF976 }, +{ 0xF977, 0xF977, 0xF977 }, +{ 0xF978, 0xF978, 0xF978 }, +{ 0xF979, 0xF979, 0xF979 }, +{ 0xF97A, 0xF97A, 0xF97A }, +{ 0xF97B, 0xF97B, 0xF97B }, +{ 0xF97C, 0xF97C, 0xF97C }, +{ 0xF97D, 0xF97D, 0xF97D }, +{ 0xF97E, 0xF97E, 0xF97E }, +{ 0xF97F, 0xF97F, 0xF97F }, +{ 0xF980, 0xF980, 0xF980 }, +{ 0xF981, 0xF981, 0xF981 }, +{ 0xF982, 0xF982, 0xF982 }, +{ 0xF983, 0xF983, 0xF983 }, +{ 0xF984, 0xF984, 0xF984 }, +{ 0xF985, 0xF985, 0xF985 }, +{ 0xF986, 0xF986, 0xF986 }, +{ 0xF987, 0xF987, 0xF987 }, +{ 0xF988, 0xF988, 0xF988 }, +{ 0xF989, 0xF989, 0xF989 }, +{ 0xF98A, 0xF98A, 0xF98A }, +{ 0xF98B, 0xF98B, 0xF98B }, +{ 0xF98C, 0xF98C, 0xF98C }, +{ 0xF98D, 0xF98D, 0xF98D }, +{ 0xF98E, 0xF98E, 0xF98E }, +{ 0xF98F, 0xF98F, 0xF98F }, +{ 0xF990, 0xF990, 0xF990 }, +{ 0xF991, 0xF991, 0xF991 }, +{ 0xF992, 0xF992, 0xF992 }, +{ 0xF993, 0xF993, 0xF993 }, +{ 0xF994, 0xF994, 0xF994 }, +{ 0xF995, 0xF995, 0xF995 }, +{ 0xF996, 0xF996, 0xF996 }, +{ 0xF997, 0xF997, 0xF997 }, +{ 0xF998, 0xF998, 0xF998 }, +{ 0xF999, 0xF999, 0xF999 }, +{ 0xF99A, 0xF99A, 0xF99A }, +{ 0xF99B, 0xF99B, 0xF99B }, +{ 0xF99C, 0xF99C, 0xF99C }, +{ 0xF99D, 0xF99D, 0xF99D }, +{ 0xF99E, 0xF99E, 0xF99E }, +{ 0xF99F, 0xF99F, 0xF99F }, +{ 0xF9A0, 0xF9A0, 0xF9A0 }, +{ 0xF9A1, 0xF9A1, 0xF9A1 }, +{ 0xF9A2, 0xF9A2, 0xF9A2 }, +{ 0xF9A3, 0xF9A3, 0xF9A3 }, +{ 0xF9A4, 0xF9A4, 0xF9A4 }, +{ 0xF9A5, 0xF9A5, 0xF9A5 }, +{ 0xF9A6, 0xF9A6, 0xF9A6 }, +{ 0xF9A7, 0xF9A7, 0xF9A7 }, +{ 0xF9A8, 0xF9A8, 0xF9A8 }, +{ 0xF9A9, 0xF9A9, 0xF9A9 }, +{ 0xF9AA, 0xF9AA, 0xF9AA }, +{ 0xF9AB, 0xF9AB, 0xF9AB }, +{ 0xF9AC, 0xF9AC, 0xF9AC }, +{ 0xF9AD, 0xF9AD, 0xF9AD }, +{ 0xF9AE, 0xF9AE, 0xF9AE }, +{ 0xF9AF, 0xF9AF, 0xF9AF }, +{ 0xF9B0, 0xF9B0, 0xF9B0 }, +{ 0xF9B1, 0xF9B1, 0xF9B1 }, +{ 0xF9B2, 0xF9B2, 0xF9B2 }, +{ 0xF9B3, 0xF9B3, 0xF9B3 }, +{ 0xF9B4, 0xF9B4, 0xF9B4 }, +{ 0xF9B5, 0xF9B5, 0xF9B5 }, +{ 0xF9B6, 0xF9B6, 0xF9B6 }, +{ 0xF9B7, 0xF9B7, 0xF9B7 }, +{ 0xF9B8, 0xF9B8, 0xF9B8 }, +{ 0xF9B9, 0xF9B9, 0xF9B9 }, +{ 0xF9BA, 0xF9BA, 0xF9BA }, +{ 0xF9BB, 0xF9BB, 0xF9BB }, +{ 0xF9BC, 0xF9BC, 0xF9BC }, +{ 0xF9BD, 0xF9BD, 0xF9BD }, +{ 0xF9BE, 0xF9BE, 0xF9BE }, +{ 0xF9BF, 0xF9BF, 0xF9BF }, +{ 0xF9C0, 0xF9C0, 0xF9C0 }, +{ 0xF9C1, 0xF9C1, 0xF9C1 }, +{ 0xF9C2, 0xF9C2, 0xF9C2 }, +{ 0xF9C3, 0xF9C3, 0xF9C3 }, +{ 0xF9C4, 0xF9C4, 0xF9C4 }, +{ 0xF9C5, 0xF9C5, 0xF9C5 }, +{ 0xF9C6, 0xF9C6, 0xF9C6 }, +{ 0xF9C7, 0xF9C7, 0xF9C7 }, +{ 0xF9C8, 0xF9C8, 0xF9C8 }, +{ 0xF9C9, 0xF9C9, 0xF9C9 }, +{ 0xF9CA, 0xF9CA, 0xF9CA }, +{ 0xF9CB, 0xF9CB, 0xF9CB }, +{ 0xF9CC, 0xF9CC, 0xF9CC }, +{ 0xF9CD, 0xF9CD, 0xF9CD }, +{ 0xF9CE, 0xF9CE, 0xF9CE }, +{ 0xF9CF, 0xF9CF, 0xF9CF }, +{ 0xF9D0, 0xF9D0, 0xF9D0 }, +{ 0xF9D1, 0xF9D1, 0xF9D1 }, +{ 0xF9D2, 0xF9D2, 0xF9D2 }, +{ 0xF9D3, 0xF9D3, 0xF9D3 }, +{ 0xF9D4, 0xF9D4, 0xF9D4 }, +{ 0xF9D5, 0xF9D5, 0xF9D5 }, +{ 0xF9D6, 0xF9D6, 0xF9D6 }, +{ 0xF9D7, 0xF9D7, 0xF9D7 }, +{ 0xF9D8, 0xF9D8, 0xF9D8 }, +{ 0xF9D9, 0xF9D9, 0xF9D9 }, +{ 0xF9DA, 0xF9DA, 0xF9DA }, +{ 0xF9DB, 0xF9DB, 0xF9DB }, +{ 0xF9DC, 0xF9DC, 0xF9DC }, +{ 0xF9DD, 0xF9DD, 0xF9DD }, +{ 0xF9DE, 0xF9DE, 0xF9DE }, +{ 0xF9DF, 0xF9DF, 0xF9DF }, +{ 0xF9E0, 0xF9E0, 0xF9E0 }, +{ 0xF9E1, 0xF9E1, 0xF9E1 }, +{ 0xF9E2, 0xF9E2, 0xF9E2 }, +{ 0xF9E3, 0xF9E3, 0xF9E3 }, +{ 0xF9E4, 0xF9E4, 0xF9E4 }, +{ 0xF9E5, 0xF9E5, 0xF9E5 }, +{ 0xF9E6, 0xF9E6, 0xF9E6 }, +{ 0xF9E7, 0xF9E7, 0xF9E7 }, +{ 0xF9E8, 0xF9E8, 0xF9E8 }, +{ 0xF9E9, 0xF9E9, 0xF9E9 }, +{ 0xF9EA, 0xF9EA, 0xF9EA }, +{ 0xF9EB, 0xF9EB, 0xF9EB }, +{ 0xF9EC, 0xF9EC, 0xF9EC }, +{ 0xF9ED, 0xF9ED, 0xF9ED }, +{ 0xF9EE, 0xF9EE, 0xF9EE }, +{ 0xF9EF, 0xF9EF, 0xF9EF }, +{ 0xF9F0, 0xF9F0, 0xF9F0 }, +{ 0xF9F1, 0xF9F1, 0xF9F1 }, +{ 0xF9F2, 0xF9F2, 0xF9F2 }, +{ 0xF9F3, 0xF9F3, 0xF9F3 }, +{ 0xF9F4, 0xF9F4, 0xF9F4 }, +{ 0xF9F5, 0xF9F5, 0xF9F5 }, +{ 0xF9F6, 0xF9F6, 0xF9F6 }, +{ 0xF9F7, 0xF9F7, 0xF9F7 }, +{ 0xF9F8, 0xF9F8, 0xF9F8 }, +{ 0xF9F9, 0xF9F9, 0xF9F9 }, +{ 0xF9FA, 0xF9FA, 0xF9FA }, +{ 0xF9FB, 0xF9FB, 0xF9FB }, +{ 0xF9FC, 0xF9FC, 0xF9FC }, +{ 0xF9FD, 0xF9FD, 0xF9FD }, +{ 0xF9FE, 0xF9FE, 0xF9FE }, +{ 0xF9FF, 0xF9FF, 0xF9FF }, +{ 0xFA00, 0xFA00, 0xFA00 }, +{ 0xFA01, 0xFA01, 0xFA01 }, +{ 0xFA02, 0xFA02, 0xFA02 }, +{ 0xFA03, 0xFA03, 0xFA03 }, +{ 0xFA04, 0xFA04, 0xFA04 }, +{ 0xFA05, 0xFA05, 0xFA05 }, +{ 0xFA06, 0xFA06, 0xFA06 }, +{ 0xFA07, 0xFA07, 0xFA07 }, +{ 0xFA08, 0xFA08, 0xFA08 }, +{ 0xFA09, 0xFA09, 0xFA09 }, +{ 0xFA0A, 0xFA0A, 0xFA0A }, +{ 0xFA0B, 0xFA0B, 0xFA0B }, +{ 0xFA0C, 0xFA0C, 0xFA0C }, +{ 0xFA0D, 0xFA0D, 0xFA0D }, +{ 0xFA0E, 0xFA0E, 0xFA0E }, +{ 0xFA0F, 0xFA0F, 0xFA0F }, +{ 0xFA10, 0xFA10, 0xFA10 }, +{ 0xFA11, 0xFA11, 0xFA11 }, +{ 0xFA12, 0xFA12, 0xFA12 }, +{ 0xFA13, 0xFA13, 0xFA13 }, +{ 0xFA14, 0xFA14, 0xFA14 }, +{ 0xFA15, 0xFA15, 0xFA15 }, +{ 0xFA16, 0xFA16, 0xFA16 }, +{ 0xFA17, 0xFA17, 0xFA17 }, +{ 0xFA18, 0xFA18, 0xFA18 }, +{ 0xFA19, 0xFA19, 0xFA19 }, +{ 0xFA1A, 0xFA1A, 0xFA1A }, +{ 0xFA1B, 0xFA1B, 0xFA1B }, +{ 0xFA1C, 0xFA1C, 0xFA1C }, +{ 0xFA1D, 0xFA1D, 0xFA1D }, +{ 0xFA1E, 0xFA1E, 0xFA1E }, +{ 0xFA1F, 0xFA1F, 0xFA1F }, +{ 0xFA20, 0xFA20, 0xFA20 }, +{ 0xFA21, 0xFA21, 0xFA21 }, +{ 0xFA22, 0xFA22, 0xFA22 }, +{ 0xFA23, 0xFA23, 0xFA23 }, +{ 0xFA24, 0xFA24, 0xFA24 }, +{ 0xFA25, 0xFA25, 0xFA25 }, +{ 0xFA26, 0xFA26, 0xFA26 }, +{ 0xFA27, 0xFA27, 0xFA27 }, +{ 0xFA28, 0xFA28, 0xFA28 }, +{ 0xFA29, 0xFA29, 0xFA29 }, +{ 0xFA2A, 0xFA2A, 0xFA2A }, +{ 0xFA2B, 0xFA2B, 0xFA2B }, +{ 0xFA2C, 0xFA2C, 0xFA2C }, +{ 0xFA2D, 0xFA2D, 0xFA2D }, +{ 0xFA30, 0xFA30, 0xFA30 }, +{ 0xFA31, 0xFA31, 0xFA31 }, +{ 0xFA32, 0xFA32, 0xFA32 }, +{ 0xFA33, 0xFA33, 0xFA33 }, +{ 0xFA34, 0xFA34, 0xFA34 }, +{ 0xFA35, 0xFA35, 0xFA35 }, +{ 0xFA36, 0xFA36, 0xFA36 }, +{ 0xFA37, 0xFA37, 0xFA37 }, +{ 0xFA38, 0xFA38, 0xFA38 }, +{ 0xFA39, 0xFA39, 0xFA39 }, +{ 0xFA3A, 0xFA3A, 0xFA3A }, +{ 0xFA3B, 0xFA3B, 0xFA3B }, +{ 0xFA3C, 0xFA3C, 0xFA3C }, +{ 0xFA3D, 0xFA3D, 0xFA3D }, +{ 0xFA3E, 0xFA3E, 0xFA3E }, +{ 0xFA3F, 0xFA3F, 0xFA3F }, +{ 0xFA40, 0xFA40, 0xFA40 }, +{ 0xFA41, 0xFA41, 0xFA41 }, +{ 0xFA42, 0xFA42, 0xFA42 }, +{ 0xFA43, 0xFA43, 0xFA43 }, +{ 0xFA44, 0xFA44, 0xFA44 }, +{ 0xFA45, 0xFA45, 0xFA45 }, +{ 0xFA46, 0xFA46, 0xFA46 }, +{ 0xFA47, 0xFA47, 0xFA47 }, +{ 0xFA48, 0xFA48, 0xFA48 }, +{ 0xFA49, 0xFA49, 0xFA49 }, +{ 0xFA4A, 0xFA4A, 0xFA4A }, +{ 0xFA4B, 0xFA4B, 0xFA4B }, +{ 0xFA4C, 0xFA4C, 0xFA4C }, +{ 0xFA4D, 0xFA4D, 0xFA4D }, +{ 0xFA4E, 0xFA4E, 0xFA4E }, +{ 0xFA4F, 0xFA4F, 0xFA4F }, +{ 0xFA50, 0xFA50, 0xFA50 }, +{ 0xFA51, 0xFA51, 0xFA51 }, +{ 0xFA52, 0xFA52, 0xFA52 }, +{ 0xFA53, 0xFA53, 0xFA53 }, +{ 0xFA54, 0xFA54, 0xFA54 }, +{ 0xFA55, 0xFA55, 0xFA55 }, +{ 0xFA56, 0xFA56, 0xFA56 }, +{ 0xFA57, 0xFA57, 0xFA57 }, +{ 0xFA58, 0xFA58, 0xFA58 }, +{ 0xFA59, 0xFA59, 0xFA59 }, +{ 0xFA5A, 0xFA5A, 0xFA5A }, +{ 0xFA5B, 0xFA5B, 0xFA5B }, +{ 0xFA5C, 0xFA5C, 0xFA5C }, +{ 0xFA5D, 0xFA5D, 0xFA5D }, +{ 0xFA5E, 0xFA5E, 0xFA5E }, +{ 0xFA5F, 0xFA5F, 0xFA5F }, +{ 0xFA60, 0xFA60, 0xFA60 }, +{ 0xFA61, 0xFA61, 0xFA61 }, +{ 0xFA62, 0xFA62, 0xFA62 }, +{ 0xFA63, 0xFA63, 0xFA63 }, +{ 0xFA64, 0xFA64, 0xFA64 }, +{ 0xFA65, 0xFA65, 0xFA65 }, +{ 0xFA66, 0xFA66, 0xFA66 }, +{ 0xFA67, 0xFA67, 0xFA67 }, +{ 0xFA68, 0xFA68, 0xFA68 }, +{ 0xFA69, 0xFA69, 0xFA69 }, +{ 0xFA6A, 0xFA6A, 0xFA6A }, +{ 0xFA70, 0xFA70, 0xFA70 }, +{ 0xFA71, 0xFA71, 0xFA71 }, +{ 0xFA72, 0xFA72, 0xFA72 }, +{ 0xFA73, 0xFA73, 0xFA73 }, +{ 0xFA74, 0xFA74, 0xFA74 }, +{ 0xFA75, 0xFA75, 0xFA75 }, +{ 0xFA76, 0xFA76, 0xFA76 }, +{ 0xFA77, 0xFA77, 0xFA77 }, +{ 0xFA78, 0xFA78, 0xFA78 }, +{ 0xFA79, 0xFA79, 0xFA79 }, +{ 0xFA7A, 0xFA7A, 0xFA7A }, +{ 0xFA7B, 0xFA7B, 0xFA7B }, +{ 0xFA7C, 0xFA7C, 0xFA7C }, +{ 0xFA7D, 0xFA7D, 0xFA7D }, +{ 0xFA7E, 0xFA7E, 0xFA7E }, +{ 0xFA7F, 0xFA7F, 0xFA7F }, +{ 0xFA80, 0xFA80, 0xFA80 }, +{ 0xFA81, 0xFA81, 0xFA81 }, +{ 0xFA82, 0xFA82, 0xFA82 }, +{ 0xFA83, 0xFA83, 0xFA83 }, +{ 0xFA84, 0xFA84, 0xFA84 }, +{ 0xFA85, 0xFA85, 0xFA85 }, +{ 0xFA86, 0xFA86, 0xFA86 }, +{ 0xFA87, 0xFA87, 0xFA87 }, +{ 0xFA88, 0xFA88, 0xFA88 }, +{ 0xFA89, 0xFA89, 0xFA89 }, +{ 0xFA8A, 0xFA8A, 0xFA8A }, +{ 0xFA8B, 0xFA8B, 0xFA8B }, +{ 0xFA8C, 0xFA8C, 0xFA8C }, +{ 0xFA8D, 0xFA8D, 0xFA8D }, +{ 0xFA8E, 0xFA8E, 0xFA8E }, +{ 0xFA8F, 0xFA8F, 0xFA8F }, +{ 0xFA90, 0xFA90, 0xFA90 }, +{ 0xFA91, 0xFA91, 0xFA91 }, +{ 0xFA92, 0xFA92, 0xFA92 }, +{ 0xFA93, 0xFA93, 0xFA93 }, +{ 0xFA94, 0xFA94, 0xFA94 }, +{ 0xFA95, 0xFA95, 0xFA95 }, +{ 0xFA96, 0xFA96, 0xFA96 }, +{ 0xFA97, 0xFA97, 0xFA97 }, +{ 0xFA98, 0xFA98, 0xFA98 }, +{ 0xFA99, 0xFA99, 0xFA99 }, +{ 0xFA9A, 0xFA9A, 0xFA9A }, +{ 0xFA9B, 0xFA9B, 0xFA9B }, +{ 0xFA9C, 0xFA9C, 0xFA9C }, +{ 0xFA9D, 0xFA9D, 0xFA9D }, +{ 0xFA9E, 0xFA9E, 0xFA9E }, +{ 0xFA9F, 0xFA9F, 0xFA9F }, +{ 0xFAA0, 0xFAA0, 0xFAA0 }, +{ 0xFAA1, 0xFAA1, 0xFAA1 }, +{ 0xFAA2, 0xFAA2, 0xFAA2 }, +{ 0xFAA3, 0xFAA3, 0xFAA3 }, +{ 0xFAA4, 0xFAA4, 0xFAA4 }, +{ 0xFAA5, 0xFAA5, 0xFAA5 }, +{ 0xFAA6, 0xFAA6, 0xFAA6 }, +{ 0xFAA7, 0xFAA7, 0xFAA7 }, +{ 0xFAA8, 0xFAA8, 0xFAA8 }, +{ 0xFAA9, 0xFAA9, 0xFAA9 }, +{ 0xFAAA, 0xFAAA, 0xFAAA }, +{ 0xFAAB, 0xFAAB, 0xFAAB }, +{ 0xFAAC, 0xFAAC, 0xFAAC }, +{ 0xFAAD, 0xFAAD, 0xFAAD }, +{ 0xFAAE, 0xFAAE, 0xFAAE }, +{ 0xFAAF, 0xFAAF, 0xFAAF }, +{ 0xFAB0, 0xFAB0, 0xFAB0 }, +{ 0xFAB1, 0xFAB1, 0xFAB1 }, +{ 0xFAB2, 0xFAB2, 0xFAB2 }, +{ 0xFAB3, 0xFAB3, 0xFAB3 }, +{ 0xFAB4, 0xFAB4, 0xFAB4 }, +{ 0xFAB5, 0xFAB5, 0xFAB5 }, +{ 0xFAB6, 0xFAB6, 0xFAB6 }, +{ 0xFAB7, 0xFAB7, 0xFAB7 }, +{ 0xFAB8, 0xFAB8, 0xFAB8 }, +{ 0xFAB9, 0xFAB9, 0xFAB9 }, +{ 0xFABA, 0xFABA, 0xFABA }, +{ 0xFABB, 0xFABB, 0xFABB }, +{ 0xFABC, 0xFABC, 0xFABC }, +{ 0xFABD, 0xFABD, 0xFABD }, +{ 0xFABE, 0xFABE, 0xFABE }, +{ 0xFABF, 0xFABF, 0xFABF }, +{ 0xFAC0, 0xFAC0, 0xFAC0 }, +{ 0xFAC1, 0xFAC1, 0xFAC1 }, +{ 0xFAC2, 0xFAC2, 0xFAC2 }, +{ 0xFAC3, 0xFAC3, 0xFAC3 }, +{ 0xFAC4, 0xFAC4, 0xFAC4 }, +{ 0xFAC5, 0xFAC5, 0xFAC5 }, +{ 0xFAC6, 0xFAC6, 0xFAC6 }, +{ 0xFAC7, 0xFAC7, 0xFAC7 }, +{ 0xFAC8, 0xFAC8, 0xFAC8 }, +{ 0xFAC9, 0xFAC9, 0xFAC9 }, +{ 0xFACA, 0xFACA, 0xFACA }, +{ 0xFACB, 0xFACB, 0xFACB }, +{ 0xFACC, 0xFACC, 0xFACC }, +{ 0xFACD, 0xFACD, 0xFACD }, +{ 0xFACE, 0xFACE, 0xFACE }, +{ 0xFACF, 0xFACF, 0xFACF }, +{ 0xFAD0, 0xFAD0, 0xFAD0 }, +{ 0xFAD1, 0xFAD1, 0xFAD1 }, +{ 0xFAD2, 0xFAD2, 0xFAD2 }, +{ 0xFAD3, 0xFAD3, 0xFAD3 }, +{ 0xFAD4, 0xFAD4, 0xFAD4 }, +{ 0xFAD5, 0xFAD5, 0xFAD5 }, +{ 0xFAD6, 0xFAD6, 0xFAD6 }, +{ 0xFAD7, 0xFAD7, 0xFAD7 }, +{ 0xFAD8, 0xFAD8, 0xFAD8 }, +{ 0xFAD9, 0xFAD9, 0xFAD9 }, +{ 0xFB00, 0xFB00, 0xFB00 }, +{ 0xFB01, 0xFB01, 0xFB01 }, +{ 0xFB02, 0xFB02, 0xFB02 }, +{ 0xFB03, 0xFB03, 0xFB03 }, +{ 0xFB04, 0xFB04, 0xFB04 }, +{ 0xFB05, 0xFB05, 0xFB05 }, +{ 0xFB06, 0xFB06, 0xFB06 }, +{ 0xFB13, 0xFB13, 0xFB13 }, +{ 0xFB14, 0xFB14, 0xFB14 }, +{ 0xFB15, 0xFB15, 0xFB15 }, +{ 0xFB16, 0xFB16, 0xFB16 }, +{ 0xFB17, 0xFB17, 0xFB17 }, +{ 0xFB1D, 0xFB1D, 0xFB1D }, +{ 0xFB1E, 0xFB1E, 0xFB1E }, +{ 0xFB1F, 0xFB1F, 0xFB1F }, +{ 0xFB20, 0xFB20, 0xFB20 }, +{ 0xFB21, 0xFB21, 0xFB21 }, +{ 0xFB22, 0xFB22, 0xFB22 }, +{ 0xFB23, 0xFB23, 0xFB23 }, +{ 0xFB24, 0xFB24, 0xFB24 }, +{ 0xFB25, 0xFB25, 0xFB25 }, +{ 0xFB26, 0xFB26, 0xFB26 }, +{ 0xFB27, 0xFB27, 0xFB27 }, +{ 0xFB28, 0xFB28, 0xFB28 }, +{ 0xFB2A, 0xFB2A, 0xFB2A }, +{ 0xFB2B, 0xFB2B, 0xFB2B }, +{ 0xFB2C, 0xFB2C, 0xFB2C }, +{ 0xFB2D, 0xFB2D, 0xFB2D }, +{ 0xFB2E, 0xFB2E, 0xFB2E }, +{ 0xFB2F, 0xFB2F, 0xFB2F }, +{ 0xFB30, 0xFB30, 0xFB30 }, +{ 0xFB31, 0xFB31, 0xFB31 }, +{ 0xFB32, 0xFB32, 0xFB32 }, +{ 0xFB33, 0xFB33, 0xFB33 }, +{ 0xFB34, 0xFB34, 0xFB34 }, +{ 0xFB35, 0xFB35, 0xFB35 }, +{ 0xFB36, 0xFB36, 0xFB36 }, +{ 0xFB38, 0xFB38, 0xFB38 }, +{ 0xFB39, 0xFB39, 0xFB39 }, +{ 0xFB3A, 0xFB3A, 0xFB3A }, +{ 0xFB3B, 0xFB3B, 0xFB3B }, +{ 0xFB3C, 0xFB3C, 0xFB3C }, +{ 0xFB3E, 0xFB3E, 0xFB3E }, +{ 0xFB40, 0xFB40, 0xFB40 }, +{ 0xFB41, 0xFB41, 0xFB41 }, +{ 0xFB43, 0xFB43, 0xFB43 }, +{ 0xFB44, 0xFB44, 0xFB44 }, +{ 0xFB46, 0xFB46, 0xFB46 }, +{ 0xFB47, 0xFB47, 0xFB47 }, +{ 0xFB48, 0xFB48, 0xFB48 }, +{ 0xFB49, 0xFB49, 0xFB49 }, +{ 0xFB4A, 0xFB4A, 0xFB4A }, +{ 0xFB4B, 0xFB4B, 0xFB4B }, +{ 0xFB4C, 0xFB4C, 0xFB4C }, +{ 0xFB4D, 0xFB4D, 0xFB4D }, +{ 0xFB4E, 0xFB4E, 0xFB4E }, +{ 0xFB4F, 0xFB4F, 0xFB4F }, +{ 0xFB50, 0xFB50, 0xFB50 }, +{ 0xFB51, 0xFB51, 0xFB51 }, +{ 0xFB52, 0xFB52, 0xFB52 }, +{ 0xFB53, 0xFB53, 0xFB53 }, +{ 0xFB54, 0xFB54, 0xFB54 }, +{ 0xFB55, 0xFB55, 0xFB55 }, +{ 0xFB56, 0xFB56, 0xFB56 }, +{ 0xFB57, 0xFB57, 0xFB57 }, +{ 0xFB58, 0xFB58, 0xFB58 }, +{ 0xFB59, 0xFB59, 0xFB59 }, +{ 0xFB5A, 0xFB5A, 0xFB5A }, +{ 0xFB5B, 0xFB5B, 0xFB5B }, +{ 0xFB5C, 0xFB5C, 0xFB5C }, +{ 0xFB5D, 0xFB5D, 0xFB5D }, +{ 0xFB5E, 0xFB5E, 0xFB5E }, +{ 0xFB5F, 0xFB5F, 0xFB5F }, +{ 0xFB60, 0xFB60, 0xFB60 }, +{ 0xFB61, 0xFB61, 0xFB61 }, +{ 0xFB62, 0xFB62, 0xFB62 }, +{ 0xFB63, 0xFB63, 0xFB63 }, +{ 0xFB64, 0xFB64, 0xFB64 }, +{ 0xFB65, 0xFB65, 0xFB65 }, +{ 0xFB66, 0xFB66, 0xFB66 }, +{ 0xFB67, 0xFB67, 0xFB67 }, +{ 0xFB68, 0xFB68, 0xFB68 }, +{ 0xFB69, 0xFB69, 0xFB69 }, +{ 0xFB6A, 0xFB6A, 0xFB6A }, +{ 0xFB6B, 0xFB6B, 0xFB6B }, +{ 0xFB6C, 0xFB6C, 0xFB6C }, +{ 0xFB6D, 0xFB6D, 0xFB6D }, +{ 0xFB6E, 0xFB6E, 0xFB6E }, +{ 0xFB6F, 0xFB6F, 0xFB6F }, +{ 0xFB70, 0xFB70, 0xFB70 }, +{ 0xFB71, 0xFB71, 0xFB71 }, +{ 0xFB72, 0xFB72, 0xFB72 }, +{ 0xFB73, 0xFB73, 0xFB73 }, +{ 0xFB74, 0xFB74, 0xFB74 }, +{ 0xFB75, 0xFB75, 0xFB75 }, +{ 0xFB76, 0xFB76, 0xFB76 }, +{ 0xFB77, 0xFB77, 0xFB77 }, +{ 0xFB78, 0xFB78, 0xFB78 }, +{ 0xFB79, 0xFB79, 0xFB79 }, +{ 0xFB7A, 0xFB7A, 0xFB7A }, +{ 0xFB7B, 0xFB7B, 0xFB7B }, +{ 0xFB7C, 0xFB7C, 0xFB7C }, +{ 0xFB7D, 0xFB7D, 0xFB7D }, +{ 0xFB7E, 0xFB7E, 0xFB7E }, +{ 0xFB7F, 0xFB7F, 0xFB7F }, +{ 0xFB80, 0xFB80, 0xFB80 }, +{ 0xFB81, 0xFB81, 0xFB81 }, +{ 0xFB82, 0xFB82, 0xFB82 }, +{ 0xFB83, 0xFB83, 0xFB83 }, +{ 0xFB84, 0xFB84, 0xFB84 }, +{ 0xFB85, 0xFB85, 0xFB85 }, +{ 0xFB86, 0xFB86, 0xFB86 }, +{ 0xFB87, 0xFB87, 0xFB87 }, +{ 0xFB88, 0xFB88, 0xFB88 }, +{ 0xFB89, 0xFB89, 0xFB89 }, +{ 0xFB8A, 0xFB8A, 0xFB8A }, +{ 0xFB8B, 0xFB8B, 0xFB8B }, +{ 0xFB8C, 0xFB8C, 0xFB8C }, +{ 0xFB8D, 0xFB8D, 0xFB8D }, +{ 0xFB8E, 0xFB8E, 0xFB8E }, +{ 0xFB8F, 0xFB8F, 0xFB8F }, +{ 0xFB90, 0xFB90, 0xFB90 }, +{ 0xFB91, 0xFB91, 0xFB91 }, +{ 0xFB92, 0xFB92, 0xFB92 }, +{ 0xFB93, 0xFB93, 0xFB93 }, +{ 0xFB94, 0xFB94, 0xFB94 }, +{ 0xFB95, 0xFB95, 0xFB95 }, +{ 0xFB96, 0xFB96, 0xFB96 }, +{ 0xFB97, 0xFB97, 0xFB97 }, +{ 0xFB98, 0xFB98, 0xFB98 }, +{ 0xFB99, 0xFB99, 0xFB99 }, +{ 0xFB9A, 0xFB9A, 0xFB9A }, +{ 0xFB9B, 0xFB9B, 0xFB9B }, +{ 0xFB9C, 0xFB9C, 0xFB9C }, +{ 0xFB9D, 0xFB9D, 0xFB9D }, +{ 0xFB9E, 0xFB9E, 0xFB9E }, +{ 0xFB9F, 0xFB9F, 0xFB9F }, +{ 0xFBA0, 0xFBA0, 0xFBA0 }, +{ 0xFBA1, 0xFBA1, 0xFBA1 }, +{ 0xFBA2, 0xFBA2, 0xFBA2 }, +{ 0xFBA3, 0xFBA3, 0xFBA3 }, +{ 0xFBA4, 0xFBA4, 0xFBA4 }, +{ 0xFBA5, 0xFBA5, 0xFBA5 }, +{ 0xFBA6, 0xFBA6, 0xFBA6 }, +{ 0xFBA7, 0xFBA7, 0xFBA7 }, +{ 0xFBA8, 0xFBA8, 0xFBA8 }, +{ 0xFBA9, 0xFBA9, 0xFBA9 }, +{ 0xFBAA, 0xFBAA, 0xFBAA }, +{ 0xFBAB, 0xFBAB, 0xFBAB }, +{ 0xFBAC, 0xFBAC, 0xFBAC }, +{ 0xFBAD, 0xFBAD, 0xFBAD }, +{ 0xFBAE, 0xFBAE, 0xFBAE }, +{ 0xFBAF, 0xFBAF, 0xFBAF }, +{ 0xFBB0, 0xFBB0, 0xFBB0 }, +{ 0xFBB1, 0xFBB1, 0xFBB1 }, +{ 0xFBD3, 0xFBD3, 0xFBD3 }, +{ 0xFBD4, 0xFBD4, 0xFBD4 }, +{ 0xFBD5, 0xFBD5, 0xFBD5 }, +{ 0xFBD6, 0xFBD6, 0xFBD6 }, +{ 0xFBD7, 0xFBD7, 0xFBD7 }, +{ 0xFBD8, 0xFBD8, 0xFBD8 }, +{ 0xFBD9, 0xFBD9, 0xFBD9 }, +{ 0xFBDA, 0xFBDA, 0xFBDA }, +{ 0xFBDB, 0xFBDB, 0xFBDB }, +{ 0xFBDC, 0xFBDC, 0xFBDC }, +{ 0xFBDD, 0xFBDD, 0xFBDD }, +{ 0xFBDE, 0xFBDE, 0xFBDE }, +{ 0xFBDF, 0xFBDF, 0xFBDF }, +{ 0xFBE0, 0xFBE0, 0xFBE0 }, +{ 0xFBE1, 0xFBE1, 0xFBE1 }, +{ 0xFBE2, 0xFBE2, 0xFBE2 }, +{ 0xFBE3, 0xFBE3, 0xFBE3 }, +{ 0xFBE4, 0xFBE4, 0xFBE4 }, +{ 0xFBE5, 0xFBE5, 0xFBE5 }, +{ 0xFBE6, 0xFBE6, 0xFBE6 }, +{ 0xFBE7, 0xFBE7, 0xFBE7 }, +{ 0xFBE8, 0xFBE8, 0xFBE8 }, +{ 0xFBE9, 0xFBE9, 0xFBE9 }, +{ 0xFBEA, 0xFBEA, 0xFBEA }, +{ 0xFBEB, 0xFBEB, 0xFBEB }, +{ 0xFBEC, 0xFBEC, 0xFBEC }, +{ 0xFBED, 0xFBED, 0xFBED }, +{ 0xFBEE, 0xFBEE, 0xFBEE }, +{ 0xFBEF, 0xFBEF, 0xFBEF }, +{ 0xFBF0, 0xFBF0, 0xFBF0 }, +{ 0xFBF1, 0xFBF1, 0xFBF1 }, +{ 0xFBF2, 0xFBF2, 0xFBF2 }, +{ 0xFBF3, 0xFBF3, 0xFBF3 }, +{ 0xFBF4, 0xFBF4, 0xFBF4 }, +{ 0xFBF5, 0xFBF5, 0xFBF5 }, +{ 0xFBF6, 0xFBF6, 0xFBF6 }, +{ 0xFBF7, 0xFBF7, 0xFBF7 }, +{ 0xFBF8, 0xFBF8, 0xFBF8 }, +{ 0xFBF9, 0xFBF9, 0xFBF9 }, +{ 0xFBFA, 0xFBFA, 0xFBFA }, +{ 0xFBFB, 0xFBFB, 0xFBFB }, +{ 0xFBFC, 0xFBFC, 0xFBFC }, +{ 0xFBFD, 0xFBFD, 0xFBFD }, +{ 0xFBFE, 0xFBFE, 0xFBFE }, +{ 0xFBFF, 0xFBFF, 0xFBFF }, +{ 0xFC00, 0xFC00, 0xFC00 }, +{ 0xFC01, 0xFC01, 0xFC01 }, +{ 0xFC02, 0xFC02, 0xFC02 }, +{ 0xFC03, 0xFC03, 0xFC03 }, +{ 0xFC04, 0xFC04, 0xFC04 }, +{ 0xFC05, 0xFC05, 0xFC05 }, +{ 0xFC06, 0xFC06, 0xFC06 }, +{ 0xFC07, 0xFC07, 0xFC07 }, +{ 0xFC08, 0xFC08, 0xFC08 }, +{ 0xFC09, 0xFC09, 0xFC09 }, +{ 0xFC0A, 0xFC0A, 0xFC0A }, +{ 0xFC0B, 0xFC0B, 0xFC0B }, +{ 0xFC0C, 0xFC0C, 0xFC0C }, +{ 0xFC0D, 0xFC0D, 0xFC0D }, +{ 0xFC0E, 0xFC0E, 0xFC0E }, +{ 0xFC0F, 0xFC0F, 0xFC0F }, +{ 0xFC10, 0xFC10, 0xFC10 }, +{ 0xFC11, 0xFC11, 0xFC11 }, +{ 0xFC12, 0xFC12, 0xFC12 }, +{ 0xFC13, 0xFC13, 0xFC13 }, +{ 0xFC14, 0xFC14, 0xFC14 }, +{ 0xFC15, 0xFC15, 0xFC15 }, +{ 0xFC16, 0xFC16, 0xFC16 }, +{ 0xFC17, 0xFC17, 0xFC17 }, +{ 0xFC18, 0xFC18, 0xFC18 }, +{ 0xFC19, 0xFC19, 0xFC19 }, +{ 0xFC1A, 0xFC1A, 0xFC1A }, +{ 0xFC1B, 0xFC1B, 0xFC1B }, +{ 0xFC1C, 0xFC1C, 0xFC1C }, +{ 0xFC1D, 0xFC1D, 0xFC1D }, +{ 0xFC1E, 0xFC1E, 0xFC1E }, +{ 0xFC1F, 0xFC1F, 0xFC1F }, +{ 0xFC20, 0xFC20, 0xFC20 }, +{ 0xFC21, 0xFC21, 0xFC21 }, +{ 0xFC22, 0xFC22, 0xFC22 }, +{ 0xFC23, 0xFC23, 0xFC23 }, +{ 0xFC24, 0xFC24, 0xFC24 }, +{ 0xFC25, 0xFC25, 0xFC25 }, +{ 0xFC26, 0xFC26, 0xFC26 }, +{ 0xFC27, 0xFC27, 0xFC27 }, +{ 0xFC28, 0xFC28, 0xFC28 }, +{ 0xFC29, 0xFC29, 0xFC29 }, +{ 0xFC2A, 0xFC2A, 0xFC2A }, +{ 0xFC2B, 0xFC2B, 0xFC2B }, +{ 0xFC2C, 0xFC2C, 0xFC2C }, +{ 0xFC2D, 0xFC2D, 0xFC2D }, +{ 0xFC2E, 0xFC2E, 0xFC2E }, +{ 0xFC2F, 0xFC2F, 0xFC2F }, +{ 0xFC30, 0xFC30, 0xFC30 }, +{ 0xFC31, 0xFC31, 0xFC31 }, +{ 0xFC32, 0xFC32, 0xFC32 }, +{ 0xFC33, 0xFC33, 0xFC33 }, +{ 0xFC34, 0xFC34, 0xFC34 }, +{ 0xFC35, 0xFC35, 0xFC35 }, +{ 0xFC36, 0xFC36, 0xFC36 }, +{ 0xFC37, 0xFC37, 0xFC37 }, +{ 0xFC38, 0xFC38, 0xFC38 }, +{ 0xFC39, 0xFC39, 0xFC39 }, +{ 0xFC3A, 0xFC3A, 0xFC3A }, +{ 0xFC3B, 0xFC3B, 0xFC3B }, +{ 0xFC3C, 0xFC3C, 0xFC3C }, +{ 0xFC3D, 0xFC3D, 0xFC3D }, +{ 0xFC3E, 0xFC3E, 0xFC3E }, +{ 0xFC3F, 0xFC3F, 0xFC3F }, +{ 0xFC40, 0xFC40, 0xFC40 }, +{ 0xFC41, 0xFC41, 0xFC41 }, +{ 0xFC42, 0xFC42, 0xFC42 }, +{ 0xFC43, 0xFC43, 0xFC43 }, +{ 0xFC44, 0xFC44, 0xFC44 }, +{ 0xFC45, 0xFC45, 0xFC45 }, +{ 0xFC46, 0xFC46, 0xFC46 }, +{ 0xFC47, 0xFC47, 0xFC47 }, +{ 0xFC48, 0xFC48, 0xFC48 }, +{ 0xFC49, 0xFC49, 0xFC49 }, +{ 0xFC4A, 0xFC4A, 0xFC4A }, +{ 0xFC4B, 0xFC4B, 0xFC4B }, +{ 0xFC4C, 0xFC4C, 0xFC4C }, +{ 0xFC4D, 0xFC4D, 0xFC4D }, +{ 0xFC4E, 0xFC4E, 0xFC4E }, +{ 0xFC4F, 0xFC4F, 0xFC4F }, +{ 0xFC50, 0xFC50, 0xFC50 }, +{ 0xFC51, 0xFC51, 0xFC51 }, +{ 0xFC52, 0xFC52, 0xFC52 }, +{ 0xFC53, 0xFC53, 0xFC53 }, +{ 0xFC54, 0xFC54, 0xFC54 }, +{ 0xFC55, 0xFC55, 0xFC55 }, +{ 0xFC56, 0xFC56, 0xFC56 }, +{ 0xFC57, 0xFC57, 0xFC57 }, +{ 0xFC58, 0xFC58, 0xFC58 }, +{ 0xFC59, 0xFC59, 0xFC59 }, +{ 0xFC5A, 0xFC5A, 0xFC5A }, +{ 0xFC5B, 0xFC5B, 0xFC5B }, +{ 0xFC5C, 0xFC5C, 0xFC5C }, +{ 0xFC5D, 0xFC5D, 0xFC5D }, +{ 0xFC5E, 0xFC5E, 0xFC5E }, +{ 0xFC5F, 0xFC5F, 0xFC5F }, +{ 0xFC60, 0xFC60, 0xFC60 }, +{ 0xFC61, 0xFC61, 0xFC61 }, +{ 0xFC62, 0xFC62, 0xFC62 }, +{ 0xFC63, 0xFC63, 0xFC63 }, +{ 0xFC64, 0xFC64, 0xFC64 }, +{ 0xFC65, 0xFC65, 0xFC65 }, +{ 0xFC66, 0xFC66, 0xFC66 }, +{ 0xFC67, 0xFC67, 0xFC67 }, +{ 0xFC68, 0xFC68, 0xFC68 }, +{ 0xFC69, 0xFC69, 0xFC69 }, +{ 0xFC6A, 0xFC6A, 0xFC6A }, +{ 0xFC6B, 0xFC6B, 0xFC6B }, +{ 0xFC6C, 0xFC6C, 0xFC6C }, +{ 0xFC6D, 0xFC6D, 0xFC6D }, +{ 0xFC6E, 0xFC6E, 0xFC6E }, +{ 0xFC6F, 0xFC6F, 0xFC6F }, +{ 0xFC70, 0xFC70, 0xFC70 }, +{ 0xFC71, 0xFC71, 0xFC71 }, +{ 0xFC72, 0xFC72, 0xFC72 }, +{ 0xFC73, 0xFC73, 0xFC73 }, +{ 0xFC74, 0xFC74, 0xFC74 }, +{ 0xFC75, 0xFC75, 0xFC75 }, +{ 0xFC76, 0xFC76, 0xFC76 }, +{ 0xFC77, 0xFC77, 0xFC77 }, +{ 0xFC78, 0xFC78, 0xFC78 }, +{ 0xFC79, 0xFC79, 0xFC79 }, +{ 0xFC7A, 0xFC7A, 0xFC7A }, +{ 0xFC7B, 0xFC7B, 0xFC7B }, +{ 0xFC7C, 0xFC7C, 0xFC7C }, +{ 0xFC7D, 0xFC7D, 0xFC7D }, +{ 0xFC7E, 0xFC7E, 0xFC7E }, +{ 0xFC7F, 0xFC7F, 0xFC7F }, +{ 0xFC80, 0xFC80, 0xFC80 }, +{ 0xFC81, 0xFC81, 0xFC81 }, +{ 0xFC82, 0xFC82, 0xFC82 }, +{ 0xFC83, 0xFC83, 0xFC83 }, +{ 0xFC84, 0xFC84, 0xFC84 }, +{ 0xFC85, 0xFC85, 0xFC85 }, +{ 0xFC86, 0xFC86, 0xFC86 }, +{ 0xFC87, 0xFC87, 0xFC87 }, +{ 0xFC88, 0xFC88, 0xFC88 }, +{ 0xFC89, 0xFC89, 0xFC89 }, +{ 0xFC8A, 0xFC8A, 0xFC8A }, +{ 0xFC8B, 0xFC8B, 0xFC8B }, +{ 0xFC8C, 0xFC8C, 0xFC8C }, +{ 0xFC8D, 0xFC8D, 0xFC8D }, +{ 0xFC8E, 0xFC8E, 0xFC8E }, +{ 0xFC8F, 0xFC8F, 0xFC8F }, +{ 0xFC90, 0xFC90, 0xFC90 }, +{ 0xFC91, 0xFC91, 0xFC91 }, +{ 0xFC92, 0xFC92, 0xFC92 }, +{ 0xFC93, 0xFC93, 0xFC93 }, +{ 0xFC94, 0xFC94, 0xFC94 }, +{ 0xFC95, 0xFC95, 0xFC95 }, +{ 0xFC96, 0xFC96, 0xFC96 }, +{ 0xFC97, 0xFC97, 0xFC97 }, +{ 0xFC98, 0xFC98, 0xFC98 }, +{ 0xFC99, 0xFC99, 0xFC99 }, +{ 0xFC9A, 0xFC9A, 0xFC9A }, +{ 0xFC9B, 0xFC9B, 0xFC9B }, +{ 0xFC9C, 0xFC9C, 0xFC9C }, +{ 0xFC9D, 0xFC9D, 0xFC9D }, +{ 0xFC9E, 0xFC9E, 0xFC9E }, +{ 0xFC9F, 0xFC9F, 0xFC9F }, +{ 0xFCA0, 0xFCA0, 0xFCA0 }, +{ 0xFCA1, 0xFCA1, 0xFCA1 }, +{ 0xFCA2, 0xFCA2, 0xFCA2 }, +{ 0xFCA3, 0xFCA3, 0xFCA3 }, +{ 0xFCA4, 0xFCA4, 0xFCA4 }, +{ 0xFCA5, 0xFCA5, 0xFCA5 }, +{ 0xFCA6, 0xFCA6, 0xFCA6 }, +{ 0xFCA7, 0xFCA7, 0xFCA7 }, +{ 0xFCA8, 0xFCA8, 0xFCA8 }, +{ 0xFCA9, 0xFCA9, 0xFCA9 }, +{ 0xFCAA, 0xFCAA, 0xFCAA }, +{ 0xFCAB, 0xFCAB, 0xFCAB }, +{ 0xFCAC, 0xFCAC, 0xFCAC }, +{ 0xFCAD, 0xFCAD, 0xFCAD }, +{ 0xFCAE, 0xFCAE, 0xFCAE }, +{ 0xFCAF, 0xFCAF, 0xFCAF }, +{ 0xFCB0, 0xFCB0, 0xFCB0 }, +{ 0xFCB1, 0xFCB1, 0xFCB1 }, +{ 0xFCB2, 0xFCB2, 0xFCB2 }, +{ 0xFCB3, 0xFCB3, 0xFCB3 }, +{ 0xFCB4, 0xFCB4, 0xFCB4 }, +{ 0xFCB5, 0xFCB5, 0xFCB5 }, +{ 0xFCB6, 0xFCB6, 0xFCB6 }, +{ 0xFCB7, 0xFCB7, 0xFCB7 }, +{ 0xFCB8, 0xFCB8, 0xFCB8 }, +{ 0xFCB9, 0xFCB9, 0xFCB9 }, +{ 0xFCBA, 0xFCBA, 0xFCBA }, +{ 0xFCBB, 0xFCBB, 0xFCBB }, +{ 0xFCBC, 0xFCBC, 0xFCBC }, +{ 0xFCBD, 0xFCBD, 0xFCBD }, +{ 0xFCBE, 0xFCBE, 0xFCBE }, +{ 0xFCBF, 0xFCBF, 0xFCBF }, +{ 0xFCC0, 0xFCC0, 0xFCC0 }, +{ 0xFCC1, 0xFCC1, 0xFCC1 }, +{ 0xFCC2, 0xFCC2, 0xFCC2 }, +{ 0xFCC3, 0xFCC3, 0xFCC3 }, +{ 0xFCC4, 0xFCC4, 0xFCC4 }, +{ 0xFCC5, 0xFCC5, 0xFCC5 }, +{ 0xFCC6, 0xFCC6, 0xFCC6 }, +{ 0xFCC7, 0xFCC7, 0xFCC7 }, +{ 0xFCC8, 0xFCC8, 0xFCC8 }, +{ 0xFCC9, 0xFCC9, 0xFCC9 }, +{ 0xFCCA, 0xFCCA, 0xFCCA }, +{ 0xFCCB, 0xFCCB, 0xFCCB }, +{ 0xFCCC, 0xFCCC, 0xFCCC }, +{ 0xFCCD, 0xFCCD, 0xFCCD }, +{ 0xFCCE, 0xFCCE, 0xFCCE }, +{ 0xFCCF, 0xFCCF, 0xFCCF }, +{ 0xFCD0, 0xFCD0, 0xFCD0 }, +{ 0xFCD1, 0xFCD1, 0xFCD1 }, +{ 0xFCD2, 0xFCD2, 0xFCD2 }, +{ 0xFCD3, 0xFCD3, 0xFCD3 }, +{ 0xFCD4, 0xFCD4, 0xFCD4 }, +{ 0xFCD5, 0xFCD5, 0xFCD5 }, +{ 0xFCD6, 0xFCD6, 0xFCD6 }, +{ 0xFCD7, 0xFCD7, 0xFCD7 }, +{ 0xFCD8, 0xFCD8, 0xFCD8 }, +{ 0xFCD9, 0xFCD9, 0xFCD9 }, +{ 0xFCDA, 0xFCDA, 0xFCDA }, +{ 0xFCDB, 0xFCDB, 0xFCDB }, +{ 0xFCDC, 0xFCDC, 0xFCDC }, +{ 0xFCDD, 0xFCDD, 0xFCDD }, +{ 0xFCDE, 0xFCDE, 0xFCDE }, +{ 0xFCDF, 0xFCDF, 0xFCDF }, +{ 0xFCE0, 0xFCE0, 0xFCE0 }, +{ 0xFCE1, 0xFCE1, 0xFCE1 }, +{ 0xFCE2, 0xFCE2, 0xFCE2 }, +{ 0xFCE3, 0xFCE3, 0xFCE3 }, +{ 0xFCE4, 0xFCE4, 0xFCE4 }, +{ 0xFCE5, 0xFCE5, 0xFCE5 }, +{ 0xFCE6, 0xFCE6, 0xFCE6 }, +{ 0xFCE7, 0xFCE7, 0xFCE7 }, +{ 0xFCE8, 0xFCE8, 0xFCE8 }, +{ 0xFCE9, 0xFCE9, 0xFCE9 }, +{ 0xFCEA, 0xFCEA, 0xFCEA }, +{ 0xFCEB, 0xFCEB, 0xFCEB }, +{ 0xFCEC, 0xFCEC, 0xFCEC }, +{ 0xFCED, 0xFCED, 0xFCED }, +{ 0xFCEE, 0xFCEE, 0xFCEE }, +{ 0xFCEF, 0xFCEF, 0xFCEF }, +{ 0xFCF0, 0xFCF0, 0xFCF0 }, +{ 0xFCF1, 0xFCF1, 0xFCF1 }, +{ 0xFCF2, 0xFCF2, 0xFCF2 }, +{ 0xFCF3, 0xFCF3, 0xFCF3 }, +{ 0xFCF4, 0xFCF4, 0xFCF4 }, +{ 0xFCF5, 0xFCF5, 0xFCF5 }, +{ 0xFCF6, 0xFCF6, 0xFCF6 }, +{ 0xFCF7, 0xFCF7, 0xFCF7 }, +{ 0xFCF8, 0xFCF8, 0xFCF8 }, +{ 0xFCF9, 0xFCF9, 0xFCF9 }, +{ 0xFCFA, 0xFCFA, 0xFCFA }, +{ 0xFCFB, 0xFCFB, 0xFCFB }, +{ 0xFCFC, 0xFCFC, 0xFCFC }, +{ 0xFCFD, 0xFCFD, 0xFCFD }, +{ 0xFCFE, 0xFCFE, 0xFCFE }, +{ 0xFCFF, 0xFCFF, 0xFCFF }, +{ 0xFD00, 0xFD00, 0xFD00 }, +{ 0xFD01, 0xFD01, 0xFD01 }, +{ 0xFD02, 0xFD02, 0xFD02 }, +{ 0xFD03, 0xFD03, 0xFD03 }, +{ 0xFD04, 0xFD04, 0xFD04 }, +{ 0xFD05, 0xFD05, 0xFD05 }, +{ 0xFD06, 0xFD06, 0xFD06 }, +{ 0xFD07, 0xFD07, 0xFD07 }, +{ 0xFD08, 0xFD08, 0xFD08 }, +{ 0xFD09, 0xFD09, 0xFD09 }, +{ 0xFD0A, 0xFD0A, 0xFD0A }, +{ 0xFD0B, 0xFD0B, 0xFD0B }, +{ 0xFD0C, 0xFD0C, 0xFD0C }, +{ 0xFD0D, 0xFD0D, 0xFD0D }, +{ 0xFD0E, 0xFD0E, 0xFD0E }, +{ 0xFD0F, 0xFD0F, 0xFD0F }, +{ 0xFD10, 0xFD10, 0xFD10 }, +{ 0xFD11, 0xFD11, 0xFD11 }, +{ 0xFD12, 0xFD12, 0xFD12 }, +{ 0xFD13, 0xFD13, 0xFD13 }, +{ 0xFD14, 0xFD14, 0xFD14 }, +{ 0xFD15, 0xFD15, 0xFD15 }, +{ 0xFD16, 0xFD16, 0xFD16 }, +{ 0xFD17, 0xFD17, 0xFD17 }, +{ 0xFD18, 0xFD18, 0xFD18 }, +{ 0xFD19, 0xFD19, 0xFD19 }, +{ 0xFD1A, 0xFD1A, 0xFD1A }, +{ 0xFD1B, 0xFD1B, 0xFD1B }, +{ 0xFD1C, 0xFD1C, 0xFD1C }, +{ 0xFD1D, 0xFD1D, 0xFD1D }, +{ 0xFD1E, 0xFD1E, 0xFD1E }, +{ 0xFD1F, 0xFD1F, 0xFD1F }, +{ 0xFD20, 0xFD20, 0xFD20 }, +{ 0xFD21, 0xFD21, 0xFD21 }, +{ 0xFD22, 0xFD22, 0xFD22 }, +{ 0xFD23, 0xFD23, 0xFD23 }, +{ 0xFD24, 0xFD24, 0xFD24 }, +{ 0xFD25, 0xFD25, 0xFD25 }, +{ 0xFD26, 0xFD26, 0xFD26 }, +{ 0xFD27, 0xFD27, 0xFD27 }, +{ 0xFD28, 0xFD28, 0xFD28 }, +{ 0xFD29, 0xFD29, 0xFD29 }, +{ 0xFD2A, 0xFD2A, 0xFD2A }, +{ 0xFD2B, 0xFD2B, 0xFD2B }, +{ 0xFD2C, 0xFD2C, 0xFD2C }, +{ 0xFD2D, 0xFD2D, 0xFD2D }, +{ 0xFD2E, 0xFD2E, 0xFD2E }, +{ 0xFD2F, 0xFD2F, 0xFD2F }, +{ 0xFD30, 0xFD30, 0xFD30 }, +{ 0xFD31, 0xFD31, 0xFD31 }, +{ 0xFD32, 0xFD32, 0xFD32 }, +{ 0xFD33, 0xFD33, 0xFD33 }, +{ 0xFD34, 0xFD34, 0xFD34 }, +{ 0xFD35, 0xFD35, 0xFD35 }, +{ 0xFD36, 0xFD36, 0xFD36 }, +{ 0xFD37, 0xFD37, 0xFD37 }, +{ 0xFD38, 0xFD38, 0xFD38 }, +{ 0xFD39, 0xFD39, 0xFD39 }, +{ 0xFD3A, 0xFD3A, 0xFD3A }, +{ 0xFD3B, 0xFD3B, 0xFD3B }, +{ 0xFD3C, 0xFD3C, 0xFD3C }, +{ 0xFD3D, 0xFD3D, 0xFD3D }, +{ 0xFD50, 0xFD50, 0xFD50 }, +{ 0xFD51, 0xFD51, 0xFD51 }, +{ 0xFD52, 0xFD52, 0xFD52 }, +{ 0xFD53, 0xFD53, 0xFD53 }, +{ 0xFD54, 0xFD54, 0xFD54 }, +{ 0xFD55, 0xFD55, 0xFD55 }, +{ 0xFD56, 0xFD56, 0xFD56 }, +{ 0xFD57, 0xFD57, 0xFD57 }, +{ 0xFD58, 0xFD58, 0xFD58 }, +{ 0xFD59, 0xFD59, 0xFD59 }, +{ 0xFD5A, 0xFD5A, 0xFD5A }, +{ 0xFD5B, 0xFD5B, 0xFD5B }, +{ 0xFD5C, 0xFD5C, 0xFD5C }, +{ 0xFD5D, 0xFD5D, 0xFD5D }, +{ 0xFD5E, 0xFD5E, 0xFD5E }, +{ 0xFD5F, 0xFD5F, 0xFD5F }, +{ 0xFD60, 0xFD60, 0xFD60 }, +{ 0xFD61, 0xFD61, 0xFD61 }, +{ 0xFD62, 0xFD62, 0xFD62 }, +{ 0xFD63, 0xFD63, 0xFD63 }, +{ 0xFD64, 0xFD64, 0xFD64 }, +{ 0xFD65, 0xFD65, 0xFD65 }, +{ 0xFD66, 0xFD66, 0xFD66 }, +{ 0xFD67, 0xFD67, 0xFD67 }, +{ 0xFD68, 0xFD68, 0xFD68 }, +{ 0xFD69, 0xFD69, 0xFD69 }, +{ 0xFD6A, 0xFD6A, 0xFD6A }, +{ 0xFD6B, 0xFD6B, 0xFD6B }, +{ 0xFD6C, 0xFD6C, 0xFD6C }, +{ 0xFD6D, 0xFD6D, 0xFD6D }, +{ 0xFD6E, 0xFD6E, 0xFD6E }, +{ 0xFD6F, 0xFD6F, 0xFD6F }, +{ 0xFD70, 0xFD70, 0xFD70 }, +{ 0xFD71, 0xFD71, 0xFD71 }, +{ 0xFD72, 0xFD72, 0xFD72 }, +{ 0xFD73, 0xFD73, 0xFD73 }, +{ 0xFD74, 0xFD74, 0xFD74 }, +{ 0xFD75, 0xFD75, 0xFD75 }, +{ 0xFD76, 0xFD76, 0xFD76 }, +{ 0xFD77, 0xFD77, 0xFD77 }, +{ 0xFD78, 0xFD78, 0xFD78 }, +{ 0xFD79, 0xFD79, 0xFD79 }, +{ 0xFD7A, 0xFD7A, 0xFD7A }, +{ 0xFD7B, 0xFD7B, 0xFD7B }, +{ 0xFD7C, 0xFD7C, 0xFD7C }, +{ 0xFD7D, 0xFD7D, 0xFD7D }, +{ 0xFD7E, 0xFD7E, 0xFD7E }, +{ 0xFD7F, 0xFD7F, 0xFD7F }, +{ 0xFD80, 0xFD80, 0xFD80 }, +{ 0xFD81, 0xFD81, 0xFD81 }, +{ 0xFD82, 0xFD82, 0xFD82 }, +{ 0xFD83, 0xFD83, 0xFD83 }, +{ 0xFD84, 0xFD84, 0xFD84 }, +{ 0xFD85, 0xFD85, 0xFD85 }, +{ 0xFD86, 0xFD86, 0xFD86 }, +{ 0xFD87, 0xFD87, 0xFD87 }, +{ 0xFD88, 0xFD88, 0xFD88 }, +{ 0xFD89, 0xFD89, 0xFD89 }, +{ 0xFD8A, 0xFD8A, 0xFD8A }, +{ 0xFD8B, 0xFD8B, 0xFD8B }, +{ 0xFD8C, 0xFD8C, 0xFD8C }, +{ 0xFD8D, 0xFD8D, 0xFD8D }, +{ 0xFD8E, 0xFD8E, 0xFD8E }, +{ 0xFD8F, 0xFD8F, 0xFD8F }, +{ 0xFD92, 0xFD92, 0xFD92 }, +{ 0xFD93, 0xFD93, 0xFD93 }, +{ 0xFD94, 0xFD94, 0xFD94 }, +{ 0xFD95, 0xFD95, 0xFD95 }, +{ 0xFD96, 0xFD96, 0xFD96 }, +{ 0xFD97, 0xFD97, 0xFD97 }, +{ 0xFD98, 0xFD98, 0xFD98 }, +{ 0xFD99, 0xFD99, 0xFD99 }, +{ 0xFD9A, 0xFD9A, 0xFD9A }, +{ 0xFD9B, 0xFD9B, 0xFD9B }, +{ 0xFD9C, 0xFD9C, 0xFD9C }, +{ 0xFD9D, 0xFD9D, 0xFD9D }, +{ 0xFD9E, 0xFD9E, 0xFD9E }, +{ 0xFD9F, 0xFD9F, 0xFD9F }, +{ 0xFDA0, 0xFDA0, 0xFDA0 }, +{ 0xFDA1, 0xFDA1, 0xFDA1 }, +{ 0xFDA2, 0xFDA2, 0xFDA2 }, +{ 0xFDA3, 0xFDA3, 0xFDA3 }, +{ 0xFDA4, 0xFDA4, 0xFDA4 }, +{ 0xFDA5, 0xFDA5, 0xFDA5 }, +{ 0xFDA6, 0xFDA6, 0xFDA6 }, +{ 0xFDA7, 0xFDA7, 0xFDA7 }, +{ 0xFDA8, 0xFDA8, 0xFDA8 }, +{ 0xFDA9, 0xFDA9, 0xFDA9 }, +{ 0xFDAA, 0xFDAA, 0xFDAA }, +{ 0xFDAB, 0xFDAB, 0xFDAB }, +{ 0xFDAC, 0xFDAC, 0xFDAC }, +{ 0xFDAD, 0xFDAD, 0xFDAD }, +{ 0xFDAE, 0xFDAE, 0xFDAE }, +{ 0xFDAF, 0xFDAF, 0xFDAF }, +{ 0xFDB0, 0xFDB0, 0xFDB0 }, +{ 0xFDB1, 0xFDB1, 0xFDB1 }, +{ 0xFDB2, 0xFDB2, 0xFDB2 }, +{ 0xFDB3, 0xFDB3, 0xFDB3 }, +{ 0xFDB4, 0xFDB4, 0xFDB4 }, +{ 0xFDB5, 0xFDB5, 0xFDB5 }, +{ 0xFDB6, 0xFDB6, 0xFDB6 }, +{ 0xFDB7, 0xFDB7, 0xFDB7 }, +{ 0xFDB8, 0xFDB8, 0xFDB8 }, +{ 0xFDB9, 0xFDB9, 0xFDB9 }, +{ 0xFDBA, 0xFDBA, 0xFDBA }, +{ 0xFDBB, 0xFDBB, 0xFDBB }, +{ 0xFDBC, 0xFDBC, 0xFDBC }, +{ 0xFDBD, 0xFDBD, 0xFDBD }, +{ 0xFDBE, 0xFDBE, 0xFDBE }, +{ 0xFDBF, 0xFDBF, 0xFDBF }, +{ 0xFDC0, 0xFDC0, 0xFDC0 }, +{ 0xFDC1, 0xFDC1, 0xFDC1 }, +{ 0xFDC2, 0xFDC2, 0xFDC2 }, +{ 0xFDC3, 0xFDC3, 0xFDC3 }, +{ 0xFDC4, 0xFDC4, 0xFDC4 }, +{ 0xFDC5, 0xFDC5, 0xFDC5 }, +{ 0xFDC6, 0xFDC6, 0xFDC6 }, +{ 0xFDC7, 0xFDC7, 0xFDC7 }, +{ 0xFDF0, 0xFDF0, 0xFDF0 }, +{ 0xFDF1, 0xFDF1, 0xFDF1 }, +{ 0xFDF2, 0xFDF2, 0xFDF2 }, +{ 0xFDF3, 0xFDF3, 0xFDF3 }, +{ 0xFDF4, 0xFDF4, 0xFDF4 }, +{ 0xFDF5, 0xFDF5, 0xFDF5 }, +{ 0xFDF6, 0xFDF6, 0xFDF6 }, +{ 0xFDF7, 0xFDF7, 0xFDF7 }, +{ 0xFDF8, 0xFDF8, 0xFDF8 }, +{ 0xFDF9, 0xFDF9, 0xFDF9 }, +{ 0xFDFA, 0xFDFA, 0xFDFA }, +{ 0xFDFB, 0xFDFB, 0xFDFB }, +{ 0xFE00, 0xFE00, 0xFE00 }, +{ 0xFE01, 0xFE01, 0xFE01 }, +{ 0xFE02, 0xFE02, 0xFE02 }, +{ 0xFE03, 0xFE03, 0xFE03 }, +{ 0xFE04, 0xFE04, 0xFE04 }, +{ 0xFE05, 0xFE05, 0xFE05 }, +{ 0xFE06, 0xFE06, 0xFE06 }, +{ 0xFE07, 0xFE07, 0xFE07 }, +{ 0xFE08, 0xFE08, 0xFE08 }, +{ 0xFE09, 0xFE09, 0xFE09 }, +{ 0xFE0A, 0xFE0A, 0xFE0A }, +{ 0xFE0B, 0xFE0B, 0xFE0B }, +{ 0xFE0C, 0xFE0C, 0xFE0C }, +{ 0xFE0D, 0xFE0D, 0xFE0D }, +{ 0xFE0E, 0xFE0E, 0xFE0E }, +{ 0xFE0F, 0xFE0F, 0xFE0F }, +{ 0xFE20, 0xFE20, 0xFE20 }, +{ 0xFE21, 0xFE21, 0xFE21 }, +{ 0xFE22, 0xFE22, 0xFE22 }, +{ 0xFE23, 0xFE23, 0xFE23 }, +{ 0xFE70, 0xFE70, 0xFE70 }, +{ 0xFE71, 0xFE71, 0xFE71 }, +{ 0xFE72, 0xFE72, 0xFE72 }, +{ 0xFE73, 0xFE73, 0xFE73 }, +{ 0xFE74, 0xFE74, 0xFE74 }, +{ 0xFE76, 0xFE76, 0xFE76 }, +{ 0xFE77, 0xFE77, 0xFE77 }, +{ 0xFE78, 0xFE78, 0xFE78 }, +{ 0xFE79, 0xFE79, 0xFE79 }, +{ 0xFE7A, 0xFE7A, 0xFE7A }, +{ 0xFE7B, 0xFE7B, 0xFE7B }, +{ 0xFE7C, 0xFE7C, 0xFE7C }, +{ 0xFE7D, 0xFE7D, 0xFE7D }, +{ 0xFE7E, 0xFE7E, 0xFE7E }, +{ 0xFE7F, 0xFE7F, 0xFE7F }, +{ 0xFE80, 0xFE80, 0xFE80 }, +{ 0xFE81, 0xFE81, 0xFE81 }, +{ 0xFE82, 0xFE82, 0xFE82 }, +{ 0xFE83, 0xFE83, 0xFE83 }, +{ 0xFE84, 0xFE84, 0xFE84 }, +{ 0xFE85, 0xFE85, 0xFE85 }, +{ 0xFE86, 0xFE86, 0xFE86 }, +{ 0xFE87, 0xFE87, 0xFE87 }, +{ 0xFE88, 0xFE88, 0xFE88 }, +{ 0xFE89, 0xFE89, 0xFE89 }, +{ 0xFE8A, 0xFE8A, 0xFE8A }, +{ 0xFE8B, 0xFE8B, 0xFE8B }, +{ 0xFE8C, 0xFE8C, 0xFE8C }, +{ 0xFE8D, 0xFE8D, 0xFE8D }, +{ 0xFE8E, 0xFE8E, 0xFE8E }, +{ 0xFE8F, 0xFE8F, 0xFE8F }, +{ 0xFE90, 0xFE90, 0xFE90 }, +{ 0xFE91, 0xFE91, 0xFE91 }, +{ 0xFE92, 0xFE92, 0xFE92 }, +{ 0xFE93, 0xFE93, 0xFE93 }, +{ 0xFE94, 0xFE94, 0xFE94 }, +{ 0xFE95, 0xFE95, 0xFE95 }, +{ 0xFE96, 0xFE96, 0xFE96 }, +{ 0xFE97, 0xFE97, 0xFE97 }, +{ 0xFE98, 0xFE98, 0xFE98 }, +{ 0xFE99, 0xFE99, 0xFE99 }, +{ 0xFE9A, 0xFE9A, 0xFE9A }, +{ 0xFE9B, 0xFE9B, 0xFE9B }, +{ 0xFE9C, 0xFE9C, 0xFE9C }, +{ 0xFE9D, 0xFE9D, 0xFE9D }, +{ 0xFE9E, 0xFE9E, 0xFE9E }, +{ 0xFE9F, 0xFE9F, 0xFE9F }, +{ 0xFEA0, 0xFEA0, 0xFEA0 }, +{ 0xFEA1, 0xFEA1, 0xFEA1 }, +{ 0xFEA2, 0xFEA2, 0xFEA2 }, +{ 0xFEA3, 0xFEA3, 0xFEA3 }, +{ 0xFEA4, 0xFEA4, 0xFEA4 }, +{ 0xFEA5, 0xFEA5, 0xFEA5 }, +{ 0xFEA6, 0xFEA6, 0xFEA6 }, +{ 0xFEA7, 0xFEA7, 0xFEA7 }, +{ 0xFEA8, 0xFEA8, 0xFEA8 }, +{ 0xFEA9, 0xFEA9, 0xFEA9 }, +{ 0xFEAA, 0xFEAA, 0xFEAA }, +{ 0xFEAB, 0xFEAB, 0xFEAB }, +{ 0xFEAC, 0xFEAC, 0xFEAC }, +{ 0xFEAD, 0xFEAD, 0xFEAD }, +{ 0xFEAE, 0xFEAE, 0xFEAE }, +{ 0xFEAF, 0xFEAF, 0xFEAF }, +{ 0xFEB0, 0xFEB0, 0xFEB0 }, +{ 0xFEB1, 0xFEB1, 0xFEB1 }, +{ 0xFEB2, 0xFEB2, 0xFEB2 }, +{ 0xFEB3, 0xFEB3, 0xFEB3 }, +{ 0xFEB4, 0xFEB4, 0xFEB4 }, +{ 0xFEB5, 0xFEB5, 0xFEB5 }, +{ 0xFEB6, 0xFEB6, 0xFEB6 }, +{ 0xFEB7, 0xFEB7, 0xFEB7 }, +{ 0xFEB8, 0xFEB8, 0xFEB8 }, +{ 0xFEB9, 0xFEB9, 0xFEB9 }, +{ 0xFEBA, 0xFEBA, 0xFEBA }, +{ 0xFEBB, 0xFEBB, 0xFEBB }, +{ 0xFEBC, 0xFEBC, 0xFEBC }, +{ 0xFEBD, 0xFEBD, 0xFEBD }, +{ 0xFEBE, 0xFEBE, 0xFEBE }, +{ 0xFEBF, 0xFEBF, 0xFEBF }, +{ 0xFEC0, 0xFEC0, 0xFEC0 }, +{ 0xFEC1, 0xFEC1, 0xFEC1 }, +{ 0xFEC2, 0xFEC2, 0xFEC2 }, +{ 0xFEC3, 0xFEC3, 0xFEC3 }, +{ 0xFEC4, 0xFEC4, 0xFEC4 }, +{ 0xFEC5, 0xFEC5, 0xFEC5 }, +{ 0xFEC6, 0xFEC6, 0xFEC6 }, +{ 0xFEC7, 0xFEC7, 0xFEC7 }, +{ 0xFEC8, 0xFEC8, 0xFEC8 }, +{ 0xFEC9, 0xFEC9, 0xFEC9 }, +{ 0xFECA, 0xFECA, 0xFECA }, +{ 0xFECB, 0xFECB, 0xFECB }, +{ 0xFECC, 0xFECC, 0xFECC }, +{ 0xFECD, 0xFECD, 0xFECD }, +{ 0xFECE, 0xFECE, 0xFECE }, +{ 0xFECF, 0xFECF, 0xFECF }, +{ 0xFED0, 0xFED0, 0xFED0 }, +{ 0xFED1, 0xFED1, 0xFED1 }, +{ 0xFED2, 0xFED2, 0xFED2 }, +{ 0xFED3, 0xFED3, 0xFED3 }, +{ 0xFED4, 0xFED4, 0xFED4 }, +{ 0xFED5, 0xFED5, 0xFED5 }, +{ 0xFED6, 0xFED6, 0xFED6 }, +{ 0xFED7, 0xFED7, 0xFED7 }, +{ 0xFED8, 0xFED8, 0xFED8 }, +{ 0xFED9, 0xFED9, 0xFED9 }, +{ 0xFEDA, 0xFEDA, 0xFEDA }, +{ 0xFEDB, 0xFEDB, 0xFEDB }, +{ 0xFEDC, 0xFEDC, 0xFEDC }, +{ 0xFEDD, 0xFEDD, 0xFEDD }, +{ 0xFEDE, 0xFEDE, 0xFEDE }, +{ 0xFEDF, 0xFEDF, 0xFEDF }, +{ 0xFEE0, 0xFEE0, 0xFEE0 }, +{ 0xFEE1, 0xFEE1, 0xFEE1 }, +{ 0xFEE2, 0xFEE2, 0xFEE2 }, +{ 0xFEE3, 0xFEE3, 0xFEE3 }, +{ 0xFEE4, 0xFEE4, 0xFEE4 }, +{ 0xFEE5, 0xFEE5, 0xFEE5 }, +{ 0xFEE6, 0xFEE6, 0xFEE6 }, +{ 0xFEE7, 0xFEE7, 0xFEE7 }, +{ 0xFEE8, 0xFEE8, 0xFEE8 }, +{ 0xFEE9, 0xFEE9, 0xFEE9 }, +{ 0xFEEA, 0xFEEA, 0xFEEA }, +{ 0xFEEB, 0xFEEB, 0xFEEB }, +{ 0xFEEC, 0xFEEC, 0xFEEC }, +{ 0xFEED, 0xFEED, 0xFEED }, +{ 0xFEEE, 0xFEEE, 0xFEEE }, +{ 0xFEEF, 0xFEEF, 0xFEEF }, +{ 0xFEF0, 0xFEF0, 0xFEF0 }, +{ 0xFEF1, 0xFEF1, 0xFEF1 }, +{ 0xFEF2, 0xFEF2, 0xFEF2 }, +{ 0xFEF3, 0xFEF3, 0xFEF3 }, +{ 0xFEF4, 0xFEF4, 0xFEF4 }, +{ 0xFEF5, 0xFEF5, 0xFEF5 }, +{ 0xFEF6, 0xFEF6, 0xFEF6 }, +{ 0xFEF7, 0xFEF7, 0xFEF7 }, +{ 0xFEF8, 0xFEF8, 0xFEF8 }, +{ 0xFEF9, 0xFEF9, 0xFEF9 }, +{ 0xFEFA, 0xFEFA, 0xFEFA }, +{ 0xFEFB, 0xFEFB, 0xFEFB }, +{ 0xFEFC, 0xFEFC, 0xFEFC }, +{ 0xFF21, 0xFF21, 0xFF41 }, +{ 0xFF22, 0xFF22, 0xFF42 }, +{ 0xFF23, 0xFF23, 0xFF43 }, +{ 0xFF24, 0xFF24, 0xFF44 }, +{ 0xFF25, 0xFF25, 0xFF45 }, +{ 0xFF26, 0xFF26, 0xFF46 }, +{ 0xFF27, 0xFF27, 0xFF47 }, +{ 0xFF28, 0xFF28, 0xFF48 }, +{ 0xFF29, 0xFF29, 0xFF49 }, +{ 0xFF2A, 0xFF2A, 0xFF4A }, +{ 0xFF2B, 0xFF2B, 0xFF4B }, +{ 0xFF2C, 0xFF2C, 0xFF4C }, +{ 0xFF2D, 0xFF2D, 0xFF4D }, +{ 0xFF2E, 0xFF2E, 0xFF4E }, +{ 0xFF2F, 0xFF2F, 0xFF4F }, +{ 0xFF30, 0xFF30, 0xFF50 }, +{ 0xFF31, 0xFF31, 0xFF51 }, +{ 0xFF32, 0xFF32, 0xFF52 }, +{ 0xFF33, 0xFF33, 0xFF53 }, +{ 0xFF34, 0xFF34, 0xFF54 }, +{ 0xFF35, 0xFF35, 0xFF55 }, +{ 0xFF36, 0xFF36, 0xFF56 }, +{ 0xFF37, 0xFF37, 0xFF57 }, +{ 0xFF38, 0xFF38, 0xFF58 }, +{ 0xFF39, 0xFF39, 0xFF59 }, +{ 0xFF3A, 0xFF3A, 0xFF5A }, +{ 0xFF41, 0xFF21, 0xFF41 }, +{ 0xFF42, 0xFF22, 0xFF42 }, +{ 0xFF43, 0xFF23, 0xFF43 }, +{ 0xFF44, 0xFF24, 0xFF44 }, +{ 0xFF45, 0xFF25, 0xFF45 }, +{ 0xFF46, 0xFF26, 0xFF46 }, +{ 0xFF47, 0xFF27, 0xFF47 }, +{ 0xFF48, 0xFF28, 0xFF48 }, +{ 0xFF49, 0xFF29, 0xFF49 }, +{ 0xFF4A, 0xFF2A, 0xFF4A }, +{ 0xFF4B, 0xFF2B, 0xFF4B }, +{ 0xFF4C, 0xFF2C, 0xFF4C }, +{ 0xFF4D, 0xFF2D, 0xFF4D }, +{ 0xFF4E, 0xFF2E, 0xFF4E }, +{ 0xFF4F, 0xFF2F, 0xFF4F }, +{ 0xFF50, 0xFF30, 0xFF50 }, +{ 0xFF51, 0xFF31, 0xFF51 }, +{ 0xFF52, 0xFF32, 0xFF52 }, +{ 0xFF53, 0xFF33, 0xFF53 }, +{ 0xFF54, 0xFF34, 0xFF54 }, +{ 0xFF55, 0xFF35, 0xFF55 }, +{ 0xFF56, 0xFF36, 0xFF56 }, +{ 0xFF57, 0xFF37, 0xFF57 }, +{ 0xFF58, 0xFF38, 0xFF58 }, +{ 0xFF59, 0xFF39, 0xFF59 }, +{ 0xFF5A, 0xFF3A, 0xFF5A }, +{ 0xFF66, 0xFF66, 0xFF66 }, +{ 0xFF67, 0xFF67, 0xFF67 }, +{ 0xFF68, 0xFF68, 0xFF68 }, +{ 0xFF69, 0xFF69, 0xFF69 }, +{ 0xFF6A, 0xFF6A, 0xFF6A }, +{ 0xFF6B, 0xFF6B, 0xFF6B }, +{ 0xFF6C, 0xFF6C, 0xFF6C }, +{ 0xFF6D, 0xFF6D, 0xFF6D }, +{ 0xFF6E, 0xFF6E, 0xFF6E }, +{ 0xFF6F, 0xFF6F, 0xFF6F }, +{ 0xFF70, 0xFF70, 0xFF70 }, +{ 0xFF71, 0xFF71, 0xFF71 }, +{ 0xFF72, 0xFF72, 0xFF72 }, +{ 0xFF73, 0xFF73, 0xFF73 }, +{ 0xFF74, 0xFF74, 0xFF74 }, +{ 0xFF75, 0xFF75, 0xFF75 }, +{ 0xFF76, 0xFF76, 0xFF76 }, +{ 0xFF77, 0xFF77, 0xFF77 }, +{ 0xFF78, 0xFF78, 0xFF78 }, +{ 0xFF79, 0xFF79, 0xFF79 }, +{ 0xFF7A, 0xFF7A, 0xFF7A }, +{ 0xFF7B, 0xFF7B, 0xFF7B }, +{ 0xFF7C, 0xFF7C, 0xFF7C }, +{ 0xFF7D, 0xFF7D, 0xFF7D }, +{ 0xFF7E, 0xFF7E, 0xFF7E }, +{ 0xFF7F, 0xFF7F, 0xFF7F }, +{ 0xFF80, 0xFF80, 0xFF80 }, +{ 0xFF81, 0xFF81, 0xFF81 }, +{ 0xFF82, 0xFF82, 0xFF82 }, +{ 0xFF83, 0xFF83, 0xFF83 }, +{ 0xFF84, 0xFF84, 0xFF84 }, +{ 0xFF85, 0xFF85, 0xFF85 }, +{ 0xFF86, 0xFF86, 0xFF86 }, +{ 0xFF87, 0xFF87, 0xFF87 }, +{ 0xFF88, 0xFF88, 0xFF88 }, +{ 0xFF89, 0xFF89, 0xFF89 }, +{ 0xFF8A, 0xFF8A, 0xFF8A }, +{ 0xFF8B, 0xFF8B, 0xFF8B }, +{ 0xFF8C, 0xFF8C, 0xFF8C }, +{ 0xFF8D, 0xFF8D, 0xFF8D }, +{ 0xFF8E, 0xFF8E, 0xFF8E }, +{ 0xFF8F, 0xFF8F, 0xFF8F }, +{ 0xFF90, 0xFF90, 0xFF90 }, +{ 0xFF91, 0xFF91, 0xFF91 }, +{ 0xFF92, 0xFF92, 0xFF92 }, +{ 0xFF93, 0xFF93, 0xFF93 }, +{ 0xFF94, 0xFF94, 0xFF94 }, +{ 0xFF95, 0xFF95, 0xFF95 }, +{ 0xFF96, 0xFF96, 0xFF96 }, +{ 0xFF97, 0xFF97, 0xFF97 }, +{ 0xFF98, 0xFF98, 0xFF98 }, +{ 0xFF99, 0xFF99, 0xFF99 }, +{ 0xFF9A, 0xFF9A, 0xFF9A }, +{ 0xFF9B, 0xFF9B, 0xFF9B }, +{ 0xFF9C, 0xFF9C, 0xFF9C }, +{ 0xFF9D, 0xFF9D, 0xFF9D }, +{ 0xFF9E, 0xFF9E, 0xFF9E }, +{ 0xFF9F, 0xFF9F, 0xFF9F }, +{ 0xFFA0, 0xFFA0, 0xFFA0 }, +{ 0xFFA1, 0xFFA1, 0xFFA1 }, +{ 0xFFA2, 0xFFA2, 0xFFA2 }, +{ 0xFFA3, 0xFFA3, 0xFFA3 }, +{ 0xFFA4, 0xFFA4, 0xFFA4 }, +{ 0xFFA5, 0xFFA5, 0xFFA5 }, +{ 0xFFA6, 0xFFA6, 0xFFA6 }, +{ 0xFFA7, 0xFFA7, 0xFFA7 }, +{ 0xFFA8, 0xFFA8, 0xFFA8 }, +{ 0xFFA9, 0xFFA9, 0xFFA9 }, +{ 0xFFAA, 0xFFAA, 0xFFAA }, +{ 0xFFAB, 0xFFAB, 0xFFAB }, +{ 0xFFAC, 0xFFAC, 0xFFAC }, +{ 0xFFAD, 0xFFAD, 0xFFAD }, +{ 0xFFAE, 0xFFAE, 0xFFAE }, +{ 0xFFAF, 0xFFAF, 0xFFAF }, +{ 0xFFB0, 0xFFB0, 0xFFB0 }, +{ 0xFFB1, 0xFFB1, 0xFFB1 }, +{ 0xFFB2, 0xFFB2, 0xFFB2 }, +{ 0xFFB3, 0xFFB3, 0xFFB3 }, +{ 0xFFB4, 0xFFB4, 0xFFB4 }, +{ 0xFFB5, 0xFFB5, 0xFFB5 }, +{ 0xFFB6, 0xFFB6, 0xFFB6 }, +{ 0xFFB7, 0xFFB7, 0xFFB7 }, +{ 0xFFB8, 0xFFB8, 0xFFB8 }, +{ 0xFFB9, 0xFFB9, 0xFFB9 }, +{ 0xFFBA, 0xFFBA, 0xFFBA }, +{ 0xFFBB, 0xFFBB, 0xFFBB }, +{ 0xFFBC, 0xFFBC, 0xFFBC }, +{ 0xFFBD, 0xFFBD, 0xFFBD }, +{ 0xFFBE, 0xFFBE, 0xFFBE }, +{ 0xFFC2, 0xFFC2, 0xFFC2 }, +{ 0xFFC3, 0xFFC3, 0xFFC3 }, +{ 0xFFC4, 0xFFC4, 0xFFC4 }, +{ 0xFFC5, 0xFFC5, 0xFFC5 }, +{ 0xFFC6, 0xFFC6, 0xFFC6 }, +{ 0xFFC7, 0xFFC7, 0xFFC7 }, +{ 0xFFCA, 0xFFCA, 0xFFCA }, +{ 0xFFCB, 0xFFCB, 0xFFCB }, +{ 0xFFCC, 0xFFCC, 0xFFCC }, +{ 0xFFCD, 0xFFCD, 0xFFCD }, +{ 0xFFCE, 0xFFCE, 0xFFCE }, +{ 0xFFCF, 0xFFCF, 0xFFCF }, +{ 0xFFD2, 0xFFD2, 0xFFD2 }, +{ 0xFFD3, 0xFFD3, 0xFFD3 }, +{ 0xFFD4, 0xFFD4, 0xFFD4 }, +{ 0xFFD5, 0xFFD5, 0xFFD5 }, +{ 0xFFD6, 0xFFD6, 0xFFD6 }, +{ 0xFFD7, 0xFFD7, 0xFFD7 }, +{ 0xFFDA, 0xFFDA, 0xFFDA }, +{ 0xFFDB, 0xFFDB, 0xFFDB }, +{ 0xFFDC, 0xFFDC, 0xFFDC } +}; diff --git a/plugins/SpellChecker/hunspell/w_char.hxx b/plugins/SpellChecker/hunspell/w_char.hxx new file mode 100644 index 0000000000..3719dd3b77 --- /dev/null +++ b/plugins/SpellChecker/hunspell/w_char.hxx @@ -0,0 +1,21 @@ +#ifndef __WCHARHXX__ +#define __WCHARHXX__ + +#ifndef GCC +typedef struct { +#else +typedef struct __attribute__ ((packed)) { +#endif + unsigned char l; + unsigned char h; +} w_char; + +// two character arrays +struct replentry { + char * pattern; + char * pattern2; + bool start; + bool end; +}; + +#endif diff --git a/plugins/SpellChecker/m_spellchecker.h b/plugins/SpellChecker/m_spellchecker.h new file mode 100644 index 0000000000..c7b5d3c922 --- /dev/null +++ b/plugins/SpellChecker/m_spellchecker.h @@ -0,0 +1,77 @@ +/* +Copyright (C) 2006-2010 Ricardo Pescuma Domenecci + +This 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 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 file; see the file license.txt. If +not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. +*/ + + +#ifndef __M_SPELLCHECKER_H__ +# define __M_SPELLCHECKER_H__ + + +#define MIID_SPELLCHECKER { 0x26eed12a, 0x7016, 0x4d0f, { 0x9b, 0x4a, 0xc, 0xaa, 0x7e, 0x22, 0x29, 0xf3 } } + + + +typedef struct { + int cbSize; + HANDLE hContact; // The contact to get the settings from, or NULL + HWND hwnd; // The hwnd of the richedit + char *window_name; // A name for this richedit +} SPELLCHECKER_ITEM; + +typedef struct { + int cbSize; + HWND hwnd; // The hwnd of the richedit + HMENU hMenu; // The handle to the menu + POINT pt; // The point, in screen coords + HWND hwndOwner; // The hwnd of owner of the popup menu. If it is null, hwnd is used +} SPELLCHECKER_POPUPMENU; + + +/* +Adds a richedit control for the spell checker to check + +wParam: SPELLCHECKER_ITEM * +lParam: ignored +return: 0 on success +*/ +#define MS_SPELLCHECKER_ADD_RICHEDIT "SpellChecker/AddRichedit" + + +/* +Removes a richedit control for the spell checker to check + +wParam: HWND +lParam: ignored +return: 0 on success +*/ +#define MS_SPELLCHECKER_REMOVE_RICHEDIT "SpellChecker/RemoveRichedit" + + +/* +Show context menu + +wParam: SPELLCHECKER_POPUPMENU +lParam: ignored +return: the control id selected by the user, 0 if no one was selected, < 0 on error +*/ +#define MS_SPELLCHECKER_SHOW_POPUP_MENU "SpellChecker/ShowPopupMenu" + + + + +#endif // __M_SPELLCHECKER_H__ diff --git a/plugins/SpellChecker/options.cpp b/plugins/SpellChecker/options.cpp new file mode 100644 index 0000000000..cf9f6c3058 --- /dev/null +++ b/plugins/SpellChecker/options.cpp @@ -0,0 +1,610 @@ +/* +Copyright (C) 2006-2010 Ricardo Pescuma Domenecci + +This 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 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 file; see the file license.txt. If +not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. +*/ + + +#include "commons.h" + + + +// Prototypes ///////////////////////////////////////////////////////////////////////////////////// + +HANDLE hOptHook = NULL; + +Options opts; + + +static INT_PTR CALLBACK OptionsDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); +static INT_PTR CALLBACK AutoreplaceDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); + + +static OptPageControl optionsControls[] = { + { &opts.auto_replace_dict, CONTROL_CHECKBOX, IDC_AUTO_DICT, "AutoReplaceDict", FALSE }, + { &opts.ignore_with_numbers, CONTROL_CHECKBOX, IDC_IGNORE_NUMBERS, "IgnoreWithNumbers", FALSE }, + { &opts.ignore_uppercase, CONTROL_CHECKBOX, IDC_IGNORE_UPPERCASE, "IgnoreUppercase", FALSE }, + { &opts.ask_when_sending_with_error, CONTROL_CHECKBOX, IDC_ASK_ON_ERROR, "AskWhenSendingWithError", FALSE }, + { &opts.underline_type, CONTROL_COMBO, IDC_UNDERLINE_TYPE, "UnderlineType", CFU_UNDERLINEWAVE - CFU_UNDERLINEDOUBLE }, + { &opts.cascade_corrections, CONTROL_CHECKBOX, IDC_CASCADE_CORRECTIONS, "CascadeCorrections", FALSE }, + { &opts.show_all_corrections, CONTROL_CHECKBOX, IDC_SHOW_ALL_CORRECTIONS, "ShowAllCorrections", FALSE }, + { &opts.show_wrong_word, CONTROL_CHECKBOX, IDC_SHOW_WRONG_WORD, "ShowWrongWord", TRUE }, + { &opts.use_flags, CONTROL_CHECKBOX, IDC_USE_FLAGS, "UseFlags", TRUE }, + { &opts.auto_locale, CONTROL_CHECKBOX, IDC_AUTO_LOCALE, "AutoLocale", FALSE }, + { &opts.use_other_apps_dicts, CONTROL_CHECKBOX, IDC_OTHER_PROGS, "UseOtherAppsDicts", TRUE }, + { &opts.handle_underscore, CONTROL_CHECKBOX, IDC_HANDLE_UNDERSCORE, "HandleUnderscore", FALSE }, +}; + +static UINT optionsExpertControls[] = { + IDC_ADVANCED, IDC_UNDERLINE_TYPE_L, IDC_UNDERLINE_TYPE, IDC_CASCADE_CORRECTIONS, IDC_SHOW_ALL_CORRECTIONS, + IDC_SHOW_WRONG_WORD, IDC_USE_FLAGS, IDC_AUTO_LOCALE, IDC_OTHER_PROGS, IDC_HANDLE_UNDERSCORE +}; + + +static OptPageControl autoReplaceControls[] = { + { &opts.auto_replace_user, CONTROL_CHECKBOX, IDC_AUTO_USER, "AutoReplaceUser", TRUE }, +}; + + +// Functions ////////////////////////////////////////////////////////////////////////////////////// + + +int InitOptionsCallback(WPARAM wParam,LPARAM lParam) +{ + OPTIONSDIALOGPAGE odp; + + ZeroMemory(&odp,sizeof(odp)); + odp.cbSize=sizeof(odp); + odp.position=0; + odp.hInstance=hInst; + odp.ptszGroup = LPGENT("Message Sessions"); + odp.ptszTitle = LPGENT("Spell Checker"); + odp.pfnDlgProc = OptionsDlgProc; + odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPTIONS); + odp.flags = ODPF_BOLDGROUPS | ODPF_TCHAR; + odp.nIDBottomSimpleControl = IDC_SPELL_CHECKER; + odp.expertOnlyControls = optionsExpertControls; + odp.nExpertOnlyControls = MAX_REGS(optionsExpertControls); + CallService(MS_OPT_ADDPAGE,wParam,(LPARAM)&odp); + + ZeroMemory(&odp,sizeof(odp)); + odp.cbSize=sizeof(odp); + odp.position=0; + odp.hInstance=hInst; + odp.ptszGroup = LPGENT("Message Sessions"); + odp.ptszTitle = LPGENT("Auto-replacements"); + odp.pfnDlgProc = AutoreplaceDlgProc; + odp.pszTemplate = MAKEINTRESOURCEA(IDD_REPLACEMENTS); + odp.flags = ODPF_BOLDGROUPS | ODPF_TCHAR; + CallService(MS_OPT_ADDPAGE,wParam,(LPARAM)&odp); + + return 0; +} + + +void InitOptions() +{ + LoadOptions(); + + hOptHook = HookEvent(ME_OPT_INITIALISE, InitOptionsCallback); +} + + +void DeInitOptions() +{ + UnhookEvent(hOptHook); +} + + +void LoadOptions() +{ + LoadOpts(optionsControls, MAX_REGS(optionsControls), MODULE_NAME); + LoadOpts(autoReplaceControls, MAX_REGS(autoReplaceControls), MODULE_NAME); + + if (languages.getCount() <= 0) + { + opts.default_language[0] = _T('\0'); + return; + } + + DBVARIANT dbv; + if (!DBGetContactSettingTString(NULL, MODULE_NAME, "DefaultLanguage", &dbv)) + { + lstrcpyn(opts.default_language, dbv.ptszVal, MAX_REGS(opts.default_language)); + DBFreeVariant(&dbv); + } + + int i; + for(i = 0; i < languages.getCount(); i++) + if (lstrcmp(languages[i]->language, opts.default_language) == 0) + break; + + if (i >= languages.getCount()) + lstrcpy(opts.default_language, languages[0]->language); +} + + +static void DrawItem(HWND hwndDlg, LPDRAWITEMSTRUCT lpdis, Dictionary *dict) +{ + TEXTMETRIC tm; + RECT rc; + + GetTextMetrics(lpdis->hDC, &tm); + + + int foreIndex, backIndex; + + if (lpdis->itemState & ODS_DISABLED) + { + foreIndex = COLOR_GRAYTEXT; + backIndex = COLOR_BTNFACE; + } + else if (lpdis->itemState & ODS_SELECTED) + { + foreIndex = COLOR_HIGHLIGHTTEXT; + backIndex = COLOR_HIGHLIGHT; + } + else + { + foreIndex = COLOR_WINDOWTEXT; + backIndex = COLOR_WINDOW; + } + + COLORREF clrfore = SetTextColor(lpdis->hDC,GetSysColor(foreIndex)); + COLORREF clrback = SetBkColor(lpdis->hDC,GetSysColor(backIndex)); + + FillRect(lpdis->hDC, &lpdis->rcItem, GetSysColorBrush(backIndex)); + + rc.left = lpdis->rcItem.left + 2; + + // Draw icon + if (opts.use_flags) + { + HICON hFlag = IcoLib_LoadIcon(dict); + + rc.top = (lpdis->rcItem.bottom + lpdis->rcItem.top - ICON_SIZE) / 2; + DrawIconEx(lpdis->hDC, rc.left, rc.top, hFlag, 16, 16, 0, NULL, DI_NORMAL); + + rc.left += ICON_SIZE + 4; + + IcoLib_ReleaseIcon(hFlag); + } + + // Draw text + rc.right = lpdis->rcItem.right - 2; + rc.top = (lpdis->rcItem.bottom + lpdis->rcItem.top - tm.tmHeight) / 2; + rc.bottom = rc.top + tm.tmHeight; + DrawText(lpdis->hDC, dict->full_name, lstrlen(dict->full_name), &rc, DT_END_ELLIPSIS | DT_NOPREFIX | DT_SINGLELINE); + + // Restore old colors + SetTextColor(lpdis->hDC, clrfore); + SetBkColor(lpdis->hDC, clrback); +} + + +static void MeasureItem(HWND hwndDlg, LPMEASUREITEMSTRUCT lpmis) +{ + TEXTMETRIC tm; + GetTextMetrics(GetDC(hwndDlg), &tm); + + if (opts.use_flags) + lpmis->itemHeight = max(ICON_SIZE, tm.tmHeight); + else + lpmis->itemHeight = tm.tmHeight; +} + + +static INT_PTR CALLBACK OptionsDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) +{ + switch (msg) + { + case WM_INITDIALOG: + { + int i, sel = -1; + for(i = 0; i < languages.getCount(); i++) + { + SendDlgItemMessage(hwndDlg, IDC_DEF_LANG, CB_ADDSTRING, 0, (LONG) languages[i]->full_name); + SendDlgItemMessage(hwndDlg, IDC_DEF_LANG, CB_SETITEMDATA, i, (DWORD) languages[i]); + + if (lstrcmp(opts.default_language, languages[i]->language) == 0) + sel = i; + } + SendDlgItemMessage(hwndDlg, IDC_DEF_LANG, CB_SETCURSEL, sel, 0); + + SendDlgItemMessage(hwndDlg, IDC_UNDERLINE_TYPE, CB_ADDSTRING, 0, (LONG) TranslateT("Line")); + SendDlgItemMessage(hwndDlg, IDC_UNDERLINE_TYPE, CB_ADDSTRING, 0, (LONG) TranslateT("Dotted")); + SendDlgItemMessage(hwndDlg, IDC_UNDERLINE_TYPE, CB_ADDSTRING, 0, (LONG) TranslateT("Dash")); + SendDlgItemMessage(hwndDlg, IDC_UNDERLINE_TYPE, CB_ADDSTRING, 0, (LONG) TranslateT("Dash dot")); + SendDlgItemMessage(hwndDlg, IDC_UNDERLINE_TYPE, CB_ADDSTRING, 0, (LONG) TranslateT("Dash dot dot")); + SendDlgItemMessage(hwndDlg, IDC_UNDERLINE_TYPE, CB_ADDSTRING, 0, (LONG) TranslateT("Wave")); + SendDlgItemMessage(hwndDlg, IDC_UNDERLINE_TYPE, CB_ADDSTRING, 0, (LONG) TranslateT("Thick")); + + break; + } + + case WM_COMMAND: + { + if(LOWORD(wParam) == IDC_GETMORE) + CallService(MS_UTILS_OPENURL, 1, (LPARAM) "http://wiki.services.openoffice.org/wiki/Dictionaries"); + + if (LOWORD(wParam) == IDC_DEF_LANG + && (HIWORD(wParam) == CBN_SELCHANGE && (HWND)lParam == GetFocus())) + { + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + return 0; + } + + break; + } + + case WM_NOTIFY: + { + LPNMHDR lpnmhdr = (LPNMHDR)lParam; + + if (lpnmhdr->idFrom == 0 && lpnmhdr->code == PSN_APPLY && languages.getCount() > 0) + { + int sel = SendDlgItemMessage(hwndDlg, IDC_DEF_LANG, CB_GETCURSEL, 0, 0); + if (sel >= languages.getCount()) + sel = 0; + DBWriteContactSettingTString(NULL, MODULE_NAME, "DefaultLanguage", + (TCHAR *) languages[sel]->language); + lstrcpy(opts.default_language, languages[sel]->language); + } + + break; + } + + case WM_DRAWITEM: + { + LPDRAWITEMSTRUCT lpdis = (LPDRAWITEMSTRUCT)lParam; + if(lpdis->CtlID != IDC_DEF_LANG) + break; + if(lpdis->itemID == -1) + break; + + Dictionary *dict = (Dictionary *) lpdis->itemData; + + DrawItem(hwndDlg, lpdis, dict); + + return TRUE; + } + + case WM_MEASUREITEM: + { + LPMEASUREITEMSTRUCT lpmis = (LPMEASUREITEMSTRUCT)lParam; + if(lpmis->CtlID != IDC_DEF_LANG) + break; + + MeasureItem(hwndDlg, lpmis); + + + return TRUE; + } + } + + return SaveOptsDlgProc(optionsControls, MAX_REGS(optionsControls), MODULE_NAME, hwndDlg, msg, wParam, lParam); +} + + +struct AutoreplaceData +{ + Dictionary *dict; + map autoReplaceMap; + BOOL initialized; + BOOL changed; + + AutoreplaceData(Dictionary *dict) : dict(dict), initialized(FALSE), changed(FALSE) {} + + void RemoveWord(const TCHAR *aWord) + { + map::iterator it = autoReplaceMap.find(aWord); + if (it != autoReplaceMap.end()) + autoReplaceMap.erase(it); + changed = TRUE; + } + + void AddWord(const TCHAR *find, const TCHAR *replace, BOOL useVars) + { + autoReplaceMap[find] = AutoReplacement(replace, useVars); + changed = TRUE; + } +}; + + +static void EnableDisableCtrls(HWND hwndDlg) +{ + BOOL enabled = IsDlgButtonChecked(hwndDlg, IDC_AUTO_USER); + EnableWindow(GetDlgItem(hwndDlg, IDC_LANGUAGE_L), enabled); + EnableWindow(GetDlgItem(hwndDlg, IDC_LANGUAGE), enabled); + EnableWindow(GetDlgItem(hwndDlg, IDC_REPLACEMENTS), enabled); + EnableWindow(GetDlgItem(hwndDlg, IDC_ADD), enabled); + EnableWindow(GetDlgItem(hwndDlg, IDC_EDIT), enabled); + EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVE), enabled); + if (!enabled) + return; + + HWND hList = GetDlgItem(hwndDlg, IDC_REPLACEMENTS); + EnableWindow(GetDlgItem(hwndDlg, IDC_EDIT), ListView_GetSelectedCount(hList) == 1); + EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVE), ListView_GetSelectedCount(hList) > 0); + + +} + + +static void LoadReplacements(HWND hwndDlg) +{ + HWND hList = GetDlgItem(hwndDlg, IDC_REPLACEMENTS); + + ListView_DeleteAllItems(hList); + ListView_SetItemCount(hList, 0); + + int sel = SendDlgItemMessage(hwndDlg, IDC_LANGUAGE, CB_GETCURSEL, 0, 0); + if (sel < 0) + return; + + AutoreplaceData *data = (AutoreplaceData *) SendDlgItemMessage(hwndDlg, IDC_LANGUAGE, CB_GETITEMDATA, sel, 0); + if (!data->initialized) + { + data->dict->autoReplace->copyMap(&data->autoReplaceMap); + data->initialized = TRUE; + } + + map::iterator it = data->autoReplaceMap.begin(); + for(int i = 0; it != data->autoReplaceMap.end(); it++, i++) + { + LVITEM item = {0}; + item.mask = LVIF_TEXT | LVIF_PARAM; + item.iItem = i; + item.iSubItem = 0; + item.pszText = (TCHAR *) it->first.c_str(); + item.cchTextMax = it->first.length(); + item.lParam = i; + + ListView_InsertItem(hList, &item); + + ListView_SetItemText(hList, i, 1, (TCHAR *) it->second.replace.c_str()); + } + + EnableDisableCtrls(hwndDlg); +} + + +static void SaveNewReplacements(BOOL canceled, Dictionary *dict, + const TCHAR *find, const TCHAR *replace, BOOL useVariables, + const TCHAR *original_find, void *param) +{ + if (canceled) + return; + + AutoreplaceData *data = (AutoreplaceData *) param; + + if (lstrlen(original_find) > 0) + data->RemoveWord(original_find); + + data->AddWord(find, replace, useVariables); +} + + +static void ShowAddReplacement(HWND hwndDlg, int item = -1) +{ + int sel = SendDlgItemMessage(hwndDlg, IDC_LANGUAGE, CB_GETCURSEL, 0, 0); + if (sel < 0) + return; + + AutoreplaceData *data = (AutoreplaceData *) SendDlgItemMessage(hwndDlg, IDC_LANGUAGE, CB_GETITEMDATA, sel, 0); + + TCHAR find[256]; + const TCHAR *replace = NULL; + BOOL useVariables = FALSE; + + if (item < 0) + { + find[0] = 0; + } + else + { + ListView_GetItemText(GetDlgItem(hwndDlg, IDC_REPLACEMENTS), item, 0, find, MAX_REGS(find)); + } + + if (lstrlen(find) > 0) + { + AutoReplacement &ar = data->autoReplaceMap[find]; + replace = ar.replace.c_str(); + useVariables = ar.useVariables; + } + + if (ShowAutoReplaceDialog(hwndDlg, TRUE, data->dict, find, replace, useVariables, + FALSE, &SaveNewReplacements, data)) + { + LoadReplacements(hwndDlg); + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + } + + EnableDisableCtrls(hwndDlg); +} + + +static INT_PTR CALLBACK AutoreplaceDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) +{ + switch (msg) + { + case WM_INITDIALOG: + { + BOOL ret = SaveOptsDlgProc(autoReplaceControls, MAX_REGS(autoReplaceControls), MODULE_NAME, hwndDlg, msg, wParam, lParam); + + int sel = -1; + for(int i = 0; i < languages.getCount(); i++) + { + SendDlgItemMessage(hwndDlg, IDC_LANGUAGE, CB_ADDSTRING, 0, (LONG) languages[i]->full_name); + SendDlgItemMessage(hwndDlg, IDC_LANGUAGE, CB_SETITEMDATA, i, (DWORD) new AutoreplaceData(languages[i])); + + if (lstrcmp(opts.default_language, languages[i]->language) == 0) + sel = i; + } + SendDlgItemMessage(hwndDlg, IDC_LANGUAGE, CB_SETCURSEL, sel, 0); + + HWND hList = GetDlgItem(hwndDlg, IDC_REPLACEMENTS); + + ListView_SetExtendedListViewStyle(hList, ListView_GetExtendedListViewStyle(hList) | LVS_EX_FULLROWSELECT); + + LVCOLUMN col = {0}; + col.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT ; + col.fmt = LVCFMT_LEFT; + col.cx = 175; + col.pszText = TranslateT("Wrong word"); + col.cchTextMax = lstrlen(col.pszText); + ListView_InsertColumn(hList, 0, &col); + + col.pszText = TranslateT("Correction"); + col.cchTextMax = lstrlen(col.pszText); + ListView_InsertColumn(hList, 1, &col); + + LoadReplacements(hwndDlg); + + return ret; + } + + case WM_COMMAND: + { + if (LOWORD(wParam) == IDC_LANGUAGE && HIWORD(wParam) == CBN_SELCHANGE) + { + LoadReplacements(hwndDlg); + } + else if (LOWORD(wParam) == IDC_ADD) + { + ShowAddReplacement(hwndDlg); + } + else if (LOWORD(wParam) == IDC_EDIT) + { + HWND hList = GetDlgItem(hwndDlg, IDC_REPLACEMENTS); + if (ListView_GetSelectedCount(hList) != 1) + break; + + int sel = SendMessage(hList, LVM_GETNEXTITEM, -1, LVNI_SELECTED); + if (sel < 0) + break; + + ShowAddReplacement(hwndDlg, sel); + } + else if (LOWORD(wParam) == IDC_REMOVE) + { + HWND hList = GetDlgItem(hwndDlg, IDC_REPLACEMENTS); + + int sel = SendDlgItemMessage(hwndDlg, IDC_LANGUAGE, CB_GETCURSEL, 0, 0); + if (sel < 0) + break; + + AutoreplaceData *data = (AutoreplaceData *) SendDlgItemMessage(hwndDlg, IDC_LANGUAGE, CB_GETITEMDATA, sel, 0); + + BOOL changed = FALSE; + + sel = SendMessage(hList, LVM_GETNEXTITEM, -1, LVNI_SELECTED); + while(sel >= 0) + { + TCHAR tmp[256]; + ListView_GetItemText(hList, sel, 0, tmp, MAX_REGS(tmp)); + + data->RemoveWord(tmp); + changed = TRUE; + + sel = SendMessage(hList, LVM_GETNEXTITEM, sel, LVNI_SELECTED); + } + + if (changed) + { + LoadReplacements(hwndDlg); + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + } + } + + break; + } + + case WM_NOTIFY: + { + LPNMHDR lpnmhdr = (LPNMHDR)lParam; + + if (lpnmhdr->idFrom == 0 && lpnmhdr->code == PSN_APPLY && languages.getCount() > 0) + { + for(int i = 0; i < languages.getCount(); i++) + { + AutoreplaceData *data = (AutoreplaceData *) SendDlgItemMessage(hwndDlg, IDC_LANGUAGE, CB_GETITEMDATA, i, 0); + if (data->changed) + { + data->dict->autoReplace->setMap(data->autoReplaceMap); + data->changed = FALSE; + } + } + } + else if (lpnmhdr->idFrom == IDC_REPLACEMENTS) + { + HWND hList = GetDlgItem(hwndDlg, IDC_REPLACEMENTS); + + switch(lpnmhdr->code) + { + case LVN_ITEMCHANGED: + case NM_CLICK: + EnableDisableCtrls(hwndDlg); + break; + + case NM_DBLCLK: + LPNMITEMACTIVATE lpnmitem = (LPNMITEMACTIVATE) lParam; + if (lpnmitem->iItem >= 0) + ShowAddReplacement(hwndDlg, lpnmitem->iItem); + break; + } + } + else if (lpnmhdr->idFrom == IDC_AUTO_USER) + { + EnableDisableCtrls(hwndDlg); + } + + break; + } + + case WM_DRAWITEM: + { + LPDRAWITEMSTRUCT lpdis = (LPDRAWITEMSTRUCT)lParam; + if(lpdis->CtlID != IDC_LANGUAGE) + break; + if(lpdis->itemID == -1) + break; + + AutoreplaceData *data = (AutoreplaceData *) lpdis->itemData; + + DrawItem(hwndDlg, lpdis, data->dict); + + return TRUE; + } + + case WM_MEASUREITEM: + { + LPMEASUREITEMSTRUCT lpmis = (LPMEASUREITEMSTRUCT)lParam; + if(lpmis->CtlID != IDC_LANGUAGE) + break; + + MeasureItem(hwndDlg, lpmis); + + + return TRUE; + } + } + + + return SaveOptsDlgProc(autoReplaceControls, MAX_REGS(autoReplaceControls), MODULE_NAME, hwndDlg, msg, wParam, lParam); +} + + diff --git a/plugins/SpellChecker/options.h b/plugins/SpellChecker/options.h new file mode 100644 index 0000000000..70710fdb9d --- /dev/null +++ b/plugins/SpellChecker/options.h @@ -0,0 +1,68 @@ +/* +Copyright (C) 2006-2010 Ricardo Pescuma Domenecci + +This 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 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 file; see the file license.txt. If +not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. +*/ + + +#ifndef __OPTIONS_H__ +# define __OPTIONS_H__ + + +#define POPUP_ACTION_DONOTHING 0 +#define POPUP_ACTION_CLOSEPOPUP 1 +#define POPUP_ACTION_OPENHISTORY 2 + +#define POPUP_DELAY_DEFAULT 0 +#define POPUP_DELAY_CUSTOM 1 +#define POPUP_DELAY_PERMANENT 2 + + +struct Options { + TCHAR default_language[32]; + BOOL auto_replace_dict; + BOOL auto_replace_user; + BOOL ignore_uppercase; + BOOL ignore_with_numbers; + BOOL ask_when_sending_with_error; + + WORD underline_type; + BOOL cascade_corrections; + BOOL show_all_corrections; + BOOL show_wrong_word; + BOOL use_flags; + BOOL auto_locale; + BOOL use_other_apps_dicts; + BOOL handle_underscore; +}; + +extern Options opts; + + +// Initializations needed by options +void InitOptions(); + +// Deinitializations needed by options +void DeInitOptions(); + + +// Loads the options from DB +// It don't need to be called, except in some rare cases +void LoadOptions(); + + + +#endif // __OPTIONS_H__ diff --git a/plugins/SpellChecker/res/no_spellcheck.ico b/plugins/SpellChecker/res/no_spellcheck.ico new file mode 100644 index 0000000000..a6190bf73c Binary files /dev/null and b/plugins/SpellChecker/res/no_spellcheck.ico differ diff --git a/plugins/SpellChecker/res/spellcheck.ico b/plugins/SpellChecker/res/spellcheck.ico new file mode 100644 index 0000000000..7ab7cce847 Binary files /dev/null and b/plugins/SpellChecker/res/spellcheck.ico differ diff --git a/plugins/SpellChecker/res/unknown.ico b/plugins/SpellChecker/res/unknown.ico new file mode 100644 index 0000000000..709342aa3c Binary files /dev/null and b/plugins/SpellChecker/res/unknown.ico differ diff --git a/plugins/SpellChecker/resource.h b/plugins/SpellChecker/resource.h new file mode 100644 index 0000000000..bcb28008fb --- /dev/null +++ b/plugins/SpellChecker/resource.h @@ -0,0 +1,93 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Developer Studio generated include file. +// Used by resource.rc +// +#define IDD_OPTIONS 119 +#define IDD_POPUPS 120 +#define IDR_CONTEXT 120 +#define IDI_NO_CHECK 122 +#define IDI_CHECK 123 +#define IDI_UNKNOWN_FLAG 124 +#define IDD_ADD_REPLACEMENT 125 +#define IDD_REPLACEMENTS 126 +#define IDC_DELAY 1001 +#define IDC_WINCOLORS 1002 +#define IDC_DEFAULTCOLORS 1003 +#define IDC_BGCOLOR 1004 +#define IDC_TEXTCOLOR 1005 +#define IDC_PREV 1006 +#define IDC_DELAYFROMPU 1007 +#define IDC_DELAYCUSTOM 1008 +#define IDC_DELAYPERMANENT 1009 +#define IDC_RIGHT_ACTION 1022 +#define IDC_LEFT_ACTION 1023 +#define IDC_PROTOCOLS 1041 +#define IDC_CHANGED 1058 +#define IDC_REMOVED 1059 +#define IDC_CHECK1 1060 +#define IDC_POPUPS 1060 +#define IDC_AUTOCORRECT 1060 +#define IDC_AUTO_DICT 1060 +#define IDC_VARIABLES 1060 +#define IDC_CHECK2 1061 +#define IDC_DELAY_SPIN 1061 +#define IDC_HISTORY 1061 +#define IDC_SIMULATE_SUPPORT 1061 +#define IDC_USE_LOCALE 1061 +#define IDC_CASCADE_CORRECTIONS 1061 +#define IDC_ANSI 1062 +#define IDC_SHOW_ALL_CORRECTIONS 1062 +#define IDC_TRACK_G 1063 +#define IDC_USE_FLAGS 1063 +#define IDC_CHANGED_L 1064 +#define IDC_SHOW_WRONG_WORD 1064 +#define IDC_REMOVED_L 1065 +#define IDC_IGNORE_UPPERCASE 1065 +#define IDC_PROTOCOLS_G 1066 +#define IDC_AUTO_USER 1066 +#define IDC_ASK_ON_ERROR 1066 +#define IDC_PROTOCOLS_L 1067 +#define IDC_AUTO_LOCALE 1067 +#define IDC_COLOURS_G 1068 +#define IDC_TRACK_CHANGE 1068 +#define IDC_OTHER_PROGS 1068 +#define IDC_BGCOLOR_L 1069 +#define IDC_TRACK_REMOVE 1069 +#define IDC_HANDLE_UNDERSCORE 1069 +#define IDC_TEXTCOLOR_L 1070 +#define IDC_ONLY_NOT_OFFLINE 1070 +#define IDC_DELAY_G 1071 +#define IDC_ACTIONS_G 1072 +#define IDC_RIGHT_ACTION_L 1073 +#define IDC_LEFT_ACTION_L 1074 +#define IDC_DEF_LANG 1075 +#define IDC_GETMORE 1076 +#define IDC_ADVANCED 1077 +#define IDC_UNDERLINE_TYPE 1078 +#define IDC_UNDERLINE_TYPE_L 1079 +#define IDC_SPELL_CHECKER 1080 +#define IDC_NEW 1082 +#define IDC_OLD 1083 +#define IDC_REPLACEMENTS 1084 +#define IDC_REMOVE 1085 +#define IDC_ADD 1086 +#define IDC_LANGUAGE 1087 +#define IDC_EDIT 1088 +#define IDC_VAR_HELP 1088 +#define IDC_OLD_PS 1089 +#define IDC_LANGUAGE_L 1090 +#define IDC_IGNORE_NUMBERS 1091 +#define IDC_STATIC -1 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NO_MFC 1 +#define _APS_3D_CONTROLS 1 +#define _APS_NEXT_RESOURCE_VALUE 126 +#define _APS_NEXT_COMMAND_VALUE 40005 +#define _APS_NEXT_CONTROL_VALUE 1092 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/plugins/SpellChecker/resource.rc b/plugins/SpellChecker/resource.rc new file mode 100644 index 0000000000..d4c4ab2ae4 --- /dev/null +++ b/plugins/SpellChecker/resource.rc @@ -0,0 +1,201 @@ +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "resource.h" +#include "winresrc.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// Neutral resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU) +LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL +#pragma code_page(1252) + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_REPLACEMENTS DIALOGEX 0, 0, 276, 229 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_VISIBLE +EXSTYLE WS_EX_CONTROLPARENT +FONT 8, "MS Shell Dlg", 0, 0, 0x1 +BEGIN + GROUPBOX "Replacements",IDC_STATIC,1,5,274,216 + CONTROL "Enable auto-replacements",IDC_AUTO_USER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,20,256,10 + LTEXT "Language:",IDC_LANGUAGE_L,11,37,82,8 + COMBOBOX IDC_LANGUAGE,95,35,173,60,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + CONTROL "List1",IDC_REPLACEMENTS,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,10,55,258,139 + PUSHBUTTON "Add...",IDC_ADD,68,199,60,15 + PUSHBUTTON "Edit...",IDC_EDIT,137,199,60,15 + PUSHBUTTON "Remove",IDC_REMOVE,205,199,60,15 +END + +IDD_ADD_REPLACEMENT DIALOG 0, 0, 282, 98 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Add auto-replace word" +FONT 8, "MS Shell Dlg" +BEGIN + RTEXT "Wrong word:",IDC_STATIC,7,9,67,11 + EDITTEXT IDC_OLD,77,7,198,13,ES_AUTOHSCROLL + LTEXT "No separators and all lowercase chars",IDC_OLD_PS,77,22,198,11 + RTEXT "Correction:",IDC_STATIC,7,40,67,11 + EDITTEXT IDC_NEW,77,38,180,13,ES_AUTOHSCROLL + CONTROL "",IDC_VAR_HELP,"MButtonClass",WS_TABSTOP,259,38,16,14,WS_EX_NOACTIVATE | 0x10000000L + CONTROL "Use variables in correction",IDC_VARIABLES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,77,55,198,10 + DEFPUSHBUTTON "OK",IDOK,88,77,50,14 + PUSHBUTTON "Cancel",IDCANCEL,142,77,50,14 +END + +IDD_OPTIONS DIALOGEX 0, 0, 284, 247 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_VISIBLE +EXSTYLE WS_EX_CONTROLPARENT +FONT 8, "MS Shell Dlg", 0, 0, 0x1 +BEGIN + GROUPBOX "Spell Checker",IDC_SPELL_CHECKER,1,5,282,109 + LTEXT "Default language:",IDC_STATIC,11,20,82,8 + COMBOBOX IDC_DEF_LANG,95,18,173,60,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + CONTROL "Auto-replace words with dictionary suggestions",IDC_AUTO_DICT, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,40,266,10 + CONTROL "Ignore words with numbers",IDC_IGNORE_NUMBERS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,52,266,10 + CONTROL "Ignore words in UPPER CASE",IDC_IGNORE_UPPERCASE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,64,266,10 + CONTROL "Ask before sending a message with spelling errors",IDC_ASK_ON_ERROR, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,76,266,10 + CONTROL "Download more dictionaries",IDC_GETMORE,"Hyperlink",WS_TABSTOP | 0x1,10,96,266,12 + GROUPBOX "Advanced",IDC_ADVANCED,1,118,282,125 + LTEXT "Underline type:",IDC_UNDERLINE_TYPE_L,10,134,92,8 + COMBOBOX IDC_UNDERLINE_TYPE,110,132,158,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + CONTROL "Show corrections in submenu",IDC_CASCADE_CORRECTIONS, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,154,266,10 + CONTROL "Show all corrections in context menu (takes more time to show)",IDC_SHOW_ALL_CORRECTIONS, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,166,266,10 + CONTROL "Show wrong word",IDC_SHOW_WRONG_WORD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,178,266,10 + CONTROL "Use flags",IDC_USE_FLAGS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,190,266,10 + CONTROL "Use input language to select dictionary",IDC_AUTO_LOCALE, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,202,266,10 + CONTROL "Use dictionaries from other programs",IDC_OTHER_PROGS, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,214,266,10 + CONTROL "Avoid removing underscores (slows down checking of long texts)",IDC_HANDLE_UNDERSCORE, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,226,266,10 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_REPLACEMENTS, DIALOG + BEGIN + LEFTMARGIN, 1 + RIGHTMARGIN, 275 + TOPMARGIN, 1 + BOTTOMMARGIN, 227 + HORZGUIDE, 199 + END + + IDD_ADD_REPLACEMENT, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 275 + TOPMARGIN, 7 + BOTTOMMARGIN, 91 + END + + IDD_OPTIONS, DIALOG + BEGIN + LEFTMARGIN, 1 + RIGHTMARGIN, 283 + VERTGUIDE, 10 + VERTGUIDE, 276 + TOPMARGIN, 1 + BOTTOMMARGIN, 243 + END +END +#endif // APSTUDIO_INVOKED + +#endif // Neutral resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_NO_CHECK ICON "res/no_spellcheck.ico" +IDI_CHECK ICON "res/spellcheck.ico" +IDI_UNKNOWN_FLAG ICON "res/unknown.ico" +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// English (Canada) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENC) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_CAN +#pragma code_page(1252) + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""resource.h""\r\n" + "#include ""winresrc.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + +#endif // English (Canada) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/plugins/SpellChecker/spellchecker.cpp b/plugins/SpellChecker/spellchecker.cpp new file mode 100644 index 0000000000..3daab01da7 --- /dev/null +++ b/plugins/SpellChecker/spellchecker.cpp @@ -0,0 +1,2328 @@ +/* +Copyright (C) 2006-2010 Ricardo Pescuma Domenecci + +This 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 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 file; see the file license.txt. If +not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. +*/ + +#include "commons.h" + + +// Prototypes /////////////////////////////////////////////////////////////////////////// + + +PLUGININFOEX pluginInfo={ + sizeof(PLUGININFOEX), +#ifdef WIN64 + "Spell Checker (x64)", +#elif UNICODE + "Spell Checker (Unicode)", +#else + "Spell Checker (Ansi)", +#endif + PLUGIN_MAKE_VERSION(0,2,6,0), + "Spell checker for the message windows. Uses Hunspell to do the checking.", + "Ricardo Pescuma Domenecci, FREAK_THEMIGHTY", + "pescuma@miranda-im.org", + "© 2006-2010 Ricardo Pescuma Domenecci", + "http://pescuma.org/miranda/spellchecker", + UNICODE_AWARE, + 0, //doesn't replace anything built-in +#ifdef WIN64 + { 0x77c4713f, 0xd544, 0x4b53, { 0xbf, 0x1f, 0xe, 0x47, 0x3e, 0xe9, 0xc4, 0x8c } } // {77C4713F-D544-4b53-BF1F-0E473EE9C48C} +#elif UNICODE + { 0x36753ae3, 0x840b, 0x4797, { 0x94, 0xa5, 0xfd, 0x9f, 0x58, 0x52, 0xb9, 0x42 } } // {36753AE3-840B-4797-94A5-FD9F5852B942} +#else + { 0x3cdbcd92, 0x94d7, 0x466a, { 0x94, 0x7f, 0x4e, 0xe0, 0x1c, 0xca, 0xf4, 0x89 } } // {3CDBCD92-94D7-466a-947F-4EE01CCAF489} +#endif +}; + +typedef struct +{ + TCHAR* szDescr; + char* szName; + int defIconID; +} IconStruct; + +static IconStruct iconList[] = +{ + { LPGENT("Enabled"), "spellchecker_enabled", IDI_CHECK }, + { LPGENT("Disabled"), "spellchecker_disabled", IDI_NO_CHECK }, +// { LPGENT("Unknown Flag"), "spellchecker_unknown_flag", IDI_UNKNOWN_FLAG }, +}; + +#define TIMER_ID 17982 +#define WMU_DICT_CHANGED (WM_USER+100) +#define WMU_KBDL_CHANGED (WM_USER+101) + +#define HOTKEY_ACTION_TOGGLE 1 + +HINSTANCE hInst; +PLUGINLINK *pluginLink; +LIST_INTERFACE li; +MM_INTERFACE mmi; +UTF8_INTERFACE utfi; +int hLangpack = 0; + +HANDLE hHooks[6]; +HANDLE hServices[3]; + +HANDLE hDictionariesFolder = NULL; +TCHAR *dictionariesFolder; + +HANDLE hCustomDictionariesFolder = NULL; +TCHAR *customDictionariesFolder; + +HANDLE hFlagsDllFolder = NULL; +TCHAR *flagsDllFolder; + +HBITMAP hCheckedBmp; +BITMAP bmpChecked; + +BOOL variables_enabled = FALSE; +BOOL loaded = FALSE; + +LIST languages(1); + +typedef map DialogMapType; + +DialogMapType dialogs; +DialogMapType menus; + +int ModulesLoaded(WPARAM wParam, LPARAM lParam); +int PreShutdown(WPARAM wParam, LPARAM lParam); +int MsgWindowEvent(WPARAM wParam, LPARAM lParam); +int MsgWindowPopup(WPARAM wParam, LPARAM lParam); +int IconsChanged(WPARAM wParam, LPARAM lParam); +int IconPressed(WPARAM wParam, LPARAM lParam); + +int AddContactTextBox(HANDLE hContact, HWND hwnd, char *name, BOOL srmm, HWND hwndOwner); +int RemoveContactTextBox(HWND hwnd); +int ShowPopupMenu(HWND hwnd, HMENU hMenu, POINT pt, HWND hwndOwner); + +INT_PTR AddContactTextBoxService(WPARAM wParam, LPARAM lParam); +INT_PTR RemoveContactTextBoxService(WPARAM wParam, LPARAM lParam); +INT_PTR ShowPopupMenuService(WPARAM wParam, LPARAM lParam); + +LRESULT CALLBACK MenuWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); + +void ModifyIcon(Dialog *dlg); +BOOL GetWordCharRange(Dialog *dlg, CHARRANGE &sel, TCHAR *text, size_t text_len, int &first_char); +TCHAR *GetWordUnderPoint(Dialog *dlg, POINT pt, CHARRANGE &sel); + +int GetClosestLanguage(TCHAR *lang_name); + +typedef void (*FoundWrongWordCallback)(TCHAR *word, CHARRANGE pos, void *param); + + +#define DEFINE_GUIDXXX(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ + const GUID CDECL name \ + = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } } + +DEFINE_GUIDXXX(IID_ITextDocument,0x8CC497C0,0xA1DF,0x11CE,0x80,0x98, + 0x00,0xAA,0x00,0x47,0xBE,0x5D); + + + +// Functions //////////////////////////////////////////////////////////////////////////// + + +HICON IcoLib_LoadIcon(Dictionary *dict, BOOL copy) +{ +#ifdef UNICODE + char lang[32]; + WideCharToMultiByte(CP_ACP, 0, dict->language, -1, lang, sizeof(lang), NULL, NULL); + return IcoLib_LoadIcon(lang, copy); +#else + return IcoLib_LoadIcon(dict->language, copy); +#endif +} + + +extern "C" BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) +{ + hInst = hinstDLL; + return TRUE; +} + +extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion) +{ + return &pluginInfo; +} + + +static const MUUID interfaces[] = { MIID_SPELLCHECKER, MIID_LAST }; +extern "C" __declspec(dllexport) const MUUID* MirandaPluginInterfaces(void) +{ + return interfaces; +} + + +extern "C" int __declspec(dllexport) Load(PLUGINLINK *link) +{ + pluginLink = link; + + mir_getMMI(&mmi); + mir_getUTFI(&utfi); + mir_getLI(&li); + mir_getLP(&pluginInfo); + + // hooks + hHooks[0] = HookEvent(ME_SYSTEM_MODULESLOADED, ModulesLoaded); + hHooks[1] = HookEvent(ME_SYSTEM_PRESHUTDOWN, PreShutdown); + + hCheckedBmp = LoadBitmap(NULL, MAKEINTRESOURCE(OBM_CHECK)); + if (GetObject(hCheckedBmp, sizeof(bmpChecked), &bmpChecked) == 0) + bmpChecked.bmHeight = bmpChecked.bmWidth = 10; + + return 0; +} + +extern "C" int __declspec(dllexport) Unload(void) +{ + DeleteObject(hCheckedBmp); + FreeDictionaries(languages); + + return 0; +} + +// Called when all the modules are loaded +int ModulesLoaded(WPARAM wParam, LPARAM lParam) +{ + variables_enabled = ServiceExists(MS_VARS_FORMATSTRING); + + // add our modules to the KnownModules list + CallService("DBEditorpp/RegisterSingleModule", (WPARAM) MODULE_NAME, 0); + + // updater plugin support + if(ServiceExists(MS_UPDATE_REGISTER)) + { + Update upd = {0}; + char szCurrentVersion[30]; + + upd.cbSize = sizeof(upd); + upd.szComponentName = pluginInfo.shortName; + + upd.szBetaVersionURL = "http://svn.berlios.de/svnroot/repos/mgoodies/trunk/spellchecker/Docs/spellchecker_version.txt"; + upd.szBetaChangelogURL = "http://pescuma.org/miranda/spellchecker#Changelog"; + upd.pbBetaVersionPrefix = (BYTE *)"Spell Checker "; + upd.cpbBetaVersionPrefix = (int)strlen((char *)upd.pbBetaVersionPrefix); + upd.szUpdateURL = UPDATER_AUTOREGISTER; +#ifdef WIN64 + upd.szBetaUpdateURL = "http://pescuma.googlecode.com/files/spellchecker64.%VERSION%.zip"; +// upd.szVersionURL = "http://addons.miranda-im.org/details.php?action=viewfile&id="; + upd.pbVersionPrefix = (BYTE *)"Spell Checker (x64) "; +#elif UNICODE + upd.szBetaUpdateURL = "http://pescuma.googlecode.com/files/spellcheckerW.%VERSION%.zip"; + upd.szVersionURL = "http://addons.miranda-im.org/details.php?action=viewfile&id=3691"; + upd.pbVersionPrefix = (BYTE *)"Spell Checker (Unicode) "; +#else + upd.szBetaUpdateURL = "http://pescuma.googlecode.com/files/spellchecker.%VERSION%.zip"; + upd.szVersionURL = "http://addons.miranda-im.org/details.php?action=viewfile&id=3690"; + upd.pbVersionPrefix = (BYTE *)"Spell Checker (Ansi) "; +#endif + upd.cpbVersionPrefix = (int)strlen((char *)upd.pbVersionPrefix); + + upd.pbVersion = (BYTE *)CreateVersionStringPluginEx(&pluginInfo, szCurrentVersion); + upd.cpbVersion = (int)strlen((char *)upd.pbVersion); + + CallService(MS_UPDATE_REGISTER, 0, (LPARAM)&upd); + } + + // Folders plugin support + if (ServiceExists(MS_FOLDERS_REGISTER_PATH)) + { + hDictionariesFolder = FoldersRegisterCustomPathT(LPGEN("Spell Checker"), LPGEN("Dictionaries"), DICTIONARIES_FOLDER); + + dictionariesFolder = (TCHAR *) mir_alloc(sizeof(TCHAR) * MAX_PATH); + FoldersGetCustomPathT(hDictionariesFolder, dictionariesFolder, MAX_PATH, _T(".")); + + hCustomDictionariesFolder = FoldersRegisterCustomPathT(LPGEN("Spell Checker"), LPGEN("Custom Dictionaries"), CUSTOM_DICTIONARIES_FOLDER); + + customDictionariesFolder = (TCHAR *) mir_alloc(sizeof(TCHAR) * MAX_PATH); + FoldersGetCustomPathT(hCustomDictionariesFolder, customDictionariesFolder, MAX_PATH, _T(".")); + + hFlagsDllFolder = FoldersRegisterCustomPathT(LPGEN("Spell Checker"), LPGEN("Flags DLL"), FLAGS_DLL_FOLDER); + + flagsDllFolder = (TCHAR *) mir_alloc(sizeof(TCHAR) * MAX_PATH); + FoldersGetCustomPathT(hFlagsDllFolder, flagsDllFolder, MAX_PATH, _T(".")); + } + else + { + dictionariesFolder = Utils_ReplaceVarsT(DICTIONARIES_FOLDER); + customDictionariesFolder = Utils_ReplaceVarsT(CUSTOM_DICTIONARIES_FOLDER); + flagsDllFolder = Utils_ReplaceVarsT(FLAGS_DLL_FOLDER); + } + + TCHAR path[MAX_PATH]; + GetModuleFileName(hInst, path, MAX_PATH); + + SKINICONDESC sid = {0}; + sid.cbSize = sizeof(SKINICONDESC); + sid.flags = SIDF_ALL_TCHAR; + sid.ptszSection = LPGENT("Spell Checker"); + sid.ptszDefaultFile = path; + + for (unsigned i = 0; i < MAX_REGS(iconList); ++i) + { + sid.ptszDescription = iconList[i].szDescr; + sid.pszName = iconList[i].szName; + sid.iDefaultIndex = -iconList[i].defIconID; + CallService(MS_SKIN2_ADDICON, 0, (LPARAM)&sid); + } + + InitOptions(); + + GetAvaibleDictionaries(languages, dictionariesFolder, customDictionariesFolder); + + LoadOptions(); + + if (opts.use_flags) + { + // Load flags dll + TCHAR flag_file[1024]; + mir_sntprintf(flag_file, MAX_REGS(flag_file), _T("%s\\flags.dll"), flagsDllFolder); + HMODULE hFlagsDll = LoadLibraryEx(flag_file, NULL, LOAD_LIBRARY_AS_DATAFILE); + + sid.flags = SIDF_ALL_TCHAR | SIDF_SORTED; + sid.ptszSection = _T("Languages/Flags"); + + // Get language flags + for(int i = 0; i < languages.getCount(); i++) + { + sid.ptszDescription = languages[i]->full_name; +#ifdef UNICODE + char lang[32]; + mir_snprintf(lang, MAX_REGS(lang), "%S", languages[i]->language); + sid.pszName = lang; +#else + sid.pszName = languages[i]->language; +#endif + + HICON hFlag = IcoLib_LoadIcon(sid.pszName); + if (hFlag != NULL) + { + // Already registered + IcoLib_ReleaseIcon(hFlag); + continue; + } + + if (hFlagsDll != NULL) + hFlag = (HICON) LoadImage(hFlagsDll, languages[i]->language, IMAGE_ICON, 16, 16, 0); + else + hFlag = NULL; + + if (hFlag != NULL) + { + sid.hDefaultIcon = hFlag; + sid.ptszDefaultFile = NULL; + sid.iDefaultIndex = 0; + } + else + { + sid.hDefaultIcon = NULL; + sid.ptszDefaultFile = path; + sid.iDefaultIndex = - IDI_UNKNOWN_FLAG; + } + + // Oki, lets add to IcoLib, then + CallService(MS_SKIN2_ADDICON, 0, (LPARAM)&sid); + + if (hFlag != NULL) + DestroyIcon(hFlag); + } + FreeLibrary(hFlagsDll); + } + + for (int j = 0; j < languages.getCount(); j++) + { + Dictionary *dict = languages[j]; + + TCHAR filename[MAX_PATH]; + mir_sntprintf(filename, MAX_PATH, _T("%s\\%s.ar"), customDictionariesFolder, dict->language); + dict->autoReplace = new AutoReplaceMap(filename, dict); + + if (lstrcmp(dict->language, opts.default_language) == 0) + dict->load(); + } + + hHooks[2] = HookEvent(ME_SKIN2_ICONSCHANGED, &IconsChanged); + hHooks[3] = HookEvent(ME_MSG_WINDOWEVENT, &MsgWindowEvent); + hHooks[4] = HookEvent(ME_MSG_WINDOWPOPUP, &MsgWindowPopup); + hHooks[5] = HookEvent(ME_MSG_ICONPRESSED, &IconPressed); + + hServices[0] = CreateServiceFunction(MS_SPELLCHECKER_ADD_RICHEDIT, AddContactTextBoxService); + hServices[1] = CreateServiceFunction(MS_SPELLCHECKER_REMOVE_RICHEDIT, RemoveContactTextBoxService); + hServices[2] = CreateServiceFunction(MS_SPELLCHECKER_SHOW_POPUP_MENU, ShowPopupMenuService); + + if (ServiceExists(MS_MSG_ADDICON)) + { + StatusIconData sid = {0}; + sid.cbSize = sizeof(sid); + sid.szModule = MODULE_NAME; + sid.hIconDisabled = IcoLib_LoadIcon("spellchecker_disabled", TRUE); + sid.flags = MBF_HIDDEN; + + for (int i = 0; i < languages.getCount(); i++) + { + sid.dwId = i; + + char tmp[128]; + mir_snprintf(tmp, MAX_REGS(tmp), "%s - " TCHAR_STR_PARAM, + Translate("Spell Checker"), languages[i]->full_name); + sid.szTooltip = tmp; + + if (opts.use_flags) + sid.hIcon = IcoLib_LoadIcon(languages[i], TRUE); + else + sid.hIcon = IcoLib_LoadIcon("spellchecker_enabled", TRUE); + + CallService(MS_MSG_ADDICON, 0, (LPARAM) &sid); + } + } + + if (ServiceExists(MS_HOTKEY_REGISTER)) + { + HOTKEYDESC hkd = {0}; + hkd.cbSize = sizeof(hkd); + hkd.pszName = "Spell Checker/Toggle"; + hkd.ptszSection = LPGENT("Spell Checker"); + hkd.ptszDescription = LPGENT("Enable/disable spell checker"); + hkd.dwFlags = HKD_TCHAR; +// hkd.DefHotKey = HOTKEYCODE(HOTKEYF_SHIFT|HOTKEYF_ALT, 'S'); + hkd.lParam = HOTKEY_ACTION_TOGGLE; + CallService(MS_HOTKEY_REGISTER, 0, (LPARAM) &hkd); + } + + loaded = TRUE; + + return 0; +} + + +int IconsChanged(WPARAM wParam, LPARAM lParam) +{ + if (ServiceExists(MS_MSG_MODIFYICON)) + { + StatusIconData sid = {0}; + sid.cbSize = sizeof(sid); + sid.szModule = MODULE_NAME; + sid.hIconDisabled = IcoLib_LoadIcon("spellchecker_disabled", TRUE); + sid.flags = MBF_HIDDEN; + + + for (int i = 0; i < languages.getCount(); i++) + { + sid.dwId = i; + + char tmp[128]; + mir_snprintf(tmp, MAX_REGS(tmp), "%s - " TCHAR_STR_PARAM, + Translate("Spell Checker"), languages[i]->full_name); + sid.szTooltip = tmp; + + if (opts.use_flags) + sid.hIcon = IcoLib_LoadIcon(languages[i], TRUE); + else + sid.hIcon = IcoLib_LoadIcon("spellchecker_enabled", TRUE); + + CallService(MS_MSG_MODIFYICON, 0, (LPARAM) &sid); + } + } + + return 0; +} + + +int PreShutdown(WPARAM wParam, LPARAM lParam) +{ + int i; + for(i = 0; i < MAX_REGS(hServices); i++) + DestroyServiceFunction(hServices[i]); + + for(i = 0; i < MAX_REGS(hHooks); i++) + UnhookEvent(hHooks[i]); + + DeInitOptions(); + + if (ServiceExists(MS_MSG_REMOVEICON)) + { + StatusIconData sid = {0}; + sid.cbSize = sizeof(sid); + sid.szModule = MODULE_NAME; + CallService(MS_MSG_REMOVEICON, 0, (LPARAM) &sid); + } + + mir_free(dictionariesFolder); + mir_free(customDictionariesFolder); + mir_free(flagsDllFolder); + + return 0; +} + + +void SetUnderline(Dialog *dlg, int pos_start, int pos_end) +{ + dlg->re->SetSel(pos_start, pos_end); + + CHARFORMAT2 cf; + cf.cbSize = sizeof(CHARFORMAT2); + cf.dwMask = CFM_UNDERLINE | CFM_UNDERLINETYPE; + cf.dwEffects = CFE_UNDERLINE; + cf.bUnderlineType = ((opts.underline_type + CFU_UNDERLINEDOUBLE) | 0x50); + dlg->re->SendMessage(EM_SETCHARFORMAT, (WPARAM) SCF_SELECTION, (LPARAM)&cf); + + dlg->markedSomeWord = TRUE; +} + + +BOOL IsMyUnderline(const CHARFORMAT2 &cf) +{ + return (cf.dwEffects & CFE_UNDERLINE) + && (cf.bUnderlineType & 0x0F) >= CFU_UNDERLINEDOUBLE + && (cf.bUnderlineType & 0x0F) <= CFU_UNDERLINETHICK + && (cf.bUnderlineType & ~0x0F) == 0x50; +} + + +void SetNoUnderline(RichEdit *re, int pos_start, int pos_end) +{ + if (opts.handle_underscore) + { + for(int i = pos_start; i <= pos_end; i++) + { + re->SetSel(i, min(i+1, pos_end)); + + CHARFORMAT2 cf; + cf.cbSize = sizeof(CHARFORMAT2); + re->SendMessage(EM_GETCHARFORMAT, (WPARAM) SCF_SELECTION, (LPARAM)&cf); + + BOOL mine = IsMyUnderline(cf); + if (mine) + { + cf.cbSize = sizeof(CHARFORMAT2); + cf.dwMask = CFM_UNDERLINE | CFM_UNDERLINETYPE; + cf.dwEffects = 0; + cf.bUnderlineType = CFU_UNDERLINE; + re->SendMessage(EM_SETCHARFORMAT, (WPARAM) SCF_SELECTION, (LPARAM)&cf); + } + } + } + else + { + re->SetSel(pos_start, pos_end); + + CHARFORMAT2 cf; + cf.cbSize = sizeof(CHARFORMAT2); + cf.dwMask = CFM_UNDERLINE | CFM_UNDERLINETYPE; + cf.dwEffects = 0; + cf.bUnderlineType = CFU_UNDERLINE; + re->SendMessage(EM_SETCHARFORMAT, (WPARAM) SCF_SELECTION, (LPARAM)&cf); + } +} + + +void SetNoUnderline(Dialog *dlg) +{ + dlg->re->Stop(); + SetNoUnderline(dlg->re, 0, dlg->re->GetTextLength()); + dlg->markedSomeWord = FALSE; + dlg->re->Start(); +} + + +inline BOOL IsNumber(TCHAR c) +{ + return c >= _T('0') && c <= _T('9'); +} + + +inline BOOL IsURL(TCHAR c) +{ + return (c >= _T('a') && c <= _T('z')) + || (c >= _T('A') && c <= _T('Z')) + || IsNumber(c) + || c == _T('.') || c == _T('/') + || c == _T('\\') || c == _T('?') + || c == _T('=') || c == _T('&') + || c == _T('%') || c == _T('-') + || c == _T('_') || c == _T(':') + || c == _T('@') || c == _T('#'); +} + + +int FindURLEnd(Dialog *dlg, TCHAR *text, int start_pos, int *checked_until = NULL) +{ + int num_slashes = 0; + int num_ats = 0; + int num_dots = 0; + + int i = start_pos; + + for(; IsURL(text[i]) || dlg->lang->isWordChar(text[i]); i++) + { + TCHAR c = text[i]; + + if (c == _T('\\') || c == _T('/')) + num_slashes++; + else if (c == _T('.')) + num_dots++; + else if (c == _T('@')) + num_ats++; + } + + if (checked_until != NULL) + *checked_until = i; + + if (num_slashes <= 0 && num_ats <= 0 && num_dots <= 0) + return -1; + + if (num_slashes == 0 && num_ats == 0 && num_dots < 2) + return -1; + + if (i - start_pos < 2) + return -1; + + return i; +} + + +int ReplaceWord(Dialog *dlg, CHARRANGE &sel, TCHAR *new_word) +{ + dlg->re->Stop(); + dlg->re->ResumeUndo(); + + int dif = dlg->re->Replace(sel.cpMin, sel.cpMax, new_word); + + dlg->re->SuspendUndo(); + dlg->re->Start(); + + return dif; +} + + +class TextParser +{ +public: + virtual ~TextParser() {} + + /// @return true when finished an word + virtual bool feed(int pos, TCHAR c) =0; + virtual int getFirstCharPos() =0; + virtual void reset() =0; + virtual void deal(const TCHAR *text, bool *mark, bool *replace, TCHAR **replacement) =0; +}; + + +class SpellParser : public TextParser +{ + Dictionary *dict; + int last_pos; + BOOL found_real_char; + +public: + SpellParser(Dictionary *dict) : dict(dict) + { + reset(); + } + + void reset() + { + last_pos = -1; + found_real_char = FALSE; + } + + bool feed(int pos, TCHAR c) + { + // Is inside a word? + if (dict->isWordChar(c) || IsNumber(c)) + { + if (last_pos == -1) + last_pos = pos; + + if (c != _T('-') && !IsNumber(c)) + found_real_char = TRUE; + + return false; + } + + if (!found_real_char) + last_pos = -1; + + return (last_pos != -1); + } + + int getFirstCharPos() + { + if (!found_real_char) + return -1; + else + return last_pos; + } + + void deal(const TCHAR *text, bool *mark, bool *replace, TCHAR **replacement) + { + // Is it correct? + if (dict->spell(text)) + return; + + // Has to auto-correct? + if (opts.auto_replace_dict) + { + *replacement = dict->autoSuggestOne(text); + if (*replacement != NULL) + { + *replace = true; + return; + } + } + + *mark = true; + } +}; + + +class AutoReplaceParser : public TextParser +{ + AutoReplaceMap *ar; + int last_pos; + +public: + AutoReplaceParser(AutoReplaceMap *ar) : ar(ar) + { + reset(); + } + + void reset() + { + last_pos = -1; + } + + bool feed(int pos, TCHAR c) + { + // Is inside a word? + if (ar->isWordChar(c)) + { + if (last_pos == -1) + last_pos = pos; + return false; + } + + return (last_pos != -1); + } + + int getFirstCharPos() + { + return last_pos; + } + + void deal(const TCHAR *text, bool *mark, bool *replace, TCHAR **replacement) + { + *replacement = ar->autoReplace(text); + if (*replacement != NULL) + *replace = true; + } +}; + +int CheckTextLine(Dialog *dlg, int line, TextParser *parser, + BOOL ignore_upper, BOOL ignore_with_numbers, BOOL test_urls, + const CHARRANGE &ignored, FoundWrongWordCallback callback, void *param) +{ + int errors = 0; + TCHAR text[1024]; + dlg->re->GetLine(line, text, MAX_REGS(text)); + int len = lstrlen(text); + int first_char = dlg->re->GetFirstCharOfLine(line); + + // Now lets get the words + int next_char_for_url = 0; + for (int pos = 0; pos < len; pos++) + { + int url_end = pos; + if (pos >= next_char_for_url) + { + url_end = FindURLEnd(dlg, text, pos, &next_char_for_url); + next_char_for_url++; + } + + if (url_end > pos) + { + BOOL ignore_url = FALSE; + + if (test_urls) + { + // All the url must be handled by the parser + parser->reset(); + + BOOL feed = FALSE; + for(int j = pos; !feed && j <= url_end; j++) + feed = parser->feed(j, text[j]); + + if (feed || parser->getFirstCharPos() != pos) + ignore_url = TRUE; + } + else + ignore_url = TRUE; + + pos = url_end; + + if (ignore_url) + { + parser->reset(); + continue; + } + } + else + { + TCHAR c = text[pos]; + + BOOL feed = parser->feed(pos, c); + + if (!feed) + { + if (pos >= len-1) + pos = len; // To check the last block + else + continue; + } + } + + int last_pos = parser->getFirstCharPos(); + parser->reset(); + + if (last_pos < 0) + continue; + + // We found a word + CHARRANGE sel = { first_char + last_pos, first_char + pos }; + + // Is in ignored range? + if (sel.cpMin <= ignored.cpMax && sel.cpMax >= ignored.cpMin) + continue; + + if (ignore_upper) + { + BOOL upper = TRUE; + for(int i = last_pos; i < pos && upper; i++) + upper = !IsCharLower(text[i]); + if (upper) + continue; + } + + if (ignore_with_numbers) + { + BOOL hasNumbers = FALSE; + for(int i = last_pos; i < pos && !hasNumbers; i++) + hasNumbers = IsNumber(text[i]); + if (hasNumbers) + continue; + } + + text[pos] = 0; + + bool mark = false; + bool replace = false; + TCHAR *replacement = NULL; + parser->deal(&text[last_pos], &mark, &replace, &replacement); + + if (replace) + { + // Replace in rich edit + int dif = dlg->re->Replace(sel.cpMin, sel.cpMax, replacement); + if (dif != 0) + { + // Read line again + dlg->re->GetLine(line, text, MAX_REGS(text)); + len = lstrlen(text); + + int old_first_char = first_char; + first_char = dlg->re->GetFirstCharOfLine(line); + + pos = max(-1, pos + dif + old_first_char - first_char); + } + + free(replacement); + } + else if (mark) + { + SetUnderline(dlg, sel.cpMin, sel.cpMax); + + if (callback != NULL) + callback(&text[last_pos], sel, param); + + errors++; + } + } + + return errors; +} + + +// Checks for errors in all text +int CheckText(Dialog *dlg, BOOL check_all, + FoundWrongWordCallback callback = NULL, void *param = NULL) +{ + int errors = 0; + + dlg->re->Stop(); + + if (dlg->re->GetTextLength() > 0) + { + int lines = dlg->re->GetLineCount(); + int line = 0; + CHARRANGE cur_sel = { -1, -1 }; + + if (!check_all) + { + // Check only the current line, one up and one down + int current_line = dlg->re->GetLineFromChar(dlg->re->GetSel().cpMin); + line = max(line, current_line - 1); + lines = min(lines, current_line + 2); + cur_sel = dlg->re->GetSel(); + } + + for(; line < lines; line++) + { + int first_char = dlg->re->GetFirstCharOfLine(line); + + SetNoUnderline(dlg->re, first_char, first_char + dlg->re->GetLineLength(line)); + + if (opts.auto_replace_user) + { + errors += CheckTextLine(dlg, line, &AutoReplaceParser(dlg->lang->autoReplace), + FALSE, FALSE, TRUE, + cur_sel, callback, param); + } + + errors += CheckTextLine(dlg, line, &SpellParser(dlg->lang), + opts.ignore_uppercase, opts.ignore_with_numbers, FALSE, + cur_sel, callback, param); + } + } + + // Fix last char + int len = dlg->re->GetTextLength(); + SetNoUnderline(dlg->re, len, len); + + dlg->re->Start(); + + return errors; +} + + +void ToLocaleID(TCHAR *szKLName, size_t size) +{ + TCHAR *stopped = NULL; + USHORT langID = (USHORT) _tcstol(szKLName, &stopped, 16); + + TCHAR ini[32]; + TCHAR end[32]; + GetLocaleInfo(MAKELCID(langID, 0), LOCALE_SISO639LANGNAME, ini, MAX_REGS(ini)); + GetLocaleInfo(MAKELCID(langID, 0), LOCALE_SISO3166CTRYNAME, end, MAX_REGS(end)); + + mir_sntprintf(szKLName, size, _T("%s_%s"), ini, end); +} + + +void LoadDictFromKbdl(Dialog *dlg) +{ + TCHAR szKLName[KL_NAMELENGTH + 1]; + + // Use default input language + HKL hkl = GetKeyboardLayout(0); + mir_sntprintf(szKLName, MAX_REGS(szKLName), _T("%x"), (int) LOWORD(hkl)); + ToLocaleID(szKLName, MAX_REGS(szKLName)); + + // Old code (use keyboard layout) +// GetKeyboardLayoutName(szKLName); +// ToLocaleID(szKLName, MAX_REGS(szKLName)); + + int d = GetClosestLanguage(szKLName); + if (d >= 0) + { + dlg->lang = languages[d]; + dlg->lang->load(); + + if (dlg->srmm) + ModifyIcon(dlg); + } +} + +int TimerCheck(Dialog *dlg, BOOL forceCheck = FALSE) +{ + KillTimer(dlg->hwnd, TIMER_ID); + + if (!dlg->enabled || dlg->lang == NULL) + return -1; + + if (!dlg->lang->isLoaded()) + { + SetTimer(dlg->hwnd, TIMER_ID, 500, NULL); + return -1; + } + + // Don't check if field is read-only + if (dlg->re->IsReadOnly()) + return -1; + + int len = dlg->re->GetTextLength(); + if (!forceCheck && len == dlg->old_text_len && !dlg->changed) + return -1; + + dlg->old_text_len = len; + dlg->changed = FALSE; + + return CheckText(dlg, TRUE); +} + + +LRESULT CALLBACK OwnerProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) +{ + DialogMapType::iterator dlgit = dialogs.find(hwnd); + if (dlgit == dialogs.end()) + return -1; + + Dialog *dlg = dlgit->second; + + if (msg == WM_COMMAND && (LOWORD(wParam) == IDOK || LOWORD(wParam) == 1624)) + { + if (opts.ask_when_sending_with_error) + { + int errors = TimerCheck(dlg, TRUE); + if (errors > 0) + { + TCHAR text[500]; + mir_sntprintf(text,MAX_REGS(text),TranslateT("There are %d spelling errors. Are you sure you want to send this message?"),errors); + if (MessageBox(hwnd,text,TranslateT("Spell Checker"), MB_ICONQUESTION | MB_YESNO) == IDNO) + { + return TRUE; + } + } + } + else if (opts.auto_replace_dict || opts.auto_replace_user) + { + // Fix all + TimerCheck(dlg); + } + + if (dlg->markedSomeWord) + // Remove underline + SetNoUnderline(dlg); + + // Schedule to re-parse + KillTimer(dlg->hwnd, TIMER_ID); + SetTimer(dlg->hwnd, TIMER_ID, 100, NULL); + + dlg->changed = TRUE; + } + + return CallWindowProc(dlg->owner_old_edit_proc, hwnd, msg, wParam, lParam); +} + + +void ToggleEnabled(Dialog *dlg) +{ + dlg->enabled = !dlg->enabled; + DBWriteContactSettingByte(dlg->hContact, MODULE_NAME, dlg->name, dlg->enabled); + + if (!dlg->enabled) + { + SetNoUnderline(dlg); + } + else + { + dlg->changed = TRUE; + SetTimer(dlg->hwnd, TIMER_ID, 100, NULL); + } + + if (dlg->srmm) + ModifyIcon(dlg); +} + + +LRESULT CALLBACK EditProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) +{ + DialogMapType::iterator dlgit = dialogs.find(hwnd); + if (dlgit == dialogs.end()) + return -1; + + Dialog *dlg = dlgit->second; + if (dlg == NULL) + return -1; + + // Hotkey support + { + MSG msgData = {0}; + msgData.hwnd = hwnd; + msgData.message = msg; + msgData.wParam = wParam; + msgData.lParam = lParam; + + int action = CallService(MS_HOTKEY_CHECK, (WPARAM) &msgData, (LPARAM) "Spell Checker"); + if (action == HOTKEY_ACTION_TOGGLE) + { + ToggleEnabled(dlg); + return 1; + } + } + + LRESULT ret = CallWindowProc(dlg->old_edit_proc, hwnd, msg, wParam, lParam); + + switch(msg) + { + case WM_KEYDOWN: + { + if (wParam != VK_DELETE) + break; + } + case WM_CHAR: + { + if (dlg->re->IsStopped()) + break; + + if (lParam & (1 << 28)) // ALT key + break; + + if (GetKeyState(VK_CONTROL) & 0x8000) // CTRL key + break; + + TCHAR c = (TCHAR) wParam; + BOOL deleting = (c == VK_BACK || c == VK_DELETE); + + // Need to do that to avoid changing the word while typing + KillTimer(hwnd, TIMER_ID); + SetTimer(hwnd, TIMER_ID, 1000, NULL); + + dlg->changed = TRUE; + + if (!deleting && (lParam & 0xFF) > 1) // Repeat rate + break; + + if (!dlg->enabled || dlg->lang == NULL || !dlg->lang->isLoaded()) + break; + + // Don't check if field is read-only + if (dlg->re->IsReadOnly()) + break; + + + if (!deleting && !dlg->lang->isWordChar(c)) + { + CheckText(dlg, FALSE); + } + else + { + // Remove underline of current word + + CHARFORMAT2 cf; + cf.cbSize = sizeof(CHARFORMAT2); + dlg->re->SendMessage(EM_GETCHARFORMAT, (WPARAM) SCF_SELECTION, (LPARAM)&cf); + + if (IsMyUnderline(cf)) + { + dlg->re->Stop(); + + CHARRANGE sel = dlg->re->GetSel(); + + TCHAR text[1024]; + int first_char; + GetWordCharRange(dlg, sel, text, MAX_REGS(text), first_char); + + SetNoUnderline(dlg->re, sel.cpMin, sel.cpMax); + + dlg->re->Start(); + } + } + + break; + } + case EM_REPLACESEL: + case WM_SETTEXT: + case EM_SETTEXTEX: + case EM_PASTESPECIAL: + case WM_PASTE: + { + if (dlg->re->IsStopped()) + break; + + KillTimer(hwnd, TIMER_ID); + SetTimer(hwnd, TIMER_ID, 100, NULL); + + dlg->changed = TRUE; + break; + } + + case WM_TIMER: + { + if (wParam != TIMER_ID) + break; + + TimerCheck(dlg); + break; + } + + case WMU_DICT_CHANGED: + { + KillTimer(hwnd, TIMER_ID); + SetTimer(hwnd, TIMER_ID, 100, NULL); + + dlg->changed = TRUE; + break; + } + + case WMU_KBDL_CHANGED: + { + if (opts.auto_locale) + { + KillTimer(hwnd, TIMER_ID); + SetTimer(hwnd, TIMER_ID, 100, NULL); + + dlg->changed = TRUE; + + LoadDictFromKbdl(dlg); + } + break; + } + + case WM_INPUTLANGCHANGE: + { + // Allow others to process this message and we get only the result + PostMessage(hwnd, WMU_KBDL_CHANGED, 0, 0); + break; + } + } + + return ret; +} + +int GetClosestLanguage(TCHAR *lang_name) +{ + int i; + + // Search the language by name + for (i = 0; i < languages.getCount(); i++) + { + if (lstrcmpi(languages[i]->language, lang_name) == 0) + { + return i; + } + } + + // Try searching by the prefix only + TCHAR lang[128]; + lstrcpyn(lang, lang_name, MAX_REGS(lang)); + + TCHAR *p = _tcschr(lang, _T('_')); + if (p != NULL) + *p = _T('\0'); + + // First check if there is a language that is only the prefix + for (i = 0; i < languages.getCount(); i++) + { + if (lstrcmpi(languages[i]->language, lang) == 0) + { + return i; + } + } + + // Now try any suffix + size_t len = lstrlen(lang); + for (i = 0; i < languages.getCount(); i++) + { + TCHAR *p = _tcschr(languages[i]->language, _T('_')); + if (p == NULL) + continue; + + int prefix_len = p - languages[i]->language; + if (prefix_len != len) + continue; + + if (_tcsnicmp(languages[i]->language, lang_name, len) == 0) + { + return i; + } + } + + return -1; +} + +void GetUserProtoLanguageSetting(Dialog *dlg, HANDLE hContact, char *group, char *setting, BOOL isProtocol = TRUE) +{ + DBVARIANT dbv = {0}; + dbv.type = DBVT_TCHAR; + + DBCONTACTGETSETTING cgs = {0}; + cgs.szModule = group; + cgs.szSetting = setting; + cgs.pValue = &dbv; + + INT_PTR rc; + + int caps = (isProtocol ? CallProtoService(group, PS_GETCAPS, PFLAGNUM_4, 0) : 0); + if (caps & PF4_INFOSETTINGSVC) + { + rc = CallProtoService(group, PS_GETINFOSETTING, (WPARAM) hContact, (LPARAM) &cgs); + } + else + { + rc = CallService(MS_DB_CONTACT_GETSETTING_STR_EX, (WPARAM)hContact, (LPARAM)&cgs); + if (rc == CALLSERVICE_NOTFOUND) + { + rc = CallService(MS_DB_CONTACT_GETSETTING_STR, (WPARAM)hContact, (LPARAM)&cgs); + } + } + + if (!rc && dbv.type == DBVT_TCHAR && dbv.ptszVal != NULL) + { + TCHAR *lang = dbv.ptszVal; + + for (int i = 0; i < languages.getCount(); i++) + { + Dictionary *dict = languages[i]; + if (lstrcmpi(dict->localized_name, lang) == 0 + || lstrcmpi(dict->english_name, lang) == 0 + || lstrcmpi(dict->language, lang) == 0) + { + lstrcpyn(dlg->lang_name, dict->language, MAX_REGS(dlg->lang_name)); + break; + } + } + } + + if (!rc) + DBFreeVariant(&dbv); +} + +void GetUserLanguageSetting(Dialog *dlg, char *setting) +{ + char *proto = (char *) CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) dlg->hContact, 0); + if (proto == NULL) + return; + + GetUserProtoLanguageSetting(dlg, dlg->hContact, proto, setting); + if (dlg->lang_name[0] != _T('\0')) + return; + + GetUserProtoLanguageSetting(dlg, dlg->hContact, "UserInfo", setting, FALSE); + if (dlg->lang_name[0] != _T('\0')) + return; + + // If not found and is inside meta, try to get from the meta + INT_PTR mc = CallService(MS_MC_GETPROTOCOLNAME, 0, 0); + if (mc != CALLSERVICE_NOTFOUND) + { + char* metacontacts_proto = (char *) mc; + if (metacontacts_proto != NULL) + { + mc = CallService(MS_MC_GETMETACONTACT, (WPARAM) dlg->hContact, 0); + if (mc != CALLSERVICE_NOTFOUND) + { + HANDLE hMetaContact = (HANDLE) mc; + if (hMetaContact != NULL) + { + GetUserProtoLanguageSetting(dlg, hMetaContact, metacontacts_proto, setting); + if (dlg->lang_name[0] != _T('\0')) + return; + + GetUserProtoLanguageSetting(dlg, hMetaContact, "UserInfo", setting, FALSE); + } + } + } + } +} + +void GetContactLanguage(Dialog *dlg) +{ + DBVARIANT dbv = {0}; + + dlg->lang_name[0] = _T('\0'); + + if (dlg->hContact == NULL) + { + if (!DBGetContactSettingTString(NULL, MODULE_NAME, dlg->name, &dbv)) + { + lstrcpyn(dlg->lang_name, dbv.ptszVal, MAX_REGS(dlg->lang_name)); + DBFreeVariant(&dbv); + } + } + else + { + if (!DBGetContactSettingTString(dlg->hContact, MODULE_NAME, "TalkLanguage", &dbv)) + { + lstrcpyn(dlg->lang_name, dbv.ptszVal, MAX_REGS(dlg->lang_name)); + DBFreeVariant(&dbv); + } + + if (dlg->lang_name[0] == _T('\0') && !DBGetContactSettingTString(dlg->hContact, "eSpeak", "TalkLanguage", &dbv)) + { + lstrcpyn(dlg->lang_name, dbv.ptszVal, MAX_REGS(dlg->lang_name)); + DBFreeVariant(&dbv); + } + + // Try from metacontact + if (dlg->lang_name[0] == _T('\0')) + { + INT_PTR mc = CallService(MS_MC_GETMETACONTACT, (WPARAM) dlg->hContact, 0); + if (mc != CALLSERVICE_NOTFOUND) + { + HANDLE hMetaContact = (HANDLE) mc; + if (hMetaContact != NULL) + { + if (!DBGetContactSettingTString(hMetaContact, MODULE_NAME, "TalkLanguage", &dbv)) + { + lstrcpyn(dlg->lang_name, dbv.ptszVal, MAX_REGS(dlg->lang_name)); + DBFreeVariant(&dbv); + } + + if (dlg->lang_name[0] == _T('\0') && !DBGetContactSettingTString(hMetaContact, "eSpeak", "TalkLanguage", &dbv)) + { + lstrcpyn(dlg->lang_name, dbv.ptszVal, MAX_REGS(dlg->lang_name)); + DBFreeVariant(&dbv); + } + } + } + } + + // Try to get from Language info + if (dlg->lang_name[0] == _T('\0')) + GetUserLanguageSetting(dlg, "Language"); + if (dlg->lang_name[0] == _T('\0')) + GetUserLanguageSetting(dlg, "Language1"); + if (dlg->lang_name[0] == _T('\0')) + GetUserLanguageSetting(dlg, "Language2"); + if (dlg->lang_name[0] == _T('\0')) + GetUserLanguageSetting(dlg, "Language3"); + + // Use default lang + if (dlg->lang_name[0] == _T('\0')) + lstrcpyn(dlg->lang_name, opts.default_language, MAX_REGS(dlg->lang_name)); + } + + int i = GetClosestLanguage(dlg->lang_name); + if (i < 0) + { + // Lost a dict? + lstrcpyn(dlg->lang_name, opts.default_language, MAX_REGS(dlg->lang_name)); + i = GetClosestLanguage(dlg->lang_name); + } + + if (i >= 0) + { + dlg->lang = languages[i]; + dlg->lang->load(); + } + else + { + dlg->lang = NULL; + } +} + +void ModifyIcon(Dialog *dlg) +{ + if (ServiceExists(MS_MSG_MODIFYICON)) + { + StatusIconData sid = {0}; + sid.cbSize = sizeof(sid); + sid.szModule = MODULE_NAME; + + for (int i = 0; i < languages.getCount(); i++) + { + sid.dwId = i; + + if (languages[i] == dlg->lang) + sid.flags = (dlg->enabled ? 0 : MBF_DISABLED); + else + sid.flags = MBF_HIDDEN; + + CallService(MS_MSG_MODIFYICON, (WPARAM) dlg->hContact, (LPARAM) &sid); + } + } +} + +INT_PTR AddContactTextBoxService(WPARAM wParam, LPARAM lParam) +{ + SPELLCHECKER_ITEM *sci = (SPELLCHECKER_ITEM *) wParam; + if (sci == NULL || sci->cbSize != sizeof(SPELLCHECKER_ITEM)) + return -1; + + return AddContactTextBox(sci->hContact, sci->hwnd, sci->window_name, FALSE, NULL); +} + + +void NotifyWrongSRMM() +{ + static BOOL notified = FALSE; + + if (notified) + return; + + MessageBox(NULL, + TranslateT("Your message window does not support SpellChecker Plugin.\nIf you use SRMM, tabSRMM or Scriver, please update them to the latest version,\notherwise ask the author of your message window plugin to add support for Spell Checker."), + TranslateT("Spell Checker"), MB_ICONERROR | MB_OK); + + notified = TRUE; +} + + +int AddContactTextBox(HANDLE hContact, HWND hwnd, char *name, BOOL srmm, HWND hwndOwner) +{ + if (languages.getCount() <= 0) + return 0; + + if (dialogs.find(hwnd) == dialogs.end()) + { + // Fill dialog data + Dialog *dlg = (Dialog *) malloc(sizeof(Dialog)); + ZeroMemory(dlg, sizeof(Dialog)); + + dlg->re = new RichEdit(hwnd); + if (!dlg->re->IsValid()) + { + delete dlg->re; + free(dlg); + + if (srmm) + NotifyWrongSRMM(); + + return 0; + } + + dlg->hContact = hContact; + dlg->hwnd = hwnd; + strncpy(dlg->name, name, sizeof(dlg->name)); + dlg->enabled = DBGetContactSettingByte(dlg->hContact, MODULE_NAME, dlg->name, 1); + dlg->srmm = srmm; + + GetContactLanguage(dlg); + + if (opts.auto_locale) + LoadDictFromKbdl(dlg); + + dlg->old_edit_proc = (WNDPROC) SetWindowLongPtr(dlg->hwnd, GWLP_WNDPROC, (LONG_PTR) EditProc); + dialogs[hwnd] = dlg; + + if (dlg->srmm && hwndOwner != NULL) + { + dlg->hwnd_owner = hwndOwner; + dlg->owner_old_edit_proc = (WNDPROC) SetWindowLongPtr(dlg->hwnd_owner, GWLP_WNDPROC, (LONG_PTR) OwnerProc); + dialogs[dlg->hwnd_owner] = dlg; + + ModifyIcon(dlg); + } + + if (dlg->lang != NULL) + dlg->lang->load(); + + SetTimer(hwnd, TIMER_ID, 1000, NULL); + } + + return 0; +} + +#define DESTROY_MENY(_m_) if (_m_ != NULL) { DestroyMenu(_m_); _m_ = NULL; } + +void FreePopupData(Dialog *dlg) +{ + DESTROY_MENY(dlg->hLanguageSubMenu) + DESTROY_MENY(dlg->hWrongWordsSubMenu) + + if (dlg->old_menu_proc != NULL) + SetWindowLongPtr(dlg->hwnd_menu_owner, GWLP_WNDPROC, (LONG_PTR) dlg->old_menu_proc); + dlg->old_menu_proc = NULL; + + if (dlg->hwnd_menu_owner != NULL) + menus.erase(dlg->hwnd_menu_owner); + dlg->hwnd_menu_owner = NULL; + + if (dlg->wrong_words != NULL) + { + for (unsigned i = 0; i < dlg->wrong_words->size(); i++) + { + FREE((*dlg->wrong_words)[i].word) + + DESTROY_MENY((*dlg->wrong_words)[i].hMeSubMenu) + DESTROY_MENY((*dlg->wrong_words)[i].hCorrectSubMenu) + DESTROY_MENY((*dlg->wrong_words)[i].hReplaceSubMenu) + + FreeSuggestions((*dlg->wrong_words)[i].suggestions); + } + + delete dlg->wrong_words; + dlg->wrong_words = NULL; + } +} + + +INT_PTR RemoveContactTextBoxService(WPARAM wParam, LPARAM lParam) +{ + HWND hwnd = (HWND) wParam; + if (hwnd == NULL) + return -1; + + return RemoveContactTextBox(hwnd); +} + + +int RemoveContactTextBox(HWND hwnd) +{ + DialogMapType::iterator dlgit = dialogs.find(hwnd); + if (dlgit != dialogs.end()) + { + Dialog *dlg = dlgit->second; + + KillTimer(hwnd, TIMER_ID); + + if (dlg->old_edit_proc != NULL) + SetWindowLongPtr(hwnd, GWLP_WNDPROC, (LONG_PTR) dlg->old_edit_proc); + dialogs.erase(hwnd); + + if (dlg->hwnd_owner != NULL) + { + if (dlg->owner_old_edit_proc != NULL) + SetWindowLongPtr(dlg->hwnd_owner, GWLP_WNDPROC, (LONG_PTR) dlg->owner_old_edit_proc); + dialogs.erase(dlg->hwnd_owner); + } + + delete dlg->re; + FreePopupData(dlg); + free(dlg); + } + + return 0; +} + + +// TODO Make this better +BOOL GetWordCharRange(Dialog *dlg, CHARRANGE &sel, TCHAR *text, size_t text_len, int &first_char) +{ + // Get line + int line = dlg->re->GetLineFromChar(sel.cpMin); + + // Get text + dlg->re->GetLine(line, text, text_len); + first_char = dlg->re->GetFirstCharOfLine(line); + + // Find the word + sel.cpMin--; + while (sel.cpMin >= first_char && (dlg->lang->isWordChar(text[sel.cpMin - first_char]) + || IsNumber(text[sel.cpMin - first_char]))) + sel.cpMin--; + sel.cpMin++; + + while (text[sel.cpMax - first_char] != _T('\0') && (dlg->lang->isWordChar(text[sel.cpMax - first_char]) + || IsNumber(text[sel.cpMax - first_char]))) + sel.cpMax++; + + // Has a word? + if (sel.cpMin >= sel.cpMax) + return FALSE; + + // See if it has only '-'s + BOOL has_valid_char = FALSE; + for (int i = sel.cpMin; i < sel.cpMax && !has_valid_char; i++) + has_valid_char = ( text[i - first_char] != _T('-') ); + + return has_valid_char; +} + +TCHAR *GetWordUnderPoint(Dialog *dlg, POINT pt, CHARRANGE &sel) +{ + // Get text + if (dlg->re->GetTextLength() <= 0) + return NULL; + + // Get pos + sel.cpMin = sel.cpMax = dlg->re->GetCharFromPos(pt); + + // Get text + TCHAR text[1024]; + int first_char; + + if (!GetWordCharRange(dlg, sel, text, MAX_REGS(text), first_char)) + return NULL; + + // copy the word + text[sel.cpMax - first_char] = _T('\0'); + return _tcsdup(&text[sel.cpMin - first_char]); +} + + +void AppendSubmenu(HMENU hMenu, HMENU hSubMenu, TCHAR *name) +{ + MENUITEMINFO mii = {0}; + mii.cbSize = sizeof(MENUITEMINFO); + mii.fMask = MIIM_SUBMENU | MIIM_TYPE; + mii.fType = MFT_STRING; + mii.hSubMenu = hSubMenu; + mii.dwTypeData = name; + mii.cch = lstrlen(name); + int ret = InsertMenuItem(hMenu, 0, TRUE, &mii); + +} + +void AppendMenuItem(HMENU hMenu, int id, TCHAR *name, HICON hIcon, BOOL checked) +{ + ICONINFO iconInfo; + GetIconInfo(hIcon, & iconInfo); + + MENUITEMINFO mii = {0}; + mii.cbSize = sizeof(MENUITEMINFO); + mii.fMask = MIIM_CHECKMARKS | MIIM_TYPE | MIIM_STATE; + mii.fType = MFT_STRING; + mii.fState = (checked ? MFS_CHECKED : 0); + mii.wID = id; + mii.hbmpChecked = iconInfo.hbmColor; + mii.hbmpUnchecked = iconInfo.hbmColor; + mii.dwTypeData = name; + mii.cch = lstrlen(name); + int ret = InsertMenuItem(hMenu, 0, TRUE, &mii); +} + + + + +#define LANGUAGE_MENU_ID_BASE 10 +#define WORD_MENU_ID_BASE 100 +#define AUTOREPLACE_MENU_ID_BASE 50 + +void AddMenuForWord(Dialog *dlg, TCHAR *word, CHARRANGE &pos, HMENU hMenu, BOOL in_submenu, UINT base) +{ + if (dlg->wrong_words == NULL) + dlg->wrong_words = new vector(1); + else + dlg->wrong_words->resize(dlg->wrong_words->size() + 1); + + WrongWordPopupMenuData &data = (*dlg->wrong_words)[dlg->wrong_words->size() - 1]; + ZeroMemory(&data, sizeof(WrongWordPopupMenuData)); + + // Get suggestions + data.word = word; + data.pos = pos; + data.suggestions = dlg->lang->suggest(word); + + Suggestions &suggestions = data.suggestions; + + if (in_submenu) + { + data.hMeSubMenu = CreatePopupMenu(); + AppendSubmenu(hMenu, data.hMeSubMenu, word); + hMenu = data.hMeSubMenu; + } + + data.hReplaceSubMenu = CreatePopupMenu(); + + InsertMenu(data.hReplaceSubMenu, 0, MF_BYPOSITION, + base + AUTOREPLACE_MENU_ID_BASE + suggestions.count, TranslateT("Other...")); + if (suggestions.count > 0) + { + InsertMenu(data.hReplaceSubMenu, 0, MF_BYPOSITION | MF_SEPARATOR, 0, 0); + for (int i = suggestions.count - 1; i >= 0; i--) + InsertMenu(data.hReplaceSubMenu, 0, MF_BYPOSITION, + base + AUTOREPLACE_MENU_ID_BASE + i, suggestions.words[i]); + } + + AppendSubmenu(hMenu, data.hReplaceSubMenu, TranslateT("Always replace with")); + + InsertMenu(hMenu, 0, MF_BYPOSITION, base + suggestions.count + 1, TranslateT("Ignore all")); + InsertMenu(hMenu, 0, MF_BYPOSITION, base + suggestions.count, TranslateT("Add to dictionary")); + + if (suggestions.count > 0) + { + HMENU hSubMenu; + if (opts.cascade_corrections) + { + hSubMenu = data.hCorrectSubMenu = CreatePopupMenu(); + AppendSubmenu(hMenu, hSubMenu, TranslateT("Corrections")); + } + else + { + InsertMenu(hMenu, 0, MF_BYPOSITION | MF_SEPARATOR, 0, 0); + hSubMenu = hMenu; + } + + for (int i = suggestions.count - 1; i >= 0; i--) + InsertMenu(hSubMenu, 0, MF_BYPOSITION, base + i, suggestions.words[i]); + } + + if (!in_submenu && opts.show_wrong_word) + { + InsertMenu(hMenu, 0, MF_BYPOSITION | MF_SEPARATOR, 0, 0); + + TCHAR text[128]; + mir_sntprintf(text, MAX_REGS(text), TranslateT("Wrong word: %s"), word); + InsertMenu(hMenu, 0, MF_BYPOSITION, 0, text); + } +} + + +struct FoundWrongWordParam { + Dialog *dlg; + int count; +}; + +void FoundWrongWord(TCHAR *word, CHARRANGE pos, void *param) +{ + FoundWrongWordParam *p = (FoundWrongWordParam*) param; + + p->count ++; + + AddMenuForWord(p->dlg, _tcsdup(word), pos, p->dlg->hWrongWordsSubMenu, TRUE, WORD_MENU_ID_BASE * p->count); +} + +void AddItemsToMenu(Dialog *dlg, HMENU hMenu, POINT pt, HWND hwndOwner) +{ + FreePopupData(dlg); + if (opts.use_flags) + { + dlg->hwnd_menu_owner = hwndOwner; + menus[hwndOwner] = dlg; + } + + BOOL wrong_word = FALSE; + + // Make menu + if (GetMenuItemCount(hMenu) > 0) + InsertMenu(hMenu, 0, MF_BYPOSITION | MF_SEPARATOR, 0, 0); + + if (languages.getCount() > 0 && dlg->enabled) + { + dlg->hLanguageSubMenu = CreatePopupMenu(); + + if (dlg->hwnd_menu_owner != NULL) + dlg->old_menu_proc = (WNDPROC) SetWindowLongPtr(dlg->hwnd_menu_owner, GWLP_WNDPROC, (LONG_PTR) MenuWndProc); + + // First add languages + for (int i = 0; i < languages.getCount(); i++) + { + AppendMenu(dlg->hLanguageSubMenu, MF_STRING | (languages[i] == dlg->lang ? MF_CHECKED : 0), + LANGUAGE_MENU_ID_BASE + i, languages[i]->full_name); + } + + AppendSubmenu(hMenu, dlg->hLanguageSubMenu, TranslateT("Language")); + } + + InsertMenu(hMenu, 0, MF_BYPOSITION, 1, TranslateT("Enable spell checking")); + CheckMenuItem(hMenu, 1, MF_BYCOMMAND | (dlg->enabled ? MF_CHECKED : MF_UNCHECKED)); + + // Get text + if (dlg->lang != NULL && dlg->enabled) + { + if (opts.show_all_corrections) + { + dlg->hWrongWordsSubMenu = CreatePopupMenu(); + + FoundWrongWordParam p = { dlg, 0 }; + CheckText(dlg, TRUE, FoundWrongWord, &p); + + if (p.count > 0) + AppendSubmenu(hMenu, dlg->hWrongWordsSubMenu, TranslateT("Wrong words")); + } + else + { + CHARRANGE sel; + TCHAR *word = GetWordUnderPoint(dlg, pt, sel); + if (word != NULL && !dlg->lang->spell(word)) + { + InsertMenu(hMenu, 0, MF_BYPOSITION | MF_SEPARATOR, 0, 0); + + AddMenuForWord(dlg, word, sel, hMenu, FALSE, WORD_MENU_ID_BASE); + } + } + } +} + + +static void AddWordToDictCallback(BOOL canceled, Dictionary *dict, + const TCHAR *find, const TCHAR *replace, BOOL useVariables, + const TCHAR *original_find, void *param) +{ + if (canceled) + return; + + dict->autoReplace->add(find, replace, useVariables); + + HWND hwndParent = (HWND) param; + if (hwndParent != NULL) + PostMessage(hwndParent, WMU_DICT_CHANGED, 0, 0); +} + + +BOOL HandleMenuSelection(Dialog *dlg, POINT pt, unsigned selection) +{ + BOOL ret = FALSE; + + if (selection == 1) + { + ToggleEnabled(dlg); + + ret = TRUE; + } + else if (selection >= LANGUAGE_MENU_ID_BASE && selection < LANGUAGE_MENU_ID_BASE + (unsigned) languages.getCount()) + { + SetNoUnderline(dlg); + + if (dlg->hContact == NULL) + DBWriteContactSettingTString(NULL, MODULE_NAME, dlg->name, + languages[selection - LANGUAGE_MENU_ID_BASE]->language); + else + DBWriteContactSettingTString(dlg->hContact, MODULE_NAME, "TalkLanguage", + languages[selection - LANGUAGE_MENU_ID_BASE]->language); + + GetContactLanguage(dlg); + + if (dlg->srmm) + ModifyIcon(dlg); + + ret = TRUE; + } + else if (selection > 0 && dlg->wrong_words != NULL + && selection >= WORD_MENU_ID_BASE + && selection < (dlg->wrong_words->size() + 1) * WORD_MENU_ID_BASE) + { + int pos = selection / WORD_MENU_ID_BASE; + selection -= pos * WORD_MENU_ID_BASE; + pos--; // 0 based + WrongWordPopupMenuData &data = (*dlg->wrong_words)[pos]; + + if (selection < data.suggestions.count) + { + // TODO Assert that text hasn't changed + ReplaceWord(dlg, data.pos, data.suggestions.words[selection]); + + ret = TRUE; + } + else if (selection == data.suggestions.count) + { + dlg->lang->addWord(data.word); + + ret = TRUE; + } + else if (selection == data.suggestions.count + 1) + { + dlg->lang->ignoreWord(data.word); + + ret = TRUE; + } + else if (selection >= AUTOREPLACE_MENU_ID_BASE + && selection < AUTOREPLACE_MENU_ID_BASE + data.suggestions.count + 1) + { + selection -= AUTOREPLACE_MENU_ID_BASE; + + if (selection == data.suggestions.count) + { + ShowAutoReplaceDialog(dlg->hwnd_owner != NULL ? dlg->hwnd_owner : dlg->hwnd, FALSE, + dlg->lang, data.word, NULL, FALSE, + TRUE, &AddWordToDictCallback, dlg->hwnd); + } + else + { + // TODO Assert that text hasn't changed + ReplaceWord(dlg, data.pos, data.suggestions.words[selection]); + dlg->lang->autoReplace->add(data.word, data.suggestions.words[selection]); + ret = TRUE; + } + } + } + + if (ret) + { + KillTimer(dlg->hwnd, TIMER_ID); + SetTimer(dlg->hwnd, TIMER_ID, 100, NULL); + + dlg->changed = TRUE; + } + + FreePopupData(dlg); + + return ret; +} + + +int MsgWindowPopup(WPARAM wParam, LPARAM lParam) +{ + MessageWindowPopupData *mwpd = (MessageWindowPopupData *) lParam; + if (mwpd == NULL || mwpd->cbSize < sizeof(MessageWindowPopupData) + || mwpd->uFlags != MSG_WINDOWPOPUP_INPUT) + return 0; + + DialogMapType::iterator dlgit = dialogs.find(mwpd->hwnd); + if (dlgit == dialogs.end()) + return -1; + + Dialog *dlg = dlgit->second; + + POINT pt = mwpd->pt; + ScreenToClient(dlg->hwnd, &pt); + + if (mwpd->uType == MSG_WINDOWPOPUP_SHOWING) + { + AddItemsToMenu(dlg, mwpd->hMenu, pt, dlg->hwnd_owner); + } + else if (mwpd->uType == MSG_WINDOWPOPUP_SELECTED) + { + HandleMenuSelection(dlg, pt, mwpd->selection); + } + return 0; +} + + +INT_PTR ShowPopupMenuService(WPARAM wParam, LPARAM lParam) +{ + SPELLCHECKER_POPUPMENU *scp = (SPELLCHECKER_POPUPMENU *) wParam; + if (scp == NULL || scp->cbSize != sizeof(SPELLCHECKER_POPUPMENU)) + return -1; + + return ShowPopupMenu(scp->hwnd, scp->hMenu, scp->pt, scp->hwndOwner == NULL ? scp->hwnd : scp->hwndOwner); +} + + +int ShowPopupMenu(HWND hwnd, HMENU hMenu, POINT pt, HWND hwndOwner) +{ + DialogMapType::iterator dlgit = dialogs.find(hwnd); + if (dlgit == dialogs.end()) + return -1; + + Dialog *dlg = dlgit->second; + + if (pt.x == 0xFFFF && pt.y == 0xFFFF) + { + CHARRANGE sel; + SendMessage(hwnd, EM_EXGETSEL, 0, (LPARAM) &sel); + + // Get current cursor pos + SendMessage(hwnd, EM_POSFROMCHAR, (WPARAM)&pt, (LPARAM) sel.cpMax); + } + else + { + ScreenToClient(hwnd, &pt); + } + + BOOL create_menu = (hMenu == NULL); + if (create_menu) + hMenu = CreatePopupMenu(); + + // Make menu + AddItemsToMenu(dlg, hMenu, pt, hwndOwner); + + // Show menu + POINT client = pt; + ClientToScreen(hwnd, &pt); + int selection = TrackPopupMenu(hMenu, TPM_RETURNCMD, pt.x, pt.y, 0, hwndOwner, NULL); + + // Do action + if (HandleMenuSelection(dlg, client, selection)) + selection = 0; + + if (create_menu) + DestroyMenu(hMenu); + + return selection; +} + + +int MsgWindowEvent(WPARAM wParam, LPARAM lParam) +{ + MessageWindowEventData *event = (MessageWindowEventData *)lParam; + if (event == NULL) + return 0; + + if (event->cbSize < sizeof(MessageWindowEventData)) + return 0; + + if (event->uType == MSG_WINDOW_EVT_OPEN) + { + AddContactTextBox(event->hContact, event->hwndInput, "DefaultSRMM", TRUE, event->hwndWindow); + } + else if (event->uType == MSG_WINDOW_EVT_CLOSING) + { + RemoveContactTextBox(event->hwndInput); + } + + return 0; +} + + +int IconPressed(WPARAM wParam, LPARAM lParam) +{ + StatusIconClickData *sicd = (StatusIconClickData *) lParam; + if (sicd == NULL || strcmp(sicd->szModule, MODULE_NAME) != 0) + return 0; + + HANDLE hContact = (HANDLE) wParam; + if (hContact == NULL) + return 0; + + // Find the dialog + HWND hwnd = NULL; + Dialog *dlg; + for(DialogMapType::iterator it = dialogs.begin(); it != dialogs.end(); it++) + { + dlg = it->second; + if (dlg->srmm && dlg->hContact == hContact) + { + hwnd = it->first; + break; + } + } + + if (hwnd == NULL) + { + NotifyWrongSRMM(); + return 0; + } + + if ((sicd->flags & MBCF_RIGHTBUTTON) == 0) + { + FreePopupData(dlg); + + // Show the menu + HMENU hMenu = CreatePopupMenu(); + + if (languages.getCount() > 0) + { + if (opts.use_flags) + { + menus[dlg->hwnd] = dlg; + dlg->hwnd_menu_owner = dlg->hwnd; + dlg->old_menu_proc = (WNDPROC) SetWindowLongPtr(dlg->hwnd_menu_owner, GWLP_WNDPROC, (LONG_PTR) MenuWndProc); + } + + // First add languages + for (int i = 0; i < languages.getCount(); i++) + { + AppendMenu(hMenu, MF_STRING | (languages[i] == dlg->lang ? MF_CHECKED : 0), + LANGUAGE_MENU_ID_BASE + i, languages[i]->full_name); + } + + InsertMenu(hMenu, 0, MF_BYPOSITION | MF_SEPARATOR, 0, 0); + } + + InsertMenu(hMenu, 0, MF_BYPOSITION, 1, TranslateT("Enable spell checking")); + CheckMenuItem(hMenu, 1, MF_BYCOMMAND | (dlg->enabled ? MF_CHECKED : MF_UNCHECKED)); + + // Show menu + int selection = TrackPopupMenu(hMenu, TPM_RETURNCMD, sicd->clickLocation.x, sicd->clickLocation.y, 0, + dlg->hwnd, NULL); + + HandleMenuSelection(dlg, sicd->clickLocation, selection); + + DestroyMenu(hMenu); + } + else + { + // Enable / disable + HandleMenuSelection(dlg, sicd->clickLocation, 1); + } + + return 0; +} + + +LRESULT CALLBACK MenuWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) +{ + DialogMapType::iterator dlgit = menus.find(hwnd); + if (dlgit == menus.end()) + return -1; + + Dialog *dlg = dlgit->second; + + switch (msg) + { + case WM_INITMENUPOPUP: + { + HMENU hMenu = (HMENU) wParam; + + int count = GetMenuItemCount(hMenu); + for(int i = 0; i < count; i++) + { + unsigned id = GetMenuItemID(hMenu, i); + if (id < LANGUAGE_MENU_ID_BASE || id >= LANGUAGE_MENU_ID_BASE + (unsigned) languages.getCount()) + continue; + + MENUITEMINFO mii = {0}; + mii.cbSize = sizeof(MENUITEMINFO); + mii.fMask = MIIM_STATE; + GetMenuItemInfo(hMenu, id, FALSE, &mii); + + // Make ownerdraw + ModifyMenu(hMenu, id, mii.fState | MF_BYCOMMAND | MF_OWNERDRAW, id, NULL); + } + + break; + } + case WM_DRAWITEM: + { + LPDRAWITEMSTRUCT lpdis = (LPDRAWITEMSTRUCT)lParam; + if (lpdis->CtlType != ODT_MENU || lpdis->itemID < LANGUAGE_MENU_ID_BASE || lpdis->itemID >= LANGUAGE_MENU_ID_BASE + (unsigned) languages.getCount()) + break; + + int pos = lpdis->itemID - LANGUAGE_MENU_ID_BASE; + + Dictionary *dict = languages[pos]; + + COLORREF clrfore = SetTextColor(lpdis->hDC, + GetSysColor(lpdis->itemState & ODS_SELECTED ? COLOR_HIGHLIGHTTEXT : COLOR_MENUTEXT)); + COLORREF clrback = SetBkColor(lpdis->hDC, + GetSysColor(lpdis->itemState & ODS_SELECTED ? COLOR_HIGHLIGHT : COLOR_MENU)); + + FillRect(lpdis->hDC, &lpdis->rcItem, GetSysColorBrush(lpdis->itemState & ODS_SELECTED ? COLOR_HIGHLIGHT : COLOR_MENU)); + + RECT rc = lpdis->rcItem; + rc.left += 2; + + // Checked? + rc.right = rc.left + bmpChecked.bmWidth; + + if (lpdis->itemState & ODS_CHECKED) + { + rc.top = (lpdis->rcItem.bottom + lpdis->rcItem.top - bmpChecked.bmHeight) / 2; + rc.bottom = rc.top + bmpChecked.bmHeight; + + HDC hdcTemp = CreateCompatibleDC(lpdis->hDC); + HBITMAP oldBmp = (HBITMAP) SelectObject(hdcTemp, hCheckedBmp); + + BitBlt(lpdis->hDC, rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, hdcTemp, 0, 0, SRCCOPY); + + SelectObject(hdcTemp, oldBmp); + DeleteDC(hdcTemp); + } + + rc.left += bmpChecked.bmWidth + 2; + + // Draw icon + HICON hFlag = IcoLib_LoadIcon(dict); + + rc.top = (lpdis->rcItem.bottom + lpdis->rcItem.top - ICON_SIZE) / 2; + DrawIconEx(lpdis->hDC, rc.left, rc.top, hFlag, 16, 16, 0, NULL, DI_NORMAL); + + IcoLib_ReleaseIcon(hFlag); + + rc.left += ICON_SIZE + 4; + + // Draw text + RECT rc_text = { 0, 0, 0xFFFF, 0xFFFF }; + DrawText(lpdis->hDC, dict->full_name, lstrlen(dict->full_name), &rc_text, DT_END_ELLIPSIS | DT_NOPREFIX | DT_SINGLELINE | DT_LEFT | DT_TOP | DT_CALCRECT); + + rc.right = lpdis->rcItem.right - 2; + rc.top = (lpdis->rcItem.bottom + lpdis->rcItem.top - (rc_text.bottom - rc_text.top)) / 2; + rc.bottom = rc.top + rc_text.bottom - rc_text.top; + DrawText(lpdis->hDC, dict->full_name, lstrlen(dict->full_name), &rc, DT_END_ELLIPSIS | DT_NOPREFIX | DT_LEFT | DT_TOP | DT_SINGLELINE); + + // Restore old colors + SetTextColor(lpdis->hDC, clrfore); + SetBkColor(lpdis->hDC, clrback); + + return TRUE; + } + + case WM_MEASUREITEM: + { + LPMEASUREITEMSTRUCT lpmis = (LPMEASUREITEMSTRUCT)lParam; + if (lpmis->CtlType != ODT_MENU || lpmis->itemID < LANGUAGE_MENU_ID_BASE || lpmis->itemID >= LANGUAGE_MENU_ID_BASE + (unsigned) languages.getCount()) + break; + + int pos = lpmis->itemID - LANGUAGE_MENU_ID_BASE; + + Dictionary *dict = languages[pos]; + + HDC hdc = GetDC(hwnd); + + NONCLIENTMETRICS info; + ZeroMemory(&info, sizeof(info)); + info.cbSize = sizeof(info); + SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(info), &info, 0); + HFONT hFont = CreateFontIndirect(&info.lfMenuFont); + HFONT hFontOld = (HFONT) SelectObject(hdc, hFont); + + RECT rc = { 0, 0, 0xFFFF, 0xFFFF }; + + DrawText(hdc, dict->full_name, lstrlen(dict->full_name), &rc, DT_NOPREFIX | DT_SINGLELINE | DT_LEFT | DT_TOP | DT_CALCRECT); + + lpmis->itemHeight = max(ICON_SIZE, max(bmpChecked.bmHeight, rc.bottom)); + lpmis->itemWidth = 2 + bmpChecked.bmWidth + 2 + ICON_SIZE + 4 + rc.right + 2; + + SelectObject(hdc, hFontOld); + DeleteObject(hFont); + ReleaseDC(hwnd, hdc); + + return TRUE; + } + } + + return CallWindowProc(dlg->old_menu_proc, hwnd, msg, wParam, lParam); +} + +TCHAR *lstrtrim(TCHAR *str) +{ + int len = lstrlen(str); + + int i; + for(i = len - 1; i >= 0 && (str[i] == ' ' || str[i] == '\t'); --i) ; + if (i < len - 1) + { + ++i; + str[i] = _T('\0'); + len = i; + } + + for(i = 0; i < len && (str[i] == ' ' || str[i] == '\t'); ++i) ; + if (i > 0) + memmove(str, &str[i], (len - i + 1) * sizeof(TCHAR)); + + return str; +} + +BOOL lstreq(TCHAR *a, TCHAR *b, size_t len) +{ +#ifdef UNICODE + a = CharLower(_tcsdup(a)); + b = CharLower(_tcsdup(b)); + BOOL ret; + if (len >= 0) + ret = !_tcsncmp(a, b, len); + else + ret = !_tcscmp(a, b); + free(a); + free(b); + return ret; +#else + if (len > 0) + return !_tcsnicmp(a, b, len); + else + return !_tcsicmp(a, b); +#endif +} + + +BOOL CreatePath(const TCHAR *path) +{ + TCHAR folder[1024]; + lstrcpyn(folder, path, MAX_REGS(folder)); + + TCHAR *p = folder; + if (p[0] && p[1] && p[1] == _T(':') && p[2] == _T('\\')) p += 3; // skip drive letter + + SetLastError(ERROR_SUCCESS); + while(p = _tcschr(p, '\\')) + { + *p = _T('\0'); + CreateDirectory(folder, 0); + *p = _T('\\'); + p++; + } + CreateDirectory(folder, 0); + + DWORD lerr = GetLastError(); + return (lerr == ERROR_SUCCESS || lerr == ERROR_ALREADY_EXISTS); +} diff --git a/plugins/SpellChecker/spellchecker.sln b/plugins/SpellChecker/spellchecker.sln new file mode 100644 index 0000000000..bd47532cb3 --- /dev/null +++ b/plugins/SpellChecker/spellchecker.sln @@ -0,0 +1,25 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spellchecker", "spellchecker.vcxproj", "{5DB86086-10E9-42E7-AC90-503D2678C2A2}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {5DB86086-10E9-42E7-AC90-503D2678C2A2}.Debug|Win32.ActiveCfg = Release|Win32 + {5DB86086-10E9-42E7-AC90-503D2678C2A2}.Debug|Win32.Build.0 = Release|Win32 + {5DB86086-10E9-42E7-AC90-503D2678C2A2}.Debug|x64.ActiveCfg = Debug|x64 + {5DB86086-10E9-42E7-AC90-503D2678C2A2}.Debug|x64.Build.0 = Debug|x64 + {5DB86086-10E9-42E7-AC90-503D2678C2A2}.Release|Win32.ActiveCfg = Release|Win32 + {5DB86086-10E9-42E7-AC90-503D2678C2A2}.Release|Win32.Build.0 = Release|Win32 + {5DB86086-10E9-42E7-AC90-503D2678C2A2}.Release|x64.ActiveCfg = Release|x64 + {5DB86086-10E9-42E7-AC90-503D2678C2A2}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/plugins/SpellChecker/spellchecker.vcxproj b/plugins/SpellChecker/spellchecker.vcxproj new file mode 100644 index 0000000000..3bcb7973ac --- /dev/null +++ b/plugins/SpellChecker/spellchecker.vcxproj @@ -0,0 +1,501 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {5DB86086-10E9-42E7-AC90-503D2678C2A2} + spellchecker + + + + DynamicLibrary + false + Unicode + + + DynamicLibrary + false + Unicode + true + + + DynamicLibrary + false + Unicode + + + DynamicLibrary + false + Unicode + true + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)/Plugins\ + $(SolutionDir)$(Configuration)/Obj/$(ProjectName)\ + false + $(SolutionDir)$(Configuration)64/Plugins\ + $(SolutionDir)$(Configuration)64/Obj/$(ProjectName)\ + false + $(SolutionDir)$(Configuration)/Plugins\ + $(SolutionDir)$(Configuration)/Obj/$(ProjectName)\ + true + $(SolutionDir)$(Configuration)64/Plugins\ + $(SolutionDir)$(Configuration)64/Obj/$(ProjectName)\ + true + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Unicode_Release/spellchecker.tlb + + + + + Full + OnlyExplicitInline + ../../include;../ExternalAPI;%(AdditionalIncludeDirectories) + HUNSPELL_STATIC;_CRT_NONSTDC_NO_WARNINGS;WIN32;W32;NDEBUG;_WINDOWS;UNICODE;_USRDLL;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + true + $(IntDir) + Level3 + true + true + Size + false + + + NDEBUG;%(PreprocessorDefinitions) + + + /ALIGN:4096 /filealign:0x200 /ignore:4108 %(AdditionalOptions) + true + true + true + .\Unicode_Release/spellcheckerW.map + 0x3EC20000 + MachineX86 + $(IntDir)$(TargetName).lib + true + true + + + true + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Unicode_Release/spellchecker.tlb + + + + + Full + OnlyExplicitInline + ../../include;../ExternalAPI;%(AdditionalIncludeDirectories) + HUNSPELL_STATIC;_CRT_NONSTDC_NO_WARNINGS;WIN64;WIN32;W32;NDEBUG;_WINDOWS;UNICODE;_USRDLL;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + true + $(IntDir) + Level3 + true + true + Size + false + + + NDEBUG;%(PreprocessorDefinitions) + + + /ALIGN:4096 /filealign:0x200 /ignore:4108 %(AdditionalOptions) + true + true + true + .\Release64/spellchecker64.map + 0x3EC20000 + MachineX64 + $(IntDir)$(TargetName).lib + true + true + + + true + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Unicode_Debug/spellchecker.tlb + + + + + Disabled + ../../include;../ExternalAPI;%(AdditionalIncludeDirectories) + HUNSPELL_STATIC;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;WIN32;W32;_DEBUG;_WINDOWS;UNICODE;_USRDLL;%(PreprocessorDefinitions) + MultiThreadedDebug + true + Level3 + true + EditAndContinue + $(IntDir) + EnableFastChecks + + + NDEBUG;%(PreprocessorDefinitions) + + + /ALIGN:4096 /filealign:0x200 /ignore:4108 %(AdditionalOptions) + true + true + 0x3EC20000 + MachineX86 + $(IntDir)$(TargetName).lib + + + true + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Unicode_Debug/spellchecker.tlb + + + + + Disabled + ../../include;../ExternalAPI;%(AdditionalIncludeDirectories) + HUNSPELL_STATIC;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;WIN64;WIN32;W32;_DEBUG;_WINDOWS;UNICODE;_USRDLL;%(PreprocessorDefinitions) + MultiThreadedDebug + true + Level3 + true + ProgramDatabase + $(IntDir) + EnableFastChecks + + + NDEBUG;%(PreprocessorDefinitions) + + + /ALIGN:4096 /filealign:0x200 /ignore:4108 %(AdditionalOptions) + true + true + 0x3EC20000 + MachineX64 + $(IntDir)$(TargetName).lib + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %(PreprocessorDefinitions) + %(PreprocessorDefinitions) + %(PreprocessorDefinitions) + %(PreprocessorDefinitions) + + + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + + + + \ No newline at end of file diff --git a/plugins/SpellChecker/spellchecker.vcxproj.filters b/plugins/SpellChecker/spellchecker.vcxproj.filters new file mode 100644 index 0000000000..06fc8dfca3 --- /dev/null +++ b/plugins/SpellChecker/spellchecker.vcxproj.filters @@ -0,0 +1,199 @@ + + + + + {1e567d1e-0703-4ad7-8be9-0bf36e6d903e} + h;hpp;hxx;hm;inl + + + {6ac01ae1-9db3-41f9-abaa-4e05175e9502} + + + {7168cb7a-2d93-454f-a2e8-d3697486751a} + ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + {f6737d81-ea60-4b9d-b7d7-76da94729a18} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {a28a5de0-489b-4a0c-8e4b-87848ecfc338} + + + {437a04fa-5422-4a59-bf81-a7a42e195870} + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files\hunspell Header Files + + + Header Files\hunspell Header Files + + + Header Files\hunspell Header Files + + + Header Files\hunspell Header Files + + + Header Files\hunspell Header Files + + + Header Files\hunspell Header Files + + + Header Files\hunspell Header Files + + + Header Files\hunspell Header Files + + + Header Files\hunspell Header Files + + + Header Files\hunspell Header Files + + + Header Files\hunspell Header Files + + + Header Files\hunspell Header Files + + + Header Files\hunspell Header Files + + + Header Files\hunspell Header Files + + + Header Files\hunspell Header Files + + + Header Files\hunspell Header Files + + + Header Files\hunspell Header Files + + + + + Resource Files + + + Resource Files + + + Resource Files + + + Docs + + + Docs + + + Docs + + + Docs + + + + + Resource Files + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files\hunspell Source Files + + + Source Files\hunspell Source Files + + + Source Files\hunspell Source Files + + + Source Files\hunspell Source Files + + + Source Files\hunspell Source Files + + + Source Files\hunspell Source Files + + + Source Files\hunspell Source Files + + + Source Files\hunspell Source Files + + + Source Files\hunspell Source Files + + + Source Files\hunspell Source Files + + + Source Files\hunspell Source Files + + + \ No newline at end of file diff --git a/plugins/SpellChecker/srmm.spellchecker.patch b/plugins/SpellChecker/srmm.spellchecker.patch new file mode 100644 index 0000000000..be603f38e2 --- /dev/null +++ b/plugins/SpellChecker/srmm.spellchecker.patch @@ -0,0 +1,266 @@ +Index: msgdialog.c +=================================================================== +--- msgdialog.c (revision 6386) ++++ msgdialog.c (working copy) +@@ -39,6 +39,7 @@ + + extern HCURSOR hCurSplitNS, hCurSplitWE, hCurHyperlinkHand; + extern HANDLE hHookWinEvt; ++extern HANDLE hHookWinPopup; + extern struct CREOleCallback reOleCallback; + extern HINSTANCE g_hInst; + +@@ -318,22 +319,6 @@ + case WM_CHAR: + if (GetWindowLong(hwnd, GWL_STYLE) & ES_READONLY) + break; +- //for saved msg queue the keyup/keydowns generate wm_chars themselves +- if (wParam == '\n' || wParam == '\r') { +- if (((GetKeyState(VK_CONTROL) & 0x8000) != 0) ^ (0 != DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_SENDONENTER, SRMSGDEFSET_SENDONENTER))) { +- PostMessage(GetParent(hwnd), WM_COMMAND, IDOK, 0); +- return 0; +- } +- if (DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_SENDONDBLENTER, SRMSGDEFSET_SENDONDBLENTER)) { +- if (dat->lastEnterTime + ENTERCLICKTIME < GetTickCount()) +- dat->lastEnterTime = GetTickCount(); +- else { +- SendMessage(hwnd, WM_CHAR, '\b', 0); +- PostMessage(GetParent(hwnd), WM_COMMAND, IDOK, 0); +- return 0; +- } } +- } +- else dat->lastEnterTime = 0; + + if (wParam == 1 && GetKeyState(VK_CONTROL) & 0x8000) { //ctrl-a + SendMessage(hwnd, EM_SETSEL, 0, -1); +@@ -403,6 +388,25 @@ + SaveKeyboardMessage(dat, msg, wParam, lParam); + return 0; + } ++ ++ if (wParam == VK_RETURN) { ++ if (((GetKeyState(VK_CONTROL) & 0x8000) != 0) ^ (0 != DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_SENDONENTER, SRMSGDEFSET_SENDONENTER))) { ++ PostMessage(GetParent(hwnd), WM_COMMAND, IDOK, 0); ++ return 0; ++ } ++ if (DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_SENDONDBLENTER, SRMSGDEFSET_SENDONDBLENTER)) { ++ if (dat->lastEnterTime + ENTERCLICKTIME < GetTickCount()) ++ dat->lastEnterTime = GetTickCount(); ++ else { ++ SendMessage(hwnd, WM_KEYDOWN, VK_BACK, 0); ++ SendMessage(hwnd, WM_KEYUP, VK_BACK, 0); ++ PostMessage(GetParent(hwnd), WM_COMMAND, IDOK, 0); ++ return 0; ++ } ++ } ++ } ++ else ++ dat->lastEnterTime = 0; + + if (wParam == VK_UP && (GetKeyState(VK_CONTROL) & 0x8000) && DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_CTRLSUPPORT, SRMSGDEFSET_CTRLSUPPORT) && !DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_AUTOCLOSE, SRMSGDEFSET_AUTOCLOSE)) { + if (pdat->cmdList) { +@@ -446,9 +450,7 @@ + EnableWindow(GetDlgItem(GetParent(hwnd), IDOK), GetWindowTextLength(GetDlgItem(GetParent(hwnd), IDC_MESSAGE)) != 0); + UpdateReadChars(GetParent(hwnd), pdat->hwndStatus); + } +- if (wParam == VK_RETURN) +- break; +- //fall through ++ break; + case WM_LBUTTONDOWN: + case WM_RBUTTONDOWN: + case WM_MBUTTONDOWN: +@@ -473,6 +475,45 @@ + free(dat->keyboardMsgQueue); + free(dat); + return 0; ++ case WM_CONTEXTMENU: ++ { ++ MessageWindowPopupData mwpd; ++ mwpd.cbSize = sizeof(mwpd); ++ mwpd.uType = MSG_WINDOWPOPUP_SHOWING; ++ mwpd.uFlags = MSG_WINDOWPOPUP_INPUT; ++ mwpd.hContact = pdat->hContact; ++ mwpd.hwnd = hwnd; ++ mwpd.hMenu = CreatePopupMenu(); ++ mwpd.selection = 0; ++ ++ if (lParam == 0xFFFFFFFF) { ++ CHARRANGE sel; ++ SendMessage(hwnd, EM_EXGETSEL, 0, (LPARAM) &sel); ++ SendMessage(hwnd, EM_POSFROMCHAR, (WPARAM)&mwpd.pt, (LPARAM) sel.cpMax); ++ ++ ClientToScreen(hwnd, &mwpd.pt); ++ } ++ else { ++ mwpd.pt.x = LOWORD(lParam); ++ mwpd.pt.y = HIWORD(lParam); ++ } ++ ++ // First notification ++ NotifyEventHooks(hHookWinPopup, 0, (LPARAM)&mwpd); ++ ++ // Someone added items? ++ if (GetMenuItemCount(mwpd.hMenu) > 0) { ++ mwpd.selection = TrackPopupMenu(mwpd.hMenu, TPM_RETURNCMD, mwpd.pt.x, mwpd.pt.y, 0, hwnd, NULL); ++ } ++ ++ // Second notification ++ mwpd.uType = MSG_WINDOWPOPUP_SELECTED; ++ NotifyEventHooks(hHookWinPopup, 0, (LPARAM)&mwpd); ++ return 0; ++ } ++ case WM_PASTE: ++ SendMessage(hwnd, EM_PASTESPECIAL, CF_TEXT, 0); ++ return 0; + } + return CallWindowProc(OldMessageEditProc, hwnd, msg, wParam, lParam); + } +@@ -778,6 +819,7 @@ + EnableWindow(GetDlgItem(hwndDlg, IDC_AVATAR), FALSE); + SendDlgItemMessage(hwndDlg, IDC_LOG, EM_SETOLECALLBACK, 0, (LPARAM) & reOleCallback); + SendDlgItemMessage(hwndDlg, IDC_LOG, EM_SETEVENTMASK, 0, ENM_MOUSEEVENTS | ENM_LINK); ++ SendDlgItemMessage(hwndDlg, IDC_MESSAGE, EM_SETEVENTMASK, 0, ENM_CHANGE); + /* duh, how come we didnt use this from the start? */ + SendDlgItemMessage(hwndDlg, IDC_LOG, EM_AUTOURLDETECT, (WPARAM) TRUE, 0); + if (dat->hContact && dat->szProto) { +@@ -1120,6 +1162,7 @@ + COLORREF colour = DBGetContactSettingDword(NULL, SRMMMOD, SRMSGSET_BKGCOLOUR, SRMSGDEFSET_BKGCOLOUR); + dat->hBkgBrush = CreateSolidBrush(colour); + SendDlgItemMessage(hwndDlg, IDC_LOG, EM_SETBKGNDCOLOR, 0, colour); ++ SendDlgItemMessage(hwndDlg, IDC_MESSAGE, EM_SETBKGNDCOLOR, 0, colour); + } + { // avatar stuff + dat->avatarPic = 0; +@@ -1133,12 +1176,17 @@ + { + HFONT hFont; + LOGFONT lf; ++ CHARFORMAT cf = {0}; + hFont = (HFONT) SendDlgItemMessage(hwndDlg, IDC_MESSAGE, WM_GETFONT, 0, 0); + if (hFont != NULL && hFont != (HFONT) SendDlgItemMessage(hwndDlg, IDOK, WM_GETFONT, 0, 0)) + DeleteObject(hFont); +- LoadMsgDlgFont(MSGFONTID_MESSAGEAREA, &lf, NULL); ++ LoadMsgDlgFont(MSGFONTID_MESSAGEAREA, &lf, &cf.crTextColor); + hFont = CreateFontIndirect(&lf); + SendDlgItemMessage(hwndDlg, IDC_MESSAGE, WM_SETFONT, (WPARAM) hFont, MAKELPARAM(TRUE, 0)); ++ ++ cf.cbSize = sizeof(CHARFORMAT); ++ cf.dwMask = CFM_COLOR; ++ SendDlgItemMessage(hwndDlg, IDC_MESSAGE, EM_SETCHARFORMAT, SCF_ALL, (WPARAM) &cf); + } + + /* +@@ -1528,20 +1576,10 @@ + SetTimer(hwndDlg, TIMERID_MSGSEND, DBGetContactSettingDword(NULL, SRMMMOD, SRMSGSET_MSGTIMEOUT, SRMSGDEFSET_MSGTIMEOUT), NULL); + break; + } +- break; + +- case WM_CTLCOLOREDIT: +- { +- COLORREF colour; +- if ((HWND) lParam != GetDlgItem(hwndDlg, IDC_MESSAGE)) ++ case WM_MEASUREITEM: ++ if (wParam == 0 || lParam == 0) + break; +- LoadMsgDlgFont(MSGFONTID_MESSAGEAREA, NULL, &colour); +- SetTextColor((HDC) wParam, colour); +- SetBkColor((HDC) wParam, DBGetContactSettingDword(NULL, SRMMMOD, SRMSGSET_BKGCOLOUR, SRMSGDEFSET_BKGCOLOUR)); +- return (BOOL) dat->hBkgBrush; +- } +- +- case WM_MEASUREITEM: + return CallService(MS_CLIST_MENUMEASUREITEM, wParam, lParam); + + case WM_DRAWITEM: +Index: msgs.c +=================================================================== +--- msgs.c (revision 6386) ++++ msgs.c (working copy) +@@ -28,7 +28,7 @@ + + HCURSOR hCurSplitNS, hCurSplitWE, hCurHyperlinkHand; + static HANDLE hEventDbEventAdded, hEventDbSettingChange, hEventContactDeleted; +-HANDLE hHookWinEvt = NULL; ++HANDLE hHookWinEvt = NULL, hHookWinPopup=NULL; + + extern HINSTANCE g_hInst; + +@@ -451,6 +451,7 @@ + CreateServiceFunction("SRMsg/ReadMessage", ReadMessageCommand); + CreateServiceFunction("SRMsg/TypingMessage", TypingMessageCommand); + hHookWinEvt=CreateHookableEvent(ME_MSG_WINDOWEVENT); ++ hHookWinPopup=CreateHookableEvent(ME_MSG_WINDOWPOPUP); + SkinAddNewSoundEx("RecvMsgActive", Translate("Messages"), Translate("Incoming (Focused Window)")); + SkinAddNewSoundEx("RecvMsgInactive", Translate("Messages"), Translate("Incoming (Unfocused Window)")); + SkinAddNewSoundEx("AlertMsg", Translate("Messages"), Translate("Incoming (New Session)")); +Index: resource.rc +=================================================================== +--- resource.rc (revision 6386) ++++ resource.rc (working copy) +@@ -9,6 +9,7 @@ + // + #include + #include ++#include "richedit.h" + #include "../../include/statusmodes.h" + + ///////////////////////////////////////////////////////////////////////////// +@@ -105,8 +106,17 @@ + CAPTION "Message Session" + FONT 8, "MS Shell Dlg", 0, 0, 0x1 + BEGIN +- EDITTEXT IDC_MESSAGE,1,49,141,13,ES_MULTILINE | ES_AUTOVSCROLL | +- ES_WANTRETURN | WS_VSCROLL,WS_EX_ACCEPTFILES ++#if defined(UNICODE) ++ CONTROL "",IDC_MESSAGE,"RichEdit20W",ES_MULTILINE | ++ ES_AUTOVSCROLL | ES_NOHIDESEL | ES_WANTRETURN | ++ WS_VSCROLL | WS_TABSTOP,1,49,141,13,WS_EX_ACCEPTFILES | ++ WS_EX_STATICEDGE ++#else ++ CONTROL "",IDC_MESSAGE,"RichEdit20A",ES_MULTILINE | ++ ES_AUTOVSCROLL | ES_NOHIDESEL | ES_WANTRETURN | ++ WS_VSCROLL | WS_TABSTOP,1,49,141,13,WS_EX_ACCEPTFILES | ++ WS_EX_STATICEDGE ++#endif + DEFPUSHBUTTON "&Send",IDOK,143,48,39,15 + PUSHBUTTON "Close",IDCANCEL,129,0,54,15,NOT WS_VISIBLE + CONTROL "",IDC_PROTOCOL,"Button",BS_OWNERDRAW,2,5,12,12 +@@ -265,6 +275,7 @@ + BEGIN + "#include \r\n" + "#include \r\n" ++ "#include ""richedit.h""\r\n" + "#include ""../../include/statusmodes.h""\r\n" + "\0" + END +Index: srmm.c +=================================================================== +--- srmm.c (revision 6386) ++++ srmm.c (working copy) +@@ -34,7 +34,11 @@ + + PLUGININFOEX pluginInfo = { + sizeof(PLUGININFOEX), +- "Send/Receive Messages", ++#ifdef _UNICODE ++ "Send/Receive Messages (Unicode) - RichEdit mod", ++#else ++ "Send/Receive Messages - RichEdit mod", ++#endif + PLUGIN_MAKE_VERSION(0, 7, 0, 0), + "Send and receive instant messages", + "Miranda IM Development Team", +@@ -44,9 +48,9 @@ + UNICODE_AWARE, + DEFMOD_SRMESSAGE, // replace internal version (if any) + #ifdef _UNICODE +- {0x657fe89b, 0xd121, 0x40c2, { 0x8a, 0xc9, 0xb9, 0xfa, 0x57, 0x55, 0xb3, 0xc }} //{657FE89B-D121-40c2-8AC9-B9FA5755B30C} ++ { 0x8219e097, 0xb94c, 0x4109, { 0x90, 0x71, 0xd9, 0xee, 0x3c, 0xf6, 0x60, 0xcb } } // {8219E097-B94C-4109-9071-D9EE3CF660CB} + #else +- {0xd53dd778, 0x16d2, 0x49ac, { 0x8f, 0xb3, 0x6f, 0x9a, 0x96, 0x1c, 0x9f, 0xd2 }} //{D53DD778-16D2-49ac-8FB3-6F9A961C9FD2} ++ { 0x572029ef, 0x2ecb, 0x40d4, { 0x99, 0xee, 0xbb, 0xb0, 0x74, 0x99, 0xbb, 0xe8 } } // {572029EF-2ECB-40d4-99EE-BBB07499BBE8} + #endif + }; + diff --git a/plugins/Updater/Docs/licence_updater.txt b/plugins/Updater/Docs/licence_updater.txt new file mode 100644 index 0000000000..1ee28cf3c7 --- /dev/null +++ b/plugins/Updater/Docs/licence_updater.txt @@ -0,0 +1,52 @@ +// This software is Copyright (c) 2005 Scott Ellis (mail@scottellis.com.au) +// http://www.scottellis.com.au +// It is released under the General Public Licence, available here: +// http://www.gnu.org/copyleft/gpl.html + +// *except* for the zip decompression, which is covered by the following licence: + + +// Copyright (c) 1990-1999 Info-ZIP. All rights reserved. +// +// For the purposes of this copyright and license, "Info-ZIP" is defined as +// the following set of individuals: +// +// Mark Adler, John Bush, Karl Davis, Harald Denker, Jean-Michel Dubois, +// Jean-loup Gailly, Hunter Goatley, Ian Gorman, Chris Herborth, Dirk Haase, +// Greg Hartwig, Robert Heath, Jonathan Hudson, Paul Kienitz, David Kirschbaum, +// Johnny Lee, Onno van der Linden, Igor Mandrichenko, Steve P. Miller, +// Sergio Monesi, Keith Owens, George Petrov, Greg Roelofs, Kai Uwe Rommel, +// Steve Salisbury, Dave Smith, Christian Spieler, Antoine Verheijen, +// Paul von Behren, Rich Wales, Mike White +// +// This software is provided "as is," without warranty of any kind, express +// or implied. In no event shall Info-ZIP or its contributors be held liable +// for any direct, indirect, incidental, special or consequential damages +// arising out of the use of or inability to use this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. Redistributions of source code must retain the above copyright notice, +// definition, disclaimer, and this list of conditions. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, definition, disclaimer, and this list of conditions in +// documentation and/or other materials provided with the distribution. +// +// 3. Altered versions--including, but not limited to, ports to new operating +// systems, existing ports with new graphical interfaces, and dynamic, +// shared, or static library versions--must be plainly marked as such +// and must not be misrepresented as being the original source. Such +// altered versions also must not be misrepresented as being Info-ZIP +// releases--including, but not limited to, labeling of the altered +// versions with the names "Info-ZIP" (or any variation thereof, including, +// but not limited to, different capitalizations), "Pocket UnZip," "WiZ" +// or "MacZip" without the explicit permission of Info-ZIP. Such altered +// versions are further prohibited from misrepresentative use of the +// Zip-Bugs or Info-ZIP e-mail addresses or of the Info-ZIP URL(s). +// +// 4. Info-ZIP retains the right to use the names "Info-ZIP," "Zip," "UnZip," +// "WiZ," "Pocket UnZip," "Pocket Zip," and "MacZip" for its own source and +// binary releases. diff --git a/plugins/Updater/allocations.cpp b/plugins/Updater/allocations.cpp new file mode 100644 index 0000000000..733e4145bf --- /dev/null +++ b/plugins/Updater/allocations.cpp @@ -0,0 +1,5 @@ +#include "common.h" +#include "allocations.h" + +Allocations allocations; + diff --git a/plugins/Updater/allocations.h b/plugins/Updater/allocations.h new file mode 100644 index 0000000000..842d7daf01 --- /dev/null +++ b/plugins/Updater/allocations.h @@ -0,0 +1,72 @@ +#ifndef _ALLOCATION_INC +#define _ALLOCATION_INC + +// store allocated memory pointers for deallocation when shutting down +class Allocations { +public: + Allocations(): head(0) {} + virtual ~Allocations() { free_all(); } + + void push_back(void *pt) { Node *n = new Node; n->value = pt; n->next = head; head = n;} + +protected: + + class Node { + public: + void *value; + Node *next; + }; + + Node *head; + + void free_all() { + Node *current; + while(head) { + current = head; + head = head->next; + free(current->value); + delete current; + } + } +}; + +extern Allocations allocations; + +__inline static void *safe_alloc(size_t bytes) { + if(bytes == 0) return 0; + void *ret = malloc(bytes); + allocations.push_back(ret); + return ret; +} + +__inline static char *safe_strdup(const char *s) { + if(!s) return 0; + char *ret = _strdup(s); + allocations.push_back(ret); + return ret; +} + +__inline static wchar_t *safe_wstrdup(const wchar_t *s) { + if(!s) return 0; + wchar_t *ret = _wcsdup(s); + allocations.push_back(ret); + return ret; +} + +#ifdef _UNICODE +#define safe_tstrdup(x) safe_wstrdup(x) +#else +#define sage_tstrdup(x) safe_strdup(x) +#endif + +__inline static BYTE *safe_bytedup(BYTE *bytes, int size) { + if(!bytes || size == 0) return 0; + + BYTE *ret = (BYTE *)malloc(size + 1); + memcpy(ret, bytes, size); + *(ret + size) = 0; + allocations.push_back(ret); + return ret; +} + +#endif diff --git a/plugins/Updater/bzip2-1.0.3/CHANGES b/plugins/Updater/bzip2-1.0.3/CHANGES new file mode 100644 index 0000000000..81e97ca6fa --- /dev/null +++ b/plugins/Updater/bzip2-1.0.3/CHANGES @@ -0,0 +1,327 @@ + ------------------------------------------------------------------ + This file is part of bzip2/libbzip2, a program and library for + lossless, block-sorting data compression. + + bzip2/libbzip2 version 1.0.6 of 6 September 2010 + Copyright (C) 1996-2010 Julian Seward + + Please read the WARNING, DISCLAIMER and PATENTS sections in the + README file. + + This program is released under the terms of the license contained + in the file LICENSE. + ------------------------------------------------------------------ + + +0.9.0 +~~~~~ +First version. + + +0.9.0a +~~~~~~ +Removed 'ranlib' from Makefile, since most modern Unix-es +don't need it, or even know about it. + + +0.9.0b +~~~~~~ +Fixed a problem with error reporting in bzip2.c. This does not effect +the library in any way. Problem is: versions 0.9.0 and 0.9.0a (of the +program proper) compress and decompress correctly, but give misleading +error messages (internal panics) when an I/O error occurs, instead of +reporting the problem correctly. This shouldn't give any data loss +(as far as I can see), but is confusing. + +Made the inline declarations disappear for non-GCC compilers. + + +0.9.0c +~~~~~~ +Fixed some problems in the library pertaining to some boundary cases. +This makes the library behave more correctly in those situations. The +fixes apply only to features (calls and parameters) not used by +bzip2.c, so the non-fixedness of them in previous versions has no +effect on reliability of bzip2.c. + +In bzlib.c: + * made zero-length BZ_FLUSH work correctly in bzCompress(). + * fixed bzWrite/bzRead to ignore zero-length requests. + * fixed bzread to correctly handle read requests after EOF. + * wrong parameter order in call to bzDecompressInit in + bzBuffToBuffDecompress. Fixed. + +In compress.c: + * changed setting of nGroups in sendMTFValues() so as to + do a bit better on small files. This _does_ effect + bzip2.c. + + +0.9.5a +~~~~~~ +Major change: add a fallback sorting algorithm (blocksort.c) +to give reasonable behaviour even for very repetitive inputs. +Nuked --repetitive-best and --repetitive-fast since they are +no longer useful. + +Minor changes: mostly a whole bunch of small changes/ +bugfixes in the driver (bzip2.c). Changes pertaining to the +user interface are: + + allow decompression of symlink'd files to stdout + decompress/test files even without .bz2 extension + give more accurate error messages for I/O errors + when compressing/decompressing to stdout, don't catch control-C + read flags from BZIP2 and BZIP environment variables + decline to break hard links to a file unless forced with -f + allow -c flag even with no filenames + preserve file ownerships as far as possible + make -s -1 give the expected block size (100k) + add a flag -q --quiet to suppress nonessential warnings + stop decoding flags after --, so files beginning in - can be handled + resolved inconsistent naming: bzcat or bz2cat ? + bzip2 --help now returns 0 + +Programming-level changes are: + + fixed syntax error in GET_LL4 for Borland C++ 5.02 + let bzBuffToBuffDecompress return BZ_DATA_ERROR{_MAGIC} + fix overshoot of mode-string end in bzopen_or_bzdopen + wrapped bzlib.h in #ifdef __cplusplus ... extern "C" { ... } + close file handles under all error conditions + added minor mods so it compiles with DJGPP out of the box + fixed Makefile so it doesn't give problems with BSD make + fix uninitialised memory reads in dlltest.c + +0.9.5b +~~~~~~ +Open stdin/stdout in binary mode for DJGPP. + +0.9.5c +~~~~~~ +Changed BZ_N_OVERSHOOT to be ... + 2 instead of ... + 1. The + 1 +version could cause the sorted order to be wrong in some extremely +obscure cases. Also changed setting of quadrant in blocksort.c. + +0.9.5d +~~~~~~ +The only functional change is to make bzlibVersion() in the library +return the correct string. This has no effect whatsoever on the +functioning of the bzip2 program or library. Added a couple of casts +so the library compiles without warnings at level 3 in MS Visual +Studio 6.0. Included a Y2K statement in the file Y2K_INFO. All other +changes are minor documentation changes. + +1.0 +~~~ +Several minor bugfixes and enhancements: + +* Large file support. The library uses 64-bit counters to + count the volume of data passing through it. bzip2.c + is now compiled with -D_FILE_OFFSET_BITS=64 to get large + file support from the C library. -v correctly prints out + file sizes greater than 4 gigabytes. All these changes have + been made without assuming a 64-bit platform or a C compiler + which supports 64-bit ints, so, except for the C library + aspect, they are fully portable. + +* Decompression robustness. The library/program should be + robust to any corruption of compressed data, detecting and + handling _all_ corruption, instead of merely relying on + the CRCs. What this means is that the program should + never crash, given corrupted data, and the library should + always return BZ_DATA_ERROR. + +* Fixed an obscure race-condition bug only ever observed on + Solaris, in which, if you were very unlucky and issued + control-C at exactly the wrong time, both input and output + files would be deleted. + +* Don't run out of file handles on test/decompression when + large numbers of files have invalid magic numbers. + +* Avoid library namespace pollution. Prefix all exported + symbols with BZ2_. + +* Minor sorting enhancements from my DCC2000 paper. + +* Advance the version number to 1.0, so as to counteract the + (false-in-this-case) impression some people have that programs + with version numbers less than 1.0 are in some way, experimental, + pre-release versions. + +* Create an initial Makefile-libbz2_so to build a shared library. + Yes, I know I should really use libtool et al ... + +* Make the program exit with 2 instead of 0 when decompression + fails due to a bad magic number (ie, an invalid bzip2 header). + Also exit with 1 (as the manual claims :-) whenever a diagnostic + message would have been printed AND the corresponding operation + is aborted, for example + bzip2: Output file xx already exists. + When a diagnostic message is printed but the operation is not + aborted, for example + bzip2: Can't guess original name for wurble -- using wurble.out + then the exit value 0 is returned, unless some other problem is + also detected. + + I think it corresponds more closely to what the manual claims now. + + +1.0.1 +~~~~~ +* Modified dlltest.c so it uses the new BZ2_ naming scheme. +* Modified makefile-msc to fix minor build probs on Win2k. +* Updated README.COMPILATION.PROBLEMS. + +There are no functionality changes or bug fixes relative to version +1.0.0. This is just a documentation update + a fix for minor Win32 +build problems. For almost everyone, upgrading from 1.0.0 to 1.0.1 is +utterly pointless. Don't bother. + + +1.0.2 +~~~~~ +A bug fix release, addressing various minor issues which have appeared +in the 18 or so months since 1.0.1 was released. Most of the fixes +are to do with file-handling or documentation bugs. To the best of my +knowledge, there have been no data-loss-causing bugs reported in the +compression/decompression engine of 1.0.0 or 1.0.1. + +Note that this release does not improve the rather crude build system +for Unix platforms. The general plan here is to autoconfiscate/ +libtoolise 1.0.2 soon after release, and release the result as 1.1.0 +or perhaps 1.2.0. That, however, is still just a plan at this point. + +Here are the changes in 1.0.2. Bug-reporters and/or patch-senders in +parentheses. + +* Fix an infinite segfault loop in 1.0.1 when a directory is + encountered in -f (force) mode. + (Trond Eivind Glomsrod, Nicholas Nethercote, Volker Schmidt) + +* Avoid double fclose() of output file on certain I/O error paths. + (Solar Designer) + +* Don't fail with internal error 1007 when fed a long stream (> 48MB) + of byte 251. Also print useful message suggesting that 1007s may be + caused by bad memory. + (noticed by Juan Pedro Vallejo, fixed by me) + +* Fix uninitialised variable silly bug in demo prog dlltest.c. + (Jorj Bauer) + +* Remove 512-MB limitation on recovered file size for bzip2recover + on selected platforms which support 64-bit ints. At the moment + all GCC supported platforms, and Win32. + (me, Alson van der Meulen) + +* Hard-code header byte values, to give correct operation on platforms + using EBCDIC as their native character set (IBM's OS/390). + (Leland Lucius) + +* Copy file access times correctly. + (Marty Leisner) + +* Add distclean and check targets to Makefile. + (Michael Carmack) + +* Parameterise use of ar and ranlib in Makefile. Also add $(LDFLAGS). + (Rich Ireland, Bo Thorsen) + +* Pass -p (create parent dirs as needed) to mkdir during make install. + (Jeremy Fusco) + +* Dereference symlinks when copying file permissions in -f mode. + (Volker Schmidt) + +* Majorly simplify implementation of uInt64_qrm10. + (Bo Lindbergh) + +* Check the input file still exists before deleting the output one, + when aborting in cleanUpAndFail(). + (Joerg Prante, Robert Linden, Matthias Krings) + +Also a bunch of patches courtesy of Philippe Troin, the Debian maintainer +of bzip2: + +* Wrapper scripts (with manpages): bzdiff, bzgrep, bzmore. + +* Spelling changes and minor enhancements in bzip2.1. + +* Avoid race condition between creating the output file and setting its + interim permissions safely, by using fopen_output_safely(). + No changes to bzip2recover since there is no issue with file + permissions there. + +* do not print senseless report with -v when compressing an empty + file. + +* bzcat -f works on non-bzip2 files. + +* do not try to escape shell meta-characters on unix (the shell takes + care of these). + +* added --fast and --best aliases for -1 -9 for gzip compatibility. + + +1.0.3 (15 Feb 05) +~~~~~~~~~~~~~~~~~ +Fixes some minor bugs since the last version, 1.0.2. + +* Further robustification against corrupted compressed data. + There are currently no known bitstreams which can cause the + decompressor to crash, loop or access memory which does not + belong to it. If you are using bzip2 or the library to + decompress bitstreams from untrusted sources, an upgrade + to 1.0.3 is recommended. This fixes CAN-2005-1260. + +* The documentation has been converted to XML, from which html + and pdf can be derived. + +* Various minor bugs in the documentation have been fixed. + +* Fixes for various compilation warnings with newer versions of + gcc, and on 64-bit platforms. + +* The BZ_NO_STDIO cpp symbol was not properly observed in 1.0.2. + This has been fixed. + + +1.0.4 (20 Dec 06) +~~~~~~~~~~~~~~~~~ +Fixes some minor bugs since the last version, 1.0.3. + +* Fix file permissions race problem (CAN-2005-0953). + +* Avoid possible segfault in BZ2_bzclose. From Coverity's NetBSD + scan. + +* 'const'/prototype cleanups in the C code. + +* Change default install location to /usr/local, and handle multiple + 'make install's without error. + +* Sanitise file names more carefully in bzgrep. Fixes CAN-2005-0758 + to the extent that applies to bzgrep. + +* Use 'mktemp' rather than 'tempfile' in bzdiff. + +* Tighten up a couple of assertions in blocksort.c following automated + analysis. + +* Fix minor doc/comment bugs. + + +1.0.5 (10 Dec 07) +~~~~~~~~~~~~~~~~~ +Security fix only. Fixes CERT-FI 20469 as it applies to bzip2. + + +1.0.6 (6 Sept 10) +~~~~~~~~~~~~~~~~~ + +* Security fix for CVE-2010-0405. This was reported by Mikolaj + Izdebski. + +* Make the documentation build on Ubuntu 10.04 diff --git a/plugins/Updater/bzip2-1.0.3/LICENSE b/plugins/Updater/bzip2-1.0.3/LICENSE new file mode 100644 index 0000000000..cc614178cf --- /dev/null +++ b/plugins/Updater/bzip2-1.0.3/LICENSE @@ -0,0 +1,42 @@ + +-------------------------------------------------------------------------- + +This program, "bzip2", the associated library "libbzip2", and all +documentation, are copyright (C) 1996-2010 Julian R Seward. All +rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + +3. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + +4. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS +OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Julian Seward, jseward@bzip.org +bzip2/libbzip2 version 1.0.6 of 6 September 2010 + +-------------------------------------------------------------------------- diff --git a/plugins/Updater/bzip2-1.0.3/Makefile b/plugins/Updater/bzip2-1.0.3/Makefile new file mode 100644 index 0000000000..9754ddf286 --- /dev/null +++ b/plugins/Updater/bzip2-1.0.3/Makefile @@ -0,0 +1,217 @@ +# ------------------------------------------------------------------ +# This file is part of bzip2/libbzip2, a program and library for +# lossless, block-sorting data compression. +# +# bzip2/libbzip2 version 1.0.6 of 6 September 2010 +# Copyright (C) 1996-2010 Julian Seward +# +# Please read the WARNING, DISCLAIMER and PATENTS sections in the +# README file. +# +# This program is released under the terms of the license contained +# in the file LICENSE. +# ------------------------------------------------------------------ + +SHELL=/bin/sh + +# To assist in cross-compiling +CC=gcc +AR=ar +RANLIB=ranlib +LDFLAGS= + +BIGFILES=-D_FILE_OFFSET_BITS=64 +CFLAGS=-Wall -Winline -O2 -g $(BIGFILES) + +# Where you want it installed when you do 'make install' +PREFIX=/usr/local + + +OBJS= blocksort.o \ + huffman.o \ + crctable.o \ + randtable.o \ + compress.o \ + decompress.o \ + bzlib.o + +all: libbz2.a bzip2 bzip2recover test + +bzip2: libbz2.a bzip2.o + $(CC) $(CFLAGS) $(LDFLAGS) -o bzip2 bzip2.o -L. -lbz2 + +bzip2recover: bzip2recover.o + $(CC) $(CFLAGS) $(LDFLAGS) -o bzip2recover bzip2recover.o + +libbz2.a: $(OBJS) + rm -f libbz2.a + $(AR) cq libbz2.a $(OBJS) + @if ( test -f $(RANLIB) -o -f /usr/bin/ranlib -o \ + -f /bin/ranlib -o -f /usr/ccs/bin/ranlib ) ; then \ + echo $(RANLIB) libbz2.a ; \ + $(RANLIB) libbz2.a ; \ + fi + +check: test +test: bzip2 + @cat words1 + ./bzip2 -1 < sample1.ref > sample1.rb2 + ./bzip2 -2 < sample2.ref > sample2.rb2 + ./bzip2 -3 < sample3.ref > sample3.rb2 + ./bzip2 -d < sample1.bz2 > sample1.tst + ./bzip2 -d < sample2.bz2 > sample2.tst + ./bzip2 -ds < sample3.bz2 > sample3.tst + cmp sample1.bz2 sample1.rb2 + cmp sample2.bz2 sample2.rb2 + cmp sample3.bz2 sample3.rb2 + cmp sample1.tst sample1.ref + cmp sample2.tst sample2.ref + cmp sample3.tst sample3.ref + @cat words3 + +install: bzip2 bzip2recover + if ( test ! -d $(PREFIX)/bin ) ; then mkdir -p $(PREFIX)/bin ; fi + if ( test ! -d $(PREFIX)/lib ) ; then mkdir -p $(PREFIX)/lib ; fi + if ( test ! -d $(PREFIX)/man ) ; then mkdir -p $(PREFIX)/man ; fi + if ( test ! -d $(PREFIX)/man/man1 ) ; then mkdir -p $(PREFIX)/man/man1 ; fi + if ( test ! -d $(PREFIX)/include ) ; then mkdir -p $(PREFIX)/include ; fi + cp -f bzip2 $(PREFIX)/bin/bzip2 + cp -f bzip2 $(PREFIX)/bin/bunzip2 + cp -f bzip2 $(PREFIX)/bin/bzcat + cp -f bzip2recover $(PREFIX)/bin/bzip2recover + chmod a+x $(PREFIX)/bin/bzip2 + chmod a+x $(PREFIX)/bin/bunzip2 + chmod a+x $(PREFIX)/bin/bzcat + chmod a+x $(PREFIX)/bin/bzip2recover + cp -f bzip2.1 $(PREFIX)/man/man1 + chmod a+r $(PREFIX)/man/man1/bzip2.1 + cp -f bzlib.h $(PREFIX)/include + chmod a+r $(PREFIX)/include/bzlib.h + cp -f libbz2.a $(PREFIX)/lib + chmod a+r $(PREFIX)/lib/libbz2.a + cp -f bzgrep $(PREFIX)/bin/bzgrep + ln -s -f $(PREFIX)/bin/bzgrep $(PREFIX)/bin/bzegrep + ln -s -f $(PREFIX)/bin/bzgrep $(PREFIX)/bin/bzfgrep + chmod a+x $(PREFIX)/bin/bzgrep + cp -f bzmore $(PREFIX)/bin/bzmore + ln -s -f $(PREFIX)/bin/bzmore $(PREFIX)/bin/bzless + chmod a+x $(PREFIX)/bin/bzmore + cp -f bzdiff $(PREFIX)/bin/bzdiff + ln -s -f $(PREFIX)/bin/bzdiff $(PREFIX)/bin/bzcmp + chmod a+x $(PREFIX)/bin/bzdiff + cp -f bzgrep.1 bzmore.1 bzdiff.1 $(PREFIX)/man/man1 + chmod a+r $(PREFIX)/man/man1/bzgrep.1 + chmod a+r $(PREFIX)/man/man1/bzmore.1 + chmod a+r $(PREFIX)/man/man1/bzdiff.1 + echo ".so man1/bzgrep.1" > $(PREFIX)/man/man1/bzegrep.1 + echo ".so man1/bzgrep.1" > $(PREFIX)/man/man1/bzfgrep.1 + echo ".so man1/bzmore.1" > $(PREFIX)/man/man1/bzless.1 + echo ".so man1/bzdiff.1" > $(PREFIX)/man/man1/bzcmp.1 + +clean: + rm -f *.o libbz2.a bzip2 bzip2recover \ + sample1.rb2 sample2.rb2 sample3.rb2 \ + sample1.tst sample2.tst sample3.tst + +blocksort.o: blocksort.c + @cat words0 + $(CC) $(CFLAGS) -c blocksort.c +huffman.o: huffman.c + $(CC) $(CFLAGS) -c huffman.c +crctable.o: crctable.c + $(CC) $(CFLAGS) -c crctable.c +randtable.o: randtable.c + $(CC) $(CFLAGS) -c randtable.c +compress.o: compress.c + $(CC) $(CFLAGS) -c compress.c +decompress.o: decompress.c + $(CC) $(CFLAGS) -c decompress.c +bzlib.o: bzlib.c + $(CC) $(CFLAGS) -c bzlib.c +bzip2.o: bzip2.c + $(CC) $(CFLAGS) -c bzip2.c +bzip2recover.o: bzip2recover.c + $(CC) $(CFLAGS) -c bzip2recover.c + + +distclean: clean + rm -f manual.ps manual.html manual.pdf + +DISTNAME=bzip2-1.0.6 +dist: check manual + rm -f $(DISTNAME) + ln -s -f . $(DISTNAME) + tar cvf $(DISTNAME).tar \ + $(DISTNAME)/blocksort.c \ + $(DISTNAME)/huffman.c \ + $(DISTNAME)/crctable.c \ + $(DISTNAME)/randtable.c \ + $(DISTNAME)/compress.c \ + $(DISTNAME)/decompress.c \ + $(DISTNAME)/bzlib.c \ + $(DISTNAME)/bzip2.c \ + $(DISTNAME)/bzip2recover.c \ + $(DISTNAME)/bzlib.h \ + $(DISTNAME)/bzlib_private.h \ + $(DISTNAME)/Makefile \ + $(DISTNAME)/LICENSE \ + $(DISTNAME)/bzip2.1 \ + $(DISTNAME)/bzip2.1.preformatted \ + $(DISTNAME)/bzip2.txt \ + $(DISTNAME)/words0 \ + $(DISTNAME)/words1 \ + $(DISTNAME)/words2 \ + $(DISTNAME)/words3 \ + $(DISTNAME)/sample1.ref \ + $(DISTNAME)/sample2.ref \ + $(DISTNAME)/sample3.ref \ + $(DISTNAME)/sample1.bz2 \ + $(DISTNAME)/sample2.bz2 \ + $(DISTNAME)/sample3.bz2 \ + $(DISTNAME)/dlltest.c \ + $(DISTNAME)/manual.html \ + $(DISTNAME)/manual.pdf \ + $(DISTNAME)/manual.ps \ + $(DISTNAME)/README \ + $(DISTNAME)/README.COMPILATION.PROBLEMS \ + $(DISTNAME)/README.XML.STUFF \ + $(DISTNAME)/CHANGES \ + $(DISTNAME)/libbz2.def \ + $(DISTNAME)/libbz2.dsp \ + $(DISTNAME)/dlltest.dsp \ + $(DISTNAME)/makefile.msc \ + $(DISTNAME)/unzcrash.c \ + $(DISTNAME)/spewG.c \ + $(DISTNAME)/mk251.c \ + $(DISTNAME)/bzdiff \ + $(DISTNAME)/bzdiff.1 \ + $(DISTNAME)/bzmore \ + $(DISTNAME)/bzmore.1 \ + $(DISTNAME)/bzgrep \ + $(DISTNAME)/bzgrep.1 \ + $(DISTNAME)/Makefile-libbz2_so \ + $(DISTNAME)/bz-common.xsl \ + $(DISTNAME)/bz-fo.xsl \ + $(DISTNAME)/bz-html.xsl \ + $(DISTNAME)/bzip.css \ + $(DISTNAME)/entities.xml \ + $(DISTNAME)/manual.xml \ + $(DISTNAME)/format.pl \ + $(DISTNAME)/xmlproc.sh + gzip -v $(DISTNAME).tar + +# For rebuilding the manual from sources on my SuSE 9.1 box + +MANUAL_SRCS= bz-common.xsl bz-fo.xsl bz-html.xsl bzip.css \ + entities.xml manual.xml + +manual: manual.html manual.ps manual.pdf + +manual.ps: $(MANUAL_SRCS) + ./xmlproc.sh -ps manual.xml + +manual.pdf: $(MANUAL_SRCS) + ./xmlproc.sh -pdf manual.xml + +manual.html: $(MANUAL_SRCS) + ./xmlproc.sh -html manual.xml diff --git a/plugins/Updater/bzip2-1.0.3/Makefile-libbz2_so b/plugins/Updater/bzip2-1.0.3/Makefile-libbz2_so new file mode 100644 index 0000000000..e58791b3b3 --- /dev/null +++ b/plugins/Updater/bzip2-1.0.3/Makefile-libbz2_so @@ -0,0 +1,59 @@ + +# This Makefile builds a shared version of the library, +# libbz2.so.1.0.6, with soname libbz2.so.1.0, +# at least on x86-Linux (RedHat 7.2), +# with gcc-2.96 20000731 (Red Hat Linux 7.1 2.96-98). +# Please see the README file for some important info +# about building the library like this. + +# ------------------------------------------------------------------ +# This file is part of bzip2/libbzip2, a program and library for +# lossless, block-sorting data compression. +# +# bzip2/libbzip2 version 1.0.6 of 6 September 2010 +# Copyright (C) 1996-2010 Julian Seward +# +# Please read the WARNING, DISCLAIMER and PATENTS sections in the +# README file. +# +# This program is released under the terms of the license contained +# in the file LICENSE. +# ------------------------------------------------------------------ + + +SHELL=/bin/sh +CC=gcc +BIGFILES=-D_FILE_OFFSET_BITS=64 +CFLAGS=-fpic -fPIC -Wall -Winline -O2 -g $(BIGFILES) + +OBJS= blocksort.o \ + huffman.o \ + crctable.o \ + randtable.o \ + compress.o \ + decompress.o \ + bzlib.o + +all: $(OBJS) + $(CC) -shared -Wl,-soname -Wl,libbz2.so.1.0 -o libbz2.so.1.0.6 $(OBJS) + $(CC) $(CFLAGS) -o bzip2-shared bzip2.c libbz2.so.1.0.6 + rm -f libbz2.so.1.0 + ln -s libbz2.so.1.0.6 libbz2.so.1.0 + +clean: + rm -f $(OBJS) bzip2.o libbz2.so.1.0.6 libbz2.so.1.0 bzip2-shared + +blocksort.o: blocksort.c + $(CC) $(CFLAGS) -c blocksort.c +huffman.o: huffman.c + $(CC) $(CFLAGS) -c huffman.c +crctable.o: crctable.c + $(CC) $(CFLAGS) -c crctable.c +randtable.o: randtable.c + $(CC) $(CFLAGS) -c randtable.c +compress.o: compress.c + $(CC) $(CFLAGS) -c compress.c +decompress.o: decompress.c + $(CC) $(CFLAGS) -c decompress.c +bzlib.o: bzlib.c + $(CC) $(CFLAGS) -c bzlib.c diff --git a/plugins/Updater/bzip2-1.0.3/README b/plugins/Updater/bzip2-1.0.3/README new file mode 100644 index 0000000000..9fb0f63601 --- /dev/null +++ b/plugins/Updater/bzip2-1.0.3/README @@ -0,0 +1,215 @@ + +This is the README for bzip2/libzip2. +This version is fully compatible with the previous public releases. + +------------------------------------------------------------------ +This file is part of bzip2/libbzip2, a program and library for +lossless, block-sorting data compression. + +bzip2/libbzip2 version 1.0.6 of 6 September 2010 +Copyright (C) 1996-2010 Julian Seward + +Please read the WARNING, DISCLAIMER and PATENTS sections in this file. + +This program is released under the terms of the license contained +in the file LICENSE. +------------------------------------------------------------------ + +Complete documentation is available in Postscript form (manual.ps), +PDF (manual.pdf) or html (manual.html). A plain-text version of the +manual page is available as bzip2.txt. + + +HOW TO BUILD -- UNIX + +Type 'make'. This builds the library libbz2.a and then the programs +bzip2 and bzip2recover. Six self-tests are run. If the self-tests +complete ok, carry on to installation: + +To install in /usr/local/bin, /usr/local/lib, /usr/local/man and +/usr/local/include, type + + make install + +To install somewhere else, eg, /xxx/yyy/{bin,lib,man,include}, type + + make install PREFIX=/xxx/yyy + +If you are (justifiably) paranoid and want to see what 'make install' +is going to do, you can first do + + make -n install or + make -n install PREFIX=/xxx/yyy respectively. + +The -n instructs make to show the commands it would execute, but not +actually execute them. + + +HOW TO BUILD -- UNIX, shared library libbz2.so. + +Do 'make -f Makefile-libbz2_so'. This Makefile seems to work for +Linux-ELF (RedHat 7.2 on an x86 box), with gcc. I make no claims +that it works for any other platform, though I suspect it probably +will work for most platforms employing both ELF and gcc. + +bzip2-shared, a client of the shared library, is also built, but not +self-tested. So I suggest you also build using the normal Makefile, +since that conducts a self-test. A second reason to prefer the +version statically linked to the library is that, on x86 platforms, +building shared objects makes a valuable register (%ebx) unavailable +to gcc, resulting in a slowdown of 10%-20%, at least for bzip2. + +Important note for people upgrading .so's from 0.9.0/0.9.5 to version +1.0.X. All the functions in the library have been renamed, from (eg) +bzCompress to BZ2_bzCompress, to avoid namespace pollution. +Unfortunately this means that the libbz2.so created by +Makefile-libbz2_so will not work with any program which used an older +version of the library. I do encourage library clients to make the +effort to upgrade to use version 1.0, since it is both faster and more +robust than previous versions. + + +HOW TO BUILD -- Windows 95, NT, DOS, Mac, etc. + +It's difficult for me to support compilation on all these platforms. +My approach is to collect binaries for these platforms, and put them +on the master web site (http://www.bzip.org). Look there. However +(FWIW), bzip2-1.0.X is very standard ANSI C and should compile +unmodified with MS Visual C. If you have difficulties building, you +might want to read README.COMPILATION.PROBLEMS. + +At least using MS Visual C++ 6, you can build from the unmodified +sources by issuing, in a command shell: + + nmake -f makefile.msc + +(you may need to first run the MSVC-provided script VCVARS32.BAT + so as to set up paths to the MSVC tools correctly). + + +VALIDATION + +Correct operation, in the sense that a compressed file can always be +decompressed to reproduce the original, is obviously of paramount +importance. To validate bzip2, I used a modified version of Mark +Nelson's churn program. Churn is an automated test driver which +recursively traverses a directory structure, using bzip2 to compress +and then decompress each file it encounters, and checking that the +decompressed data is the same as the original. + + + +Please read and be aware of the following: + +WARNING: + + This program and library (attempts to) compress data by + performing several non-trivial transformations on it. + Unless you are 100% familiar with *all* the algorithms + contained herein, and with the consequences of modifying them, + you should NOT meddle with the compression or decompression + machinery. Incorrect changes can and very likely *will* + lead to disastrous loss of data. + + +DISCLAIMER: + + I TAKE NO RESPONSIBILITY FOR ANY LOSS OF DATA ARISING FROM THE + USE OF THIS PROGRAM/LIBRARY, HOWSOEVER CAUSED. + + Every compression of a file implies an assumption that the + compressed file can be decompressed to reproduce the original. + Great efforts in design, coding and testing have been made to + ensure that this program works correctly. However, the complexity + of the algorithms, and, in particular, the presence of various + special cases in the code which occur with very low but non-zero + probability make it impossible to rule out the possibility of bugs + remaining in the program. DO NOT COMPRESS ANY DATA WITH THIS + PROGRAM UNLESS YOU ARE PREPARED TO ACCEPT THE POSSIBILITY, HOWEVER + SMALL, THAT THE DATA WILL NOT BE RECOVERABLE. + + That is not to say this program is inherently unreliable. + Indeed, I very much hope the opposite is true. bzip2/libbzip2 + has been carefully constructed and extensively tested. + + +PATENTS: + + To the best of my knowledge, bzip2/libbzip2 does not use any + patented algorithms. However, I do not have the resources + to carry out a patent search. Therefore I cannot give any + guarantee of the above statement. + + + +WHAT'S NEW IN 0.9.0 (as compared to 0.1pl2) ? + + * Approx 10% faster compression, 30% faster decompression + * -t (test mode) is a lot quicker + * Can decompress concatenated compressed files + * Programming interface, so programs can directly read/write .bz2 files + * Less restrictive (BSD-style) licensing + * Flag handling more compatible with GNU gzip + * Much more documentation, i.e., a proper user manual + * Hopefully, improved portability (at least of the library) + +WHAT'S NEW IN 0.9.5 ? + + * Compression speed is much less sensitive to the input + data than in previous versions. Specifically, the very + slow performance caused by repetitive data is fixed. + * Many small improvements in file and flag handling. + * A Y2K statement. + +WHAT'S NEW IN 1.0.0 ? + + See the CHANGES file. + +WHAT'S NEW IN 1.0.2 ? + + See the CHANGES file. + +WHAT'S NEW IN 1.0.3 ? + + See the CHANGES file. + +WHAT'S NEW IN 1.0.4 ? + + See the CHANGES file. + +WHAT'S NEW IN 1.0.5 ? + + See the CHANGES file. + +WHAT'S NEW IN 1.0.6 ? + + See the CHANGES file. + + +I hope you find bzip2 useful. Feel free to contact me at + jseward@bzip.org +if you have any suggestions or queries. Many people mailed me with +comments, suggestions and patches after the releases of bzip-0.15, +bzip-0.21, and bzip2 versions 0.1pl2, 0.9.0, 0.9.5, 1.0.0, 1.0.1, +1.0.2 and 1.0.3, and the changes in bzip2 are largely a result of this +feedback. I thank you for your comments. + +bzip2's "home" is http://www.bzip.org/ + +Julian Seward +jseward@bzip.org +Cambridge, UK. + +18 July 1996 (version 0.15) +25 August 1996 (version 0.21) + 7 August 1997 (bzip2, version 0.1) +29 August 1997 (bzip2, version 0.1pl2) +23 August 1998 (bzip2, version 0.9.0) + 8 June 1999 (bzip2, version 0.9.5) + 4 Sept 1999 (bzip2, version 0.9.5d) + 5 May 2000 (bzip2, version 1.0pre8) +30 December 2001 (bzip2, version 1.0.2pre1) +15 February 2005 (bzip2, version 1.0.3) +20 December 2006 (bzip2, version 1.0.4) +10 December 2007 (bzip2, version 1.0.5) + 6 Sept 2010 (bzip2, version 1.0.6) diff --git a/plugins/Updater/bzip2-1.0.3/README.COMPILATION.PROBLEMS b/plugins/Updater/bzip2-1.0.3/README.COMPILATION.PROBLEMS new file mode 100644 index 0000000000..667d0d6dfe --- /dev/null +++ b/plugins/Updater/bzip2-1.0.3/README.COMPILATION.PROBLEMS @@ -0,0 +1,58 @@ +------------------------------------------------------------------ +This file is part of bzip2/libbzip2, a program and library for +lossless, block-sorting data compression. + +bzip2/libbzip2 version 1.0.6 of 6 September 2010 +Copyright (C) 1996-2010 Julian Seward + +Please read the WARNING, DISCLAIMER and PATENTS sections in the +README file. + +This program is released under the terms of the license contained +in the file LICENSE. +------------------------------------------------------------------ + +bzip2-1.0.6 should compile without problems on the vast majority of +platforms. Using the supplied Makefile, I've built and tested it +myself for x86-linux and amd64-linux. With makefile.msc, Visual C++ +6.0 and nmake, you can build a native Win32 version too. Large file +support seems to work correctly on at least on amd64-linux. + +When I say "large file" I mean a file of size 2,147,483,648 (2^31) +bytes or above. Many older OSs can't handle files above this size, +but many newer ones can. Large files are pretty huge -- most files +you'll encounter are not Large Files. + +Early versions of bzip2 (0.1, 0.9.0, 0.9.5) compiled on a wide variety +of platforms without difficulty, and I hope this version will continue +in that tradition. However, in order to support large files, I've had +to include the define -D_FILE_OFFSET_BITS=64 in the Makefile. This +can cause problems. + +The technique of adding -D_FILE_OFFSET_BITS=64 to get large file +support is, as far as I know, the Recommended Way to get correct large +file support. For more details, see the Large File Support +Specification, published by the Large File Summit, at + + http://ftp.sas.com/standards/large.file + +As a general comment, if you get compilation errors which you think +are related to large file support, try removing the above define from +the Makefile, ie, delete the line + + BIGFILES=-D_FILE_OFFSET_BITS=64 + +from the Makefile, and do 'make clean ; make'. This will give you a +version of bzip2 without large file support, which, for most +applications, is probably not a problem. + +Alternatively, try some of the platform-specific hints listed below. + +You can use the spewG.c program to generate huge files to test bzip2's +large file support, if you are feeling paranoid. Be aware though that +any compilation problems which affect bzip2 will also affect spewG.c, +alas. + +AIX: I have reports that for large file support, you need to specify +-D_LARGE_FILES rather than -D_FILE_OFFSET_BITS=64. I have not tested +this myself. diff --git a/plugins/Updater/bzip2-1.0.3/README.XML.STUFF b/plugins/Updater/bzip2-1.0.3/README.XML.STUFF new file mode 100644 index 0000000000..3a57f3fa89 --- /dev/null +++ b/plugins/Updater/bzip2-1.0.3/README.XML.STUFF @@ -0,0 +1,45 @@ + ---------------------------------------------------------------- + This file is part of bzip2/libbzip2, a program and library for + lossless, block-sorting data compression. + + bzip2/libbzip2 version 1.0.6 of 6 September 2010 + Copyright (C) 1996-2010 Julian Seward + + Please read the WARNING, DISCLAIMER and PATENTS sections in the + README file. + + This program is released under the terms of the license contained + in the file LICENSE. + ---------------------------------------------------------------- + +The script xmlproc.sh takes an xml file as input, +and processes it to create .pdf, .html or .ps output. +It uses format.pl, a perl script to format
 blocks nicely,
+ and add CDATA tags so writers do not have to use eg. < 
+
+The file "entities.xml" must be edited to reflect current
+version, year, etc.
+
+
+Usage:
+
+  ./xmlproc.sh -v manual.xml
+  Validates an xml file to ensure no dtd-compliance errors
+
+  ./xmlproc.sh -html manual.xml
+  Output: manual.html
+
+  ./xmlproc.sh -pdf manual.xml
+  Output: manual.pdf
+
+  ./xmlproc.sh -ps manual.xml
+  Output: manual.ps
+
+
+Notum bene: 
+- pdfxmltex barfs if given a filename with an underscore in it
+
+- xmltex won't work yet - there's a bug in passivetex
+    which we are all waiting for Sebastian to fix.
+  So we are going the xml -> pdf -> ps route for the time being,
+    using pdfxmltex.
diff --git a/plugins/Updater/bzip2-1.0.3/Y2K_INFO b/plugins/Updater/bzip2-1.0.3/Y2K_INFO
new file mode 100644
index 0000000000..55fd56a2ed
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/Y2K_INFO
@@ -0,0 +1,34 @@
+
+Y2K status of bzip2 and libbzip2, versions 0.1, 0.9.0 and 0.9.5
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Informally speaking:
+   bzip2 is a compression program built on top of libbzip2, 
+   a library which does the real work of compression and 
+   decompression.  As far as I am aware, libbzip2 does not have 
+   any date-related code at all.
+
+   bzip2 itself copies dates from source to destination files 
+   when compressing or decompressing, using the 'stat' and 'utime' 
+   UNIX system calls.  It doesn't examine, manipulate or store the 
+   dates in any way.  So as far as I can see, there shouldn't be any 
+   problem with bzip2 providing 'stat' and 'utime' work correctly 
+   on your system.
+
+   On non-unix platforms (those for which BZ_UNIX in bzip2.c is
+   not set to 1), bzip2 doesn't even do the date copying.
+
+   Overall, informally speaking, I don't think bzip2 or libbzip2 
+   have a Y2K problem.
+
+Formally speaking:
+   I am not prepared to offer you any assurance whatsoever 
+   regarding Y2K issues in my software.  You alone assume the 
+   entire risk of using the software.  The disclaimer of liability 
+   in the LICENSE file in the bzip2 source distribution continues 
+   to apply on this issue as with every other issue pertaining 
+   to the software.
+
+Julian Seward
+Cambridge, UK
+25 August 1999
diff --git a/plugins/Updater/bzip2-1.0.3/blocksort.c b/plugins/Updater/bzip2-1.0.3/blocksort.c
new file mode 100644
index 0000000000..d0d662cd4e
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/blocksort.c
@@ -0,0 +1,1094 @@
+
+/*-------------------------------------------------------------*/
+/*--- Block sorting machinery                               ---*/
+/*---                                           blocksort.c ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+   This file is part of bzip2/libbzip2, a program and library for
+   lossless, block-sorting data compression.
+
+   bzip2/libbzip2 version 1.0.6 of 6 September 2010
+   Copyright (C) 1996-2010 Julian Seward 
+
+   Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+   README file.
+
+   This program is released under the terms of the license contained
+   in the file LICENSE.
+   ------------------------------------------------------------------ */
+
+
+#include "bzlib_private.h"
+
+/*---------------------------------------------*/
+/*--- Fallback O(N log(N)^2) sorting        ---*/
+/*--- algorithm, for repetitive blocks      ---*/
+/*---------------------------------------------*/
+
+/*---------------------------------------------*/
+static 
+__inline__
+void fallbackSimpleSort ( UInt32* fmap, 
+                          UInt32* eclass, 
+                          Int32   lo, 
+                          Int32   hi )
+{
+   Int32 i, j, tmp;
+   UInt32 ec_tmp;
+
+   if (lo == hi) return;
+
+   if (hi - lo > 3) {
+      for ( i = hi-4; i >= lo; i-- ) {
+         tmp = fmap[i];
+         ec_tmp = eclass[tmp];
+         for ( j = i+4; j <= hi && ec_tmp > eclass[fmap[j]]; j += 4 )
+            fmap[j-4] = fmap[j];
+         fmap[j-4] = tmp;
+      }
+   }
+
+   for ( i = hi-1; i >= lo; i-- ) {
+      tmp = fmap[i];
+      ec_tmp = eclass[tmp];
+      for ( j = i+1; j <= hi && ec_tmp > eclass[fmap[j]]; j++ )
+         fmap[j-1] = fmap[j];
+      fmap[j-1] = tmp;
+   }
+}
+
+
+/*---------------------------------------------*/
+#define fswap(zz1, zz2) \
+   { Int32 zztmp = zz1; zz1 = zz2; zz2 = zztmp; }
+
+#define fvswap(zzp1, zzp2, zzn)       \
+{                                     \
+   Int32 yyp1 = (zzp1);               \
+   Int32 yyp2 = (zzp2);               \
+   Int32 yyn  = (zzn);                \
+   while (yyn > 0) {                  \
+      fswap(fmap[yyp1], fmap[yyp2]);  \
+      yyp1++; yyp2++; yyn--;          \
+   }                                  \
+}
+
+
+#define fmin(a,b) ((a) < (b)) ? (a) : (b)
+
+#define fpush(lz,hz) { stackLo[sp] = lz; \
+                       stackHi[sp] = hz; \
+                       sp++; }
+
+#define fpop(lz,hz) { sp--;              \
+                      lz = stackLo[sp];  \
+                      hz = stackHi[sp]; }
+
+#define FALLBACK_QSORT_SMALL_THRESH 10
+#define FALLBACK_QSORT_STACK_SIZE   100
+
+
+static
+void fallbackQSort3 ( UInt32* fmap, 
+                      UInt32* eclass,
+                      Int32   loSt, 
+                      Int32   hiSt )
+{
+   Int32 unLo, unHi, ltLo, gtHi, n, m;
+   Int32 sp, lo, hi;
+   UInt32 med, r, r3;
+   Int32 stackLo[FALLBACK_QSORT_STACK_SIZE];
+   Int32 stackHi[FALLBACK_QSORT_STACK_SIZE];
+
+   r = 0;
+
+   sp = 0;
+   fpush ( loSt, hiSt );
+
+   while (sp > 0) {
+
+      AssertH ( sp < FALLBACK_QSORT_STACK_SIZE - 1, 1004 );
+
+      fpop ( lo, hi );
+      if (hi - lo < FALLBACK_QSORT_SMALL_THRESH) {
+         fallbackSimpleSort ( fmap, eclass, lo, hi );
+         continue;
+      }
+
+      /* Random partitioning.  Median of 3 sometimes fails to
+         avoid bad cases.  Median of 9 seems to help but 
+         looks rather expensive.  This too seems to work but
+         is cheaper.  Guidance for the magic constants 
+         7621 and 32768 is taken from Sedgewick's algorithms
+         book, chapter 35.
+      */
+      r = ((r * 7621) + 1) % 32768;
+      r3 = r % 3;
+      if (r3 == 0) med = eclass[fmap[lo]]; else
+      if (r3 == 1) med = eclass[fmap[(lo+hi)>>1]]; else
+                   med = eclass[fmap[hi]];
+
+      unLo = ltLo = lo;
+      unHi = gtHi = hi;
+
+      while (1) {
+         while (1) {
+            if (unLo > unHi) break;
+            n = (Int32)eclass[fmap[unLo]] - (Int32)med;
+            if (n == 0) { 
+               fswap(fmap[unLo], fmap[ltLo]); 
+               ltLo++; unLo++; 
+               continue; 
+            };
+            if (n > 0) break;
+            unLo++;
+         }
+         while (1) {
+            if (unLo > unHi) break;
+            n = (Int32)eclass[fmap[unHi]] - (Int32)med;
+            if (n == 0) { 
+               fswap(fmap[unHi], fmap[gtHi]); 
+               gtHi--; unHi--; 
+               continue; 
+            };
+            if (n < 0) break;
+            unHi--;
+         }
+         if (unLo > unHi) break;
+         fswap(fmap[unLo], fmap[unHi]); unLo++; unHi--;
+      }
+
+      AssertD ( unHi == unLo-1, "fallbackQSort3(2)" );
+
+      if (gtHi < ltLo) continue;
+
+      n = fmin(ltLo-lo, unLo-ltLo); fvswap(lo, unLo-n, n);
+      m = fmin(hi-gtHi, gtHi-unHi); fvswap(unLo, hi-m+1, m);
+
+      n = lo + unLo - ltLo - 1;
+      m = hi - (gtHi - unHi) + 1;
+
+      if (n - lo > hi - m) {
+         fpush ( lo, n );
+         fpush ( m, hi );
+      } else {
+         fpush ( m, hi );
+         fpush ( lo, n );
+      }
+   }
+}
+
+#undef fmin
+#undef fpush
+#undef fpop
+#undef fswap
+#undef fvswap
+#undef FALLBACK_QSORT_SMALL_THRESH
+#undef FALLBACK_QSORT_STACK_SIZE
+
+
+/*---------------------------------------------*/
+/* Pre:
+      nblock > 0
+      eclass exists for [0 .. nblock-1]
+      ((UChar*)eclass) [0 .. nblock-1] holds block
+      ptr exists for [0 .. nblock-1]
+
+   Post:
+      ((UChar*)eclass) [0 .. nblock-1] holds block
+      All other areas of eclass destroyed
+      fmap [0 .. nblock-1] holds sorted order
+      bhtab [ 0 .. 2+(nblock/32) ] destroyed
+*/
+
+#define       SET_BH(zz)  bhtab[(zz) >> 5] |= (1 << ((zz) & 31))
+#define     CLEAR_BH(zz)  bhtab[(zz) >> 5] &= ~(1 << ((zz) & 31))
+#define     ISSET_BH(zz)  (bhtab[(zz) >> 5] & (1 << ((zz) & 31)))
+#define      WORD_BH(zz)  bhtab[(zz) >> 5]
+#define UNALIGNED_BH(zz)  ((zz) & 0x01f)
+
+static
+void fallbackSort ( UInt32* fmap, 
+                    UInt32* eclass, 
+                    UInt32* bhtab,
+                    Int32   nblock,
+                    Int32   verb )
+{
+   Int32 ftab[257];
+   Int32 ftabCopy[256];
+   Int32 H, i, j, k, l, r, cc, cc1;
+   Int32 nNotDone;
+   Int32 nBhtab;
+   UChar* eclass8 = (UChar*)eclass;
+
+   /*--
+      Initial 1-char radix sort to generate
+      initial fmap and initial BH bits.
+   --*/
+   if (verb >= 4)
+      VPrintf0 ( "        bucket sorting ...\n" );
+   for (i = 0; i < 257;    i++) ftab[i] = 0;
+   for (i = 0; i < nblock; i++) ftab[eclass8[i]]++;
+   for (i = 0; i < 256;    i++) ftabCopy[i] = ftab[i];
+   for (i = 1; i < 257;    i++) ftab[i] += ftab[i-1];
+
+   for (i = 0; i < nblock; i++) {
+      j = eclass8[i];
+      k = ftab[j] - 1;
+      ftab[j] = k;
+      fmap[k] = i;
+   }
+
+   nBhtab = 2 + (nblock / 32);
+   for (i = 0; i < nBhtab; i++) bhtab[i] = 0;
+   for (i = 0; i < 256; i++) SET_BH(ftab[i]);
+
+   /*--
+      Inductively refine the buckets.  Kind-of an
+      "exponential radix sort" (!), inspired by the
+      Manber-Myers suffix array construction algorithm.
+   --*/
+
+   /*-- set sentinel bits for block-end detection --*/
+   for (i = 0; i < 32; i++) { 
+      SET_BH(nblock + 2*i);
+      CLEAR_BH(nblock + 2*i + 1);
+   }
+
+   /*-- the log(N) loop --*/
+   H = 1;
+   while (1) {
+
+      if (verb >= 4) 
+         VPrintf1 ( "        depth %6d has ", H );
+
+      j = 0;
+      for (i = 0; i < nblock; i++) {
+         if (ISSET_BH(i)) j = i;
+         k = fmap[i] - H; if (k < 0) k += nblock;
+         eclass[k] = j;
+      }
+
+      nNotDone = 0;
+      r = -1;
+      while (1) {
+
+	 /*-- find the next non-singleton bucket --*/
+         k = r + 1;
+         while (ISSET_BH(k) && UNALIGNED_BH(k)) k++;
+         if (ISSET_BH(k)) {
+            while (WORD_BH(k) == 0xffffffff) k += 32;
+            while (ISSET_BH(k)) k++;
+         }
+         l = k - 1;
+         if (l >= nblock) break;
+         while (!ISSET_BH(k) && UNALIGNED_BH(k)) k++;
+         if (!ISSET_BH(k)) {
+            while (WORD_BH(k) == 0x00000000) k += 32;
+            while (!ISSET_BH(k)) k++;
+         }
+         r = k - 1;
+         if (r >= nblock) break;
+
+         /*-- now [l, r] bracket current bucket --*/
+         if (r > l) {
+            nNotDone += (r - l + 1);
+            fallbackQSort3 ( fmap, eclass, l, r );
+
+            /*-- scan bucket and generate header bits-- */
+            cc = -1;
+            for (i = l; i <= r; i++) {
+               cc1 = eclass[fmap[i]];
+               if (cc != cc1) { SET_BH(i); cc = cc1; };
+            }
+         }
+      }
+
+      if (verb >= 4) 
+         VPrintf1 ( "%6d unresolved strings\n", nNotDone );
+
+      H *= 2;
+      if (H > nblock || nNotDone == 0) break;
+   }
+
+   /*-- 
+      Reconstruct the original block in
+      eclass8 [0 .. nblock-1], since the
+      previous phase destroyed it.
+   --*/
+   if (verb >= 4)
+      VPrintf0 ( "        reconstructing block ...\n" );
+   j = 0;
+   for (i = 0; i < nblock; i++) {
+      while (ftabCopy[j] == 0) j++;
+      ftabCopy[j]--;
+      eclass8[fmap[i]] = (UChar)j;
+   }
+   AssertH ( j < 256, 1005 );
+}
+
+#undef       SET_BH
+#undef     CLEAR_BH
+#undef     ISSET_BH
+#undef      WORD_BH
+#undef UNALIGNED_BH
+
+
+/*---------------------------------------------*/
+/*--- The main, O(N^2 log(N)) sorting       ---*/
+/*--- algorithm.  Faster for "normal"       ---*/
+/*--- non-repetitive blocks.                ---*/
+/*---------------------------------------------*/
+
+/*---------------------------------------------*/
+static
+__inline__
+Bool mainGtU ( UInt32  i1, 
+               UInt32  i2,
+               UChar*  block, 
+               UInt16* quadrant,
+               UInt32  nblock,
+               Int32*  budget )
+{
+   Int32  k;
+   UChar  c1, c2;
+   UInt16 s1, s2;
+
+   AssertD ( i1 != i2, "mainGtU" );
+   /* 1 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 2 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 3 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 4 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 5 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 6 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 7 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 8 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 9 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 10 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 11 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 12 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+
+   k = nblock + 8;
+
+   do {
+      /* 1 */
+      c1 = block[i1]; c2 = block[i2];
+      if (c1 != c2) return (c1 > c2);
+      s1 = quadrant[i1]; s2 = quadrant[i2];
+      if (s1 != s2) return (s1 > s2);
+      i1++; i2++;
+      /* 2 */
+      c1 = block[i1]; c2 = block[i2];
+      if (c1 != c2) return (c1 > c2);
+      s1 = quadrant[i1]; s2 = quadrant[i2];
+      if (s1 != s2) return (s1 > s2);
+      i1++; i2++;
+      /* 3 */
+      c1 = block[i1]; c2 = block[i2];
+      if (c1 != c2) return (c1 > c2);
+      s1 = quadrant[i1]; s2 = quadrant[i2];
+      if (s1 != s2) return (s1 > s2);
+      i1++; i2++;
+      /* 4 */
+      c1 = block[i1]; c2 = block[i2];
+      if (c1 != c2) return (c1 > c2);
+      s1 = quadrant[i1]; s2 = quadrant[i2];
+      if (s1 != s2) return (s1 > s2);
+      i1++; i2++;
+      /* 5 */
+      c1 = block[i1]; c2 = block[i2];
+      if (c1 != c2) return (c1 > c2);
+      s1 = quadrant[i1]; s2 = quadrant[i2];
+      if (s1 != s2) return (s1 > s2);
+      i1++; i2++;
+      /* 6 */
+      c1 = block[i1]; c2 = block[i2];
+      if (c1 != c2) return (c1 > c2);
+      s1 = quadrant[i1]; s2 = quadrant[i2];
+      if (s1 != s2) return (s1 > s2);
+      i1++; i2++;
+      /* 7 */
+      c1 = block[i1]; c2 = block[i2];
+      if (c1 != c2) return (c1 > c2);
+      s1 = quadrant[i1]; s2 = quadrant[i2];
+      if (s1 != s2) return (s1 > s2);
+      i1++; i2++;
+      /* 8 */
+      c1 = block[i1]; c2 = block[i2];
+      if (c1 != c2) return (c1 > c2);
+      s1 = quadrant[i1]; s2 = quadrant[i2];
+      if (s1 != s2) return (s1 > s2);
+      i1++; i2++;
+
+      if (i1 >= nblock) i1 -= nblock;
+      if (i2 >= nblock) i2 -= nblock;
+
+      k -= 8;
+      (*budget)--;
+   }
+      while (k >= 0);
+
+   return False;
+}
+
+
+/*---------------------------------------------*/
+/*--
+   Knuth's increments seem to work better
+   than Incerpi-Sedgewick here.  Possibly
+   because the number of elems to sort is
+   usually small, typically <= 20.
+--*/
+static
+Int32 incs[14] = { 1, 4, 13, 40, 121, 364, 1093, 3280,
+                   9841, 29524, 88573, 265720,
+                   797161, 2391484 };
+
+static
+void mainSimpleSort ( UInt32* ptr,
+                      UChar*  block,
+                      UInt16* quadrant,
+                      Int32   nblock,
+                      Int32   lo, 
+                      Int32   hi, 
+                      Int32   d,
+                      Int32*  budget )
+{
+   Int32 i, j, h, bigN, hp;
+   UInt32 v;
+
+   bigN = hi - lo + 1;
+   if (bigN < 2) return;
+
+   hp = 0;
+   while (incs[hp] < bigN) hp++;
+   hp--;
+
+   for (; hp >= 0; hp--) {
+      h = incs[hp];
+
+      i = lo + h;
+      while (True) {
+
+         /*-- copy 1 --*/
+         if (i > hi) break;
+         v = ptr[i];
+         j = i;
+         while ( mainGtU ( 
+                    ptr[j-h]+d, v+d, block, quadrant, nblock, budget 
+                 ) ) {
+            ptr[j] = ptr[j-h];
+            j = j - h;
+            if (j <= (lo + h - 1)) break;
+         }
+         ptr[j] = v;
+         i++;
+
+         /*-- copy 2 --*/
+         if (i > hi) break;
+         v = ptr[i];
+         j = i;
+         while ( mainGtU ( 
+                    ptr[j-h]+d, v+d, block, quadrant, nblock, budget 
+                 ) ) {
+            ptr[j] = ptr[j-h];
+            j = j - h;
+            if (j <= (lo + h - 1)) break;
+         }
+         ptr[j] = v;
+         i++;
+
+         /*-- copy 3 --*/
+         if (i > hi) break;
+         v = ptr[i];
+         j = i;
+         while ( mainGtU ( 
+                    ptr[j-h]+d, v+d, block, quadrant, nblock, budget 
+                 ) ) {
+            ptr[j] = ptr[j-h];
+            j = j - h;
+            if (j <= (lo + h - 1)) break;
+         }
+         ptr[j] = v;
+         i++;
+
+         if (*budget < 0) return;
+      }
+   }
+}
+
+
+/*---------------------------------------------*/
+/*--
+   The following is an implementation of
+   an elegant 3-way quicksort for strings,
+   described in a paper "Fast Algorithms for
+   Sorting and Searching Strings", by Robert
+   Sedgewick and Jon L. Bentley.
+--*/
+
+#define mswap(zz1, zz2) \
+   { Int32 zztmp = zz1; zz1 = zz2; zz2 = zztmp; }
+
+#define mvswap(zzp1, zzp2, zzn)       \
+{                                     \
+   Int32 yyp1 = (zzp1);               \
+   Int32 yyp2 = (zzp2);               \
+   Int32 yyn  = (zzn);                \
+   while (yyn > 0) {                  \
+      mswap(ptr[yyp1], ptr[yyp2]);    \
+      yyp1++; yyp2++; yyn--;          \
+   }                                  \
+}
+
+static 
+__inline__
+UChar mmed3 ( UChar a, UChar b, UChar c )
+{
+   UChar t;
+   if (a > b) { t = a; a = b; b = t; };
+   if (b > c) { 
+      b = c;
+      if (a > b) b = a;
+   }
+   return b;
+}
+
+#define mmin(a,b) ((a) < (b)) ? (a) : (b)
+
+#define mpush(lz,hz,dz) { stackLo[sp] = lz; \
+                          stackHi[sp] = hz; \
+                          stackD [sp] = dz; \
+                          sp++; }
+
+#define mpop(lz,hz,dz) { sp--;             \
+                         lz = stackLo[sp]; \
+                         hz = stackHi[sp]; \
+                         dz = stackD [sp]; }
+
+
+#define mnextsize(az) (nextHi[az]-nextLo[az])
+
+#define mnextswap(az,bz)                                        \
+   { Int32 tz;                                                  \
+     tz = nextLo[az]; nextLo[az] = nextLo[bz]; nextLo[bz] = tz; \
+     tz = nextHi[az]; nextHi[az] = nextHi[bz]; nextHi[bz] = tz; \
+     tz = nextD [az]; nextD [az] = nextD [bz]; nextD [bz] = tz; }
+
+
+#define MAIN_QSORT_SMALL_THRESH 20
+#define MAIN_QSORT_DEPTH_THRESH (BZ_N_RADIX + BZ_N_QSORT)
+#define MAIN_QSORT_STACK_SIZE 100
+
+static
+void mainQSort3 ( UInt32* ptr,
+                  UChar*  block,
+                  UInt16* quadrant,
+                  Int32   nblock,
+                  Int32   loSt, 
+                  Int32   hiSt, 
+                  Int32   dSt,
+                  Int32*  budget )
+{
+   Int32 unLo, unHi, ltLo, gtHi, n, m, med;
+   Int32 sp, lo, hi, d;
+
+   Int32 stackLo[MAIN_QSORT_STACK_SIZE];
+   Int32 stackHi[MAIN_QSORT_STACK_SIZE];
+   Int32 stackD [MAIN_QSORT_STACK_SIZE];
+
+   Int32 nextLo[3];
+   Int32 nextHi[3];
+   Int32 nextD [3];
+
+   sp = 0;
+   mpush ( loSt, hiSt, dSt );
+
+   while (sp > 0) {
+
+      AssertH ( sp < MAIN_QSORT_STACK_SIZE - 2, 1001 );
+
+      mpop ( lo, hi, d );
+      if (hi - lo < MAIN_QSORT_SMALL_THRESH || 
+          d > MAIN_QSORT_DEPTH_THRESH) {
+         mainSimpleSort ( ptr, block, quadrant, nblock, lo, hi, d, budget );
+         if (*budget < 0) return;
+         continue;
+      }
+
+      med = (Int32) 
+            mmed3 ( block[ptr[ lo         ]+d],
+                    block[ptr[ hi         ]+d],
+                    block[ptr[ (lo+hi)>>1 ]+d] );
+
+      unLo = ltLo = lo;
+      unHi = gtHi = hi;
+
+      while (True) {
+         while (True) {
+            if (unLo > unHi) break;
+            n = ((Int32)block[ptr[unLo]+d]) - med;
+            if (n == 0) { 
+               mswap(ptr[unLo], ptr[ltLo]); 
+               ltLo++; unLo++; continue; 
+            };
+            if (n >  0) break;
+            unLo++;
+         }
+         while (True) {
+            if (unLo > unHi) break;
+            n = ((Int32)block[ptr[unHi]+d]) - med;
+            if (n == 0) { 
+               mswap(ptr[unHi], ptr[gtHi]); 
+               gtHi--; unHi--; continue; 
+            };
+            if (n <  0) break;
+            unHi--;
+         }
+         if (unLo > unHi) break;
+         mswap(ptr[unLo], ptr[unHi]); unLo++; unHi--;
+      }
+
+      AssertD ( unHi == unLo-1, "mainQSort3(2)" );
+
+      if (gtHi < ltLo) {
+         mpush(lo, hi, d+1 );
+         continue;
+      }
+
+      n = mmin(ltLo-lo, unLo-ltLo); mvswap(lo, unLo-n, n);
+      m = mmin(hi-gtHi, gtHi-unHi); mvswap(unLo, hi-m+1, m);
+
+      n = lo + unLo - ltLo - 1;
+      m = hi - (gtHi - unHi) + 1;
+
+      nextLo[0] = lo;  nextHi[0] = n;   nextD[0] = d;
+      nextLo[1] = m;   nextHi[1] = hi;  nextD[1] = d;
+      nextLo[2] = n+1; nextHi[2] = m-1; nextD[2] = d+1;
+
+      if (mnextsize(0) < mnextsize(1)) mnextswap(0,1);
+      if (mnextsize(1) < mnextsize(2)) mnextswap(1,2);
+      if (mnextsize(0) < mnextsize(1)) mnextswap(0,1);
+
+      AssertD (mnextsize(0) >= mnextsize(1), "mainQSort3(8)" );
+      AssertD (mnextsize(1) >= mnextsize(2), "mainQSort3(9)" );
+
+      mpush (nextLo[0], nextHi[0], nextD[0]);
+      mpush (nextLo[1], nextHi[1], nextD[1]);
+      mpush (nextLo[2], nextHi[2], nextD[2]);
+   }
+}
+
+#undef mswap
+#undef mvswap
+#undef mpush
+#undef mpop
+#undef mmin
+#undef mnextsize
+#undef mnextswap
+#undef MAIN_QSORT_SMALL_THRESH
+#undef MAIN_QSORT_DEPTH_THRESH
+#undef MAIN_QSORT_STACK_SIZE
+
+
+/*---------------------------------------------*/
+/* Pre:
+      nblock > N_OVERSHOOT
+      block32 exists for [0 .. nblock-1 +N_OVERSHOOT]
+      ((UChar*)block32) [0 .. nblock-1] holds block
+      ptr exists for [0 .. nblock-1]
+
+   Post:
+      ((UChar*)block32) [0 .. nblock-1] holds block
+      All other areas of block32 destroyed
+      ftab [0 .. 65536 ] destroyed
+      ptr [0 .. nblock-1] holds sorted order
+      if (*budget < 0), sorting was abandoned
+*/
+
+#define BIGFREQ(b) (ftab[((b)+1) << 8] - ftab[(b) << 8])
+#define SETMASK (1 << 21)
+#define CLEARMASK (~(SETMASK))
+
+static
+void mainSort ( UInt32* ptr, 
+                UChar*  block,
+                UInt16* quadrant, 
+                UInt32* ftab,
+                Int32   nblock,
+                Int32   verb,
+                Int32*  budget )
+{
+   Int32  i, j, k, ss, sb;
+   Int32  runningOrder[256];
+   Bool   bigDone[256];
+   Int32  copyStart[256];
+   Int32  copyEnd  [256];
+   UChar  c1;
+   Int32  numQSorted;
+   UInt16 s;
+   if (verb >= 4) VPrintf0 ( "        main sort initialise ...\n" );
+
+   /*-- set up the 2-byte frequency table --*/
+   for (i = 65536; i >= 0; i--) ftab[i] = 0;
+
+   j = block[0] << 8;
+   i = nblock-1;
+   for (; i >= 3; i -= 4) {
+      quadrant[i] = 0;
+      j = (j >> 8) | ( ((UInt16)block[i]) << 8);
+      ftab[j]++;
+      quadrant[i-1] = 0;
+      j = (j >> 8) | ( ((UInt16)block[i-1]) << 8);
+      ftab[j]++;
+      quadrant[i-2] = 0;
+      j = (j >> 8) | ( ((UInt16)block[i-2]) << 8);
+      ftab[j]++;
+      quadrant[i-3] = 0;
+      j = (j >> 8) | ( ((UInt16)block[i-3]) << 8);
+      ftab[j]++;
+   }
+   for (; i >= 0; i--) {
+      quadrant[i] = 0;
+      j = (j >> 8) | ( ((UInt16)block[i]) << 8);
+      ftab[j]++;
+   }
+
+   /*-- (emphasises close relationship of block & quadrant) --*/
+   for (i = 0; i < BZ_N_OVERSHOOT; i++) {
+      block   [nblock+i] = block[i];
+      quadrant[nblock+i] = 0;
+   }
+
+   if (verb >= 4) VPrintf0 ( "        bucket sorting ...\n" );
+
+   /*-- Complete the initial radix sort --*/
+   for (i = 1; i <= 65536; i++) ftab[i] += ftab[i-1];
+
+   s = block[0] << 8;
+   i = nblock-1;
+   for (; i >= 3; i -= 4) {
+      s = (s >> 8) | (block[i] << 8);
+      j = ftab[s] -1;
+      ftab[s] = j;
+      ptr[j] = i;
+      s = (s >> 8) | (block[i-1] << 8);
+      j = ftab[s] -1;
+      ftab[s] = j;
+      ptr[j] = i-1;
+      s = (s >> 8) | (block[i-2] << 8);
+      j = ftab[s] -1;
+      ftab[s] = j;
+      ptr[j] = i-2;
+      s = (s >> 8) | (block[i-3] << 8);
+      j = ftab[s] -1;
+      ftab[s] = j;
+      ptr[j] = i-3;
+   }
+   for (; i >= 0; i--) {
+      s = (s >> 8) | (block[i] << 8);
+      j = ftab[s] -1;
+      ftab[s] = j;
+      ptr[j] = i;
+   }
+
+   /*--
+      Now ftab contains the first loc of every small bucket.
+      Calculate the running order, from smallest to largest
+      big bucket.
+   --*/
+   for (i = 0; i <= 255; i++) {
+      bigDone     [i] = False;
+      runningOrder[i] = i;
+   }
+
+   {
+      Int32 vv;
+      Int32 h = 1;
+      do h = 3 * h + 1; while (h <= 256);
+      do {
+         h = h / 3;
+         for (i = h; i <= 255; i++) {
+            vv = runningOrder[i];
+            j = i;
+            while ( BIGFREQ(runningOrder[j-h]) > BIGFREQ(vv) ) {
+               runningOrder[j] = runningOrder[j-h];
+               j = j - h;
+               if (j <= (h - 1)) goto zero;
+            }
+            zero:
+            runningOrder[j] = vv;
+         }
+      } while (h != 1);
+   }
+
+   /*--
+      The main sorting loop.
+   --*/
+
+   numQSorted = 0;
+
+   for (i = 0; i <= 255; i++) {
+
+      /*--
+         Process big buckets, starting with the least full.
+         Basically this is a 3-step process in which we call
+         mainQSort3 to sort the small buckets [ss, j], but
+         also make a big effort to avoid the calls if we can.
+      --*/
+      ss = runningOrder[i];
+
+      /*--
+         Step 1:
+         Complete the big bucket [ss] by quicksorting
+         any unsorted small buckets [ss, j], for j != ss.  
+         Hopefully previous pointer-scanning phases have already
+         completed many of the small buckets [ss, j], so
+         we don't have to sort them at all.
+      --*/
+      for (j = 0; j <= 255; j++) {
+         if (j != ss) {
+            sb = (ss << 8) + j;
+            if ( ! (ftab[sb] & SETMASK) ) {
+               Int32 lo = ftab[sb]   & CLEARMASK;
+               Int32 hi = (ftab[sb+1] & CLEARMASK) - 1;
+               if (hi > lo) {
+                  if (verb >= 4)
+                     VPrintf4 ( "        qsort [0x%x, 0x%x]   "
+                                "done %d   this %d\n",
+                                ss, j, numQSorted, hi - lo + 1 );
+                  mainQSort3 ( 
+                     ptr, block, quadrant, nblock, 
+                     lo, hi, BZ_N_RADIX, budget 
+                  );   
+                  numQSorted += (hi - lo + 1);
+                  if (*budget < 0) return;
+               }
+            }
+            ftab[sb] |= SETMASK;
+         }
+      }
+
+      AssertH ( !bigDone[ss], 1006 );
+
+      /*--
+         Step 2:
+         Now scan this big bucket [ss] so as to synthesise the
+         sorted order for small buckets [t, ss] for all t,
+         including, magically, the bucket [ss,ss] too.
+         This will avoid doing Real Work in subsequent Step 1's.
+      --*/
+      {
+         for (j = 0; j <= 255; j++) {
+            copyStart[j] =  ftab[(j << 8) + ss]     & CLEARMASK;
+            copyEnd  [j] = (ftab[(j << 8) + ss + 1] & CLEARMASK) - 1;
+         }
+         for (j = ftab[ss << 8] & CLEARMASK; j < copyStart[ss]; j++) {
+            k = ptr[j]-1; if (k < 0) k += nblock;
+            c1 = block[k];
+            if (!bigDone[c1])
+               ptr[ copyStart[c1]++ ] = k;
+         }
+         for (j = (ftab[(ss+1) << 8] & CLEARMASK) - 1; j > copyEnd[ss]; j--) {
+            k = ptr[j]-1; if (k < 0) k += nblock;
+            c1 = block[k];
+            if (!bigDone[c1]) 
+               ptr[ copyEnd[c1]-- ] = k;
+         }
+      }
+
+      AssertH ( (copyStart[ss]-1 == copyEnd[ss])
+                || 
+                /* Extremely rare case missing in bzip2-1.0.0 and 1.0.1.
+                   Necessity for this case is demonstrated by compressing 
+                   a sequence of approximately 48.5 million of character 
+                   251; 1.0.0/1.0.1 will then die here. */
+                (copyStart[ss] == 0 && copyEnd[ss] == nblock-1),
+                1007 )
+
+      for (j = 0; j <= 255; j++) ftab[(j << 8) + ss] |= SETMASK;
+
+      /*--
+         Step 3:
+         The [ss] big bucket is now done.  Record this fact,
+         and update the quadrant descriptors.  Remember to
+         update quadrants in the overshoot area too, if
+         necessary.  The "if (i < 255)" test merely skips
+         this updating for the last bucket processed, since
+         updating for the last bucket is pointless.
+
+         The quadrant array provides a way to incrementally
+         cache sort orderings, as they appear, so as to 
+         make subsequent comparisons in fullGtU() complete
+         faster.  For repetitive blocks this makes a big
+         difference (but not big enough to be able to avoid
+         the fallback sorting mechanism, exponential radix sort).
+
+         The precise meaning is: at all times:
+
+            for 0 <= i < nblock and 0 <= j <= nblock
+
+            if block[i] != block[j], 
+
+               then the relative values of quadrant[i] and 
+                    quadrant[j] are meaningless.
+
+               else {
+                  if quadrant[i] < quadrant[j]
+                     then the string starting at i lexicographically
+                     precedes the string starting at j
+
+                  else if quadrant[i] > quadrant[j]
+                     then the string starting at j lexicographically
+                     precedes the string starting at i
+
+                  else
+                     the relative ordering of the strings starting
+                     at i and j has not yet been determined.
+               }
+      --*/
+      bigDone[ss] = True;
+
+      if (i < 255) {
+         Int32 bbStart  = ftab[ss << 8] & CLEARMASK;
+         Int32 bbSize   = (ftab[(ss+1) << 8] & CLEARMASK) - bbStart;
+         Int32 shifts   = 0;
+
+         while ((bbSize >> shifts) > 65534) shifts++;
+
+         for (j = bbSize-1; j >= 0; j--) {
+            Int32 a2update     = ptr[bbStart + j];
+            UInt16 qVal        = (UInt16)(j >> shifts);
+            quadrant[a2update] = qVal;
+            if (a2update < BZ_N_OVERSHOOT)
+               quadrant[a2update + nblock] = qVal;
+         }
+         AssertH ( ((bbSize-1) >> shifts) <= 65535, 1002 );
+      }
+
+   }
+
+   if (verb >= 4)
+      VPrintf3 ( "        %d pointers, %d sorted, %d scanned\n",
+                 nblock, numQSorted, nblock - numQSorted );
+}
+
+#undef BIGFREQ
+#undef SETMASK
+#undef CLEARMASK
+
+
+/*---------------------------------------------*/
+/* Pre:
+      nblock > 0
+      arr2 exists for [0 .. nblock-1 +N_OVERSHOOT]
+      ((UChar*)arr2)  [0 .. nblock-1] holds block
+      arr1 exists for [0 .. nblock-1]
+
+   Post:
+      ((UChar*)arr2) [0 .. nblock-1] holds block
+      All other areas of block destroyed
+      ftab [ 0 .. 65536 ] destroyed
+      arr1 [0 .. nblock-1] holds sorted order
+*/
+void BZ2_blockSort ( EState* s )
+{
+   UInt32* ptr    = s->ptr; 
+   UChar*  block  = s->block;
+   UInt32* ftab   = s->ftab;
+   Int32   nblock = s->nblock;
+   Int32   verb   = s->verbosity;
+   Int32   wfact  = s->workFactor;
+   UInt16* quadrant;
+   Int32   budget;
+   Int32   budgetInit;
+   Int32   i;
+
+   if (nblock < 10000) {
+      fallbackSort ( s->arr1, s->arr2, ftab, nblock, verb );
+   } else {
+      /* Calculate the location for quadrant, remembering to get
+         the alignment right.  Assumes that &(block[0]) is at least
+         2-byte aligned -- this should be ok since block is really
+         the first section of arr2.
+      */
+      i = nblock+BZ_N_OVERSHOOT;
+      if (i & 1) i++;
+      quadrant = (UInt16*)(&(block[i]));
+
+      /* (wfact-1) / 3 puts the default-factor-30
+         transition point at very roughly the same place as 
+         with v0.1 and v0.9.0.  
+         Not that it particularly matters any more, since the
+         resulting compressed stream is now the same regardless
+         of whether or not we use the main sort or fallback sort.
+      */
+      if (wfact < 1  ) wfact = 1;
+      if (wfact > 100) wfact = 100;
+      budgetInit = nblock * ((wfact-1) / 3);
+      budget = budgetInit;
+
+      mainSort ( ptr, block, quadrant, ftab, nblock, verb, &budget );
+      if (verb >= 3) 
+         VPrintf3 ( "      %d work, %d block, ratio %5.2f\n",
+                    budgetInit - budget,
+                    nblock, 
+                    (float)(budgetInit - budget) /
+                    (float)(nblock==0 ? 1 : nblock) ); 
+      if (budget < 0) {
+         if (verb >= 2) 
+            VPrintf0 ( "    too repetitive; using fallback"
+                       " sorting algorithm\n" );
+         fallbackSort ( s->arr1, s->arr2, ftab, nblock, verb );
+      }
+   }
+
+   s->origPtr = -1;
+   for (i = 0; i < s->nblock; i++)
+      if (ptr[i] == 0)
+         { s->origPtr = i; break; };
+
+   AssertH( s->origPtr != -1, 1003 );
+}
+
+
+/*-------------------------------------------------------------*/
+/*--- end                                       blocksort.c ---*/
+/*-------------------------------------------------------------*/
diff --git a/plugins/Updater/bzip2-1.0.3/bz-common.xsl b/plugins/Updater/bzip2-1.0.3/bz-common.xsl
new file mode 100644
index 0000000000..66fcd6fe0b
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/bz-common.xsl
@@ -0,0 +1,39 @@
+ 
+
+
+
+ 
+
+
+
+ 
+ 
+   
+    
+      
+     
+  
+
+
+
+
+set       toc,title
+book      toc,title,figure,table,example,equation
+chapter   toc,title
+section   toc
+sect1     toc
+sect2     toc
+sect3     toc
+sect4     nop
+sect5     nop
+qandaset  toc
+qandadiv  nop
+appendix  toc,title
+article/appendix  nop
+article   toc,title
+preface   toc,title
+reference toc,title
+
+
+
diff --git a/plugins/Updater/bzip2-1.0.3/bz-fo.xsl b/plugins/Updater/bzip2-1.0.3/bz-fo.xsl
new file mode 100644
index 0000000000..ba3e30123f
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/bz-fo.xsl
@@ -0,0 +1,276 @@
+ 
+
+
+
+
+
+
+
+
+
+
+
+
+      
+     
+   
+
+
+
+
+ 
+
+
+
+
+
+
+  
+
+
+
+
+  blue
+
+
+
+
+  
+    
+  
+
+
+
+  
+    
+  
+
+
+
+
+  
+  
+  
+    
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+        
+      
+    
+    
+          
+    
+  
+  
+    
+      
+        
+      
+    
+    
+      
+        
+      
+    
+  
+
+
+
+
+  
+  
+  
+    
+      
+        
+      
+    
+    
+          
+    
+  
+  
+    
+      
+        
+      
+    
+    
+      
+        
+      
+    
+  
+
+
+
+
+
+  
+    
+  
+    
+  
+  
+    
+      
+    
+  
+
+
+
+
+
+  
+  
+  
+  
+    
+      0pt
+    
+  
+  
+    
+      
+      
+      
+        
+          
+            baseline
+             
+               
+            
+          
+          
+            baseline
+            
+              
+                
+                
+                
+                
+              
+            
+          
+        
+      
+    
+  
+  
+  
+    
+      
+    
+    
+      
+    
+    
+      
+    
+  
+
+
+
+
+
+  
+  
+  
+  
+    
+      0pt
+    
+  
+  
+    
+      
+        
+        
+        
+      
+      
+      
+      
+        
+          
+            baseline
+            
+               
+            
+          
+          
+            baseline
+            
+              
+                
+                
+                
+                
+              
+            
+          
+        
+      
+    
+  
+  
+  
+    
+      
+    
+    
+      
+    
+    
+      
+    
+  
+
+
+
+
+
+
+  always
+  
+    
+  
+  
+    
+    pt
+  
+  
+    
+    pt
+  
+  false
+
+
+
+
diff --git a/plugins/Updater/bzip2-1.0.3/bz-html.xsl b/plugins/Updater/bzip2-1.0.3/bz-html.xsl
new file mode 100644
index 0000000000..1785fffbc9
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/bz-html.xsl
@@ -0,0 +1,20 @@
+ 
+ ]>
+
+
+
+
+
+
+
+
+
+
+  
+  
+
+
+
diff --git a/plugins/Updater/bzip2-1.0.3/bzdiff b/plugins/Updater/bzip2-1.0.3/bzdiff
new file mode 100644
index 0000000000..6fc38f92d2
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/bzdiff
@@ -0,0 +1,76 @@
+#!/bin/sh
+# sh is buggy on RS/6000 AIX 3.2. Replace above line with #!/bin/ksh
+
+# Bzcmp/diff wrapped for bzip2, 
+# adapted from zdiff by Philippe Troin  for Debian GNU/Linux.
+
+# Bzcmp and bzdiff are used to invoke the cmp or the  diff  pro-
+# gram  on compressed files.  All options specified are passed
+# directly to cmp or diff.  If only 1 file is specified,  then
+# the  files  compared  are file1 and an uncompressed file1.gz.
+# If two files are specified, then they are  uncompressed  (if
+# necessary) and fed to cmp or diff.  The exit status from cmp
+# or diff is preserved.
+
+PATH="/usr/bin:/bin:$PATH"; export PATH
+prog=`echo $0 | sed 's|.*/||'`
+case "$prog" in
+  *cmp) comp=${CMP-cmp}   ;;
+  *)    comp=${DIFF-diff} ;;
+esac
+
+OPTIONS=
+FILES=
+for ARG
+do
+    case "$ARG" in
+    -*)	OPTIONS="$OPTIONS $ARG";;
+     *)	if test -f "$ARG"; then
+            FILES="$FILES $ARG"
+        else
+            echo "${prog}: $ARG not found or not a regular file"
+	    exit 1
+        fi ;;
+    esac
+done
+if test -z "$FILES"; then
+	echo "Usage: $prog [${comp}_options] file [file]"
+	exit 1
+fi
+tmp=`mktemp ${TMPDIR:-/tmp}/bzdiff.XXXXXXXXXX` || {
+      echo 'cannot create a temporary file' >&2
+      exit 1
+}
+set $FILES
+if test $# -eq 1; then
+	FILE=`echo "$1" | sed 's/.bz2$//'`
+	bzip2 -cd "$FILE.bz2" | $comp $OPTIONS - "$FILE"
+	STAT="$?"
+
+elif test $# -eq 2; then
+	case "$1" in
+        *.bz2)
+                case "$2" in
+	        *.bz2)
+			F=`echo "$2" | sed 's|.*/||;s|.bz2$||'`
+                        bzip2 -cdfq "$2" > $tmp
+                        bzip2 -cdfq "$1" | $comp $OPTIONS - $tmp
+                        STAT="$?"
+			/bin/rm -f $tmp;;
+
+                *)      bzip2 -cdfq "$1" | $comp $OPTIONS - "$2"
+                        STAT="$?";;
+                esac;;
+        *)      case "$2" in
+	        *.bz2)
+                        bzip2 -cdfq "$2" | $comp $OPTIONS "$1" -
+                        STAT="$?";;
+                *)      $comp $OPTIONS "$1" "$2"
+                        STAT="$?";;
+                esac;;
+	esac
+        exit "$STAT"
+else
+	echo "Usage: $prog [${comp}_options] file [file]"
+	exit 1
+fi
diff --git a/plugins/Updater/bzip2-1.0.3/bzdiff.1 b/plugins/Updater/bzip2-1.0.3/bzdiff.1
new file mode 100644
index 0000000000..adb7a8e724
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/bzdiff.1
@@ -0,0 +1,47 @@
+\"Shamelessly copied from zmore.1 by Philippe Troin 
+\"for Debian GNU/Linux
+.TH BZDIFF 1
+.SH NAME
+bzcmp, bzdiff \- compare bzip2 compressed files
+.SH SYNOPSIS
+.B bzcmp
+[ cmp_options ] file1
+[ file2 ]
+.br
+.B bzdiff
+[ diff_options ] file1
+[ file2 ]
+.SH DESCRIPTION
+.I  Bzcmp
+and 
+.I bzdiff
+are used to invoke the
+.I cmp
+or the
+.I diff
+program on bzip2 compressed files.  All options specified are passed
+directly to
+.I cmp
+or
+.IR diff "."
+If only 1 file is specified, then the files compared are
+.I file1
+and an uncompressed
+.IR file1 ".bz2."
+If two files are specified, then they are uncompressed if necessary and fed to
+.I cmp
+or
+.IR diff "."
+The exit status from 
+.I cmp
+or
+.I diff
+is preserved.
+.SH "SEE ALSO"
+cmp(1), diff(1), bzmore(1), bzless(1), bzgrep(1), bzip2(1)
+.SH BUGS
+Messages from the
+.I cmp
+or
+.I diff
+programs refer to temporary filenames instead of those specified.
diff --git a/plugins/Updater/bzip2-1.0.3/bzgrep b/plugins/Updater/bzip2-1.0.3/bzgrep
new file mode 100644
index 0000000000..9a04b8337d
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/bzgrep
@@ -0,0 +1,75 @@
+#!/bin/sh
+
+# Bzgrep wrapped for bzip2, 
+# adapted from zgrep by Philippe Troin  for Debian GNU/Linux.
+## zgrep notice:
+## zgrep -- a wrapper around a grep program that decompresses files as needed
+## Adapted from a version sent by Charles Levert 
+
+PATH="/usr/bin:$PATH"; export PATH
+
+prog=`echo $0 | sed 's|.*/||'`
+case "$prog" in
+	*egrep)	grep=${EGREP-egrep}	;;
+	*fgrep)	grep=${FGREP-fgrep}	;;
+	*)	grep=${GREP-grep}	;;
+esac
+pat=""
+while test $# -ne 0; do
+  case "$1" in
+  -e | -f) opt="$opt $1"; shift; pat="$1"
+           if test "$grep" = grep; then  # grep is buggy with -e on SVR4
+             grep=egrep
+           fi;;
+  -A | -B) opt="$opt $1 $2"; shift;;
+  -*)	   opt="$opt $1";;
+   *)      if test -z "$pat"; then
+	     pat="$1"
+	   else
+	     break;
+           fi;;
+  esac
+  shift
+done
+
+if test -z "$pat"; then
+  echo "grep through bzip2 files"
+  echo "usage: $prog [grep_options] pattern [files]"
+  exit 1
+fi
+
+list=0
+silent=0
+op=`echo "$opt" | sed -e 's/ //g' -e 's/-//g'`
+case "$op" in
+  *l*) list=1
+esac
+case "$op" in
+  *h*) silent=1
+esac
+
+if test $# -eq 0; then
+  bzip2 -cdfq | $grep $opt "$pat"
+  exit $?
+fi
+
+res=0
+for i do
+  if test -f "$i"; then :; else if test -f "$i.bz2"; then i="$i.bz2"; fi; fi
+  if test $list -eq 1; then
+    bzip2 -cdfq "$i" | $grep $opt "$pat" 2>&1 > /dev/null && echo $i
+    r=$?
+  elif test $# -eq 1 -o $silent -eq 1; then
+    bzip2 -cdfq "$i" | $grep $opt "$pat"
+    r=$?
+  else
+    j=${i//\\/\\\\}
+    j=${j//|/\\|}
+    j=${j//&/\\&}
+    j=`printf "%s" "$j" | tr '\n' ' '`
+    bzip2 -cdfq "$i" | $grep $opt "$pat" | sed "s|^|${j}:|"
+    r=$?
+  fi
+  test "$r" -ne 0 && res="$r"
+done
+exit $res
diff --git a/plugins/Updater/bzip2-1.0.3/bzgrep.1 b/plugins/Updater/bzip2-1.0.3/bzgrep.1
new file mode 100644
index 0000000000..930af8c7fc
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/bzgrep.1
@@ -0,0 +1,56 @@
+\"Shamelessly copied from zmore.1 by Philippe Troin 
+\"for Debian GNU/Linux
+.TH BZGREP 1
+.SH NAME
+bzgrep, bzfgrep, bzegrep \- search possibly bzip2 compressed files for a regular expression
+.SH SYNOPSIS
+.B bzgrep
+[ grep_options ]
+.BI  [\ -e\ ] " pattern"
+.IR filename ".\|.\|."
+.br
+.B bzegrep
+[ egrep_options ]
+.BI  [\ -e\ ] " pattern"
+.IR filename ".\|.\|."
+.br
+.B bzfgrep
+[ fgrep_options ]
+.BI  [\ -e\ ] " pattern"
+.IR filename ".\|.\|."
+.SH DESCRIPTION
+.IR  Bzgrep
+is used to invoke the
+.I grep
+on bzip2-compressed files. All options specified are passed directly to
+.I grep.
+If no file is specified, then the standard input is decompressed
+if necessary and fed to grep.
+Otherwise the given files are uncompressed if necessary and fed to
+.I grep.
+.PP
+If
+.I bzgrep
+is invoked as
+.I bzegrep
+or
+.I bzfgrep
+then
+.I egrep
+or
+.I fgrep
+is used instead of
+.I grep.
+If the GREP environment variable is set,
+.I bzgrep
+uses it as the
+.I grep
+program to be invoked. For example:
+
+    for sh:  GREP=fgrep  bzgrep string files
+    for csh: (setenv GREP fgrep; bzgrep string files)
+.SH AUTHOR
+Charles Levert (charles@comm.polymtl.ca). Adapted to bzip2 by Philippe
+Troin  for Debian GNU/Linux.
+.SH "SEE ALSO"
+grep(1), egrep(1), fgrep(1), bzdiff(1), bzmore(1), bzless(1), bzip2(1)
diff --git a/plugins/Updater/bzip2-1.0.3/bzip.css b/plugins/Updater/bzip2-1.0.3/bzip.css
new file mode 100644
index 0000000000..43193d8db0
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/bzip.css
@@ -0,0 +1,74 @@
+/* Colours:
+#74240f  dark brown      h1, h2, h3, h4
+#336699  medium blue     links
+#339999  turquoise       link hover colour
+#202020  almost black    general text
+#761596  purple          md5sum text
+#626262  dark gray       pre border
+#eeeeee  very light gray pre background
+#f2f2f9  very light blue nav table background
+#3366cc  medium blue     nav table border
+*/
+
+a, a:link, a:visited, a:active { color: #336699; }
+a:hover { color: #339999; }
+
+body { font: 80%/126% sans-serif; }
+h1, h2, h3, h4 { color: #74240f; }
+
+dt { color: #336699; font-weight: bold }
+dd { 
+ margin-left: 1.5em; 
+ padding-bottom: 0.8em;
+}
+
+/* -- ruler -- */
+div.hr_blue { 
+  height:  3px; 
+  background:#ffffff url("/images/hr_blue.png") repeat-x; }
+div.hr_blue hr { display:none; }
+
+/* release styles */
+#release p { margin-top: 0.4em; }
+#release .md5sum { color: #761596; }
+
+
+/* ------ styles for docs|manuals|howto ------ */
+/* -- lists -- */
+ul  { 
+ margin:     0px 4px 16px 16px;
+ padding:    0px;
+ list-style: url("/images/li-blue.png"); 
+}
+ul li { 
+ margin-bottom: 10px;
+}
+ul ul	{ 
+ list-style-type:  none; 
+ list-style-image: none; 
+ margin-left:      0px; 
+}
+
+/* header / footer nav tables */
+table.nav {
+ border:     solid 1px #3366cc;
+ background: #f2f2f9;
+ background-color: #f2f2f9;
+ margin-bottom: 0.5em;
+}
+/* don't have underlined links in chunked nav menus */
+table.nav a { text-decoration: none; }
+table.nav a:hover { text-decoration: underline; }
+table.nav td { font-size: 85%; }
+
+code, tt, pre { font-size: 120%; }
+code, tt { color: #761596; }
+
+div.literallayout, pre.programlisting, pre.screen {
+ color:      #000000;
+ padding:    0.5em;
+ background: #eeeeee;
+ border:     1px solid #626262;
+ background-color: #eeeeee;
+ margin: 4px 0px 4px 0px; 
+}
diff --git a/plugins/Updater/bzip2-1.0.3/bzip2.1 b/plugins/Updater/bzip2-1.0.3/bzip2.1
new file mode 100644
index 0000000000..ce3a78e6b4
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/bzip2.1
@@ -0,0 +1,454 @@
+.PU
+.TH bzip2 1
+.SH NAME
+bzip2, bunzip2 \- a block-sorting file compressor, v1.0.6
+.br
+bzcat \- decompresses files to stdout
+.br
+bzip2recover \- recovers data from damaged bzip2 files
+
+.SH SYNOPSIS
+.ll +8
+.B bzip2
+.RB [ " \-cdfkqstvzVL123456789 " ]
+[
+.I "filenames \&..."
+]
+.ll -8
+.br
+.B bunzip2
+.RB [ " \-fkvsVL " ]
+[ 
+.I "filenames \&..."
+]
+.br
+.B bzcat
+.RB [ " \-s " ]
+[ 
+.I "filenames \&..."
+]
+.br
+.B bzip2recover
+.I "filename"
+
+.SH DESCRIPTION
+.I bzip2
+compresses files using the Burrows-Wheeler block sorting
+text compression algorithm, and Huffman coding.  Compression is
+generally considerably better than that achieved by more conventional
+LZ77/LZ78-based compressors, and approaches the performance of the PPM
+family of statistical compressors.
+
+The command-line options are deliberately very similar to 
+those of 
+.I GNU gzip, 
+but they are not identical.
+
+.I bzip2
+expects a list of file names to accompany the
+command-line flags.  Each file is replaced by a compressed version of
+itself, with the name "original_name.bz2".  
+Each compressed file
+has the same modification date, permissions, and, when possible,
+ownership as the corresponding original, so that these properties can
+be correctly restored at decompression time.  File name handling is
+naive in the sense that there is no mechanism for preserving original
+file names, permissions, ownerships or dates in filesystems which lack
+these concepts, or have serious file name length restrictions, such as
+MS-DOS.
+
+.I bzip2
+and
+.I bunzip2
+will by default not overwrite existing
+files.  If you want this to happen, specify the \-f flag.
+
+If no file names are specified,
+.I bzip2
+compresses from standard
+input to standard output.  In this case,
+.I bzip2
+will decline to
+write compressed output to a terminal, as this would be entirely
+incomprehensible and therefore pointless.
+
+.I bunzip2
+(or
+.I bzip2 \-d) 
+decompresses all
+specified files.  Files which were not created by 
+.I bzip2
+will be detected and ignored, and a warning issued.  
+.I bzip2
+attempts to guess the filename for the decompressed file 
+from that of the compressed file as follows:
+
+       filename.bz2    becomes   filename
+       filename.bz     becomes   filename
+       filename.tbz2   becomes   filename.tar
+       filename.tbz    becomes   filename.tar
+       anyothername    becomes   anyothername.out
+
+If the file does not end in one of the recognised endings, 
+.I .bz2, 
+.I .bz, 
+.I .tbz2
+or
+.I .tbz, 
+.I bzip2 
+complains that it cannot
+guess the name of the original file, and uses the original name
+with
+.I .out
+appended.
+
+As with compression, supplying no
+filenames causes decompression from 
+standard input to standard output.
+
+.I bunzip2 
+will correctly decompress a file which is the
+concatenation of two or more compressed files.  The result is the
+concatenation of the corresponding uncompressed files.  Integrity
+testing (\-t) 
+of concatenated 
+compressed files is also supported.
+
+You can also compress or decompress files to the standard output by
+giving the \-c flag.  Multiple files may be compressed and
+decompressed like this.  The resulting outputs are fed sequentially to
+stdout.  Compression of multiple files 
+in this manner generates a stream
+containing multiple compressed file representations.  Such a stream
+can be decompressed correctly only by
+.I bzip2 
+version 0.9.0 or
+later.  Earlier versions of
+.I bzip2
+will stop after decompressing
+the first file in the stream.
+
+.I bzcat
+(or
+.I bzip2 -dc) 
+decompresses all specified files to
+the standard output.
+
+.I bzip2
+will read arguments from the environment variables
+.I BZIP2
+and
+.I BZIP,
+in that order, and will process them
+before any arguments read from the command line.  This gives a 
+convenient way to supply default arguments.
+
+Compression is always performed, even if the compressed 
+file is slightly
+larger than the original.  Files of less than about one hundred bytes
+tend to get larger, since the compression mechanism has a constant
+overhead in the region of 50 bytes.  Random data (including the output
+of most file compressors) is coded at about 8.05 bits per byte, giving
+an expansion of around 0.5%.
+
+As a self-check for your protection, 
+.I 
+bzip2
+uses 32-bit CRCs to
+make sure that the decompressed version of a file is identical to the
+original.  This guards against corruption of the compressed data, and
+against undetected bugs in
+.I bzip2
+(hopefully very unlikely).  The
+chances of data corruption going undetected is microscopic, about one
+chance in four billion for each file processed.  Be aware, though, that
+the check occurs upon decompression, so it can only tell you that
+something is wrong.  It can't help you 
+recover the original uncompressed
+data.  You can use 
+.I bzip2recover
+to try to recover data from
+damaged files.
+
+Return values: 0 for a normal exit, 1 for environmental problems (file
+not found, invalid flags, I/O errors, &c), 2 to indicate a corrupt
+compressed file, 3 for an internal consistency error (eg, bug) which
+caused
+.I bzip2
+to panic.
+
+.SH OPTIONS
+.TP
+.B \-c --stdout
+Compress or decompress to standard output.
+.TP
+.B \-d --decompress
+Force decompression.  
+.I bzip2, 
+.I bunzip2 
+and
+.I bzcat 
+are
+really the same program, and the decision about what actions to take is
+done on the basis of which name is used.  This flag overrides that
+mechanism, and forces 
+.I bzip2
+to decompress.
+.TP
+.B \-z --compress
+The complement to \-d: forces compression, regardless of the
+invocation name.
+.TP
+.B \-t --test
+Check integrity of the specified file(s), but don't decompress them.
+This really performs a trial decompression and throws away the result.
+.TP
+.B \-f --force
+Force overwrite of output files.  Normally,
+.I bzip2 
+will not overwrite
+existing output files.  Also forces 
+.I bzip2 
+to break hard links
+to files, which it otherwise wouldn't do.
+
+bzip2 normally declines to decompress files which don't have the
+correct magic header bytes.  If forced (-f), however, it will pass
+such files through unmodified.  This is how GNU gzip behaves.
+.TP
+.B \-k --keep
+Keep (don't delete) input files during compression
+or decompression.
+.TP
+.B \-s --small
+Reduce memory usage, for compression, decompression and testing.  Files
+are decompressed and tested using a modified algorithm which only
+requires 2.5 bytes per block byte.  This means any file can be
+decompressed in 2300k of memory, albeit at about half the normal speed.
+
+During compression, \-s selects a block size of 200k, which limits
+memory use to around the same figure, at the expense of your compression
+ratio.  In short, if your machine is low on memory (8 megabytes or
+less), use \-s for everything.  See MEMORY MANAGEMENT below.
+.TP
+.B \-q --quiet
+Suppress non-essential warning messages.  Messages pertaining to
+I/O errors and other critical events will not be suppressed.
+.TP
+.B \-v --verbose
+Verbose mode -- show the compression ratio for each file processed.
+Further \-v's increase the verbosity level, spewing out lots of
+information which is primarily of interest for diagnostic purposes.
+.TP
+.B \-L --license -V --version
+Display the software version, license terms and conditions.
+.TP
+.B \-1 (or \-\-fast) to \-9 (or \-\-best)
+Set the block size to 100 k, 200 k ..  900 k when compressing.  Has no
+effect when decompressing.  See MEMORY MANAGEMENT below.
+The \-\-fast and \-\-best aliases are primarily for GNU gzip 
+compatibility.  In particular, \-\-fast doesn't make things
+significantly faster.  
+And \-\-best merely selects the default behaviour.
+.TP
+.B \--
+Treats all subsequent arguments as file names, even if they start
+with a dash.  This is so you can handle files with names beginning
+with a dash, for example: bzip2 \-- \-myfilename.
+.TP
+.B \--repetitive-fast --repetitive-best
+These flags are redundant in versions 0.9.5 and above.  They provided
+some coarse control over the behaviour of the sorting algorithm in
+earlier versions, which was sometimes useful.  0.9.5 and above have an
+improved algorithm which renders these flags irrelevant.
+
+.SH MEMORY MANAGEMENT
+.I bzip2 
+compresses large files in blocks.  The block size affects
+both the compression ratio achieved, and the amount of memory needed for
+compression and decompression.  The flags \-1 through \-9
+specify the block size to be 100,000 bytes through 900,000 bytes (the
+default) respectively.  At decompression time, the block size used for
+compression is read from the header of the compressed file, and
+.I bunzip2
+then allocates itself just enough memory to decompress
+the file.  Since block sizes are stored in compressed files, it follows
+that the flags \-1 to \-9 are irrelevant to and so ignored
+during decompression.
+
+Compression and decompression requirements, 
+in bytes, can be estimated as:
+
+       Compression:   400k + ( 8 x block size )
+
+       Decompression: 100k + ( 4 x block size ), or
+                      100k + ( 2.5 x block size )
+
+Larger block sizes give rapidly diminishing marginal returns.  Most of
+the compression comes from the first two or three hundred k of block
+size, a fact worth bearing in mind when using
+.I bzip2
+on small machines.
+It is also important to appreciate that the decompression memory
+requirement is set at compression time by the choice of block size.
+
+For files compressed with the default 900k block size,
+.I bunzip2
+will require about 3700 kbytes to decompress.  To support decompression
+of any file on a 4 megabyte machine, 
+.I bunzip2
+has an option to
+decompress using approximately half this amount of memory, about 2300
+kbytes.  Decompression speed is also halved, so you should use this
+option only where necessary.  The relevant flag is -s.
+
+In general, try and use the largest block size memory constraints allow,
+since that maximises the compression achieved.  Compression and
+decompression speed are virtually unaffected by block size.
+
+Another significant point applies to files which fit in a single block
+-- that means most files you'd encounter using a large block size.  The
+amount of real memory touched is proportional to the size of the file,
+since the file is smaller than a block.  For example, compressing a file
+20,000 bytes long with the flag -9 will cause the compressor to
+allocate around 7600k of memory, but only touch 400k + 20000 * 8 = 560
+kbytes of it.  Similarly, the decompressor will allocate 3700k but only
+touch 100k + 20000 * 4 = 180 kbytes.
+
+Here is a table which summarises the maximum memory usage for different
+block sizes.  Also recorded is the total compressed size for 14 files of
+the Calgary Text Compression Corpus totalling 3,141,622 bytes.  This
+column gives some feel for how compression varies with block size.
+These figures tend to understate the advantage of larger block sizes for
+larger files, since the Corpus is dominated by smaller files.
+
+           Compress   Decompress   Decompress   Corpus
+    Flag     usage      usage       -s usage     Size
+
+     -1      1200k       500k         350k      914704
+     -2      2000k       900k         600k      877703
+     -3      2800k      1300k         850k      860338
+     -4      3600k      1700k        1100k      846899
+     -5      4400k      2100k        1350k      845160
+     -6      5200k      2500k        1600k      838626
+     -7      6100k      2900k        1850k      834096
+     -8      6800k      3300k        2100k      828642
+     -9      7600k      3700k        2350k      828642
+
+.SH RECOVERING DATA FROM DAMAGED FILES
+.I bzip2
+compresses files in blocks, usually 900kbytes long.  Each
+block is handled independently.  If a media or transmission error causes
+a multi-block .bz2
+file to become damaged, it may be possible to
+recover data from the undamaged blocks in the file.
+
+The compressed representation of each block is delimited by a 48-bit
+pattern, which makes it possible to find the block boundaries with
+reasonable certainty.  Each block also carries its own 32-bit CRC, so
+damaged blocks can be distinguished from undamaged ones.
+
+.I bzip2recover
+is a simple program whose purpose is to search for
+blocks in .bz2 files, and write each block out into its own .bz2 
+file.  You can then use
+.I bzip2 
+\-t
+to test the
+integrity of the resulting files, and decompress those which are
+undamaged.
+
+.I bzip2recover
+takes a single argument, the name of the damaged file, 
+and writes a number of files "rec00001file.bz2",
+"rec00002file.bz2", etc, containing the  extracted  blocks.
+The  output  filenames  are  designed  so  that the use of
+wildcards in subsequent processing -- for example,  
+"bzip2 -dc  rec*file.bz2 > recovered_data" -- processes the files in
+the correct order.
+
+.I bzip2recover
+should be of most use dealing with large .bz2
+files,  as  these will contain many blocks.  It is clearly
+futile to use it on damaged single-block  files,  since  a
+damaged  block  cannot  be recovered.  If you wish to minimise 
+any potential data loss through media  or  transmission errors, 
+you might consider compressing with a smaller
+block size.
+
+.SH PERFORMANCE NOTES
+The sorting phase of compression gathers together similar strings in the
+file.  Because of this, files containing very long runs of repeated
+symbols, like "aabaabaabaab ..."  (repeated several hundred times) may
+compress more slowly than normal.  Versions 0.9.5 and above fare much
+better than previous versions in this respect.  The ratio between
+worst-case and average-case compression time is in the region of 10:1.
+For previous versions, this figure was more like 100:1.  You can use the
+\-vvvv option to monitor progress in great detail, if you want.
+
+Decompression speed is unaffected by these phenomena.
+
+.I bzip2
+usually allocates several megabytes of memory to operate
+in, and then charges all over it in a fairly random fashion.  This means
+that performance, both for compressing and decompressing, is largely
+determined by the speed at which your machine can service cache misses.
+Because of this, small changes to the code to reduce the miss rate have
+been observed to give disproportionately large performance improvements.
+I imagine 
+.I bzip2
+will perform best on machines with very large caches.
+
+.SH CAVEATS
+I/O error messages are not as helpful as they could be.
+.I bzip2
+tries hard to detect I/O errors and exit cleanly, but the details of
+what the problem is sometimes seem rather misleading.
+
+This manual page pertains to version 1.0.6 of
+.I bzip2.  
+Compressed data created by this version is entirely forwards and
+backwards compatible with the previous public releases, versions
+0.1pl2, 0.9.0, 0.9.5, 1.0.0, 1.0.1, 1.0.2 and above, but with the following
+exception: 0.9.0 and above can correctly decompress multiple
+concatenated compressed files.  0.1pl2 cannot do this; it will stop
+after decompressing just the first file in the stream.
+
+.I bzip2recover
+versions prior to 1.0.2 used 32-bit integers to represent
+bit positions in compressed files, so they could not handle compressed
+files more than 512 megabytes long.  Versions 1.0.2 and above use
+64-bit ints on some platforms which support them (GNU supported
+targets, and Windows).  To establish whether or not bzip2recover was
+built with such a limitation, run it without arguments.  In any event
+you can build yourself an unlimited version if you can recompile it
+with MaybeUInt64 set to be an unsigned 64-bit integer.
+
+
+
+.SH AUTHOR
+Julian Seward, jsewardbzip.org.
+
+http://www.bzip.org
+
+The ideas embodied in
+.I bzip2
+are due to (at least) the following
+people: Michael Burrows and David Wheeler (for the block sorting
+transformation), David Wheeler (again, for the Huffman coder), Peter
+Fenwick (for the structured coding model in the original
+.I bzip,
+and many refinements), and Alistair Moffat, Radford Neal and Ian Witten
+(for the arithmetic coder in the original
+.I bzip).  
+I am much
+indebted for their help, support and advice.  See the manual in the
+source distribution for pointers to sources of documentation.  Christian
+von Roques encouraged me to look for faster sorting algorithms, so as to
+speed up compression.  Bela Lubkin encouraged me to improve the
+worst-case compression performance.  
+Donna Robinson XMLised the documentation.
+The bz* scripts are derived from those of GNU gzip.
+Many people sent patches, helped
+with portability problems, lent machines, gave advice and were generally
+helpful.
diff --git a/plugins/Updater/bzip2-1.0.3/bzip2.1.preformatted b/plugins/Updater/bzip2-1.0.3/bzip2.1.preformatted
new file mode 100644
index 0000000000..63c33be99e
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/bzip2.1.preformatted
@@ -0,0 +1,399 @@
+bzip2(1)                                                 bzip2(1)
+
+
+
+NNAAMMEE
+       bzip2, bunzip2 − a blockâ€sorting file compressor, v1.0.6
+       bzcat − decompresses files to stdout
+       bzip2recover − recovers data from damaged bzip2 files
+
+
+SSYYNNOOPPSSIISS
+       bbzziipp22 [ −−ccddffkkqqssttvvzzVVLL112233445566778899 ] [ _f_i_l_e_n_a_m_e_s _._._.  ]
+       bbuunnzziipp22 [ −−ffkkvvssVVLL ] [ _f_i_l_e_n_a_m_e_s _._._.  ]
+       bbzzccaatt [ −−ss ] [ _f_i_l_e_n_a_m_e_s _._._.  ]
+       bbzziipp22rreeccoovveerr _f_i_l_e_n_a_m_e
+
+
+DDEESSCCRRIIPPTTIIOONN
+       _b_z_i_p_2  compresses  files  using  the Burrowsâ€Wheeler block
+       sorting text compression algorithm,  and  Huffman  coding.
+       Compression  is  generally  considerably  better than that
+       achieved by more conventional LZ77/LZ78â€based compressors,
+       and  approaches  the performance of the PPM family of sta­
+       tistical compressors.
+
+       The commandâ€line options are deliberately very similar  to
+       those of _G_N_U _g_z_i_p_, but they are not identical.
+
+       _b_z_i_p_2  expects  a list of file names to accompany the com­
+       mandâ€line flags.  Each file is replaced  by  a  compressed
+       version  of  itself,  with  the  name "original_name.bz2".
+       Each compressed file has the same modification date,  per­
+       missions, and, when possible, ownership as the correspond­
+       ing original, so that these properties  can  be  correctly
+       restored  at  decompression  time.   File name handling is
+       naive in the sense that there is no mechanism for preserv­
+       ing  original file names, permissions, ownerships or dates
+       in filesystems which lack these concepts, or have  serious
+       file name length restrictions, such as MSâ€DOS.
+
+       _b_z_i_p_2  and  _b_u_n_z_i_p_2 will by default not overwrite existing
+       files.  If you want this to happen, specify the −f flag.
+
+       If no file names  are  specified,  _b_z_i_p_2  compresses  from
+       standard  input  to  standard output.  In this case, _b_z_i_p_2
+       will decline to write compressed output to a terminal,  as
+       this  would  be  entirely  incomprehensible  and therefore
+       pointless.
+
+       _b_u_n_z_i_p_2 (or _b_z_i_p_2 _−_d_) decompresses  all  specified  files.
+       Files which were not created by _b_z_i_p_2 will be detected and
+       ignored, and a warning issued.  _b_z_i_p_2  attempts  to  guess
+       the  filename  for  the decompressed file from that of the
+       compressed file as follows:
+
+              filename.bz2    becomes   filename
+              filename.bz     becomes   filename
+              filename.tbz2   becomes   filename.tar
+              filename.tbz    becomes   filename.tar
+              anyothername    becomes   anyothername.out
+
+       If the file does not end in one of the recognised endings,
+       _._b_z_2_,  _._b_z_,  _._t_b_z_2 or _._t_b_z_, _b_z_i_p_2 complains that it cannot
+       guess the name of the original file, and uses the original
+       name with _._o_u_t appended.
+
+       As  with compression, supplying no filenames causes decom­
+       pression from standard input to standard output.
+
+       _b_u_n_z_i_p_2 will correctly decompress a file which is the con­
+       catenation of two or more compressed files.  The result is
+       the concatenation of the corresponding uncompressed files.
+       Integrity testing (−t) of concatenated compressed files is
+       also supported.
+
+       You can also compress or decompress files to the  standard
+       output  by giving the −c flag.  Multiple files may be com­
+       pressed and decompressed like this.  The resulting outputs
+       are  fed  sequentially to stdout.  Compression of multiple
+       files in this manner generates a stream containing  multi­
+       ple compressed file representations.  Such a stream can be
+       decompressed correctly only  by  _b_z_i_p_2  version  0.9.0  or
+       later.   Earlier  versions of _b_z_i_p_2 will stop after decom­
+       pressing the first file in the stream.
+
+       _b_z_c_a_t (or _b_z_i_p_2 _â€_d_c_) decompresses all specified  files  to
+       the standard output.
+
+       _b_z_i_p_2  will  read arguments from the environment variables
+       _B_Z_I_P_2 and _B_Z_I_P_, in  that  order,  and  will  process  them
+       before  any  arguments  read  from the command line.  This
+       gives a convenient way to supply default arguments.
+
+       Compression is always performed, even  if  the  compressed
+       file  is slightly larger than the original.  Files of less
+       than about one hundred bytes tend to get larger, since the
+       compression  mechanism  has  a  constant  overhead  in the
+       region of 50 bytes.  Random data (including the output  of
+       most  file  compressors)  is  coded at about 8.05 bits per
+       byte, giving an expansion of around 0.5%.
+
+       As a selfâ€check for your  protection,  _b_z_i_p_2  uses  32â€bit
+       CRCs  to make sure that the decompressed version of a file
+       is identical to the original.  This guards against corrup­
+       tion  of  the compressed data, and against undetected bugs
+       in _b_z_i_p_2 (hopefully very unlikely).  The chances  of  data
+       corruption  going  undetected  is  microscopic,  about one
+       chance in four billion for each file processed.  Be aware,
+       though,  that  the  check occurs upon decompression, so it
+       can only tell you that something is wrong.  It can’t  help
+       you  recover  the original uncompressed data.  You can use
+       _b_z_i_p_2_r_e_c_o_v_e_r to try to recover data from damaged files.
+
+       Return values: 0 for a normal exit,  1  for  environmental
+       problems  (file not found, invalid flags, I/O errors, &c),
+       2 to indicate a corrupt compressed file, 3 for an internal
+       consistency error (eg, bug) which caused _b_z_i_p_2 to panic.
+
+
+OOPPTTIIOONNSS
+       −−cc â€â€â€â€ssttddoouutt
+              Compress or decompress to standard output.
+
+       −−dd â€â€â€â€ddeeccoommpprreessss
+              Force  decompression.  _b_z_i_p_2_, _b_u_n_z_i_p_2 and _b_z_c_a_t are
+              really the same program,  and  the  decision  about
+              what  actions to take is done on the basis of which
+              name is used.  This flag overrides that  mechanism,
+              and forces _b_z_i_p_2 to decompress.
+
+       −−zz â€â€â€â€ccoommpprreessss
+              The   complement   to   −d:   forces   compression,
+              regardless of the invocation name.
+
+       −−tt â€â€â€â€tteesstt
+              Check integrity of the specified file(s), but don’t
+              decompress  them.   This  really  performs  a trial
+              decompression and throws away the result.
+
+       −−ff â€â€â€â€ffoorrccee
+              Force overwrite of output files.   Normally,  _b_z_i_p_2
+              will  not  overwrite  existing  output files.  Also
+              forces _b_z_i_p_2 to break hard links to files, which it
+              otherwise wouldn’t do.
+
+              bzip2  normally  declines to decompress files which
+              don’t have the  correct  magic  header  bytes.   If
+              forced  (â€f),  however,  it  will  pass  such files
+              through unmodified.  This is how GNU gzip  behaves.
+
+       −−kk â€â€â€â€kkeeeepp
+              Keep  (don’t delete) input files during compression
+              or decompression.
+
+       −−ss â€â€â€â€ssmmaallll
+              Reduce memory usage, for compression, decompression
+              and  testing.   Files  are  decompressed and tested
+              using a modified algorithm which only requires  2.5
+              bytes  per  block byte.  This means any file can be
+              decompressed in 2300k of memory,  albeit  at  about
+              half the normal speed.
+
+              During  compression,  −s  selects  a  block size of
+              200k, which limits memory use to  around  the  same
+              figure,  at  the expense of your compression ratio.
+              In short, if your  machine  is  low  on  memory  (8
+              megabytes  or  less),  use  −s for everything.  See
+              MEMORY MANAGEMENT below.
+
+       −−qq â€â€â€â€qquuiieett
+              Suppress nonâ€essential warning messages.   Messages
+              pertaining  to I/O errors and other critical events
+              will not be suppressed.
+
+       −−vv â€â€â€â€vveerrbboossee
+              Verbose mode â€â€ show the compression ratio for each
+              file  processed.   Further  −v’s  increase the ver­
+              bosity level, spewing out lots of information which
+              is primarily of interest for diagnostic purposes.
+
+       −−LL â€â€â€â€lliicceennssee â€â€VV â€â€â€â€vveerrssiioonn
+              Display  the  software  version,  license terms and
+              conditions.
+
+       −−11 ((oorr −−−−ffaasstt)) ttoo −−99 ((oorr −−−−bbeesstt))
+              Set the block size to 100 k, 200 k ..  900  k  when
+              compressing.   Has  no  effect  when decompressing.
+              See MEMORY MANAGEMENT below.  The −−fast and −−best
+              aliases  are  primarily for GNU gzip compatibility.
+              In particular, −−fast doesn’t make things  signifi­
+              cantly  faster.   And  −−best  merely  selects  the
+              default behaviour.
+
+       −−     Treats all subsequent arguments as file names, even
+              if they start with a dash.  This is so you can han­
+              dle files with names beginning  with  a  dash,  for
+              example: bzip2 −†−myfilename.
+
+       −−â€â€rreeppeettiittiivveeâ€â€ffaasstt â€â€â€â€rreeppeettiittiivveeâ€â€bbeesstt
+              These  flags  are  redundant  in versions 0.9.5 and
+              above.  They provided some coarse control over  the
+              behaviour  of the sorting algorithm in earlier ver­
+              sions, which was sometimes useful.  0.9.5 and above
+              have  an  improved  algorithm  which  renders these
+              flags irrelevant.
+
+
+MMEEMMOORRYY MMAANNAAGGEEMMEENNTT
+       _b_z_i_p_2 compresses large files in blocks.   The  block  size
+       affects  both  the  compression  ratio  achieved,  and the
+       amount of memory needed for compression and decompression.
+       The  flags  −1  through  −9  specify  the block size to be
+       100,000 bytes through 900,000 bytes (the default)  respec­
+       tively.   At  decompression  time, the block size used for
+       compression is read from  the  header  of  the  compressed
+       file, and _b_u_n_z_i_p_2 then allocates itself just enough memory
+       to decompress the file.  Since block sizes are  stored  in
+       compressed  files,  it follows that the flags −1 to −9 are
+       irrelevant to and so ignored during decompression.
+
+       Compression and decompression requirements, in bytes,  can
+       be estimated as:
+
+              Compression:   400k + ( 8 x block size )
+
+              Decompression: 100k + ( 4 x block size ), or
+                             100k + ( 2.5 x block size )
+
+       Larger  block  sizes  give  rapidly  diminishing  marginal
+       returns.  Most of the compression comes from the first two
+       or  three hundred k of block size, a fact worth bearing in
+       mind when using _b_z_i_p_2  on  small  machines.   It  is  also
+       important  to  appreciate  that  the  decompression memory
+       requirement is set at compression time by  the  choice  of
+       block size.
+
+       For  files  compressed  with  the default 900k block size,
+       _b_u_n_z_i_p_2 will require about 3700 kbytes to decompress.   To
+       support decompression of any file on a 4 megabyte machine,
+       _b_u_n_z_i_p_2 has an option to  decompress  using  approximately
+       half this amount of memory, about 2300 kbytes.  Decompres­
+       sion speed is also halved, so you should use  this  option
+       only where necessary.  The relevant flag is â€s.
+
+       In general, try and use the largest block size memory con­
+       straints  allow,  since  that  maximises  the  compression
+       achieved.   Compression and decompression speed are virtu­
+       ally unaffected by block size.
+
+       Another significant point applies to files which fit in  a
+       single  block  â€â€  that  means  most files you’d encounter
+       using a large block  size.   The  amount  of  real  memory
+       touched is proportional to the size of the file, since the
+       file is smaller than a block.  For example, compressing  a
+       file  20,000  bytes  long  with the flag â€9 will cause the
+       compressor to allocate around 7600k of  memory,  but  only
+       touch 400k + 20000 * 8 = 560 kbytes of it.  Similarly, the
+       decompressor will allocate 3700k but  only  touch  100k  +
+       20000 * 4 = 180 kbytes.
+
+       Here  is a table which summarises the maximum memory usage
+       for different block sizes.  Also  recorded  is  the  total
+       compressed  size for 14 files of the Calgary Text Compres­
+       sion Corpus totalling 3,141,622 bytes.  This column  gives
+       some  feel  for  how  compression  varies with block size.
+       These figures tend to understate the advantage  of  larger
+       block  sizes  for  larger files, since the Corpus is domi­
+       nated by smaller files.
+
+                  Compress   Decompress   Decompress   Corpus
+           Flag     usage      usage       â€s usage     Size
+
+            â€1      1200k       500k         350k      914704
+            â€2      2000k       900k         600k      877703
+            â€3      2800k      1300k         850k      860338
+            â€4      3600k      1700k        1100k      846899
+            â€5      4400k      2100k        1350k      845160
+            â€6      5200k      2500k        1600k      838626
+            â€7      6100k      2900k        1850k      834096
+            â€8      6800k      3300k        2100k      828642
+            â€9      7600k      3700k        2350k      828642
+
+
+RREECCOOVVEERRIINNGG DDAATTAA FFRROOMM DDAAMMAAGGEEDD FFIILLEESS
+       _b_z_i_p_2 compresses files in blocks, usually 900kbytes  long.
+       Each block is handled independently.  If a media or trans­
+       mission error causes a multiâ€block  .bz2  file  to  become
+       damaged,  it  may  be  possible  to  recover data from the
+       undamaged blocks in the file.
+
+       The compressed representation of each block  is  delimited
+       by  a  48â€bit pattern, which makes it possible to find the
+       block boundaries with reasonable  certainty.   Each  block
+       also  carries its own 32â€bit CRC, so damaged blocks can be
+       distinguished from undamaged ones.
+
+       _b_z_i_p_2_r_e_c_o_v_e_r is a  simple  program  whose  purpose  is  to
+       search  for blocks in .bz2 files, and write each block out
+       into its own .bz2 file.  You can then use _b_z_i_p_2 −t to test
+       the integrity of the resulting files, and decompress those
+       which are undamaged.
+
+       _b_z_i_p_2_r_e_c_o_v_e_r takes a single argument, the name of the dam­
+       aged    file,    and    writes    a    number   of   files
+       "rec00001file.bz2",  "rec00002file.bz2",  etc,  containing
+       the   extracted   blocks.   The   output   filenames   are
+       designed  so  that the use of wildcards in subsequent pro­
+       cessing  â€â€ for example, "bzip2 â€dc  rec*file.bz2 > recov­
+       ered_data" â€â€ processes the files in the correct order.
+
+       _b_z_i_p_2_r_e_c_o_v_e_r should be of most use dealing with large .bz2
+       files,  as  these will contain many blocks.  It is clearly
+       futile to use it on damaged singleâ€block  files,  since  a
+       damaged  block  cannot  be recovered.  If you wish to min­
+       imise any potential data loss through media  or  transmis­
+       sion errors, you might consider compressing with a smaller
+       block size.
+
+
+PPEERRFFOORRMMAANNCCEE NNOOTTEESS
+       The sorting phase of compression gathers together  similar
+       strings  in  the  file.  Because of this, files containing
+       very long runs of  repeated  symbols,  like  "aabaabaabaab
+       ..."   (repeated  several hundred times) may compress more
+       slowly than normal.  Versions 0.9.5 and  above  fare  much
+       better  than previous versions in this respect.  The ratio
+       between worstâ€case and averageâ€case compression time is in
+       the  region  of  10:1.  For previous versions, this figure
+       was more like 100:1.  You can use the −vvvv option to mon­
+       itor progress in great detail, if you want.
+
+       Decompression speed is unaffected by these phenomena.
+
+       _b_z_i_p_2  usually  allocates  several  megabytes of memory to
+       operate in, and then charges all over it in a fairly  ran­
+       dom  fashion.   This means that performance, both for com­
+       pressing and decompressing, is largely determined  by  the
+       speed  at  which  your  machine  can service cache misses.
+       Because of this, small changes to the code to  reduce  the
+       miss  rate  have  been observed to give disproportionately
+       large performance improvements.  I imagine _b_z_i_p_2 will per­
+       form best on machines with very large caches.
+
+
+CCAAVVEEAATTSS
+       I/O  error  messages  are not as helpful as they could be.
+       _b_z_i_p_2 tries hard to detect I/O errors  and  exit  cleanly,
+       but  the  details  of  what  the problem is sometimes seem
+       rather misleading.
+
+       This manual page pertains to version 1.0.6 of _b_z_i_p_2_.  Com­
+       pressed  data created by this version is entirely forwards
+       and  backwards  compatible  with   the   previous   public
+       releases,  versions  0.1pl2,  0.9.0,  0.9.5, 1.0.0, 1.0.1, 
+       1.0.2 and above, but with the  following  exception: 0.9.0
+       and above can  correctly decompress  multiple concatenated
+       compressed files.  0.1pl2  cannot do this;  it  will  stop 
+       after  decompressing just the first file in the stream.
+
+       _b_z_i_p_2_r_e_c_o_v_e_r  versions prior to 1.0.2 used 32â€bit integers
+       to represent bit positions in compressed  files,  so  they
+       could  not handle compressed files more than 512 megabytes
+       long.  Versions 1.0.2 and above use 64â€bit  ints  on  some
+       platforms  which  support them (GNU supported targets, and
+       Windows).  To establish whether or  not  bzip2recover  was
+       built  with  such  a limitation, run it without arguments.
+       In any event you can build yourself an  unlimited  version
+       if  you  can  recompile  it  with MaybeUInt64 set to be an
+       unsigned 64â€bit integer.
+
+
+
+
+AAUUTTHHOORR
+       Julian Seward, jsewardbzip.org.
+
+       http://www.bzip.org
+
+       The ideas embodied in _b_z_i_p_2 are due to (at least) the fol­
+       lowing  people: Michael Burrows and David Wheeler (for the
+       block sorting transformation), David Wheeler  (again,  for
+       the Huffman coder), Peter Fenwick (for the structured cod­
+       ing model in the original _b_z_i_p_, and many refinements), and
+       Alistair  Moffat,  Radford  Neal  and  Ian Witten (for the
+       arithmetic  coder  in  the  original  _b_z_i_p_)_.   I  am  much
+       indebted for their help, support and advice.  See the man­
+       ual in the source distribution for pointers to sources  of
+       documentation.  Christian von Roques encouraged me to look
+       for faster sorting algorithms, so as to speed up  compres­
+       sion.  Bela Lubkin encouraged me to improve the worstâ€case
+       compression performance.  Donna Robinson XMLised the docu­
+       mentation.   The bz* scripts are derived from those of GNU
+       gzip.  Many people sent patches, helped  with  portability
+       problems,  lent  machines,  gave advice and were generally
+       helpful.
+
+
+
+                                                         bzip2(1)
diff --git a/plugins/Updater/bzip2-1.0.3/bzip2.c b/plugins/Updater/bzip2-1.0.3/bzip2.c
new file mode 100644
index 0000000000..6de9d1d148
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/bzip2.c
@@ -0,0 +1,2034 @@
+
+/*-----------------------------------------------------------*/
+/*--- A block-sorting, lossless compressor        bzip2.c ---*/
+/*-----------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+   This file is part of bzip2/libbzip2, a program and library for
+   lossless, block-sorting data compression.
+
+   bzip2/libbzip2 version 1.0.6 of 6 September 2010
+   Copyright (C) 1996-2010 Julian Seward 
+
+   Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+   README file.
+
+   This program is released under the terms of the license contained
+   in the file LICENSE.
+   ------------------------------------------------------------------ */
+
+
+/* Place a 1 beside your platform, and 0 elsewhere.
+   Generic 32-bit Unix.
+   Also works on 64-bit Unix boxes.
+   This is the default.
+*/
+#define BZ_UNIX      1
+
+/*--
+  Win32, as seen by Jacob Navia's excellent
+  port of (Chris Fraser & David Hanson)'s excellent
+  lcc compiler.  Or with MS Visual C.
+  This is selected automatically if compiled by a compiler which
+  defines _WIN32, not including the Cygwin GCC.
+--*/
+#define BZ_LCCWIN32  0
+
+#if defined(_WIN32) && !defined(__CYGWIN__)
+#undef  BZ_LCCWIN32
+#define BZ_LCCWIN32 1
+#undef  BZ_UNIX
+#define BZ_UNIX 0
+#endif
+
+
+/*---------------------------------------------*/
+/*--
+  Some stuff for all platforms.
+--*/
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include "bzlib.h"
+
+#define ERROR_IF_EOF(i)       { if ((i) == EOF)  ioError(); }
+#define ERROR_IF_NOT_ZERO(i)  { if ((i) != 0)    ioError(); }
+#define ERROR_IF_MINUS_ONE(i) { if ((i) == (-1)) ioError(); }
+
+
+/*---------------------------------------------*/
+/*--
+   Platform-specific stuff.
+--*/
+
+#if BZ_UNIX
+#   include 
+#   include 
+#   include 
+#   include 
+#   include 
+#   include 
+
+#   define PATH_SEP    '/'
+#   define MY_LSTAT    lstat
+#   define MY_STAT     stat
+#   define MY_S_ISREG  S_ISREG
+#   define MY_S_ISDIR  S_ISDIR
+
+#   define APPEND_FILESPEC(root, name) \
+      root=snocString((root), (name))
+
+#   define APPEND_FLAG(root, name) \
+      root=snocString((root), (name))
+
+#   define SET_BINARY_MODE(fd) /**/
+
+#   ifdef __GNUC__
+#      define NORETURN __attribute__ ((noreturn))
+#   else
+#      define NORETURN /**/
+#   endif
+
+#   ifdef __DJGPP__
+#     include 
+#     include 
+#     undef MY_LSTAT
+#     undef MY_STAT
+#     define MY_LSTAT stat
+#     define MY_STAT stat
+#     undef SET_BINARY_MODE
+#     define SET_BINARY_MODE(fd)                        \
+        do {                                            \
+           int retVal = setmode ( fileno ( fd ),        \
+                                  O_BINARY );           \
+           ERROR_IF_MINUS_ONE ( retVal );               \
+        } while ( 0 )
+#   endif
+
+#   ifdef __CYGWIN__
+#     include 
+#     include 
+#     undef SET_BINARY_MODE
+#     define SET_BINARY_MODE(fd)                        \
+        do {                                            \
+           int retVal = setmode ( fileno ( fd ),        \
+                                  O_BINARY );           \
+           ERROR_IF_MINUS_ONE ( retVal );               \
+        } while ( 0 )
+#   endif
+#endif /* BZ_UNIX */
+
+
+
+#if BZ_LCCWIN32
+#   include 
+#   include 
+#   include 
+
+#   define NORETURN       /**/
+#   define PATH_SEP       '\\'
+#   define MY_LSTAT       _stat
+#   define MY_STAT        _stat
+#   define MY_S_ISREG(x)  ((x) & _S_IFREG)
+#   define MY_S_ISDIR(x)  ((x) & _S_IFDIR)
+
+#   define APPEND_FLAG(root, name) \
+      root=snocString((root), (name))
+
+#   define APPEND_FILESPEC(root, name)                \
+      root = snocString ((root), (name))
+
+#   define SET_BINARY_MODE(fd)                        \
+      do {                                            \
+         int retVal = setmode ( fileno ( fd ),        \
+                                O_BINARY );           \
+         ERROR_IF_MINUS_ONE ( retVal );               \
+      } while ( 0 )
+
+#endif /* BZ_LCCWIN32 */
+
+
+/*---------------------------------------------*/
+/*--
+  Some more stuff for all platforms :-)
+--*/
+
+typedef char            Char;
+typedef unsigned char   Bool;
+typedef unsigned char   UChar;
+typedef int             Int32;
+typedef unsigned int    UInt32;
+typedef short           Int16;
+typedef unsigned short  UInt16;
+                                       
+#define True  ((Bool)1)
+#define False ((Bool)0)
+
+/*--
+  IntNative is your platform's `native' int size.
+  Only here to avoid probs with 64-bit platforms.
+--*/
+typedef int IntNative;
+
+
+/*---------------------------------------------------*/
+/*--- Misc (file handling) data decls             ---*/
+/*---------------------------------------------------*/
+
+Int32   verbosity;
+Bool    keepInputFiles, smallMode, deleteOutputOnInterrupt;
+Bool    forceOverwrite, testFailsExist, unzFailsExist, noisy;
+Int32   numFileNames, numFilesProcessed, blockSize100k;
+Int32   exitValue;
+
+/*-- source modes; F==file, I==stdin, O==stdout --*/
+#define SM_I2O           1
+#define SM_F2O           2
+#define SM_F2F           3
+
+/*-- operation modes --*/
+#define OM_Z             1
+#define OM_UNZ           2
+#define OM_TEST          3
+
+Int32   opMode;
+Int32   srcMode;
+
+#define FILE_NAME_LEN 1034
+
+Int32   longestFileName;
+Char    inName [FILE_NAME_LEN];
+Char    outName[FILE_NAME_LEN];
+Char    tmpName[FILE_NAME_LEN];
+Char    *progName;
+Char    progNameReally[FILE_NAME_LEN];
+FILE    *outputHandleJustInCase;
+Int32   workFactor;
+
+static void    panic                 ( const Char* ) NORETURN;
+static void    ioError               ( void )        NORETURN;
+static void    outOfMemory           ( void )        NORETURN;
+static void    configError           ( void )        NORETURN;
+static void    crcError              ( void )        NORETURN;
+static void    cleanUpAndFail        ( Int32 )       NORETURN;
+static void    compressedStreamEOF   ( void )        NORETURN;
+
+static void    copyFileName ( Char*, Char* );
+static void*   myMalloc     ( Int32 );
+static void    applySavedFileAttrToOutputFile ( IntNative fd );
+
+
+
+/*---------------------------------------------------*/
+/*--- An implementation of 64-bit ints.  Sigh.    ---*/
+/*--- Roll on widespread deployment of ANSI C9X ! ---*/
+/*---------------------------------------------------*/
+
+typedef
+   struct { UChar b[8]; } 
+   UInt64;
+
+
+static
+void uInt64_from_UInt32s ( UInt64* n, UInt32 lo32, UInt32 hi32 )
+{
+   n->b[7] = (UChar)((hi32 >> 24) & 0xFF);
+   n->b[6] = (UChar)((hi32 >> 16) & 0xFF);
+   n->b[5] = (UChar)((hi32 >> 8)  & 0xFF);
+   n->b[4] = (UChar) (hi32        & 0xFF);
+   n->b[3] = (UChar)((lo32 >> 24) & 0xFF);
+   n->b[2] = (UChar)((lo32 >> 16) & 0xFF);
+   n->b[1] = (UChar)((lo32 >> 8)  & 0xFF);
+   n->b[0] = (UChar) (lo32        & 0xFF);
+}
+
+
+static
+double uInt64_to_double ( UInt64* n )
+{
+   Int32  i;
+   double base = 1.0;
+   double sum  = 0.0;
+   for (i = 0; i < 8; i++) {
+      sum  += base * (double)(n->b[i]);
+      base *= 256.0;
+   }
+   return sum;
+}
+
+
+static
+Bool uInt64_isZero ( UInt64* n )
+{
+   Int32 i;
+   for (i = 0; i < 8; i++)
+      if (n->b[i] != 0) return 0;
+   return 1;
+}
+
+
+/* Divide *n by 10, and return the remainder.  */
+static 
+Int32 uInt64_qrm10 ( UInt64* n )
+{
+   UInt32 rem, tmp;
+   Int32  i;
+   rem = 0;
+   for (i = 7; i >= 0; i--) {
+      tmp = rem * 256 + n->b[i];
+      n->b[i] = tmp / 10;
+      rem = tmp % 10;
+   }
+   return rem;
+}
+
+
+/* ... and the Whole Entire Point of all this UInt64 stuff is
+   so that we can supply the following function.
+*/
+static
+void uInt64_toAscii ( char* outbuf, UInt64* n )
+{
+   Int32  i, q;
+   UChar  buf[32];
+   Int32  nBuf   = 0;
+   UInt64 n_copy = *n;
+   do {
+      q = uInt64_qrm10 ( &n_copy );
+      buf[nBuf] = q + '0';
+      nBuf++;
+   } while (!uInt64_isZero(&n_copy));
+   outbuf[nBuf] = 0;
+   for (i = 0; i < nBuf; i++) 
+      outbuf[i] = buf[nBuf-i-1];
+}
+
+
+/*---------------------------------------------------*/
+/*--- Processing of complete files and streams    ---*/
+/*---------------------------------------------------*/
+
+/*---------------------------------------------*/
+static 
+Bool myfeof ( FILE* f )
+{
+   Int32 c = fgetc ( f );
+   if (c == EOF) return True;
+   ungetc ( c, f );
+   return False;
+}
+
+
+/*---------------------------------------------*/
+static 
+void compressStream ( FILE *stream, FILE *zStream )
+{
+   BZFILE* bzf = NULL;
+   UChar   ibuf[5000];
+   Int32   nIbuf;
+   UInt32  nbytes_in_lo32, nbytes_in_hi32;
+   UInt32  nbytes_out_lo32, nbytes_out_hi32;
+   Int32   bzerr, bzerr_dummy, ret;
+
+   SET_BINARY_MODE(stream);
+   SET_BINARY_MODE(zStream);
+
+   if (ferror(stream)) goto errhandler_io;
+   if (ferror(zStream)) goto errhandler_io;
+
+   bzf = BZ2_bzWriteOpen ( &bzerr, zStream, 
+                           blockSize100k, verbosity, workFactor );   
+   if (bzerr != BZ_OK) goto errhandler;
+
+   if (verbosity >= 2) fprintf ( stderr, "\n" );
+
+   while (True) {
+
+      if (myfeof(stream)) break;
+      nIbuf = fread ( ibuf, sizeof(UChar), 5000, stream );
+      if (ferror(stream)) goto errhandler_io;
+      if (nIbuf > 0) BZ2_bzWrite ( &bzerr, bzf, (void*)ibuf, nIbuf );
+      if (bzerr != BZ_OK) goto errhandler;
+
+   }
+
+   BZ2_bzWriteClose64 ( &bzerr, bzf, 0, 
+                        &nbytes_in_lo32, &nbytes_in_hi32,
+                        &nbytes_out_lo32, &nbytes_out_hi32 );
+   if (bzerr != BZ_OK) goto errhandler;
+
+   if (ferror(zStream)) goto errhandler_io;
+   ret = fflush ( zStream );
+   if (ret == EOF) goto errhandler_io;
+   if (zStream != stdout) {
+      Int32 fd = fileno ( zStream );
+      if (fd < 0) goto errhandler_io;
+      applySavedFileAttrToOutputFile ( fd );
+      ret = fclose ( zStream );
+      outputHandleJustInCase = NULL;
+      if (ret == EOF) goto errhandler_io;
+   }
+   outputHandleJustInCase = NULL;
+   if (ferror(stream)) goto errhandler_io;
+   ret = fclose ( stream );
+   if (ret == EOF) goto errhandler_io;
+
+   if (verbosity >= 1) {
+      if (nbytes_in_lo32 == 0 && nbytes_in_hi32 == 0) {
+	 fprintf ( stderr, " no data compressed.\n");
+      } else {
+	 Char   buf_nin[32], buf_nout[32];
+	 UInt64 nbytes_in,   nbytes_out;
+	 double nbytes_in_d, nbytes_out_d;
+	 uInt64_from_UInt32s ( &nbytes_in, 
+			       nbytes_in_lo32, nbytes_in_hi32 );
+	 uInt64_from_UInt32s ( &nbytes_out, 
+			       nbytes_out_lo32, nbytes_out_hi32 );
+	 nbytes_in_d  = uInt64_to_double ( &nbytes_in );
+	 nbytes_out_d = uInt64_to_double ( &nbytes_out );
+	 uInt64_toAscii ( buf_nin, &nbytes_in );
+	 uInt64_toAscii ( buf_nout, &nbytes_out );
+	 fprintf ( stderr, "%6.3f:1, %6.3f bits/byte, "
+		   "%5.2f%% saved, %s in, %s out.\n",
+		   nbytes_in_d / nbytes_out_d,
+		   (8.0 * nbytes_out_d) / nbytes_in_d,
+		   100.0 * (1.0 - nbytes_out_d / nbytes_in_d),
+		   buf_nin,
+		   buf_nout
+		 );
+      }
+   }
+
+   return;
+
+   errhandler:
+   BZ2_bzWriteClose64 ( &bzerr_dummy, bzf, 1, 
+                        &nbytes_in_lo32, &nbytes_in_hi32,
+                        &nbytes_out_lo32, &nbytes_out_hi32 );
+   switch (bzerr) {
+      case BZ_CONFIG_ERROR:
+         configError(); break;
+      case BZ_MEM_ERROR:
+         outOfMemory (); break;
+      case BZ_IO_ERROR:
+         errhandler_io:
+         ioError(); break;
+      default:
+         panic ( "compress:unexpected error" );
+   }
+
+   panic ( "compress:end" );
+   /*notreached*/
+}
+
+
+
+/*---------------------------------------------*/
+static 
+Bool uncompressStream ( FILE *zStream, FILE *stream )
+{
+   BZFILE* bzf = NULL;
+   Int32   bzerr, bzerr_dummy, ret, nread, streamNo, i;
+   UChar   obuf[5000];
+   UChar   unused[BZ_MAX_UNUSED];
+   Int32   nUnused;
+   void*   unusedTmpV;
+   UChar*  unusedTmp;
+
+   nUnused = 0;
+   streamNo = 0;
+
+   SET_BINARY_MODE(stream);
+   SET_BINARY_MODE(zStream);
+
+   if (ferror(stream)) goto errhandler_io;
+   if (ferror(zStream)) goto errhandler_io;
+
+   while (True) {
+
+      bzf = BZ2_bzReadOpen ( 
+               &bzerr, zStream, verbosity, 
+               (int)smallMode, unused, nUnused
+            );
+      if (bzf == NULL || bzerr != BZ_OK) goto errhandler;
+      streamNo++;
+
+      while (bzerr == BZ_OK) {
+         nread = BZ2_bzRead ( &bzerr, bzf, obuf, 5000 );
+         if (bzerr == BZ_DATA_ERROR_MAGIC) goto trycat;
+         if ((bzerr == BZ_OK || bzerr == BZ_STREAM_END) && nread > 0)
+            fwrite ( obuf, sizeof(UChar), nread, stream );
+         if (ferror(stream)) goto errhandler_io;
+      }
+      if (bzerr != BZ_STREAM_END) goto errhandler;
+
+      BZ2_bzReadGetUnused ( &bzerr, bzf, &unusedTmpV, &nUnused );
+      if (bzerr != BZ_OK) panic ( "decompress:bzReadGetUnused" );
+
+      unusedTmp = (UChar*)unusedTmpV;
+      for (i = 0; i < nUnused; i++) unused[i] = unusedTmp[i];
+
+      BZ2_bzReadClose ( &bzerr, bzf );
+      if (bzerr != BZ_OK) panic ( "decompress:bzReadGetUnused" );
+
+      if (nUnused == 0 && myfeof(zStream)) break;
+   }
+
+   closeok:
+   if (ferror(zStream)) goto errhandler_io;
+   if (stream != stdout) {
+      Int32 fd = fileno ( stream );
+      if (fd < 0) goto errhandler_io;
+      applySavedFileAttrToOutputFile ( fd );
+   }
+   ret = fclose ( zStream );
+   if (ret == EOF) goto errhandler_io;
+
+   if (ferror(stream)) goto errhandler_io;
+   ret = fflush ( stream );
+   if (ret != 0) goto errhandler_io;
+   if (stream != stdout) {
+      ret = fclose ( stream );
+      outputHandleJustInCase = NULL;
+      if (ret == EOF) goto errhandler_io;
+   }
+   outputHandleJustInCase = NULL;
+   if (verbosity >= 2) fprintf ( stderr, "\n    " );
+   return True;
+
+   trycat: 
+   if (forceOverwrite) {
+      rewind(zStream);
+      while (True) {
+      	 if (myfeof(zStream)) break;
+      	 nread = fread ( obuf, sizeof(UChar), 5000, zStream );
+      	 if (ferror(zStream)) goto errhandler_io;
+      	 if (nread > 0) fwrite ( obuf, sizeof(UChar), nread, stream );
+      	 if (ferror(stream)) goto errhandler_io;
+      }
+      goto closeok;
+   }
+  
+   errhandler:
+   BZ2_bzReadClose ( &bzerr_dummy, bzf );
+   switch (bzerr) {
+      case BZ_CONFIG_ERROR:
+         configError(); break;
+      case BZ_IO_ERROR:
+         errhandler_io:
+         ioError(); break;
+      case BZ_DATA_ERROR:
+         crcError();
+      case BZ_MEM_ERROR:
+         outOfMemory();
+      case BZ_UNEXPECTED_EOF:
+         compressedStreamEOF();
+      case BZ_DATA_ERROR_MAGIC:
+         if (zStream != stdin) fclose(zStream);
+         if (stream != stdout) fclose(stream);
+         if (streamNo == 1) {
+            return False;
+         } else {
+            if (noisy)
+            fprintf ( stderr, 
+                      "\n%s: %s: trailing garbage after EOF ignored\n",
+                      progName, inName );
+            return True;       
+         }
+      default:
+         panic ( "decompress:unexpected error" );
+   }
+
+   panic ( "decompress:end" );
+   return True; /*notreached*/
+}
+
+
+/*---------------------------------------------*/
+static 
+Bool testStream ( FILE *zStream )
+{
+   BZFILE* bzf = NULL;
+   Int32   bzerr, bzerr_dummy, ret, nread, streamNo, i;
+   UChar   obuf[5000];
+   UChar   unused[BZ_MAX_UNUSED];
+   Int32   nUnused;
+   void*   unusedTmpV;
+   UChar*  unusedTmp;
+
+   nUnused = 0;
+   streamNo = 0;
+
+   SET_BINARY_MODE(zStream);
+   if (ferror(zStream)) goto errhandler_io;
+
+   while (True) {
+
+      bzf = BZ2_bzReadOpen ( 
+               &bzerr, zStream, verbosity, 
+               (int)smallMode, unused, nUnused
+            );
+      if (bzf == NULL || bzerr != BZ_OK) goto errhandler;
+      streamNo++;
+
+      while (bzerr == BZ_OK) {
+         nread = BZ2_bzRead ( &bzerr, bzf, obuf, 5000 );
+         if (bzerr == BZ_DATA_ERROR_MAGIC) goto errhandler;
+      }
+      if (bzerr != BZ_STREAM_END) goto errhandler;
+
+      BZ2_bzReadGetUnused ( &bzerr, bzf, &unusedTmpV, &nUnused );
+      if (bzerr != BZ_OK) panic ( "test:bzReadGetUnused" );
+
+      unusedTmp = (UChar*)unusedTmpV;
+      for (i = 0; i < nUnused; i++) unused[i] = unusedTmp[i];
+
+      BZ2_bzReadClose ( &bzerr, bzf );
+      if (bzerr != BZ_OK) panic ( "test:bzReadGetUnused" );
+      if (nUnused == 0 && myfeof(zStream)) break;
+
+   }
+
+   if (ferror(zStream)) goto errhandler_io;
+   ret = fclose ( zStream );
+   if (ret == EOF) goto errhandler_io;
+
+   if (verbosity >= 2) fprintf ( stderr, "\n    " );
+   return True;
+
+   errhandler:
+   BZ2_bzReadClose ( &bzerr_dummy, bzf );
+   if (verbosity == 0) 
+      fprintf ( stderr, "%s: %s: ", progName, inName );
+   switch (bzerr) {
+      case BZ_CONFIG_ERROR:
+         configError(); break;
+      case BZ_IO_ERROR:
+         errhandler_io:
+         ioError(); break;
+      case BZ_DATA_ERROR:
+         fprintf ( stderr,
+                   "data integrity (CRC) error in data\n" );
+         return False;
+      case BZ_MEM_ERROR:
+         outOfMemory();
+      case BZ_UNEXPECTED_EOF:
+         fprintf ( stderr,
+                   "file ends unexpectedly\n" );
+         return False;
+      case BZ_DATA_ERROR_MAGIC:
+         if (zStream != stdin) fclose(zStream);
+         if (streamNo == 1) {
+          fprintf ( stderr, 
+                    "bad magic number (file not created by bzip2)\n" );
+            return False;
+         } else {
+            if (noisy)
+            fprintf ( stderr, 
+                      "trailing garbage after EOF ignored\n" );
+            return True;       
+         }
+      default:
+         panic ( "test:unexpected error" );
+   }
+
+   panic ( "test:end" );
+   return True; /*notreached*/
+}
+
+
+/*---------------------------------------------------*/
+/*--- Error [non-] handling grunge                ---*/
+/*---------------------------------------------------*/
+
+/*---------------------------------------------*/
+static
+void setExit ( Int32 v )
+{
+   if (v > exitValue) exitValue = v;
+}
+
+
+/*---------------------------------------------*/
+static 
+void cadvise ( void )
+{
+   if (noisy)
+   fprintf (
+      stderr,
+      "\nIt is possible that the compressed file(s) have become corrupted.\n"
+        "You can use the -tvv option to test integrity of such files.\n\n"
+        "You can use the `bzip2recover' program to attempt to recover\n"
+        "data from undamaged sections of corrupted files.\n\n"
+    );
+}
+
+
+/*---------------------------------------------*/
+static 
+void showFileNames ( void )
+{
+   if (noisy)
+   fprintf (
+      stderr,
+      "\tInput file = %s, output file = %s\n",
+      inName, outName 
+   );
+}
+
+
+/*---------------------------------------------*/
+static 
+void cleanUpAndFail ( Int32 ec )
+{
+   IntNative      retVal;
+   struct MY_STAT statBuf;
+
+   if ( srcMode == SM_F2F 
+        && opMode != OM_TEST
+        && deleteOutputOnInterrupt ) {
+
+      /* Check whether input file still exists.  Delete output file
+         only if input exists to avoid loss of data.  Joerg Prante, 5
+         January 2002.  (JRS 06-Jan-2002: other changes in 1.0.2 mean
+         this is less likely to happen.  But to be ultra-paranoid, we
+         do the check anyway.)  */
+      retVal = MY_STAT ( inName, &statBuf );
+      if (retVal == 0) {
+         if (noisy)
+            fprintf ( stderr, 
+                      "%s: Deleting output file %s, if it exists.\n",
+                      progName, outName );
+         if (outputHandleJustInCase != NULL)
+            fclose ( outputHandleJustInCase );
+         retVal = remove ( outName );
+         if (retVal != 0)
+            fprintf ( stderr,
+                      "%s: WARNING: deletion of output file "
+                      "(apparently) failed.\n",
+                      progName );
+      } else {
+         fprintf ( stderr,
+                   "%s: WARNING: deletion of output file suppressed\n",
+                    progName );
+         fprintf ( stderr,
+                   "%s:    since input file no longer exists.  Output file\n",
+                   progName );
+         fprintf ( stderr,
+                   "%s:    `%s' may be incomplete.\n",
+                   progName, outName );
+         fprintf ( stderr, 
+                   "%s:    I suggest doing an integrity test (bzip2 -tv)"
+                   " of it.\n",
+                   progName );
+      }
+   }
+
+   if (noisy && numFileNames > 0 && numFilesProcessed < numFileNames) {
+      fprintf ( stderr, 
+                "%s: WARNING: some files have not been processed:\n"
+                "%s:    %d specified on command line, %d not processed yet.\n\n",
+                progName, progName,
+                numFileNames, numFileNames - numFilesProcessed );
+   }
+   setExit(ec);
+   exit(exitValue);
+}
+
+
+/*---------------------------------------------*/
+static 
+void panic ( const Char* s )
+{
+   fprintf ( stderr,
+             "\n%s: PANIC -- internal consistency error:\n"
+             "\t%s\n"
+             "\tThis is a BUG.  Please report it to me at:\n"
+             "\tjseward@bzip.org\n",
+             progName, s );
+   showFileNames();
+   cleanUpAndFail( 3 );
+}
+
+
+/*---------------------------------------------*/
+static 
+void crcError ( void )
+{
+   fprintf ( stderr,
+             "\n%s: Data integrity error when decompressing.\n",
+             progName );
+   showFileNames();
+   cadvise();
+   cleanUpAndFail( 2 );
+}
+
+
+/*---------------------------------------------*/
+static 
+void compressedStreamEOF ( void )
+{
+  if (noisy) {
+    fprintf ( stderr,
+	      "\n%s: Compressed file ends unexpectedly;\n\t"
+	      "perhaps it is corrupted?  *Possible* reason follows.\n",
+	      progName );
+    perror ( progName );
+    showFileNames();
+    cadvise();
+  }
+  cleanUpAndFail( 2 );
+}
+
+
+/*---------------------------------------------*/
+static 
+void ioError ( void )
+{
+   fprintf ( stderr,
+             "\n%s: I/O or other error, bailing out.  "
+             "Possible reason follows.\n",
+             progName );
+   perror ( progName );
+   showFileNames();
+   cleanUpAndFail( 1 );
+}
+
+
+/*---------------------------------------------*/
+static 
+void mySignalCatcher ( IntNative n )
+{
+   fprintf ( stderr,
+             "\n%s: Control-C or similar caught, quitting.\n",
+             progName );
+   cleanUpAndFail(1);
+}
+
+
+/*---------------------------------------------*/
+static 
+void mySIGSEGVorSIGBUScatcher ( IntNative n )
+{
+   if (opMode == OM_Z)
+      fprintf ( 
+      stderr,
+      "\n%s: Caught a SIGSEGV or SIGBUS whilst compressing.\n"
+      "\n"
+      "   Possible causes are (most likely first):\n"
+      "   (1) This computer has unreliable memory or cache hardware\n"
+      "       (a surprisingly common problem; try a different machine.)\n"
+      "   (2) A bug in the compiler used to create this executable\n"
+      "       (unlikely, if you didn't compile bzip2 yourself.)\n"
+      "   (3) A real bug in bzip2 -- I hope this should never be the case.\n"
+      "   The user's manual, Section 4.3, has more info on (1) and (2).\n"
+      "   \n"
+      "   If you suspect this is a bug in bzip2, or are unsure about (1)\n"
+      "   or (2), feel free to report it to me at: jseward@bzip.org.\n"
+      "   Section 4.3 of the user's manual describes the info a useful\n"
+      "   bug report should have.  If the manual is available on your\n"
+      "   system, please try and read it before mailing me.  If you don't\n"
+      "   have the manual or can't be bothered to read it, mail me anyway.\n"
+      "\n",
+      progName );
+      else
+      fprintf ( 
+      stderr,
+      "\n%s: Caught a SIGSEGV or SIGBUS whilst decompressing.\n"
+      "\n"
+      "   Possible causes are (most likely first):\n"
+      "   (1) The compressed data is corrupted, and bzip2's usual checks\n"
+      "       failed to detect this.  Try bzip2 -tvv my_file.bz2.\n"
+      "   (2) This computer has unreliable memory or cache hardware\n"
+      "       (a surprisingly common problem; try a different machine.)\n"
+      "   (3) A bug in the compiler used to create this executable\n"
+      "       (unlikely, if you didn't compile bzip2 yourself.)\n"
+      "   (4) A real bug in bzip2 -- I hope this should never be the case.\n"
+      "   The user's manual, Section 4.3, has more info on (2) and (3).\n"
+      "   \n"
+      "   If you suspect this is a bug in bzip2, or are unsure about (2)\n"
+      "   or (3), feel free to report it to me at: jseward@bzip.org.\n"
+      "   Section 4.3 of the user's manual describes the info a useful\n"
+      "   bug report should have.  If the manual is available on your\n"
+      "   system, please try and read it before mailing me.  If you don't\n"
+      "   have the manual or can't be bothered to read it, mail me anyway.\n"
+      "\n",
+      progName );
+
+   showFileNames();
+   if (opMode == OM_Z)
+      cleanUpAndFail( 3 ); else
+      { cadvise(); cleanUpAndFail( 2 ); }
+}
+
+
+/*---------------------------------------------*/
+static 
+void outOfMemory ( void )
+{
+   fprintf ( stderr,
+             "\n%s: couldn't allocate enough memory\n",
+             progName );
+   showFileNames();
+   cleanUpAndFail(1);
+}
+
+
+/*---------------------------------------------*/
+static 
+void configError ( void )
+{
+   fprintf ( stderr,
+             "bzip2: I'm not configured correctly for this platform!\n"
+             "\tI require Int32, Int16 and Char to have sizes\n"
+             "\tof 4, 2 and 1 bytes to run properly, and they don't.\n"
+             "\tProbably you can fix this by defining them correctly,\n"
+             "\tand recompiling.  Bye!\n" );
+   setExit(3);
+   exit(exitValue);
+}
+
+
+/*---------------------------------------------------*/
+/*--- The main driver machinery                   ---*/
+/*---------------------------------------------------*/
+
+/* All rather crufty.  The main problem is that input files
+   are stat()d multiple times before use.  This should be
+   cleaned up. 
+*/
+
+/*---------------------------------------------*/
+static 
+void pad ( Char *s )
+{
+   Int32 i;
+   if ( (Int32)strlen(s) >= longestFileName ) return;
+   for (i = 1; i <= longestFileName - (Int32)strlen(s); i++)
+      fprintf ( stderr, " " );
+}
+
+
+/*---------------------------------------------*/
+static 
+void copyFileName ( Char* to, Char* from ) 
+{
+   if ( strlen(from) > FILE_NAME_LEN-10 )  {
+      fprintf (
+         stderr,
+         "bzip2: file name\n`%s'\n"
+         "is suspiciously (more than %d chars) long.\n"
+         "Try using a reasonable file name instead.  Sorry! :-)\n",
+         from, FILE_NAME_LEN-10
+      );
+      setExit(1);
+      exit(exitValue);
+   }
+
+  strncpy(to,from,FILE_NAME_LEN-10);
+  to[FILE_NAME_LEN-10]='\0';
+}
+
+
+/*---------------------------------------------*/
+static 
+Bool fileExists ( Char* name )
+{
+   FILE *tmp   = fopen ( name, "rb" );
+   Bool exists = (tmp != NULL);
+   if (tmp != NULL) fclose ( tmp );
+   return exists;
+}
+
+
+/*---------------------------------------------*/
+/* Open an output file safely with O_EXCL and good permissions.
+   This avoids a race condition in versions < 1.0.2, in which
+   the file was first opened and then had its interim permissions
+   set safely.  We instead use open() to create the file with
+   the interim permissions required. (--- --- rw-).
+
+   For non-Unix platforms, if we are not worrying about
+   security issues, simple this simply behaves like fopen.
+*/
+static
+FILE* fopen_output_safely ( Char* name, const char* mode )
+{
+#  if BZ_UNIX
+   FILE*     fp;
+   IntNative fh;
+   fh = open(name, O_WRONLY|O_CREAT|O_EXCL, S_IWUSR|S_IRUSR);
+   if (fh == -1) return NULL;
+   fp = fdopen(fh, mode);
+   if (fp == NULL) close(fh);
+   return fp;
+#  else
+   return fopen(name, mode);
+#  endif
+}
+
+
+/*---------------------------------------------*/
+/*--
+  if in doubt, return True
+--*/
+static 
+Bool notAStandardFile ( Char* name )
+{
+   IntNative      i;
+   struct MY_STAT statBuf;
+
+   i = MY_LSTAT ( name, &statBuf );
+   if (i != 0) return True;
+   if (MY_S_ISREG(statBuf.st_mode)) return False;
+   return True;
+}
+
+
+/*---------------------------------------------*/
+/*--
+  rac 11/21/98 see if file has hard links to it
+--*/
+static 
+Int32 countHardLinks ( Char* name )
+{  
+   IntNative      i;
+   struct MY_STAT statBuf;
+
+   i = MY_LSTAT ( name, &statBuf );
+   if (i != 0) return 0;
+   return (statBuf.st_nlink - 1);
+}
+
+
+/*---------------------------------------------*/
+/* Copy modification date, access date, permissions and owner from the
+   source to destination file.  We have to copy this meta-info off
+   into fileMetaInfo before starting to compress / decompress it,
+   because doing it afterwards means we get the wrong access time.
+
+   To complicate matters, in compress() and decompress() below, the
+   sequence of tests preceding the call to saveInputFileMetaInfo()
+   involves calling fileExists(), which in turn establishes its result
+   by attempting to fopen() the file, and if successful, immediately
+   fclose()ing it again.  So we have to assume that the fopen() call
+   does not cause the access time field to be updated.
+
+   Reading of the man page for stat() (man 2 stat) on RedHat 7.2 seems
+   to imply that merely doing open() will not affect the access time.
+   Therefore we merely need to hope that the C library only does
+   open() as a result of fopen(), and not any kind of read()-ahead
+   cleverness.
+
+   It sounds pretty fragile to me.  Whether this carries across
+   robustly to arbitrary Unix-like platforms (or even works robustly
+   on this one, RedHat 7.2) is unknown to me.  Nevertheless ...  
+*/
+#if BZ_UNIX
+static 
+struct MY_STAT fileMetaInfo;
+#endif
+
+static 
+void saveInputFileMetaInfo ( Char *srcName )
+{
+#  if BZ_UNIX
+   IntNative retVal;
+   /* Note use of stat here, not lstat. */
+   retVal = MY_STAT( srcName, &fileMetaInfo );
+   ERROR_IF_NOT_ZERO ( retVal );
+#  endif
+}
+
+
+static 
+void applySavedTimeInfoToOutputFile ( Char *dstName )
+{
+#  if BZ_UNIX
+   IntNative      retVal;
+   struct utimbuf uTimBuf;
+
+   uTimBuf.actime = fileMetaInfo.st_atime;
+   uTimBuf.modtime = fileMetaInfo.st_mtime;
+
+   retVal = utime ( dstName, &uTimBuf );
+   ERROR_IF_NOT_ZERO ( retVal );
+#  endif
+}
+
+static 
+void applySavedFileAttrToOutputFile ( IntNative fd )
+{
+#  if BZ_UNIX
+   IntNative retVal;
+
+   retVal = fchmod ( fd, fileMetaInfo.st_mode );
+   ERROR_IF_NOT_ZERO ( retVal );
+
+   (void) fchown ( fd, fileMetaInfo.st_uid, fileMetaInfo.st_gid );
+   /* chown() will in many cases return with EPERM, which can
+      be safely ignored.
+   */
+#  endif
+}
+
+
+/*---------------------------------------------*/
+static 
+Bool containsDubiousChars ( Char* name )
+{
+#  if BZ_UNIX
+   /* On unix, files can contain any characters and the file expansion
+    * is performed by the shell.
+    */
+   return False;
+#  else /* ! BZ_UNIX */
+   /* On non-unix (Win* platforms), wildcard characters are not allowed in 
+    * filenames.
+    */
+   for (; *name != '\0'; name++)
+      if (*name == '?' || *name == '*') return True;
+   return False;
+#  endif /* BZ_UNIX */
+}
+
+
+/*---------------------------------------------*/
+#define BZ_N_SUFFIX_PAIRS 4
+
+const Char* zSuffix[BZ_N_SUFFIX_PAIRS] 
+   = { ".bz2", ".bz", ".tbz2", ".tbz" };
+const Char* unzSuffix[BZ_N_SUFFIX_PAIRS] 
+   = { "", "", ".tar", ".tar" };
+
+static 
+Bool hasSuffix ( Char* s, const Char* suffix )
+{
+   Int32 ns = strlen(s);
+   Int32 nx = strlen(suffix);
+   if (ns < nx) return False;
+   if (strcmp(s + ns - nx, suffix) == 0) return True;
+   return False;
+}
+
+static 
+Bool mapSuffix ( Char* name, 
+                 const Char* oldSuffix, 
+                 const Char* newSuffix )
+{
+   if (!hasSuffix(name,oldSuffix)) return False;
+   name[strlen(name)-strlen(oldSuffix)] = 0;
+   strcat ( name, newSuffix );
+   return True;
+}
+
+
+/*---------------------------------------------*/
+static 
+void compress ( Char *name )
+{
+   FILE  *inStr;
+   FILE  *outStr;
+   Int32 n, i;
+   struct MY_STAT statBuf;
+
+   deleteOutputOnInterrupt = False;
+
+   if (name == NULL && srcMode != SM_I2O)
+      panic ( "compress: bad modes\n" );
+
+   switch (srcMode) {
+      case SM_I2O: 
+         copyFileName ( inName, (Char*)"(stdin)" );
+         copyFileName ( outName, (Char*)"(stdout)" ); 
+         break;
+      case SM_F2F: 
+         copyFileName ( inName, name );
+         copyFileName ( outName, name );
+         strcat ( outName, ".bz2" ); 
+         break;
+      case SM_F2O: 
+         copyFileName ( inName, name );
+         copyFileName ( outName, (Char*)"(stdout)" ); 
+         break;
+   }
+
+   if ( srcMode != SM_I2O && containsDubiousChars ( inName ) ) {
+      if (noisy)
+      fprintf ( stderr, "%s: There are no files matching `%s'.\n",
+                progName, inName );
+      setExit(1);
+      return;
+   }
+   if ( srcMode != SM_I2O && !fileExists ( inName ) ) {
+      fprintf ( stderr, "%s: Can't open input file %s: %s.\n",
+                progName, inName, strerror(errno) );
+      setExit(1);
+      return;
+   }
+   for (i = 0; i < BZ_N_SUFFIX_PAIRS; i++) {
+      if (hasSuffix(inName, zSuffix[i])) {
+         if (noisy)
+         fprintf ( stderr, 
+                   "%s: Input file %s already has %s suffix.\n",
+                   progName, inName, zSuffix[i] );
+         setExit(1);
+         return;
+      }
+   }
+   if ( srcMode == SM_F2F || srcMode == SM_F2O ) {
+      MY_STAT(inName, &statBuf);
+      if ( MY_S_ISDIR(statBuf.st_mode) ) {
+         fprintf( stderr,
+                  "%s: Input file %s is a directory.\n",
+                  progName,inName);
+         setExit(1);
+         return;
+      }
+   }
+   if ( srcMode == SM_F2F && !forceOverwrite && notAStandardFile ( inName )) {
+      if (noisy)
+      fprintf ( stderr, "%s: Input file %s is not a normal file.\n",
+                progName, inName );
+      setExit(1);
+      return;
+   }
+   if ( srcMode == SM_F2F && fileExists ( outName ) ) {
+      if (forceOverwrite) {
+	 remove(outName);
+      } else {
+	 fprintf ( stderr, "%s: Output file %s already exists.\n",
+		   progName, outName );
+	 setExit(1);
+	 return;
+      }
+   }
+   if ( srcMode == SM_F2F && !forceOverwrite &&
+        (n=countHardLinks ( inName )) > 0) {
+      fprintf ( stderr, "%s: Input file %s has %d other link%s.\n",
+                progName, inName, n, n > 1 ? "s" : "" );
+      setExit(1);
+      return;
+   }
+
+   if ( srcMode == SM_F2F ) {
+      /* Save the file's meta-info before we open it.  Doing it later
+         means we mess up the access times. */
+      saveInputFileMetaInfo ( inName );
+   }
+
+   switch ( srcMode ) {
+
+      case SM_I2O:
+         inStr = stdin;
+         outStr = stdout;
+         if ( isatty ( fileno ( stdout ) ) ) {
+            fprintf ( stderr,
+                      "%s: I won't write compressed data to a terminal.\n",
+                      progName );
+            fprintf ( stderr, "%s: For help, type: `%s --help'.\n",
+                              progName, progName );
+            setExit(1);
+            return;
+         };
+         break;
+
+      case SM_F2O:
+         inStr = fopen ( inName, "rb" );
+         outStr = stdout;
+         if ( isatty ( fileno ( stdout ) ) ) {
+            fprintf ( stderr,
+                      "%s: I won't write compressed data to a terminal.\n",
+                      progName );
+            fprintf ( stderr, "%s: For help, type: `%s --help'.\n",
+                              progName, progName );
+            if ( inStr != NULL ) fclose ( inStr );
+            setExit(1);
+            return;
+         };
+         if ( inStr == NULL ) {
+            fprintf ( stderr, "%s: Can't open input file %s: %s.\n",
+                      progName, inName, strerror(errno) );
+            setExit(1);
+            return;
+         };
+         break;
+
+      case SM_F2F:
+         inStr = fopen ( inName, "rb" );
+         outStr = fopen_output_safely ( outName, "wb" );
+         if ( outStr == NULL) {
+            fprintf ( stderr, "%s: Can't create output file %s: %s.\n",
+                      progName, outName, strerror(errno) );
+            if ( inStr != NULL ) fclose ( inStr );
+            setExit(1);
+            return;
+         }
+         if ( inStr == NULL ) {
+            fprintf ( stderr, "%s: Can't open input file %s: %s.\n",
+                      progName, inName, strerror(errno) );
+            if ( outStr != NULL ) fclose ( outStr );
+            setExit(1);
+            return;
+         };
+         break;
+
+      default:
+         panic ( "compress: bad srcMode" );
+         break;
+   }
+
+   if (verbosity >= 1) {
+      fprintf ( stderr,  "  %s: ", inName );
+      pad ( inName );
+      fflush ( stderr );
+   }
+
+   /*--- Now the input and output handles are sane.  Do the Biz. ---*/
+   outputHandleJustInCase = outStr;
+   deleteOutputOnInterrupt = True;
+   compressStream ( inStr, outStr );
+   outputHandleJustInCase = NULL;
+
+   /*--- If there was an I/O error, we won't get here. ---*/
+   if ( srcMode == SM_F2F ) {
+      applySavedTimeInfoToOutputFile ( outName );
+      deleteOutputOnInterrupt = False;
+      if ( !keepInputFiles ) {
+         IntNative retVal = remove ( inName );
+         ERROR_IF_NOT_ZERO ( retVal );
+      }
+   }
+
+   deleteOutputOnInterrupt = False;
+}
+
+
+/*---------------------------------------------*/
+static 
+void uncompress ( Char *name )
+{
+   FILE  *inStr;
+   FILE  *outStr;
+   Int32 n, i;
+   Bool  magicNumberOK;
+   Bool  cantGuess;
+   struct MY_STAT statBuf;
+
+   deleteOutputOnInterrupt = False;
+
+   if (name == NULL && srcMode != SM_I2O)
+      panic ( "uncompress: bad modes\n" );
+
+   cantGuess = False;
+   switch (srcMode) {
+      case SM_I2O: 
+         copyFileName ( inName, (Char*)"(stdin)" );
+         copyFileName ( outName, (Char*)"(stdout)" ); 
+         break;
+      case SM_F2F: 
+         copyFileName ( inName, name );
+         copyFileName ( outName, name );
+         for (i = 0; i < BZ_N_SUFFIX_PAIRS; i++)
+            if (mapSuffix(outName,zSuffix[i],unzSuffix[i]))
+               goto zzz; 
+         cantGuess = True;
+         strcat ( outName, ".out" );
+         break;
+      case SM_F2O: 
+         copyFileName ( inName, name );
+         copyFileName ( outName, (Char*)"(stdout)" ); 
+         break;
+   }
+
+   zzz:
+   if ( srcMode != SM_I2O && containsDubiousChars ( inName ) ) {
+      if (noisy)
+      fprintf ( stderr, "%s: There are no files matching `%s'.\n",
+                progName, inName );
+      setExit(1);
+      return;
+   }
+   if ( srcMode != SM_I2O && !fileExists ( inName ) ) {
+      fprintf ( stderr, "%s: Can't open input file %s: %s.\n",
+                progName, inName, strerror(errno) );
+      setExit(1);
+      return;
+   }
+   if ( srcMode == SM_F2F || srcMode == SM_F2O ) {
+      MY_STAT(inName, &statBuf);
+      if ( MY_S_ISDIR(statBuf.st_mode) ) {
+         fprintf( stderr,
+                  "%s: Input file %s is a directory.\n",
+                  progName,inName);
+         setExit(1);
+         return;
+      }
+   }
+   if ( srcMode == SM_F2F && !forceOverwrite && notAStandardFile ( inName )) {
+      if (noisy)
+      fprintf ( stderr, "%s: Input file %s is not a normal file.\n",
+                progName, inName );
+      setExit(1);
+      return;
+   }
+   if ( /* srcMode == SM_F2F implied && */ cantGuess ) {
+      if (noisy)
+      fprintf ( stderr, 
+                "%s: Can't guess original name for %s -- using %s\n",
+                progName, inName, outName );
+      /* just a warning, no return */
+   }   
+   if ( srcMode == SM_F2F && fileExists ( outName ) ) {
+      if (forceOverwrite) {
+	remove(outName);
+      } else {
+        fprintf ( stderr, "%s: Output file %s already exists.\n",
+                  progName, outName );
+        setExit(1);
+        return;
+      }
+   }
+   if ( srcMode == SM_F2F && !forceOverwrite &&
+        (n=countHardLinks ( inName ) ) > 0) {
+      fprintf ( stderr, "%s: Input file %s has %d other link%s.\n",
+                progName, inName, n, n > 1 ? "s" : "" );
+      setExit(1);
+      return;
+   }
+
+   if ( srcMode == SM_F2F ) {
+      /* Save the file's meta-info before we open it.  Doing it later
+         means we mess up the access times. */
+      saveInputFileMetaInfo ( inName );
+   }
+
+   switch ( srcMode ) {
+
+      case SM_I2O:
+         inStr = stdin;
+         outStr = stdout;
+         if ( isatty ( fileno ( stdin ) ) ) {
+            fprintf ( stderr,
+                      "%s: I won't read compressed data from a terminal.\n",
+                      progName );
+            fprintf ( stderr, "%s: For help, type: `%s --help'.\n",
+                              progName, progName );
+            setExit(1);
+            return;
+         };
+         break;
+
+      case SM_F2O:
+         inStr = fopen ( inName, "rb" );
+         outStr = stdout;
+         if ( inStr == NULL ) {
+            fprintf ( stderr, "%s: Can't open input file %s:%s.\n",
+                      progName, inName, strerror(errno) );
+            if ( inStr != NULL ) fclose ( inStr );
+            setExit(1);
+            return;
+         };
+         break;
+
+      case SM_F2F:
+         inStr = fopen ( inName, "rb" );
+         outStr = fopen_output_safely ( outName, "wb" );
+         if ( outStr == NULL) {
+            fprintf ( stderr, "%s: Can't create output file %s: %s.\n",
+                      progName, outName, strerror(errno) );
+            if ( inStr != NULL ) fclose ( inStr );
+            setExit(1);
+            return;
+         }
+         if ( inStr == NULL ) {
+            fprintf ( stderr, "%s: Can't open input file %s: %s.\n",
+                      progName, inName, strerror(errno) );
+            if ( outStr != NULL ) fclose ( outStr );
+            setExit(1);
+            return;
+         };
+         break;
+
+      default:
+         panic ( "uncompress: bad srcMode" );
+         break;
+   }
+
+   if (verbosity >= 1) {
+      fprintf ( stderr, "  %s: ", inName );
+      pad ( inName );
+      fflush ( stderr );
+   }
+
+   /*--- Now the input and output handles are sane.  Do the Biz. ---*/
+   outputHandleJustInCase = outStr;
+   deleteOutputOnInterrupt = True;
+   magicNumberOK = uncompressStream ( inStr, outStr );
+   outputHandleJustInCase = NULL;
+
+   /*--- If there was an I/O error, we won't get here. ---*/
+   if ( magicNumberOK ) {
+      if ( srcMode == SM_F2F ) {
+         applySavedTimeInfoToOutputFile ( outName );
+         deleteOutputOnInterrupt = False;
+         if ( !keepInputFiles ) {
+            IntNative retVal = remove ( inName );
+            ERROR_IF_NOT_ZERO ( retVal );
+         }
+      }
+   } else {
+      unzFailsExist = True;
+      deleteOutputOnInterrupt = False;
+      if ( srcMode == SM_F2F ) {
+         IntNative retVal = remove ( outName );
+         ERROR_IF_NOT_ZERO ( retVal );
+      }
+   }
+   deleteOutputOnInterrupt = False;
+
+   if ( magicNumberOK ) {
+      if (verbosity >= 1)
+         fprintf ( stderr, "done\n" );
+   } else {
+      setExit(2);
+      if (verbosity >= 1)
+         fprintf ( stderr, "not a bzip2 file.\n" ); else
+         fprintf ( stderr,
+                   "%s: %s is not a bzip2 file.\n",
+                   progName, inName );
+   }
+
+}
+
+
+/*---------------------------------------------*/
+static 
+void testf ( Char *name )
+{
+   FILE *inStr;
+   Bool allOK;
+   struct MY_STAT statBuf;
+
+   deleteOutputOnInterrupt = False;
+
+   if (name == NULL && srcMode != SM_I2O)
+      panic ( "testf: bad modes\n" );
+
+   copyFileName ( outName, (Char*)"(none)" );
+   switch (srcMode) {
+      case SM_I2O: copyFileName ( inName, (Char*)"(stdin)" ); break;
+      case SM_F2F: copyFileName ( inName, name ); break;
+      case SM_F2O: copyFileName ( inName, name ); break;
+   }
+
+   if ( srcMode != SM_I2O && containsDubiousChars ( inName ) ) {
+      if (noisy)
+      fprintf ( stderr, "%s: There are no files matching `%s'.\n",
+                progName, inName );
+      setExit(1);
+      return;
+   }
+   if ( srcMode != SM_I2O && !fileExists ( inName ) ) {
+      fprintf ( stderr, "%s: Can't open input %s: %s.\n",
+                progName, inName, strerror(errno) );
+      setExit(1);
+      return;
+   }
+   if ( srcMode != SM_I2O ) {
+      MY_STAT(inName, &statBuf);
+      if ( MY_S_ISDIR(statBuf.st_mode) ) {
+         fprintf( stderr,
+                  "%s: Input file %s is a directory.\n",
+                  progName,inName);
+         setExit(1);
+         return;
+      }
+   }
+
+   switch ( srcMode ) {
+
+      case SM_I2O:
+         if ( isatty ( fileno ( stdin ) ) ) {
+            fprintf ( stderr,
+                      "%s: I won't read compressed data from a terminal.\n",
+                      progName );
+            fprintf ( stderr, "%s: For help, type: `%s --help'.\n",
+                              progName, progName );
+            setExit(1);
+            return;
+         };
+         inStr = stdin;
+         break;
+
+      case SM_F2O: case SM_F2F:
+         inStr = fopen ( inName, "rb" );
+         if ( inStr == NULL ) {
+            fprintf ( stderr, "%s: Can't open input file %s:%s.\n",
+                      progName, inName, strerror(errno) );
+            setExit(1);
+            return;
+         };
+         break;
+
+      default:
+         panic ( "testf: bad srcMode" );
+         break;
+   }
+
+   if (verbosity >= 1) {
+      fprintf ( stderr, "  %s: ", inName );
+      pad ( inName );
+      fflush ( stderr );
+   }
+
+   /*--- Now the input handle is sane.  Do the Biz. ---*/
+   outputHandleJustInCase = NULL;
+   allOK = testStream ( inStr );
+
+   if (allOK && verbosity >= 1) fprintf ( stderr, "ok\n" );
+   if (!allOK) testFailsExist = True;
+}
+
+
+/*---------------------------------------------*/
+static 
+void license ( void )
+{
+   fprintf ( stderr,
+
+    "bzip2, a block-sorting file compressor.  "
+    "Version %s.\n"
+    "   \n"
+    "   Copyright (C) 1996-2010 by Julian Seward.\n"
+    "   \n"
+    "   This program is free software; you can redistribute it and/or modify\n"
+    "   it under the terms set out in the LICENSE file, which is included\n"
+    "   in the bzip2-1.0.6 source distribution.\n"
+    "   \n"
+    "   This program is distributed in the hope that it will be useful,\n"
+    "   but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+    "   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+    "   LICENSE file for more details.\n"
+    "   \n",
+    BZ2_bzlibVersion()
+   );
+}
+
+
+/*---------------------------------------------*/
+static 
+void usage ( Char *fullProgName )
+{
+   fprintf (
+      stderr,
+      "bzip2, a block-sorting file compressor.  "
+      "Version %s.\n"
+      "\n   usage: %s [flags and input files in any order]\n"
+      "\n"
+      "   -h --help           print this message\n"
+      "   -d --decompress     force decompression\n"
+      "   -z --compress       force compression\n"
+      "   -k --keep           keep (don't delete) input files\n"
+      "   -f --force          overwrite existing output files\n"
+      "   -t --test           test compressed file integrity\n"
+      "   -c --stdout         output to standard out\n"
+      "   -q --quiet          suppress noncritical error messages\n"
+      "   -v --verbose        be verbose (a 2nd -v gives more)\n"
+      "   -L --license        display software version & license\n"
+      "   -V --version        display software version & license\n"
+      "   -s --small          use less memory (at most 2500k)\n"
+      "   -1 .. -9            set block size to 100k .. 900k\n"
+      "   --fast              alias for -1\n"
+      "   --best              alias for -9\n"
+      "\n"
+      "   If invoked as `bzip2', default action is to compress.\n"
+      "              as `bunzip2',  default action is to decompress.\n"
+      "              as `bzcat', default action is to decompress to stdout.\n"
+      "\n"
+      "   If no file names are given, bzip2 compresses or decompresses\n"
+      "   from standard input to standard output.  You can combine\n"
+      "   short flags, so `-v -4' means the same as -v4 or -4v, &c.\n"
+#     if BZ_UNIX
+      "\n"
+#     endif
+      ,
+
+      BZ2_bzlibVersion(),
+      fullProgName
+   );
+}
+
+
+/*---------------------------------------------*/
+static 
+void redundant ( Char* flag )
+{
+   fprintf ( 
+      stderr, 
+      "%s: %s is redundant in versions 0.9.5 and above\n",
+      progName, flag );
+}
+
+
+/*---------------------------------------------*/
+/*--
+  All the garbage from here to main() is purely to
+  implement a linked list of command-line arguments,
+  into which main() copies argv[1 .. argc-1].
+
+  The purpose of this exercise is to facilitate 
+  the expansion of wildcard characters * and ? in 
+  filenames for OSs which don't know how to do it
+  themselves, like MSDOS, Windows 95 and NT.
+
+  The actual Dirty Work is done by the platform-
+  specific macro APPEND_FILESPEC.
+--*/
+
+typedef
+   struct zzzz {
+      Char        *name;
+      struct zzzz *link;
+   }
+   Cell;
+
+
+/*---------------------------------------------*/
+static 
+void *myMalloc ( Int32 n )
+{
+   void* p;
+
+   p = malloc ( (size_t)n );
+   if (p == NULL) outOfMemory ();
+   return p;
+}
+
+
+/*---------------------------------------------*/
+static 
+Cell *mkCell ( void )
+{
+   Cell *c;
+
+   c = (Cell*) myMalloc ( sizeof ( Cell ) );
+   c->name = NULL;
+   c->link = NULL;
+   return c;
+}
+
+
+/*---------------------------------------------*/
+static 
+Cell *snocString ( Cell *root, Char *name )
+{
+   if (root == NULL) {
+      Cell *tmp = mkCell();
+      tmp->name = (Char*) myMalloc ( 5 + strlen(name) );
+      strcpy ( tmp->name, name );
+      return tmp;
+   } else {
+      Cell *tmp = root;
+      while (tmp->link != NULL) tmp = tmp->link;
+      tmp->link = snocString ( tmp->link, name );
+      return root;
+   }
+}
+
+
+/*---------------------------------------------*/
+static 
+void addFlagsFromEnvVar ( Cell** argList, Char* varName ) 
+{
+   Int32 i, j, k;
+   Char *envbase, *p;
+
+   envbase = getenv(varName);
+   if (envbase != NULL) {
+      p = envbase;
+      i = 0;
+      while (True) {
+         if (p[i] == 0) break;
+         p += i;
+         i = 0;
+         while (isspace((Int32)(p[0]))) p++;
+         while (p[i] != 0 && !isspace((Int32)(p[i]))) i++;
+         if (i > 0) {
+            k = i; if (k > FILE_NAME_LEN-10) k = FILE_NAME_LEN-10;
+            for (j = 0; j < k; j++) tmpName[j] = p[j];
+            tmpName[k] = 0;
+            APPEND_FLAG(*argList, tmpName);
+         }
+      }
+   }
+}
+
+
+/*---------------------------------------------*/
+#define ISFLAG(s) (strcmp(aa->name, (s))==0)
+
+IntNative main ( IntNative argc, Char *argv[] )
+{
+   Int32  i, j;
+   Char   *tmp;
+   Cell   *argList;
+   Cell   *aa;
+   Bool   decode;
+
+   /*-- Be really really really paranoid :-) --*/
+   if (sizeof(Int32) != 4 || sizeof(UInt32) != 4  ||
+       sizeof(Int16) != 2 || sizeof(UInt16) != 2  ||
+       sizeof(Char)  != 1 || sizeof(UChar)  != 1)
+      configError();
+
+   /*-- Initialise --*/
+   outputHandleJustInCase  = NULL;
+   smallMode               = False;
+   keepInputFiles          = False;
+   forceOverwrite          = False;
+   noisy                   = True;
+   verbosity               = 0;
+   blockSize100k           = 9;
+   testFailsExist          = False;
+   unzFailsExist           = False;
+   numFileNames            = 0;
+   numFilesProcessed       = 0;
+   workFactor              = 30;
+   deleteOutputOnInterrupt = False;
+   exitValue               = 0;
+   i = j = 0; /* avoid bogus warning from egcs-1.1.X */
+
+   /*-- Set up signal handlers for mem access errors --*/
+   signal (SIGSEGV, mySIGSEGVorSIGBUScatcher);
+#  if BZ_UNIX
+#  ifndef __DJGPP__
+   signal (SIGBUS,  mySIGSEGVorSIGBUScatcher);
+#  endif
+#  endif
+
+   copyFileName ( inName,  (Char*)"(none)" );
+   copyFileName ( outName, (Char*)"(none)" );
+
+   copyFileName ( progNameReally, argv[0] );
+   progName = &progNameReally[0];
+   for (tmp = &progNameReally[0]; *tmp != '\0'; tmp++)
+      if (*tmp == PATH_SEP) progName = tmp + 1;
+
+
+   /*-- Copy flags from env var BZIP2, and 
+        expand filename wildcards in arg list.
+   --*/
+   argList = NULL;
+   addFlagsFromEnvVar ( &argList,  (Char*)"BZIP2" );
+   addFlagsFromEnvVar ( &argList,  (Char*)"BZIP" );
+   for (i = 1; i <= argc-1; i++)
+      APPEND_FILESPEC(argList, argv[i]);
+
+
+   /*-- Find the length of the longest filename --*/
+   longestFileName = 7;
+   numFileNames    = 0;
+   decode          = True;
+   for (aa = argList; aa != NULL; aa = aa->link) {
+      if (ISFLAG("--")) { decode = False; continue; }
+      if (aa->name[0] == '-' && decode) continue;
+      numFileNames++;
+      if (longestFileName < (Int32)strlen(aa->name) )
+         longestFileName = (Int32)strlen(aa->name);
+   }
+
+
+   /*-- Determine source modes; flag handling may change this too. --*/
+   if (numFileNames == 0)
+      srcMode = SM_I2O; else srcMode = SM_F2F;
+
+
+   /*-- Determine what to do (compress/uncompress/test/cat). --*/
+   /*-- Note that subsequent flag handling may change this. --*/
+   opMode = OM_Z;
+
+   if ( (strstr ( progName, "unzip" ) != 0) ||
+        (strstr ( progName, "UNZIP" ) != 0) )
+      opMode = OM_UNZ;
+
+   if ( (strstr ( progName, "z2cat" ) != 0) ||
+        (strstr ( progName, "Z2CAT" ) != 0) ||
+        (strstr ( progName, "zcat" ) != 0)  ||
+        (strstr ( progName, "ZCAT" ) != 0) )  {
+      opMode = OM_UNZ;
+      srcMode = (numFileNames == 0) ? SM_I2O : SM_F2O;
+   }
+
+
+   /*-- Look at the flags. --*/
+   for (aa = argList; aa != NULL; aa = aa->link) {
+      if (ISFLAG("--")) break;
+      if (aa->name[0] == '-' && aa->name[1] != '-') {
+         for (j = 1; aa->name[j] != '\0'; j++) {
+            switch (aa->name[j]) {
+               case 'c': srcMode          = SM_F2O; break;
+               case 'd': opMode           = OM_UNZ; break;
+               case 'z': opMode           = OM_Z; break;
+               case 'f': forceOverwrite   = True; break;
+               case 't': opMode           = OM_TEST; break;
+               case 'k': keepInputFiles   = True; break;
+               case 's': smallMode        = True; break;
+               case 'q': noisy            = False; break;
+               case '1': blockSize100k    = 1; break;
+               case '2': blockSize100k    = 2; break;
+               case '3': blockSize100k    = 3; break;
+               case '4': blockSize100k    = 4; break;
+               case '5': blockSize100k    = 5; break;
+               case '6': blockSize100k    = 6; break;
+               case '7': blockSize100k    = 7; break;
+               case '8': blockSize100k    = 8; break;
+               case '9': blockSize100k    = 9; break;
+               case 'V':
+               case 'L': license();            break;
+               case 'v': verbosity++; break;
+               case 'h': usage ( progName );
+                         exit ( 0 );
+                         break;
+               default:  fprintf ( stderr, "%s: Bad flag `%s'\n",
+                                   progName, aa->name );
+                         usage ( progName );
+                         exit ( 1 );
+                         break;
+            }
+         }
+      }
+   }
+   
+   /*-- And again ... --*/
+   for (aa = argList; aa != NULL; aa = aa->link) {
+      if (ISFLAG("--")) break;
+      if (ISFLAG("--stdout"))            srcMode          = SM_F2O;  else
+      if (ISFLAG("--decompress"))        opMode           = OM_UNZ;  else
+      if (ISFLAG("--compress"))          opMode           = OM_Z;    else
+      if (ISFLAG("--force"))             forceOverwrite   = True;    else
+      if (ISFLAG("--test"))              opMode           = OM_TEST; else
+      if (ISFLAG("--keep"))              keepInputFiles   = True;    else
+      if (ISFLAG("--small"))             smallMode        = True;    else
+      if (ISFLAG("--quiet"))             noisy            = False;   else
+      if (ISFLAG("--version"))           license();                  else
+      if (ISFLAG("--license"))           license();                  else
+      if (ISFLAG("--exponential"))       workFactor = 1;             else 
+      if (ISFLAG("--repetitive-best"))   redundant(aa->name);        else
+      if (ISFLAG("--repetitive-fast"))   redundant(aa->name);        else
+      if (ISFLAG("--fast"))              blockSize100k = 1;          else
+      if (ISFLAG("--best"))              blockSize100k = 9;          else
+      if (ISFLAG("--verbose"))           verbosity++;                else
+      if (ISFLAG("--help"))              { usage ( progName ); exit ( 0 ); }
+         else
+         if (strncmp ( aa->name, "--", 2) == 0) {
+            fprintf ( stderr, "%s: Bad flag `%s'\n", progName, aa->name );
+            usage ( progName );
+            exit ( 1 );
+         }
+   }
+
+   if (verbosity > 4) verbosity = 4;
+   if (opMode == OM_Z && smallMode && blockSize100k > 2) 
+      blockSize100k = 2;
+
+   if (opMode == OM_TEST && srcMode == SM_F2O) {
+      fprintf ( stderr, "%s: -c and -t cannot be used together.\n",
+                progName );
+      exit ( 1 );
+   }
+
+   if (srcMode == SM_F2O && numFileNames == 0)
+      srcMode = SM_I2O;
+
+   if (opMode != OM_Z) blockSize100k = 0;
+
+   if (srcMode == SM_F2F) {
+      signal (SIGINT,  mySignalCatcher);
+      signal (SIGTERM, mySignalCatcher);
+#     if BZ_UNIX
+      signal (SIGHUP,  mySignalCatcher);
+#     endif
+   }
+
+   if (opMode == OM_Z) {
+     if (srcMode == SM_I2O) {
+        compress ( NULL );
+     } else {
+        decode = True;
+        for (aa = argList; aa != NULL; aa = aa->link) {
+           if (ISFLAG("--")) { decode = False; continue; }
+           if (aa->name[0] == '-' && decode) continue;
+           numFilesProcessed++;
+           compress ( aa->name );
+        }
+     }
+   } 
+   else
+
+   if (opMode == OM_UNZ) {
+      unzFailsExist = False;
+      if (srcMode == SM_I2O) {
+         uncompress ( NULL );
+      } else {
+         decode = True;
+         for (aa = argList; aa != NULL; aa = aa->link) {
+            if (ISFLAG("--")) { decode = False; continue; }
+            if (aa->name[0] == '-' && decode) continue;
+            numFilesProcessed++;
+            uncompress ( aa->name );
+         }      
+      }
+      if (unzFailsExist) { 
+         setExit(2); 
+         exit(exitValue);
+      }
+   } 
+
+   else {
+      testFailsExist = False;
+      if (srcMode == SM_I2O) {
+         testf ( NULL );
+      } else {
+         decode = True;
+         for (aa = argList; aa != NULL; aa = aa->link) {
+	    if (ISFLAG("--")) { decode = False; continue; }
+            if (aa->name[0] == '-' && decode) continue;
+            numFilesProcessed++;
+            testf ( aa->name );
+	 }
+      }
+      if (testFailsExist && noisy) {
+         fprintf ( stderr,
+           "\n"
+           "You can use the `bzip2recover' program to attempt to recover\n"
+           "data from undamaged sections of corrupted files.\n\n"
+         );
+         setExit(2);
+         exit(exitValue);
+      }
+   }
+
+   /* Free the argument list memory to mollify leak detectors 
+      (eg) Purify, Checker.  Serves no other useful purpose.
+   */
+   aa = argList;
+   while (aa != NULL) {
+      Cell* aa2 = aa->link;
+      if (aa->name != NULL) free(aa->name);
+      free(aa);
+      aa = aa2;
+   }
+
+   return exitValue;
+}
+
+
+/*-----------------------------------------------------------*/
+/*--- end                                         bzip2.c ---*/
+/*-----------------------------------------------------------*/
diff --git a/plugins/Updater/bzip2-1.0.3/bzip2.txt b/plugins/Updater/bzip2-1.0.3/bzip2.txt
new file mode 100644
index 0000000000..d2deb39491
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/bzip2.txt
@@ -0,0 +1,391 @@
+
+NAME
+       bzip2, bunzip2 - a block-sorting file compressor, v1.0.6
+       bzcat - decompresses files to stdout
+       bzip2recover - recovers data from damaged bzip2 files
+
+
+SYNOPSIS
+       bzip2 [ -cdfkqstvzVL123456789 ] [ filenames ...  ]
+       bunzip2 [ -fkvsVL ] [ filenames ...  ]
+       bzcat [ -s ] [ filenames ...  ]
+       bzip2recover filename
+
+
+DESCRIPTION
+       bzip2  compresses  files  using  the Burrows-Wheeler block
+       sorting text compression algorithm,  and  Huffman  coding.
+       Compression  is  generally  considerably  better than that
+       achieved by more conventional LZ77/LZ78-based compressors,
+       and  approaches  the performance of the PPM family of sta-
+       tistical compressors.
+
+       The command-line options are deliberately very similar  to
+       those of GNU gzip, but they are not identical.
+
+       bzip2  expects  a list of file names to accompany the com-
+       mand-line flags.  Each file is replaced  by  a  compressed
+       version  of  itself,  with  the  name "original_name.bz2".
+       Each compressed file has the same modification date,  per-
+       missions, and, when possible, ownership as the correspond-
+       ing original, so that these properties  can  be  correctly
+       restored  at  decompression  time.   File name handling is
+       naive in the sense that there is no mechanism for preserv-
+       ing  original file names, permissions, ownerships or dates
+       in filesystems which lack these concepts, or have  serious
+       file name length restrictions, such as MS-DOS.
+
+       bzip2  and  bunzip2 will by default not overwrite existing
+       files.  If you want this to happen, specify the -f flag.
+
+       If no file names  are  specified,  bzip2  compresses  from
+       standard  input  to  standard output.  In this case, bzip2
+       will decline to write compressed output to a terminal,  as
+       this  would  be  entirely  incomprehensible  and therefore
+       pointless.
+
+       bunzip2 (or bzip2 -d) decompresses  all  specified  files.
+       Files which were not created by bzip2 will be detected and
+       ignored, and a warning issued.  bzip2  attempts  to  guess
+       the  filename  for  the decompressed file from that of the
+       compressed file as follows:
+
+              filename.bz2    becomes   filename
+              filename.bz     becomes   filename
+              filename.tbz2   becomes   filename.tar
+              filename.tbz    becomes   filename.tar
+              anyothername    becomes   anyothername.out
+
+       If the file does not end in one of the recognised endings,
+       .bz2,  .bz,  .tbz2 or .tbz, bzip2 complains that it cannot
+       guess the name of the original file, and uses the original
+       name with .out appended.
+
+       As  with compression, supplying no filenames causes decom-
+       pression from standard input to standard output.
+
+       bunzip2 will correctly decompress a file which is the con-
+       catenation of two or more compressed files.  The result is
+       the concatenation of the corresponding uncompressed files.
+       Integrity testing (-t) of concatenated compressed files is
+       also supported.
+
+       You can also compress or decompress files to the  standard
+       output  by giving the -c flag.  Multiple files may be com-
+       pressed and decompressed like this.  The resulting outputs
+       are  fed  sequentially to stdout.  Compression of multiple
+       files in this manner generates a stream containing  multi-
+       ple compressed file representations.  Such a stream can be
+       decompressed correctly only  by  bzip2  version  0.9.0  or
+       later.   Earlier  versions of bzip2 will stop after decom-
+       pressing the first file in the stream.
+
+       bzcat (or bzip2 -dc) decompresses all specified  files  to
+       the standard output.
+
+       bzip2  will  read arguments from the environment variables
+       BZIP2 and BZIP, in  that  order,  and  will  process  them
+       before  any  arguments  read  from the command line.  This
+       gives a convenient way to supply default arguments.
+
+       Compression is always performed, even  if  the  compressed
+       file  is slightly larger than the original.  Files of less
+       than about one hundred bytes tend to get larger, since the
+       compression  mechanism  has  a  constant  overhead  in the
+       region of 50 bytes.  Random data (including the output  of
+       most  file  compressors)  is  coded at about 8.05 bits per
+       byte, giving an expansion of around 0.5%.
+
+       As a self-check for your  protection,  bzip2  uses  32-bit
+       CRCs  to make sure that the decompressed version of a file
+       is identical to the original.  This guards against corrup-
+       tion  of  the compressed data, and against undetected bugs
+       in bzip2 (hopefully very unlikely).  The chances  of  data
+       corruption  going  undetected  is  microscopic,  about one
+       chance in four billion for each file processed.  Be aware,
+       though,  that  the  check occurs upon decompression, so it
+       can only tell you that something is wrong.  It can't  help
+       you  recover  the original uncompressed data.  You can use
+       bzip2recover to try to recover data from damaged files.
+
+       Return values: 0 for a normal exit,  1  for  environmental
+       problems  (file not found, invalid flags, I/O errors, &c),
+       2 to indicate a corrupt compressed file, 3 for an internal
+       consistency error (eg, bug) which caused bzip2 to panic.
+
+
+OPTIONS
+       -c --stdout
+              Compress or decompress to standard output.
+
+       -d --decompress
+              Force  decompression.  bzip2, bunzip2 and bzcat are
+              really the same program,  and  the  decision  about
+              what  actions to take is done on the basis of which
+              name is used.  This flag overrides that  mechanism,
+              and forces bzip2 to decompress.
+
+       -z --compress
+              The   complement   to   -d:   forces   compression,
+              regardless of the invocation name.
+
+       -t --test
+              Check integrity of the specified file(s), but don't
+              decompress  them.   This  really  performs  a trial
+              decompression and throws away the result.
+
+       -f --force
+              Force overwrite of output files.   Normally,  bzip2
+              will  not  overwrite  existing  output files.  Also
+              forces bzip2 to break hard links to files, which it
+              otherwise wouldn't do.
+
+              bzip2  normally  declines to decompress files which
+              don't have the  correct  magic  header  bytes.   If
+              forced  (-f),  however,  it  will  pass  such files
+              through unmodified.  This is how GNU gzip  behaves.
+
+       -k --keep
+              Keep  (don't delete) input files during compression
+              or decompression.
+
+       -s --small
+              Reduce memory usage, for compression, decompression
+              and  testing.   Files  are  decompressed and tested
+              using a modified algorithm which only requires  2.5
+              bytes  per  block byte.  This means any file can be
+              decompressed in 2300k of memory,  albeit  at  about
+              half the normal speed.
+
+              During  compression,  -s  selects  a  block size of
+              200k, which limits memory use to  around  the  same
+              figure,  at  the expense of your compression ratio.
+              In short, if your  machine  is  low  on  memory  (8
+              megabytes  or  less),  use  -s for everything.  See
+              MEMORY MANAGEMENT below.
+
+       -q --quiet
+              Suppress non-essential warning messages.   Messages
+              pertaining  to I/O errors and other critical events
+              will not be suppressed.
+
+       -v --verbose
+              Verbose mode -- show the compression ratio for each
+              file  processed.   Further  -v's  increase the ver-
+              bosity level, spewing out lots of information which
+              is primarily of interest for diagnostic purposes.
+
+       -L --license -V --version
+              Display  the  software  version,  license terms and
+              conditions.
+
+       -1 (or --fast) to -9 (or --best)
+              Set the block size to 100 k, 200 k ..  900  k  when
+              compressing.   Has  no  effect  when decompressing.
+              See MEMORY MANAGEMENT below.  The --fast and --best
+              aliases  are  primarily for GNU gzip compatibility.
+              In particular, --fast doesn't make things  signifi-
+              cantly  faster.   And  --best  merely  selects  the
+              default behaviour.
+
+       --     Treats all subsequent arguments as file names, even
+              if they start with a dash.  This is so you can han-
+              dle files with names beginning  with  a  dash,  for
+              example: bzip2 -- -myfilename.
+
+       --repetitive-fast --repetitive-best
+              These  flags  are  redundant  in versions 0.9.5 and
+              above.  They provided some coarse control over  the
+              behaviour  of the sorting algorithm in earlier ver-
+              sions, which was sometimes useful.  0.9.5 and above
+              have  an  improved  algorithm  which  renders these
+              flags irrelevant.
+
+
+MEMORY MANAGEMENT
+       bzip2 compresses large files in blocks.   The  block  size
+       affects  both  the  compression  ratio  achieved,  and the
+       amount of memory needed for compression and decompression.
+       The  flags  -1  through  -9  specify  the block size to be
+       100,000 bytes through 900,000 bytes (the default)  respec-
+       tively.   At  decompression  time, the block size used for
+       compression is read from  the  header  of  the  compressed
+       file, and bunzip2 then allocates itself just enough memory
+       to decompress the file.  Since block sizes are  stored  in
+       compressed  files,  it follows that the flags -1 to -9 are
+       irrelevant to and so ignored during decompression.
+
+       Compression and decompression requirements, in bytes,  can
+       be estimated as:
+
+              Compression:   400k + ( 8 x block size )
+
+              Decompression: 100k + ( 4 x block size ), or
+                             100k + ( 2.5 x block size )
+
+       Larger  block  sizes  give  rapidly  diminishing  marginal
+       returns.  Most of the compression comes from the first two
+       or  three hundred k of block size, a fact worth bearing in
+       mind when using bzip2  on  small  machines.   It  is  also
+       important  to  appreciate  that  the  decompression memory
+       requirement is set at compression time by  the  choice  of
+       block size.
+
+       For  files  compressed  with  the default 900k block size,
+       bunzip2 will require about 3700 kbytes to decompress.   To
+       support decompression of any file on a 4 megabyte machine,
+       bunzip2 has an option to  decompress  using  approximately
+       half this amount of memory, about 2300 kbytes.  Decompres-
+       sion speed is also halved, so you should use  this  option
+       only where necessary.  The relevant flag is -s.
+
+       In general, try and use the largest block size memory con-
+       straints  allow,  since  that  maximises  the  compression
+       achieved.   Compression and decompression speed are virtu-
+       ally unaffected by block size.
+
+       Another significant point applies to files which fit in  a
+       single  block  --  that  means  most files you'd encounter
+       using a large block  size.   The  amount  of  real  memory
+       touched is proportional to the size of the file, since the
+       file is smaller than a block.  For example, compressing  a
+       file  20,000  bytes  long  with the flag -9 will cause the
+       compressor to allocate around 7600k of  memory,  but  only
+       touch 400k + 20000 * 8 = 560 kbytes of it.  Similarly, the
+       decompressor will allocate 3700k but  only  touch  100k  +
+       20000 * 4 = 180 kbytes.
+
+       Here  is a table which summarises the maximum memory usage
+       for different block sizes.  Also  recorded  is  the  total
+       compressed  size for 14 files of the Calgary Text Compres-
+       sion Corpus totalling 3,141,622 bytes.  This column  gives
+       some  feel  for  how  compression  varies with block size.
+       These figures tend to understate the advantage  of  larger
+       block  sizes  for  larger files, since the Corpus is domi-
+       nated by smaller files.
+
+                  Compress   Decompress   Decompress   Corpus
+           Flag     usage      usage       -s usage     Size
+
+            -1      1200k       500k         350k      914704
+            -2      2000k       900k         600k      877703
+            -3      2800k      1300k         850k      860338
+            -4      3600k      1700k        1100k      846899
+            -5      4400k      2100k        1350k      845160
+            -6      5200k      2500k        1600k      838626
+            -7      6100k      2900k        1850k      834096
+            -8      6800k      3300k        2100k      828642
+            -9      7600k      3700k        2350k      828642
+
+
+RECOVERING DATA FROM DAMAGED FILES
+       bzip2 compresses files in blocks, usually 900kbytes  long.
+       Each block is handled independently.  If a media or trans-
+       mission error causes a multi-block  .bz2  file  to  become
+       damaged,  it  may  be  possible  to  recover data from the
+       undamaged blocks in the file.
+
+       The compressed representation of each block  is  delimited
+       by  a  48-bit pattern, which makes it possible to find the
+       block boundaries with reasonable  certainty.   Each  block
+       also  carries its own 32-bit CRC, so damaged blocks can be
+       distinguished from undamaged ones.
+
+       bzip2recover is a  simple  program  whose  purpose  is  to
+       search  for blocks in .bz2 files, and write each block out
+       into its own .bz2 file.  You can then use bzip2 -t to test
+       the integrity of the resulting files, and decompress those
+       which are undamaged.
+
+       bzip2recover takes a single argument, the name of the dam-
+       aged    file,    and    writes    a    number   of   files
+       "rec00001file.bz2",  "rec00002file.bz2",  etc,  containing
+       the   extracted   blocks.   The   output   filenames   are
+       designed  so  that the use of wildcards in subsequent pro-
+       cessing  -- for example, "bzip2 -dc  rec*file.bz2 > recov-
+       ered_data" -- processes the files in the correct order.
+
+       bzip2recover should be of most use dealing with large .bz2
+       files,  as  these will contain many blocks.  It is clearly
+       futile to use it on damaged single-block  files,  since  a
+       damaged  block  cannot  be recovered.  If you wish to min-
+       imise any potential data loss through media  or  transmis-
+       sion errors, you might consider compressing with a smaller
+       block size.
+
+
+PERFORMANCE NOTES
+       The sorting phase of compression gathers together  similar
+       strings  in  the  file.  Because of this, files containing
+       very long runs of  repeated  symbols,  like  "aabaabaabaab
+       ..."   (repeated  several hundred times) may compress more
+       slowly than normal.  Versions 0.9.5 and  above  fare  much
+       better  than previous versions in this respect.  The ratio
+       between worst-case and average-case compression time is in
+       the  region  of  10:1.  For previous versions, this figure
+       was more like 100:1.  You can use the -vvvv option to mon-
+       itor progress in great detail, if you want.
+
+       Decompression speed is unaffected by these phenomena.
+
+       bzip2  usually  allocates  several  megabytes of memory to
+       operate in, and then charges all over it in a fairly  ran-
+       dom  fashion.   This means that performance, both for com-
+       pressing and decompressing, is largely determined  by  the
+       speed  at  which  your  machine  can service cache misses.
+       Because of this, small changes to the code to  reduce  the
+       miss  rate  have  been observed to give disproportionately
+       large performance improvements.  I imagine bzip2 will per-
+       form best on machines with very large caches.
+
+
+CAVEATS
+       I/O  error  messages  are not as helpful as they could be.
+       bzip2 tries hard to detect I/O errors  and  exit  cleanly,
+       but  the  details  of  what  the problem is sometimes seem
+       rather misleading.
+
+       This manual page pertains to version 1.0.6 of bzip2.  Com-
+       pressed  data created by this version is entirely forwards
+       and  backwards  compatible  with   the   previous   public
+       releases,  versions  0.1pl2,  0.9.0,  0.9.5, 1.0.0, 1.0.1,
+       1.0.2 and above, but with the  following  exception: 0.9.0
+       and above can  correctly decompress  multiple concatenated
+       compressed files.  0.1pl2  cannot do this;  it  will  stop
+       after  decompressing just the first file in the stream.
+
+       bzip2recover  versions prior to 1.0.2 used 32-bit integers
+       to represent bit positions in compressed  files,  so  they
+       could  not handle compressed files more than 512 megabytes
+       long.  Versions 1.0.2 and above use 64-bit  ints  on  some
+       platforms  which  support them (GNU supported targets, and
+       Windows).  To establish whether or  not  bzip2recover  was
+       built  with  such  a limitation, run it without arguments.
+       In any event you can build yourself an  unlimited  version
+       if  you  can  recompile  it  with MaybeUInt64 set to be an
+       unsigned 64-bit integer.
+
+
+AUTHOR
+       Julian Seward, jsewardbzip.org.
+
+       http://www.bzip.org
+
+       The ideas embodied in bzip2 are due to (at least) the fol-
+       lowing  people: Michael Burrows and David Wheeler (for the
+       block sorting transformation), David Wheeler  (again,  for
+       the Huffman coder), Peter Fenwick (for the structured cod-
+       ing model in the original bzip, and many refinements), and
+       Alistair  Moffat,  Radford  Neal  and  Ian Witten (for the
+       arithmetic  coder  in  the  original  bzip).   I  am  much
+       indebted for their help, support and advice.  See the man-
+       ual in the source distribution for pointers to sources  of
+       documentation.  Christian von Roques encouraged me to look
+       for faster sorting algorithms, so as to speed up  compres-
+       sion.  Bela Lubkin encouraged me to improve the worst-case
+       compression performance.  Donna Robinson XMLised the docu-
+       mentation.   The bz* scripts are derived from those of GNU
+       gzip.  Many people sent patches, helped  with  portability
+       problems,  lent  machines,  gave advice and were generally
+       helpful.
+
diff --git a/plugins/Updater/bzip2-1.0.3/bzip2recover.c b/plugins/Updater/bzip2-1.0.3/bzip2recover.c
new file mode 100644
index 0000000000..f9de0496ab
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/bzip2recover.c
@@ -0,0 +1,514 @@
+/*-----------------------------------------------------------*/
+/*--- Block recoverer program for bzip2                   ---*/
+/*---                                      bzip2recover.c ---*/
+/*-----------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+   This file is part of bzip2/libbzip2, a program and library for
+   lossless, block-sorting data compression.
+
+   bzip2/libbzip2 version 1.0.6 of 6 September 2010
+   Copyright (C) 1996-2010 Julian Seward 
+
+   Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+   README file.
+
+   This program is released under the terms of the license contained
+   in the file LICENSE.
+   ------------------------------------------------------------------ */
+
+/* This program is a complete hack and should be rewritten properly.
+	 It isn't very complicated. */
+
+#include 
+#include 
+#include 
+#include 
+
+
+/* This program records bit locations in the file to be recovered.
+   That means that if 64-bit ints are not supported, we will not
+   be able to recover .bz2 files over 512MB (2^32 bits) long.
+   On GNU supported platforms, we take advantage of the 64-bit
+   int support to circumvent this problem.  Ditto MSVC.
+
+   This change occurred in version 1.0.2; all prior versions have
+   the 512MB limitation.
+*/
+#ifdef __GNUC__
+   typedef  unsigned long long int  MaybeUInt64;
+#  define MaybeUInt64_FMT "%Lu"
+#else
+#ifdef _MSC_VER
+   typedef  unsigned __int64  MaybeUInt64;
+#  define MaybeUInt64_FMT "%I64u"
+#else
+   typedef  unsigned int   MaybeUInt64;
+#  define MaybeUInt64_FMT "%u"
+#endif
+#endif
+
+typedef  unsigned int   UInt32;
+typedef  int            Int32;
+typedef  unsigned char  UChar;
+typedef  char           Char;
+typedef  unsigned char  Bool;
+#define True    ((Bool)1)
+#define False   ((Bool)0)
+
+
+#define BZ_MAX_FILENAME 2000
+
+Char inFileName[BZ_MAX_FILENAME];
+Char outFileName[BZ_MAX_FILENAME];
+Char progName[BZ_MAX_FILENAME];
+
+MaybeUInt64 bytesOut = 0;
+MaybeUInt64 bytesIn  = 0;
+
+
+/*---------------------------------------------------*/
+/*--- Header bytes                                ---*/
+/*---------------------------------------------------*/
+
+#define BZ_HDR_B 0x42                         /* 'B' */
+#define BZ_HDR_Z 0x5a                         /* 'Z' */
+#define BZ_HDR_h 0x68                         /* 'h' */
+#define BZ_HDR_0 0x30                         /* '0' */
+ 
+
+/*---------------------------------------------------*/
+/*--- I/O errors                                  ---*/
+/*---------------------------------------------------*/
+
+/*---------------------------------------------*/
+static void readError ( void )
+{
+   fprintf ( stderr,
+             "%s: I/O error reading `%s', possible reason follows.\n",
+            progName, inFileName );
+   perror ( progName );
+   fprintf ( stderr, "%s: warning: output file(s) may be incomplete.\n",
+             progName );
+   exit ( 1 );
+}
+
+
+/*---------------------------------------------*/
+static void writeError ( void )
+{
+   fprintf ( stderr,
+             "%s: I/O error reading `%s', possible reason follows.\n",
+            progName, inFileName );
+   perror ( progName );
+   fprintf ( stderr, "%s: warning: output file(s) may be incomplete.\n",
+             progName );
+   exit ( 1 );
+}
+
+
+/*---------------------------------------------*/
+static void mallocFail ( Int32 n )
+{
+   fprintf ( stderr,
+             "%s: malloc failed on request for %d bytes.\n",
+            progName, n );
+   fprintf ( stderr, "%s: warning: output file(s) may be incomplete.\n",
+             progName );
+   exit ( 1 );
+}
+
+
+/*---------------------------------------------*/
+static void tooManyBlocks ( Int32 max_handled_blocks )
+{
+   fprintf ( stderr,
+             "%s: `%s' appears to contain more than %d blocks\n",
+            progName, inFileName, max_handled_blocks );
+   fprintf ( stderr,
+             "%s: and cannot be handled.  To fix, increase\n",
+             progName );
+   fprintf ( stderr, 
+             "%s: BZ_MAX_HANDLED_BLOCKS in bzip2recover.c, and recompile.\n",
+             progName );
+   exit ( 1 );
+}
+
+
+
+/*---------------------------------------------------*/
+/*--- Bit stream I/O                              ---*/
+/*---------------------------------------------------*/
+
+typedef
+   struct {
+      FILE*  handle;
+      Int32  buffer;
+      Int32  buffLive;
+      Char   mode;
+   }
+   BitStream;
+
+
+/*---------------------------------------------*/
+static BitStream* bsOpenReadStream ( FILE* stream )
+{
+   BitStream *bs = malloc ( sizeof(BitStream) );
+   if (bs == NULL) mallocFail ( sizeof(BitStream) );
+   bs->handle = stream;
+   bs->buffer = 0;
+   bs->buffLive = 0;
+   bs->mode = 'r';
+   return bs;
+}
+
+
+/*---------------------------------------------*/
+static BitStream* bsOpenWriteStream ( FILE* stream )
+{
+   BitStream *bs = malloc ( sizeof(BitStream) );
+   if (bs == NULL) mallocFail ( sizeof(BitStream) );
+   bs->handle = stream;
+   bs->buffer = 0;
+   bs->buffLive = 0;
+   bs->mode = 'w';
+   return bs;
+}
+
+
+/*---------------------------------------------*/
+static void bsPutBit ( BitStream* bs, Int32 bit )
+{
+   if (bs->buffLive == 8) {
+      Int32 retVal = putc ( (UChar) bs->buffer, bs->handle );
+      if (retVal == EOF) writeError();
+      bytesOut++;
+      bs->buffLive = 1;
+      bs->buffer = bit & 0x1;
+   } else {
+      bs->buffer = ( (bs->buffer << 1) | (bit & 0x1) );
+      bs->buffLive++;
+   };
+}
+
+
+/*---------------------------------------------*/
+/*--
+   Returns 0 or 1, or 2 to indicate EOF.
+--*/
+static Int32 bsGetBit ( BitStream* bs )
+{
+   if (bs->buffLive > 0) {
+      bs->buffLive --;
+      return ( ((bs->buffer) >> (bs->buffLive)) & 0x1 );
+   } else {
+      Int32 retVal = getc ( bs->handle );
+      if ( retVal == EOF ) {
+         if (errno != 0) readError();
+         return 2;
+      }
+      bs->buffLive = 7;
+      bs->buffer = retVal;
+      return ( ((bs->buffer) >> 7) & 0x1 );
+   }
+}
+
+
+/*---------------------------------------------*/
+static void bsClose ( BitStream* bs )
+{
+   Int32 retVal;
+
+   if ( bs->mode == 'w' ) {
+      while ( bs->buffLive < 8 ) {
+         bs->buffLive++;
+         bs->buffer <<= 1;
+      };
+      retVal = putc ( (UChar) (bs->buffer), bs->handle );
+      if (retVal == EOF) writeError();
+      bytesOut++;
+      retVal = fflush ( bs->handle );
+      if (retVal == EOF) writeError();
+   }
+   retVal = fclose ( bs->handle );
+   if (retVal == EOF) {
+      if (bs->mode == 'w') writeError(); else readError();
+   }
+   free ( bs );
+}
+
+
+/*---------------------------------------------*/
+static void bsPutUChar ( BitStream* bs, UChar c )
+{
+   Int32 i;
+   for (i = 7; i >= 0; i--)
+      bsPutBit ( bs, (((UInt32) c) >> i) & 0x1 );
+}
+
+
+/*---------------------------------------------*/
+static void bsPutUInt32 ( BitStream* bs, UInt32 c )
+{
+   Int32 i;
+
+   for (i = 31; i >= 0; i--)
+      bsPutBit ( bs, (c >> i) & 0x1 );
+}
+
+
+/*---------------------------------------------*/
+static Bool endsInBz2 ( Char* name )
+{
+   Int32 n = strlen ( name );
+   if (n <= 4) return False;
+   return
+      (name[n-4] == '.' &&
+       name[n-3] == 'b' &&
+       name[n-2] == 'z' &&
+       name[n-1] == '2');
+}
+
+
+/*---------------------------------------------------*/
+/*---                                             ---*/
+/*---------------------------------------------------*/
+
+/* This logic isn't really right when it comes to Cygwin. */
+#ifdef _WIN32
+#  define  BZ_SPLIT_SYM  '\\'  /* path splitter on Windows platform */
+#else
+#  define  BZ_SPLIT_SYM  '/'   /* path splitter on Unix platform */
+#endif
+
+#define BLOCK_HEADER_HI  0x00003141UL
+#define BLOCK_HEADER_LO  0x59265359UL
+
+#define BLOCK_ENDMARK_HI 0x00001772UL
+#define BLOCK_ENDMARK_LO 0x45385090UL
+
+/* Increase if necessary.  However, a .bz2 file with > 50000 blocks
+   would have an uncompressed size of at least 40GB, so the chances
+   are low you'll need to up this.
+*/
+#define BZ_MAX_HANDLED_BLOCKS 50000
+
+MaybeUInt64 bStart [BZ_MAX_HANDLED_BLOCKS];
+MaybeUInt64 bEnd   [BZ_MAX_HANDLED_BLOCKS];
+MaybeUInt64 rbStart[BZ_MAX_HANDLED_BLOCKS];
+MaybeUInt64 rbEnd  [BZ_MAX_HANDLED_BLOCKS];
+
+Int32 main ( Int32 argc, Char** argv )
+{
+   FILE*       inFile;
+   FILE*       outFile;
+   BitStream*  bsIn, *bsWr;
+   Int32       b, wrBlock, currBlock, rbCtr;
+   MaybeUInt64 bitsRead;
+
+   UInt32      buffHi, buffLo, blockCRC;
+   Char*       p;
+
+   strcpy ( progName, argv[0] );
+   inFileName[0] = outFileName[0] = 0;
+
+   fprintf ( stderr, 
+             "bzip2recover 1.0.6: extracts blocks from damaged .bz2 files.\n" );
+
+   if (argc != 2) {
+      fprintf ( stderr, "%s: usage is `%s damaged_file_name'.\n",
+                        progName, progName );
+      switch (sizeof(MaybeUInt64)) {
+         case 8:
+            fprintf(stderr, 
+                    "\trestrictions on size of recovered file: None\n");
+            break;
+         case 4:
+            fprintf(stderr, 
+                    "\trestrictions on size of recovered file: 512 MB\n");
+            fprintf(stderr, 
+                    "\tto circumvent, recompile with MaybeUInt64 as an\n"
+                    "\tunsigned 64-bit int.\n");
+            break;
+         default:
+            fprintf(stderr, 
+                    "\tsizeof(MaybeUInt64) is not 4 or 8 -- "
+                    "configuration error.\n");
+            break;
+      }
+      exit(1);
+   }
+
+   if (strlen(argv[1]) >= BZ_MAX_FILENAME-20) {
+      fprintf ( stderr, 
+                "%s: supplied filename is suspiciously (>= %d chars) long.  Bye!\n",
+                progName, (int)strlen(argv[1]) );
+      exit(1);
+   }
+
+   strcpy ( inFileName, argv[1] );
+
+   inFile = fopen ( inFileName, "rb" );
+   if (inFile == NULL) {
+      fprintf ( stderr, "%s: can't read `%s'\n", progName, inFileName );
+      exit(1);
+   }
+
+   bsIn = bsOpenReadStream ( inFile );
+   fprintf ( stderr, "%s: searching for block boundaries ...\n", progName );
+
+   bitsRead = 0;
+   buffHi = buffLo = 0;
+   currBlock = 0;
+   bStart[currBlock] = 0;
+
+   rbCtr = 0;
+
+   while (True) {
+      b = bsGetBit ( bsIn );
+      bitsRead++;
+      if (b == 2) {
+         if (bitsRead >= bStart[currBlock] &&
+            (bitsRead - bStart[currBlock]) >= 40) {
+            bEnd[currBlock] = bitsRead-1;
+            if (currBlock > 0)
+               fprintf ( stderr, "   block %d runs from " MaybeUInt64_FMT 
+                                 " to " MaybeUInt64_FMT " (incomplete)\n",
+                         currBlock,  bStart[currBlock], bEnd[currBlock] );
+         } else
+            currBlock--;
+         break;
+      }
+      buffHi = (buffHi << 1) | (buffLo >> 31);
+      buffLo = (buffLo << 1) | (b & 1);
+      if ( ( (buffHi & 0x0000ffff) == BLOCK_HEADER_HI 
+             && buffLo == BLOCK_HEADER_LO)
+           || 
+           ( (buffHi & 0x0000ffff) == BLOCK_ENDMARK_HI 
+             && buffLo == BLOCK_ENDMARK_LO)
+         ) {
+         if (bitsRead > 49) {
+            bEnd[currBlock] = bitsRead-49;
+         } else {
+            bEnd[currBlock] = 0;
+         }
+         if (currBlock > 0 &&
+	     (bEnd[currBlock] - bStart[currBlock]) >= 130) {
+            fprintf ( stderr, "   block %d runs from " MaybeUInt64_FMT 
+                              " to " MaybeUInt64_FMT "\n",
+                      rbCtr+1,  bStart[currBlock], bEnd[currBlock] );
+            rbStart[rbCtr] = bStart[currBlock];
+            rbEnd[rbCtr] = bEnd[currBlock];
+            rbCtr++;
+         }
+         if (currBlock >= BZ_MAX_HANDLED_BLOCKS)
+            tooManyBlocks(BZ_MAX_HANDLED_BLOCKS);
+         currBlock++;
+
+         bStart[currBlock] = bitsRead;
+      }
+   }
+
+   bsClose ( bsIn );
+
+   /*-- identified blocks run from 1 to rbCtr inclusive. --*/
+
+   if (rbCtr < 1) {
+      fprintf ( stderr,
+                "%s: sorry, I couldn't find any block boundaries.\n",
+                progName );
+      exit(1);
+   };
+
+   fprintf ( stderr, "%s: splitting into blocks\n", progName );
+
+   inFile = fopen ( inFileName, "rb" );
+   if (inFile == NULL) {
+      fprintf ( stderr, "%s: can't open `%s'\n", progName, inFileName );
+      exit(1);
+   }
+   bsIn = bsOpenReadStream ( inFile );
+
+   /*-- placate gcc's dataflow analyser --*/
+   blockCRC = 0; bsWr = 0;
+
+   bitsRead = 0;
+   outFile = NULL;
+   wrBlock = 0;
+   while (True) {
+      b = bsGetBit(bsIn);
+      if (b == 2) break;
+      buffHi = (buffHi << 1) | (buffLo >> 31);
+      buffLo = (buffLo << 1) | (b & 1);
+      if (bitsRead == 47+rbStart[wrBlock]) 
+         blockCRC = (buffHi << 16) | (buffLo >> 16);
+
+      if (outFile != NULL && bitsRead >= rbStart[wrBlock]
+                          && bitsRead <= rbEnd[wrBlock]) {
+         bsPutBit ( bsWr, b );
+      }
+
+      bitsRead++;
+
+      if (bitsRead == rbEnd[wrBlock]+1) {
+         if (outFile != NULL) {
+            bsPutUChar ( bsWr, 0x17 ); bsPutUChar ( bsWr, 0x72 );
+            bsPutUChar ( bsWr, 0x45 ); bsPutUChar ( bsWr, 0x38 );
+            bsPutUChar ( bsWr, 0x50 ); bsPutUChar ( bsWr, 0x90 );
+            bsPutUInt32 ( bsWr, blockCRC );
+            bsClose ( bsWr );
+         }
+         if (wrBlock >= rbCtr) break;
+         wrBlock++;
+      } else
+      if (bitsRead == rbStart[wrBlock]) {
+         /* Create the output file name, correctly handling leading paths. 
+            (31.10.2001 by Sergey E. Kusikov) */
+         Char* split;
+         Int32 ofs, k;
+         for (k = 0; k < BZ_MAX_FILENAME; k++) 
+            outFileName[k] = 0;
+         strcpy (outFileName, inFileName);
+         split = strrchr (outFileName, BZ_SPLIT_SYM);
+         if (split == NULL) {
+            split = outFileName;
+         } else {
+            ++split;
+	 }
+	 /* Now split points to the start of the basename. */
+         ofs  = split - outFileName;
+         sprintf (split, "rec%5d", wrBlock+1);
+         for (p = split; *p != 0; p++) if (*p == ' ') *p = '0';
+         strcat (outFileName, inFileName + ofs);
+
+         if ( !endsInBz2(outFileName)) strcat ( outFileName, ".bz2" );
+
+         fprintf ( stderr, "   writing block %d to `%s' ...\n",
+                           wrBlock+1, outFileName );
+
+         outFile = fopen ( outFileName, "wb" );
+         if (outFile == NULL) {
+            fprintf ( stderr, "%s: can't write `%s'\n",
+                      progName, outFileName );
+            exit(1);
+         }
+         bsWr = bsOpenWriteStream ( outFile );
+         bsPutUChar ( bsWr, BZ_HDR_B );    
+         bsPutUChar ( bsWr, BZ_HDR_Z );    
+         bsPutUChar ( bsWr, BZ_HDR_h );    
+         bsPutUChar ( bsWr, BZ_HDR_0 + 9 );
+         bsPutUChar ( bsWr, 0x31 ); bsPutUChar ( bsWr, 0x41 );
+         bsPutUChar ( bsWr, 0x59 ); bsPutUChar ( bsWr, 0x26 );
+         bsPutUChar ( bsWr, 0x53 ); bsPutUChar ( bsWr, 0x59 );
+      }
+   }
+
+   fprintf ( stderr, "%s: finished\n", progName );
+   return 0;
+}
+
+
+
+/*-----------------------------------------------------------*/
+/*--- end                                  bzip2recover.c ---*/
+/*-----------------------------------------------------------*/
diff --git a/plugins/Updater/bzip2-1.0.3/bzlib.c b/plugins/Updater/bzip2-1.0.3/bzlib.c
new file mode 100644
index 0000000000..bd358a793b
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/bzlib.c
@@ -0,0 +1,1572 @@
+
+/*-------------------------------------------------------------*/
+/*--- Library top-level functions.                          ---*/
+/*---                                               bzlib.c ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+   This file is part of bzip2/libbzip2, a program and library for
+   lossless, block-sorting data compression.
+
+   bzip2/libbzip2 version 1.0.6 of 6 September 2010
+   Copyright (C) 1996-2010 Julian Seward 
+
+   Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+   README file.
+
+   This program is released under the terms of the license contained
+   in the file LICENSE.
+   ------------------------------------------------------------------ */
+
+/* CHANGES
+   0.9.0    -- original version.
+   0.9.0a/b -- no changes in this file.
+   0.9.0c   -- made zero-length BZ_FLUSH work correctly in bzCompress().
+     fixed bzWrite/bzRead to ignore zero-length requests.
+     fixed bzread to correctly handle read requests after EOF.
+     wrong parameter order in call to bzDecompressInit in
+     bzBuffToBuffDecompress.  Fixed.
+*/
+
+#include "bzlib_private.h"
+
+
+/*---------------------------------------------------*/
+/*--- Compression stuff                           ---*/
+/*---------------------------------------------------*/
+
+
+/*---------------------------------------------------*/
+#ifndef BZ_NO_STDIO
+void BZ2_bz__AssertH__fail ( int errcode )
+{
+   fprintf(stderr, 
+      "\n\nbzip2/libbzip2: internal error number %d.\n"
+      "This is a bug in bzip2/libbzip2, %s.\n"
+      "Please report it to me at: jseward@bzip.org.  If this happened\n"
+      "when you were using some program which uses libbzip2 as a\n"
+      "component, you should also report this bug to the author(s)\n"
+      "of that program.  Please make an effort to report this bug;\n"
+      "timely and accurate bug reports eventually lead to higher\n"
+      "quality software.  Thanks.  Julian Seward, 10 December 2007.\n\n",
+      errcode,
+      BZ2_bzlibVersion()
+   );
+
+   if (errcode == 1007) {
+   fprintf(stderr,
+      "\n*** A special note about internal error number 1007 ***\n"
+      "\n"
+      "Experience suggests that a common cause of i.e. 1007\n"
+      "is unreliable memory or other hardware.  The 1007 assertion\n"
+      "just happens to cross-check the results of huge numbers of\n"
+      "memory reads/writes, and so acts (unintendedly) as a stress\n"
+      "test of your memory system.\n"
+      "\n"
+      "I suggest the following: try compressing the file again,\n"
+      "possibly monitoring progress in detail with the -vv flag.\n"
+      "\n"
+      "* If the error cannot be reproduced, and/or happens at different\n"
+      "  points in compression, you may have a flaky memory system.\n"
+      "  Try a memory-test program.  I have used Memtest86\n"
+      "  (www.memtest86.com).  At the time of writing it is free (GPLd).\n"
+      "  Memtest86 tests memory much more thorougly than your BIOSs\n"
+      "  power-on test, and may find failures that the BIOS doesn't.\n"
+      "\n"
+      "* If the error can be repeatably reproduced, this is a bug in\n"
+      "  bzip2, and I would very much like to hear about it.  Please\n"
+      "  let me know, and, ideally, save a copy of the file causing the\n"
+      "  problem -- without which I will be unable to investigate it.\n"
+      "\n"
+   );
+   }
+
+   exit(3);
+}
+#endif
+
+
+/*---------------------------------------------------*/
+static
+int bz_config_ok ( void )
+{
+   if (sizeof(int)   != 4) return 0;
+   if (sizeof(short) != 2) return 0;
+   if (sizeof(char)  != 1) return 0;
+   return 1;
+}
+
+
+/*---------------------------------------------------*/
+static
+void* default_bzalloc ( void* opaque, Int32 items, Int32 size )
+{
+   void* v = malloc ( items * size );
+   return v;
+}
+
+static
+void default_bzfree ( void* opaque, void* addr )
+{
+   if (addr != NULL) free ( addr );
+}
+
+
+/*---------------------------------------------------*/
+static
+void prepare_new_block ( EState* s )
+{
+   Int32 i;
+   s->nblock = 0;
+   s->numZ = 0;
+   s->state_out_pos = 0;
+   BZ_INITIALISE_CRC ( s->blockCRC );
+   for (i = 0; i < 256; i++) s->inUse[i] = False;
+   s->blockNo++;
+}
+
+
+/*---------------------------------------------------*/
+static
+void init_RL ( EState* s )
+{
+   s->state_in_ch  = 256;
+   s->state_in_len = 0;
+}
+
+
+static
+Bool isempty_RL ( EState* s )
+{
+   if (s->state_in_ch < 256 && s->state_in_len > 0)
+      return False; else
+      return True;
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzCompressInit) 
+                    ( bz_stream* strm, 
+                     int        blockSize100k,
+                     int        verbosity,
+                     int        workFactor )
+{
+   Int32   n;
+   EState* s;
+
+   if (!bz_config_ok()) return BZ_CONFIG_ERROR;
+
+   if (strm == NULL || 
+       blockSize100k < 1 || blockSize100k > 9 ||
+       workFactor < 0 || workFactor > 250)
+     return BZ_PARAM_ERROR;
+
+   if (workFactor == 0) workFactor = 30;
+   if (strm->bzalloc == NULL) strm->bzalloc = default_bzalloc;
+   if (strm->bzfree == NULL) strm->bzfree = default_bzfree;
+
+   s = BZALLOC( sizeof(EState) );
+   if (s == NULL) return BZ_MEM_ERROR;
+   s->strm = strm;
+
+   s->arr1 = NULL;
+   s->arr2 = NULL;
+   s->ftab = NULL;
+
+   n       = 100000 * blockSize100k;
+   s->arr1 = BZALLOC( n                  * sizeof(UInt32) );
+   s->arr2 = BZALLOC( (n+BZ_N_OVERSHOOT) * sizeof(UInt32) );
+   s->ftab = BZALLOC( 65537              * sizeof(UInt32) );
+
+   if (s->arr1 == NULL || s->arr2 == NULL || s->ftab == NULL) {
+      if (s->arr1 != NULL) BZFREE(s->arr1);
+      if (s->arr2 != NULL) BZFREE(s->arr2);
+      if (s->ftab != NULL) BZFREE(s->ftab);
+      if (s       != NULL) BZFREE(s);
+      return BZ_MEM_ERROR;
+   }
+
+   s->blockNo           = 0;
+   s->state             = BZ_S_INPUT;
+   s->mode              = BZ_M_RUNNING;
+   s->combinedCRC       = 0;
+   s->blockSize100k     = blockSize100k;
+   s->nblockMAX         = 100000 * blockSize100k - 19;
+   s->verbosity         = verbosity;
+   s->workFactor        = workFactor;
+
+   s->block             = (UChar*)s->arr2;
+   s->mtfv              = (UInt16*)s->arr1;
+   s->zbits             = NULL;
+   s->ptr               = (UInt32*)s->arr1;
+
+   strm->state          = s;
+   strm->total_in_lo32  = 0;
+   strm->total_in_hi32  = 0;
+   strm->total_out_lo32 = 0;
+   strm->total_out_hi32 = 0;
+   init_RL ( s );
+   prepare_new_block ( s );
+   return BZ_OK;
+}
+
+
+/*---------------------------------------------------*/
+static
+void add_pair_to_block ( EState* s )
+{
+   Int32 i;
+   UChar ch = (UChar)(s->state_in_ch);
+   for (i = 0; i < s->state_in_len; i++) {
+      BZ_UPDATE_CRC( s->blockCRC, ch );
+   }
+   s->inUse[s->state_in_ch] = True;
+   switch (s->state_in_len) {
+      case 1:
+         s->block[s->nblock] = (UChar)ch; s->nblock++;
+         break;
+      case 2:
+         s->block[s->nblock] = (UChar)ch; s->nblock++;
+         s->block[s->nblock] = (UChar)ch; s->nblock++;
+         break;
+      case 3:
+         s->block[s->nblock] = (UChar)ch; s->nblock++;
+         s->block[s->nblock] = (UChar)ch; s->nblock++;
+         s->block[s->nblock] = (UChar)ch; s->nblock++;
+         break;
+      default:
+         s->inUse[s->state_in_len-4] = True;
+         s->block[s->nblock] = (UChar)ch; s->nblock++;
+         s->block[s->nblock] = (UChar)ch; s->nblock++;
+         s->block[s->nblock] = (UChar)ch; s->nblock++;
+         s->block[s->nblock] = (UChar)ch; s->nblock++;
+         s->block[s->nblock] = ((UChar)(s->state_in_len-4));
+         s->nblock++;
+         break;
+   }
+}
+
+
+/*---------------------------------------------------*/
+static
+void flush_RL ( EState* s )
+{
+   if (s->state_in_ch < 256) add_pair_to_block ( s );
+   init_RL ( s );
+}
+
+
+/*---------------------------------------------------*/
+#define ADD_CHAR_TO_BLOCK(zs,zchh0)               \
+{                                                 \
+   UInt32 zchh = (UInt32)(zchh0);                 \
+   /*-- fast track the common case --*/           \
+   if (zchh != zs->state_in_ch &&                 \
+       zs->state_in_len == 1) {                   \
+      UChar ch = (UChar)(zs->state_in_ch);        \
+      BZ_UPDATE_CRC( zs->blockCRC, ch );          \
+      zs->inUse[zs->state_in_ch] = True;          \
+      zs->block[zs->nblock] = (UChar)ch;          \
+      zs->nblock++;                               \
+      zs->state_in_ch = zchh;                     \
+   }                                              \
+   else                                           \
+   /*-- general, uncommon cases --*/              \
+   if (zchh != zs->state_in_ch ||                 \
+      zs->state_in_len == 255) {                  \
+      if (zs->state_in_ch < 256)                  \
+         add_pair_to_block ( zs );                \
+      zs->state_in_ch = zchh;                     \
+      zs->state_in_len = 1;                       \
+   } else {                                       \
+      zs->state_in_len++;                         \
+   }                                              \
+}
+
+
+/*---------------------------------------------------*/
+static
+Bool copy_input_until_stop ( EState* s )
+{
+   Bool progress_in = False;
+
+   if (s->mode == BZ_M_RUNNING) {
+
+      /*-- fast track the common case --*/
+      while (True) {
+         /*-- block full? --*/
+         if (s->nblock >= s->nblockMAX) break;
+         /*-- no input? --*/
+         if (s->strm->avail_in == 0) break;
+         progress_in = True;
+         ADD_CHAR_TO_BLOCK ( s, (UInt32)(*((UChar*)(s->strm->next_in))) ); 
+         s->strm->next_in++;
+         s->strm->avail_in--;
+         s->strm->total_in_lo32++;
+         if (s->strm->total_in_lo32 == 0) s->strm->total_in_hi32++;
+      }
+
+   } else {
+
+      /*-- general, uncommon case --*/
+      while (True) {
+         /*-- block full? --*/
+         if (s->nblock >= s->nblockMAX) break;
+         /*-- no input? --*/
+         if (s->strm->avail_in == 0) break;
+         /*-- flush/finish end? --*/
+         if (s->avail_in_expect == 0) break;
+         progress_in = True;
+         ADD_CHAR_TO_BLOCK ( s, (UInt32)(*((UChar*)(s->strm->next_in))) ); 
+         s->strm->next_in++;
+         s->strm->avail_in--;
+         s->strm->total_in_lo32++;
+         if (s->strm->total_in_lo32 == 0) s->strm->total_in_hi32++;
+         s->avail_in_expect--;
+      }
+   }
+   return progress_in;
+}
+
+
+/*---------------------------------------------------*/
+static
+Bool copy_output_until_stop ( EState* s )
+{
+   Bool progress_out = False;
+
+   while (True) {
+
+      /*-- no output space? --*/
+      if (s->strm->avail_out == 0) break;
+
+      /*-- block done? --*/
+      if (s->state_out_pos >= s->numZ) break;
+
+      progress_out = True;
+      *(s->strm->next_out) = s->zbits[s->state_out_pos];
+      s->state_out_pos++;
+      s->strm->avail_out--;
+      s->strm->next_out++;
+      s->strm->total_out_lo32++;
+      if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++;
+   }
+
+   return progress_out;
+}
+
+
+/*---------------------------------------------------*/
+static
+Bool handle_compress ( bz_stream* strm )
+{
+   Bool progress_in  = False;
+   Bool progress_out = False;
+   EState* s = strm->state;
+   
+   while (True) {
+
+      if (s->state == BZ_S_OUTPUT) {
+         progress_out |= copy_output_until_stop ( s );
+         if (s->state_out_pos < s->numZ) break;
+         if (s->mode == BZ_M_FINISHING && 
+             s->avail_in_expect == 0 &&
+             isempty_RL(s)) break;
+         prepare_new_block ( s );
+         s->state = BZ_S_INPUT;
+         if (s->mode == BZ_M_FLUSHING && 
+             s->avail_in_expect == 0 &&
+             isempty_RL(s)) break;
+      }
+
+      if (s->state == BZ_S_INPUT) {
+         progress_in |= copy_input_until_stop ( s );
+         if (s->mode != BZ_M_RUNNING && s->avail_in_expect == 0) {
+            flush_RL ( s );
+            BZ2_compressBlock ( s, (Bool)(s->mode == BZ_M_FINISHING) );
+            s->state = BZ_S_OUTPUT;
+         }
+         else
+         if (s->nblock >= s->nblockMAX) {
+            BZ2_compressBlock ( s, False );
+            s->state = BZ_S_OUTPUT;
+         }
+         else
+         if (s->strm->avail_in == 0) {
+            break;
+         }
+      }
+
+   }
+
+   return progress_in || progress_out;
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzCompress) ( bz_stream *strm, int action )
+{
+   Bool progress;
+   EState* s;
+   if (strm == NULL) return BZ_PARAM_ERROR;
+   s = strm->state;
+   if (s == NULL) return BZ_PARAM_ERROR;
+   if (s->strm != strm) return BZ_PARAM_ERROR;
+
+   preswitch:
+   switch (s->mode) {
+
+      case BZ_M_IDLE:
+         return BZ_SEQUENCE_ERROR;
+
+      case BZ_M_RUNNING:
+         if (action == BZ_RUN) {
+            progress = handle_compress ( strm );
+            return progress ? BZ_RUN_OK : BZ_PARAM_ERROR;
+         } 
+         else
+	 if (action == BZ_FLUSH) {
+            s->avail_in_expect = strm->avail_in;
+            s->mode = BZ_M_FLUSHING;
+            goto preswitch;
+         }
+         else
+         if (action == BZ_FINISH) {
+            s->avail_in_expect = strm->avail_in;
+            s->mode = BZ_M_FINISHING;
+            goto preswitch;
+         }
+         else 
+            return BZ_PARAM_ERROR;
+
+      case BZ_M_FLUSHING:
+         if (action != BZ_FLUSH) return BZ_SEQUENCE_ERROR;
+         if (s->avail_in_expect != s->strm->avail_in) 
+            return BZ_SEQUENCE_ERROR;
+         progress = handle_compress ( strm );
+         if (s->avail_in_expect > 0 || !isempty_RL(s) ||
+             s->state_out_pos < s->numZ) return BZ_FLUSH_OK;
+         s->mode = BZ_M_RUNNING;
+         return BZ_RUN_OK;
+
+      case BZ_M_FINISHING:
+         if (action != BZ_FINISH) return BZ_SEQUENCE_ERROR;
+         if (s->avail_in_expect != s->strm->avail_in) 
+            return BZ_SEQUENCE_ERROR;
+         progress = handle_compress ( strm );
+         if (!progress) return BZ_SEQUENCE_ERROR;
+         if (s->avail_in_expect > 0 || !isempty_RL(s) ||
+             s->state_out_pos < s->numZ) return BZ_FINISH_OK;
+         s->mode = BZ_M_IDLE;
+         return BZ_STREAM_END;
+   }
+   return BZ_OK; /*--not reached--*/
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzCompressEnd)  ( bz_stream *strm )
+{
+   EState* s;
+   if (strm == NULL) return BZ_PARAM_ERROR;
+   s = strm->state;
+   if (s == NULL) return BZ_PARAM_ERROR;
+   if (s->strm != strm) return BZ_PARAM_ERROR;
+
+   if (s->arr1 != NULL) BZFREE(s->arr1);
+   if (s->arr2 != NULL) BZFREE(s->arr2);
+   if (s->ftab != NULL) BZFREE(s->ftab);
+   BZFREE(strm->state);
+
+   strm->state = NULL;   
+
+   return BZ_OK;
+}
+
+
+/*---------------------------------------------------*/
+/*--- Decompression stuff                         ---*/
+/*---------------------------------------------------*/
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzDecompressInit) 
+                     ( bz_stream* strm, 
+                       int        verbosity,
+                       int        small )
+{
+   DState* s;
+
+   if (!bz_config_ok()) return BZ_CONFIG_ERROR;
+
+   if (strm == NULL) return BZ_PARAM_ERROR;
+   if (small != 0 && small != 1) return BZ_PARAM_ERROR;
+   if (verbosity < 0 || verbosity > 4) return BZ_PARAM_ERROR;
+
+   if (strm->bzalloc == NULL) strm->bzalloc = default_bzalloc;
+   if (strm->bzfree == NULL) strm->bzfree = default_bzfree;
+
+   s = BZALLOC( sizeof(DState) );
+   if (s == NULL) return BZ_MEM_ERROR;
+   s->strm                  = strm;
+   strm->state              = s;
+   s->state                 = BZ_X_MAGIC_1;
+   s->bsLive                = 0;
+   s->bsBuff                = 0;
+   s->calculatedCombinedCRC = 0;
+   strm->total_in_lo32      = 0;
+   strm->total_in_hi32      = 0;
+   strm->total_out_lo32     = 0;
+   strm->total_out_hi32     = 0;
+   s->smallDecompress       = (Bool)small;
+   s->ll4                   = NULL;
+   s->ll16                  = NULL;
+   s->tt                    = NULL;
+   s->currBlockNo           = 0;
+   s->verbosity             = verbosity;
+
+   return BZ_OK;
+}
+
+
+/*---------------------------------------------------*/
+/* Return  True iff data corruption is discovered.
+   Returns False if there is no problem.
+*/
+static
+Bool unRLE_obuf_to_output_FAST ( DState* s )
+{
+   UChar k1;
+
+   if (s->blockRandomised) {
+
+      while (True) {
+         /* try to finish existing run */
+         while (True) {
+            if (s->strm->avail_out == 0) return False;
+            if (s->state_out_len == 0) break;
+            *( (UChar*)(s->strm->next_out) ) = s->state_out_ch;
+            BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch );
+            s->state_out_len--;
+            s->strm->next_out++;
+            s->strm->avail_out--;
+            s->strm->total_out_lo32++;
+            if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++;
+         }
+
+         /* can a new run be started? */
+         if (s->nblock_used == s->save_nblock+1) return False;
+               
+         /* Only caused by corrupt data stream? */
+         if (s->nblock_used > s->save_nblock+1)
+            return True;
+   
+         s->state_out_len = 1;
+         s->state_out_ch = s->k0;
+         BZ_GET_FAST(k1); BZ_RAND_UPD_MASK; 
+         k1 ^= BZ_RAND_MASK; s->nblock_used++;
+         if (s->nblock_used == s->save_nblock+1) continue;
+         if (k1 != s->k0) { s->k0 = k1; continue; };
+   
+         s->state_out_len = 2;
+         BZ_GET_FAST(k1); BZ_RAND_UPD_MASK; 
+         k1 ^= BZ_RAND_MASK; s->nblock_used++;
+         if (s->nblock_used == s->save_nblock+1) continue;
+         if (k1 != s->k0) { s->k0 = k1; continue; };
+   
+         s->state_out_len = 3;
+         BZ_GET_FAST(k1); BZ_RAND_UPD_MASK; 
+         k1 ^= BZ_RAND_MASK; s->nblock_used++;
+         if (s->nblock_used == s->save_nblock+1) continue;
+         if (k1 != s->k0) { s->k0 = k1; continue; };
+   
+         BZ_GET_FAST(k1); BZ_RAND_UPD_MASK; 
+         k1 ^= BZ_RAND_MASK; s->nblock_used++;
+         s->state_out_len = ((Int32)k1) + 4;
+         BZ_GET_FAST(s->k0); BZ_RAND_UPD_MASK; 
+         s->k0 ^= BZ_RAND_MASK; s->nblock_used++;
+      }
+
+   } else {
+
+      /* restore */
+      UInt32        c_calculatedBlockCRC = s->calculatedBlockCRC;
+      UChar         c_state_out_ch       = s->state_out_ch;
+      Int32         c_state_out_len      = s->state_out_len;
+      Int32         c_nblock_used        = s->nblock_used;
+      Int32         c_k0                 = s->k0;
+      UInt32*       c_tt                 = s->tt;
+      UInt32        c_tPos               = s->tPos;
+      char*         cs_next_out          = s->strm->next_out;
+      unsigned int  cs_avail_out         = s->strm->avail_out;
+      Int32         ro_blockSize100k     = s->blockSize100k;
+      /* end restore */
+
+      UInt32       avail_out_INIT = cs_avail_out;
+      Int32        s_save_nblockPP = s->save_nblock+1;
+      unsigned int total_out_lo32_old;
+
+      while (True) {
+
+         /* try to finish existing run */
+         if (c_state_out_len > 0) {
+            while (True) {
+               if (cs_avail_out == 0) goto return_notr;
+               if (c_state_out_len == 1) break;
+               *( (UChar*)(cs_next_out) ) = c_state_out_ch;
+               BZ_UPDATE_CRC ( c_calculatedBlockCRC, c_state_out_ch );
+               c_state_out_len--;
+               cs_next_out++;
+               cs_avail_out--;
+            }
+            s_state_out_len_eq_one:
+            {
+               if (cs_avail_out == 0) { 
+                  c_state_out_len = 1; goto return_notr;
+               };
+               *( (UChar*)(cs_next_out) ) = c_state_out_ch;
+               BZ_UPDATE_CRC ( c_calculatedBlockCRC, c_state_out_ch );
+               cs_next_out++;
+               cs_avail_out--;
+            }
+         }   
+         /* Only caused by corrupt data stream? */
+         if (c_nblock_used > s_save_nblockPP)
+            return True;
+
+         /* can a new run be started? */
+         if (c_nblock_used == s_save_nblockPP) {
+            c_state_out_len = 0; goto return_notr;
+         };   
+         c_state_out_ch = c_k0;
+         BZ_GET_FAST_C(k1); c_nblock_used++;
+         if (k1 != c_k0) { 
+            c_k0 = k1; goto s_state_out_len_eq_one; 
+         };
+         if (c_nblock_used == s_save_nblockPP) 
+            goto s_state_out_len_eq_one;
+   
+         c_state_out_len = 2;
+         BZ_GET_FAST_C(k1); c_nblock_used++;
+         if (c_nblock_used == s_save_nblockPP) continue;
+         if (k1 != c_k0) { c_k0 = k1; continue; };
+   
+         c_state_out_len = 3;
+         BZ_GET_FAST_C(k1); c_nblock_used++;
+         if (c_nblock_used == s_save_nblockPP) continue;
+         if (k1 != c_k0) { c_k0 = k1; continue; };
+   
+         BZ_GET_FAST_C(k1); c_nblock_used++;
+         c_state_out_len = ((Int32)k1) + 4;
+         BZ_GET_FAST_C(c_k0); c_nblock_used++;
+      }
+
+      return_notr:
+      total_out_lo32_old = s->strm->total_out_lo32;
+      s->strm->total_out_lo32 += (avail_out_INIT - cs_avail_out);
+      if (s->strm->total_out_lo32 < total_out_lo32_old)
+         s->strm->total_out_hi32++;
+
+      /* save */
+      s->calculatedBlockCRC = c_calculatedBlockCRC;
+      s->state_out_ch       = c_state_out_ch;
+      s->state_out_len      = c_state_out_len;
+      s->nblock_used        = c_nblock_used;
+      s->k0                 = c_k0;
+      s->tt                 = c_tt;
+      s->tPos               = c_tPos;
+      s->strm->next_out     = cs_next_out;
+      s->strm->avail_out    = cs_avail_out;
+      /* end save */
+   }
+   return False;
+}
+
+
+
+/*---------------------------------------------------*/
+__inline__ Int32 BZ2_indexIntoF ( Int32 indx, Int32 *cftab )
+{
+   Int32 nb, na, mid;
+   nb = 0;
+   na = 256;
+   do {
+      mid = (nb + na) >> 1;
+      if (indx >= cftab[mid]) nb = mid; else na = mid;
+   }
+   while (na - nb != 1);
+   return nb;
+}
+
+
+/*---------------------------------------------------*/
+/* Return  True iff data corruption is discovered.
+   Returns False if there is no problem.
+*/
+static
+Bool unRLE_obuf_to_output_SMALL ( DState* s )
+{
+   UChar k1;
+
+   if (s->blockRandomised) {
+
+      while (True) {
+         /* try to finish existing run */
+         while (True) {
+            if (s->strm->avail_out == 0) return False;
+            if (s->state_out_len == 0) break;
+            *( (UChar*)(s->strm->next_out) ) = s->state_out_ch;
+            BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch );
+            s->state_out_len--;
+            s->strm->next_out++;
+            s->strm->avail_out--;
+            s->strm->total_out_lo32++;
+            if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++;
+         }
+   
+         /* can a new run be started? */
+         if (s->nblock_used == s->save_nblock+1) return False;
+
+         /* Only caused by corrupt data stream? */
+         if (s->nblock_used > s->save_nblock+1)
+            return True;
+   
+         s->state_out_len = 1;
+         s->state_out_ch = s->k0;
+         BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK; 
+         k1 ^= BZ_RAND_MASK; s->nblock_used++;
+         if (s->nblock_used == s->save_nblock+1) continue;
+         if (k1 != s->k0) { s->k0 = k1; continue; };
+   
+         s->state_out_len = 2;
+         BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK; 
+         k1 ^= BZ_RAND_MASK; s->nblock_used++;
+         if (s->nblock_used == s->save_nblock+1) continue;
+         if (k1 != s->k0) { s->k0 = k1; continue; };
+   
+         s->state_out_len = 3;
+         BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK; 
+         k1 ^= BZ_RAND_MASK; s->nblock_used++;
+         if (s->nblock_used == s->save_nblock+1) continue;
+         if (k1 != s->k0) { s->k0 = k1; continue; };
+   
+         BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK; 
+         k1 ^= BZ_RAND_MASK; s->nblock_used++;
+         s->state_out_len = ((Int32)k1) + 4;
+         BZ_GET_SMALL(s->k0); BZ_RAND_UPD_MASK; 
+         s->k0 ^= BZ_RAND_MASK; s->nblock_used++;
+      }
+
+   } else {
+
+      while (True) {
+         /* try to finish existing run */
+         while (True) {
+            if (s->strm->avail_out == 0) return False;
+            if (s->state_out_len == 0) break;
+            *( (UChar*)(s->strm->next_out) ) = s->state_out_ch;
+            BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch );
+            s->state_out_len--;
+            s->strm->next_out++;
+            s->strm->avail_out--;
+            s->strm->total_out_lo32++;
+            if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++;
+         }
+   
+         /* can a new run be started? */
+         if (s->nblock_used == s->save_nblock+1) return False;
+
+         /* Only caused by corrupt data stream? */
+         if (s->nblock_used > s->save_nblock+1)
+            return True;
+   
+         s->state_out_len = 1;
+         s->state_out_ch = s->k0;
+         BZ_GET_SMALL(k1); s->nblock_used++;
+         if (s->nblock_used == s->save_nblock+1) continue;
+         if (k1 != s->k0) { s->k0 = k1; continue; };
+   
+         s->state_out_len = 2;
+         BZ_GET_SMALL(k1); s->nblock_used++;
+         if (s->nblock_used == s->save_nblock+1) continue;
+         if (k1 != s->k0) { s->k0 = k1; continue; };
+   
+         s->state_out_len = 3;
+         BZ_GET_SMALL(k1); s->nblock_used++;
+         if (s->nblock_used == s->save_nblock+1) continue;
+         if (k1 != s->k0) { s->k0 = k1; continue; };
+   
+         BZ_GET_SMALL(k1); s->nblock_used++;
+         s->state_out_len = ((Int32)k1) + 4;
+         BZ_GET_SMALL(s->k0); s->nblock_used++;
+      }
+
+   }
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzDecompress) ( bz_stream *strm )
+{
+   Bool    corrupt;
+   DState* s;
+   if (strm == NULL) return BZ_PARAM_ERROR;
+   s = strm->state;
+   if (s == NULL) return BZ_PARAM_ERROR;
+   if (s->strm != strm) return BZ_PARAM_ERROR;
+
+   while (True) {
+      if (s->state == BZ_X_IDLE) return BZ_SEQUENCE_ERROR;
+      if (s->state == BZ_X_OUTPUT) {
+         if (s->smallDecompress)
+            corrupt = unRLE_obuf_to_output_SMALL ( s ); else
+            corrupt = unRLE_obuf_to_output_FAST  ( s );
+         if (corrupt) return BZ_DATA_ERROR;
+         if (s->nblock_used == s->save_nblock+1 && s->state_out_len == 0) {
+            BZ_FINALISE_CRC ( s->calculatedBlockCRC );
+            if (s->verbosity >= 3) 
+               VPrintf2 ( " {0x%08x, 0x%08x}", s->storedBlockCRC, 
+                          s->calculatedBlockCRC );
+            if (s->verbosity >= 2) VPrintf0 ( "]" );
+            if (s->calculatedBlockCRC != s->storedBlockCRC)
+               return BZ_DATA_ERROR;
+            s->calculatedCombinedCRC 
+               = (s->calculatedCombinedCRC << 1) | 
+                    (s->calculatedCombinedCRC >> 31);
+            s->calculatedCombinedCRC ^= s->calculatedBlockCRC;
+            s->state = BZ_X_BLKHDR_1;
+         } else {
+            return BZ_OK;
+         }
+      }
+      if (s->state >= BZ_X_MAGIC_1) {
+         Int32 r = BZ2_decompress ( s );
+         if (r == BZ_STREAM_END) {
+            if (s->verbosity >= 3)
+               VPrintf2 ( "\n    combined CRCs: stored = 0x%08x, computed = 0x%08x", 
+                          s->storedCombinedCRC, s->calculatedCombinedCRC );
+            if (s->calculatedCombinedCRC != s->storedCombinedCRC)
+               return BZ_DATA_ERROR;
+            return r;
+         }
+         if (s->state != BZ_X_OUTPUT) return r;
+      }
+   }
+
+   AssertH ( 0, 6001 );
+
+   return 0;  /*NOTREACHED*/
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzDecompressEnd)  ( bz_stream *strm )
+{
+   DState* s;
+   if (strm == NULL) return BZ_PARAM_ERROR;
+   s = strm->state;
+   if (s == NULL) return BZ_PARAM_ERROR;
+   if (s->strm != strm) return BZ_PARAM_ERROR;
+
+   if (s->tt   != NULL) BZFREE(s->tt);
+   if (s->ll16 != NULL) BZFREE(s->ll16);
+   if (s->ll4  != NULL) BZFREE(s->ll4);
+
+   BZFREE(strm->state);
+   strm->state = NULL;
+
+   return BZ_OK;
+}
+
+
+#ifndef BZ_NO_STDIO
+/*---------------------------------------------------*/
+/*--- File I/O stuff                              ---*/
+/*---------------------------------------------------*/
+
+#define BZ_SETERR(eee)                    \
+{                                         \
+   if (bzerror != NULL) *bzerror = eee;   \
+   if (bzf != NULL) bzf->lastErr = eee;   \
+}
+
+typedef 
+   struct {
+      FILE*     handle;
+      Char      buf[BZ_MAX_UNUSED];
+      Int32     bufN;
+      Bool      writing;
+      bz_stream strm;
+      Int32     lastErr;
+      Bool      initialisedOk;
+   }
+   bzFile;
+
+
+/*---------------------------------------------*/
+static Bool myfeof ( FILE* f )
+{
+   Int32 c = fgetc ( f );
+   if (c == EOF) return True;
+   ungetc ( c, f );
+   return False;
+}
+
+
+/*---------------------------------------------------*/
+BZFILE* BZ_API(BZ2_bzWriteOpen) 
+                    ( int*  bzerror,      
+                      FILE* f, 
+                      int   blockSize100k, 
+                      int   verbosity,
+                      int   workFactor )
+{
+   Int32   ret;
+   bzFile* bzf = NULL;
+
+   BZ_SETERR(BZ_OK);
+
+   if (f == NULL ||
+       (blockSize100k < 1 || blockSize100k > 9) ||
+       (workFactor < 0 || workFactor > 250) ||
+       (verbosity < 0 || verbosity > 4))
+      { BZ_SETERR(BZ_PARAM_ERROR); return NULL; };
+
+   if (ferror(f))
+      { BZ_SETERR(BZ_IO_ERROR); return NULL; };
+
+   bzf = malloc ( sizeof(bzFile) );
+   if (bzf == NULL)
+      { BZ_SETERR(BZ_MEM_ERROR); return NULL; };
+
+   BZ_SETERR(BZ_OK);
+   bzf->initialisedOk = False;
+   bzf->bufN          = 0;
+   bzf->handle        = f;
+   bzf->writing       = True;
+   bzf->strm.bzalloc  = NULL;
+   bzf->strm.bzfree   = NULL;
+   bzf->strm.opaque   = NULL;
+
+   if (workFactor == 0) workFactor = 30;
+   ret = BZ2_bzCompressInit ( &(bzf->strm), blockSize100k, 
+                              verbosity, workFactor );
+   if (ret != BZ_OK)
+      { BZ_SETERR(ret); free(bzf); return NULL; };
+
+   bzf->strm.avail_in = 0;
+   bzf->initialisedOk = True;
+   return bzf;   
+}
+
+
+
+/*---------------------------------------------------*/
+void BZ_API(BZ2_bzWrite)
+             ( int*    bzerror, 
+               BZFILE* b, 
+               void*   buf, 
+               int     len )
+{
+   Int32 n, n2, ret;
+   bzFile* bzf = (bzFile*)b;
+
+   BZ_SETERR(BZ_OK);
+   if (bzf == NULL || buf == NULL || len < 0)
+      { BZ_SETERR(BZ_PARAM_ERROR); return; };
+   if (!(bzf->writing))
+      { BZ_SETERR(BZ_SEQUENCE_ERROR); return; };
+   if (ferror(bzf->handle))
+      { BZ_SETERR(BZ_IO_ERROR); return; };
+
+   if (len == 0)
+      { BZ_SETERR(BZ_OK); return; };
+
+   bzf->strm.avail_in = len;
+   bzf->strm.next_in  = buf;
+
+   while (True) {
+      bzf->strm.avail_out = BZ_MAX_UNUSED;
+      bzf->strm.next_out = bzf->buf;
+      ret = BZ2_bzCompress ( &(bzf->strm), BZ_RUN );
+      if (ret != BZ_RUN_OK)
+         { BZ_SETERR(ret); return; };
+
+      if (bzf->strm.avail_out < BZ_MAX_UNUSED) {
+         n = BZ_MAX_UNUSED - bzf->strm.avail_out;
+         n2 = fwrite ( (void*)(bzf->buf), sizeof(UChar), 
+                       n, bzf->handle );
+         if (n != n2 || ferror(bzf->handle))
+            { BZ_SETERR(BZ_IO_ERROR); return; };
+      }
+
+      if (bzf->strm.avail_in == 0)
+         { BZ_SETERR(BZ_OK); return; };
+   }
+}
+
+
+/*---------------------------------------------------*/
+void BZ_API(BZ2_bzWriteClose)
+                  ( int*          bzerror, 
+                    BZFILE*       b, 
+                    int           abandon,
+                    unsigned int* nbytes_in,
+                    unsigned int* nbytes_out )
+{
+   BZ2_bzWriteClose64 ( bzerror, b, abandon, 
+                        nbytes_in, NULL, nbytes_out, NULL );
+}
+
+
+void BZ_API(BZ2_bzWriteClose64)
+                  ( int*          bzerror, 
+                    BZFILE*       b, 
+                    int           abandon,
+                    unsigned int* nbytes_in_lo32,
+                    unsigned int* nbytes_in_hi32,
+                    unsigned int* nbytes_out_lo32,
+                    unsigned int* nbytes_out_hi32 )
+{
+   Int32   n, n2, ret;
+   bzFile* bzf = (bzFile*)b;
+
+   if (bzf == NULL)
+      { BZ_SETERR(BZ_OK); return; };
+   if (!(bzf->writing))
+      { BZ_SETERR(BZ_SEQUENCE_ERROR); return; };
+   if (ferror(bzf->handle))
+      { BZ_SETERR(BZ_IO_ERROR); return; };
+
+   if (nbytes_in_lo32 != NULL) *nbytes_in_lo32 = 0;
+   if (nbytes_in_hi32 != NULL) *nbytes_in_hi32 = 0;
+   if (nbytes_out_lo32 != NULL) *nbytes_out_lo32 = 0;
+   if (nbytes_out_hi32 != NULL) *nbytes_out_hi32 = 0;
+
+   if ((!abandon) && bzf->lastErr == BZ_OK) {
+      while (True) {
+         bzf->strm.avail_out = BZ_MAX_UNUSED;
+         bzf->strm.next_out = bzf->buf;
+         ret = BZ2_bzCompress ( &(bzf->strm), BZ_FINISH );
+         if (ret != BZ_FINISH_OK && ret != BZ_STREAM_END)
+            { BZ_SETERR(ret); return; };
+
+         if (bzf->strm.avail_out < BZ_MAX_UNUSED) {
+            n = BZ_MAX_UNUSED - bzf->strm.avail_out;
+            n2 = fwrite ( (void*)(bzf->buf), sizeof(UChar), 
+                          n, bzf->handle );
+            if (n != n2 || ferror(bzf->handle))
+               { BZ_SETERR(BZ_IO_ERROR); return; };
+         }
+
+         if (ret == BZ_STREAM_END) break;
+      }
+   }
+
+   if ( !abandon && !ferror ( bzf->handle ) ) {
+      fflush ( bzf->handle );
+      if (ferror(bzf->handle))
+         { BZ_SETERR(BZ_IO_ERROR); return; };
+   }
+
+   if (nbytes_in_lo32 != NULL)
+      *nbytes_in_lo32 = bzf->strm.total_in_lo32;
+   if (nbytes_in_hi32 != NULL)
+      *nbytes_in_hi32 = bzf->strm.total_in_hi32;
+   if (nbytes_out_lo32 != NULL)
+      *nbytes_out_lo32 = bzf->strm.total_out_lo32;
+   if (nbytes_out_hi32 != NULL)
+      *nbytes_out_hi32 = bzf->strm.total_out_hi32;
+
+   BZ_SETERR(BZ_OK);
+   BZ2_bzCompressEnd ( &(bzf->strm) );
+   free ( bzf );
+}
+
+
+/*---------------------------------------------------*/
+BZFILE* BZ_API(BZ2_bzReadOpen) 
+                   ( int*  bzerror, 
+                     FILE* f, 
+                     int   verbosity,
+                     int   small,
+                     void* unused,
+                     int   nUnused )
+{
+   bzFile* bzf = NULL;
+   int     ret;
+
+   BZ_SETERR(BZ_OK);
+
+   if (f == NULL || 
+       (small != 0 && small != 1) ||
+       (verbosity < 0 || verbosity > 4) ||
+       (unused == NULL && nUnused != 0) ||
+       (unused != NULL && (nUnused < 0 || nUnused > BZ_MAX_UNUSED)))
+      { BZ_SETERR(BZ_PARAM_ERROR); return NULL; };
+
+   if (ferror(f))
+      { BZ_SETERR(BZ_IO_ERROR); return NULL; };
+
+   bzf = malloc ( sizeof(bzFile) );
+   if (bzf == NULL) 
+      { BZ_SETERR(BZ_MEM_ERROR); return NULL; };
+
+   BZ_SETERR(BZ_OK);
+
+   bzf->initialisedOk = False;
+   bzf->handle        = f;
+   bzf->bufN          = 0;
+   bzf->writing       = False;
+   bzf->strm.bzalloc  = NULL;
+   bzf->strm.bzfree   = NULL;
+   bzf->strm.opaque   = NULL;
+   
+   while (nUnused > 0) {
+      bzf->buf[bzf->bufN] = *((UChar*)(unused)); bzf->bufN++;
+      unused = ((void*)( 1 + ((UChar*)(unused))  ));
+      nUnused--;
+   }
+
+   ret = BZ2_bzDecompressInit ( &(bzf->strm), verbosity, small );
+   if (ret != BZ_OK)
+      { BZ_SETERR(ret); free(bzf); return NULL; };
+
+   bzf->strm.avail_in = bzf->bufN;
+   bzf->strm.next_in  = bzf->buf;
+
+   bzf->initialisedOk = True;
+   return bzf;   
+}
+
+
+/*---------------------------------------------------*/
+void BZ_API(BZ2_bzReadClose) ( int *bzerror, BZFILE *b )
+{
+   bzFile* bzf = (bzFile*)b;
+
+   BZ_SETERR(BZ_OK);
+   if (bzf == NULL)
+      { BZ_SETERR(BZ_OK); return; };
+
+   if (bzf->writing)
+      { BZ_SETERR(BZ_SEQUENCE_ERROR); return; };
+
+   if (bzf->initialisedOk)
+      (void)BZ2_bzDecompressEnd ( &(bzf->strm) );
+   free ( bzf );
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzRead) 
+           ( int*    bzerror, 
+             BZFILE* b, 
+             void*   buf, 
+             int     len )
+{
+   Int32   n, ret;
+   bzFile* bzf = (bzFile*)b;
+
+   BZ_SETERR(BZ_OK);
+
+   if (bzf == NULL || buf == NULL || len < 0)
+      { BZ_SETERR(BZ_PARAM_ERROR); return 0; };
+
+   if (bzf->writing)
+      { BZ_SETERR(BZ_SEQUENCE_ERROR); return 0; };
+
+   if (len == 0)
+      { BZ_SETERR(BZ_OK); return 0; };
+
+   bzf->strm.avail_out = len;
+   bzf->strm.next_out = buf;
+
+   while (True) {
+
+      if (ferror(bzf->handle)) 
+         { BZ_SETERR(BZ_IO_ERROR); return 0; };
+
+      if (bzf->strm.avail_in == 0 && !myfeof(bzf->handle)) {
+         n = fread ( bzf->buf, sizeof(UChar), 
+                     BZ_MAX_UNUSED, bzf->handle );
+         if (ferror(bzf->handle))
+            { BZ_SETERR(BZ_IO_ERROR); return 0; };
+         bzf->bufN = n;
+         bzf->strm.avail_in = bzf->bufN;
+         bzf->strm.next_in = bzf->buf;
+      }
+
+      ret = BZ2_bzDecompress ( &(bzf->strm) );
+
+      if (ret != BZ_OK && ret != BZ_STREAM_END)
+         { BZ_SETERR(ret); return 0; };
+
+      if (ret == BZ_OK && myfeof(bzf->handle) && 
+          bzf->strm.avail_in == 0 && bzf->strm.avail_out > 0)
+         { BZ_SETERR(BZ_UNEXPECTED_EOF); return 0; };
+
+      if (ret == BZ_STREAM_END)
+         { BZ_SETERR(BZ_STREAM_END);
+           return len - bzf->strm.avail_out; };
+      if (bzf->strm.avail_out == 0)
+         { BZ_SETERR(BZ_OK); return len; };
+      
+   }
+
+   return 0; /*not reached*/
+}
+
+
+/*---------------------------------------------------*/
+void BZ_API(BZ2_bzReadGetUnused) 
+                     ( int*    bzerror, 
+                       BZFILE* b, 
+                       void**  unused, 
+                       int*    nUnused )
+{
+   bzFile* bzf = (bzFile*)b;
+   if (bzf == NULL)
+      { BZ_SETERR(BZ_PARAM_ERROR); return; };
+   if (bzf->lastErr != BZ_STREAM_END)
+      { BZ_SETERR(BZ_SEQUENCE_ERROR); return; };
+   if (unused == NULL || nUnused == NULL)
+      { BZ_SETERR(BZ_PARAM_ERROR); return; };
+
+   BZ_SETERR(BZ_OK);
+   *nUnused = bzf->strm.avail_in;
+   *unused = bzf->strm.next_in;
+}
+#endif
+
+
+/*---------------------------------------------------*/
+/*--- Misc convenience stuff                      ---*/
+/*---------------------------------------------------*/
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzBuffToBuffCompress) 
+                         ( char*         dest, 
+                           unsigned int* destLen,
+                           char*         source, 
+                           unsigned int  sourceLen,
+                           int           blockSize100k, 
+                           int           verbosity, 
+                           int           workFactor )
+{
+   bz_stream strm;
+   int ret;
+
+   if (dest == NULL || destLen == NULL || 
+       source == NULL ||
+       blockSize100k < 1 || blockSize100k > 9 ||
+       verbosity < 0 || verbosity > 4 ||
+       workFactor < 0 || workFactor > 250) 
+      return BZ_PARAM_ERROR;
+
+   if (workFactor == 0) workFactor = 30;
+   strm.bzalloc = NULL;
+   strm.bzfree = NULL;
+   strm.opaque = NULL;
+   ret = BZ2_bzCompressInit ( &strm, blockSize100k, 
+                              verbosity, workFactor );
+   if (ret != BZ_OK) return ret;
+
+   strm.next_in = source;
+   strm.next_out = dest;
+   strm.avail_in = sourceLen;
+   strm.avail_out = *destLen;
+
+   ret = BZ2_bzCompress ( &strm, BZ_FINISH );
+   if (ret == BZ_FINISH_OK) goto output_overflow;
+   if (ret != BZ_STREAM_END) goto errhandler;
+
+   /* normal termination */
+   *destLen -= strm.avail_out;   
+   BZ2_bzCompressEnd ( &strm );
+   return BZ_OK;
+
+   output_overflow:
+   BZ2_bzCompressEnd ( &strm );
+   return BZ_OUTBUFF_FULL;
+
+   errhandler:
+   BZ2_bzCompressEnd ( &strm );
+   return ret;
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzBuffToBuffDecompress) 
+                           ( char*         dest, 
+                             unsigned int* destLen,
+                             char*         source, 
+                             unsigned int  sourceLen,
+                             int           small,
+                             int           verbosity )
+{
+   bz_stream strm;
+   int ret;
+
+   if (dest == NULL || destLen == NULL || 
+       source == NULL ||
+       (small != 0 && small != 1) ||
+       verbosity < 0 || verbosity > 4) 
+          return BZ_PARAM_ERROR;
+
+   strm.bzalloc = NULL;
+   strm.bzfree = NULL;
+   strm.opaque = NULL;
+   ret = BZ2_bzDecompressInit ( &strm, verbosity, small );
+   if (ret != BZ_OK) return ret;
+
+   strm.next_in = source;
+   strm.next_out = dest;
+   strm.avail_in = sourceLen;
+   strm.avail_out = *destLen;
+
+   ret = BZ2_bzDecompress ( &strm );
+   if (ret == BZ_OK) goto output_overflow_or_eof;
+   if (ret != BZ_STREAM_END) goto errhandler;
+
+   /* normal termination */
+   *destLen -= strm.avail_out;
+   BZ2_bzDecompressEnd ( &strm );
+   return BZ_OK;
+
+   output_overflow_or_eof:
+   if (strm.avail_out > 0) {
+      BZ2_bzDecompressEnd ( &strm );
+      return BZ_UNEXPECTED_EOF;
+   } else {
+      BZ2_bzDecompressEnd ( &strm );
+      return BZ_OUTBUFF_FULL;
+   };      
+
+   errhandler:
+   BZ2_bzDecompressEnd ( &strm );
+   return ret; 
+}
+
+
+/*---------------------------------------------------*/
+/*--
+   Code contributed by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp)
+   to support better zlib compatibility.
+   This code is not _officially_ part of libbzip2 (yet);
+   I haven't tested it, documented it, or considered the
+   threading-safeness of it.
+   If this code breaks, please contact both Yoshioka and me.
+--*/
+/*---------------------------------------------------*/
+
+/*---------------------------------------------------*/
+/*--
+   return version like "0.9.5d, 4-Sept-1999".
+--*/
+const char * BZ_API(BZ2_bzlibVersion)(void)
+{
+   return BZ_VERSION;
+}
+
+
+#ifndef BZ_NO_STDIO
+/*---------------------------------------------------*/
+
+#if defined(_WIN32) || defined(OS2) || defined(MSDOS)
+#   include 
+#   include 
+#   define SET_BINARY_MODE(file) setmode(fileno(file),O_BINARY)
+#else
+#   define SET_BINARY_MODE(file)
+#endif
+static
+BZFILE * bzopen_or_bzdopen
+               ( const char *path,   /* no use when bzdopen */
+                 int fd,             /* no use when bzdopen */
+                 const char *mode,
+                 int open_mode)      /* bzopen: 0, bzdopen:1 */
+{
+   int    bzerr;
+   char   unused[BZ_MAX_UNUSED];
+   int    blockSize100k = 9;
+   int    writing       = 0;
+   char   mode2[10]     = "";
+   FILE   *fp           = NULL;
+   BZFILE *bzfp         = NULL;
+   int    verbosity     = 0;
+   int    workFactor    = 30;
+   int    smallMode     = 0;
+   int    nUnused       = 0; 
+
+   if (mode == NULL) return NULL;
+   while (*mode) {
+      switch (*mode) {
+      case 'r':
+         writing = 0; break;
+      case 'w':
+         writing = 1; break;
+      case 's':
+         smallMode = 1; break;
+      default:
+         if (isdigit((int)(*mode))) {
+            blockSize100k = *mode-BZ_HDR_0;
+         }
+      }
+      mode++;
+   }
+   strcat(mode2, writing ? "w" : "r" );
+   strcat(mode2,"b");   /* binary mode */
+
+   if (open_mode==0) {
+      if (path==NULL || strcmp(path,"")==0) {
+        fp = (writing ? stdout : stdin);
+        SET_BINARY_MODE(fp);
+      } else {
+        fp = fopen(path,mode2);
+      }
+   } else {
+#ifdef BZ_STRICT_ANSI
+      fp = NULL;
+#else
+      fp = fdopen(fd,mode2);
+#endif
+   }
+   if (fp == NULL) return NULL;
+
+   if (writing) {
+      /* Guard against total chaos and anarchy -- JRS */
+      if (blockSize100k < 1) blockSize100k = 1;
+      if (blockSize100k > 9) blockSize100k = 9; 
+      bzfp = BZ2_bzWriteOpen(&bzerr,fp,blockSize100k,
+                             verbosity,workFactor);
+   } else {
+      bzfp = BZ2_bzReadOpen(&bzerr,fp,verbosity,smallMode,
+                            unused,nUnused);
+   }
+   if (bzfp == NULL) {
+      if (fp != stdin && fp != stdout) fclose(fp);
+      return NULL;
+   }
+   return bzfp;
+}
+
+
+/*---------------------------------------------------*/
+/*--
+   open file for read or write.
+      ex) bzopen("file","w9")
+      case path="" or NULL => use stdin or stdout.
+--*/
+BZFILE * BZ_API(BZ2_bzopen)
+               ( const char *path,
+                 const char *mode )
+{
+   return bzopen_or_bzdopen(path,-1,mode,/*bzopen*/0);
+}
+
+
+/*---------------------------------------------------*/
+BZFILE * BZ_API(BZ2_bzdopen)
+               ( int fd,
+                 const char *mode )
+{
+   return bzopen_or_bzdopen(NULL,fd,mode,/*bzdopen*/1);
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzread) (BZFILE* b, void* buf, int len )
+{
+   int bzerr, nread;
+   if (((bzFile*)b)->lastErr == BZ_STREAM_END) return 0;
+   nread = BZ2_bzRead(&bzerr,b,buf,len);
+   if (bzerr == BZ_OK || bzerr == BZ_STREAM_END) {
+      return nread;
+   } else {
+      return -1;
+   }
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzwrite) (BZFILE* b, void* buf, int len )
+{
+   int bzerr;
+
+   BZ2_bzWrite(&bzerr,b,buf,len);
+   if(bzerr == BZ_OK){
+      return len;
+   }else{
+      return -1;
+   }
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzflush) (BZFILE *b)
+{
+   /* do nothing now... */
+   return 0;
+}
+
+
+/*---------------------------------------------------*/
+void BZ_API(BZ2_bzclose) (BZFILE* b)
+{
+   int bzerr;
+   FILE *fp;
+   
+   if (b==NULL) {return;}
+   fp = ((bzFile *)b)->handle;
+   if(((bzFile*)b)->writing){
+      BZ2_bzWriteClose(&bzerr,b,0,NULL,NULL);
+      if(bzerr != BZ_OK){
+         BZ2_bzWriteClose(NULL,b,1,NULL,NULL);
+      }
+   }else{
+      BZ2_bzReadClose(&bzerr,b);
+   }
+   if(fp!=stdin && fp!=stdout){
+      fclose(fp);
+   }
+}
+
+
+/*---------------------------------------------------*/
+/*--
+   return last error code 
+--*/
+static const char *bzerrorstrings[] = {
+       "OK"
+      ,"SEQUENCE_ERROR"
+      ,"PARAM_ERROR"
+      ,"MEM_ERROR"
+      ,"DATA_ERROR"
+      ,"DATA_ERROR_MAGIC"
+      ,"IO_ERROR"
+      ,"UNEXPECTED_EOF"
+      ,"OUTBUFF_FULL"
+      ,"CONFIG_ERROR"
+      ,"???"   /* for future */
+      ,"???"   /* for future */
+      ,"???"   /* for future */
+      ,"???"   /* for future */
+      ,"???"   /* for future */
+      ,"???"   /* for future */
+};
+
+
+const char * BZ_API(BZ2_bzerror) (BZFILE *b, int *errnum)
+{
+   int err = ((bzFile *)b)->lastErr;
+
+   if(err>0) err = 0;
+   *errnum = err;
+   return bzerrorstrings[err*-1];
+}
+#endif
+
+
+/*-------------------------------------------------------------*/
+/*--- end                                           bzlib.c ---*/
+/*-------------------------------------------------------------*/
diff --git a/plugins/Updater/bzip2-1.0.3/bzlib.h b/plugins/Updater/bzip2-1.0.3/bzlib.h
new file mode 100644
index 0000000000..8277123da8
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/bzlib.h
@@ -0,0 +1,282 @@
+
+/*-------------------------------------------------------------*/
+/*--- Public header file for the library.                   ---*/
+/*---                                               bzlib.h ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+   This file is part of bzip2/libbzip2, a program and library for
+   lossless, block-sorting data compression.
+
+   bzip2/libbzip2 version 1.0.6 of 6 September 2010
+   Copyright (C) 1996-2010 Julian Seward 
+
+   Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+   README file.
+
+   This program is released under the terms of the license contained
+   in the file LICENSE.
+   ------------------------------------------------------------------ */
+
+
+#ifndef _BZLIB_H
+#define _BZLIB_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define BZ_RUN               0
+#define BZ_FLUSH             1
+#define BZ_FINISH            2
+
+#define BZ_OK                0
+#define BZ_RUN_OK            1
+#define BZ_FLUSH_OK          2
+#define BZ_FINISH_OK         3
+#define BZ_STREAM_END        4
+#define BZ_SEQUENCE_ERROR    (-1)
+#define BZ_PARAM_ERROR       (-2)
+#define BZ_MEM_ERROR         (-3)
+#define BZ_DATA_ERROR        (-4)
+#define BZ_DATA_ERROR_MAGIC  (-5)
+#define BZ_IO_ERROR          (-6)
+#define BZ_UNEXPECTED_EOF    (-7)
+#define BZ_OUTBUFF_FULL      (-8)
+#define BZ_CONFIG_ERROR      (-9)
+
+typedef 
+   struct {
+      char *next_in;
+      unsigned int avail_in;
+      unsigned int total_in_lo32;
+      unsigned int total_in_hi32;
+
+      char *next_out;
+      unsigned int avail_out;
+      unsigned int total_out_lo32;
+      unsigned int total_out_hi32;
+
+      void *state;
+
+      void *(*bzalloc)(void *,int,int);
+      void (*bzfree)(void *,void *);
+      void *opaque;
+   } 
+   bz_stream;
+
+
+#ifndef BZ_IMPORT
+#define BZ_EXPORT
+#endif
+
+#ifndef BZ_NO_STDIO
+/* Need a definitition for FILE */
+#include 
+#endif
+
+#ifdef _WIN32
+#   include 
+#   ifdef small
+      /* windows.h define small to char */
+#      undef small
+#   endif
+#   ifdef BZ_EXPORT
+#   define BZ_API(func) WINAPI func
+#   define BZ_EXTERN extern
+#   else
+   /* import windows dll dynamically */
+#   define BZ_API(func) (WINAPI * func)
+#   define BZ_EXTERN
+#   endif
+#else
+#   define BZ_API(func) func
+#   define BZ_EXTERN extern
+#endif
+
+
+/*-- Core (low-level) library functions --*/
+
+BZ_EXTERN int BZ_API(BZ2_bzCompressInit) ( 
+      bz_stream* strm, 
+      int        blockSize100k, 
+      int        verbosity, 
+      int        workFactor 
+   );
+
+BZ_EXTERN int BZ_API(BZ2_bzCompress) ( 
+      bz_stream* strm, 
+      int action 
+   );
+
+BZ_EXTERN int BZ_API(BZ2_bzCompressEnd) ( 
+      bz_stream* strm 
+   );
+
+BZ_EXTERN int BZ_API(BZ2_bzDecompressInit) ( 
+      bz_stream *strm, 
+      int       verbosity, 
+      int       small
+   );
+
+BZ_EXTERN int BZ_API(BZ2_bzDecompress) ( 
+      bz_stream* strm 
+   );
+
+BZ_EXTERN int BZ_API(BZ2_bzDecompressEnd) ( 
+      bz_stream *strm 
+   );
+
+
+
+/*-- High(er) level library functions --*/
+
+#ifndef BZ_NO_STDIO
+#define BZ_MAX_UNUSED 5000
+
+typedef void BZFILE;
+
+BZ_EXTERN BZFILE* BZ_API(BZ2_bzReadOpen) ( 
+      int*  bzerror,   
+      FILE* f, 
+      int   verbosity, 
+      int   small,
+      void* unused,    
+      int   nUnused 
+   );
+
+BZ_EXTERN void BZ_API(BZ2_bzReadClose) ( 
+      int*    bzerror, 
+      BZFILE* b 
+   );
+
+BZ_EXTERN void BZ_API(BZ2_bzReadGetUnused) ( 
+      int*    bzerror, 
+      BZFILE* b, 
+      void**  unused,  
+      int*    nUnused 
+   );
+
+BZ_EXTERN int BZ_API(BZ2_bzRead) ( 
+      int*    bzerror, 
+      BZFILE* b, 
+      void*   buf, 
+      int     len 
+   );
+
+BZ_EXTERN BZFILE* BZ_API(BZ2_bzWriteOpen) ( 
+      int*  bzerror,      
+      FILE* f, 
+      int   blockSize100k, 
+      int   verbosity, 
+      int   workFactor 
+   );
+
+BZ_EXTERN void BZ_API(BZ2_bzWrite) ( 
+      int*    bzerror, 
+      BZFILE* b, 
+      void*   buf, 
+      int     len 
+   );
+
+BZ_EXTERN void BZ_API(BZ2_bzWriteClose) ( 
+      int*          bzerror, 
+      BZFILE*       b, 
+      int           abandon, 
+      unsigned int* nbytes_in, 
+      unsigned int* nbytes_out 
+   );
+
+BZ_EXTERN void BZ_API(BZ2_bzWriteClose64) ( 
+      int*          bzerror, 
+      BZFILE*       b, 
+      int           abandon, 
+      unsigned int* nbytes_in_lo32, 
+      unsigned int* nbytes_in_hi32, 
+      unsigned int* nbytes_out_lo32, 
+      unsigned int* nbytes_out_hi32
+   );
+#endif
+
+
+/*-- Utility functions --*/
+
+BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffCompress) ( 
+      char*         dest, 
+      unsigned int* destLen,
+      char*         source, 
+      unsigned int  sourceLen,
+      int           blockSize100k, 
+      int           verbosity, 
+      int           workFactor 
+   );
+
+BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffDecompress) ( 
+      char*         dest, 
+      unsigned int* destLen,
+      char*         source, 
+      unsigned int  sourceLen,
+      int           small, 
+      int           verbosity 
+   );
+
+
+/*--
+   Code contributed by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp)
+   to support better zlib compatibility.
+   This code is not _officially_ part of libbzip2 (yet);
+   I haven't tested it, documented it, or considered the
+   threading-safeness of it.
+   If this code breaks, please contact both Yoshioka and me.
+--*/
+
+BZ_EXTERN const char * BZ_API(BZ2_bzlibVersion) (
+      void
+   );
+
+#ifndef BZ_NO_STDIO
+BZ_EXTERN BZFILE * BZ_API(BZ2_bzopen) (
+      const char *path,
+      const char *mode
+   );
+
+BZ_EXTERN BZFILE * BZ_API(BZ2_bzdopen) (
+      int        fd,
+      const char *mode
+   );
+         
+BZ_EXTERN int BZ_API(BZ2_bzread) (
+      BZFILE* b, 
+      void* buf, 
+      int len 
+   );
+
+BZ_EXTERN int BZ_API(BZ2_bzwrite) (
+      BZFILE* b, 
+      void*   buf, 
+      int     len 
+   );
+
+BZ_EXTERN int BZ_API(BZ2_bzflush) (
+      BZFILE* b
+   );
+
+BZ_EXTERN void BZ_API(BZ2_bzclose) (
+      BZFILE* b
+   );
+
+BZ_EXTERN const char * BZ_API(BZ2_bzerror) (
+      BZFILE *b, 
+      int    *errnum
+   );
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/*-------------------------------------------------------------*/
+/*--- end                                           bzlib.h ---*/
+/*-------------------------------------------------------------*/
diff --git a/plugins/Updater/bzip2-1.0.3/bzlib_private.h b/plugins/Updater/bzip2-1.0.3/bzlib_private.h
new file mode 100644
index 0000000000..5d0217f463
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/bzlib_private.h
@@ -0,0 +1,509 @@
+
+/*-------------------------------------------------------------*/
+/*--- Private header file for the library.                  ---*/
+/*---                                       bzlib_private.h ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+   This file is part of bzip2/libbzip2, a program and library for
+   lossless, block-sorting data compression.
+
+   bzip2/libbzip2 version 1.0.6 of 6 September 2010
+   Copyright (C) 1996-2010 Julian Seward 
+
+   Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+   README file.
+
+   This program is released under the terms of the license contained
+   in the file LICENSE.
+   ------------------------------------------------------------------ */
+
+
+#ifndef _BZLIB_PRIVATE_H
+#define _BZLIB_PRIVATE_H
+
+#include 
+
+#ifndef BZ_NO_STDIO
+#include 
+#include 
+#include 
+#endif
+
+#include "bzlib.h"
+
+
+
+/*-- General stuff. --*/
+
+#define BZ_VERSION  "1.0.6, 6-Sept-2010"
+
+typedef char            Char;
+typedef unsigned char   Bool;
+typedef unsigned char   UChar;
+typedef int             Int32;
+typedef unsigned int    UInt32;
+typedef short           Int16;
+typedef unsigned short  UInt16;
+
+#define True  ((Bool)1)
+#define False ((Bool)0)
+
+#ifndef __GNUC__
+#define __inline__  /* */
+#endif 
+
+#ifndef BZ_NO_STDIO
+
+extern void BZ2_bz__AssertH__fail ( int errcode );
+#define AssertH(cond,errcode) \
+   { if (!(cond)) BZ2_bz__AssertH__fail ( errcode ); }
+
+#if BZ_DEBUG
+#define AssertD(cond,msg) \
+   { if (!(cond)) {       \
+      fprintf ( stderr,   \
+        "\n\nlibbzip2(debug build): internal error\n\t%s\n", msg );\
+      exit(1); \
+   }}
+#else
+#define AssertD(cond,msg) /* */
+#endif
+
+#define VPrintf0(zf) \
+   fprintf(stderr,zf)
+#define VPrintf1(zf,za1) \
+   fprintf(stderr,zf,za1)
+#define VPrintf2(zf,za1,za2) \
+   fprintf(stderr,zf,za1,za2)
+#define VPrintf3(zf,za1,za2,za3) \
+   fprintf(stderr,zf,za1,za2,za3)
+#define VPrintf4(zf,za1,za2,za3,za4) \
+   fprintf(stderr,zf,za1,za2,za3,za4)
+#define VPrintf5(zf,za1,za2,za3,za4,za5) \
+   fprintf(stderr,zf,za1,za2,za3,za4,za5)
+
+#else
+
+extern void bz_internal_error ( int errcode );
+#define AssertH(cond,errcode) \
+   { if (!(cond)) bz_internal_error ( errcode ); }
+#define AssertD(cond,msg)                do { } while (0)
+#define VPrintf0(zf)                     do { } while (0)
+#define VPrintf1(zf,za1)                 do { } while (0)
+#define VPrintf2(zf,za1,za2)             do { } while (0)
+#define VPrintf3(zf,za1,za2,za3)         do { } while (0)
+#define VPrintf4(zf,za1,za2,za3,za4)     do { } while (0)
+#define VPrintf5(zf,za1,za2,za3,za4,za5) do { } while (0)
+
+#endif
+
+
+#define BZALLOC(nnn) (strm->bzalloc)(strm->opaque,(nnn),1)
+#define BZFREE(ppp)  (strm->bzfree)(strm->opaque,(ppp))
+
+
+/*-- Header bytes. --*/
+
+#define BZ_HDR_B 0x42   /* 'B' */
+#define BZ_HDR_Z 0x5a   /* 'Z' */
+#define BZ_HDR_h 0x68   /* 'h' */
+#define BZ_HDR_0 0x30   /* '0' */
+  
+/*-- Constants for the back end. --*/
+
+#define BZ_MAX_ALPHA_SIZE 258
+#define BZ_MAX_CODE_LEN    23
+
+#define BZ_RUNA 0
+#define BZ_RUNB 1
+
+#define BZ_N_GROUPS 6
+#define BZ_G_SIZE   50
+#define BZ_N_ITERS  4
+
+#define BZ_MAX_SELECTORS (2 + (900000 / BZ_G_SIZE))
+
+
+
+/*-- Stuff for randomising repetitive blocks. --*/
+
+extern Int32 BZ2_rNums[512];
+
+#define BZ_RAND_DECLS                          \
+   Int32 rNToGo;                               \
+   Int32 rTPos                                 \
+
+#define BZ_RAND_INIT_MASK                      \
+   s->rNToGo = 0;                              \
+   s->rTPos  = 0                               \
+
+#define BZ_RAND_MASK ((s->rNToGo == 1) ? 1 : 0)
+
+#define BZ_RAND_UPD_MASK                       \
+   if (s->rNToGo == 0) {                       \
+      s->rNToGo = BZ2_rNums[s->rTPos];         \
+      s->rTPos++;                              \
+      if (s->rTPos == 512) s->rTPos = 0;       \
+   }                                           \
+   s->rNToGo--;
+
+
+
+/*-- Stuff for doing CRCs. --*/
+
+extern UInt32 BZ2_crc32Table[256];
+
+#define BZ_INITIALISE_CRC(crcVar)              \
+{                                              \
+   crcVar = 0xffffffffL;                       \
+}
+
+#define BZ_FINALISE_CRC(crcVar)                \
+{                                              \
+   crcVar = ~(crcVar);                         \
+}
+
+#define BZ_UPDATE_CRC(crcVar,cha)              \
+{                                              \
+   crcVar = (crcVar << 8) ^                    \
+            BZ2_crc32Table[(crcVar >> 24) ^    \
+                           ((UChar)cha)];      \
+}
+
+
+
+/*-- States and modes for compression. --*/
+
+#define BZ_M_IDLE      1
+#define BZ_M_RUNNING   2
+#define BZ_M_FLUSHING  3
+#define BZ_M_FINISHING 4
+
+#define BZ_S_OUTPUT    1
+#define BZ_S_INPUT     2
+
+#define BZ_N_RADIX 2
+#define BZ_N_QSORT 12
+#define BZ_N_SHELL 18
+#define BZ_N_OVERSHOOT (BZ_N_RADIX + BZ_N_QSORT + BZ_N_SHELL + 2)
+
+
+
+
+/*-- Structure holding all the compression-side stuff. --*/
+
+typedef
+   struct {
+      /* pointer back to the struct bz_stream */
+      bz_stream* strm;
+
+      /* mode this stream is in, and whether inputting */
+      /* or outputting data */
+      Int32    mode;
+      Int32    state;
+
+      /* remembers avail_in when flush/finish requested */
+      UInt32   avail_in_expect;
+
+      /* for doing the block sorting */
+      UInt32*  arr1;
+      UInt32*  arr2;
+      UInt32*  ftab;
+      Int32    origPtr;
+
+      /* aliases for arr1 and arr2 */
+      UInt32*  ptr;
+      UChar*   block;
+      UInt16*  mtfv;
+      UChar*   zbits;
+
+      /* for deciding when to use the fallback sorting algorithm */
+      Int32    workFactor;
+
+      /* run-length-encoding of the input */
+      UInt32   state_in_ch;
+      Int32    state_in_len;
+      BZ_RAND_DECLS;
+
+      /* input and output limits and current posns */
+      Int32    nblock;
+      Int32    nblockMAX;
+      Int32    numZ;
+      Int32    state_out_pos;
+
+      /* map of bytes used in block */
+      Int32    nInUse;
+      Bool     inUse[256];
+      UChar    unseqToSeq[256];
+
+      /* the buffer for bit stream creation */
+      UInt32   bsBuff;
+      Int32    bsLive;
+
+      /* block and combined CRCs */
+      UInt32   blockCRC;
+      UInt32   combinedCRC;
+
+      /* misc administratium */
+      Int32    verbosity;
+      Int32    blockNo;
+      Int32    blockSize100k;
+
+      /* stuff for coding the MTF values */
+      Int32    nMTF;
+      Int32    mtfFreq    [BZ_MAX_ALPHA_SIZE];
+      UChar    selector   [BZ_MAX_SELECTORS];
+      UChar    selectorMtf[BZ_MAX_SELECTORS];
+
+      UChar    len     [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+      Int32    code    [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+      Int32    rfreq   [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+      /* second dimension: only 3 needed; 4 makes index calculations faster */
+      UInt32   len_pack[BZ_MAX_ALPHA_SIZE][4];
+
+   }
+   EState;
+
+
+
+/*-- externs for compression. --*/
+
+extern void 
+BZ2_blockSort ( EState* );
+
+extern void 
+BZ2_compressBlock ( EState*, Bool );
+
+extern void 
+BZ2_bsInitWrite ( EState* );
+
+extern void 
+BZ2_hbAssignCodes ( Int32*, UChar*, Int32, Int32, Int32 );
+
+extern void 
+BZ2_hbMakeCodeLengths ( UChar*, Int32*, Int32, Int32 );
+
+
+
+/*-- states for decompression. --*/
+
+#define BZ_X_IDLE        1
+#define BZ_X_OUTPUT      2
+
+#define BZ_X_MAGIC_1     10
+#define BZ_X_MAGIC_2     11
+#define BZ_X_MAGIC_3     12
+#define BZ_X_MAGIC_4     13
+#define BZ_X_BLKHDR_1    14
+#define BZ_X_BLKHDR_2    15
+#define BZ_X_BLKHDR_3    16
+#define BZ_X_BLKHDR_4    17
+#define BZ_X_BLKHDR_5    18
+#define BZ_X_BLKHDR_6    19
+#define BZ_X_BCRC_1      20
+#define BZ_X_BCRC_2      21
+#define BZ_X_BCRC_3      22
+#define BZ_X_BCRC_4      23
+#define BZ_X_RANDBIT     24
+#define BZ_X_ORIGPTR_1   25
+#define BZ_X_ORIGPTR_2   26
+#define BZ_X_ORIGPTR_3   27
+#define BZ_X_MAPPING_1   28
+#define BZ_X_MAPPING_2   29
+#define BZ_X_SELECTOR_1  30
+#define BZ_X_SELECTOR_2  31
+#define BZ_X_SELECTOR_3  32
+#define BZ_X_CODING_1    33
+#define BZ_X_CODING_2    34
+#define BZ_X_CODING_3    35
+#define BZ_X_MTF_1       36
+#define BZ_X_MTF_2       37
+#define BZ_X_MTF_3       38
+#define BZ_X_MTF_4       39
+#define BZ_X_MTF_5       40
+#define BZ_X_MTF_6       41
+#define BZ_X_ENDHDR_2    42
+#define BZ_X_ENDHDR_3    43
+#define BZ_X_ENDHDR_4    44
+#define BZ_X_ENDHDR_5    45
+#define BZ_X_ENDHDR_6    46
+#define BZ_X_CCRC_1      47
+#define BZ_X_CCRC_2      48
+#define BZ_X_CCRC_3      49
+#define BZ_X_CCRC_4      50
+
+
+
+/*-- Constants for the fast MTF decoder. --*/
+
+#define MTFA_SIZE 4096
+#define MTFL_SIZE 16
+
+
+
+/*-- Structure holding all the decompression-side stuff. --*/
+
+typedef
+   struct {
+      /* pointer back to the struct bz_stream */
+      bz_stream* strm;
+
+      /* state indicator for this stream */
+      Int32    state;
+
+      /* for doing the final run-length decoding */
+      UChar    state_out_ch;
+      Int32    state_out_len;
+      Bool     blockRandomised;
+      BZ_RAND_DECLS;
+
+      /* the buffer for bit stream reading */
+      UInt32   bsBuff;
+      Int32    bsLive;
+
+      /* misc administratium */
+      Int32    blockSize100k;
+      Bool     smallDecompress;
+      Int32    currBlockNo;
+      Int32    verbosity;
+
+      /* for undoing the Burrows-Wheeler transform */
+      Int32    origPtr;
+      UInt32   tPos;
+      Int32    k0;
+      Int32    unzftab[256];
+      Int32    nblock_used;
+      Int32    cftab[257];
+      Int32    cftabCopy[257];
+
+      /* for undoing the Burrows-Wheeler transform (FAST) */
+      UInt32   *tt;
+
+      /* for undoing the Burrows-Wheeler transform (SMALL) */
+      UInt16   *ll16;
+      UChar    *ll4;
+
+      /* stored and calculated CRCs */
+      UInt32   storedBlockCRC;
+      UInt32   storedCombinedCRC;
+      UInt32   calculatedBlockCRC;
+      UInt32   calculatedCombinedCRC;
+
+      /* map of bytes used in block */
+      Int32    nInUse;
+      Bool     inUse[256];
+      Bool     inUse16[16];
+      UChar    seqToUnseq[256];
+
+      /* for decoding the MTF values */
+      UChar    mtfa   [MTFA_SIZE];
+      Int32    mtfbase[256 / MTFL_SIZE];
+      UChar    selector   [BZ_MAX_SELECTORS];
+      UChar    selectorMtf[BZ_MAX_SELECTORS];
+      UChar    len  [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+
+      Int32    limit  [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+      Int32    base   [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+      Int32    perm   [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+      Int32    minLens[BZ_N_GROUPS];
+
+      /* save area for scalars in the main decompress code */
+      Int32    save_i;
+      Int32    save_j;
+      Int32    save_t;
+      Int32    save_alphaSize;
+      Int32    save_nGroups;
+      Int32    save_nSelectors;
+      Int32    save_EOB;
+      Int32    save_groupNo;
+      Int32    save_groupPos;
+      Int32    save_nextSym;
+      Int32    save_nblockMAX;
+      Int32    save_nblock;
+      Int32    save_es;
+      Int32    save_N;
+      Int32    save_curr;
+      Int32    save_zt;
+      Int32    save_zn; 
+      Int32    save_zvec;
+      Int32    save_zj;
+      Int32    save_gSel;
+      Int32    save_gMinlen;
+      Int32*   save_gLimit;
+      Int32*   save_gBase;
+      Int32*   save_gPerm;
+
+   }
+   DState;
+
+
+
+/*-- Macros for decompression. --*/
+
+#define BZ_GET_FAST(cccc)                     \
+    /* c_tPos is unsigned, hence test < 0 is pointless. */ \
+    if (s->tPos >= (UInt32)100000 * (UInt32)s->blockSize100k) return True; \
+    s->tPos = s->tt[s->tPos];                 \
+    cccc = (UChar)(s->tPos & 0xff);           \
+    s->tPos >>= 8;
+
+#define BZ_GET_FAST_C(cccc)                   \
+    /* c_tPos is unsigned, hence test < 0 is pointless. */ \
+    if (c_tPos >= (UInt32)100000 * (UInt32)ro_blockSize100k) return True; \
+    c_tPos = c_tt[c_tPos];                    \
+    cccc = (UChar)(c_tPos & 0xff);            \
+    c_tPos >>= 8;
+
+#define SET_LL4(i,n)                                          \
+   { if (((i) & 0x1) == 0)                                    \
+        s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0xf0) | (n); else    \
+        s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0x0f) | ((n) << 4);  \
+   }
+
+#define GET_LL4(i)                             \
+   ((((UInt32)(s->ll4[(i) >> 1])) >> (((i) << 2) & 0x4)) & 0xF)
+
+#define SET_LL(i,n)                          \
+   { s->ll16[i] = (UInt16)(n & 0x0000ffff);  \
+     SET_LL4(i, n >> 16);                    \
+   }
+
+#define GET_LL(i) \
+   (((UInt32)s->ll16[i]) | (GET_LL4(i) << 16))
+
+#define BZ_GET_SMALL(cccc)                            \
+    /* c_tPos is unsigned, hence test < 0 is pointless. */ \
+    if (s->tPos >= (UInt32)100000 * (UInt32)s->blockSize100k) return True; \
+    cccc = BZ2_indexIntoF ( s->tPos, s->cftab );    \
+    s->tPos = GET_LL(s->tPos);
+
+
+/*-- externs for decompression. --*/
+
+extern Int32 
+BZ2_indexIntoF ( Int32, Int32* );
+
+extern Int32 
+BZ2_decompress ( DState* );
+
+extern void 
+BZ2_hbCreateDecodeTables ( Int32*, Int32*, Int32*, UChar*,
+                           Int32,  Int32, Int32 );
+
+
+#endif
+
+
+/*-- BZ_NO_STDIO seems to make NULL disappear on some platforms. --*/
+
+#ifdef BZ_NO_STDIO
+#ifndef NULL
+#define NULL 0
+#endif
+#endif
+
+
+/*-------------------------------------------------------------*/
+/*--- end                                   bzlib_private.h ---*/
+/*-------------------------------------------------------------*/
diff --git a/plugins/Updater/bzip2-1.0.3/bzmore b/plugins/Updater/bzip2-1.0.3/bzmore
new file mode 100644
index 0000000000..d314043404
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/bzmore
@@ -0,0 +1,61 @@
+#!/bin/sh
+
+# Bzmore wrapped for bzip2, 
+# adapted from zmore by Philippe Troin  for Debian GNU/Linux.
+
+PATH="/usr/bin:$PATH"; export PATH
+
+prog=`echo $0 | sed 's|.*/||'`
+case "$prog" in
+	*less)	more=less	;;
+	*)	more=more       ;;
+esac
+
+if test "`echo -n a`" = "-n a"; then
+  # looks like a SysV system:
+  n1=''; n2='\c'
+else
+  n1='-n'; n2=''
+fi
+oldtty=`stty -g 2>/dev/null`
+if stty -cbreak 2>/dev/null; then
+  cb='cbreak'; ncb='-cbreak'
+else
+  # 'stty min 1' resets eof to ^a on both SunOS and SysV!
+  cb='min 1 -icanon'; ncb='icanon eof ^d'
+fi
+if test $? -eq 0 -a -n "$oldtty"; then
+   trap 'stty $oldtty 2>/dev/null; exit' 0 2 3 5 10 13 15
+else
+   trap 'stty $ncb echo 2>/dev/null; exit' 0 2 3 5 10 13 15
+fi
+
+if test $# = 0; then
+    if test -t 0; then
+	echo usage: $prog files...
+    else
+	bzip2 -cdfq | eval $more
+    fi
+else
+    FIRST=1
+    for FILE
+    do
+	if test $FIRST -eq 0; then
+		echo $n1 "--More--(Next file: $FILE)$n2"
+		stty $cb -echo 2>/dev/null
+		ANS=`dd bs=1 count=1 2>/dev/null` 
+		stty $ncb echo 2>/dev/null
+		echo " "
+		if test "$ANS" = 'e' -o "$ANS" = 'q'; then
+			exit
+		fi
+	fi
+	if test "$ANS" != 's'; then
+		echo "------> $FILE <------"
+		bzip2 -cdfq "$FILE" | eval $more
+	fi
+	if test -t; then
+		FIRST=0
+	fi
+    done
+fi
diff --git a/plugins/Updater/bzip2-1.0.3/bzmore.1 b/plugins/Updater/bzip2-1.0.3/bzmore.1
new file mode 100644
index 0000000000..b437d3b031
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/bzmore.1
@@ -0,0 +1,152 @@
+.\"Shamelessly copied from zmore.1 by Philippe Troin 
+.\"for Debian GNU/Linux
+.TH BZMORE 1
+.SH NAME
+bzmore, bzless \- file perusal filter for crt viewing of bzip2 compressed text
+.SH SYNOPSIS
+.B bzmore
+[ name ...  ]
+.br
+.B bzless
+[ name ...  ]
+.SH NOTE
+In the following description,
+.I bzless
+and
+.I less
+can be used interchangeably with
+.I bzmore
+and
+.I more.
+.SH DESCRIPTION
+.I  Bzmore
+is a filter which allows examination of compressed or plain text files
+one screenful at a time on a soft-copy terminal.
+.I bzmore
+works on files compressed with
+.I bzip2
+and also on uncompressed files.
+If a file does not exist,
+.I bzmore
+looks for a file of the same name with the addition of a .bz2 suffix.
+.PP
+.I Bzmore
+normally pauses after each screenful, printing --More--
+at the bottom of the screen.
+If the user then types a carriage return, one more line is displayed.
+If the user hits a space,
+another screenful is displayed.  Other possibilities are enumerated later.
+.PP
+.I Bzmore
+looks in the file
+.I /etc/termcap
+to determine terminal characteristics,
+and to determine the default window size.
+On a terminal capable of displaying 24 lines,
+the default window size is 22 lines.
+Other sequences which may be typed when
+.I bzmore
+pauses, and their effects, are as follows (\fIi\fP is an optional integer
+argument, defaulting to 1) :
+.PP
+.IP \fIi\|\fP
+display
+.I i
+more lines, (or another screenful if no argument is given)
+.PP
+.IP ^D
+display 11 more lines (a ``scroll'').
+If
+.I i
+is given, then the scroll size is set to \fIi\|\fP.
+.PP
+.IP d
+same as ^D (control-D)
+.PP
+.IP \fIi\|\fPz
+same as typing a space except that \fIi\|\fP, if present, becomes the new
+window size.  Note that the window size reverts back to the default at the
+end of the current file.
+.PP
+.IP \fIi\|\fPs
+skip \fIi\|\fP lines and print a screenful of lines
+.PP
+.IP \fIi\|\fPf
+skip \fIi\fP screenfuls and print a screenful of lines
+.PP
+.IP "q or Q"
+quit reading the current file; go on to the next (if any)
+.PP
+.IP "e or q"
+When the prompt --More--(Next file: 
+.IR file )
+is printed, this command causes bzmore to exit.
+.PP
+.IP s
+When the prompt --More--(Next file: 
+.IR file )
+is printed, this command causes bzmore to skip the next file and continue.
+.PP 
+.IP =
+Display the current line number.
+.PP
+.IP \fIi\|\fP/expr
+search for the \fIi\|\fP-th occurrence of the regular expression \fIexpr.\fP
+If the pattern is not found,
+.I bzmore
+goes on to the next file (if any).
+Otherwise, a screenful is displayed, starting two lines before the place
+where the expression was found.
+The user's erase and kill characters may be used to edit the regular
+expression.
+Erasing back past the first column cancels the search command.
+.PP
+.IP \fIi\|\fPn
+search for the \fIi\|\fP-th occurrence of the last regular expression entered.
+.PP
+.IP !command
+invoke a shell with \fIcommand\|\fP. 
+The character `!' in "command" are replaced with the
+previous shell command.  The sequence "\\!" is replaced by "!".
+.PP
+.IP ":q or :Q"
+quit reading the current file; go on to the next (if any)
+(same as q or Q).
+.PP
+.IP .
+(dot) repeat the previous command.
+.PP
+The commands take effect immediately, i.e., it is not necessary to
+type a carriage return.
+Up to the time when the command character itself is given,
+the user may hit the line kill character to cancel the numerical
+argument being formed.
+In addition, the user may hit the erase character to redisplay the
+--More-- message.
+.PP
+At any time when output is being sent to the terminal, the user can
+hit the quit key (normally control\-\\).
+.I Bzmore
+will stop sending output, and will display the usual --More--
+prompt.
+The user may then enter one of the above commands in the normal manner.
+Unfortunately, some output is lost when this is done, due to the
+fact that any characters waiting in the terminal's output queue
+are flushed when the quit signal occurs.
+.PP
+The terminal is set to
+.I noecho
+mode by this program so that the output can be continuous.
+What you type will thus not show on your terminal, except for the / and !
+commands.
+.PP
+If the standard output is not a teletype, then
+.I bzmore
+acts just like
+.I bzcat,
+except that a header is printed before each file.
+.SH FILES
+.DT
+/etc/termcap		Terminal data base
+.SH "SEE ALSO"
+more(1), less(1), bzip2(1), bzdiff(1), bzgrep(1)
diff --git a/plugins/Updater/bzip2-1.0.3/compress.c b/plugins/Updater/bzip2-1.0.3/compress.c
new file mode 100644
index 0000000000..caf7696011
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/compress.c
@@ -0,0 +1,672 @@
+
+/*-------------------------------------------------------------*/
+/*--- Compression machinery (not incl block sorting)        ---*/
+/*---                                            compress.c ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+   This file is part of bzip2/libbzip2, a program and library for
+   lossless, block-sorting data compression.
+
+   bzip2/libbzip2 version 1.0.6 of 6 September 2010
+   Copyright (C) 1996-2010 Julian Seward 
+
+   Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+   README file.
+
+   This program is released under the terms of the license contained
+   in the file LICENSE.
+   ------------------------------------------------------------------ */
+
+
+/* CHANGES
+    0.9.0    -- original version.
+    0.9.0a/b -- no changes in this file.
+    0.9.0c   -- changed setting of nGroups in sendMTFValues() 
+                so as to do a bit better on small files
+*/
+
+#include "bzlib_private.h"
+
+
+/*---------------------------------------------------*/
+/*--- Bit stream I/O                              ---*/
+/*---------------------------------------------------*/
+
+/*---------------------------------------------------*/
+void BZ2_bsInitWrite ( EState* s )
+{
+   s->bsLive = 0;
+   s->bsBuff = 0;
+}
+
+
+/*---------------------------------------------------*/
+static
+void bsFinishWrite ( EState* s )
+{
+   while (s->bsLive > 0) {
+      s->zbits[s->numZ] = (UChar)(s->bsBuff >> 24);
+      s->numZ++;
+      s->bsBuff <<= 8;
+      s->bsLive -= 8;
+   }
+}
+
+
+/*---------------------------------------------------*/
+#define bsNEEDW(nz)                           \
+{                                             \
+   while (s->bsLive >= 8) {                   \
+      s->zbits[s->numZ]                       \
+         = (UChar)(s->bsBuff >> 24);          \
+      s->numZ++;                              \
+      s->bsBuff <<= 8;                        \
+      s->bsLive -= 8;                         \
+   }                                          \
+}
+
+
+/*---------------------------------------------------*/
+static
+__inline__
+void bsW ( EState* s, Int32 n, UInt32 v )
+{
+   bsNEEDW ( n );
+   s->bsBuff |= (v << (32 - s->bsLive - n));
+   s->bsLive += n;
+}
+
+
+/*---------------------------------------------------*/
+static
+void bsPutUInt32 ( EState* s, UInt32 u )
+{
+   bsW ( s, 8, (u >> 24) & 0xffL );
+   bsW ( s, 8, (u >> 16) & 0xffL );
+   bsW ( s, 8, (u >>  8) & 0xffL );
+   bsW ( s, 8,  u        & 0xffL );
+}
+
+
+/*---------------------------------------------------*/
+static
+void bsPutUChar ( EState* s, UChar c )
+{
+   bsW( s, 8, (UInt32)c );
+}
+
+
+/*---------------------------------------------------*/
+/*--- The back end proper                         ---*/
+/*---------------------------------------------------*/
+
+/*---------------------------------------------------*/
+static
+void makeMaps_e ( EState* s )
+{
+   Int32 i;
+   s->nInUse = 0;
+   for (i = 0; i < 256; i++)
+      if (s->inUse[i]) {
+         s->unseqToSeq[i] = s->nInUse;
+         s->nInUse++;
+      }
+}
+
+
+/*---------------------------------------------------*/
+static
+void generateMTFValues ( EState* s )
+{
+   UChar   yy[256];
+   Int32   i, j;
+   Int32   zPend;
+   Int32   wr;
+   Int32   EOB;
+
+   /* 
+      After sorting (eg, here),
+         s->arr1 [ 0 .. s->nblock-1 ] holds sorted order,
+         and
+         ((UChar*)s->arr2) [ 0 .. s->nblock-1 ] 
+         holds the original block data.
+
+      The first thing to do is generate the MTF values,
+      and put them in
+         ((UInt16*)s->arr1) [ 0 .. s->nblock-1 ].
+      Because there are strictly fewer or equal MTF values
+      than block values, ptr values in this area are overwritten
+      with MTF values only when they are no longer needed.
+
+      The final compressed bitstream is generated into the
+      area starting at
+         (UChar*) (&((UChar*)s->arr2)[s->nblock])
+
+      These storage aliases are set up in bzCompressInit(),
+      except for the last one, which is arranged in 
+      compressBlock().
+   */
+   UInt32* ptr   = s->ptr;
+   UChar* block  = s->block;
+   UInt16* mtfv  = s->mtfv;
+
+   makeMaps_e ( s );
+   EOB = s->nInUse+1;
+
+   for (i = 0; i <= EOB; i++) s->mtfFreq[i] = 0;
+
+   wr = 0;
+   zPend = 0;
+   for (i = 0; i < s->nInUse; i++) yy[i] = (UChar) i;
+
+   for (i = 0; i < s->nblock; i++) {
+      UChar ll_i;
+      AssertD ( wr <= i, "generateMTFValues(1)" );
+      j = ptr[i]-1; if (j < 0) j += s->nblock;
+      ll_i = s->unseqToSeq[block[j]];
+      AssertD ( ll_i < s->nInUse, "generateMTFValues(2a)" );
+
+      if (yy[0] == ll_i) { 
+         zPend++;
+      } else {
+
+         if (zPend > 0) {
+            zPend--;
+            while (True) {
+               if (zPend & 1) {
+                  mtfv[wr] = BZ_RUNB; wr++; 
+                  s->mtfFreq[BZ_RUNB]++; 
+               } else {
+                  mtfv[wr] = BZ_RUNA; wr++; 
+                  s->mtfFreq[BZ_RUNA]++; 
+               }
+               if (zPend < 2) break;
+               zPend = (zPend - 2) / 2;
+            };
+            zPend = 0;
+         }
+         {
+            register UChar  rtmp;
+            register UChar* ryy_j;
+            register UChar  rll_i;
+            rtmp  = yy[1];
+            yy[1] = yy[0];
+            ryy_j = &(yy[1]);
+            rll_i = ll_i;
+            while ( rll_i != rtmp ) {
+               register UChar rtmp2;
+               ryy_j++;
+               rtmp2  = rtmp;
+               rtmp   = *ryy_j;
+               *ryy_j = rtmp2;
+            };
+            yy[0] = rtmp;
+            j = ryy_j - &(yy[0]);
+            mtfv[wr] = j+1; wr++; s->mtfFreq[j+1]++;
+         }
+
+      }
+   }
+
+   if (zPend > 0) {
+      zPend--;
+      while (True) {
+         if (zPend & 1) {
+            mtfv[wr] = BZ_RUNB; wr++; 
+            s->mtfFreq[BZ_RUNB]++; 
+         } else {
+            mtfv[wr] = BZ_RUNA; wr++; 
+            s->mtfFreq[BZ_RUNA]++; 
+         }
+         if (zPend < 2) break;
+         zPend = (zPend - 2) / 2;
+      };
+      zPend = 0;
+   }
+
+   mtfv[wr] = EOB; wr++; s->mtfFreq[EOB]++;
+
+   s->nMTF = wr;
+}
+
+
+/*---------------------------------------------------*/
+#define BZ_LESSER_ICOST  0
+#define BZ_GREATER_ICOST 15
+
+static
+void sendMTFValues ( EState* s )
+{
+   Int32 v, t, i, j, gs, ge, totc, bt, bc, iter;
+   Int32 nSelectors, alphaSize, minLen, maxLen, selCtr;
+   Int32 nGroups, nBytes;
+
+   /*--
+   UChar  len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+   is a global since the decoder also needs it.
+
+   Int32  code[BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+   Int32  rfreq[BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+   are also globals only used in this proc.
+   Made global to keep stack frame size small.
+   --*/
+
+
+   UInt16 cost[BZ_N_GROUPS];
+   Int32  fave[BZ_N_GROUPS];
+
+   UInt16* mtfv = s->mtfv;
+
+   if (s->verbosity >= 3)
+      VPrintf3( "      %d in block, %d after MTF & 1-2 coding, "
+                "%d+2 syms in use\n", 
+                s->nblock, s->nMTF, s->nInUse );
+
+   alphaSize = s->nInUse+2;
+   for (t = 0; t < BZ_N_GROUPS; t++)
+      for (v = 0; v < alphaSize; v++)
+         s->len[t][v] = BZ_GREATER_ICOST;
+
+   /*--- Decide how many coding tables to use ---*/
+   AssertH ( s->nMTF > 0, 3001 );
+   if (s->nMTF < 200)  nGroups = 2; else
+   if (s->nMTF < 600)  nGroups = 3; else
+   if (s->nMTF < 1200) nGroups = 4; else
+   if (s->nMTF < 2400) nGroups = 5; else
+                       nGroups = 6;
+
+   /*--- Generate an initial set of coding tables ---*/
+   { 
+      Int32 nPart, remF, tFreq, aFreq;
+
+      nPart = nGroups;
+      remF  = s->nMTF;
+      gs = 0;
+      while (nPart > 0) {
+         tFreq = remF / nPart;
+         ge = gs-1;
+         aFreq = 0;
+         while (aFreq < tFreq && ge < alphaSize-1) {
+            ge++;
+            aFreq += s->mtfFreq[ge];
+         }
+
+         if (ge > gs 
+             && nPart != nGroups && nPart != 1 
+             && ((nGroups-nPart) % 2 == 1)) {
+            aFreq -= s->mtfFreq[ge];
+            ge--;
+         }
+
+         if (s->verbosity >= 3)
+            VPrintf5( "      initial group %d, [%d .. %d], "
+                      "has %d syms (%4.1f%%)\n",
+                      nPart, gs, ge, aFreq, 
+                      (100.0 * (float)aFreq) / (float)(s->nMTF) );
+ 
+         for (v = 0; v < alphaSize; v++)
+            if (v >= gs && v <= ge) 
+               s->len[nPart-1][v] = BZ_LESSER_ICOST; else
+               s->len[nPart-1][v] = BZ_GREATER_ICOST;
+ 
+         nPart--;
+         gs = ge+1;
+         remF -= aFreq;
+      }
+   }
+
+   /*--- 
+      Iterate up to BZ_N_ITERS times to improve the tables.
+   ---*/
+   for (iter = 0; iter < BZ_N_ITERS; iter++) {
+
+      for (t = 0; t < nGroups; t++) fave[t] = 0;
+
+      for (t = 0; t < nGroups; t++)
+         for (v = 0; v < alphaSize; v++)
+            s->rfreq[t][v] = 0;
+
+      /*---
+        Set up an auxiliary length table which is used to fast-track
+	the common case (nGroups == 6). 
+      ---*/
+      if (nGroups == 6) {
+         for (v = 0; v < alphaSize; v++) {
+            s->len_pack[v][0] = (s->len[1][v] << 16) | s->len[0][v];
+            s->len_pack[v][1] = (s->len[3][v] << 16) | s->len[2][v];
+            s->len_pack[v][2] = (s->len[5][v] << 16) | s->len[4][v];
+	 }
+      }
+
+      nSelectors = 0;
+      totc = 0;
+      gs = 0;
+      while (True) {
+
+         /*--- Set group start & end marks. --*/
+         if (gs >= s->nMTF) break;
+         ge = gs + BZ_G_SIZE - 1; 
+         if (ge >= s->nMTF) ge = s->nMTF-1;
+
+         /*-- 
+            Calculate the cost of this group as coded
+            by each of the coding tables.
+         --*/
+         for (t = 0; t < nGroups; t++) cost[t] = 0;
+
+         if (nGroups == 6 && 50 == ge-gs+1) {
+            /*--- fast track the common case ---*/
+            register UInt32 cost01, cost23, cost45;
+            register UInt16 icv;
+            cost01 = cost23 = cost45 = 0;
+
+#           define BZ_ITER(nn)                \
+               icv = mtfv[gs+(nn)];           \
+               cost01 += s->len_pack[icv][0]; \
+               cost23 += s->len_pack[icv][1]; \
+               cost45 += s->len_pack[icv][2]; \
+
+            BZ_ITER(0);  BZ_ITER(1);  BZ_ITER(2);  BZ_ITER(3);  BZ_ITER(4);
+            BZ_ITER(5);  BZ_ITER(6);  BZ_ITER(7);  BZ_ITER(8);  BZ_ITER(9);
+            BZ_ITER(10); BZ_ITER(11); BZ_ITER(12); BZ_ITER(13); BZ_ITER(14);
+            BZ_ITER(15); BZ_ITER(16); BZ_ITER(17); BZ_ITER(18); BZ_ITER(19);
+            BZ_ITER(20); BZ_ITER(21); BZ_ITER(22); BZ_ITER(23); BZ_ITER(24);
+            BZ_ITER(25); BZ_ITER(26); BZ_ITER(27); BZ_ITER(28); BZ_ITER(29);
+            BZ_ITER(30); BZ_ITER(31); BZ_ITER(32); BZ_ITER(33); BZ_ITER(34);
+            BZ_ITER(35); BZ_ITER(36); BZ_ITER(37); BZ_ITER(38); BZ_ITER(39);
+            BZ_ITER(40); BZ_ITER(41); BZ_ITER(42); BZ_ITER(43); BZ_ITER(44);
+            BZ_ITER(45); BZ_ITER(46); BZ_ITER(47); BZ_ITER(48); BZ_ITER(49);
+
+#           undef BZ_ITER
+
+            cost[0] = cost01 & 0xffff; cost[1] = cost01 >> 16;
+            cost[2] = cost23 & 0xffff; cost[3] = cost23 >> 16;
+            cost[4] = cost45 & 0xffff; cost[5] = cost45 >> 16;
+
+         } else {
+	    /*--- slow version which correctly handles all situations ---*/
+            for (i = gs; i <= ge; i++) { 
+               UInt16 icv = mtfv[i];
+               for (t = 0; t < nGroups; t++) cost[t] += s->len[t][icv];
+            }
+         }
+ 
+         /*-- 
+            Find the coding table which is best for this group,
+            and record its identity in the selector table.
+         --*/
+         bc = 999999999; bt = -1;
+         for (t = 0; t < nGroups; t++)
+            if (cost[t] < bc) { bc = cost[t]; bt = t; };
+         totc += bc;
+         fave[bt]++;
+         s->selector[nSelectors] = bt;
+         nSelectors++;
+
+         /*-- 
+            Increment the symbol frequencies for the selected table.
+          --*/
+         if (nGroups == 6 && 50 == ge-gs+1) {
+            /*--- fast track the common case ---*/
+
+#           define BZ_ITUR(nn) s->rfreq[bt][ mtfv[gs+(nn)] ]++
+
+            BZ_ITUR(0);  BZ_ITUR(1);  BZ_ITUR(2);  BZ_ITUR(3);  BZ_ITUR(4);
+            BZ_ITUR(5);  BZ_ITUR(6);  BZ_ITUR(7);  BZ_ITUR(8);  BZ_ITUR(9);
+            BZ_ITUR(10); BZ_ITUR(11); BZ_ITUR(12); BZ_ITUR(13); BZ_ITUR(14);
+            BZ_ITUR(15); BZ_ITUR(16); BZ_ITUR(17); BZ_ITUR(18); BZ_ITUR(19);
+            BZ_ITUR(20); BZ_ITUR(21); BZ_ITUR(22); BZ_ITUR(23); BZ_ITUR(24);
+            BZ_ITUR(25); BZ_ITUR(26); BZ_ITUR(27); BZ_ITUR(28); BZ_ITUR(29);
+            BZ_ITUR(30); BZ_ITUR(31); BZ_ITUR(32); BZ_ITUR(33); BZ_ITUR(34);
+            BZ_ITUR(35); BZ_ITUR(36); BZ_ITUR(37); BZ_ITUR(38); BZ_ITUR(39);
+            BZ_ITUR(40); BZ_ITUR(41); BZ_ITUR(42); BZ_ITUR(43); BZ_ITUR(44);
+            BZ_ITUR(45); BZ_ITUR(46); BZ_ITUR(47); BZ_ITUR(48); BZ_ITUR(49);
+
+#           undef BZ_ITUR
+
+         } else {
+	    /*--- slow version which correctly handles all situations ---*/
+            for (i = gs; i <= ge; i++)
+               s->rfreq[bt][ mtfv[i] ]++;
+         }
+
+         gs = ge+1;
+      }
+      if (s->verbosity >= 3) {
+         VPrintf2 ( "      pass %d: size is %d, grp uses are ", 
+                   iter+1, totc/8 );
+         for (t = 0; t < nGroups; t++)
+            VPrintf1 ( "%d ", fave[t] );
+         VPrintf0 ( "\n" );
+      }
+
+      /*--
+        Recompute the tables based on the accumulated frequencies.
+      --*/
+      /* maxLen was changed from 20 to 17 in bzip2-1.0.3.  See 
+         comment in huffman.c for details. */
+      for (t = 0; t < nGroups; t++)
+         BZ2_hbMakeCodeLengths ( &(s->len[t][0]), &(s->rfreq[t][0]), 
+                                 alphaSize, 17 /*20*/ );
+   }
+
+
+   AssertH( nGroups < 8, 3002 );
+   AssertH( nSelectors < 32768 &&
+            nSelectors <= (2 + (900000 / BZ_G_SIZE)),
+            3003 );
+
+
+   /*--- Compute MTF values for the selectors. ---*/
+   {
+      UChar pos[BZ_N_GROUPS], ll_i, tmp2, tmp;
+      for (i = 0; i < nGroups; i++) pos[i] = i;
+      for (i = 0; i < nSelectors; i++) {
+         ll_i = s->selector[i];
+         j = 0;
+         tmp = pos[j];
+         while ( ll_i != tmp ) {
+            j++;
+            tmp2 = tmp;
+            tmp = pos[j];
+            pos[j] = tmp2;
+         };
+         pos[0] = tmp;
+         s->selectorMtf[i] = j;
+      }
+   };
+
+   /*--- Assign actual codes for the tables. --*/
+   for (t = 0; t < nGroups; t++) {
+      minLen = 32;
+      maxLen = 0;
+      for (i = 0; i < alphaSize; i++) {
+         if (s->len[t][i] > maxLen) maxLen = s->len[t][i];
+         if (s->len[t][i] < minLen) minLen = s->len[t][i];
+      }
+      AssertH ( !(maxLen > 17 /*20*/ ), 3004 );
+      AssertH ( !(minLen < 1),  3005 );
+      BZ2_hbAssignCodes ( &(s->code[t][0]), &(s->len[t][0]), 
+                          minLen, maxLen, alphaSize );
+   }
+
+   /*--- Transmit the mapping table. ---*/
+   { 
+      Bool inUse16[16];
+      for (i = 0; i < 16; i++) {
+          inUse16[i] = False;
+          for (j = 0; j < 16; j++)
+             if (s->inUse[i * 16 + j]) inUse16[i] = True;
+      }
+     
+      nBytes = s->numZ;
+      for (i = 0; i < 16; i++)
+         if (inUse16[i]) bsW(s,1,1); else bsW(s,1,0);
+
+      for (i = 0; i < 16; i++)
+         if (inUse16[i])
+            for (j = 0; j < 16; j++) {
+               if (s->inUse[i * 16 + j]) bsW(s,1,1); else bsW(s,1,0);
+            }
+
+      if (s->verbosity >= 3) 
+         VPrintf1( "      bytes: mapping %d, ", s->numZ-nBytes );
+   }
+
+   /*--- Now the selectors. ---*/
+   nBytes = s->numZ;
+   bsW ( s, 3, nGroups );
+   bsW ( s, 15, nSelectors );
+   for (i = 0; i < nSelectors; i++) { 
+      for (j = 0; j < s->selectorMtf[i]; j++) bsW(s,1,1);
+      bsW(s,1,0);
+   }
+   if (s->verbosity >= 3)
+      VPrintf1( "selectors %d, ", s->numZ-nBytes );
+
+   /*--- Now the coding tables. ---*/
+   nBytes = s->numZ;
+
+   for (t = 0; t < nGroups; t++) {
+      Int32 curr = s->len[t][0];
+      bsW ( s, 5, curr );
+      for (i = 0; i < alphaSize; i++) {
+         while (curr < s->len[t][i]) { bsW(s,2,2); curr++; /* 10 */ };
+         while (curr > s->len[t][i]) { bsW(s,2,3); curr--; /* 11 */ };
+         bsW ( s, 1, 0 );
+      }
+   }
+
+   if (s->verbosity >= 3)
+      VPrintf1 ( "code lengths %d, ", s->numZ-nBytes );
+
+   /*--- And finally, the block data proper ---*/
+   nBytes = s->numZ;
+   selCtr = 0;
+   gs = 0;
+   while (True) {
+      if (gs >= s->nMTF) break;
+      ge = gs + BZ_G_SIZE - 1; 
+      if (ge >= s->nMTF) ge = s->nMTF-1;
+      AssertH ( s->selector[selCtr] < nGroups, 3006 );
+
+      if (nGroups == 6 && 50 == ge-gs+1) {
+            /*--- fast track the common case ---*/
+            UInt16 mtfv_i;
+            UChar* s_len_sel_selCtr 
+               = &(s->len[s->selector[selCtr]][0]);
+            Int32* s_code_sel_selCtr
+               = &(s->code[s->selector[selCtr]][0]);
+
+#           define BZ_ITAH(nn)                      \
+               mtfv_i = mtfv[gs+(nn)];              \
+               bsW ( s,                             \
+                     s_len_sel_selCtr[mtfv_i],      \
+                     s_code_sel_selCtr[mtfv_i] )
+
+            BZ_ITAH(0);  BZ_ITAH(1);  BZ_ITAH(2);  BZ_ITAH(3);  BZ_ITAH(4);
+            BZ_ITAH(5);  BZ_ITAH(6);  BZ_ITAH(7);  BZ_ITAH(8);  BZ_ITAH(9);
+            BZ_ITAH(10); BZ_ITAH(11); BZ_ITAH(12); BZ_ITAH(13); BZ_ITAH(14);
+            BZ_ITAH(15); BZ_ITAH(16); BZ_ITAH(17); BZ_ITAH(18); BZ_ITAH(19);
+            BZ_ITAH(20); BZ_ITAH(21); BZ_ITAH(22); BZ_ITAH(23); BZ_ITAH(24);
+            BZ_ITAH(25); BZ_ITAH(26); BZ_ITAH(27); BZ_ITAH(28); BZ_ITAH(29);
+            BZ_ITAH(30); BZ_ITAH(31); BZ_ITAH(32); BZ_ITAH(33); BZ_ITAH(34);
+            BZ_ITAH(35); BZ_ITAH(36); BZ_ITAH(37); BZ_ITAH(38); BZ_ITAH(39);
+            BZ_ITAH(40); BZ_ITAH(41); BZ_ITAH(42); BZ_ITAH(43); BZ_ITAH(44);
+            BZ_ITAH(45); BZ_ITAH(46); BZ_ITAH(47); BZ_ITAH(48); BZ_ITAH(49);
+
+#           undef BZ_ITAH
+
+      } else {
+	 /*--- slow version which correctly handles all situations ---*/
+         for (i = gs; i <= ge; i++) {
+            bsW ( s, 
+                  s->len  [s->selector[selCtr]] [mtfv[i]],
+                  s->code [s->selector[selCtr]] [mtfv[i]] );
+         }
+      }
+
+
+      gs = ge+1;
+      selCtr++;
+   }
+   AssertH( selCtr == nSelectors, 3007 );
+
+   if (s->verbosity >= 3)
+      VPrintf1( "codes %d\n", s->numZ-nBytes );
+}
+
+
+/*---------------------------------------------------*/
+void BZ2_compressBlock ( EState* s, Bool is_last_block )
+{
+   if (s->nblock > 0) {
+
+      BZ_FINALISE_CRC ( s->blockCRC );
+      s->combinedCRC = (s->combinedCRC << 1) | (s->combinedCRC >> 31);
+      s->combinedCRC ^= s->blockCRC;
+      if (s->blockNo > 1) s->numZ = 0;
+
+      if (s->verbosity >= 2)
+         VPrintf4( "    block %d: crc = 0x%08x, "
+                   "combined CRC = 0x%08x, size = %d\n",
+                   s->blockNo, s->blockCRC, s->combinedCRC, s->nblock );
+
+      BZ2_blockSort ( s );
+   }
+
+   s->zbits = (UChar*) (&((UChar*)s->arr2)[s->nblock]);
+
+   /*-- If this is the first block, create the stream header. --*/
+   if (s->blockNo == 1) {
+      BZ2_bsInitWrite ( s );
+      bsPutUChar ( s, BZ_HDR_B );
+      bsPutUChar ( s, BZ_HDR_Z );
+      bsPutUChar ( s, BZ_HDR_h );
+      bsPutUChar ( s, (UChar)(BZ_HDR_0 + s->blockSize100k) );
+   }
+
+   if (s->nblock > 0) {
+
+      bsPutUChar ( s, 0x31 ); bsPutUChar ( s, 0x41 );
+      bsPutUChar ( s, 0x59 ); bsPutUChar ( s, 0x26 );
+      bsPutUChar ( s, 0x53 ); bsPutUChar ( s, 0x59 );
+
+      /*-- Now the block's CRC, so it is in a known place. --*/
+      bsPutUInt32 ( s, s->blockCRC );
+
+      /*-- 
+         Now a single bit indicating (non-)randomisation. 
+         As of version 0.9.5, we use a better sorting algorithm
+         which makes randomisation unnecessary.  So always set
+         the randomised bit to 'no'.  Of course, the decoder
+         still needs to be able to handle randomised blocks
+         so as to maintain backwards compatibility with
+         older versions of bzip2.
+      --*/
+      bsW(s,1,0);
+
+      bsW ( s, 24, s->origPtr );
+      generateMTFValues ( s );
+      sendMTFValues ( s );
+   }
+
+
+   /*-- If this is the last block, add the stream trailer. --*/
+   if (is_last_block) {
+
+      bsPutUChar ( s, 0x17 ); bsPutUChar ( s, 0x72 );
+      bsPutUChar ( s, 0x45 ); bsPutUChar ( s, 0x38 );
+      bsPutUChar ( s, 0x50 ); bsPutUChar ( s, 0x90 );
+      bsPutUInt32 ( s, s->combinedCRC );
+      if (s->verbosity >= 2)
+         VPrintf1( "    final combined CRC = 0x%08x\n   ", s->combinedCRC );
+      bsFinishWrite ( s );
+   }
+}
+
+
+/*-------------------------------------------------------------*/
+/*--- end                                        compress.c ---*/
+/*-------------------------------------------------------------*/
diff --git a/plugins/Updater/bzip2-1.0.3/crctable.c b/plugins/Updater/bzip2-1.0.3/crctable.c
new file mode 100644
index 0000000000..1fea7e946c
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/crctable.c
@@ -0,0 +1,104 @@
+
+/*-------------------------------------------------------------*/
+/*--- Table for doing CRCs                                  ---*/
+/*---                                            crctable.c ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+   This file is part of bzip2/libbzip2, a program and library for
+   lossless, block-sorting data compression.
+
+   bzip2/libbzip2 version 1.0.6 of 6 September 2010
+   Copyright (C) 1996-2010 Julian Seward 
+
+   Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+   README file.
+
+   This program is released under the terms of the license contained
+   in the file LICENSE.
+   ------------------------------------------------------------------ */
+
+
+#include "bzlib_private.h"
+
+/*--
+  I think this is an implementation of the AUTODIN-II,
+  Ethernet & FDDI 32-bit CRC standard.  Vaguely derived
+  from code by Rob Warnock, in Section 51 of the
+  comp.compression FAQ.
+--*/
+
+UInt32 BZ2_crc32Table[256] = {
+
+   /*-- Ugly, innit? --*/
+
+   0x00000000L, 0x04c11db7L, 0x09823b6eL, 0x0d4326d9L,
+   0x130476dcL, 0x17c56b6bL, 0x1a864db2L, 0x1e475005L,
+   0x2608edb8L, 0x22c9f00fL, 0x2f8ad6d6L, 0x2b4bcb61L,
+   0x350c9b64L, 0x31cd86d3L, 0x3c8ea00aL, 0x384fbdbdL,
+   0x4c11db70L, 0x48d0c6c7L, 0x4593e01eL, 0x4152fda9L,
+   0x5f15adacL, 0x5bd4b01bL, 0x569796c2L, 0x52568b75L,
+   0x6a1936c8L, 0x6ed82b7fL, 0x639b0da6L, 0x675a1011L,
+   0x791d4014L, 0x7ddc5da3L, 0x709f7b7aL, 0x745e66cdL,
+   0x9823b6e0L, 0x9ce2ab57L, 0x91a18d8eL, 0x95609039L,
+   0x8b27c03cL, 0x8fe6dd8bL, 0x82a5fb52L, 0x8664e6e5L,
+   0xbe2b5b58L, 0xbaea46efL, 0xb7a96036L, 0xb3687d81L,
+   0xad2f2d84L, 0xa9ee3033L, 0xa4ad16eaL, 0xa06c0b5dL,
+   0xd4326d90L, 0xd0f37027L, 0xddb056feL, 0xd9714b49L,
+   0xc7361b4cL, 0xc3f706fbL, 0xceb42022L, 0xca753d95L,
+   0xf23a8028L, 0xf6fb9d9fL, 0xfbb8bb46L, 0xff79a6f1L,
+   0xe13ef6f4L, 0xe5ffeb43L, 0xe8bccd9aL, 0xec7dd02dL,
+   0x34867077L, 0x30476dc0L, 0x3d044b19L, 0x39c556aeL,
+   0x278206abL, 0x23431b1cL, 0x2e003dc5L, 0x2ac12072L,
+   0x128e9dcfL, 0x164f8078L, 0x1b0ca6a1L, 0x1fcdbb16L,
+   0x018aeb13L, 0x054bf6a4L, 0x0808d07dL, 0x0cc9cdcaL,
+   0x7897ab07L, 0x7c56b6b0L, 0x71159069L, 0x75d48ddeL,
+   0x6b93dddbL, 0x6f52c06cL, 0x6211e6b5L, 0x66d0fb02L,
+   0x5e9f46bfL, 0x5a5e5b08L, 0x571d7dd1L, 0x53dc6066L,
+   0x4d9b3063L, 0x495a2dd4L, 0x44190b0dL, 0x40d816baL,
+   0xaca5c697L, 0xa864db20L, 0xa527fdf9L, 0xa1e6e04eL,
+   0xbfa1b04bL, 0xbb60adfcL, 0xb6238b25L, 0xb2e29692L,
+   0x8aad2b2fL, 0x8e6c3698L, 0x832f1041L, 0x87ee0df6L,
+   0x99a95df3L, 0x9d684044L, 0x902b669dL, 0x94ea7b2aL,
+   0xe0b41de7L, 0xe4750050L, 0xe9362689L, 0xedf73b3eL,
+   0xf3b06b3bL, 0xf771768cL, 0xfa325055L, 0xfef34de2L,
+   0xc6bcf05fL, 0xc27dede8L, 0xcf3ecb31L, 0xcbffd686L,
+   0xd5b88683L, 0xd1799b34L, 0xdc3abdedL, 0xd8fba05aL,
+   0x690ce0eeL, 0x6dcdfd59L, 0x608edb80L, 0x644fc637L,
+   0x7a089632L, 0x7ec98b85L, 0x738aad5cL, 0x774bb0ebL,
+   0x4f040d56L, 0x4bc510e1L, 0x46863638L, 0x42472b8fL,
+   0x5c007b8aL, 0x58c1663dL, 0x558240e4L, 0x51435d53L,
+   0x251d3b9eL, 0x21dc2629L, 0x2c9f00f0L, 0x285e1d47L,
+   0x36194d42L, 0x32d850f5L, 0x3f9b762cL, 0x3b5a6b9bL,
+   0x0315d626L, 0x07d4cb91L, 0x0a97ed48L, 0x0e56f0ffL,
+   0x1011a0faL, 0x14d0bd4dL, 0x19939b94L, 0x1d528623L,
+   0xf12f560eL, 0xf5ee4bb9L, 0xf8ad6d60L, 0xfc6c70d7L,
+   0xe22b20d2L, 0xe6ea3d65L, 0xeba91bbcL, 0xef68060bL,
+   0xd727bbb6L, 0xd3e6a601L, 0xdea580d8L, 0xda649d6fL,
+   0xc423cd6aL, 0xc0e2d0ddL, 0xcda1f604L, 0xc960ebb3L,
+   0xbd3e8d7eL, 0xb9ff90c9L, 0xb4bcb610L, 0xb07daba7L,
+   0xae3afba2L, 0xaafbe615L, 0xa7b8c0ccL, 0xa379dd7bL,
+   0x9b3660c6L, 0x9ff77d71L, 0x92b45ba8L, 0x9675461fL,
+   0x8832161aL, 0x8cf30badL, 0x81b02d74L, 0x857130c3L,
+   0x5d8a9099L, 0x594b8d2eL, 0x5408abf7L, 0x50c9b640L,
+   0x4e8ee645L, 0x4a4ffbf2L, 0x470cdd2bL, 0x43cdc09cL,
+   0x7b827d21L, 0x7f436096L, 0x7200464fL, 0x76c15bf8L,
+   0x68860bfdL, 0x6c47164aL, 0x61043093L, 0x65c52d24L,
+   0x119b4be9L, 0x155a565eL, 0x18197087L, 0x1cd86d30L,
+   0x029f3d35L, 0x065e2082L, 0x0b1d065bL, 0x0fdc1becL,
+   0x3793a651L, 0x3352bbe6L, 0x3e119d3fL, 0x3ad08088L,
+   0x2497d08dL, 0x2056cd3aL, 0x2d15ebe3L, 0x29d4f654L,
+   0xc5a92679L, 0xc1683bceL, 0xcc2b1d17L, 0xc8ea00a0L,
+   0xd6ad50a5L, 0xd26c4d12L, 0xdf2f6bcbL, 0xdbee767cL,
+   0xe3a1cbc1L, 0xe760d676L, 0xea23f0afL, 0xeee2ed18L,
+   0xf0a5bd1dL, 0xf464a0aaL, 0xf9278673L, 0xfde69bc4L,
+   0x89b8fd09L, 0x8d79e0beL, 0x803ac667L, 0x84fbdbd0L,
+   0x9abc8bd5L, 0x9e7d9662L, 0x933eb0bbL, 0x97ffad0cL,
+   0xafb010b1L, 0xab710d06L, 0xa6322bdfL, 0xa2f33668L,
+   0xbcb4666dL, 0xb8757bdaL, 0xb5365d03L, 0xb1f740b4L
+};
+
+
+/*-------------------------------------------------------------*/
+/*--- end                                        crctable.c ---*/
+/*-------------------------------------------------------------*/
diff --git a/plugins/Updater/bzip2-1.0.3/decompress.c b/plugins/Updater/bzip2-1.0.3/decompress.c
new file mode 100644
index 0000000000..311f5668f9
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/decompress.c
@@ -0,0 +1,646 @@
+
+/*-------------------------------------------------------------*/
+/*--- Decompression machinery                               ---*/
+/*---                                          decompress.c ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+   This file is part of bzip2/libbzip2, a program and library for
+   lossless, block-sorting data compression.
+
+   bzip2/libbzip2 version 1.0.6 of 6 September 2010
+   Copyright (C) 1996-2010 Julian Seward 
+
+   Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+   README file.
+
+   This program is released under the terms of the license contained
+   in the file LICENSE.
+   ------------------------------------------------------------------ */
+
+
+#include "bzlib_private.h"
+
+
+/*---------------------------------------------------*/
+static
+void makeMaps_d ( DState* s )
+{
+   Int32 i;
+   s->nInUse = 0;
+   for (i = 0; i < 256; i++)
+      if (s->inUse[i]) {
+         s->seqToUnseq[s->nInUse] = i;
+         s->nInUse++;
+      }
+}
+
+
+/*---------------------------------------------------*/
+#define RETURN(rrr)                               \
+   { retVal = rrr; goto save_state_and_return; };
+
+#define GET_BITS(lll,vvv,nnn)                     \
+   case lll: s->state = lll;                      \
+   while (True) {                                 \
+      if (s->bsLive >= nnn) {                     \
+         UInt32 v;                                \
+         v = (s->bsBuff >>                        \
+             (s->bsLive-nnn)) & ((1 << nnn)-1);   \
+         s->bsLive -= nnn;                        \
+         vvv = v;                                 \
+         break;                                   \
+      }                                           \
+      if (s->strm->avail_in == 0) RETURN(BZ_OK);  \
+      s->bsBuff                                   \
+         = (s->bsBuff << 8) |                     \
+           ((UInt32)                              \
+              (*((UChar*)(s->strm->next_in))));   \
+      s->bsLive += 8;                             \
+      s->strm->next_in++;                         \
+      s->strm->avail_in--;                        \
+      s->strm->total_in_lo32++;                   \
+      if (s->strm->total_in_lo32 == 0)            \
+         s->strm->total_in_hi32++;                \
+   }
+
+#define GET_UCHAR(lll,uuu)                        \
+   GET_BITS(lll,uuu,8)
+
+#define GET_BIT(lll,uuu)                          \
+   GET_BITS(lll,uuu,1)
+
+/*---------------------------------------------------*/
+#define GET_MTF_VAL(label1,label2,lval)           \
+{                                                 \
+   if (groupPos == 0) {                           \
+      groupNo++;                                  \
+      if (groupNo >= nSelectors)                  \
+         RETURN(BZ_DATA_ERROR);                   \
+      groupPos = BZ_G_SIZE;                       \
+      gSel = s->selector[groupNo];                \
+      gMinlen = s->minLens[gSel];                 \
+      gLimit = &(s->limit[gSel][0]);              \
+      gPerm = &(s->perm[gSel][0]);                \
+      gBase = &(s->base[gSel][0]);                \
+   }                                              \
+   groupPos--;                                    \
+   zn = gMinlen;                                  \
+   GET_BITS(label1, zvec, zn);                    \
+   while (1) {                                    \
+      if (zn > 20 /* the longest code */)         \
+         RETURN(BZ_DATA_ERROR);                   \
+      if (zvec <= gLimit[zn]) break;              \
+      zn++;                                       \
+      GET_BIT(label2, zj);                        \
+      zvec = (zvec << 1) | zj;                    \
+   };                                             \
+   if (zvec - gBase[zn] < 0                       \
+       || zvec - gBase[zn] >= BZ_MAX_ALPHA_SIZE)  \
+      RETURN(BZ_DATA_ERROR);                      \
+   lval = gPerm[zvec - gBase[zn]];                \
+}
+
+
+/*---------------------------------------------------*/
+Int32 BZ2_decompress ( DState* s )
+{
+   UChar      uc;
+   Int32      retVal;
+   Int32      minLen, maxLen;
+   bz_stream* strm = s->strm;
+
+   /* stuff that needs to be saved/restored */
+   Int32  i;
+   Int32  j;
+   Int32  t;
+   Int32  alphaSize;
+   Int32  nGroups;
+   Int32  nSelectors;
+   Int32  EOB;
+   Int32  groupNo;
+   Int32  groupPos;
+   Int32  nextSym;
+   Int32  nblockMAX;
+   Int32  nblock;
+   Int32  es;
+   Int32  N;
+   Int32  curr;
+   Int32  zt;
+   Int32  zn; 
+   Int32  zvec;
+   Int32  zj;
+   Int32  gSel;
+   Int32  gMinlen;
+   Int32* gLimit;
+   Int32* gBase;
+   Int32* gPerm;
+
+   if (s->state == BZ_X_MAGIC_1) {
+      /*initialise the save area*/
+      s->save_i           = 0;
+      s->save_j           = 0;
+      s->save_t           = 0;
+      s->save_alphaSize   = 0;
+      s->save_nGroups     = 0;
+      s->save_nSelectors  = 0;
+      s->save_EOB         = 0;
+      s->save_groupNo     = 0;
+      s->save_groupPos    = 0;
+      s->save_nextSym     = 0;
+      s->save_nblockMAX   = 0;
+      s->save_nblock      = 0;
+      s->save_es          = 0;
+      s->save_N           = 0;
+      s->save_curr        = 0;
+      s->save_zt          = 0;
+      s->save_zn          = 0;
+      s->save_zvec        = 0;
+      s->save_zj          = 0;
+      s->save_gSel        = 0;
+      s->save_gMinlen     = 0;
+      s->save_gLimit      = NULL;
+      s->save_gBase       = NULL;
+      s->save_gPerm       = NULL;
+   }
+
+   /*restore from the save area*/
+   i           = s->save_i;
+   j           = s->save_j;
+   t           = s->save_t;
+   alphaSize   = s->save_alphaSize;
+   nGroups     = s->save_nGroups;
+   nSelectors  = s->save_nSelectors;
+   EOB         = s->save_EOB;
+   groupNo     = s->save_groupNo;
+   groupPos    = s->save_groupPos;
+   nextSym     = s->save_nextSym;
+   nblockMAX   = s->save_nblockMAX;
+   nblock      = s->save_nblock;
+   es          = s->save_es;
+   N           = s->save_N;
+   curr        = s->save_curr;
+   zt          = s->save_zt;
+   zn          = s->save_zn; 
+   zvec        = s->save_zvec;
+   zj          = s->save_zj;
+   gSel        = s->save_gSel;
+   gMinlen     = s->save_gMinlen;
+   gLimit      = s->save_gLimit;
+   gBase       = s->save_gBase;
+   gPerm       = s->save_gPerm;
+
+   retVal = BZ_OK;
+
+   switch (s->state) {
+
+      GET_UCHAR(BZ_X_MAGIC_1, uc);
+      if (uc != BZ_HDR_B) RETURN(BZ_DATA_ERROR_MAGIC);
+
+      GET_UCHAR(BZ_X_MAGIC_2, uc);
+      if (uc != BZ_HDR_Z) RETURN(BZ_DATA_ERROR_MAGIC);
+
+      GET_UCHAR(BZ_X_MAGIC_3, uc)
+      if (uc != BZ_HDR_h) RETURN(BZ_DATA_ERROR_MAGIC);
+
+      GET_BITS(BZ_X_MAGIC_4, s->blockSize100k, 8)
+      if (s->blockSize100k < (BZ_HDR_0 + 1) || 
+          s->blockSize100k > (BZ_HDR_0 + 9)) RETURN(BZ_DATA_ERROR_MAGIC);
+      s->blockSize100k -= BZ_HDR_0;
+
+      if (s->smallDecompress) {
+         s->ll16 = BZALLOC( s->blockSize100k * 100000 * sizeof(UInt16) );
+         s->ll4  = BZALLOC( 
+                      ((1 + s->blockSize100k * 100000) >> 1) * sizeof(UChar) 
+                   );
+         if (s->ll16 == NULL || s->ll4 == NULL) RETURN(BZ_MEM_ERROR);
+      } else {
+         s->tt  = BZALLOC( s->blockSize100k * 100000 * sizeof(Int32) );
+         if (s->tt == NULL) RETURN(BZ_MEM_ERROR);
+      }
+
+      GET_UCHAR(BZ_X_BLKHDR_1, uc);
+
+      if (uc == 0x17) goto endhdr_2;
+      if (uc != 0x31) RETURN(BZ_DATA_ERROR);
+      GET_UCHAR(BZ_X_BLKHDR_2, uc);
+      if (uc != 0x41) RETURN(BZ_DATA_ERROR);
+      GET_UCHAR(BZ_X_BLKHDR_3, uc);
+      if (uc != 0x59) RETURN(BZ_DATA_ERROR);
+      GET_UCHAR(BZ_X_BLKHDR_4, uc);
+      if (uc != 0x26) RETURN(BZ_DATA_ERROR);
+      GET_UCHAR(BZ_X_BLKHDR_5, uc);
+      if (uc != 0x53) RETURN(BZ_DATA_ERROR);
+      GET_UCHAR(BZ_X_BLKHDR_6, uc);
+      if (uc != 0x59) RETURN(BZ_DATA_ERROR);
+
+      s->currBlockNo++;
+      if (s->verbosity >= 2)
+         VPrintf1 ( "\n    [%d: huff+mtf ", s->currBlockNo );
+ 
+      s->storedBlockCRC = 0;
+      GET_UCHAR(BZ_X_BCRC_1, uc);
+      s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc);
+      GET_UCHAR(BZ_X_BCRC_2, uc);
+      s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc);
+      GET_UCHAR(BZ_X_BCRC_3, uc);
+      s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc);
+      GET_UCHAR(BZ_X_BCRC_4, uc);
+      s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc);
+
+      GET_BITS(BZ_X_RANDBIT, s->blockRandomised, 1);
+
+      s->origPtr = 0;
+      GET_UCHAR(BZ_X_ORIGPTR_1, uc);
+      s->origPtr = (s->origPtr << 8) | ((Int32)uc);
+      GET_UCHAR(BZ_X_ORIGPTR_2, uc);
+      s->origPtr = (s->origPtr << 8) | ((Int32)uc);
+      GET_UCHAR(BZ_X_ORIGPTR_3, uc);
+      s->origPtr = (s->origPtr << 8) | ((Int32)uc);
+
+      if (s->origPtr < 0)
+         RETURN(BZ_DATA_ERROR);
+      if (s->origPtr > 10 + 100000*s->blockSize100k) 
+         RETURN(BZ_DATA_ERROR);
+
+      /*--- Receive the mapping table ---*/
+      for (i = 0; i < 16; i++) {
+         GET_BIT(BZ_X_MAPPING_1, uc);
+         if (uc == 1) 
+            s->inUse16[i] = True; else 
+            s->inUse16[i] = False;
+      }
+
+      for (i = 0; i < 256; i++) s->inUse[i] = False;
+
+      for (i = 0; i < 16; i++)
+         if (s->inUse16[i])
+            for (j = 0; j < 16; j++) {
+               GET_BIT(BZ_X_MAPPING_2, uc);
+               if (uc == 1) s->inUse[i * 16 + j] = True;
+            }
+      makeMaps_d ( s );
+      if (s->nInUse == 0) RETURN(BZ_DATA_ERROR);
+      alphaSize = s->nInUse+2;
+
+      /*--- Now the selectors ---*/
+      GET_BITS(BZ_X_SELECTOR_1, nGroups, 3);
+      if (nGroups < 2 || nGroups > 6) RETURN(BZ_DATA_ERROR);
+      GET_BITS(BZ_X_SELECTOR_2, nSelectors, 15);
+      if (nSelectors < 1) RETURN(BZ_DATA_ERROR);
+      for (i = 0; i < nSelectors; i++) {
+         j = 0;
+         while (True) {
+            GET_BIT(BZ_X_SELECTOR_3, uc);
+            if (uc == 0) break;
+            j++;
+            if (j >= nGroups) RETURN(BZ_DATA_ERROR);
+         }
+         s->selectorMtf[i] = j;
+      }
+
+      /*--- Undo the MTF values for the selectors. ---*/
+      {
+         UChar pos[BZ_N_GROUPS], tmp, v;
+         for (v = 0; v < nGroups; v++) pos[v] = v;
+   
+         for (i = 0; i < nSelectors; i++) {
+            v = s->selectorMtf[i];
+            tmp = pos[v];
+            while (v > 0) { pos[v] = pos[v-1]; v--; }
+            pos[0] = tmp;
+            s->selector[i] = tmp;
+         }
+      }
+
+      /*--- Now the coding tables ---*/
+      for (t = 0; t < nGroups; t++) {
+         GET_BITS(BZ_X_CODING_1, curr, 5);
+         for (i = 0; i < alphaSize; i++) {
+            while (True) {
+               if (curr < 1 || curr > 20) RETURN(BZ_DATA_ERROR);
+               GET_BIT(BZ_X_CODING_2, uc);
+               if (uc == 0) break;
+               GET_BIT(BZ_X_CODING_3, uc);
+               if (uc == 0) curr++; else curr--;
+            }
+            s->len[t][i] = curr;
+         }
+      }
+
+      /*--- Create the Huffman decoding tables ---*/
+      for (t = 0; t < nGroups; t++) {
+         minLen = 32;
+         maxLen = 0;
+         for (i = 0; i < alphaSize; i++) {
+            if (s->len[t][i] > maxLen) maxLen = s->len[t][i];
+            if (s->len[t][i] < minLen) minLen = s->len[t][i];
+         }
+         BZ2_hbCreateDecodeTables ( 
+            &(s->limit[t][0]), 
+            &(s->base[t][0]), 
+            &(s->perm[t][0]), 
+            &(s->len[t][0]),
+            minLen, maxLen, alphaSize
+         );
+         s->minLens[t] = minLen;
+      }
+
+      /*--- Now the MTF values ---*/
+
+      EOB      = s->nInUse+1;
+      nblockMAX = 100000 * s->blockSize100k;
+      groupNo  = -1;
+      groupPos = 0;
+
+      for (i = 0; i <= 255; i++) s->unzftab[i] = 0;
+
+      /*-- MTF init --*/
+      {
+         Int32 ii, jj, kk;
+         kk = MTFA_SIZE-1;
+         for (ii = 256 / MTFL_SIZE - 1; ii >= 0; ii--) {
+            for (jj = MTFL_SIZE-1; jj >= 0; jj--) {
+               s->mtfa[kk] = (UChar)(ii * MTFL_SIZE + jj);
+               kk--;
+            }
+            s->mtfbase[ii] = kk + 1;
+         }
+      }
+      /*-- end MTF init --*/
+
+      nblock = 0;
+      GET_MTF_VAL(BZ_X_MTF_1, BZ_X_MTF_2, nextSym);
+
+      while (True) {
+
+         if (nextSym == EOB) break;
+
+         if (nextSym == BZ_RUNA || nextSym == BZ_RUNB) {
+
+            es = -1;
+            N = 1;
+            do {
+               /* Check that N doesn't get too big, so that es doesn't
+                  go negative.  The maximum value that can be
+                  RUNA/RUNB encoded is equal to the block size (post
+                  the initial RLE), viz, 900k, so bounding N at 2
+                  million should guard against overflow without
+                  rejecting any legitimate inputs. */
+               if (N >= 2*1024*1024) RETURN(BZ_DATA_ERROR);
+               if (nextSym == BZ_RUNA) es = es + (0+1) * N; else
+               if (nextSym == BZ_RUNB) es = es + (1+1) * N;
+               N = N * 2;
+               GET_MTF_VAL(BZ_X_MTF_3, BZ_X_MTF_4, nextSym);
+            }
+               while (nextSym == BZ_RUNA || nextSym == BZ_RUNB);
+
+            es++;
+            uc = s->seqToUnseq[ s->mtfa[s->mtfbase[0]] ];
+            s->unzftab[uc] += es;
+
+            if (s->smallDecompress)
+               while (es > 0) {
+                  if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR);
+                  s->ll16[nblock] = (UInt16)uc;
+                  nblock++;
+                  es--;
+               }
+            else
+               while (es > 0) {
+                  if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR);
+                  s->tt[nblock] = (UInt32)uc;
+                  nblock++;
+                  es--;
+               };
+
+            continue;
+
+         } else {
+
+            if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR);
+
+            /*-- uc = MTF ( nextSym-1 ) --*/
+            {
+               Int32 ii, jj, kk, pp, lno, off;
+               UInt32 nn;
+               nn = (UInt32)(nextSym - 1);
+
+               if (nn < MTFL_SIZE) {
+                  /* avoid general-case expense */
+                  pp = s->mtfbase[0];
+                  uc = s->mtfa[pp+nn];
+                  while (nn > 3) {
+                     Int32 z = pp+nn;
+                     s->mtfa[(z)  ] = s->mtfa[(z)-1];
+                     s->mtfa[(z)-1] = s->mtfa[(z)-2];
+                     s->mtfa[(z)-2] = s->mtfa[(z)-3];
+                     s->mtfa[(z)-3] = s->mtfa[(z)-4];
+                     nn -= 4;
+                  }
+                  while (nn > 0) { 
+                     s->mtfa[(pp+nn)] = s->mtfa[(pp+nn)-1]; nn--; 
+                  };
+                  s->mtfa[pp] = uc;
+               } else { 
+                  /* general case */
+                  lno = nn / MTFL_SIZE;
+                  off = nn % MTFL_SIZE;
+                  pp = s->mtfbase[lno] + off;
+                  uc = s->mtfa[pp];
+                  while (pp > s->mtfbase[lno]) { 
+                     s->mtfa[pp] = s->mtfa[pp-1]; pp--; 
+                  };
+                  s->mtfbase[lno]++;
+                  while (lno > 0) {
+                     s->mtfbase[lno]--;
+                     s->mtfa[s->mtfbase[lno]] 
+                        = s->mtfa[s->mtfbase[lno-1] + MTFL_SIZE - 1];
+                     lno--;
+                  }
+                  s->mtfbase[0]--;
+                  s->mtfa[s->mtfbase[0]] = uc;
+                  if (s->mtfbase[0] == 0) {
+                     kk = MTFA_SIZE-1;
+                     for (ii = 256 / MTFL_SIZE-1; ii >= 0; ii--) {
+                        for (jj = MTFL_SIZE-1; jj >= 0; jj--) {
+                           s->mtfa[kk] = s->mtfa[s->mtfbase[ii] + jj];
+                           kk--;
+                        }
+                        s->mtfbase[ii] = kk + 1;
+                     }
+                  }
+               }
+            }
+            /*-- end uc = MTF ( nextSym-1 ) --*/
+
+            s->unzftab[s->seqToUnseq[uc]]++;
+            if (s->smallDecompress)
+               s->ll16[nblock] = (UInt16)(s->seqToUnseq[uc]); else
+               s->tt[nblock]   = (UInt32)(s->seqToUnseq[uc]);
+            nblock++;
+
+            GET_MTF_VAL(BZ_X_MTF_5, BZ_X_MTF_6, nextSym);
+            continue;
+         }
+      }
+
+      /* Now we know what nblock is, we can do a better sanity
+         check on s->origPtr.
+      */
+      if (s->origPtr < 0 || s->origPtr >= nblock)
+         RETURN(BZ_DATA_ERROR);
+
+      /*-- Set up cftab to facilitate generation of T^(-1) --*/
+      /* Check: unzftab entries in range. */
+      for (i = 0; i <= 255; i++) {
+         if (s->unzftab[i] < 0 || s->unzftab[i] > nblock)
+            RETURN(BZ_DATA_ERROR);
+      }
+      /* Actually generate cftab. */
+      s->cftab[0] = 0;
+      for (i = 1; i <= 256; i++) s->cftab[i] = s->unzftab[i-1];
+      for (i = 1; i <= 256; i++) s->cftab[i] += s->cftab[i-1];
+      /* Check: cftab entries in range. */
+      for (i = 0; i <= 256; i++) {
+         if (s->cftab[i] < 0 || s->cftab[i] > nblock) {
+            /* s->cftab[i] can legitimately be == nblock */
+            RETURN(BZ_DATA_ERROR);
+         }
+      }
+      /* Check: cftab entries non-descending. */
+      for (i = 1; i <= 256; i++) {
+         if (s->cftab[i-1] > s->cftab[i]) {
+            RETURN(BZ_DATA_ERROR);
+         }
+      }
+
+      s->state_out_len = 0;
+      s->state_out_ch  = 0;
+      BZ_INITIALISE_CRC ( s->calculatedBlockCRC );
+      s->state = BZ_X_OUTPUT;
+      if (s->verbosity >= 2) VPrintf0 ( "rt+rld" );
+
+      if (s->smallDecompress) {
+
+         /*-- Make a copy of cftab, used in generation of T --*/
+         for (i = 0; i <= 256; i++) s->cftabCopy[i] = s->cftab[i];
+
+         /*-- compute the T vector --*/
+         for (i = 0; i < nblock; i++) {
+            uc = (UChar)(s->ll16[i]);
+            SET_LL(i, s->cftabCopy[uc]);
+            s->cftabCopy[uc]++;
+         }
+
+         /*-- Compute T^(-1) by pointer reversal on T --*/
+         i = s->origPtr;
+         j = GET_LL(i);
+         do {
+            Int32 tmp = GET_LL(j);
+            SET_LL(j, i);
+            i = j;
+            j = tmp;
+         }
+            while (i != s->origPtr);
+
+         s->tPos = s->origPtr;
+         s->nblock_used = 0;
+         if (s->blockRandomised) {
+            BZ_RAND_INIT_MASK;
+            BZ_GET_SMALL(s->k0); s->nblock_used++;
+            BZ_RAND_UPD_MASK; s->k0 ^= BZ_RAND_MASK; 
+         } else {
+            BZ_GET_SMALL(s->k0); s->nblock_used++;
+         }
+
+      } else {
+
+         /*-- compute the T^(-1) vector --*/
+         for (i = 0; i < nblock; i++) {
+            uc = (UChar)(s->tt[i] & 0xff);
+            s->tt[s->cftab[uc]] |= (i << 8);
+            s->cftab[uc]++;
+         }
+
+         s->tPos = s->tt[s->origPtr] >> 8;
+         s->nblock_used = 0;
+         if (s->blockRandomised) {
+            BZ_RAND_INIT_MASK;
+            BZ_GET_FAST(s->k0); s->nblock_used++;
+            BZ_RAND_UPD_MASK; s->k0 ^= BZ_RAND_MASK; 
+         } else {
+            BZ_GET_FAST(s->k0); s->nblock_used++;
+         }
+
+      }
+
+      RETURN(BZ_OK);
+
+
+
+    endhdr_2:
+
+      GET_UCHAR(BZ_X_ENDHDR_2, uc);
+      if (uc != 0x72) RETURN(BZ_DATA_ERROR);
+      GET_UCHAR(BZ_X_ENDHDR_3, uc);
+      if (uc != 0x45) RETURN(BZ_DATA_ERROR);
+      GET_UCHAR(BZ_X_ENDHDR_4, uc);
+      if (uc != 0x38) RETURN(BZ_DATA_ERROR);
+      GET_UCHAR(BZ_X_ENDHDR_5, uc);
+      if (uc != 0x50) RETURN(BZ_DATA_ERROR);
+      GET_UCHAR(BZ_X_ENDHDR_6, uc);
+      if (uc != 0x90) RETURN(BZ_DATA_ERROR);
+
+      s->storedCombinedCRC = 0;
+      GET_UCHAR(BZ_X_CCRC_1, uc);
+      s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc);
+      GET_UCHAR(BZ_X_CCRC_2, uc);
+      s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc);
+      GET_UCHAR(BZ_X_CCRC_3, uc);
+      s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc);
+      GET_UCHAR(BZ_X_CCRC_4, uc);
+      s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc);
+
+      s->state = BZ_X_IDLE;
+      RETURN(BZ_STREAM_END);
+
+      default: AssertH ( False, 4001 );
+   }
+
+   AssertH ( False, 4002 );
+
+   save_state_and_return:
+
+   s->save_i           = i;
+   s->save_j           = j;
+   s->save_t           = t;
+   s->save_alphaSize   = alphaSize;
+   s->save_nGroups     = nGroups;
+   s->save_nSelectors  = nSelectors;
+   s->save_EOB         = EOB;
+   s->save_groupNo     = groupNo;
+   s->save_groupPos    = groupPos;
+   s->save_nextSym     = nextSym;
+   s->save_nblockMAX   = nblockMAX;
+   s->save_nblock      = nblock;
+   s->save_es          = es;
+   s->save_N           = N;
+   s->save_curr        = curr;
+   s->save_zt          = zt;
+   s->save_zn          = zn;
+   s->save_zvec        = zvec;
+   s->save_zj          = zj;
+   s->save_gSel        = gSel;
+   s->save_gMinlen     = gMinlen;
+   s->save_gLimit      = gLimit;
+   s->save_gBase       = gBase;
+   s->save_gPerm       = gPerm;
+
+   return retVal;   
+}
+
+
+/*-------------------------------------------------------------*/
+/*--- end                                      decompress.c ---*/
+/*-------------------------------------------------------------*/
diff --git a/plugins/Updater/bzip2-1.0.3/dlltest.c b/plugins/Updater/bzip2-1.0.3/dlltest.c
new file mode 100644
index 0000000000..03fa14620e
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/dlltest.c
@@ -0,0 +1,175 @@
+/*
+   minibz2
+      libbz2.dll test program.
+      by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp)
+      This file is Public Domain.  Welcome any email to me.
+
+   usage: minibz2 [-d] [-{1,2,..9}] [[srcfilename] destfilename]
+*/
+
+#define BZ_IMPORT
+#include 
+#include 
+#include "bzlib.h"
+#ifdef _WIN32
+#include 
+#endif
+
+
+#ifdef _WIN32
+
+#define BZ2_LIBNAME "libbz2-1.0.2.DLL" 
+
+#include 
+static int BZ2DLLLoaded = 0;
+static HINSTANCE BZ2DLLhLib;
+int BZ2DLLLoadLibrary(void)
+{
+   HINSTANCE hLib;
+
+   if(BZ2DLLLoaded==1){return 0;}
+   hLib=LoadLibrary(BZ2_LIBNAME);
+   if(hLib == NULL){
+      fprintf(stderr,"Can't load %s\n",BZ2_LIBNAME);
+      return -1;
+   }
+   BZ2_bzlibVersion=GetProcAddress(hLib,"BZ2_bzlibVersion");
+   BZ2_bzopen=GetProcAddress(hLib,"BZ2_bzopen");
+   BZ2_bzdopen=GetProcAddress(hLib,"BZ2_bzdopen");
+   BZ2_bzread=GetProcAddress(hLib,"BZ2_bzread");
+   BZ2_bzwrite=GetProcAddress(hLib,"BZ2_bzwrite");
+   BZ2_bzflush=GetProcAddress(hLib,"BZ2_bzflush");
+   BZ2_bzclose=GetProcAddress(hLib,"BZ2_bzclose");
+   BZ2_bzerror=GetProcAddress(hLib,"BZ2_bzerror");
+
+   if (!BZ2_bzlibVersion || !BZ2_bzopen || !BZ2_bzdopen
+       || !BZ2_bzread || !BZ2_bzwrite || !BZ2_bzflush
+       || !BZ2_bzclose || !BZ2_bzerror) {
+      fprintf(stderr,"GetProcAddress failed.\n");
+      return -1;
+   }
+   BZ2DLLLoaded=1;
+   BZ2DLLhLib=hLib;
+   return 0;
+
+}
+int BZ2DLLFreeLibrary(void)
+{
+   if(BZ2DLLLoaded==0){return 0;}
+   FreeLibrary(BZ2DLLhLib);
+   BZ2DLLLoaded=0;
+}
+#endif /* WIN32 */
+
+void usage(void)
+{
+   puts("usage: minibz2 [-d] [-{1,2,..9}] [[srcfilename] destfilename]");
+}
+
+int main(int argc,char *argv[])
+{
+   int decompress = 0;
+   int level = 9;
+   char *fn_r = NULL;
+   char *fn_w = NULL;
+
+#ifdef _WIN32
+   if(BZ2DLLLoadLibrary()<0){
+      fprintf(stderr,"Loading of %s failed.  Giving up.\n", BZ2_LIBNAME);
+      exit(1);
+   }
+   printf("Loading of %s succeeded.  Library version is %s.\n",
+          BZ2_LIBNAME, BZ2_bzlibVersion() );
+#endif
+   while(++argv,--argc){
+      if(**argv =='-' || **argv=='/'){
+         char *p;
+
+         for(p=*argv+1;*p;p++){
+            if(*p=='d'){
+               decompress = 1;
+            }else if('1'<=*p && *p<='9'){
+               level = *p - '0';
+            }else{
+               usage();
+               exit(1);
+            }
+         }
+      }else{
+         break;
+      }
+   }
+   if(argc>=1){
+      fn_r = *argv;
+      argc--;argv++;
+   }else{
+      fn_r = NULL;
+   }
+   if(argc>=1){
+      fn_w = *argv;
+      argc--;argv++;
+   }else{
+      fn_w = NULL;
+   }
+   {
+      int len;
+      char buff[0x1000];
+      char mode[10];
+
+      if(decompress){
+         BZFILE *BZ2fp_r = NULL;
+         FILE *fp_w = NULL;
+
+         if(fn_w){
+            if((fp_w = fopen(fn_w,"wb"))==NULL){
+               printf("can't open [%s]\n",fn_w);
+               perror("reason:");
+               exit(1);
+            }
+         }else{
+            fp_w = stdout;
+         }
+         if((fn_r == NULL && (BZ2fp_r = BZ2_bzdopen(fileno(stdin),"rb"))==NULL)
+            || (fn_r != NULL && (BZ2fp_r = BZ2_bzopen(fn_r,"rb"))==NULL)){
+            printf("can't bz2openstream\n");
+            exit(1);
+         }
+         while((len=BZ2_bzread(BZ2fp_r,buff,0x1000))>0){
+            fwrite(buff,1,len,fp_w);
+         }
+         BZ2_bzclose(BZ2fp_r);
+         if(fp_w != stdout) fclose(fp_w);
+      }else{
+         BZFILE *BZ2fp_w = NULL;
+         FILE *fp_r = NULL;
+
+         if(fn_r){
+            if((fp_r = fopen(fn_r,"rb"))==NULL){
+               printf("can't open [%s]\n",fn_r);
+               perror("reason:");
+               exit(1);
+            }
+         }else{
+            fp_r = stdin;
+         }
+         mode[0]='w';
+         mode[1] = '0' + level;
+         mode[2] = '\0';
+
+         if((fn_w == NULL && (BZ2fp_w = BZ2_bzdopen(fileno(stdout),mode))==NULL)
+            || (fn_w !=NULL && (BZ2fp_w = BZ2_bzopen(fn_w,mode))==NULL)){
+            printf("can't bz2openstream\n");
+            exit(1);
+         }
+         while((len=fread(buff,1,0x1000,fp_r))>0){
+            BZ2_bzwrite(BZ2fp_w,buff,len);
+         }
+         BZ2_bzclose(BZ2fp_w);
+         if(fp_r!=stdin)fclose(fp_r);
+      }
+   }
+#ifdef _WIN32
+   BZ2DLLFreeLibrary();
+#endif
+   return 0;
+}
diff --git a/plugins/Updater/bzip2-1.0.3/dlltest.dsp b/plugins/Updater/bzip2-1.0.3/dlltest.dsp
new file mode 100644
index 0000000000..4b1615edcd
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/dlltest.dsp
@@ -0,0 +1,93 @@
+# Microsoft Developer Studio Project File - Name="dlltest" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# ** •ÒW‚µ‚È‚¢‚Å‚­‚¾‚³‚¢ **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=dlltest - Win32 Debug
+!MESSAGE ‚±‚ê‚Í—LŒø‚ÈÒ²¸Ì§²Ù‚Å‚Í‚ ‚è‚Ü‚¹‚ñB ‚±‚ÌÌßÛ¼Þª¸Ä‚ðËÞÙÄÞ‚·‚邽‚ß‚É‚Í NMAKE ‚ðŽg—p‚µ‚Ä‚­‚¾‚³‚¢B
+!MESSAGE [Ò²¸Ì§²Ù‚Ì´¸½Îß°Ä] ºÏÝÄÞ‚ðŽg—p‚µ‚ÄŽÀs‚µ‚Ä‚­‚¾‚³‚¢
+!MESSAGE 
+!MESSAGE NMAKE /f "dlltest.mak".
+!MESSAGE 
+!MESSAGE NMAKE ‚ÌŽÀsŽž‚É\¬‚ðŽw’è‚Å‚«‚Ü‚·
+!MESSAGE ºÏÝÄÞ ×²Ýã‚ÅϸۂÌÝ’è‚ð’è‹`‚µ‚Ü‚·B—á:
+!MESSAGE 
+!MESSAGE NMAKE /f "dlltest.mak" CFG="dlltest - Win32 Debug"
+!MESSAGE 
+!MESSAGE ‘I‘ð‰Â”\‚ÈËÞÙÄÞ Ó°ÄÞ:
+!MESSAGE 
+!MESSAGE "dlltest - Win32 Release" ("Win32 (x86) Console Application" —p)
+!MESSAGE "dlltest - Win32 Debug" ("Win32 (x86) Console Application" —p)
+!MESSAGE 
+
+# Begin Project
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF  "$(CFG)" == "dlltest - 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 "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /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
+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 /subsystem:console /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 /subsystem:console /machine:I386 /out:"minibz2.exe"
+
+!ELSEIF  "$(CFG)" == "dlltest - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "dlltest_"
+# PROP BASE Intermediate_Dir "dlltest_"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "dlltest_"
+# PROP Intermediate_Dir "dlltest_"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# 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 /subsystem:console /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 /subsystem:console /debug /machine:I386 /out:"minibz2.exe" /pdbtype:sept
+
+!ENDIF 
+
+# Begin Target
+
+# Name "dlltest - Win32 Release"
+# Name "dlltest - Win32 Debug"
+# Begin Source File
+
+SOURCE=.\bzlib.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\dlltest.c
+# End Source File
+# End Target
+# End Project
diff --git a/plugins/Updater/bzip2-1.0.3/entities.xml b/plugins/Updater/bzip2-1.0.3/entities.xml
new file mode 100644
index 0000000000..4b28f34659
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/entities.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/plugins/Updater/bzip2-1.0.3/format.pl b/plugins/Updater/bzip2-1.0.3/format.pl
new file mode 100644
index 0000000000..f169fd9de2
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/format.pl
@@ -0,0 +1,68 @@
+#!/usr/bin/perl -w
+#
+# ------------------------------------------------------------------
+# This file is part of bzip2/libbzip2, a program and library for
+# lossless, block-sorting data compression.
+#
+# bzip2/libbzip2 version 1.0.6 of 6 September 2010
+# Copyright (C) 1996-2010 Julian Seward 
+#
+# Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+# README file.
+#
+# This program is released under the terms of the license contained
+# in the file LICENSE.
+# ------------------------------------------------------------------
+#
+use strict;
+
+# get command line values:
+if ( $#ARGV !=1 ) {
+    die "Usage:  $0 xml_infile xml_outfile\n";
+}
+
+my $infile = shift;
+# check infile exists
+die "Can't find file \"$infile\""
+  unless -f $infile;
+# check we can read infile
+if (! -r $infile) {
+    die "Can't read input $infile\n";
+}
+# check we can open infile
+open( INFILE,"<$infile" ) or 
+    die "Can't input $infile $!";
+
+#my $outfile = 'fmt-manual.xml';
+my $outfile = shift;
+#print "Infile: $infile, Outfile: $outfile\n";
+# check we can write to outfile
+open( OUTFILE,">$outfile" ) or 
+    die "Can't output $outfile $! for writing";
+
+my ($prev, $curr, $str);
+$prev = ''; $curr = '';
+while (  ) {
+
+		print OUTFILE $prev;
+    $prev = $curr;
+    $curr = $_;
+    $str = '';
+
+    if ( $prev =~ /$|$/ ) {
+        chomp $prev;
+        $curr = join( '', $prev, "|<\/screen>/ ) {
+        chomp $prev;
+        $curr = join( '', $prev, "]]>", $curr );
+				$prev = '';
+        next;
+    }
+}
+print OUTFILE $curr;
+close INFILE;
+close OUTFILE;
+exit;
diff --git a/plugins/Updater/bzip2-1.0.3/huffman.c b/plugins/Updater/bzip2-1.0.3/huffman.c
new file mode 100644
index 0000000000..2283fdbc5a
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/huffman.c
@@ -0,0 +1,205 @@
+
+/*-------------------------------------------------------------*/
+/*--- Huffman coding low-level stuff                        ---*/
+/*---                                             huffman.c ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+   This file is part of bzip2/libbzip2, a program and library for
+   lossless, block-sorting data compression.
+
+   bzip2/libbzip2 version 1.0.6 of 6 September 2010
+   Copyright (C) 1996-2010 Julian Seward 
+
+   Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+   README file.
+
+   This program is released under the terms of the license contained
+   in the file LICENSE.
+   ------------------------------------------------------------------ */
+
+
+#include "bzlib_private.h"
+
+/*---------------------------------------------------*/
+#define WEIGHTOF(zz0)  ((zz0) & 0xffffff00)
+#define DEPTHOF(zz1)   ((zz1) & 0x000000ff)
+#define MYMAX(zz2,zz3) ((zz2) > (zz3) ? (zz2) : (zz3))
+
+#define ADDWEIGHTS(zw1,zw2)                           \
+   (WEIGHTOF(zw1)+WEIGHTOF(zw2)) |                    \
+   (1 + MYMAX(DEPTHOF(zw1),DEPTHOF(zw2)))
+
+#define UPHEAP(z)                                     \
+{                                                     \
+   Int32 zz, tmp;                                     \
+   zz = z; tmp = heap[zz];                            \
+   while (weight[tmp] < weight[heap[zz >> 1]]) {      \
+      heap[zz] = heap[zz >> 1];                       \
+      zz >>= 1;                                       \
+   }                                                  \
+   heap[zz] = tmp;                                    \
+}
+
+#define DOWNHEAP(z)                                   \
+{                                                     \
+   Int32 zz, yy, tmp;                                 \
+   zz = z; tmp = heap[zz];                            \
+   while (True) {                                     \
+      yy = zz << 1;                                   \
+      if (yy > nHeap) break;                          \
+      if (yy < nHeap &&                               \
+          weight[heap[yy+1]] < weight[heap[yy]])      \
+         yy++;                                        \
+      if (weight[tmp] < weight[heap[yy]]) break;      \
+      heap[zz] = heap[yy];                            \
+      zz = yy;                                        \
+   }                                                  \
+   heap[zz] = tmp;                                    \
+}
+
+
+/*---------------------------------------------------*/
+void BZ2_hbMakeCodeLengths ( UChar *len, 
+                             Int32 *freq,
+                             Int32 alphaSize,
+                             Int32 maxLen )
+{
+   /*--
+      Nodes and heap entries run from 1.  Entry 0
+      for both the heap and nodes is a sentinel.
+   --*/
+   Int32 nNodes, nHeap, n1, n2, i, j, k;
+   Bool  tooLong;
+
+   Int32 heap   [ BZ_MAX_ALPHA_SIZE + 2 ];
+   Int32 weight [ BZ_MAX_ALPHA_SIZE * 2 ];
+   Int32 parent [ BZ_MAX_ALPHA_SIZE * 2 ]; 
+
+   for (i = 0; i < alphaSize; i++)
+      weight[i+1] = (freq[i] == 0 ? 1 : freq[i]) << 8;
+
+   while (True) {
+
+      nNodes = alphaSize;
+      nHeap = 0;
+
+      heap[0] = 0;
+      weight[0] = 0;
+      parent[0] = -2;
+
+      for (i = 1; i <= alphaSize; i++) {
+         parent[i] = -1;
+         nHeap++;
+         heap[nHeap] = i;
+         UPHEAP(nHeap);
+      }
+
+      AssertH( nHeap < (BZ_MAX_ALPHA_SIZE+2), 2001 );
+   
+      while (nHeap > 1) {
+         n1 = heap[1]; heap[1] = heap[nHeap]; nHeap--; DOWNHEAP(1);
+         n2 = heap[1]; heap[1] = heap[nHeap]; nHeap--; DOWNHEAP(1);
+         nNodes++;
+         parent[n1] = parent[n2] = nNodes;
+         weight[nNodes] = ADDWEIGHTS(weight[n1], weight[n2]);
+         parent[nNodes] = -1;
+         nHeap++;
+         heap[nHeap] = nNodes;
+         UPHEAP(nHeap);
+      }
+
+      AssertH( nNodes < (BZ_MAX_ALPHA_SIZE * 2), 2002 );
+
+      tooLong = False;
+      for (i = 1; i <= alphaSize; i++) {
+         j = 0;
+         k = i;
+         while (parent[k] >= 0) { k = parent[k]; j++; }
+         len[i-1] = j;
+         if (j > maxLen) tooLong = True;
+      }
+      
+      if (! tooLong) break;
+
+      /* 17 Oct 04: keep-going condition for the following loop used
+         to be 'i < alphaSize', which missed the last element,
+         theoretically leading to the possibility of the compressor
+         looping.  However, this count-scaling step is only needed if
+         one of the generated Huffman code words is longer than
+         maxLen, which up to and including version 1.0.2 was 20 bits,
+         which is extremely unlikely.  In version 1.0.3 maxLen was
+         changed to 17 bits, which has minimal effect on compression
+         ratio, but does mean this scaling step is used from time to
+         time, enough to verify that it works.
+
+         This means that bzip2-1.0.3 and later will only produce
+         Huffman codes with a maximum length of 17 bits.  However, in
+         order to preserve backwards compatibility with bitstreams
+         produced by versions pre-1.0.3, the decompressor must still
+         handle lengths of up to 20. */
+
+      for (i = 1; i <= alphaSize; i++) {
+         j = weight[i] >> 8;
+         j = 1 + (j / 2);
+         weight[i] = j << 8;
+      }
+   }
+}
+
+
+/*---------------------------------------------------*/
+void BZ2_hbAssignCodes ( Int32 *code,
+                         UChar *length,
+                         Int32 minLen,
+                         Int32 maxLen,
+                         Int32 alphaSize )
+{
+   Int32 n, vec, i;
+
+   vec = 0;
+   for (n = minLen; n <= maxLen; n++) {
+      for (i = 0; i < alphaSize; i++)
+         if (length[i] == n) { code[i] = vec; vec++; };
+      vec <<= 1;
+   }
+}
+
+
+/*---------------------------------------------------*/
+void BZ2_hbCreateDecodeTables ( Int32 *limit,
+                                Int32 *base,
+                                Int32 *perm,
+                                UChar *length,
+                                Int32 minLen,
+                                Int32 maxLen,
+                                Int32 alphaSize )
+{
+   Int32 pp, i, j, vec;
+
+   pp = 0;
+   for (i = minLen; i <= maxLen; i++)
+      for (j = 0; j < alphaSize; j++)
+         if (length[j] == i) { perm[pp] = j; pp++; };
+
+   for (i = 0; i < BZ_MAX_CODE_LEN; i++) base[i] = 0;
+   for (i = 0; i < alphaSize; i++) base[length[i]+1]++;
+
+   for (i = 1; i < BZ_MAX_CODE_LEN; i++) base[i] += base[i-1];
+
+   for (i = 0; i < BZ_MAX_CODE_LEN; i++) limit[i] = 0;
+   vec = 0;
+
+   for (i = minLen; i <= maxLen; i++) {
+      vec += (base[i+1] - base[i]);
+      limit[i] = vec-1;
+      vec <<= 1;
+   }
+   for (i = minLen + 1; i <= maxLen; i++)
+      base[i] = ((limit[i-1] + 1) << 1) - base[i];
+}
+
+
+/*-------------------------------------------------------------*/
+/*--- end                                         huffman.c ---*/
+/*-------------------------------------------------------------*/
diff --git a/plugins/Updater/bzip2-1.0.3/libbz2.001 b/plugins/Updater/bzip2-1.0.3/libbz2.001
new file mode 100644
index 0000000000..a21a20f75f
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/libbz2.001
@@ -0,0 +1,130 @@
+# Microsoft Developer Studio Project File - Name="libbz2" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# ** •ÒW‚µ‚È‚¢‚Å‚­‚¾‚³‚¢ **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=libbz2 - Win32 Debug
+!MESSAGE ‚±‚ê‚Í—LŒø‚ÈÒ²¸Ì§²Ù‚Å‚Í‚ ‚è‚Ü‚¹‚ñB ‚±‚ÌÌßÛ¼Þª¸Ä‚ðËÞÙÄÞ‚·‚邽‚ß‚É‚Í NMAKE ‚ðŽg—p‚µ‚Ä‚­‚¾‚³‚¢B
+!MESSAGE [Ò²¸Ì§²Ù‚Ì´¸½Îß°Ä] ºÏÝÄÞ‚ðŽg—p‚µ‚ÄŽÀs‚µ‚Ä‚­‚¾‚³‚¢
+!MESSAGE 
+!MESSAGE NMAKE /f "libbz2.mak".
+!MESSAGE 
+!MESSAGE NMAKE ‚ÌŽÀsŽž‚É\¬‚ðŽw’è‚Å‚«‚Ü‚·
+!MESSAGE ºÏÝÄÞ ×²Ýã‚ÅϸۂÌÝ’è‚ð’è‹`‚µ‚Ü‚·B—á:
+!MESSAGE 
+!MESSAGE NMAKE /f "libbz2.mak" CFG="libbz2 - Win32 Debug"
+!MESSAGE 
+!MESSAGE ‘I‘ð‰Â”\‚ÈËÞÙÄÞ Ó°ÄÞ:
+!MESSAGE 
+!MESSAGE "libbz2 - Win32 Release" ("Win32 (x86) Dynamic-Link Library" —p)
+!MESSAGE "libbz2 - Win32 Debug" ("Win32 (x86) Dynamic-Link Library" —p)
+!MESSAGE 
+
+# Begin Project
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF  "$(CFG)" == "libbz2 - 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 "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /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 /subsystem:windows /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 /subsystem:windows /dll /machine:I386 /out:"libbz2.dll"
+
+!ELSEIF  "$(CFG)" == "libbz2 - 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 "Debug"
+# PROP Intermediate_Dir "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" /YX /FD /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /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 /subsystem:windows /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 /subsystem:windows /dll /debug /machine:I386 /out:"libbz2.dll" /pdbtype:sept
+
+!ENDIF 
+
+# Begin Target
+
+# Name "libbz2 - Win32 Release"
+# Name "libbz2 - Win32 Debug"
+# Begin Source File
+
+SOURCE=.\blocksort.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\bzlib.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\bzlib.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\bzlib_private.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\compress.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\crctable.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\decompress.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\huffman.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\libbz2.def
+# End Source File
+# Begin Source File
+
+SOURCE=.\randtable.c
+# End Source File
+# End Target
+# End Project
diff --git a/plugins/Updater/bzip2-1.0.3/libbz2.def b/plugins/Updater/bzip2-1.0.3/libbz2.def
new file mode 100644
index 0000000000..2dc0dd891d
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/libbz2.def
@@ -0,0 +1,27 @@
+LIBRARY			LIBBZ2
+DESCRIPTION		"libbzip2: library for data compression"
+EXPORTS
+	BZ2_bzCompressInit
+	BZ2_bzCompress
+	BZ2_bzCompressEnd
+	BZ2_bzDecompressInit
+	BZ2_bzDecompress
+	BZ2_bzDecompressEnd
+	BZ2_bzReadOpen
+	BZ2_bzReadClose
+	BZ2_bzReadGetUnused
+	BZ2_bzRead
+	BZ2_bzWriteOpen
+	BZ2_bzWrite
+	BZ2_bzWriteClose
+	BZ2_bzWriteClose64
+	BZ2_bzBuffToBuffCompress
+	BZ2_bzBuffToBuffDecompress
+	BZ2_bzlibVersion
+	BZ2_bzopen
+	BZ2_bzdopen
+	BZ2_bzread
+	BZ2_bzwrite
+	BZ2_bzflush
+	BZ2_bzclose
+	BZ2_bzerror
diff --git a/plugins/Updater/bzip2-1.0.3/libbz2.dll b/plugins/Updater/bzip2-1.0.3/libbz2.dll
new file mode 100644
index 0000000000..5452b54c8c
Binary files /dev/null and b/plugins/Updater/bzip2-1.0.3/libbz2.dll differ
diff --git a/plugins/Updater/bzip2-1.0.3/libbz2.dsp b/plugins/Updater/bzip2-1.0.3/libbz2.dsp
new file mode 100644
index 0000000000..a21a20f75f
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/libbz2.dsp
@@ -0,0 +1,130 @@
+# Microsoft Developer Studio Project File - Name="libbz2" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# ** •ÒW‚µ‚È‚¢‚Å‚­‚¾‚³‚¢ **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=libbz2 - Win32 Debug
+!MESSAGE ‚±‚ê‚Í—LŒø‚ÈÒ²¸Ì§²Ù‚Å‚Í‚ ‚è‚Ü‚¹‚ñB ‚±‚ÌÌßÛ¼Þª¸Ä‚ðËÞÙÄÞ‚·‚邽‚ß‚É‚Í NMAKE ‚ðŽg—p‚µ‚Ä‚­‚¾‚³‚¢B
+!MESSAGE [Ò²¸Ì§²Ù‚Ì´¸½Îß°Ä] ºÏÝÄÞ‚ðŽg—p‚µ‚ÄŽÀs‚µ‚Ä‚­‚¾‚³‚¢
+!MESSAGE 
+!MESSAGE NMAKE /f "libbz2.mak".
+!MESSAGE 
+!MESSAGE NMAKE ‚ÌŽÀsŽž‚É\¬‚ðŽw’è‚Å‚«‚Ü‚·
+!MESSAGE ºÏÝÄÞ ×²Ýã‚ÅϸۂÌÝ’è‚ð’è‹`‚µ‚Ü‚·B—á:
+!MESSAGE 
+!MESSAGE NMAKE /f "libbz2.mak" CFG="libbz2 - Win32 Debug"
+!MESSAGE 
+!MESSAGE ‘I‘ð‰Â”\‚ÈËÞÙÄÞ Ó°ÄÞ:
+!MESSAGE 
+!MESSAGE "libbz2 - Win32 Release" ("Win32 (x86) Dynamic-Link Library" —p)
+!MESSAGE "libbz2 - Win32 Debug" ("Win32 (x86) Dynamic-Link Library" —p)
+!MESSAGE 
+
+# Begin Project
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF  "$(CFG)" == "libbz2 - 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 "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /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 /subsystem:windows /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 /subsystem:windows /dll /machine:I386 /out:"libbz2.dll"
+
+!ELSEIF  "$(CFG)" == "libbz2 - 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 "Debug"
+# PROP Intermediate_Dir "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" /YX /FD /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /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 /subsystem:windows /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 /subsystem:windows /dll /debug /machine:I386 /out:"libbz2.dll" /pdbtype:sept
+
+!ENDIF 
+
+# Begin Target
+
+# Name "libbz2 - Win32 Release"
+# Name "libbz2 - Win32 Debug"
+# Begin Source File
+
+SOURCE=.\blocksort.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\bzlib.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\bzlib.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\bzlib_private.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\compress.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\crctable.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\decompress.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\huffman.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\libbz2.def
+# End Source File
+# Begin Source File
+
+SOURCE=.\randtable.c
+# End Source File
+# End Target
+# End Project
diff --git a/plugins/Updater/bzip2-1.0.3/libbz2.dsw b/plugins/Updater/bzip2-1.0.3/libbz2.dsw
new file mode 100644
index 0000000000..38476efd11
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/libbz2.dsw
@@ -0,0 +1,29 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "libbz2"=".\libbz2.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/plugins/Updater/bzip2-1.0.3/libbz2.ilk b/plugins/Updater/bzip2-1.0.3/libbz2.ilk
new file mode 100644
index 0000000000..4172c7cfc7
Binary files /dev/null and b/plugins/Updater/bzip2-1.0.3/libbz2.ilk differ
diff --git a/plugins/Updater/bzip2-1.0.3/libbz2.plg b/plugins/Updater/bzip2-1.0.3/libbz2.plg
new file mode 100644
index 0000000000..3fc4fea20d
--- /dev/null
+++ b/plugins/Updater/bzip2-1.0.3/libbz2.plg
@@ -0,0 +1,95 @@
+
+
+
+

Build Log

+

+--------------------Configuration: libbz2 - Win32 Release-------------------- +

+

Command Lines

+Creating temporary file "C:\DOCUME~1\sje\LOCALS~1\Temp\RSP9.tmp" with contents +[ +/nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Fp"Release/libbz2.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c +"C:\Documents and Settings\sje\My Documents\MyProjects\miranda\plugins\updater\bzip2-1.0.3\blocksort.c" +"C:\Documents and Settings\sje\My Documents\MyProjects\miranda\plugins\updater\bzip2-1.0.3\bzlib.c" +"C:\Documents and Settings\sje\My Documents\MyProjects\miranda\plugins\updater\bzip2-1.0.3\compress.c" +"C:\Documents and Settings\sje\My Documents\MyProjects\miranda\plugins\updater\bzip2-1.0.3\crctable.c" +"C:\Documents and Settings\sje\My Documents\MyProjects\miranda\plugins\updater\bzip2-1.0.3\decompress.c" +"C:\Documents and Settings\sje\My Documents\MyProjects\miranda\plugins\updater\bzip2-1.0.3\huffman.c" +"C:\Documents and Settings\sje\My Documents\MyProjects\miranda\plugins\updater\bzip2-1.0.3\randtable.c" +] +Creating command line "cl.exe @C:\DOCUME~1\sje\LOCALS~1\Temp\RSP9.tmp" +Creating temporary file "C:\DOCUME~1\sje\LOCALS~1\Temp\RSPA.tmp" with contents +[ +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 /subsystem:windows /dll /incremental:no /pdb:"Release/libbz2.pdb" /machine:I386 /def:".\libbz2.def" /out:"libbz2.dll" /implib:"Release/libbz2.lib" +".\Release\blocksort.obj" +".\Release\bzlib.obj" +".\Release\compress.obj" +".\Release\crctable.obj" +".\Release\decompress.obj" +".\Release\huffman.obj" +".\Release\randtable.obj" +] +Creating command line "link.exe @C:\DOCUME~1\sje\LOCALS~1\Temp\RSPA.tmp" +

Output Window

+Compiling... +blocksort.c +bzlib.c +compress.c +crctable.c +decompress.c +huffman.c +randtable.c +Linking... + Creating library Release/libbz2.lib and object Release/libbz2.exp + + + +

Results

+libbz2.dll - 0 error(s), 0 warning(s) +

+--------------------Configuration: libbz2 - Win32 Debug-------------------- +

+

Command Lines

+Creating temporary file "C:\DOCUME~1\sje\LOCALS~1\Temp\RSPE.tmp" with contents +[ +/nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /Fp"Debug/libbz2.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /c +"C:\Documents and Settings\sje\My Documents\MyProjects\miranda\plugins\updater\bzip2-1.0.3\blocksort.c" +"C:\Documents and Settings\sje\My Documents\MyProjects\miranda\plugins\updater\bzip2-1.0.3\bzlib.c" +"C:\Documents and Settings\sje\My Documents\MyProjects\miranda\plugins\updater\bzip2-1.0.3\compress.c" +"C:\Documents and Settings\sje\My Documents\MyProjects\miranda\plugins\updater\bzip2-1.0.3\crctable.c" +"C:\Documents and Settings\sje\My Documents\MyProjects\miranda\plugins\updater\bzip2-1.0.3\decompress.c" +"C:\Documents and Settings\sje\My Documents\MyProjects\miranda\plugins\updater\bzip2-1.0.3\huffman.c" +"C:\Documents and Settings\sje\My Documents\MyProjects\miranda\plugins\updater\bzip2-1.0.3\randtable.c" +] +Creating command line "cl.exe @C:\DOCUME~1\sje\LOCALS~1\Temp\RSPE.tmp" +Creating temporary file "C:\DOCUME~1\sje\LOCALS~1\Temp\RSPF.tmp" with contents +[ +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 /subsystem:windows /dll /incremental:yes /pdb:"Debug/libbz2.pdb" /debug /machine:I386 /def:".\libbz2.def" /out:"libbz2.dll" /implib:"Debug/libbz2.lib" /pdbtype:sept +".\Debug\blocksort.obj" +".\Debug\bzlib.obj" +".\Debug\compress.obj" +".\Debug\crctable.obj" +".\Debug\decompress.obj" +".\Debug\huffman.obj" +".\Debug\randtable.obj" +] +Creating command line "link.exe @C:\DOCUME~1\sje\LOCALS~1\Temp\RSPF.tmp" +

Output Window

+Compiling... +blocksort.c +bzlib.c +compress.c +crctable.c +decompress.c +huffman.c +randtable.c +Linking... + Creating library Debug/libbz2.lib and object Debug/libbz2.exp + + + +

Results

+libbz2.dll - 0 error(s), 0 warning(s) +
+ + diff --git a/plugins/Updater/bzip2-1.0.3/makefile.msc b/plugins/Updater/bzip2-1.0.3/makefile.msc new file mode 100644 index 0000000000..799a18a5f1 --- /dev/null +++ b/plugins/Updater/bzip2-1.0.3/makefile.msc @@ -0,0 +1,63 @@ +# Makefile for Microsoft Visual C++ 6.0 +# usage: nmake -f makefile.msc +# K.M. Syring (syring@gsf.de) +# Fixed up by JRS for bzip2-0.9.5d release. + +CC=cl +CFLAGS= -DWIN32 -MD -Ox -D_FILE_OFFSET_BITS=64 -nologo + +OBJS= blocksort.obj \ + huffman.obj \ + crctable.obj \ + randtable.obj \ + compress.obj \ + decompress.obj \ + bzlib.obj + +all: lib bzip2 test + +bzip2: lib + $(CC) $(CFLAGS) -o bzip2 bzip2.c libbz2.lib setargv.obj + $(CC) $(CFLAGS) -o bzip2recover bzip2recover.c + +lib: $(OBJS) + lib /out:libbz2.lib $(OBJS) + +test: bzip2 + type words1 + .\\bzip2 -1 < sample1.ref > sample1.rb2 + .\\bzip2 -2 < sample2.ref > sample2.rb2 + .\\bzip2 -3 < sample3.ref > sample3.rb2 + .\\bzip2 -d < sample1.bz2 > sample1.tst + .\\bzip2 -d < sample2.bz2 > sample2.tst + .\\bzip2 -ds < sample3.bz2 > sample3.tst + @echo All six of the fc's should find no differences. + @echo If fc finds an error on sample3.bz2, this could be + @echo because WinZip's 'TAR file smart CR/LF conversion' + @echo is too clever for its own good. Disable this option. + @echo The correct size for sample3.ref is 120,244. If it + @echo is 150,251, WinZip has messed it up. + fc sample1.bz2 sample1.rb2 + fc sample2.bz2 sample2.rb2 + fc sample3.bz2 sample3.rb2 + fc sample1.tst sample1.ref + fc sample2.tst sample2.ref + fc sample3.tst sample3.ref + + + +clean: + del *.obj + del libbz2.lib + del bzip2.exe + del bzip2recover.exe + del sample1.rb2 + del sample2.rb2 + del sample3.rb2 + del sample1.tst + del sample2.tst + del sample3.tst + +.c.obj: + $(CC) $(CFLAGS) -c $*.c -o $*.obj + diff --git a/plugins/Updater/bzip2-1.0.3/manual.html b/plugins/Updater/bzip2-1.0.3/manual.html new file mode 100644 index 0000000000..f59427f7f0 --- /dev/null +++ b/plugins/Updater/bzip2-1.0.3/manual.html @@ -0,0 +1,2540 @@ + + + +bzip2 and libbzip2, version 1.0.6 + + + +
+
+
+

+bzip2 and libbzip2, version 1.0.6

+

A program and library for data compression

+
+

+Julian Seward +

+
http://www.bzip.org
+
+

Version 1.0.6 of 6 September 2010

+
+
+

This program, bzip2, the + associated library libbzip2, and + all documentation, are copyright © 1996-2010 Julian Seward. + All rights reserved.

+

Redistribution and use in source and binary forms, with + or without modification, are permitted provided that the + following conditions are met:

+
    +
  • Redistributions of source code must retain the + above copyright notice, this list of conditions and the + following disclaimer.

  • +
  • The origin of this software must not be + misrepresented; you must not claim that you wrote the original + software. If you use this software in a product, an + acknowledgment in the product documentation would be + appreciated but is not required.

  • +
  • Altered source versions must be plainly marked + as such, and must not be misrepresented as being the original + software.

  • +
  • The name of the author may not be used to + endorse or promote products derived from this software without + specific prior written permission.

  • +
+

THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE.

+

PATENTS: To the best of my knowledge, + bzip2 and + libbzip2 do not use any patented + algorithms. However, I do not have the resources to carry + out a patent search. Therefore I cannot give any guarantee of + the above statement. +

+
+
+
+
+ +
+

+1. Introduction

+

bzip2 compresses files +using the Burrows-Wheeler block-sorting text compression +algorithm, and Huffman coding. Compression is generally +considerably better than that achieved by more conventional +LZ77/LZ78-based compressors, and approaches the performance of +the PPM family of statistical compressors.

+

bzip2 is built on top of +libbzip2, a flexible library for +handling compressed data in the +bzip2 format. This manual +describes both how to use the program and how to work with the +library interface. Most of the manual is devoted to this +library, not the program, which is good news if your interest is +only in the program.

+
    +
  • How to use bzip2 describes how to use + bzip2; this is the only part + you need to read if you just want to know how to operate the + program.

  • +
  • Programming with libbzip2 describes the + programming interfaces in detail, and

  • +
  • Miscellanea records some + miscellaneous notes which I thought ought to be recorded + somewhere.

  • +
+
+
+

+2. How to use bzip2

+ +

This chapter contains a copy of the +bzip2 man page, and nothing +else.

+
+

+2.1. NAME

+
    +
  • bzip2, + bunzip2 - a block-sorting file + compressor, v1.0.6

  • +
  • bzcat - + decompresses files to stdout

  • +
  • bzip2recover - + recovers data from damaged bzip2 files

  • +
+
+
+

+2.2. SYNOPSIS

+
    +
  • bzip2 [ + -cdfkqstvzVL123456789 ] [ filenames ... ]

  • +
  • bunzip2 [ + -fkvsVL ] [ filenames ... ]

  • +
  • bzcat [ -s ] [ + filenames ... ]

  • +
  • bzip2recover + filename

  • +
+
+
+

+2.3. DESCRIPTION

+

bzip2 compresses files +using the Burrows-Wheeler block sorting text compression +algorithm, and Huffman coding. Compression is generally +considerably better than that achieved by more conventional +LZ77/LZ78-based compressors, and approaches the performance of +the PPM family of statistical compressors.

+

The command-line options are deliberately very similar to +those of GNU gzip, but they are +not identical.

+

bzip2 expects a list of +file names to accompany the command-line flags. Each file is +replaced by a compressed version of itself, with the name +original_name.bz2. Each +compressed file has the same modification date, permissions, and, +when possible, ownership as the corresponding original, so that +these properties can be correctly restored at decompression time. +File name handling is naive in the sense that there is no +mechanism for preserving original file names, permissions, +ownerships or dates in filesystems which lack these concepts, or +have serious file name length restrictions, such as +MS-DOS.

+

bzip2 and +bunzip2 will by default not +overwrite existing files. If you want this to happen, specify +the -f flag.

+

If no file names are specified, +bzip2 compresses from standard +input to standard output. In this case, +bzip2 will decline to write +compressed output to a terminal, as this would be entirely +incomprehensible and therefore pointless.

+

bunzip2 (or +bzip2 -d) decompresses all +specified files. Files which were not created by +bzip2 will be detected and +ignored, and a warning issued. +bzip2 attempts to guess the +filename for the decompressed file from that of the compressed +file as follows:

+
    +
  • filename.bz2 + becomes + filename

  • +
  • filename.bz + becomes + filename

  • +
  • filename.tbz2 + becomes + filename.tar

  • +
  • filename.tbz + becomes + filename.tar

  • +
  • anyothername + becomes + anyothername.out

  • +
+

If the file does not end in one of the recognised endings, +.bz2, +.bz, +.tbz2 or +.tbz, +bzip2 complains that it cannot +guess the name of the original file, and uses the original name +with .out appended.

+

As with compression, supplying no filenames causes +decompression from standard input to standard output.

+

bunzip2 will correctly +decompress a file which is the concatenation of two or more +compressed files. The result is the concatenation of the +corresponding uncompressed files. Integrity testing +(-t) of concatenated compressed +files is also supported.

+

You can also compress or decompress files to the standard +output by giving the -c flag. +Multiple files may be compressed and decompressed like this. The +resulting outputs are fed sequentially to stdout. Compression of +multiple files in this manner generates a stream containing +multiple compressed file representations. Such a stream can be +decompressed correctly only by +bzip2 version 0.9.0 or later. +Earlier versions of bzip2 will +stop after decompressing the first file in the stream.

+

bzcat (or +bzip2 -dc) decompresses all +specified files to the standard output.

+

bzip2 will read arguments +from the environment variables +BZIP2 and +BZIP, in that order, and will +process them before any arguments read from the command line. +This gives a convenient way to supply default arguments.

+

Compression is always performed, even if the compressed +file is slightly larger than the original. Files of less than +about one hundred bytes tend to get larger, since the compression +mechanism has a constant overhead in the region of 50 bytes. +Random data (including the output of most file compressors) is +coded at about 8.05 bits per byte, giving an expansion of around +0.5%.

+

As a self-check for your protection, +bzip2 uses 32-bit CRCs to make +sure that the decompressed version of a file is identical to the +original. This guards against corruption of the compressed data, +and against undetected bugs in +bzip2 (hopefully very unlikely). +The chances of data corruption going undetected is microscopic, +about one chance in four billion for each file processed. Be +aware, though, that the check occurs upon decompression, so it +can only tell you that something is wrong. It can't help you +recover the original uncompressed data. You can use +bzip2recover to try to recover +data from damaged files.

+

Return values: 0 for a normal exit, 1 for environmental +problems (file not found, invalid flags, I/O errors, etc.), 2 +to indicate a corrupt compressed file, 3 for an internal +consistency error (eg, bug) which caused +bzip2 to panic.

+
+
+

+2.4. OPTIONS

+
+
-c --stdout
+

Compress or decompress to standard + output.

+
-d --decompress
+

Force decompression. + bzip2, + bunzip2 and + bzcat are really the same + program, and the decision about what actions to take is done on + the basis of which name is used. This flag overrides that + mechanism, and forces bzip2 to decompress.

+
-z --compress
+

The complement to + -d: forces compression, + regardless of the invokation name.

+
-t --test
+

Check integrity of the specified file(s), but + don't decompress them. This really performs a trial + decompression and throws away the result.

+
-f --force
+
+

Force overwrite of output files. Normally, + bzip2 will not overwrite + existing output files. Also forces + bzip2 to break hard links to + files, which it otherwise wouldn't do.

+

bzip2 normally declines + to decompress files which don't have the correct magic header + bytes. If forced (-f), + however, it will pass such files through unmodified. This is + how GNU gzip behaves.

+
+
-k --keep
+

Keep (don't delete) input files during + compression or decompression.

+
-s --small
+
+

Reduce memory usage, for compression, + decompression and testing. Files are decompressed and tested + using a modified algorithm which only requires 2.5 bytes per + block byte. This means any file can be decompressed in 2300k + of memory, albeit at about half the normal speed.

+

During compression, -s + selects a block size of 200k, which limits memory use to around + the same figure, at the expense of your compression ratio. In + short, if your machine is low on memory (8 megabytes or less), + use -s for everything. See + MEMORY MANAGEMENT below.

+
+
-q --quiet
+

Suppress non-essential warning messages. + Messages pertaining to I/O errors and other critical events + will not be suppressed.

+
-v --verbose
+

Verbose mode -- show the compression ratio for + each file processed. Further + -v's increase the verbosity + level, spewing out lots of information which is primarily of + interest for diagnostic purposes.

+
-L --license -V --version
+

Display the software version, license terms and + conditions.

+
-1 (or + --fast) to + -9 (or + -best)
+

Set the block size to 100 k, 200 k ... 900 k + when compressing. Has no effect when decompressing. See MEMORY MANAGEMENT below. The + --fast and + --best aliases are primarily + for GNU gzip compatibility. + In particular, --fast doesn't + make things significantly faster. And + --best merely selects the + default behaviour.

+
--
+

Treats all subsequent arguments as file names, + even if they start with a dash. This is so you can handle + files with names beginning with a dash, for example: + bzip2 -- + -myfilename.

+
+--repetitive-fast, --repetitive-best +
+

These flags are redundant in versions 0.9.5 and + above. They provided some coarse control over the behaviour of + the sorting algorithm in earlier versions, which was sometimes + useful. 0.9.5 and above have an improved algorithm which + renders these flags irrelevant.

+
+
+
+

+2.5. MEMORY MANAGEMENT

+

bzip2 compresses large +files in blocks. The block size affects both the compression +ratio achieved, and the amount of memory needed for compression +and decompression. The flags -1 +through -9 specify the block +size to be 100,000 bytes through 900,000 bytes (the default) +respectively. At decompression time, the block size used for +compression is read from the header of the compressed file, and +bunzip2 then allocates itself +just enough memory to decompress the file. Since block sizes are +stored in compressed files, it follows that the flags +-1 to +-9 are irrelevant to and so +ignored during decompression.

+

Compression and decompression requirements, in bytes, can be +estimated as:

+
Compression:   400k + ( 8 x block size )
+
+Decompression: 100k + ( 4 x block size ), or
+               100k + ( 2.5 x block size )
+

Larger block sizes give rapidly diminishing marginal +returns. Most of the compression comes from the first two or +three hundred k of block size, a fact worth bearing in mind when +using bzip2 on small machines. +It is also important to appreciate that the decompression memory +requirement is set at compression time by the choice of block +size.

+

For files compressed with the default 900k block size, +bunzip2 will require about 3700 +kbytes to decompress. To support decompression of any file on a +4 megabyte machine, bunzip2 has +an option to decompress using approximately half this amount of +memory, about 2300 kbytes. Decompression speed is also halved, +so you should use this option only where necessary. The relevant +flag is -s.

+

In general, try and use the largest block size memory +constraints allow, since that maximises the compression achieved. +Compression and decompression speed are virtually unaffected by +block size.

+

Another significant point applies to files which fit in a +single block -- that means most files you'd encounter using a +large block size. The amount of real memory touched is +proportional to the size of the file, since the file is smaller +than a block. For example, compressing a file 20,000 bytes long +with the flag -9 will cause the +compressor to allocate around 7600k of memory, but only touch +400k + 20000 * 8 = 560 kbytes of it. Similarly, the decompressor +will allocate 3700k but only touch 100k + 20000 * 4 = 180 +kbytes.

+

Here is a table which summarises the maximum memory usage +for different block sizes. Also recorded is the total compressed +size for 14 files of the Calgary Text Compression Corpus +totalling 3,141,622 bytes. This column gives some feel for how +compression varies with block size. These figures tend to +understate the advantage of larger block sizes for larger files, +since the Corpus is dominated by smaller files.

+
        Compress   Decompress   Decompress   Corpus
+Flag     usage      usage       -s usage     Size
+
+ -1      1200k       500k         350k      914704
+ -2      2000k       900k         600k      877703
+ -3      2800k      1300k         850k      860338
+ -4      3600k      1700k        1100k      846899
+ -5      4400k      2100k        1350k      845160
+ -6      5200k      2500k        1600k      838626
+ -7      6100k      2900k        1850k      834096
+ -8      6800k      3300k        2100k      828642
+ -9      7600k      3700k        2350k      828642
+
+
+

+2.6. RECOVERING DATA FROM DAMAGED FILES

+

bzip2 compresses files in +blocks, usually 900kbytes long. Each block is handled +independently. If a media or transmission error causes a +multi-block .bz2 file to become +damaged, it may be possible to recover data from the undamaged +blocks in the file.

+

The compressed representation of each block is delimited by +a 48-bit pattern, which makes it possible to find the block +boundaries with reasonable certainty. Each block also carries +its own 32-bit CRC, so damaged blocks can be distinguished from +undamaged ones.

+

bzip2recover is a simple +program whose purpose is to search for blocks in +.bz2 files, and write each block +out into its own .bz2 file. You +can then use bzip2 -t to test +the integrity of the resulting files, and decompress those which +are undamaged.

+

bzip2recover takes a +single argument, the name of the damaged file, and writes a +number of files rec0001file.bz2, +rec0002file.bz2, etc, containing +the extracted blocks. The output filenames are designed so that +the use of wildcards in subsequent processing -- for example, +bzip2 -dc rec*file.bz2 > +recovered_data -- lists the files in the correct +order.

+

bzip2recover should be of +most use dealing with large .bz2 +files, as these will contain many blocks. It is clearly futile +to use it on damaged single-block files, since a damaged block +cannot be recovered. If you wish to minimise any potential data +loss through media or transmission errors, you might consider +compressing with a smaller block size.

+
+
+

+2.7. PERFORMANCE NOTES

+

The sorting phase of compression gathers together similar +strings in the file. Because of this, files containing very long +runs of repeated symbols, like "aabaabaabaab ..." (repeated +several hundred times) may compress more slowly than normal. +Versions 0.9.5 and above fare much better than previous versions +in this respect. The ratio between worst-case and average-case +compression time is in the region of 10:1. For previous +versions, this figure was more like 100:1. You can use the +-vvvv option to monitor progress +in great detail, if you want.

+

Decompression speed is unaffected by these +phenomena.

+

bzip2 usually allocates +several megabytes of memory to operate in, and then charges all +over it in a fairly random fashion. This means that performance, +both for compressing and decompressing, is largely determined by +the speed at which your machine can service cache misses. +Because of this, small changes to the code to reduce the miss +rate have been observed to give disproportionately large +performance improvements. I imagine +bzip2 will perform best on +machines with very large caches.

+
+
+

+2.8. CAVEATS

+

I/O error messages are not as helpful as they could be. +bzip2 tries hard to detect I/O +errors and exit cleanly, but the details of what the problem is +sometimes seem rather misleading.

+

This manual page pertains to version 1.0.6 of +bzip2. Compressed data created by +this version is entirely forwards and backwards compatible with the +previous public releases, versions 0.1pl2, 0.9.0 and 0.9.5, 1.0.0, +1.0.1, 1.0.2 and 1.0.3, but with the following exception: 0.9.0 and +above can correctly decompress multiple concatenated compressed files. +0.1pl2 cannot do this; it will stop after decompressing just the first +file in the stream.

+

bzip2recover versions +prior to 1.0.2 used 32-bit integers to represent bit positions in +compressed files, so it could not handle compressed files more +than 512 megabytes long. Versions 1.0.2 and above use 64-bit ints +on some platforms which support them (GNU supported targets, and +Windows). To establish whether or not +bzip2recover was built with such +a limitation, run it without arguments. In any event you can +build yourself an unlimited version if you can recompile it with +MaybeUInt64 set to be an +unsigned 64-bit integer.

+
+
+

+2.9. AUTHOR

+

Julian Seward, +jseward@bzip.org

+

The ideas embodied in +bzip2 are due to (at least) the +following people: Michael Burrows and David Wheeler (for the +block sorting transformation), David Wheeler (again, for the +Huffman coder), Peter Fenwick (for the structured coding model in +the original bzip, and many +refinements), and Alistair Moffat, Radford Neal and Ian Witten +(for the arithmetic coder in the original +bzip). I am much indebted for +their help, support and advice. See the manual in the source +distribution for pointers to sources of documentation. Christian +von Roques encouraged me to look for faster sorting algorithms, +so as to speed up compression. Bela Lubkin encouraged me to +improve the worst-case compression performance. +Donna Robinson XMLised the documentation. +Many people sent +patches, helped with portability problems, lent machines, gave +advice and were generally helpful.

+
+
+
+

+3.  +Programming with libbzip2 +

+ +

This chapter describes the programming interface to +libbzip2.

+

For general background information, particularly about +memory use and performance aspects, you'd be well advised to read +How to use bzip2 as well.

+
+

+3.1. Top-level structure

+

libbzip2 is a flexible +library for compressing and decompressing data in the +bzip2 data format. Although +packaged as a single entity, it helps to regard the library as +three separate parts: the low level interface, and the high level +interface, and some utility functions.

+

The structure of +libbzip2's interfaces is similar +to that of Jean-loup Gailly's and Mark Adler's excellent +zlib library.

+

All externally visible symbols have names beginning +BZ2_. This is new in version +1.0. The intention is to minimise pollution of the namespaces of +library clients.

+

To use any part of the library, you need to +#include <bzlib.h> +into your sources.

+
+

+3.1.1. Low-level summary

+

This interface provides services for compressing and +decompressing data in memory. There's no provision for dealing +with files, streams or any other I/O mechanisms, just straight +memory-to-memory work. In fact, this part of the library can be +compiled without inclusion of +stdio.h, which may be helpful +for embedded applications.

+

The low-level part of the library has no global variables +and is therefore thread-safe.

+

Six routines make up the low level interface: +BZ2_bzCompressInit, +BZ2_bzCompress, and +BZ2_bzCompressEnd for +compression, and a corresponding trio +BZ2_bzDecompressInit, +BZ2_bzDecompress and +BZ2_bzDecompressEnd for +decompression. The *Init +functions allocate memory for compression/decompression and do +other initialisations, whilst the +*End functions close down +operations and release memory.

+

The real work is done by +BZ2_bzCompress and +BZ2_bzDecompress. These +compress and decompress data from a user-supplied input buffer to +a user-supplied output buffer. These buffers can be any size; +arbitrary quantities of data are handled by making repeated calls +to these functions. This is a flexible mechanism allowing a +consumer-pull style of activity, or producer-push, or a mixture +of both.

+
+
+

+3.1.2. High-level summary

+

This interface provides some handy wrappers around the +low-level interface to facilitate reading and writing +bzip2 format files +(.bz2 files). The routines +provide hooks to facilitate reading files in which the +bzip2 data stream is embedded +within some larger-scale file structure, or where there are +multiple bzip2 data streams +concatenated end-to-end.

+

For reading files, +BZ2_bzReadOpen, +BZ2_bzRead, +BZ2_bzReadClose and +BZ2_bzReadGetUnused are +supplied. For writing files, +BZ2_bzWriteOpen, +BZ2_bzWrite and +BZ2_bzWriteFinish are +available.

+

As with the low-level library, no global variables are used +so the library is per se thread-safe. However, if I/O errors +occur whilst reading or writing the underlying compressed files, +you may have to consult errno to +determine the cause of the error. In that case, you'd need a C +library which correctly supports +errno in a multithreaded +environment.

+

To make the library a little simpler and more portable, +BZ2_bzReadOpen and +BZ2_bzWriteOpen require you to +pass them file handles (FILE*s) +which have previously been opened for reading or writing +respectively. That avoids portability problems associated with +file operations and file attributes, whilst not being much of an +imposition on the programmer.

+
+
+

+3.1.3. Utility functions summary

+

For very simple needs, +BZ2_bzBuffToBuffCompress and +BZ2_bzBuffToBuffDecompress are +provided. These compress data in memory from one buffer to +another buffer in a single function call. You should assess +whether these functions fulfill your memory-to-memory +compression/decompression requirements before investing effort in +understanding the more general but more complex low-level +interface.

+

Yoshioka Tsuneo +(tsuneo@rr.iij4u.or.jp) has +contributed some functions to give better +zlib compatibility. These +functions are BZ2_bzopen, +BZ2_bzread, +BZ2_bzwrite, +BZ2_bzflush, +BZ2_bzclose, +BZ2_bzerror and +BZ2_bzlibVersion. You may find +these functions more convenient for simple file reading and +writing, than those in the high-level interface. These functions +are not (yet) officially part of the library, and are minimally +documented here. If they break, you get to keep all the pieces. +I hope to document them properly when time permits.

+

Yoshioka also contributed modifications to allow the +library to be built as a Windows DLL.

+
+
+
+

+3.2. Error handling

+

The library is designed to recover cleanly in all +situations, including the worst-case situation of decompressing +random data. I'm not 100% sure that it can always do this, so +you might want to add a signal handler to catch segmentation +violations during decompression if you are feeling especially +paranoid. I would be interested in hearing more about the +robustness of the library to corrupted compressed data.

+

Version 1.0.3 more robust in this respect than any +previous version. Investigations with Valgrind (a tool for detecting +problems with memory management) indicate +that, at least for the few files I tested, all single-bit errors +in the decompressed data are caught properly, with no +segmentation faults, no uses of uninitialised data, no out of +range reads or writes, and no infinite looping in the decompressor. +So it's certainly pretty robust, although +I wouldn't claim it to be totally bombproof.

+

The file bzlib.h contains +all definitions needed to use the library. In particular, you +should definitely not include +bzlib_private.h.

+

In bzlib.h, the various +return values are defined. The following list is not intended as +an exhaustive description of the circumstances in which a given +value may be returned -- those descriptions are given later. +Rather, it is intended to convey the rough meaning of each return +value. The first five actions are normal and not intended to +denote an error situation.

+
+
BZ_OK
+

The requested action was completed + successfully.

+
BZ_RUN_OK, BZ_FLUSH_OK, + BZ_FINISH_OK
+

In + BZ2_bzCompress, the requested + flush/finish/nothing-special action was completed + successfully.

+
BZ_STREAM_END
+

Compression of data was completed, or the + logical stream end was detected during + decompression.

+
+

The following return values indicate an error of some +kind.

+
+
BZ_CONFIG_ERROR
+

Indicates that the library has been improperly + compiled on your platform -- a major configuration error. + Specifically, it means that + sizeof(char), + sizeof(short) and + sizeof(int) are not 1, 2 and + 4 respectively, as they should be. Note that the library + should still work properly on 64-bit platforms which follow + the LP64 programming model -- that is, where + sizeof(long) and + sizeof(void*) are 8. Under + LP64, sizeof(int) is still 4, + so libbzip2, which doesn't + use the long type, is + OK.

+
BZ_SEQUENCE_ERROR
+

When using the library, it is important to call + the functions in the correct sequence and with data structures + (buffers etc) in the correct states. + libbzip2 checks as much as it + can to ensure this is happening, and returns + BZ_SEQUENCE_ERROR if not. + Code which complies precisely with the function semantics, as + detailed below, should never receive this value; such an event + denotes buggy code which you should + investigate.

+
BZ_PARAM_ERROR
+

Returned when a parameter to a function call is + out of range or otherwise manifestly incorrect. As with + BZ_SEQUENCE_ERROR, this + denotes a bug in the client code. The distinction between + BZ_PARAM_ERROR and + BZ_SEQUENCE_ERROR is a bit + hazy, but still worth making.

+
BZ_MEM_ERROR
+

Returned when a request to allocate memory + failed. Note that the quantity of memory needed to decompress + a stream cannot be determined until the stream's header has + been read. So + BZ2_bzDecompress and + BZ2_bzRead may return + BZ_MEM_ERROR even though some + of the compressed data has been read. The same is not true + for compression; once + BZ2_bzCompressInit or + BZ2_bzWriteOpen have + successfully completed, + BZ_MEM_ERROR cannot + occur.

+
BZ_DATA_ERROR
+

Returned when a data integrity error is + detected during decompression. Most importantly, this means + when stored and computed CRCs for the data do not match. This + value is also returned upon detection of any other anomaly in + the compressed data.

+
BZ_DATA_ERROR_MAGIC
+

As a special case of + BZ_DATA_ERROR, it is + sometimes useful to know when the compressed stream does not + start with the correct magic bytes ('B' 'Z' + 'h').

+
BZ_IO_ERROR
+

Returned by + BZ2_bzRead and + BZ2_bzWrite when there is an + error reading or writing in the compressed file, and by + BZ2_bzReadOpen and + BZ2_bzWriteOpen for attempts + to use a file for which the error indicator (viz, + ferror(f)) is set. On + receipt of BZ_IO_ERROR, the + caller should consult errno + and/or perror to acquire + operating-system specific information about the + problem.

+
BZ_UNEXPECTED_EOF
+

Returned by + BZ2_bzRead when the + compressed file finishes before the logical end of stream is + detected.

+
BZ_OUTBUFF_FULL
+

Returned by + BZ2_bzBuffToBuffCompress and + BZ2_bzBuffToBuffDecompress to + indicate that the output data will not fit into the output + buffer provided.

+
+
+
+

+3.3. Low-level interface

+
+

+3.3.1. BZ2_bzCompressInit

+
typedef struct {
+  char *next_in;
+  unsigned int avail_in;
+  unsigned int total_in_lo32;
+  unsigned int total_in_hi32;
+
+  char *next_out;
+  unsigned int avail_out;
+  unsigned int total_out_lo32;
+  unsigned int total_out_hi32;
+
+  void *state;
+
+  void *(*bzalloc)(void *,int,int);
+  void (*bzfree)(void *,void *);
+  void *opaque;
+} bz_stream;
+
+int BZ2_bzCompressInit ( bz_stream *strm, 
+                         int blockSize100k, 
+                         int verbosity,
+                         int workFactor );
+

Prepares for compression. The +bz_stream structure holds all +data pertaining to the compression activity. A +bz_stream structure should be +allocated and initialised prior to the call. The fields of +bz_stream comprise the entirety +of the user-visible data. state +is a pointer to the private data structures required for +compression.

+

Custom memory allocators are supported, via fields +bzalloc, +bzfree, and +opaque. The value +opaque is passed to as the first +argument to all calls to bzalloc +and bzfree, but is otherwise +ignored by the library. The call bzalloc ( +opaque, n, m ) is expected to return a pointer +p to n * +m bytes of memory, and bzfree ( +opaque, p ) should free that memory.

+

If you don't want to use a custom memory allocator, set +bzalloc, +bzfree and +opaque to +NULL, and the library will then +use the standard malloc / +free routines.

+

Before calling +BZ2_bzCompressInit, fields +bzalloc, +bzfree and +opaque should be filled +appropriately, as just described. Upon return, the internal +state will have been allocated and initialised, and +total_in_lo32, +total_in_hi32, +total_out_lo32 and +total_out_hi32 will have been +set to zero. These four fields are used by the library to inform +the caller of the total amount of data passed into and out of the +library, respectively. You should not try to change them. As of +version 1.0, 64-bit counts are maintained, even on 32-bit +platforms, using the _hi32 +fields to store the upper 32 bits of the count. So, for example, +the total amount of data in is (total_in_hi32 +<< 32) + total_in_lo32.

+

Parameter blockSize100k +specifies the block size to be used for compression. It should +be a value between 1 and 9 inclusive, and the actual block size +used is 100000 x this figure. 9 gives the best compression but +takes most memory.

+

Parameter verbosity should +be set to a number between 0 and 4 inclusive. 0 is silent, and +greater numbers give increasingly verbose monitoring/debugging +output. If the library has been compiled with +-DBZ_NO_STDIO, no such output +will appear for any verbosity setting.

+

Parameter workFactor +controls how the compression phase behaves when presented with +worst case, highly repetitive, input data. If compression runs +into difficulties caused by repetitive data, the library switches +from the standard sorting algorithm to a fallback algorithm. The +fallback is slower than the standard algorithm by perhaps a +factor of three, but always behaves reasonably, no matter how bad +the input.

+

Lower values of workFactor +reduce the amount of effort the standard algorithm will expend +before resorting to the fallback. You should set this parameter +carefully; too low, and many inputs will be handled by the +fallback algorithm and so compress rather slowly, too high, and +your average-to-worst case compression times can become very +large. The default value of 30 gives reasonable behaviour over a +wide range of circumstances.

+

Allowable values range from 0 to 250 inclusive. 0 is a +special case, equivalent to using the default value of 30.

+

Note that the compressed output generated is the same +regardless of whether or not the fallback algorithm is +used.

+

Be aware also that this parameter may disappear entirely in +future versions of the library. In principle it should be +possible to devise a good way to automatically choose which +algorithm to use. Such a mechanism would render the parameter +obsolete.

+

Possible return values:

+
BZ_CONFIG_ERROR
+  if the library has been mis-compiled
+BZ_PARAM_ERROR
+  if strm is NULL 
+  or blockSize < 1 or blockSize > 9
+  or verbosity < 0 or verbosity > 4
+  or workFactor < 0 or workFactor > 250
+BZ_MEM_ERROR 
+  if not enough memory is available
+BZ_OK 
+  otherwise
+

Allowable next actions:

+
BZ2_bzCompress
+  if BZ_OK is returned
+  no specific action needed in case of error
+
+
+

+3.3.2. BZ2_bzCompress

+
int BZ2_bzCompress ( bz_stream *strm, int action );
+

Provides more input and/or output buffer space for the +library. The caller maintains input and output buffers, and +calls BZ2_bzCompress to transfer +data between them.

+

Before each call to +BZ2_bzCompress, +next_in should point at the data +to be compressed, and avail_in +should indicate how many bytes the library may read. +BZ2_bzCompress updates +next_in, +avail_in and +total_in to reflect the number +of bytes it has read.

+

Similarly, next_out should +point to a buffer in which the compressed data is to be placed, +with avail_out indicating how +much output space is available. +BZ2_bzCompress updates +next_out, +avail_out and +total_out to reflect the number +of bytes output.

+

You may provide and remove as little or as much data as you +like on each call of +BZ2_bzCompress. In the limit, +it is acceptable to supply and remove data one byte at a time, +although this would be terribly inefficient. You should always +ensure that at least one byte of output space is available at +each call.

+

A second purpose of +BZ2_bzCompress is to request a +change of mode of the compressed stream.

+

Conceptually, a compressed stream can be in one of four +states: IDLE, RUNNING, FLUSHING and FINISHING. Before +initialisation +(BZ2_bzCompressInit) and after +termination (BZ2_bzCompressEnd), +a stream is regarded as IDLE.

+

Upon initialisation +(BZ2_bzCompressInit), the stream +is placed in the RUNNING state. Subsequent calls to +BZ2_bzCompress should pass +BZ_RUN as the requested action; +other actions are illegal and will result in +BZ_SEQUENCE_ERROR.

+

At some point, the calling program will have provided all +the input data it wants to. It will then want to finish up -- in +effect, asking the library to process any data it might have +buffered internally. In this state, +BZ2_bzCompress will no longer +attempt to read data from +next_in, but it will want to +write data to next_out. Because +the output buffer supplied by the user can be arbitrarily small, +the finishing-up operation cannot necessarily be done with a +single call of +BZ2_bzCompress.

+

Instead, the calling program passes +BZ_FINISH as an action to +BZ2_bzCompress. This changes +the stream's state to FINISHING. Any remaining input (ie, +next_in[0 .. avail_in-1]) is +compressed and transferred to the output buffer. To do this, +BZ2_bzCompress must be called +repeatedly until all the output has been consumed. At that +point, BZ2_bzCompress returns +BZ_STREAM_END, and the stream's +state is set back to IDLE. +BZ2_bzCompressEnd should then be +called.

+

Just to make sure the calling program does not cheat, the +library makes a note of avail_in +at the time of the first call to +BZ2_bzCompress which has +BZ_FINISH as an action (ie, at +the time the program has announced its intention to not supply +any more input). By comparing this value with that of +avail_in over subsequent calls +to BZ2_bzCompress, the library +can detect any attempts to slip in more data to compress. Any +calls for which this is detected will return +BZ_SEQUENCE_ERROR. This +indicates a programming mistake which should be corrected.

+

Instead of asking to finish, the calling program may ask +BZ2_bzCompress to take all the +remaining input, compress it and terminate the current +(Burrows-Wheeler) compression block. This could be useful for +error control purposes. The mechanism is analogous to that for +finishing: call BZ2_bzCompress +with an action of BZ_FLUSH, +remove output data, and persist with the +BZ_FLUSH action until the value +BZ_RUN is returned. As with +finishing, BZ2_bzCompress +detects any attempt to provide more input data once the flush has +begun.

+

Once the flush is complete, the stream returns to the +normal RUNNING state.

+

This all sounds pretty complex, but isn't really. Here's a +table which shows which actions are allowable in each state, what +action will be taken, what the next state is, and what the +non-error return values are. Note that you can't explicitly ask +what state the stream is in, but nor do you need to -- it can be +inferred from the values returned by +BZ2_bzCompress.

+
IDLE/any
+  Illegal.  IDLE state only exists after BZ2_bzCompressEnd or
+  before BZ2_bzCompressInit.
+  Return value = BZ_SEQUENCE_ERROR
+
+RUNNING/BZ_RUN
+  Compress from next_in to next_out as much as possible.
+  Next state = RUNNING
+  Return value = BZ_RUN_OK
+
+RUNNING/BZ_FLUSH
+  Remember current value of next_in. Compress from next_in
+  to next_out as much as possible, but do not accept any more input.
+  Next state = FLUSHING
+  Return value = BZ_FLUSH_OK
+
+RUNNING/BZ_FINISH
+  Remember current value of next_in. Compress from next_in
+  to next_out as much as possible, but do not accept any more input.
+  Next state = FINISHING
+  Return value = BZ_FINISH_OK
+
+FLUSHING/BZ_FLUSH
+  Compress from next_in to next_out as much as possible, 
+  but do not accept any more input.
+  If all the existing input has been used up and all compressed
+  output has been removed
+    Next state = RUNNING; Return value = BZ_RUN_OK
+  else
+    Next state = FLUSHING; Return value = BZ_FLUSH_OK
+
+FLUSHING/other     
+  Illegal.
+  Return value = BZ_SEQUENCE_ERROR
+
+FINISHING/BZ_FINISH
+  Compress from next_in to next_out as much as possible,
+  but to not accept any more input.  
+  If all the existing input has been used up and all compressed
+  output has been removed
+    Next state = IDLE; Return value = BZ_STREAM_END
+  else
+    Next state = FINISHING; Return value = BZ_FINISH_OK
+
+FINISHING/other
+  Illegal.
+  Return value = BZ_SEQUENCE_ERROR
+

That still looks complicated? Well, fair enough. The +usual sequence of calls for compressing a load of data is:

+
    +
  1. Get started with + BZ2_bzCompressInit.

  2. +
  3. Shovel data in and shlurp out its compressed form + using zero or more calls of + BZ2_bzCompress with action = + BZ_RUN.

  4. +
  5. Finish up. Repeatedly call + BZ2_bzCompress with action = + BZ_FINISH, copying out the + compressed output, until + BZ_STREAM_END is + returned.

  6. +
  7. Close up and go home. Call + BZ2_bzCompressEnd.

  8. +
+

If the data you want to compress fits into your input +buffer all at once, you can skip the calls of +BZ2_bzCompress ( ..., BZ_RUN ) +and just do the BZ2_bzCompress ( ..., BZ_FINISH +) calls.

+

All required memory is allocated by +BZ2_bzCompressInit. The +compression library can accept any data at all (obviously). So +you shouldn't get any error return values from the +BZ2_bzCompress calls. If you +do, they will be +BZ_SEQUENCE_ERROR, and indicate +a bug in your programming.

+

Trivial other possible return values:

+
BZ_PARAM_ERROR
+  if strm is NULL, or strm->s is NULL
+
+
+

+3.3.3. BZ2_bzCompressEnd

+
int BZ2_bzCompressEnd ( bz_stream *strm );
+

Releases all memory associated with a compression +stream.

+

Possible return values:

+
BZ_PARAM_ERROR  if strm is NULL or strm->s is NULL
+BZ_OK           otherwise
+
+
+

+3.3.4. BZ2_bzDecompressInit

+
int BZ2_bzDecompressInit ( bz_stream *strm, int verbosity, int small );
+

Prepares for decompression. As with +BZ2_bzCompressInit, a +bz_stream record should be +allocated and initialised before the call. Fields +bzalloc, +bzfree and +opaque should be set if a custom +memory allocator is required, or made +NULL for the normal +malloc / +free routines. Upon return, the +internal state will have been initialised, and +total_in and +total_out will be zero.

+

For the meaning of parameter +verbosity, see +BZ2_bzCompressInit.

+

If small is nonzero, the +library will use an alternative decompression algorithm which +uses less memory but at the cost of decompressing more slowly +(roughly speaking, half the speed, but the maximum memory +requirement drops to around 2300k). See How to use bzip2 +for more information on memory management.

+

Note that the amount of memory needed to decompress a +stream cannot be determined until the stream's header has been +read, so even if +BZ2_bzDecompressInit succeeds, a +subsequent BZ2_bzDecompress +could fail with +BZ_MEM_ERROR.

+

Possible return values:

+
BZ_CONFIG_ERROR
+  if the library has been mis-compiled
+BZ_PARAM_ERROR
+  if ( small != 0 && small != 1 )
+  or (verbosity <; 0 || verbosity > 4)
+BZ_MEM_ERROR
+  if insufficient memory is available
+

Allowable next actions:

+
BZ2_bzDecompress
+  if BZ_OK was returned
+  no specific action required in case of error
+
+
+

+3.3.5. BZ2_bzDecompress

+
int BZ2_bzDecompress ( bz_stream *strm );
+

Provides more input and/out output buffer space for the +library. The caller maintains input and output buffers, and uses +BZ2_bzDecompress to transfer +data between them.

+

Before each call to +BZ2_bzDecompress, +next_in should point at the +compressed data, and avail_in +should indicate how many bytes the library may read. +BZ2_bzDecompress updates +next_in, +avail_in and +total_in to reflect the number +of bytes it has read.

+

Similarly, next_out should +point to a buffer in which the uncompressed output is to be +placed, with avail_out +indicating how much output space is available. +BZ2_bzCompress updates +next_out, +avail_out and +total_out to reflect the number +of bytes output.

+

You may provide and remove as little or as much data as you +like on each call of +BZ2_bzDecompress. In the limit, +it is acceptable to supply and remove data one byte at a time, +although this would be terribly inefficient. You should always +ensure that at least one byte of output space is available at +each call.

+

Use of BZ2_bzDecompress is +simpler than +BZ2_bzCompress.

+

You should provide input and remove output as described +above, and repeatedly call +BZ2_bzDecompress until +BZ_STREAM_END is returned. +Appearance of BZ_STREAM_END +denotes that BZ2_bzDecompress +has detected the logical end of the compressed stream. +BZ2_bzDecompress will not +produce BZ_STREAM_END until all +output data has been placed into the output buffer, so once +BZ_STREAM_END appears, you are +guaranteed to have available all the decompressed output, and +BZ2_bzDecompressEnd can safely +be called.

+

If case of an error return value, you should call +BZ2_bzDecompressEnd to clean up +and release memory.

+

Possible return values:

+
BZ_PARAM_ERROR
+  if strm is NULL or strm->s is NULL
+  or strm->avail_out < 1
+BZ_DATA_ERROR
+  if a data integrity error is detected in the compressed stream
+BZ_DATA_ERROR_MAGIC
+  if the compressed stream doesn't begin with the right magic bytes
+BZ_MEM_ERROR
+  if there wasn't enough memory available
+BZ_STREAM_END
+  if the logical end of the data stream was detected and all
+  output in has been consumed, eg s-->avail_out > 0
+BZ_OK
+  otherwise
+

Allowable next actions:

+
BZ2_bzDecompress
+  if BZ_OK was returned
+BZ2_bzDecompressEnd
+  otherwise
+
+
+

+3.3.6. BZ2_bzDecompressEnd

+
int BZ2_bzDecompressEnd ( bz_stream *strm );
+

Releases all memory associated with a decompression +stream.

+

Possible return values:

+
BZ_PARAM_ERROR
+  if strm is NULL or strm->s is NULL
+BZ_OK
+  otherwise
+

Allowable next actions:

+
  None.
+
+
+
+

+3.4. High-level interface

+

This interface provides functions for reading and writing +bzip2 format files. First, some +general points.

+
    +
  • All of the functions take an + int* first argument, + bzerror. After each call, + bzerror should be consulted + first to determine the outcome of the call. If + bzerror is + BZ_OK, the call completed + successfully, and only then should the return value of the + function (if any) be consulted. If + bzerror is + BZ_IO_ERROR, there was an + error reading/writing the underlying compressed file, and you + should then consult errno / + perror to determine the cause + of the difficulty. bzerror + may also be set to various other values; precise details are + given on a per-function basis below.

  • +
  • If bzerror indicates + an error (ie, anything except + BZ_OK and + BZ_STREAM_END), you should + immediately call + BZ2_bzReadClose (or + BZ2_bzWriteClose, depending on + whether you are attempting to read or to write) to free up all + resources associated with the stream. Once an error has been + indicated, behaviour of all calls except + BZ2_bzReadClose + (BZ2_bzWriteClose) is + undefined. The implication is that (1) + bzerror should be checked + after each call, and (2) if + bzerror indicates an error, + BZ2_bzReadClose + (BZ2_bzWriteClose) should then + be called to clean up.

  • +
  • The FILE* arguments + passed to BZ2_bzReadOpen / + BZ2_bzWriteOpen should be set + to binary mode. Most Unix systems will do this by default, but + other platforms, including Windows and Mac, will not. If you + omit this, you may encounter problems when moving code to new + platforms.

  • +
  • Memory allocation requests are handled by + malloc / + free. At present there is no + facility for user-defined memory allocators in the file I/O + functions (could easily be added, though).

  • +
+
+

+3.4.1. BZ2_bzReadOpen

+
typedef void BZFILE;
+
+BZFILE *BZ2_bzReadOpen( int *bzerror, FILE *f, 
+                        int verbosity, int small,
+                        void *unused, int nUnused );
+

Prepare to read compressed data from file handle +f. +f should refer to a file which +has been opened for reading, and for which the error indicator +(ferror(f))is not set. If +small is 1, the library will try +to decompress using less memory, at the expense of speed.

+

For reasons explained below, +BZ2_bzRead will decompress the +nUnused bytes starting at +unused, before starting to read +from the file f. At most +BZ_MAX_UNUSED bytes may be +supplied like this. If this facility is not required, you should +pass NULL and +0 for +unused and +nUnused respectively.

+

For the meaning of parameters +small and +verbosity, see +BZ2_bzDecompressInit.

+

The amount of memory needed to decompress a file cannot be +determined until the file's header has been read. So it is +possible that BZ2_bzReadOpen +returns BZ_OK but a subsequent +call of BZ2_bzRead will return +BZ_MEM_ERROR.

+

Possible assignments to +bzerror:

+
BZ_CONFIG_ERROR
+  if the library has been mis-compiled
+BZ_PARAM_ERROR
+  if f is NULL
+  or small is neither 0 nor 1
+  or ( unused == NULL && nUnused != 0 )
+  or ( unused != NULL && !(0 <= nUnused <= BZ_MAX_UNUSED) )
+BZ_IO_ERROR
+  if ferror(f) is nonzero
+BZ_MEM_ERROR
+  if insufficient memory is available
+BZ_OK
+  otherwise.
+

Possible return values:

+
Pointer to an abstract BZFILE
+  if bzerror is BZ_OK
+NULL
+  otherwise
+

Allowable next actions:

+
BZ2_bzRead
+  if bzerror is BZ_OK
+BZ2_bzClose
+  otherwise
+
+
+

+3.4.2. BZ2_bzRead

+
int BZ2_bzRead ( int *bzerror, BZFILE *b, void *buf, int len );
+

Reads up to len +(uncompressed) bytes from the compressed file +b into the buffer +buf. If the read was +successful, bzerror is set to +BZ_OK and the number of bytes +read is returned. If the logical end-of-stream was detected, +bzerror will be set to +BZ_STREAM_END, and the number of +bytes read is returned. All other +bzerror values denote an +error.

+

BZ2_bzRead will supply +len bytes, unless the logical +stream end is detected or an error occurs. Because of this, it +is possible to detect the stream end by observing when the number +of bytes returned is less than the number requested. +Nevertheless, this is regarded as inadvisable; you should instead +check bzerror after every call +and watch out for +BZ_STREAM_END.

+

Internally, BZ2_bzRead +copies data from the compressed file in chunks of size +BZ_MAX_UNUSED bytes before +decompressing it. If the file contains more bytes than strictly +needed to reach the logical end-of-stream, +BZ2_bzRead will almost certainly +read some of the trailing data before signalling +BZ_SEQUENCE_END. To collect the +read but unused data once +BZ_SEQUENCE_END has appeared, +call BZ2_bzReadGetUnused +immediately before +BZ2_bzReadClose.

+

Possible assignments to +bzerror:

+
BZ_PARAM_ERROR
+  if b is NULL or buf is NULL or len < 0
+BZ_SEQUENCE_ERROR
+  if b was opened with BZ2_bzWriteOpen
+BZ_IO_ERROR
+  if there is an error reading from the compressed file
+BZ_UNEXPECTED_EOF
+  if the compressed file ended before 
+  the logical end-of-stream was detected
+BZ_DATA_ERROR
+  if a data integrity error was detected in the compressed stream
+BZ_DATA_ERROR_MAGIC
+  if the stream does not begin with the requisite header bytes 
+  (ie, is not a bzip2 data file).  This is really 
+  a special case of BZ_DATA_ERROR.
+BZ_MEM_ERROR
+  if insufficient memory was available
+BZ_STREAM_END
+  if the logical end of stream was detected.
+BZ_OK
+  otherwise.
+

Possible return values:

+
number of bytes read
+  if bzerror is BZ_OK or BZ_STREAM_END
+undefined
+  otherwise
+

Allowable next actions:

+
collect data from buf, then BZ2_bzRead or BZ2_bzReadClose
+  if bzerror is BZ_OK
+collect data from buf, then BZ2_bzReadClose or BZ2_bzReadGetUnused
+  if bzerror is BZ_SEQUENCE_END
+BZ2_bzReadClose
+  otherwise
+
+
+

+3.4.3. BZ2_bzReadGetUnused

+
void BZ2_bzReadGetUnused( int* bzerror, BZFILE *b, 
+                          void** unused, int* nUnused );
+

Returns data which was read from the compressed file but +was not needed to get to the logical end-of-stream. +*unused is set to the address of +the data, and *nUnused to the +number of bytes. *nUnused will +be set to a value between 0 and +BZ_MAX_UNUSED inclusive.

+

This function may only be called once +BZ2_bzRead has signalled +BZ_STREAM_END but before +BZ2_bzReadClose.

+

Possible assignments to +bzerror:

+
BZ_PARAM_ERROR
+  if b is NULL
+  or unused is NULL or nUnused is NULL
+BZ_SEQUENCE_ERROR
+  if BZ_STREAM_END has not been signalled
+  or if b was opened with BZ2_bzWriteOpen
+BZ_OK
+  otherwise
+

Allowable next actions:

+
BZ2_bzReadClose
+
+
+

+3.4.4. BZ2_bzReadClose

+
void BZ2_bzReadClose ( int *bzerror, BZFILE *b );
+

Releases all memory pertaining to the compressed file +b. +BZ2_bzReadClose does not call +fclose on the underlying file +handle, so you should do that yourself if appropriate. +BZ2_bzReadClose should be called +to clean up after all error situations.

+

Possible assignments to +bzerror:

+
BZ_SEQUENCE_ERROR
+  if b was opened with BZ2_bzOpenWrite
+BZ_OK
+  otherwise
+

Allowable next actions:

+
none
+
+
+

+3.4.5. BZ2_bzWriteOpen

+
BZFILE *BZ2_bzWriteOpen( int *bzerror, FILE *f, 
+                         int blockSize100k, int verbosity,
+                         int workFactor );
+

Prepare to write compressed data to file handle +f. +f should refer to a file which +has been opened for writing, and for which the error indicator +(ferror(f))is not set.

+

For the meaning of parameters +blockSize100k, +verbosity and +workFactor, see +BZ2_bzCompressInit.

+

All required memory is allocated at this stage, so if the +call completes successfully, +BZ_MEM_ERROR cannot be signalled +by a subsequent call to +BZ2_bzWrite.

+

Possible assignments to +bzerror:

+
BZ_CONFIG_ERROR
+  if the library has been mis-compiled
+BZ_PARAM_ERROR
+  if f is NULL
+  or blockSize100k < 1 or blockSize100k > 9
+BZ_IO_ERROR
+  if ferror(f) is nonzero
+BZ_MEM_ERROR
+  if insufficient memory is available
+BZ_OK
+  otherwise
+

Possible return values:

+
Pointer to an abstract BZFILE
+  if bzerror is BZ_OK
+NULL
+  otherwise
+

Allowable next actions:

+
BZ2_bzWrite
+  if bzerror is BZ_OK
+  (you could go directly to BZ2_bzWriteClose, but this would be pretty pointless)
+BZ2_bzWriteClose
+  otherwise
+
+
+

+3.4.6. BZ2_bzWrite

+
void BZ2_bzWrite ( int *bzerror, BZFILE *b, void *buf, int len );
+

Absorbs len bytes from the +buffer buf, eventually to be +compressed and written to the file.

+

Possible assignments to +bzerror:

+
BZ_PARAM_ERROR
+  if b is NULL or buf is NULL or len < 0
+BZ_SEQUENCE_ERROR
+  if b was opened with BZ2_bzReadOpen
+BZ_IO_ERROR
+  if there is an error writing the compressed file.
+BZ_OK
+  otherwise
+
+
+

+3.4.7. BZ2_bzWriteClose

+
void BZ2_bzWriteClose( int *bzerror, BZFILE* f,
+                       int abandon,
+                       unsigned int* nbytes_in,
+                       unsigned int* nbytes_out );
+
+void BZ2_bzWriteClose64( int *bzerror, BZFILE* f,
+                         int abandon,
+                         unsigned int* nbytes_in_lo32,
+                         unsigned int* nbytes_in_hi32,
+                         unsigned int* nbytes_out_lo32,
+                         unsigned int* nbytes_out_hi32 );
+

Compresses and flushes to the compressed file all data so +far supplied by BZ2_bzWrite. +The logical end-of-stream markers are also written, so subsequent +calls to BZ2_bzWrite are +illegal. All memory associated with the compressed file +b is released. +fflush is called on the +compressed file, but it is not +fclose'd.

+

If BZ2_bzWriteClose is +called to clean up after an error, the only action is to release +the memory. The library records the error codes issued by +previous calls, so this situation will be detected automatically. +There is no attempt to complete the compression operation, nor to +fflush the compressed file. You +can force this behaviour to happen even in the case of no error, +by passing a nonzero value to +abandon.

+

If nbytes_in is non-null, +*nbytes_in will be set to be the +total volume of uncompressed data handled. Similarly, +nbytes_out will be set to the +total volume of compressed data written. For compatibility with +older versions of the library, +BZ2_bzWriteClose only yields the +lower 32 bits of these counts. Use +BZ2_bzWriteClose64 if you want +the full 64 bit counts. These two functions are otherwise +absolutely identical.

+

Possible assignments to +bzerror:

+
BZ_SEQUENCE_ERROR
+  if b was opened with BZ2_bzReadOpen
+BZ_IO_ERROR
+  if there is an error writing the compressed file
+BZ_OK
+  otherwise
+
+
+

+3.4.8. Handling embedded compressed data streams

+

The high-level library facilitates use of +bzip2 data streams which form +some part of a surrounding, larger data stream.

+
    +
  • For writing, the library takes an open file handle, + writes compressed data to it, + fflushes it but does not + fclose it. The calling + application can write its own data before and after the + compressed data stream, using that same file handle.

  • +
  • Reading is more complex, and the facilities are not as + general as they could be since generality is hard to reconcile + with efficiency. BZ2_bzRead + reads from the compressed file in blocks of size + BZ_MAX_UNUSED bytes, and in + doing so probably will overshoot the logical end of compressed + stream. To recover this data once decompression has ended, + call BZ2_bzReadGetUnused after + the last call of BZ2_bzRead + (the one returning + BZ_STREAM_END) but before + calling + BZ2_bzReadClose.

  • +
+

This mechanism makes it easy to decompress multiple +bzip2 streams placed end-to-end. +As the end of one stream, when +BZ2_bzRead returns +BZ_STREAM_END, call +BZ2_bzReadGetUnused to collect +the unused data (copy it into your own buffer somewhere). That +data forms the start of the next compressed stream. To start +uncompressing that next stream, call +BZ2_bzReadOpen again, feeding in +the unused data via the unused / +nUnused parameters. Keep doing +this until BZ_STREAM_END return +coincides with the physical end of file +(feof(f)). In this situation +BZ2_bzReadGetUnused will of +course return no data.

+

This should give some feel for how the high-level interface +can be used. If you require extra flexibility, you'll have to +bite the bullet and get to grips with the low-level +interface.

+
+
+

+3.4.9. Standard file-reading/writing code

+

Here's how you'd write data to a compressed file:

+
FILE*   f;
+BZFILE* b;
+int     nBuf;
+char    buf[ /* whatever size you like */ ];
+int     bzerror;
+int     nWritten;
+
+f = fopen ( "myfile.bz2", "w" );
+if ( !f ) {
+ /* handle error */
+}
+b = BZ2_bzWriteOpen( &bzerror, f, 9 );
+if (bzerror != BZ_OK) {
+ BZ2_bzWriteClose ( b );
+ /* handle error */
+}
+
+while ( /* condition */ ) {
+ /* get data to write into buf, and set nBuf appropriately */
+ nWritten = BZ2_bzWrite ( &bzerror, b, buf, nBuf );
+ if (bzerror == BZ_IO_ERROR) { 
+   BZ2_bzWriteClose ( &bzerror, b );
+   /* handle error */
+ }
+}
+
+BZ2_bzWriteClose( &bzerror, b );
+if (bzerror == BZ_IO_ERROR) {
+ /* handle error */
+}
+

And to read from a compressed file:

+
FILE*   f;
+BZFILE* b;
+int     nBuf;
+char    buf[ /* whatever size you like */ ];
+int     bzerror;
+int     nWritten;
+
+f = fopen ( "myfile.bz2", "r" );
+if ( !f ) {
+  /* handle error */
+}
+b = BZ2_bzReadOpen ( &bzerror, f, 0, NULL, 0 );
+if ( bzerror != BZ_OK ) {
+  BZ2_bzReadClose ( &bzerror, b );
+  /* handle error */
+}
+
+bzerror = BZ_OK;
+while ( bzerror == BZ_OK && /* arbitrary other conditions */) {
+  nBuf = BZ2_bzRead ( &bzerror, b, buf, /* size of buf */ );
+  if ( bzerror == BZ_OK ) {
+    /* do something with buf[0 .. nBuf-1] */
+  }
+}
+if ( bzerror != BZ_STREAM_END ) {
+   BZ2_bzReadClose ( &bzerror, b );
+   /* handle error */
+} else {
+   BZ2_bzReadClose ( &bzerror, b );
+}
+
+
+
+

+3.5. Utility functions

+
+

+3.5.1. BZ2_bzBuffToBuffCompress

+
int BZ2_bzBuffToBuffCompress( char*         dest,
+                              unsigned int* destLen,
+                              char*         source,
+                              unsigned int  sourceLen,
+                              int           blockSize100k,
+                              int           verbosity,
+                              int           workFactor );
+

Attempts to compress the data in source[0 +.. sourceLen-1] into the destination buffer, +dest[0 .. *destLen-1]. If the +destination buffer is big enough, +*destLen is set to the size of +the compressed data, and BZ_OK +is returned. If the compressed data won't fit, +*destLen is unchanged, and +BZ_OUTBUFF_FULL is +returned.

+

Compression in this manner is a one-shot event, done with a +single call to this function. The resulting compressed data is a +complete bzip2 format data +stream. There is no mechanism for making additional calls to +provide extra input data. If you want that kind of mechanism, +use the low-level interface.

+

For the meaning of parameters +blockSize100k, +verbosity and +workFactor, see +BZ2_bzCompressInit.

+

To guarantee that the compressed data will fit in its +buffer, allocate an output buffer of size 1% larger than the +uncompressed data, plus six hundred extra bytes.

+

BZ2_bzBuffToBuffDecompress +will not write data at or beyond +dest[*destLen], even in case of +buffer overflow.

+

Possible return values:

+
BZ_CONFIG_ERROR
+  if the library has been mis-compiled
+BZ_PARAM_ERROR
+  if dest is NULL or destLen is NULL
+  or blockSize100k < 1 or blockSize100k > 9
+  or verbosity < 0 or verbosity > 4
+  or workFactor < 0 or workFactor > 250
+BZ_MEM_ERROR
+  if insufficient memory is available 
+BZ_OUTBUFF_FULL
+  if the size of the compressed data exceeds *destLen
+BZ_OK
+  otherwise
+
+
+

+3.5.2. BZ2_bzBuffToBuffDecompress

+
int BZ2_bzBuffToBuffDecompress( char*         dest,
+                                unsigned int* destLen,
+                                char*         source,
+                                unsigned int  sourceLen,
+                                int           small,
+                                int           verbosity );
+

Attempts to decompress the data in source[0 +.. sourceLen-1] into the destination buffer, +dest[0 .. *destLen-1]. If the +destination buffer is big enough, +*destLen is set to the size of +the uncompressed data, and BZ_OK +is returned. If the compressed data won't fit, +*destLen is unchanged, and +BZ_OUTBUFF_FULL is +returned.

+

source is assumed to hold +a complete bzip2 format data +stream. +BZ2_bzBuffToBuffDecompress tries +to decompress the entirety of the stream into the output +buffer.

+

For the meaning of parameters +small and +verbosity, see +BZ2_bzDecompressInit.

+

Because the compression ratio of the compressed data cannot +be known in advance, there is no easy way to guarantee that the +output buffer will be big enough. You may of course make +arrangements in your code to record the size of the uncompressed +data, but such a mechanism is beyond the scope of this +library.

+

BZ2_bzBuffToBuffDecompress +will not write data at or beyond +dest[*destLen], even in case of +buffer overflow.

+

Possible return values:

+
BZ_CONFIG_ERROR
+  if the library has been mis-compiled
+BZ_PARAM_ERROR
+  if dest is NULL or destLen is NULL
+  or small != 0 && small != 1
+  or verbosity < 0 or verbosity > 4
+BZ_MEM_ERROR
+  if insufficient memory is available 
+BZ_OUTBUFF_FULL
+  if the size of the compressed data exceeds *destLen
+BZ_DATA_ERROR
+  if a data integrity error was detected in the compressed data
+BZ_DATA_ERROR_MAGIC
+  if the compressed data doesn't begin with the right magic bytes
+BZ_UNEXPECTED_EOF
+  if the compressed data ends unexpectedly
+BZ_OK
+  otherwise
+
+
+
+

+3.6. zlib compatibility functions

+

Yoshioka Tsuneo has contributed some functions to give +better zlib compatibility. +These functions are BZ2_bzopen, +BZ2_bzread, +BZ2_bzwrite, +BZ2_bzflush, +BZ2_bzclose, +BZ2_bzerror and +BZ2_bzlibVersion. These +functions are not (yet) officially part of the library. If they +break, you get to keep all the pieces. Nevertheless, I think +they work ok.

+
typedef void BZFILE;
+
+const char * BZ2_bzlibVersion ( void );
+

Returns a string indicating the library version.

+
BZFILE * BZ2_bzopen  ( const char *path, const char *mode );
+BZFILE * BZ2_bzdopen ( int        fd,    const char *mode );
+

Opens a .bz2 file for +reading or writing, using either its name or a pre-existing file +descriptor. Analogous to fopen +and fdopen.

+
int BZ2_bzread  ( BZFILE* b, void* buf, int len );
+int BZ2_bzwrite ( BZFILE* b, void* buf, int len );
+

Reads/writes data from/to a previously opened +BZFILE. Analogous to +fread and +fwrite.

+
int  BZ2_bzflush ( BZFILE* b );
+void BZ2_bzclose ( BZFILE* b );
+

Flushes/closes a BZFILE. +BZ2_bzflush doesn't actually do +anything. Analogous to fflush +and fclose.

+
const char * BZ2_bzerror ( BZFILE *b, int *errnum )
+

Returns a string describing the more recent error status of +b, and also sets +*errnum to its numerical +value.

+
+
+

+3.7. Using the library in a stdio-free environment

+
+

+3.7.1. Getting rid of stdio

+

In a deeply embedded application, you might want to use +just the memory-to-memory functions. You can do this +conveniently by compiling the library with preprocessor symbol +BZ_NO_STDIO defined. Doing this +gives you a library containing only the following eight +functions:

+

BZ2_bzCompressInit, +BZ2_bzCompress, +BZ2_bzCompressEnd +BZ2_bzDecompressInit, +BZ2_bzDecompress, +BZ2_bzDecompressEnd +BZ2_bzBuffToBuffCompress, +BZ2_bzBuffToBuffDecompress

+

When compiled like this, all functions will ignore +verbosity settings.

+
+
+

+3.7.2. Critical error handling

+

libbzip2 contains a number +of internal assertion checks which should, needless to say, never +be activated. Nevertheless, if an assertion should fail, +behaviour depends on whether or not the library was compiled with +BZ_NO_STDIO set.

+

For a normal compile, an assertion failure yields the +message:

+
+

bzip2/libbzip2: internal error number N.

+

This is a bug in bzip2/libbzip2, 1.0.6 of 6 September 2010. +Please report it to me at: jseward@bzip.org. If this happened +when you were using some program which uses libbzip2 as a +component, you should also report this bug to the author(s) +of that program. Please make an effort to report this bug; +timely and accurate bug reports eventually lead to higher +quality software. Thanks. Julian Seward, 6 September 2010. +

+
+

where N is some error code +number. If N == 1007, it also +prints some extra text advising the reader that unreliable memory +is often associated with internal error 1007. (This is a +frequently-observed-phenomenon with versions 1.0.0/1.0.1).

+

exit(3) is then +called.

+

For a stdio-free library, +assertion failures result in a call to a function declared +as:

+
extern void bz_internal_error ( int errcode );
+

The relevant code is passed as a parameter. You should +supply such a function.

+

In either case, once an assertion failure has occurred, any +bz_stream records involved can +be regarded as invalid. You should not attempt to resume normal +operation with them.

+

You may, of course, change critical error handling to suit +your needs. As I said above, critical errors indicate bugs in +the library and should not occur. All "normal" error situations +are indicated via error return codes from functions, and can be +recovered from.

+
+
+
+

+3.8. Making a Windows DLL

+

Everything related to Windows has been contributed by +Yoshioka Tsuneo +(tsuneo@rr.iij4u.or.jp), so +you should send your queries to him (but perhaps Cc: me, +jseward@bzip.org).

+

My vague understanding of what to do is: using Visual C++ +5.0, open the project file +libbz2.dsp, and build. That's +all.

+

If you can't open the project file for some reason, make a +new one, naming these files: +blocksort.c, +bzlib.c, +compress.c, +crctable.c, +decompress.c, +huffman.c, +randtable.c and +libbz2.def. You will also need +to name the header files bzlib.h +and bzlib_private.h.

+

If you don't use VC++, you may need to define the +proprocessor symbol +_WIN32.

+

Finally, dlltest.c is a +sample program using the DLL. It has a project file, +dlltest.dsp.

+

If you just want a makefile for Visual C, have a look at +makefile.msc.

+

Be aware that if you compile +bzip2 itself on Win32, you must +set BZ_UNIX to 0 and +BZ_LCCWIN32 to 1, in the file +bzip2.c, before compiling. +Otherwise the resulting binary won't work correctly.

+

I haven't tried any of this stuff myself, but it all looks +plausible.

+
+
+
+

+4. Miscellanea

+ +

These are just some random thoughts of mine. Your mileage +may vary.

+
+

+4.1. Limitations of the compressed file format

+

bzip2-1.0.X, +0.9.5 and +0.9.0 use exactly the same file +format as the original version, +bzip2-0.1. This decision was +made in the interests of stability. Creating yet another +incompatible compressed file format would create further +confusion and disruption for users.

+

Nevertheless, this is not a painless decision. Development +work since the release of +bzip2-0.1 in August 1997 has +shown complexities in the file format which slow down +decompression and, in retrospect, are unnecessary. These +are:

+
    +
  • The run-length encoder, which is the first of the + compression transformations, is entirely irrelevant. The + original purpose was to protect the sorting algorithm from the + very worst case input: a string of repeated symbols. But + algorithm steps Q6a and Q6b in the original Burrows-Wheeler + technical report (SRC-124) show how repeats can be handled + without difficulty in block sorting.

  • +
  • +

    The randomisation mechanism doesn't really need to be + there. Udi Manber and Gene Myers published a suffix array + construction algorithm a few years back, which can be employed + to sort any block, no matter how repetitive, in O(N log N) + time. Subsequent work by Kunihiko Sadakane has produced a + derivative O(N (log N)^2) algorithm which usually outperforms + the Manber-Myers algorithm.

    +

    I could have changed to Sadakane's algorithm, but I find + it to be slower than bzip2's + existing algorithm for most inputs, and the randomisation + mechanism protects adequately against bad cases. I didn't + think it was a good tradeoff to make. Partly this is due to + the fact that I was not flooded with email complaints about + bzip2-0.1's performance on + repetitive data, so perhaps it isn't a problem for real + inputs.

    +

    Probably the best long-term solution, and the one I have + incorporated into 0.9.5 and above, is to use the existing + sorting algorithm initially, and fall back to a O(N (log N)^2) + algorithm if the standard algorithm gets into + difficulties.

    +
  • +
  • The compressed file format was never designed to be + handled by a library, and I have had to jump though some hoops + to produce an efficient implementation of decompression. It's + a bit hairy. Try passing + decompress.c through the C + preprocessor and you'll see what I mean. Much of this + complexity could have been avoided if the compressed size of + each block of data was recorded in the data stream.

  • +
  • An Adler-32 checksum, rather than a CRC32 checksum, + would be faster to compute.

  • +
+

It would be fair to say that the +bzip2 format was frozen before I +properly and fully understood the performance consequences of +doing so.

+

Improvements which I was able to incorporate into 0.9.0, +despite using the same file format, are:

+
    +
  • Single array implementation of the inverse BWT. This + significantly speeds up decompression, presumably because it + reduces the number of cache misses.

  • +
  • Faster inverse MTF transform for large MTF values. + The new implementation is based on the notion of sliding blocks + of values.

  • +
  • bzip2-0.9.0 now reads + and writes files with fread + and fwrite; version 0.1 used + putc and + getc. Duh! Well, you live + and learn.

  • +
+

Further ahead, it would be nice to be able to do random +access into files. This will require some careful design of +compressed file formats.

+
+
+

+4.2. Portability issues

+

After some consideration, I have decided not to use GNU +autoconf to configure 0.9.5 or +1.0.

+

autoconf, admirable and +wonderful though it is, mainly assists with portability problems +between Unix-like platforms. But +bzip2 doesn't have much in the +way of portability problems on Unix; most of the difficulties +appear when porting to the Mac, or to Microsoft's operating +systems. autoconf doesn't help +in those cases, and brings in a whole load of new +complexity.

+

Most people should be able to compile the library and +program under Unix straight out-of-the-box, so to speak, +especially if you have a version of GNU C available.

+

There are a couple of +__inline__ directives in the +code. GNU C (gcc) should be +able to handle them. If you're not using GNU C, your C compiler +shouldn't see them at all. If your compiler does, for some +reason, see them and doesn't like them, just +#define +__inline__ to be +/* */. One easy way to do this +is to compile with the flag +-D__inline__=, which should be +understood by most Unix compilers.

+

If you still have difficulties, try compiling with the +macro BZ_STRICT_ANSI defined. +This should enable you to build the library in a strictly ANSI +compliant environment. Building the program itself like this is +dangerous and not supported, since you remove +bzip2's checks against +compressing directories, symbolic links, devices, and other +not-really-a-file entities. This could cause filesystem +corruption!

+

One other thing: if you create a +bzip2 binary for public distribution, +please consider linking it statically (gcc +-static). This avoids all sorts of library-version +issues that others may encounter later on.

+

If you build bzip2 on +Win32, you must set BZ_UNIX to 0 +and BZ_LCCWIN32 to 1, in the +file bzip2.c, before compiling. +Otherwise the resulting binary won't work correctly.

+
+
+

+4.3. Reporting bugs

+

I tried pretty hard to make sure +bzip2 is bug free, both by +design and by testing. Hopefully you'll never need to read this +section for real.

+

Nevertheless, if bzip2 dies +with a segmentation fault, a bus error or an internal assertion +failure, it will ask you to email me a bug report. Experience from +years of feedback of bzip2 users indicates that almost all these +problems can be traced to either compiler bugs or hardware +problems.

+
    +
  • +

    Recompile the program with no optimisation, and + see if it works. And/or try a different compiler. I heard all + sorts of stories about various flavours of GNU C (and other + compilers) generating bad code for + bzip2, and I've run across two + such examples myself.

    +

    2.7.X versions of GNU C are known to generate bad code + from time to time, at high optimisation levels. If you get + problems, try using the flags + -O2 + -fomit-frame-pointer + -fno-strength-reduce. You + should specifically not use + -funroll-loops.

    +

    You may notice that the Makefile runs six tests as part + of the build process. If the program passes all of these, it's + a pretty good (but not 100%) indication that the compiler has + done its job correctly.

    +
  • +
  • +

    If bzip2 + crashes randomly, and the crashes are not repeatable, you may + have a flaky memory subsystem. + bzip2 really hammers your + memory hierarchy, and if it's a bit marginal, you may get these + problems. Ditto if your disk or I/O subsystem is slowly + failing. Yup, this really does happen.

    +

    Try using a different machine of the same type, and see + if you can repeat the problem.

    +
  • +
  • This isn't really a bug, but ... If + bzip2 tells you your file is + corrupted on decompression, and you obtained the file via FTP, + there is a possibility that you forgot to tell FTP to do a + binary mode transfer. That absolutely will cause the file to + be non-decompressible. You'll have to transfer it + again.

  • +
+

If you've incorporated +libbzip2 into your own program +and are getting problems, please, please, please, check that the +parameters you are passing in calls to the library, are correct, +and in accordance with what the documentation says is allowable. +I have tried to make the library robust against such problems, +but I'm sure I haven't succeeded.

+

Finally, if the above comments don't help, you'll have to +send me a bug report. Now, it's just amazing how many people +will send me a bug report saying something like:

+
bzip2 crashed with segmentation fault on my machine
+

and absolutely nothing else. Needless to say, a such a +report is totally, utterly, completely and +comprehensively 100% useless; a waste of your time, my time, and +net bandwidth. With no details at all, there's no way +I can possibly begin to figure out what the problem is.

+

The rules of the game are: facts, facts, facts. Don't omit +them because "oh, they won't be relevant". At the bare +minimum:

+
Machine type.  Operating system version.  
+Exact version of bzip2 (do bzip2 -V).  
+Exact version of the compiler used.  
+Flags passed to the compiler.
+

However, the most important single thing that will help me +is the file that you were trying to compress or decompress at the +time the problem happened. Without that, my ability to do +anything more than speculate about the cause, is limited.

+
+
+

+4.4. Did you get the right package?

+

bzip2 is a resource hog. +It soaks up large amounts of CPU cycles and memory. Also, it +gives very large latencies. In the worst case, you can feed many +megabytes of uncompressed data into the library before getting +any compressed output, so this probably rules out applications +requiring interactive behaviour.

+

These aren't faults of my implementation, I hope, but more +an intrinsic property of the Burrows-Wheeler transform +(unfortunately). Maybe this isn't what you want.

+

If you want a compressor and/or library which is faster, +uses less memory but gets pretty good compression, and has +minimal latency, consider Jean-loup Gailly's and Mark Adler's +work, zlib-1.2.1 and +gzip-1.2.4. Look for them at +http://www.zlib.org and +http://www.gzip.org +respectively.

+

For something faster and lighter still, you might try Markus F +X J Oberhumer's LZO real-time +compression/decompression library, at +http://www.oberhumer.com/opensource.

+
+
+

+4.5. Further Reading

+

bzip2 is not research +work, in the sense that it doesn't present any new ideas. +Rather, it's an engineering exercise based on existing +ideas.

+

Four documents describe essentially all the ideas behind +bzip2:

+

Michael Burrows and D. J. Wheeler:
+  "A block-sorting lossless data compression algorithm"
+   10th May 1994. 
+   Digital SRC Research Report 124.
+   ftp://ftp.digital.com/pub/DEC/SRC/research-reports/SRC-124.ps.gz
+   If you have trouble finding it, try searching at the
+   New Zealand Digital Library, http://www.nzdl.org.
+
+Daniel S. Hirschberg and Debra A. LeLewer
+  "Efficient Decoding of Prefix Codes"
+   Communications of the ACM, April 1990, Vol 33, Number 4.
+   You might be able to get an electronic copy of this
+   from the ACM Digital Library.
+
+David J. Wheeler
+   Program bred3.c and accompanying document bred3.ps.
+   This contains the idea behind the multi-table Huffman coding scheme.
+   ftp://ftp.cl.cam.ac.uk/users/djw3/
+
+Jon L. Bentley and Robert Sedgewick
+  "Fast Algorithms for Sorting and Searching Strings"
+   Available from Sedgewick's web page,
+   www.cs.princeton.edu/~rs
+

+

The following paper gives valuable additional insights into +the algorithm, but is not immediately the basis of any code used +in bzip2.

+

Peter Fenwick:
+   Block Sorting Text Compression
+   Proceedings of the 19th Australasian Computer Science Conference,
+     Melbourne, Australia.  Jan 31 - Feb 2, 1996.
+   ftp://ftp.cs.auckland.ac.nz/pub/peter-f/ACSC96paper.ps

+

Kunihiko Sadakane's sorting algorithm, mentioned above, is +available from:

+

http://naomi.is.s.u-tokyo.ac.jp/~sada/papers/Sada98b.ps.gz
+

+

The Manber-Myers suffix array construction algorithm is +described in a paper available from:

+

http://www.cs.arizona.edu/people/gene/PAPERS/suffix.ps
+

+

Finally, the following papers document some +investigations I made into the performance of sorting +and decompression algorithms:

+

Julian Seward
+   On the Performance of BWT Sorting Algorithms
+   Proceedings of the IEEE Data Compression Conference 2000
+     Snowbird, Utah.  28-30 March 2000.
+
+Julian Seward
+   Space-time Tradeoffs in the Inverse B-W Transform
+   Proceedings of the IEEE Data Compression Conference 2001
+     Snowbird, Utah.  27-29 March 2001.
+

+
+
+
+ diff --git a/plugins/Updater/bzip2-1.0.3/manual.pdf b/plugins/Updater/bzip2-1.0.3/manual.pdf new file mode 100644 index 0000000000..f1c31a0ed2 Binary files /dev/null and b/plugins/Updater/bzip2-1.0.3/manual.pdf differ diff --git a/plugins/Updater/bzip2-1.0.3/manual.ps b/plugins/Updater/bzip2-1.0.3/manual.ps new file mode 100644 index 0000000000..cbc6f924df --- /dev/null +++ b/plugins/Updater/bzip2-1.0.3/manual.ps @@ -0,0 +1,72843 @@ +%!PS-Adobe-3.0 +%%Creator: PassiveTeX 1.25 +%%LanguageLevel: 2 +%%DocumentSuppliedResources: (atend) +%%DocumentMedia: plain 612 792 0 () () +%%BoundingBox: 0 0 612 792 +%%Pages: 38 +%%EndComments +%%BeginDefaults +%%PageMedia: plain +%%EndDefaults +%%BeginProlog +%%BeginResource: procset xpdf 3.00 0 +%%Copyright: Copyright 1996-2004 Glyph & Cog, LLC +/xpdf 75 dict def xpdf begin +% PDF special state +/pdfDictSize 15 def +/pdfSetup { + 3 1 roll 2 array astore + /setpagedevice where { + pop 3 dict begin + /PageSize exch def + /ImagingBBox null def + { /Duplex true def } if + currentdict end setpagedevice + } { + pop pop + } ifelse +} def +/pdfStartPage { + pdfDictSize dict begin + /pdfFillCS [] def + /pdfFillXform {} def + /pdfStrokeCS [] def + /pdfStrokeXform {} def + /pdfFill [0] def + /pdfStroke [0] def + /pdfFillOP false def + /pdfStrokeOP false def + /pdfLastFill false def + /pdfLastStroke false def + /pdfTextMat [1 0 0 1 0 0] def + /pdfFontSize 0 def + /pdfCharSpacing 0 def + /pdfTextRender 0 def + /pdfTextRise 0 def + /pdfWordSpacing 0 def + /pdfHorizScaling 1 def + /pdfTextClipPath [] def +} def +/pdfEndPage { end } def +% PDF color state +/cs { /pdfFillXform exch def dup /pdfFillCS exch def + setcolorspace } def +/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def + setcolorspace } def +/sc { pdfLastFill not { pdfFillCS setcolorspace } if + dup /pdfFill exch def aload pop pdfFillXform setcolor + /pdfLastFill true def /pdfLastStroke false def } def +/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if + dup /pdfStroke exch def aload pop pdfStrokeXform setcolor + /pdfLastStroke true def /pdfLastFill false def } def +/op { /pdfFillOP exch def + pdfLastFill { pdfFillOP setoverprint } if } def +/OP { /pdfStrokeOP exch def + pdfLastStroke { pdfStrokeOP setoverprint } if } def +/fCol { + pdfLastFill not { + pdfFillCS setcolorspace + pdfFill aload pop pdfFillXform setcolor + pdfFillOP setoverprint + /pdfLastFill true def /pdfLastStroke false def + } if +} def +/sCol { + pdfLastStroke not { + pdfStrokeCS setcolorspace + pdfStroke aload pop pdfStrokeXform setcolor + pdfStrokeOP setoverprint + /pdfLastStroke true def /pdfLastFill false def + } if +} def +% build a font +/pdfMakeFont { + 4 3 roll findfont + 4 2 roll matrix scale makefont + dup length dict begin + { 1 index /FID ne { def } { pop pop } ifelse } forall + /Encoding exch def + currentdict + end + definefont pop +} def +/pdfMakeFont16 { + exch findfont + dup length dict begin + { 1 index /FID ne { def } { pop pop } ifelse } forall + /WMode exch def + currentdict + end + definefont pop +} def +% graphics state operators +/q { gsave pdfDictSize dict begin } def +/Q { + end grestore + /pdfLastFill where { + pop + pdfLastFill { + pdfFillOP setoverprint + } { + pdfStrokeOP setoverprint + } ifelse + } if +} def +/cm { concat } def +/d { setdash } def +/i { setflat } def +/j { setlinejoin } def +/J { setlinecap } def +/M { setmiterlimit } def +/w { setlinewidth } def +% path segment operators +/m { moveto } def +/l { lineto } def +/c { curveto } def +/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath } def +/h { closepath } def +% path painting operators +/S { sCol stroke } def +/Sf { fCol stroke } def +/f { fCol fill } def +/f* { fCol eofill } def +% clipping operators +/W { clip newpath } def +/W* { eoclip newpath } def +/Ws { strokepath clip newpath } def +% text state operators +/Tc { /pdfCharSpacing exch def } def +/Tf { dup /pdfFontSize exch def + dup pdfHorizScaling mul exch matrix scale + pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put + exch findfont exch makefont setfont } def +/Tr { /pdfTextRender exch def } def +/Ts { /pdfTextRise exch def } def +/Tw { /pdfWordSpacing exch def } def +/Tz { /pdfHorizScaling exch def } def +% text positioning operators +/Td { pdfTextMat transform moveto } def +/Tm { /pdfTextMat exch def } def +% text string operators +/cshow where { + pop + /cshow2 { + dup { + pop pop + 1 string dup 0 3 index put 3 index exec + } exch cshow + pop pop + } def +}{ + /cshow2 { + currentfont /FontType get 0 eq { + 0 2 2 index length 1 sub { + 2 copy get exch 1 add 2 index exch get + 2 copy exch 256 mul add + 2 string dup 0 6 5 roll put dup 1 5 4 roll put + 3 index exec + } for + } { + dup { + 1 string dup 0 3 index put 3 index exec + } forall + } ifelse + pop pop + } def +} ifelse +/awcp { + exch { + false charpath + 5 index 5 index rmoveto + 6 index eq { 7 index 7 index rmoveto } if + } exch cshow2 + 6 {pop} repeat +} def +/Tj { + fCol + 1 index stringwidth pdfTextMat idtransform pop + sub 1 index length dup 0 ne { div } { pop pop 0 } ifelse + pdfWordSpacing pdfHorizScaling mul 0 pdfTextMat dtransform 32 + 4 3 roll pdfCharSpacing pdfHorizScaling mul add 0 + pdfTextMat dtransform + 6 5 roll Tj1 +} def +/Tj16 { + fCol + 2 index stringwidth pdfTextMat idtransform pop + sub exch div + pdfWordSpacing pdfHorizScaling mul 0 pdfTextMat dtransform 32 + 4 3 roll pdfCharSpacing pdfHorizScaling mul add 0 + pdfTextMat dtransform + 6 5 roll Tj1 +} def +/Tj16V { + fCol + 2 index stringwidth pdfTextMat idtransform exch pop + sub exch div + 0 pdfWordSpacing pdfTextMat dtransform 32 + 4 3 roll pdfCharSpacing add 0 exch + pdfTextMat dtransform + 6 5 roll Tj1 +} def +/Tj1 { + 0 pdfTextRise pdfTextMat dtransform rmoveto + currentpoint 8 2 roll + pdfTextRender 1 and 0 eq { + 6 copy awidthshow + } if + pdfTextRender 3 and dup 1 eq exch 2 eq or { + 7 index 7 index moveto + 6 copy + currentfont /FontType get 3 eq { fCol } { sCol } ifelse + false awcp currentpoint stroke moveto + } if + pdfTextRender 4 and 0 ne { + 8 6 roll moveto + false awcp + /pdfTextClipPath [ pdfTextClipPath aload pop + {/moveto cvx} + {/lineto cvx} + {/curveto cvx} + {/closepath cvx} + pathforall ] def + currentpoint newpath moveto + } { + 8 {pop} repeat + } ifelse + 0 pdfTextRise neg pdfTextMat dtransform rmoveto +} def +/TJm { pdfFontSize 0.001 mul mul neg 0 + pdfTextMat dtransform rmoveto } def +/TJmV { pdfFontSize 0.001 mul mul neg 0 exch + pdfTextMat dtransform rmoveto } def +/Tclip { pdfTextClipPath cvx exec clip newpath + /pdfTextClipPath [] def } def +/Tclip* { pdfTextClipPath cvx exec eoclip newpath + /pdfTextClipPath [] def } def +% Level 2 image operators +/pdfImBuf 100 string def +/pdfIm { + image + { currentfile pdfImBuf readline + not { pop exit } if + (%-EOD-) eq { exit } if } loop +} def +/pdfImM { + fCol imagemask + { currentfile pdfImBuf readline + not { pop exit } if + (%-EOD-) eq { exit } if } loop +} def +/pr { 2 index 2 index 3 2 roll putinterval 4 add } def +/pdfImClip { + gsave + 0 2 4 index length 1 sub { + dup 4 index exch 2 copy + get 5 index div put + 1 add 3 index exch 2 copy + get 3 index div put + } for + pop pop rectclip +} def +/pdfImClipEnd { grestore } def +% shading operators +/colordelta { + false 0 1 3 index length 1 sub { + dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt { + pop true + } if + } for + exch pop exch pop +} def +/funcCol { func n array astore } def +/funcSH { + dup 0 eq { + true + } { + dup 6 eq { + false + } { + 4 index 4 index funcCol dup + 6 index 4 index funcCol dup + 3 1 roll colordelta 3 1 roll + 5 index 5 index funcCol dup + 3 1 roll colordelta 3 1 roll + 6 index 8 index funcCol dup + 3 1 roll colordelta 3 1 roll + colordelta or or or + } ifelse + } ifelse + { + 1 add + 4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch + 6 index 6 index 4 index 4 index 4 index funcSH + 2 index 6 index 6 index 4 index 4 index funcSH + 6 index 2 index 4 index 6 index 4 index funcSH + 5 3 roll 3 2 roll funcSH pop pop + } { + pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul + funcCol sc + dup 4 index exch mat transform m + 3 index 3 index mat transform l + 1 index 3 index mat transform l + mat transform l pop pop h f* + } ifelse +} def +/axialCol { + dup 0 lt { + pop t0 + } { + dup 1 gt { + pop t1 + } { + dt mul t0 add + } ifelse + } ifelse + func n array astore +} def +/axialSH { + dup 0 eq { + true + } { + dup 8 eq { + false + } { + 2 index axialCol 2 index axialCol colordelta + } ifelse + } ifelse + { + 1 add 3 1 roll 2 copy add 0.5 mul + dup 4 3 roll exch 4 index axialSH + exch 3 2 roll axialSH + } { + pop 2 copy add 0.5 mul + axialCol sc + exch dup dx mul x0 add exch dy mul y0 add + 3 2 roll dup dx mul x0 add exch dy mul y0 add + dx abs dy abs ge { + 2 copy yMin sub dy mul dx div add yMin m + yMax sub dy mul dx div add yMax l + 2 copy yMax sub dy mul dx div add yMax l + yMin sub dy mul dx div add yMin l + h f* + } { + exch 2 copy xMin sub dx mul dy div add xMin exch m + xMax sub dx mul dy div add xMax exch l + exch 2 copy xMax sub dx mul dy div add xMax exch l + xMin sub dx mul dy div add xMin exch l + h f* + } ifelse + } ifelse +} def +/radialCol { + dup t0 lt { + pop t0 + } { + dup t1 gt { + pop t1 + } if + } ifelse + func n array astore +} def +/radialSH { + dup 0 eq { + true + } { + dup 8 eq { + false + } { + 2 index dt mul t0 add radialCol + 2 index dt mul t0 add radialCol colordelta + } ifelse + } ifelse + { + 1 add 3 1 roll 2 copy add 0.5 mul + dup 4 3 roll exch 4 index radialSH + exch 3 2 roll radialSH + } { + pop 2 copy add 0.5 mul dt mul t0 add + radialCol sc + encl { + exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add + 0 360 arc h + dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add + 360 0 arcn h f + } { + 2 copy + dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add + a1 a2 arcn + dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add + a2 a1 arcn h + dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add + a1 a2 arc + dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add + a2 a1 arc h f + } ifelse + } ifelse +} def +end +%%EndResource +%%EndProlog +%%BeginSetup +xpdf begin +%%BeginResource: font PYRIYB+NimbusSanL-Bold +%!PS-AdobeFont-1.0: NimbusSanL-Bold 1.05 +%%CreationDate: Wed Dec 22 1999 +% Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development +% (URW)++,Copyright 1999 by (URW)++ Design & Development +% See the file COPYING (GNU General Public License) for license conditions. +% As a special exception, permission is granted to include this font +% program in a Postscript or PDF file that consists of a document that +% contains text to be displayed or printed using this font, regardless +% of the conditions or license applying to the document itself. +12 dict begin +/FontInfo 10 dict dup begin +/version (1.05) readonly def +/Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file COPYING (GNU General Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def +/Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def +/FullName (Nimbus Sans L Bold) readonly def +/FamilyName (Nimbus Sans L) readonly def +/Weight (Bold) readonly def +/ItalicAngle 0.0 def +/isFixedPitch false def +/UnderlinePosition -155 def +/UnderlineThickness 69 def +end readonly def +/FontName /PYRIYB+NimbusSanL-Bold def +/PaintType 0 def +/WMode 0 def +/FontBBox {-173 -307 1003 949} readonly def +/FontType 1 def +/FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def +/Encoding StandardEncoding def +currentdict end +currentfile eexec +d9d66f633b846a989b9974b0179fc6cc445bc2c03103c68570a7b354a4a280ae +6fbf7f9888e039ab60fcaf852eb4ce3afeb979d5ea70fde44a2ae5c8c0166c27 +bf9665eea11c7d2329c1a211dd26bb372be5822f5ea70d99eb578c7befd44cdf +045a363056e5e1cc51525ea6fc061dcebb337208eff729802376a2801424f670 +0e7e6397b28f15bc10b40012b0a3eaeb2693e8f7f627c4c9c7c6c5bff105c1e4 +1b2b9e8f09253b61177e95ea219474796072f4b363fd772dae3a9d9385cd2163 +c2c8062ef9af240bc02404e5411b401d68ee5d983d33df8a63b6da7ed443e71a +e94a32ce1db15d759113b684bdc92cb4c920e35cb677534219abcea434fba862 +2fbc8237219af7943fb467616d86b4251b350647c43c8df74289646adecf0367 +7c838d720affd234259e947e6ac432993323e8fc0b1c7609675558ae470b19fc +ba7b5ca1eff86dfe4d9ef0356f5d57d03f0b2d0f449d6165b92c78c00162b164 +648ca123b1ffa8c2bcdf125864ccc81c7d58f19374b71dcdacc3c43450bca81c +364753c7d444062a98ce202aa990c652d540b1dd09459bd4818f7675d21cd2e1 +45a0d2670c3136a6c56fed36fa640520c0a880f954cf4bea74789d14c9b7ca0a +e91f4ece020bb0d3cf1890cb79d94675c25c7ca667199195134e70ef0db9949a +416f0a0443f1191421f2323202445f5af44871eed6956d3a3de21a34e302d41b +d7eef2a4023a66862fef89ca6386a8e47ba55e6f89db590cc810feb27b68238a +205275e7573968693cfe1f8a60b5af3fc965dc05bbac5bbd6d2ef74c4f140423 +9fb13eda8457a5b26248ca5ca4d3f896b0a93b69a9045b0adc25b43df700e90b +820f28307cc6f6ff2fa4a06a8a6deb8cba4cb0d136da07593fabc1c8ba1149d9 +1c422f461a429ece40b7c90417320167d99ffa9490f9abc3101f2359bef6c6f2 +15c5585c8733ca06a9cb793d618247757063ff41c5fce1a209ea5a138777dad8 +943b73186bc17e03fb06ba658e5b3305e39078f5de984bfe093ab3d782150e2f +8545c9601bd2a531a8196e157f8f18017c0331881abf07d6c21931fcf9b81c51 +be05d2ace462ab8899e2929f0d821eddb18e9887cb7e8e3ae0beda34ccd0428a +38c4429417cebce5ef4bebf7f64eedca8769d004d2432ded2240b732481a6da7 +458cd26e4730c4aecdc1078ee3fbaf6cd275b426bbca2d0cbd42eb7b100b1c58 +f043391fc5929fca7ccb7d2188b6cec6bbdb78079e36d67129c17aef9fa72fa7 +5357dda5167e3c0ddb4f9266f3ef69c2ce9b6191ba911c1fc740549496aa76af +b86e4fddc0f31f92595f8bc0bdd3ac613b16426d722c0d27822944899572bdd7 +96d248b1adba5ec18a7f0cab096e134c36b2fcccd0b2104e43b2123936dbf7d6 +e0706616a7676da73a30a36cfe2231fba5e1fe69952a2f0ac15145c5cff411a8 +b57db37742efd6b78096d0fc69fbcdea39cb05d034f31c23b04ee90fcb4484ab +2053e8dd69a2eaf120a6bb64bd55409ab4b6a6e92d305e40974b0df80009f4d9 +8fe9e8aceddb346f8e75941c1189aeb685f4f02d20814ad6bbe3c4364bd1c64f +9c1f111790dd74d635520606a6bc978b65ccb6e8bcfd8fdbae26ea62e36d0317 +5564995f2a07393255d7c3450303f5a26b783afa95962e9438fc3b10239fc8be +7809f48340aa9a61ded2e1de62b8ece240dbd1dc8be3819ac3e9aacb6e165923 +4a264036c6017b46af959f7e574185e66a3a161eed1f99b8496a9fcfac13492d +fe3f21bf1c0c1dd432fb523701060720730e9f51b76082ef4e72d2f2ebae7a00 +ecc0e1a922d6ded5c4f0a76eef3f6e157210a3a46a4a30114f032ba029d8207a +5946b8242fc9b939559654b5c9831eab6bc2f1a8cd2779f95698f26bdfe2e421 +cccfadd7e6684364a8ce71574f2d675239e404f754237da4cb564bc7b23d7159 +5b1dd8a0b62d6bc044fe0bd2ea98458fb2188b8ab1af6438e9693ebf939c7c9e +db285c87698d8eb206cf58d89a05e74a150ae0f0f0300dc1b3bcf1f3d6b73bd4 +70e604c23d313121a4cdcfedcc834feec5b1894e5384979966f496fea5cbf1db +7f3645abc9a5e9fe04f056648f8b5882a5399fafad915207a1434b7184b48949 +43aa2c3ae059f96905277ec06fc91c4536efe679c6fa6e71167496cc0d2f297d +d07159b01a02731e578879fb16f9ffd84768207629ba38f902230a03fc844eee +f9fb458929cc8e1c988b486e9cdc3d00a84de8bf078ba4f1c73cf88a2cbb20a4 +e19a8c02d1bd767103c08b8ce14162a9cd99d167fd5cdbf53bc39fa14cab520b +2e91ef7a2952c936c9825e30e3ed350ce9ad799b27b1091a0b2f3be2208838d3 +1bcdb3aad13a1299bd93b3f1a972c04f117f05bd9e5029b6c799eb25e3e98734 +a0ca4a814d824ee4ca5383c6eb8c6c45882289cf2a52934fb7764f3556eaebba +2823e5007f83f6a3d3a6eb0f7fbc3b91320de755745ab44513deeb65d6d81c0d +838125bc1480d494b8cdecb253a230fb950df5fd1cfdf3b8b0c56aa0168b01aa +a690593f22c25e6ea9d2de70b8bb93cccde841d2b923b4a70c7cccfdc1c400e5 +d3d71cf640a201397f09e13d27faec5d041b9d904467c4c573c6fb1820a55c1a +8d0ec1f6ad502bbda597925ab353429a5bbdf3df01066e5cb3c2bf2d19e7df4c +285766c06ea868f915e051139ecfe22ac9b8466a5da38e4e2f92c01428ac9051 +4930a9e9420c49bb8dac35d2a7e9846b0c9c8db992bd5dd95fdc0c8d5bf2e7d0 +baefc4ce8fe265e57b7b6c8c91e1797db85d90eb1888170744db916ca7e353bc +4edb9fc4a1d42013ba275d3efc76259e25860a3549d104880157db843cc75fcd +5a14800ab8743fdacc4c5ff064cbf3ba6e737833850e618ad9674d0fb01918e8 +ba87eb21aab2c494c6f6ff275d1501d78a9a97d2774ef4d5fbc8032955669b04 +69e354b9984fcf4c0b890e4e8a7796d3b7b3855815f5565b13d95b139c32ee02 +4a2057235cef0b98b1c0bb84d64921dce789c2eccf58364e832cc2bef739d807 +012512769f57dfefa384083415b668285db3f6f9e5c850205dba7c66b2da0280 +f771183b302ff529a691590321a6b06dff8593a28e83a7c66008ae45b2989da0 +0455253031ed2da983e9f1ad6fbaaf85035b4715cc1525cc8d7f1a3c0ec40f9c +9eca905a50a0f4b1f5db072918617213f7863ef202c0adf926e3be1c8307b571 +2c94daf13b6a659d0f613cb319e8782a0a2781b3a61227424ff5e554eba32b55 +de5bae43483ff916e37a129c877f10f7c8c0ec1fee0fe10b3fc813d976e6e54c +8ea8aeaa179727d3335f86662bd318260fbc314986a2f97f919ccd564e001903 +eec90c13abbf988114cd330ccd7e9fde42e218a9484b565a0cd7e9c1807ada0e +e6a7f916c5a38d64dae17faae3e84822e6c63bf32148ae3dffc010920509491b +424d27fc1970abe5ac799936aac46c4a98cf4c66b3182e73df72431e53ab1f36 +460e6c6a9b2db27e38eda8972835ba64210b45dd04a778d59c5751b8478312b4 +38012796f5a8be056c8e3a9e656bfa909f7ebfb7f32fa1ae99dc291b0f002a0f +8873351e9684adbefe40d607631559c78f5688a708160ad3803db743282353bc +20098c6212dfad417f106d92527506ca0c9a8864c1eb61997dfedbbbf1d052d9 +81ea593f2a6c4a90676aec9354a6598436d1de7e15e4979344eb976a917471cf +c85e52ecf3437ebb4b6f8e9b292b7db33be0a9ead500b9353f3f367ceff8dd77 +32b67a559e56ffa3b5311fb52689c1e296c01a362a5c33bbf54b84624f2373bd +2c25e90644683376f03da577dad1fb9a9903c5ee9f531a5f9da82aadb2098e3d +15896c3c727d60ee5de0ee1cefa7e4aa3a5336ad2f1a845d16bb2ee58c50d2e8 +055e3e11272224b23c689f2e7ca0051d10ae4d4514b89483ed8d97c2a77894a5 +640d45bc86b1f66de1fd24b08034e70a443cf1c3ee17f2e7c7e11da524781c7a +75a1f69de55aad4a309e27fc8ae9b1ce1c7d52f94fc84c59f37165e35f0f721a +9d3d5c3bcead85d8150408c1387e5a348d1f0f376b3cc2d24346280af119df86 +b62f46e2ddf46f38db4aeaa456accf3f29082f73e9c5f003d77d99eea3d5156f +2043e9b573fe34694910236ef3a1ce03ffb205406f3466e028b635f3ec5173e7 +482c796060bcb0efae62308e3624c466df5b49b1dfd3445233a03cff1f58bf86 +0a2b46225d1784e91f65ecd52504c8605aaf2a5dca560db5b8ce7eb86187e6df +677c977ab4d1fec4f124324bc896ee7d669aa295897fec0b881221434fae3a4b +1a3a1f1457fca374bca91885e74543ee919b881181642cb1f6c34ff817fa8e81 +18aa5e21c994d8aa12e1fdf5d6ff6726dd3d075dcd056f046ddd86894235d7db +fc11532518f8d8695ae74dfbb769528840e8c30572ad06d6ef7b0ed471db9418 +11ea9cd32b4ba6205b5c198bd528b06092df3f50b9714fc1275aa5105a3a7422 +823d4a30d7fd19f77bb2cc4c5df23202d6a74092a710a9a855d8059031ec6ec9 +4d4fc86b37186c46a5cd183a81fc12a743c7168837953d2b5202ade986b4b00d +86e41a88fad5ba0d91c150f4a7c396a02aef1ae9b96c0cea83b3306785ab3ba5 +39c49d9f984a08a9e8c06d282af94d87606d5601296456b6a0ef4ea8c88a1fcb +96cd1b1bc0e287adfd1b9aa1a8c8a7d4a6b14ed3b04b1f0532ed5d40238ebf71 +5bd8c8b032afdccd26a940b19a1340b1e93041b2265b8534c099d14f00b82fbb +2b55d8dc64691c3e5a6dd7c0cdc1212d0c80be2f454a7d8613d0cf64ac5bcc7c +64d4166bfda12bc262de9cdfc614d7dc1bc569109bb84bf469071963e5a576db +b19f3e748799d49c30612c1d7fa918d72051db6cfba44520b5b5689c87541560 +292dd6bf1f40f6a5af97c3ff71b1fb57cb36234be973890a1a610551a724abb6 +b01bb5bd1fc5191c9f99b389b6445a99de978b0d81e4baa92e8b121a1e1b32b1 +601a34dbe6cd348e56f59a92af56caa782b3b416958a6f1bb73771f35000fb9e +a55a132f9b151bea59cafa3a1cc72f7cd60952852c53379530e0a6bd4e9545bd +f78da021349902332707106bbb5d307960ea2bd811adf35b869bb210e44a5717 +8893af229268d805262725a0904bcb5ea7c17a39552a1f26283f54ae45449943 +5270b17b9afe2e0c0729e5f10461a8ddb85efc35dc8a32bcfebfdb16a0642e5c +c69e5a25a661cfbd1f3a9386aa2433b68a356f36404f96d97fff817b42a58a62 +a5fcb5653373df412068876f541169bf642bce8458297fb6a6e936d80af2004c +e9a248e1c92fb63b3e53caadd749924c390fd9f542496cf2347a3a429cc25917 +c31fc437291fa9856a7d3b2b6a5644d82e23a14d0281ed4d8f9dd687e06f23a0 +d0e8a3dab5fe6ded172ebbcac68218092f4480c7ceabc55b059877d7e82d2846 +b4f9e82aabc56f397be2c6b67040dc71a9d1f39b1a60c33288bbae4e41457830 +f8d8c96c8dce7c01bc6efd70e021a0c2d160a61b906a3ea551b7e3fe8c1f9952 +7e9583c6b6010e0887560f1c3e19e0be82efe91f0114e726c888f580d6b514cb +a0933ccde04de0872dd0e07b1a7cede67bf9f4e73400d118a6d600e13debe6f2 +aa1d895dcc127c76ff82e579a06d8a3a323458808bad060afc953c2158d476d0 +fe0725dee6886bde038e2726886d255dec9052e9ba886a318c75b8c7a218edc5 +78783ab8dd90b738b16cfb47ef8610f428a4315c703763d6b3dda570cd0a89af +4e6c215ea5395b13a5c1f0883faa2eb2d6de918ec5fef99c21758e4b6bf72861 +b684a28787b63d3ae7f1096b1c56e4862e7f3650884d0803db03362c587e2ed7 +bf5c7f2847bebe35327f1f7fb76f3cf7e9fec9a5c057acedf6245c724a8e754b +d44e028181b75ad590b3989a7f340fd59c3b75cc4a8e28b155b5da0fbf3cc358 +375edb0992206514347924c69ab28e30c707f24199767937bd7990bc70bd5849 +5c335a752c06bdd9f0520c6d8b2f5fffce931b601151b37f1be9885e41864e31 +1ea0f33e17fb4b844425ee7de31d839ad3a8609bfc9e393079b9a7891e17b48f +2e5fed17943313afccc55826cc0144c2e7ac9784261bb40d51bbd4467103f432 +865cd4b821dd5be8fc760171b49b70141ce2042376e879013edf8180d185d988 +591f9084536cbf97816291ee77255315987422c2c2489d209d78e0a2fd3fa71c +28edfc1577db5c080e7881848222220a63605f00205c205b35d0a017013ca099 +deb71a9ffd511549c61f9ee36a63ee00b0610d1b290e073b8a067dd91bf52f9c +ab53a258ccd29d9220a659e44717f84062d39dd554294996c46e69608ca111e1 +088494c6c3c0b75cf06c2b39a08172700b35d1efd0526d78f2ca5388056b02d8 +28962b456a44b1348bc4c199c2425217cee4297873ba2018259ad02cdb518b24 +023f4ffc5fd7c2b7b022d8f61aecd1e97bf78c7d0448611c0af788af2447d5a7 +b66b496dfde8522f9dc0ff8513baf8b19b51256da57159b87df032545708fad8 +0b15a0764cb951263a5008d1a61a1b69f171a5d7449f1c1d2cba92e9ae340e13 +ee455edc278caf37e5733a34a5c1b2206833d4ec3c41db8e8c760624c6031550 +7124f71f9d18399c3df46c5023a753a08ecc991b61acb6ad781cd9c258af17ae +33a2f8c5a86b5dae8ae1061893bdbca4e76473fb073cc9c5c3389e525553a879 +16c23e3fb51d65f3cc3bf3e87f97a02eedfbb928cd37a770e7e7b5413cbfb0c1 +3281f30eac6290a85ffe8ebf68a7fe77b4a68982d010a2284051861a35230401 +234b3278bd810686b1ee0c63104adfeaeb7ec79e0a4fae757018fc05fb12db3d +81e0400f7760b46fa0ac5f9e52583f2af265843cbb2ec1d1392ee68c7410c9f5 +87351a0f3247036a01080242732f5453b54a88de2d7515b5b570d94bd2b97f2a +d3894658627178dc90029c8e7131855b422c912c9fb6141439042b1df9f3739f +063d8d054258cb1c9cc893aed8097aa06fbb7e923b3756409c61b7cff54c2c87 +51cc2f11c2b7bc0be6868584f64bbbc22a1e0ed325b6c2064cc0ef2fa8acfde8 +6fa40b544ab6d2c360b6786c29b69e80d20566e1e25cbb075f9a687b428f4ed2 +10c028936c8f5e7308d2a3984290d96e5c8df5c959a563b4be5b7ce15c24d5d2 +fd6dfeee85e0e9595f52ef13aa08f52db73e858a3932e9e913f5ba674289523d +0eaaefd670f3ba4fb5a0295816fcfc042f7141c64ce577b103558455dbd0852b +730b2acb37b3115ca4ff017602f9428879e96a621a760e7961c006801c5908c5 +f291981da07820a11aaafc3f4ae613c7cb4424b0e1b797094ddd88829d5d4eff +d8613b50b2df38eef34ad0b05a9f13dac5b3c31d44c06bcc58d737f7d239ebe3 +eee1a4f981b35641482b536ee869389888c2eb28b56a5d0864a7f451f7d362e3 +d56ef1ec01fc6eb85c40c78d791b16aedf904c7d75890bf99bfef9783fdff55d +ee19cdf9e0217133b8af29fd87ad09382b8f64a6690f4ece0ff8116d44bac576 +be9a602084c63bd4dbf56354dfe69300cfcbbb99ae3c8226d02b1bef022851fd +896d83549c594e8fa709d23465207626632319b253dbb32a74155939d9fa0631 +8aaeaf9c26c04a55e1fe935fc5d21f1d798107a625fc25cb90d2ca72c31b3eb2 +c2aef7615eeb8c7f0e7f767aa672ffc236271f98c01bf41acd72da9d108792e4 +66ed133eced633ba0fe7503aaf68ebb226ed6d0e18561eb03c9b9763680f9295 +7709b653d3940ddc7703da6c3fcd893ace04627cc6bd92b65b80cfba4d0a50c6 +d48c5239a76bdaa4319fa9f0382e5ff6bb51c5a390678ef4bcb6a56a13828f32 +fa51ba7bd7d6a11405b0873d4e96b93fc693f21bada72f9f257d89630711cca0 +c3a78e2a0e5735617e77a7a77881b37d77877df4eff9da9d465239f1f2dfb5dc +9351a5dd8216e98c15cf443250b85be6a463526d8aaed42fabc1cdc095ef9e42 +8f956a2abed2cb7fa127f49bd2b5accf7ed80cef4fe96fea42c0ed4991bbb734 +596379a991607836c6ea74bbc359ecf2eb52d015910b847534a519cfc32d5216 +9510940a9ded08ed2a83fe52ee1275b05d19666994836add094ad38cc0a3e081 +bed96e0cec2d8e17d51bbe3a63a34884da909733ab092c9ce8d8e411ca3b2831 +a022e5a3fd1abccb902647e484833b8181d1b9edcb5448098e13b5ad289c9aa5 +8e4726f0c2df0ceb089401871c26c7ddfc5d5cbeeae249871ac5604056b69e96 +3c1bf9b8ce006b701c9523b5b9b145be6f6c7b9e513973df94cc2d37694850ec +e54c80d2ce79309ce51515d2ba0d44855014654d1a999cad1a5e9dd53a34e44c +9cb32ea91176d5c3294e3064016e8554b9b6c6d2e6c03b4e655bf2a7957d95ff +01cae1dc020e577abe5775f656caf198f1073b7bfe06ea127ba3b1edf4784917 +51d41bea93204e6ad3aada6f2415a8bcd5c987b6629874253852ca417bf6a259 +27b0e7f34e0ed0f9dfbe1be2c64d805c2edf0bd62c77be4224613f2e788c56eb +0dccd0a467bb30d529610944338ea0b832d3ecedd85ad4da22ea2b47e799a1a1 +1cd56274f7dcd9a66a32d8509f3d0eb4c4a160a723a9e71f504da5549eab101c +70c73efbf1ee0805c0f8e394f94f3e6623eb2fb5896563404fe4a7f0d47e802f +698295ca19ad813ae552e8dce8d6f73a7e676308a07f230edb99902132ca5b6e +0e95558764ff3f6f854cc29b338a5e1bc14c9468b5528f5b5dc8bcce69bcd0b8 +e295f3ff96dff56779de49a1157c7d1fe777e3a94cf95e3c707d6c1fb41b279e +9abf7b4077fe611a1669c689c1d9a81c933e8075af7b5b440c24318b26a1206e +92266a64a0577abd20659d83fbc433621c7a01f74c6863d43b02651ea96fd0a1 +e1a553a05978a4fbff7d591254a5e3a2642c0eec9b4a0988e4aae449964323b7 +9bade117a3ce68969f62944d027dd0bf7ff0f73b0283c8843e9a3001bd096baa +f61833401353462890af71b05b84b2e8a8a3bce954febceeaf5c10ec704a68ff +24364e70e1749dbc2b1299887309e014f82b805c37aecf05fd413220403e48c3 +3cb49d0c265ec2511211833f8c475d7bdc3959c3378597773f02b5d41fbded8f +eb58a06037a79c3424e56d48a1cf82672026b3122e379a0012322a325bef16b1 +f95958c7b22cce273e8aaa1e8e40978abf5626000a2563577e164b89e24e4d06 +483f503454a37fac420c7945ad53a6c102f1713208c99ab6ccb0bb3e50a70b6a +38b38bce6444a7951cd669008776a1720790b0b6722be634f90120f42e3b5cdf +9007d9b8fcfeb1c2042367c5f7445e69bbc19cbea5b305b1bca2f6398211ca07 +96d5bd57d23639b1a7d7a5f50b609dff3c7622e922714dffc7dbd6b820460c67 +e8ea1c017e57fd172fa3cac1678df44f20e718542342847e33698d382ec37f60 +21b7d901ca384beec87374854e4a1372610ef8fe5c69a141b860b5a9c51af0be +8e33cd57dc6f1d2fe672e72fd0f370cef74a02fef6a0e6303b7445efa72758ff +b98b3549de42d525c166c92b652ef1e71c92b0ed3c1ba2418dd13a2d301ea894 +7b3d54d469676944a58f147851fcd8500747899ec3bd885f25e1631a3dedd10b +4eeb87c74ac62e316d2ebd3aa0ce027e91b39450ea3e30cb01baafab02ed0567 +cd83c482d6e92d7835fe387cd6c050d8f4f2f64b95fc44e1101d89e112b971e6 +61d975a98183617bc942f425b837e4e868136b17ecde0e1380ce8a52b95881da +2bf547a37f38c603e43ae53f32b5a347e4b43c0bb86d8aaf447bb5f4c983616e +be1a48c7dc636242f20e876baef484506e2888f0913d8b76b1086b60409a2a03 +e82ac9970d6c120a6621bd68250d88e95c01abb861af559132e6d9b8f5abbb66 +4152d65779019e678cc86909e31bee3d13a16d764998d94ae5df24f02fc8153d +72b41953605ca86a99bc3dd05ca620e7a28d51beddff28596ec8eb878c09c041 +74baef8d2fc52b3b0c55e95b7482dde018c706a3fb83b945d3df90cffeb1380b +09c4576040668f537083afc50a1e26d28c4d58bad52b17964871210ecb2f148c +daa07db5d3780ecd1635cc5d5dc23867a13e152872c78e20b95f11a4afb8508e +813f4c580f80546b2d5dcda546a6fa4b28a906511be9ae09f3adf926fa237825 +ac9f250d275294c5f21466af681e4e61ea6915d623c7d48837d0bbfd7f893a2c +d347cd7514ace7badbbff683aa9c6eef46d1c830afac64a9f64b95a6fba4bc48 +a33135b70cf12c2eb19c2af6a45b9be09619e4b89f47ef4b9d3d234466822c1f +3ce559a85fc52ac8aa947f981fb5fe7605a373f5484d4929932590eb79a504e5 +ec35c263a30ab3e50ca900c2488baf5f1c1c23cd42d6401bfd7b09172be16f1a +df93f41ab0b4465a4f1e2ab556078dbe76729d69434690fec8f59894a77d3b8b +bbd3a87346b6706fb127da2f6b458208befdd75d68207bc88ca1f2e36b65d170 +922071549c382790beee82ba0dfde07d7d5f58ebd02b19feeaeb6aaad59792cf +461d467665cb3a0cda48058fb5181273c8632075e2f11f8de7181373a9b73901 +a816cfde3e2029a04b1139eb306132f989f4a2e85cbebfdc52bda2e88bd8d1df +3f331602fe0fc1802abcb35b8e6dbe5bff9740a4af24077a725d17660fee662b +209db93c54baffeffbce92a9e2e696d5f56f5d7c81b29cd00a59ccaa389183b0 +ae2507f0ec1a9e224097be40e0db4c8099a96a858425c6a680365704f39a05cd +4887bf94f49e4f8efacdab96877a18272900237356ce576042dcb16e5851e1b9 +4fa0ef754cc9d84e91486d771871151a5983f158b7e05cecad73ba064c258397 +cd00cd6b8cecbb898c5d4609531d387ebf15a5c38b80efe629bedc9314736e90 +d4117c763f18dda7974d519ef1bef9824934159d0fe29edaea2173c69c56967e +ff9c37eea1e8b38eaed338699c6a3763c6353dfb2584f6da9923ab74b18cbe05 +278a5ed2936b193c75c986e8bfdcc63904a25ecb4a04e998ef8789e9c3ec618f +1fefe74fe5a23d368b563579e318bbe956f29d191748ee26bc883bec714e1f8c +88c98dc012b95385e894919f1de5afc62c9c513014d6105baf24ecaf88275909 +4d13079cccc3f103d6751b4f79b785577686abc760a6c56bf34db0f2ac3d0b82 +ee63f9e750c7790d7a3a1626d66e70d26617459a8103e08b6f14af71c017d3c4 +e5b4450986908ec345af9bfc4d650cf35f337026ae940513a9b3de95df3e16c0 +588a59a7f2f1d5e2a418410b5e2fcb4692998921834fa44f30f2117228005347 +9a3a82341434ea71f82d87e1bbcaed725ede9f6001ae4c8651da9afa36b3e6ef +07a8b311afe1bda98e3143c8e2417fc188bfd48627d9b6aae94f510054dab99c +12fa0d5d73069f48c86391d27e37265c91ab1c06ce4d4bf0af63db65e16e783f +7dc649a88967284c9d9fe861add619a3ffde0a31a5719bb456d1ab8010ccc8ec +89615ae875db7a321398ff923c088a6ab51ffe2fd21d3541474d79f07e536709 +46d1a8c65e8dd6ba6f19410b76ee7b5468462b9aadd9f8ddb68c32b08b0df0c4 +f3b909fe714f453bb1ebe914752c5eb5f68377a82e5d5b90abc19402bd589b43 +05f905efc12878733902c54391c267fd81aecb8cd692aaaac3218d34a4c1612a +5aa9844d171e6ebf94f4d8900236e8e27c5bd7460fa1e195c1077da5918afdc3 +90abc6db247885a42158c3cd36ee89d82cbf2471c6daf51120ba3f6937d537e9 +370af7ce73f3b50b742ade8264df9288120dd74094a064909c00764e9347d2f9 +a3f92bb53d8263053a3082809e04e9bc7c9f3b8a7c97c5cc1f9f886115676a18 +cc04c656aa33535e5893b8db3ba5d627f8810048b2a7a28e6d1374afd6af6980 +ace96ee05d890339773f6dbdc92f2f840b50770213bf6188dcdd1bad8d527e71 +9692ab1dfc47e7673c175a1b9841d56e2e0b30e8685b01a68ce561bfc6463a6a +d34557d05276f7befbc1fec7bd56a18bf0292cd25eae57450b3b590e60181258 +4b35e2004e7b1e27f3b26d7108a03c94dea662b7342e38f8300adbd92261809e +bee8ec971a7f2f59487c89357580f9aa8145a1825573f037a0ade5b98be24a86 +530435bcb82e17054f67fa873946c732c8840b9eaa9130bbd360ef27fe72ecfb +b421627d2d52578373ca7ef9fc6f850f4b7f22e6501378de0a9dd56f5f5815f2 +7ea81d8ee3a4f7b98e59ea1cb3159f5816fa703b18f03c5b0aafbbdcc979df41 +7258af2ed57f7da62871c0efdab55fafcbda5fbef92ce65aa0ff37b92ce6c953 +a9d92a8c6e02b8a1f9a9f0c66461c5a62097e12e9f656c87ae283e6f3b63ed10 +a6a723316b9beb28b62a55d372b9a22bdc669b51533c5690e593f2a409619b2a +d73655a40a33e83c65e66f18a40c8e77b048674fad760b9a7d86621181d498b5 +59707d36440af3e015851ce43cfad5d1d96e9274ad714ef46cac1a02974245a8 +d25d894caa256c320af31f954bf574dd95bf32e5841333063d32709b93b009fe +e680d5b2bb5f95275d118a085e98506d0272fd1b8220a2343979bb1467f9006a +1f17b2ae2941413683c3cbbaa1c0a3aa55193d46a2573f2cbb8b7adc7e74d0d0 +135dfa18405bfaeda37f3d4787a965192ca64e4462a0c701de5c361088b3319e +7b5d19a14337068661abc7c36002ff4dbe90e7b655b8e06bd70e283cad1c5d88 +de63628c638083b303ee6b038836893707f6e1121ef56292a75bd9301d987ae1 +ada2acdf61ef74f2b3dc4f87c6374254f865f6e8f6c0933c54265e9a5cc7ef62 +432baad5fa08dd485c3b1d0e75ffd5180e99df967b85861d9710ff294e93cfc3 +7ba6c006164690c10339aae9c1113cb48687672e8a2dd88ea9af6d0cae13ac05 +9b61095b999c87bc3c80748fe6722bb76818b2339223dc051a4938f435b92629 +4395dc3d2b9b3a0e370363535d960735fca855ffcba0aefe767732f7991c5977 +46fb683b9a0c11fcd6a3eb370bb56d6611e7c20dfa1d9fdb3b90ef31bf0a6aaa +d8bee6d7ceb116373e74f072d2c61b646f0da308955829be7578d1909b03c4d9 +307709be75ab3d72d0864af89bb713da0938f038ffb3459b793d06bb37d6efd5 +5d4e755f3403c32c28201fa5f979f51f3a9d4c521480e58ccf06cc60a056a5b1 +c48f27872ef36da126d580ec0520ee9d252cd27c207b6a12b27b1861ae0debbc +21e549144604b277ac8e7b4caaf5f7220d67fa9a985001488c128e1a4c9ebaa9 +de54a13cd4baedcd50653b73a6514ac47bb5411d8094854212c9219caa4e4c7c +447324ab35edc9ceeeef505fb71a2348c3be2082fba20b8ab572bf9276e84e2b +0b328828eb0c636750dc104e741c5df9caf3808a061484a23dd0aafcf5bfd1a7 +319c50d09cb55d73c87d3ab59e74e29de58723ea32cb96a0b497e2e530b54b9a +355a27d988ef4387d8260863e8beecbcc27e4b051961aeffcb8475d7da9bdec6 +42d6a55f06ae9af2450545811fc6486c6be309955c53121db95ac255263e93ef +3adb9e07e56b1133c491b550a511204ed55c8dd911e2fc0669c90fd904267f0e +79d56ddeb72895002a7f795349da2137b6eedcc300c1206dbdfdc3a52f71c86b +8141b63c3d33957c66a9e074bfa703ba2344d802028d787878f9fea87fa9ccdf +f4ed49f4daa6e6839fd64c91e60f99b8e10652bffdac46169c413a36e8105d8d +9343496c1a9b5bc33cb5e573166d4097fb4f3f5517b38f9298de2ac6d51121e2 +0eb9f07ecaf4d70c56a5280948c67e506e47fe9d3465c7cd156e5768b70f694c +57c11c80e7a4d1417c25690197d058d02216a81d7104ef27003dadb3ed10c742 +4b03f54aeba13d17f681fee3a8797754348b134d89572a2083225178a9db4466 +ababce914cf2777d3ae7effca5f4973eb2945672c0218c420173d8d2fdb8d60a +a1b40773a74f904955e7991bc973d12eb5bffc4dd0032b1a1397cb5ba3b431cf +92b76b1f7bf1f9eec8389e525553a8791692a9a9eb495822684df34bc5209953 +1b38bc4875beb62a391a8e0fdef5b0ad35190c44c782e374e3ca17b9f5e2f5b7 +c8566acd0df90ef22b50100f501a80c17a32ef4eb28da320c20ff407fa116404 +aef81d37037013406eb51aa024605e01257fd78c625bd120d4bbbed7bfd4f95f +a3c3088a0fb237d44fdf4aa0bff28254063416918e276e7b68c545def20f896e +509cdc2c31b65668200637bbfa587b547b77f81bad98ff0b70805d9c6fd17abd +f107e1d39d98d9ba1a7bcdf98ed607a3770508ada6bc25fcb63f5bb642a4e028 +bed525fcd1a9dbf1e1520c5164a53c0ddb1b3974366b8feaaf766f02a4085f57 +948854365bad4f6cf18fc871256f9ba3c60a79f3d08617f6a483fb6b50ef2dd5 +0755b2b824dad8935247fcff268b7cd152cab7e7a876b381491589f3d4c65c50 +3353d07c94786db7346cb89cf5350b585cf890fde7a891e7646e5fb912b71db0 +10e73de1100848dd1bd100d0daf43c4bef2b43440513be6281ea0359ae0be4ff +a861b07d06a311b97028daf2fcfb14eb8e8f713bca854befa5a46172dbc0dbd4 +448a8c20ce02a71d33457d4c52704733b90b005b03fe89fa90b73e747f273118 +4bc20d38fca2e51eb0d5bd5454a23e0fa6616a330d61e5a487aa516daa6ca1d7 +b8cfc260bedbfcdfd3d3d0c115359c73a67c1921df252899298bc9015a6c96dd +e70e6dee29597cc7c111a565a6877ec4efe425783478bd79ae97b5d1bac5d10f +5cf77c6c026966155264c7ff1dd30028f21bfe0b7948edb1710f30ee09747272 +81aa09b166177f5e507ce6a09a6368505a1d7b58d5aa2d63dac1b073442be702 +9b2ba6a5a6073bb8aa8c6f741e1b135a73675ef22ea810435f4b1a899d180e2e +be37106d4db6ac2c01d2d962117c4b6a62b1eafdd923d89cc830c00f4cacf98a +3e02d0863389d2dd73db37d8af50cee306da798989047e47c165d47926ec533d +5e1f5fd0d039ff2fb3e01c61509b3ddc62754cc30b7946c4a705d56f16730b99 +8a40275da604170fe8da1f8d8c5e4a393c701aa708f916fb66939adf2546097f +2ad583fd795ad2fd059e9450c6df7be3a22f36c359ddcd8de44e1106b1edeed8 +65e317c06382f6473e3d15fd731ee92b39d3a3dc42c9107ca046febf2ed214f8 +014ea9efdd078b94dfe6a53e5357dcb99a937583a89b90105349829575a5f474 +ce7519336dedef19083bf6d9312f19c78f09085db567895a10edb5a6cfbf3532 +5cec8e3db206815af7bd78c8dcde6a910eb9232eea4b9e68684be8083f335761 +916fc1f64c649fefda1b3fd499e851cdfa7ad22acd535a04986f35b62c2adf2e +74519f043c7c1864c6b3a9d5126fd87c105f123711b560531f46628f872b085d +ad00961bf770b386b416ca2c5a738ba54f7a7a2e234dd97b2918d007c135aabe +9ba541eaa0d19c216b5a6f245cd33a1666e26bcd5ece41bbd5bfb3aea9511bd7 +da27388e8b62f49f0b4db0b190c5dbb7bfdb1fec5a786bf43783cbecf09d8056 +15ce4179710883f8fe7bf4fde22e8a7b46273172e9a4751b4fdf6ec099e8d685 +32a4c9c4708902285df499de4a6b0e143d72c13b747461bda19f5e3a34f1dc8a +96dd2194b6083c75715f9f5261947ef0eb21c496effe37f407f45c5f66aadb99 +cf42aea5fab6694a64cd89daecab44bcc134280a3614f02c432b98054ff8be39 +7cb464de7b1ee896f798a90377bdd07afbc9394ba931c3fe490d11fc60506a3e +476d86bff5d3d850683942744d651355cb081b39d8d2147409a4bbf3ec699da2 +d79303ca40261fa3b6ab5b17ff331eb3d9f01896590905a2c7841d1f4b1f85a0 +b4afeb0183a61e21958ab3f541d321ac6bc81dafc5dc633cf1f4231b0e4dbc9e +bd3c +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +/F116_0 /PYRIYB+NimbusSanL-Bold 1 1 +[ /.notdef/.notdef/fi/fl/.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/hyphen/period/slash + /zero/one/two/three/four/five/six/seven + /eight/nine/colon/semicolon/less/equal/greater/question + /at/A/B/C/D/E/F/G + /H/I/J/K/L/M/N/O + /P/Q/R/S/T/U/V/W + /X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore + /quoteleft/a/b/c/d/e/f/g + /h/i/j/k/l/m/n/o + /p/q/r/s/t/u/v/w + /x/y/z/braceleft/bar/braceright/asciitilde/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/bullet/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/exclamdown/cent/sterling/fraction/yen/florin/section + /currency/copyright/quotedblleft/guillemotleft/guilsinglleft/guilsinglright/fi/fl + /.notdef/endash/dagger/daggerdbl/periodcentered/.notdef/paragraph/bullet + /quotesinglbase/quotedblbase/quotedblright/guillemotright/ellipsis/perthousand/.notdef/questiondown + /.notdef/grave/acute/circumflex/tilde/macron/breve/dotaccent + /dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut/ogonek/caron + /emdash/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/AE/.notdef/ordfeminine/.notdef/.notdef/.notdef/.notdef + /Lslash/Oslash/OE/ordmasculine/.notdef/.notdef/.notdef/.notdef + /.notdef/ae/.notdef/.notdef/.notdef/dotlessi/.notdef/.notdef + /lslash/oslash/oe/germandbls/.notdef/.notdef/.notdef/.notdef] +pdfMakeFont +%%BeginResource: font XDVKOU+NimbusRomNo9L-Regu +%!PS-AdobeFont-1.0: NimbusRomNo9L-Regu 1.05 +%%CreationDate: Wed Dec 22 1999 +% Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development +% (URW)++,Copyright 1999 by (URW)++ Design & Development +% See the file COPYING (GNU General Public License) for license conditions. +% As a special exception, permission is granted to include this font +% program in a Postscript or PDF file that consists of a document that +% contains text to be displayed or printed using this font, regardless +% of the conditions or license applying to the document itself. +12 dict begin +/FontInfo 10 dict dup begin +/version (1.05) readonly def +/Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file COPYING (GNU General Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def +/Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def +/FullName (Nimbus Roman No9 L Regular) readonly def +/FamilyName (Nimbus Roman No9 L) readonly def +/Weight (Regular) readonly def +/ItalicAngle 0.0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /XDVKOU+NimbusRomNo9L-Regu def +/PaintType 0 def +/WMode 0 def +/FontBBox {-168 -281 1000 924} readonly def +/FontType 1 def +/FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def +/Encoding StandardEncoding def +currentdict end +currentfile eexec +d9d66f633b846a989b9974b0179fc6cc445bc2c03103c68570a7b354a4a280ae +6fbf7f9888e039ab60fcaf852eb4ce3afeb979d5ea70fde44a2ae5c8c0166c27 +bf9665eea11c7d2329c1a211dd26bb372be5822f5ea70d99eb578c7befd44cdf +045a363056e5e1cc51525ea6fc061dcebb337208eff729802376a2801424f670 +0e7e6397b28f15bc10b40012b0a3eaeb2693e8f7f627c4c9c7c6c5bff105c1e4 +1b2b9e8f09253b61177e95ea219474796072f4b363fe05fa763773acd59cb757 +ae119355777a1bfbd6751f24f58ee0133199ed331e67ff4101e33040d6628f4b +77ee87860b8e32a4923e2c1fca43cf544a5eb1bcd649ebd836daecb23e3a986b +9bd8398e690be6b48bd6479823a435defe1156284048c4d49b5a869164485630 +3810995159568b3dcf3734b11a3f25453e0e8b40b080c9aa94e140a58d5ebb74 +7d1e083dbe00ad5498c3b19deb502dc63d69032d8d31e6778af4713c30404059 +6a862aeb8cf607fa52a9348e3fe23c1a0296ddb41642aacd6aacd2c6d905073f +98b58ebd11af774beee32533fa19871148dd6db41f3a8c499f25f37cf3955eb7 +bf5bbdbe984535820dd33f60cfe7c2b44ba6e10879b3c65948beed00a84b093e +8e4ea07e34955aebfd0ed462afc5b4b42c5b8be85ce0ab1b9cba42969bbf8a36 +e2943b1d9b20f6ef3416e226763f55a196ca0d86788a6b0ed38ec5b0124ac901 +f55f2f67306ce94aae5809b2203bbb5a8b185b66b2f8a18a456d028f62d8e17f +4cfccddc0743fb02567f0294ab77dca0b9708b262570e3097c76769bd590a09f +ad1523e3bd1ed5fd8475c0b57b95011759d1a55c70b39970dccf76069cdb9690 +68a4626bc863ae1d579604011354cd3ebd51b54a1ba9789f7678546bdef64c9c +51cb6f654c25578c3b4b7c2bbfad476423ab58c57f48b2a54c9d44ad356d106d +8186a85f8578b1735610f6767883701431f5a2503341005020b639f45810440f +f341eda457f8ad2213058a3369016452185f849ee25140060264a04eda7e04b8 +afedf6924f2da0adf944e4ee346e33735f6e78691634e18c4179f28fdb673ec1 +6a2b093eec51a4611030ffe1d4c1a1456e3ead051b01c94e5d9ee94c855cf31b +b8e544e687f2e2a99fd8865ad44eb929430ed39ac0985e4a5c382e16aa2d6ec3 +3b396fe9643124dc587fde09d3d867e9efde49c283dd44fd33b04ba4eacded81 +b3e7d3f7c09d565a6412ac30fc8e81be8821a9031850579b02cefe615c8e7c22 +61a77e73f5382e58ae160043a5defca7470ea62b90e0260faaf5a97a7254b091 +2a187ace29ac6adfa49c7d6f35cdab93ad32553137363ba2f0dcbafd40fa8ffa +7747eb9bb51dcd01291bc073331531dbdcea7db24c9a0302c9896a1c2cd0191a +d88b33d0b0352b356c93987ed9613720cf2be3b164c6a4a3360bf41c9f178831 +62fb73ae514d9c57675572e8c1f93313fbd1b05302f57bbebaa2e76feefea0b8 +9c83d511164b53b481bc920f40d59d152bb1f5674344801f0dc7e71ca5de4e24 +cc79207c66d0b692fe7c1c258be75488f2a0bfd5c81ec5bd0585986d0c5d4575 +82e9ce40b7477b87facaa826ebf147bddb1dc60788dec671c199d18dcd2ca48a +4653963ca85e8944074c501c8143685306d4f133037fea449b0d1cb4ab3bce89 +04a311f9410984d754a3509f51d89a4ef73ffa7f9f3bccd80daa0a34e0e10912 +b7897005607925758237d0bd3b92ac9669b1a1dcf19ff0864f84a993bf7cf266 +1d1b3981fbc5e4fdc3a5b70bd79bce35c6fcfc0a5aca0006433bc0c120073e96 +dd4ae86f022260fcfe119fd4655c3bf00be48c470b0d86e721afca140fe6bf31 +836d578fdae49d71676c77ebe2d09016e1ab71d7c681c8c0565cff9b73d79920 +1ee2def2f16d65647262f96082dd5c44fa3993d3bd1d10c217ea56b73b38428c +767dd9b71530c5f01be2d2611cf9644c28f3f52fd814e463358d70de7bc6bafe +cd377b48633d0107b05ad2472ad6652a1ad30c39adce69ebde3aadb1c5fcdaa6 +96fa9b3c3e63a7c4dac907e3b5cb7a3713505c5ad53c8dd8710acdb3786a919f +b356cc2695cb227540a5f235ae1ba3c6f3547ff24606651e5887fe889cd8913d +de9f3b04019ce0d724c1f6521925bd4fd8154f6f4d640ff94a0b0b027e483f9a +bd1188942cdff486f1a234fdf8adeb552b7e7e10aa577ed3d559010aea480709 +fa1f644fe5b7ca3479599a7e708dcd3ba33a6b2d640f8e39492565965e3b7c74 +bc8c48f3ea9a6048e86197146abc446788a3c83782f797cd278ee1b740627726 +3e1703246bc561faa060de93d224ed3eb1bf548892bc64806c4e9186a2b276d0 +fed43a3021b5a54530de20db8168d44e1947cce7fa1dc8f7927a591d6798c5a2 +b51185c3e74bb6ac782af6f089a4204b6379298617c8f67e38900ac231610ab9 +79400dfaf270c91679c516d2062b949a8d91bd5c8c1a0af1e7401489ad6e8101 +b9103cb5f50dc53ddcf2b32afa218289e9f1b5e29e5c5a2a0f67238558343524 +78cb11a68006685e13f8b9ae54732c180b4949f09839b935b1f7a944f1d4bd84 +a5074b583202cc4aeccb4b8e18096e258bff705476440b9864e746f18703321e +5d5e2f8ca5e2d07b195779f6a0d6a731116f1a26a484fb0d9931dfaafef53b41 +e56e00f32e3952261c0205afbb6f2afaffee7cc1fd39b2e108841f39dc8df97c +0f776adaf41423b47c551d48add01398dad167f4590dccc3106a5a4386499462 +78831779383abaae807b3b03b5dbd4b973219f2d1d19369889dd72e446ec95e1 +37017fbf85f4064f81f27cdb4f9117be248a8d5a65225edca22e833df98da456 +98a428edafa84085c323399562865aaa8286eb5dc63dad6839b597386e0558d2 +11bc45d66e0e60a86c968519b8b305d5ba7ebc2fad7cb5004559544330668c1a +7b77dc9762baafb4190dcc1aae670824824e00f023c574e1c017e33650e24fb5 +d4ad701ab8d93f0fd91867bd21299867f966e93cd621ec0332fa04a2a691ae0b +179d1dd6364166f94716b69027d8d0bcfc6622a086dbe92198e5c625699d0bbf +a9dee06d20554b4d82584108208ca24d7509c4ea30e71ec44f014f8cd97b8eeb +f1322fd5b116009584559a3b0574e24329aef35d2964756d50ee8a0fdae1be91 +19e20fb52c3437ef677f37b549851cc9bb60c04cbee8d80b6f1442cd8676b0e7 +bc4b2c4883d212135bcde4fc15eff6d20269a6f4463b12c214d99e68f113c5c6 +7c2d25384d8e7b9eb31d79e2c4607421389827e2fac887dbf08a43a5ddbc5797 +797a1fd10143a4e97ad79bd0bd7f3f1205130061a6581a4d30183e71fe80d570 +42083823e3ecdb6d6352b6bd54413a9b6bbaab94a76d12ad93ff99f9433e3ec6 +bab36ccf8168cfb64c4b15987379cc129f6c7c1761df5d7dc46e0996e5588298 +b329b023056dd59f4befb792c4e43fa095d63df49b6e25f821b999b56ae05919 +16346777c2579ecd17b5a87f1505f4686ba2aad3045cb414cc65cde98b92c76f +20a9be4a42b77e077b9c00eaa3914709c3fc1a16787e639a2c7fd9a30d9e8ffa +1d5a900dc9cfd5c319ec34570cb758bae3a342d936a30915dbd5160922aaf241 +74c014836eb17224a681c1d7cae7fe0d0627bd5af08286c59e2640cadf9e33db +6636197d955a073214899ae76156146452d063a460fdc5a82df0eafe9ad88a24 +905f7db7dc8097c0d9b0f9319aea0aaf7aaed4a85c93979445e8d1e5a9bdd3b5 +4d74320a1b797ace38376db0b2f6566432b8a90ca4fc7842b90623603f7aa2e5 +a2f0298157822d42f334b8f9f80fb04c36bfde0eb1187c1b15ad0666031c5c09 +62bab12d2476f696939130c5b59fe70b61320e4510be29e04f13236cbcc78a8f +93bd11c24fcc4b45405a13a65ea47c13be1f82075662c316b4de144f89beb6aa +cfb84f0d288c67d488faed8dbfff92be9a24bed443e9db3f1deab63ae94eecef +43ae1d68455826cb3a48c456d7e9a849a9822c77503e5b9f029fe70168831ea5 +2ec0c2c4471627fb5f2d03bdf8726bcce14a8a162bd9bb26137253ba8b581941 +e759a7ca7917d4244da33f45df6684d3dc361bda88b4a0a02e5e55a1efb0d851 +b4e418bc6a0e213172a08b7596b1fd93aaf111f2778006da546ca1db88d5db98 +4ae9658c1d31adf6ecd3180c19791c85a0ddd1547fdb800479a6dfea56ff1e11 +9b3c1dc388c0f372a44712954373ab66cc420b2cc80a92c2fa011d91c441bab2 +f54dbbea462e186e0617b2f3921f1aa33dcd2c1c5eccbcc37dc50bc29d0ffb03 +e45372aefe3b44d8584035f3bf5ad94459a65fa170516c271b722a2f08bd241b +7816ae887856fef57292179987b26bbff4cf1da6cd2bb092df2f6ae3064d61b9 +e7bed1d13e534b991610a2c067a1c107ec6b0a8dfa6f6c4c2539c8747ad33057 +f5a9d083a689e34c8ca2957263786c1f78cff0347ba42730544865be79b7c461 +7ebf003f8cec1e4b6af75689fa6f6dcc317c7f6975df451eada5382583a1d1c6 +510ca60fd85e55c6e16ed39a86dea378d6f41c00beed05ff2f9f1a2219e6838c +819e9576e4ef216802c4a913de00062e70df8d83754166a27708337ec6b8a031 +04a426a1c31371eaf807c8d638d16e6515ef0693651bc2dfc870a1a7e340d504 +be0feabf24b5bc879e75801d188856be2225a82eae90a792fb4e0d66ca0c4a64 +a5064e1c9c2fbe84b5d6578c2af56fef340a49911a0a346813fd5da9e694726e +a0dea4f42008ef28f8d6ea9f974327fe71889fe76945b30fa99c4c8c7bd3c40c +ccaa4f19c0e0e0c4cc88611829bdca334cd69463228c2f83e1467125b7eb3c9e +812c62fdaf831871ea0af75efe4c81224eff156fb21bf1a27123d020beb9e1a4 +d72626ddf4dfd474b98694e87ef0691b71a8aa4d346d03eb56e0715d8f6148fc +424cc472407f00bbff0cb49d05b0b5923821fccfc27869a85fedae1ecd60b31b +1c8e8810879809ec069ca308454613df0f673b5516598fb5b822833fe3e0c0fd +1b3684f7a66ff0f9132de78d198fb6dd459c42208ddd13ecf433d4c9901b0aaf +4c8ca7685711deb49d9a2cfa4209a0d058aa8490963164652bbd3cf858e53975 +0af2b20db08bad60ac71809271597b65071e7946d81c02d8e8eac13adf5d5249 +ac0b42f5c602e16b6199dde3666d58abec0c1485ba6ba71086c36481229891a6 +89bd1c4d67e91e5ad6d75ae80420cac489198821227c1ac94954cd0c94098773 +ef4313cd8aa49aacd7d34bec814e77f9aa794e57bd14f678a5f3d9311036fcf3 +d39a94b0b23b982214469f645fdb728751627c28359d6613978a340b2b2ba9b6 +a0304f87a77389a09a36a660cc983072063683920005b2434951a9c8ff375cb8 +17ce6c78b6991ab5a5efd7dd4e8b3171133da1cb44af59bd84724150d09f13b4 +39a1046904d4d3ec3d2a90cf5275a9527f8c3c62a0ae24a60e9e7d1765eabd75 +cdfc9a14c4043fd34ea73afa2e08cec40386f048879987699fb8123ded9709a8 +75b020943bfafac56dcbe4a2101223949b0179cf7de6b550657c91bf3116ee7c +66e23e4ff64cedac326536ca1f75ed1bc7113f0267ea7a26fd44728714e2a1a3 +13e88daf24c9a46de29e3767648e961b346ddc72a6724a0857078c9a2ed39df9 +d17c65b89136a6cc0c954e0c46e9f23900c7ce91ae71d74237ea1128637a673c +f6ea0c8286ef99801cc6d45bb780e21c5a7464d16f77b45236bb9819ed3a8c4c +7e1b15400eac8a99511e77effdceaf8af6cef034b79862eaaaaa00bd02f5667a +c1a03c0188d09fe4d1fcc0b0d3354c880b2943b9666224238db22257a3873b36 +be9a8a55e01165f4e8d3c8eb3521ed57aa834a4f88b97f2fd77b3b3c39ae4bbe +869a24a4714476b3d396eff67982ba0a8f9ac34bf7b247951c0c241a01f347f7 +84bf841495d76f9fb2ac130779145677c799a07678eb8a3ea3de9fd00430d46c +b1b3b6c392afd853df1d0bcee9a053d6fecad859bb9bad0bf186a6196b89fcb8 +44799928b4da77817a8cd1c36cf9515090cbf63f373aaf151154a769cb58704c +2c0263028c641e1ae224235cdb17d89af5398f3d1daf44254089e6b4db47475a +1fc228e0151f244b025e5c14411c8834486e483e4cb4406752788fa99336d980 +a7a6e6f1afecbd87f2c615880f3a6bc21524abd7076eaba6ea1bae0f995fee85 +f938283c60a7a1dfdfc053a8353051b18bd03129dfe6b472e73958d11467aded +ced7829ddf6e7879dced36391a1d113cb87969b0465d64b96b5360f774a98596 +1272aefdb74ea23d85c8af588ae0f6b43ec47292c880217c0ad03d87e1cc22bd +8117ee06e36394a8fa5e72cab0825bc3af8bea7256e7f8abe7fcf57a38e38df6 +b60d783d56905a5d7794904c0cb95e2aa835145062e022b159fa7247af415890 +117a2c9a99674891b134760def15804badb8d4ae414a1410886eff8d5284b042 +9586db6610fc1e7c2ff53f19060e6b43dfb0d8bf8dd94efd5105ee20ae0bddd9 +58176c666d2ccdbaa1a3b0a8cda0b452409c8cf61b9e085d9a9164b7eac06dad +f878ef8ff5e36bbd6414aa86e1d73d211175ab042ed5ff72030b44aba32b970b +917282a1d69f3005b0a110f90942ea6f9cb2d9eb57a43000c48bfc2af2b572c3 +f8387ab21c90facde17d772ed98280b44061671ea4d98e901f33b8a8bf0f97a3 +d87d0c4d81d6e29d895f50c1552fcbef2df93a75e3b0046c794d20229d7eae01 +7f230053c4c2f463020d060b8552cfd6463018b4c03275dea0ac42977b3dbe97 +3d7efc22c9ddbf499f2a2358f6287a8c9946fd16e6e998dc763b5abaa6888484 +c2430f2fb9f2b0ae84984af32ba54cb191274f7b85695f5faa3cd5eb154b0f1b +fa2a0b9ae93d591648d33b6c23e27f9a18e0b8548bf1f45158ba7c171bd1136c +d045e9dd27e4f23dbfe5b29a66695628a87949cd0d4d15cd066916eeddc6cbc6 +f0a5c77201d4cd352584ae70d1b8e4ad2d5278a472d230997c7c03d16cb5ea0d +d04df0bccfc7a277a0ec9516e10134a9ff93b3e6267c5ede4e5b848bdeb76b87 +52249e458b602c175ce8717e89da05ceb850d2538c340ef6142f0b5cf5906f99 +c271b6e5b9e614d64a7c72372835ec4a99bb39a7aecbc41d021118dd56d21326 +c818bff4de332c9c00e96755e71288117c19e3b920c23766f249b1abf4ebb173 +3f9d38f1772128cad4514c4c06fee49abf401feaf2368edf5b4f78fb13336189 +5040b953d2ec56876cc72fdf69ea7692da01a508c2ff7096e17d78e2f61a04b5 +400d9c28610aa8d48b790edb4bd5cf08646923b0d5a86178956bf7940f291242 +1c4f3bc76fd991e36e18d40f813095c5b9165700cf94403b23b2b7887458c4d4 +4a4f160ceee87c7d50fb4ddc3d4e3242d9ac170b060d472889e553c988126096 +dd343532e74b54d664d63141b1eda0e6ffd1d82ce4d084352e97f09e2e05a17d +cd8bed5a8adc08494e5ba8b57ce522758413cbe5e5d74e6d3b251a6567fbea78 +5d838a9506c98691e0ee47be4421a95e6b02e8c66aa06f9c88b0ab94a1a32660 +fa0d8a24f2d5873ac94ff8e0670b96d4eb007ab89f1c77e0f1d1be46155fa2c4 +5930779b70c9a6d559a3646af2b83590b2f1ac3a3f1c9e8d465e145c69fc07cb +5df5093b7cda7f1780def8060d7daf747491b0486e7ca427857946d2f3d0e22e +018cf12b04b2ecfe3accb88e5e52dde2d9118a1747917e6a9f211c1d210b2b15 +8f31adac46b63cc00beed35638a2e8155805bc068a00b757d6f9dca2ae540883 +11ed782d682b511c557ab8c413e95ea8b6dd3a6c12ea9716d670fe4446629890 +d14a1ff76cdb4eb9e2ff314ed9094148bb33db76e4f6bbd5b6ec76aac13c6660 +38b1790d9c6ecf2f33b6d4ece409f012d58a75a1a4ef5e580986db61edcd97c9 +7ae81fa20bd7fcb07053311dbd6f3f73077ddd3949fa6dc327ad2fc056a8b798 +53b22c193126e73803c83fc4b7bd9cdc54c2fb1f6353ebddc027d3925bd32d89 +219a778cdc38e5f9621b41a27cb8fee8ffc1a2fc48ebd25828373b9bca8742c3 +0a58b2473a33b4805383415deeed7197a840f6c39267de16ecfcafe7d585f672 +b5ff6bb9d143e8e615d349ed779b847f2b5930aa83b08792e193d64aa163a090 +586a383d4ef4bc273f162164154d9abe6e68e23078cbbbd0a357a771bbc427c2 +3b6a3f24401e31edd9fd7091e8849c8e37d83ef396dc505f8f843f4ef305c505 +53776af2c088aaaa5a5efc05258cf692b579cba82efe7dd3f3394d985a5518cf +93c258a168969d01842a624f56b4a6e50fde64083aa7cd0a8f3c0eea6e6d9a06 +d24b1f96d34d66c2fed66cf844b490b537561865299d18dbea55e025643f78d0 +2419619759dbcd65ed0ac4a2866c61f37383902b4e1665b2fd9414d348b4d41f +ebaf2a1e4bc97f5497de6237170ec27597c98e6cdbefee9c6a7b106b3b6aff2f +7dbc6ba1b2d145285029bed2766715781b230aedca4dbe0c92945bb7954d9fd6 +1702f5a981dc0c5c876c28659d744803202a5929f03db99b32f776a794afbec5 +3f03ab51fbdf52c98de52fcae577c7ef0a72cb1f4170bffa48734f1df30ac772 +9f23e8541aed00a2cb2bfa219626421f669494c472c88e288e5698541185b862 +29881c30d6b6124b276110bca39fc496691eb1c61432cf296b055401f2f63e03 +22b0f37395a0489a031945a21fba843a881730d3298008bb4c023b24b195dd5a +1e30b76210c17a06095e3222bd39ff2b7f7b6366a173a9e0cb527172e1da2308 +5eb7568000e9e9fa521f977c341e7c4cefc883522696ab5617d6f6854bcaaafe +ccb82352f821fd30f6edbab80310bfff84779899bc62743894dd9e726c6a585d +b4a2883fddf1d1ccb7dc8242c6d0f16d008d551ee9e02cddd4a21a28cb56bba4 +0bcaaaf95dc41650643302346318e7eef6bba6f4fb6eb956f99457f2d2ebf601 +65b6b1e4405501ddedc0d2cce1a9cc7ee6282a2432e88ff45ac520a8155a2b4c +4bfbef1e1a860ac2a2f2d25c1bcbd864001a54be48c3686cf72e98856e8d4e4f +2b3f382c3e3a75bef479a567bab3764282da78b388d27a6dec10e31db5088362 +d3586e219c55ec4e24bdfcd77b920f5ea332d29630559785a900d05813400556 +d1d0721754258799fb25bb59a79699f6f4e56f0e58f6748bf8091d848e4bf22b +728c913b0db74e9bae863413ba5ba04ec732d6f50d838424dd1a47b29e51aaaf +8ee4831f52722e1627bc84cbc737535206f251d92549b8e2d24bc6b3d2cd5687 +9c4bdc972846bceecb47b5ad23df0a82cc481e37d74ff3389ad3535d0d6254d6 +d8ec450fa1e3b81b7be26897b75025a64f480dada26aa777cda828ed66cd65fc +9d02717638bdb88571460a45aaf9abe1b460659f7893c1c64008192e38cef686 +8a076a626165bb53e34766580ea78b2bb63e45d6fa0ec31687bc4f243760d452 +b459dbed951640b1f5083a19705a3384af93eaf503a000e3f2384062bb52559e +1e0d8bdaf66cdacfaaf91636d01f7a76dd5424b7b620a706304cae6fc50f0dd3 +8d395cf39dc796c7ec271721e13b1dcff35f06b5bf5cbb6b2eb908714f4fdd35 +9763585e39484118b080504f1bdb293321cfd1b2913fb217c7b41d7212b1daac +1c4d770cfe91a1f649d760c132fd77024f7a0a4e8d0cfb275f5435f3dd911be1 +1db381c01a9c04645631fd9e1c871c5d2c91ac39a18d8b9dc563633d709a909d +614024729bbb2824c33c216612efe88278d6b1082e18f486631fde76aefda526 +2a194ecb406ec7315a43695256b1f7503d323c8fcce1f572ce5410edc931f97a +fe2671156d0167b444ab02691b81fa57696d07e235dda15640ce4d2a936d1dbc +a0d1f41aff8f3ca1792ac1c146021056a40ba5b30278222286a89825638edeaf +429cfba89cc85ff869cc5d51e41a8ffe937e03744732e3fab250127c9eb21d53 +48e3f6fbfa7d4abb16dac3c45e68e355e43d59c67a717495a6acdff50208c2c9 +7ecc5243915c0ba12e420d4fbc39c5332db7d681e51158af491169d7f7212fdf +47b9a9dd0af18a2c28bf94199e0480f9cd97c2ed0e79a57a02adae4b0cd3c1c8 +f91521a111933abee28bfa1ee0810db409fe8dfa17195a9a7637f180ec400844 +e497a7f9cbafb57866834f37b2937cd71cfd5a88eb86b64a01e33e9a639ee133 +89460417242cec260f151b9613f6aca727b2578770e86b45b395b951caba7afd +94c3442bd844ff531d069b8a2bc52710d341882860864884714eacfe23bc1cb9 +e4823b3c2315c09342cf097030f14fd7e663c2d030d2d71079b6d53799e5917c +9798624793a0f850b6046e7c987f7b1b01b586a83e8fea61486dcbe8b1362ba3 +a2ddf29c622fa55d54800823824af57e426b41b6aeb440da475e13240445d467 +26a6d4518ca92a6003209d30974a40872e176ec005233706148979aa159c2b7e +dcd5136921bb9116855f20b0de9f99a919854a9fb381d71265dbe5375b06ffcd +490b11631704a069a04c0cf952ea0d9c4176d5acfbc48d8a48074357b1b4a8d7 +1a9bff215c77e14d23e09393eb10015a5474701d12005e66a31aaaafcae6a030 +34e2281bec8d06f7b41e9b2dabb7783daec99bc7a3a8dd48e90d36848efdde98 +c09309fb1c506f5a1c0af132020b07afb2a9b3c457cb0f1a66684e043872b794 +534308404c4d7faeb296d9f1561cac5fac91f4b02f89b429212c58c55cb96fc8 +bd812563b864833a0f9fd69422d24eb4a4acc9cb2bebc4ff8b9d8e891a63babe +c423cda2fcb7cd52a04774b3738108a19eeb1208256540bfcea23ba55f4dce15 +e1d176c21f166ddc1c2bb79b75d40e38050c6658a23c416650a1dadd17e15584 +b382a148d2df13b0d186484217ce6e11308856598534befb42a76389263e975b +0a17b79be1c651630970b99d5956213b5da9d41d160dfdbb14de1e25f83725df +ee7b04c5f1eb6cf4914ce25d050de1e1fd701490f5e4d82dd51b28cdd8cce9e9 +e39bba025c012e85b2b1c125c45943798f8b93c791b06f159bbbe9a3ab1e0fde +320164f98cb091b751a57d86d15a0fe812f9a8de5306b3cb033c9e7eaaba9054 +54af59e9d61518b06302c9aad9a4884c222a41898ed8e340c7b0163e5152a394 +ded4c2abb46fa6e763e27b55fad2c1f9c5e4ddf0bc39fb7178f9f5c84eb6d793 +04815fb8fe12ba84b91019d3c52d36febd917e5fc58c423b5c9e09ea31bf78f1 +da64ca6686189475dbdaa3fa111c24cd98c82e2a9f4c768969ca12ab4d160b85 +7aff1f4af235f5127e7735fd8a4e1f4023de13c477e98d7190bf7b6e45b4f867 +38f0c045e958f0e2e20fef19fe492044c0c04fa16a3a0d33dcdbded65d83cc01 +38ae67b6b6c82ce18705e39c04ad8308ff32f03939586fade451f2dc110ab4dc +fb3125e09d8edeeb9c0ebf3d289f9354973ed883cc9df86e126f0cdf91d07622 +8d14814c51a72aaf37bf555a0e2e8ea5eb932165a430a9d0364247f0ef15886d +fb61e13710f14ee5ff73120542ea256894a17034c5b5d2db4089ee4ae8a5aaa2 +cedfa0b8453c045c75ccf036b34d53f810c2a219e2765e0f6b1aa7c7d78dd6ed +27df905f4874e65d79c161371032be490231487d9b877b3a2c6e8a9840e8f421 +7c2a536aa271ac2f44ee7037758b75f5eccdf5ffc7cb94cb100a8710a118e0cd +cdee5ffe9a3cb0797b1015e78da676e14b78a252fe4f86deb0bda164d4058b46 +3cbc28247564d64fca96b4e6f54499e08714982e495918059ef68b396226aaeb +e5ea86f697256fbb59abc1c752d459d585ddeec5792b769e8f1c55c79f9dccf9 +cb52f236496e84fd5e9a7e4e63d037835b976d5cbad20aa538a07fca3e44ee5e +f03e7b4acf304a825c3d1783a46fe5c046e30f75e8935fd323a022161f2636d7 +287b209d2aff608abf3074cba61563cbe724afa0f51b8e2b49023d2165aba623 +aac35969666595b7f010b911eac958005ac45a5b756a9a1b711f79f2d64067a9 +d4258ff5e7b4fb2142de1e561d8d098a11d63934a065585dafb5693d7b9a546a +ec40b879bb5b7c167e85cc4e9df665cbf0ea67d12e230d9bd922af96eb39dfb5 +e7bf1751f575552d9df1da8402ef816ba3be8f3c19b8912004e1da13463baf48 +ff7b3b33a57aed2a3e9e9f145be50f2e84900daa0b996632263af132f7e6b374 +35d91cbcf393cb46649ff8ee35a93b7e27a9bf39734b53cf410ab3f3a2fc4027 +af2c873a42c13aff732acc9bb83bf2862e7da328eecac95b7c0f0bf79744ea95 +363f54a5b19fd37f0282ffc0c1779d733f531ff661381dc983de2858e791ff20 +17a15a90500c579a5f61209d9a1f503788babb313bfb33f3ca0732c984c398db +687dd0868699e20655fa21040c952224811bceceb52c86e3666430e4fec39c47 +4462ea17dbd53ce9feb02d52615b93ffd7928c8f6d24b3be92f7731b8b087c0c +1d51c663dba72b2a6879c6f55c1de28f339676d7bb9af94fbe12af5488d4b3f5 +b529a6a3474e3f0cc46869343243748527080265184bbfb93eb971bdcb298e54 +16030d4076d4402b653b180ca984be40eebf024d2a7faf3910fa14a5545c6242 +fc6d8a9b6380cae5e75df338e07b8784bcbbd5369ad30a2c6a7ec32cf5d78219 +41b18b7aa533b522565cfa592c54a428813751b5943328dcd2c6a622ebd2ba11 +c6d2d65f03b4f419ba4375c714e62974b83a5a5c4392c26da2650e0ef90e5905 +402cbcac72fe007cdc6dd09bab715b7776e327215024acc013cc55f0a3a26859 +2a02a0a9f87370cc81e5c185db2e6090b6b2e947170a41ebd0cc6d71a264f0ca +16eb08e781695fd8d35777542ba057443ec42bf0a822c27327b1e064af38db65 +9233639f837a74efb758b74a117ec8841779afda95ef3f0f916c97936ec16bbe +f2b917a8e8e686aca6930649129fbe9dfd1f8247b34dbc586678999dbff6a12a +c51c1881425432805a253cfeb23c5ea0cdf05c62f99d34aa7f73d90272af0969 +68ab75f3f1ebb30b5ddd6233202fdae3573f67a51662367833673f7ff1344346 +446dcd3e29699b9028c7bbed09471ebc899cb3139284a914b98fabb1d50119b2 +347ed0d201cfd78dee828badc1655fa2c70191b24e20e699454570fb31850dac +38ae12ca5cdbbe2b0f22f0de8ef8b927dc6c54ecf3801e5c2544710a2e8f726d +cf297becfb7a93b4b422089200aafafb934334704c3d384379d34147f7d163af +3cb42599ea902106ca1befeae26d641d49b7a3490f09bf16b8d17c026e40a2f0 +8d727fa2aefcbe4ac82dafeef86eb672a95f413b73858600c7d9dc544694e25f +259b039558da35ba48443e6c931f6cc6ed108e765c879314e532d888a79c1b2d +460204838fb662dc90465032792f03f18ceb654a379648ba449922c9447c00d5 +08b81dddf1fd0304b2b803785ee94ae63b9700b36fcc894782782f51f397ccff +2a1734032660685070d6d5fe94636e6de386bf347f063dff5819b6b8554ea416 +59da8bb46c01807fdc883e15a200a6cedd4b95810da0a805c3d71c6467d84899 +6b88c60191c3a5e3c4dff6863ff024a5c4d4092164792a397b7d390b4306b56d +b002e6533752ab431804dcd2ec8c9cf242efc7b93dd9c3fdb21824068d3abb6a +831d89d241613946e097ce77a82f68c92da11dfcbde58e3450f2830a3a049bdf +c6e9bdff298b4800f150ad3833a612643316cb420af3db29f008ba36a2ef0181 +f64b4bdbb6334233c58e0e68876a6d2048db062b61a9cd020ed7ef071525cdb9 +3880a24eaeadf171b5c077e4de8527b5ed5b7e5005f73c09b2279ecf72e1ec79 +a3e4837d33cfd614e6d82df617f77eab048e71b51b3ba4334d8be27798576a28 +a21ed866fa75cd39ad747a1fea7a57446111ca317372060aacb159ee90e5efbc +dc5fd16b41a5e63363b41f13c0160f719ce353b913d069e4126743b420562d52 +e56b970fe3e660f4a850e8ef45f7262128f936ab5610401756ebeb0d9b5dab1c +8ef2d95e0cbe3542bfe0c6f29febf3f5a39fbd16a5c27d652c4a0c542124855f +4b53071df5537a5fd5bcf653c0578b4e324bfd7587ed10318333382ea137d90b +f0f83b4eb5d4796e42fb7053d4cd9feeb842d909cb67ba4bedf8592c876a83cf +48e4a2f7e92558e57a5cc6c3c6a4eddd68bba96359eef224fd78f909e016c5f0 +ad7740a686e566386c4f000764c8b6e97a1f3e9e98b047f75cad6b84d502c377 +846904339303da4c0436f1f67fcefa9fc0581f769b319c38d4221576b74b949e +532b99ed1cc90a2de4189b346dab2d48777ba5bd5cfc80bb15f0c8d4f478d007 +b84aff3121f7c0cc0887dc20cf195b1d964e14685acd86aabdecf09337ac26bb +b0e45caec8be479279364fb840c6ff36d164b7be25f9f811a466ce04c2ce5a77 +4ee329b9bd773657737db17709d3a6913793de0357bdea11ddd259b5bdc94e1a +bf95d33b8396ae9b26342cc1d2a2831e95939a0ef5f13443a9150f35aac5623b +cbaf6cc5d24d51225c2920e3bcee9d09ca5c60f22b07f24a26dd856f8efec9ef +b184f8a92781ea228c2f15ad9ab1da75002c9b352316a588d00af46a86b73aac +feb16d461c9cf969977681a88806c8e6330c1e9e8d428c91de717fe3908802ec +38abd40d988b018fd7a4c02a20f2f3c18d8364fb18692c310d4d1977be4108a8 +56f807519b471ded405d1e7ed6c02676970c2a1df6cdcda3b38edad9b5cee11e +5b221716f3137083d4a433e6af2eafe4760b0cf8ccbd5c15af998b5d5785a3f9 +b79a81aeaa9a6706b2dcd217ed437b23de309a360ff60ca82a8251be5671a625 +a90de4daee9941d44d8d1e3a19399f13b93d9b567b2ab2f9cf2b71058ccd9776 +3b6a3f95ea470066f36b343c0429655f8f25c89e65074a52cc6047885f4105de +2ceb8f80846530a88228b1f44c73e8cf8ff1e99d5cdcd3c91487caba9cce19ac +bee693c2479d8dc2c8799895e188155502f957b20e26619874cebe43d125f6e8 +638092ae98ef4429bf719bf6cbd17b1f1fd9a7c90bbb6b0b34614b32234a7f4b +1c259e4b10ec72d3a2e5526473e551450a11d8537cd6d3dfc472576307ad3354 +b2a9c24ae22c90aa37b1ac70352969e2aeb30d0fa894724d5e47a87e7319bb35 +7b76e95d7f665952ce39e05815e5718a7ec0d09dfb566e589c3655e87588b6b6 +95a272aba75b07eff8041298b7a1bf6fd1b10c5ce008180940df9f4235fab68d +bc3d2ab597192b0912b5d9486b5c8f6cd5238cb94a0c807f4baabe7e81f072ca +0b626d0a5cb1b8254a4ef588149c84c53d27ca3cbc729416976bf6a20bbed57c +6c0fd85c86dabd7ade406b27a8890bef705bf3c5c8a59615d858ca2707c47404 +78f55c4d6da862b50f90997989ce492d884f97482166d5ddd4eae075395d7be3 +cb0dfed4d966b2fd24c41acb6ba9f1280ca84aa8cf607bf1d2cae3c6dae6871e +c5eb10a943c84b83095fe1b7b9bc3682b5681a850001be80a48a2b1bf22790ec +f53a1ddb50e2325392f118cd56727005b947495ae8ca6e46cab765670ea03488 +39275b5711fd6b227ed1a6b66c02c9f199c8d54b46609a0804fcffcfe0cc8b65 +0f1ec83354d395ae89ef02d548088674fcbc0ac0daed78ab47e3ed00df77c01f +2d0e5967da9348fc0434d71eaf90785c3666694604f48bf2043bd54dae61ea1d +3e2da8efc1ae867ecb0e7d11093ba20786413e80c8f05dabcf474d6d9a1149b1 +be96ad65eeb5b865f4b321de61ff8904a072092910bbfce7bd5a42f10c355e73 +c0890e342af2f2f4d7fac20c846d372877c7b12776b76756a9002723d5ee71fe +5b1c0e5fbed5c354cf4b9cfb843f01b9e378e90e7a56994325c7c447e5269204 +c83b98d99dafc77ddb6a3fcfbbf430f6d0ab8a832c262f879369fd9ddd33b1df +602f5462b9f2b29360f1a1b7d7eecacc4f10f188e7e2ba08005878b1d9c3762c +ab8a29d01c0c164efe8d37328deb51567d5f17b25c11590a1078d53a36bee786 +5813fee10723c1acefe111dbc08b796895f2e1bb190f3da6accd6dc6c884eb44 +ec4d78df308ae7e774cef87ed4d6200bde349c35d7262448f165a6706c33563d +24d04d409c69924949aae19c13d07ee64910d1c29d15ac711fb56e3dd05a980f +acc11d9c08863c32a28bf94eb2c8fd1fa0ee61b939ed944b017a46b681e95cbd +0365d77433a27195df9d20a3483ec94192fec56b9af5c656bfc2924ca0c19fef +ad23207ac6d0169a15cc273d66899cc044b5efca9ef4078b9bc1e91f83842624 +c08a91c1c0d20306b1479e749386cc50fed78f22a27579fcfe943b033738bd67 +db8c4cba7f60e8ebbefeb2ceba747c757e902b70dc09622aa4ba96347b6948fb +3ed5c54ac78148b5976001bd3f0474d93f4903d15a6cd68727714ebcda244345 +d9a4b0020bde3e2c74385736f244206da78d0331de35feb4960d8fcd0ef4bb75 +5ab20087c2aa1da104d16ade37b9159caa0f8bf528b55cc005f017d6823268d9 +b13d199ce47d3c95e492ac8067fc44b42ac8be86b639770a91c75b7f7a55ff60 +0181451587fca8bea1721f4950b3322dd9c8a09cf8e4d2abef3ec038c8302e9a +3194d54745d5798e3b3844696d3c4566b179c98b7adcff4bd2a4fb402ab275f4 +30f2c77eecfb3c473d2e7102592e101c3d38f79a08021227f8f782a59d20cdf9 +c9750a8c0ac70e34d983356c313f85acb56ced4467357e07e23a62ab3fb6ed71 +9f9bf85edd20af93c1c1736b6112dfc8447b6d06ca12202f84b34f892a1a13af +4423b723c13701aa57982dbf20ed6ca129b72f79f77f1705485967980db5df42 +c662f0ed38a02b55cf048e713c0c6a1a85c900acaeaf6d045dc96bea5d45ecf2 +8ae85d1accc9b38a45d6f516078c72388e5337b9c1a2023d086e97e3affd3f64 +517df9ece75c3afd0e3dc74e2ed3b4aef8a8c032cdd70127ec4698db19c78646 +58f9dcd6b98676dede88a1efae04d182ba73475290ba87fdc71cee2737057855 +c9b151917eb5b3cde9f70db961ab5c8a10443a7aff427bae1d1e720a604c39a0 +14de8b45e528237198f086421b5938871ef89008148eac965bfcc850ed7aeae5 +ec3e8e37b9762a8a6580c791cd89c4d25fcdbe778bae071bb1e18257fefe9771 +255f977611825be7f64134c3521ebe7c549741265838ef00f0687ce14c463d97 +884893e5c967d3ca5286b52d0aaca5ada20e778a4f4c807a9cd97f0c05ed4876 +1cb09c787085e213a86b7aaf33acf64552ce5d8c3459c261447024035997ae76 +85d1d4337cd1a1def984e185779b2a0a8a3c8da6212730f96174f4c3b104d096 +3e0e395fb85f918cdd5f98c77daeb09a64169dfac253730c7da4122a7025ef19 +dec6042fc24d4565a1f8a7b37da00d170b6c4be72475544dc73b111c775e5c20 +401ad5b382559c2dde0bc3ec0e46c07e42a08de477b3c07159666bda273e29d1 +8ef5b8e6d514e510d8210e0a998508c3062ae26b504abb3613f3d1f167c87bc6 +48308196ff8fe6ca97db5fe0baadbfa22593c01bfab9640edc31410fa037bc90 +f6ca35ea8010a6b3c031b43e19c38a010e84f1c5c97b73fb3330ac18268c16bb +88648034875df43ea61c877c3278caddd457ee47509154aef00a86d801f8ddb1 +44e43f5ee5683e3ae84b7f6ba7aaa51f038607beb96ad79183364c49793ff0c6 +98c2a8fb0ac71b8f38eb7479a4995e1fbac92278b9f3528261d822db91d5d4f1 +9876784d0651ec7291f19a5437e987cd727afdcd267f983eabe8e5f3879805d1 +3f2089d9fca9d35e4fbfae0d72d7d0021c386bf7608fbfaa87d26a57933bb6ec +95739fbc3f7229a82efe4343b679165df1ed79eb650fac11cb7f1e74d6fdc9b9 +a8847a85bd24f58e2d988aea2f26eaea9d27f5892d2cdd77669b849a92f8d0d7 +5c54ed9682ba9d0c7058e04997279bdb3454d2b6a44598267a269a814aa9e1f0 +abf598a1b6c2afb75e173eb6fc2634253c04fcee9cb2a896523aad92457ef0eb +321e0a037eb6cfe349911c148473f86b5aff5b8985533a5f6d3b406ddac73d35 +23071332a8fc34a4816171b2c8a19bf458b4ce7259270785060b9d673f3c4997 +2da999ce0f2e7ebc2b2cce6de818d40f020d5e53b882f0d3754c341d5740ae72 +2868f364a2faa97e8c8143de444a9f3ae27eab6c4f7c838f3a5f8b9600d70831 +cbc2dc64ed3189f33030d0b32211b757f6682949ab889db99693f4dea2f670cf +057032d3034aaa6c3e75a0bbdc092c5f4886b169e59ad2d7f4d41cf7ad2f5882 +77914fdb7253e198a40b2186b1a9a0aa958ba9fb99f21a074825e053e562c2af +8cd8866861ae914042dc4b8b5342089b21013d519c44c28482cb8801c73de3a4 +9d6dd060294e4ccdc55f000f0ab7900b088e141fc2d8ce68cf771a068541657a +8b41e95fd2b1b452949716ad5bb0b8c2ece99d07a41f3c3ec381212baf8cca9d +801a993c8a3926b0e0d60637618f69facf70c7b3e6af9762afde0deb9e5be5a9 +105c3164b4d8372414fbee3181066f1772d21da04d0b350c806935669fd69cf9 +6073c324b8ea582638b11e58e43267c3854fa35c3deb3160d7756d66b87c8385 +92f86ab8a97bc9d6260e2723d435769d15dce8cec387318add815687ddb99d5f +1980da44a5332e5c98c59c8d6ba28a995ef8d809d783a9b2510e1c6b820c25bb +90f52ccb9fa3fdeaa661a69921794a60a591fc9157e755c28aa399f30e93d298 +9e7b35fcce14d5fe6bedab37c173d384d3f67323e702b14ea74951c5c07917af +f9f9fcc450950a8232cfc4744dd38ba79b9fc41a37205c97f44ddac6ea5d423d +7af9883610084080de39e5a71db472081595235f72c7ccea69a20cac059f2357 +b4d60e158834ad26f85fc1e9bbc948db8fe7a03c5c401ac2ed880fef8803e464 +76b00961ff910f1fcc897e1fa4f6b697a616f07aa95f5616a313ca01f39aa99e +8a5a9fcd389c99d750ccfa38bdbdd9a0376452970f91859aefebe5b55779516e +665c6f786b3d22a1cc781a729e477c5f82a65027c87b54a97d9130bd4464956d +735fa5b8f710cea51eb9bb909e89716160cdb112e44876ac49494f62b8f46e63 +c978f80f3a57d99ede832bb7bc1ae59ad0025944669343f432bfeadf8d7408f0 +50c7568da4400df96139c1d243b8634b19f2134fd13c783fe9012a58a7e7843d +55bc3b7c768579bee6f5931f1ea9caa44bd6808b12bf4550c852c1ee3cfa72b3 +5c883f0b6a4f4e5d768f93aed79bb5c70b681c3a9d604b6eecb7026c1b22e28d +c184d2fdade4c6afb6b9fe8d7495abe07547d092bdd73c5701696e6f256cda8e +1a6e58f3335e51498df75cf37a7213fa50f6d9a7a4ea4a251c3cd004b75b8805 +8c8b8efba9f66bbe5e8f321981aa2d8f5d455b47347e368686689d00fa5f996a +b6922e325bf4e72ac9cb09fd5802f365e4a15045683884b45f15175cabb62651 +3e71fdf4e7ac9b4b91772644ca8e55c530a9459719e181f9f2d211601d1bc5d0 +55731eebc2964f4add0f713c6b22abd36bd9163902a147f5172c4e054ff44ff1 +1999337a57a673028374a04b65e7e77ef2ce24a75c90fa2bb48cad9e9fa77111 +24514b9400e2cadf75e9d7f62fb7993f82cc336c77716bea4c00c931ac21e95b +04f35462cee46670514510bfa22ded3ea18bbb8b511f42c637bbd06134280404 +05d4355a5d252d9bc291c14cc81d77c491f62a54387442b9a884b3d21e0adc5e +1c120ac2c0b03a0355204eda408570d379547d40314f5c61f8c97971b91c521c +a5e86c1c321a90ae21dfbed0688e8c7287e7a35a1f0807b0a9a811a6d2d68636 +0fe12a04126f19c9b0fbed1083265ef6b2f4d463563df3b1be5b9fd0d277d53f +f4f5ee43b113f580be21183338592a57e29c025bfcbd56dad49e4b5bef14363a +db5594baba9ec550bd4cda1759277595d677a71c91925e6e1960f31a24117609 +4213750579cf163fdf9b3590951bb5e2a8f117412025f1807584ce1a4cd382f0 +9da5d7b56954f85327c0eb4ae556b79c08048b127101d2fb38f16996f1b66fbe +0040841b5578762c35849b0641d3343d8290f2aba7f075a0e2721718e08f0a85 +1fc82805f23c2cb0cd67740ce3d5bc6b97f98f8818cd39ad76ea2779c48ce48d +43302c382ec8d61904242e9a5e28527ea6a3bfcf9dce17a9d36398152c7c47ed +777c944db9ba4bec4f30a1261a0096081ceb94708ebe98e7165ebcbd768240be +d03fa2a0904086e1a4fbae8788315c7f864754e63f2399702bf2dca498b2b352 +09ce951389384a9e8ec4f01b207f61112956e9a59c0bf46677b9b1f8459b41e1 +b8323e5bb1ecde22bf2c47938e0e2f548cb02758dc7135004e448d9e689cf431 +11d2fa0a98f3e31b3882cf8689c76d276b85177cb27357bcb2ff0de3cb032166 +c58f25e0ddec5971b6a81325abcad1fc2a27cf0b20332769e80028ea27b841aa +16506f7c22dd55171341687682311e1f884ef87494bccfec13f5b0b217333376 +fb86573ee65386e19628e78f49c6cd9fbe4cfdaf21ab25e6f62a99cba323ebbf +c5eeaa523613eddbf85de5dbb9c66de1748624c271d8fdbc16bb8f9196428516 +f85e26d904878f9da7bd61848e96250c225e09dbd4f15180759e3e5da86d0dc3 +f5f4c5df81625a466d31872b9644afa35c81cd8a84a052b954bbada87c1e50c2 +c39594078c068c9b0aed83074cf941bc7afa3afbbcf3f40f34e4e3d1f133a57e +9c10799313813684dc597fe5ae551cec1f61802dd873526fde81f323b6c62530 +0a5ad9bec4131b9cc9cf26a4554d6d64bbd5c7eb59024b2526f12f3f9352dad4 +7043446118b2339223dc051a4938bc6a2c691029d693b8bd3d35fcc458f7df7d +bc2e51ea969285ad222a233e5331f99ee402eaf6d76403f6fec3114e6315a2db +23659ff88a0cf2738c290fb6ccacc2472bcaa3e0ce03f9e9d8357b89580c95f6 +f97c1ef3f0bad43253b8e97e6613f0ac04f55f2f321b5688fbe4076558738b71 +b378712d45c48ff6ec34057bb2a0aa7086c27716aed9c3e6ca6703ffdcfc451a +0471ae9d6512f0fa82155ae17e133b685717138397757d0230b62cda0ab1ee9b +b1f0bb791daad5f3789ec0f22d13b44143b63250f09ac760e86ce3219292c6f1 +ca0e77313611d8282d8f62c986fd525baf75a8ab194038359f6e0217d1a5fde7 +ec7de056f4fc6893e740dd8c9efcd629fe529d5116db5482d12bf39b0e3a40bc +bf1b3f99f627cbe937656f38909e3924b89ef1478be176320b6fb8a7c750f41b +90dfa427229c900b51d806d959be3b8b2b6e6187fb1bd406fd179dac8af5e70d +be10e747e198dd6cb67872b48585f33aec68a3ca94a22224056a32a8139cdba7 +aa07ea5cecad1d2e1054cd265d35c6b2ec0a25a0dc415955186cffd2c4b6a86c +028129fe12b4fd07dde82836ded99925994f058cf323bd1b362a86a8b4ac5aa5 +dbad763abb2613b41ae6b947fb79a7edf3ad23eb7d732727376a1fa9ee0e8d79 +3b5871fc0e4535563bccef6ce24a71b717f90590a7317652d7978bfa78a72454 +353fcf512ec5e804ff6d2984c3e905401b69246e1b040693c581e794e6d57ed2 +5dba59acdedbc4114116da97b749c4007f51addf7dc9bec79c77cfe29b6a93c2 +61e2007b01a0b8d6f95a9e6c25551a20ed592c90c7ab5071280e5d85200d776d +938df156ecd2d863f8b1848dfbe5d3a40d4b817deab66d5c191b4b05035e0009 +5f04c4cdfa26de785889829564c27377ff1f2518da932d4559017881aa68a802 +5bdaacfd2611e101ac667d3b69e7895337d522e56b4d9698c4c5f9a0e83c2386 +f084f40a75282c72b2fcc12973e5edf34e810fd247f9c0317899fe6efc833822 +8a788d33265883fcb78366ce69783b9a15e8c041e4556293f61c571bcc985d69 +b1761aca9460781c4b9f9035370dda95c777de8d35e1d7aac234987fe1a8ff45 +37888fde3267d97e27c8fb6d95088f0d207e4b8d3e3d689172b2d89b8dc28b34 +43d14646b23e3807afeaf3c83a22f45cbfe9eabdcee160ab7b1a664bb5fdba38 +4446b84b6b863c892a6ecf33f7a569d82df118582e514c11314dc73fdb04be15 +b6bc9b3be801419d90b74cdc52ac40e1342167440621fcaaeaaf9db8f78f9e20 +045d3a26e1b51f2c786b23c09cb94f9cc91df0b5236e3f54062925ce8804113b +c93c3ab041948a2027d00e112043ef82ce54365fe241a2c503fa334df6973406 +3402fc6d246a8694f436b318bd5558f69c9f182746a25aea1bf1993f61ca48b3 +b04074f8a44206716d6a6d834ed3c455e272b41810c6d70133c455f246aa7764 +a104c482caff864d86eebb2e1764735775e78850006f959de537d66dfcea3f2a +45e24e7d905439a59ab155474bb3dc63897c1dcb7e8f298366dd49b9b1e42f94 +816a3c275460375dbdf175ca420b46df137a34bb1ad7983807677f093a05b90e +81fd0ee6b6de147a9813a1a1ec0c7d859777c0b2945edf2901f883b8b54aca59 +814b951e4c97fdbf48aaff19cb9fe7c6c0de6532f656e5b1f03193b58ee693f8 +4684114fdbbc86134a483ba1be41cf4fd823a23f5a52ceab00021c2954e5c04c +865ec7222d33d82f19e09375610ff6dfcea95e0a25a1cd3d6156b63bcfa13740 +63bfe1d8a5e45659b0c924eb81cb3d4e70e59515ca1be45f66faadb5993ec547 +966f70f5d761c8731063422a510984f7b4587efe6799d2f28d90236b49ac10b6 +fbc45ecb7d91017e16e4fbf716709b37120d3586363e33d94ac92b01d1349c00 +18825eddd5cd9cccbf8c70046ca295d885209aa3fb0b6209c5298ef4843c39ed +d64dc504c278334107d322cde4a388a4a079bd303c4d5588be979eaa6cbdf8b4 +942ffd0d27b2ebe1533f1d31b3da2c7fb5c8b663391151fe897cffda8c227d45 +e292e9113ed2538712b40601f1f0c8f3d0d69ccb584abe6db54b4044034791b7 +d7a0838aa9d80c971f45486b4304f20d68b76ebc6e55bb683dc20c356176006c +b1f902f8d0be642da9f9209703c23e48235c35778221689c16d426fbd2903d19 +7fd00e071a1989e8b2ccef17d51e7d73d7189c06adcda120cd3e849c603729f8 +85006337a3a1136ca31e0e41d674620f97f0101a297a1b731b1d0348c51d72c1 +4be0366a2667999067d102d7007d510f31074799ec5cf6ee355e59bb68dd85fe +3e3f553168c337afddf1bbf895c0df509355dd9120735dec0715fac5804075fd +cd57fda443cffeb9e9d8e6f24a3daf1d9523ddbd29532a6c5a79e6b1ea1f2b1e +55e0369cff1bf0c074873ac1226354a6a74e62faf42f1a15c863c0ba21c3c399 +b9c1ddc4ff6e9bc9a3ba58581b6bf67b89b7045b9542694b9c2dc3e185a1390b +67aacd3c344d37467671f728fddce8bb08e2c6b8cd4a8abc60de087fdd560130 +3f40599da3a1d4abe2e93cffc5628e62d972f034681db1c6b07cdd0e7f9963dc +0b146051fe8140004c5cb27f0f0411027ba88646baa9d6f02931a762300a8085 +7aba1853932d380a72753ebcf4c9c24a03fedbb2dc057c6f62f31695d35a7e8d +da73ea4a610f515fb52ad509605b8deed5e44c36b7210dbafb46cf2c5ca7f42e +00571a8a157a953226cc00a87592050135386c5e7fa1c5e3c023edb0359cc26e +96762eff0ea623651b10ff61835614486760930756e59d54919f0dfe0b8fe93b +9b28c474055246750aa1679389c5204657d283981a5cb160e21c1737503ab109 +044a661a3b3d100ec7f4581bf7b67b50970078319890d5a67d133bdc07265d22 +99504698a00ed8c9747feb1e747737e19850d39c03a837f0d504f9b43c8fe9a5 +725eba04ee6cd478f8416470ed154a11484aed5822bf9979b1ebd5e56af698f3 +4b865aecd29c67ca74814b0cd0109767f6d582205574670b0182e0ec6d23675a +11e489fcd58f0965af4c2f2b891aabd05185de26ba4e0a86b4fce3ba710d9c81 +3a97ecb07ce16ba156e2627048da3a2155ae68a5063f6c2eebc0091711290605 +b540ca4ddd10838e2a64835ba38ecba8043074be230baddd628d8b253734397a +a213b0a9bee70d623dd5411eb58e25855209b3648a42e4681f90d51b13354f28 +267d48d1b8aaec412be2dc199ea3ed041bc3edaace1af401d01e56b5762f7c71 +cadaf26892f3e1f6ab0438a4ba0e3f5ad953fb15a7d821f6444efc966c67082e +47e1af0e6e0d199189a994239c9716711f9ed82f6fc2fa1f923b4e3aa45e5ad8 +c0dc71bb5481fa6a105b90a77bf4b8b9b852714cdf4fa814e9d0d89d349ba57e +dce13210f79ceb8733526aff221386f826a435af47f027d81bfd4d263b84f8a2 +a807c55d1bada31a59649717a4ed8d560d4f5b81ae7f6943c66e9b2ba9739c3b +559d49fe652de7c968c64030d91099ceacb9ac69417e8210f64eeb6dbec7ab1e +fe4a3babea0a42ed49cba2e70a6db7018ea0ff1b2b0af498dc6b5e686eecd7a2 +a6b85e07401e08b825457e99d0b5fe48ef13a14fc0ceaea7bd7748b2c7414522 +59ef4ddcd6a12d5e84ad402badb6af6b8d50738250677ac12324e4e3c5d72887 +c3f36f99c04cc898704bada948b431f543765f3112175412fdb80af9850ac5cd +19b65b018df357498fb4255439913acd686e3edd9a3bed54235ca6a3d93ac968 +6ccc1400b8ecc647ad4fb7334eb768ee32d3213b8a30ac2caae37e99ebd9e903 +b319139533fffa9289c29424a030940ab2b43df031c3f72542e7a8227d56c29c +a3b07551a0be3cc4d406d2b0db792e9e72942777388d1dcb4d48704c64a99434 +885c4f4f170294c7179dd43944d60739ba9412245f2c34699d04f9815db6db1e +b3835adbf1d8d9cba2da0d217562a25e0adeaa51bd8258b9b49f1ab66fb1e72b +d0312788da672625511e07ba68cb0eaf05485044acd338305f55c7b67e52af4c +124e54d8e3bbd2c6ec6080dd3e191416acaef07bfecc0e77acc92236749ecd88 +96577190a9e86b7ee306b613e0b19015af7bd544e26c6a3e98c51d98cbef559b +29d79e6bc3ff0966663de38b24b2449d38846e6652159ea825303122ffb55333 +a108e242a05d015a9abb0089a5b9974cffa5eef0de271c243fd9a4f5ebed3b53 +324de92d22fae131fc7676b747460fdcf199076cb5d922e2098446275946481d +681674c97c00466e79ed31008c4f83626ac2dda6b0464b589f01082e5ed3d7b3 +1caaff1052012b1da1e37f3c0049623555b7d1525f44c0824a53903b54d4da9c +083d7acf2717e26be8596a07574661a53c504866959e13dfe3547fb8c5ee9c54 +e4d16952d25f0d32c103c1b2381a3b06ab7a26262f95755e2cef7a028266ffdf +3687304ec78638f3607e1d4c76af0cea8a30bdb7afd9fed23b79acabfe622c82 +9059c90c5bc732c53d8ae7e55f6385ab5d78e0c4e0b55bb9c5867ff9a498d3d8 +dbe4f0c548de9edc0944f1119bd9a2c33d5d1c8de7c5156bccf7d4e52265464e +5e58d93fd79f40f0ad593f50bafdad06a77fbb22982b35516497305e78f50471 +746076b77160149dd7a38f2fdd678ddc2a954ed788a19ddac34ba6ecfa9f0ed2 +f7bcb5f97eb077bf90e7c3852ea49b1a64b3a1e618cc83bffeabd15abb82fcd5 +38b644942b6b9741b3eff1409c67632c6a40d77c42ee0846d8edeedf56100f28 +ce8a9fb58b4aea6fd3fa0345832062d748ede2877fbe30187b635ae95227a7ae +e15f86beee2718058ee928c73d0e6f2bfba3c144d5fcabdfdcd499f8b8db426e +0553781a197bad1798327e3bdd32060bb55c660c24f3ea4e658d4e95f69fd589 +e9b35a2153bd45fde6f56e50a7cbdf803e26103a62824b24ee929b16add5f9d3 +5817264fbd1d0b3171fff576d67bf6aecb15eb25c5bc6024d558725718ea8406 +de77df6446ce372a13fc2d96fa72f65932fc34e7caf2ea065d3c94367070ad57 +84e94fef2858bcaf7c60f999caa4d0a483fcf77bfda5ead04c77b87c69a3bda4 +9e752456a8a91e78c89e72b3d805cddf729c8d13346df0c1150a7e16f37abdf4 +07f8a69b062fa83cc8996e8857d26bb0c09d5a5182cacc745772b78b584cde14 +6f5e78de240c5f6bc995606afd03afb003e0f8f07f4f62478caf38494a162a82 +ecbcedb9ba0d4f074611e68f0cb7bbfb76bb11615cf4cf26772a57d635613fbb +9fae0485183a90656c81750e962f35cb61689ec21f11539df17b2662006e2391 +b5d31851ae55c40d408649349ae3500bd52990f1ad042a09d0f31fef1a5c7c89 +5ea1118ea0c1576b630bdba01bc628ceded0ad35e6decc10c02be1a05be5259c +f318b84f4a0d5eeef0ef8d991e029c55213d73a07306160751c8fa142d010c1b +9e85dce81b6c4638de70603f7dddf7fc3a80540151b985066926c581d21cda9e +9a2a0b9f428fca992ef1970a985b3f5fa6e80e5923db4de6ed7898c508852a47 +439a8c50e416c2b75d7b3c8046513d91af6de66ee4b6f26f6b639d492b105b1c +9049b04aeb7962405871e868f15b6e1a8e8806253672c6eba1d9447c1b453d36 +59860fc02c285f5f2d773f0e76c75d5fb2493a5c26901d9559a9f3550411039c +129fa2d0fb9f5aa4d6a11f490488a08fb3de699fe868ce02120fa973fa0ae84f +fb524eb2d7823fe52ed58ebf40ef5c7609b7b8a5e1d47cdb9f624d53d35a40fe +c7ae7c17bc941a7fe4c9c50777595a97573e3ef83582033e1851577036e02f5a +65aea4282fe5171269ab39a07939b2a71890ca4043102dfd0afcd8688996a45e +7b6a858c30e54a6f32fb19bd71adabd584ab82ebb85535e53788081e553fa09a +d97345c2ff7e6b7dda5093bb78844783002adae6217581860729e94f5455e6bf +8050a1df07128cfd83f682b4d11696a62d204a7d7be0a43a653d1cb6f58a760e +cc565ef2e33662ddd7daf376653963f1485cd1c523d9341b1131d527ddc5e166 +f49f08b1bf9344bf9f7551a2688bb258cf46775a6a31a4e38dd1114fe2e44e5b +3b56d7f3d7f44e3c9f09c6e9e098d425370daf4dc3c638581a3f34336e80e8de +9016f94e65ef7664a4ffc441c52d073d47da7b90c39aea70ee619b199ef79773 +bbf5ad46ce9dd19afdb335492d31fe45cd69650eac723a9d6d0a3c9c00eea011 +daae00acdde96c901f111c402703f7b1732e1527aabdab32fe1355348e76081b +27491e40f472c84e26568e8fe043ae3b0813137b34205d5a005eecd8003b244c +20e0fd57bdb3755e7bed94304a77ddf69a9c6ad5f286bd2e95e4f4f37b6b6004 +b9f7436171c6a17af1136c05bea345577c488112c7c8cecfe7c57f2601265076 +dc5cbfd0d2e66b8587d92d02ecf628c297f4d08c149fb2efd989e9ad7a41cdea +03b48ae9853b03768a1528cef605f9d64045b1c1de64a5e0d26ec5af66ff278d +296f02349a6344767f0b0983530d314a370687f2019ef6c778654c011206e8a7 +c47e5572f904f2946372e8ce442bef2cca4fde1ada3a06580539088c11804c76 +e66c32e076f0e3de041e9c9950dab9d79886a404c081f61d1eb5e0bb4ff05df3 +8412f34b01dac78411e4cd8c6322b956fdce30b66dbaa9e8df62f797e553b83e +e379d96df6a2b11fa7edb9ea2f1fd8ec4b89b5ddf937bf91d3b574ea667a9847 +5737f2bce293b7f9ed9ae06ec39ca2befe1d4378b707e266ee3363acba05eef4 +7a9d71f8a205bbe81569ff184de2e187735829b17680534888904fe67fdadf4b +146c1d80f3453840667908b0bd497d22c8ffbfd1400fbd57e140afe219fa8f51 +c8354af1cb982ef423f250eb9e8aebf30166780d631400ec33bd84bf71140403 +f5cd03fe38b27f08167cbe99bcaa3fbca13d734c74148a4321627b672468905e +c93b528e396a0d2a917ce042d8dfa63eb2575723962063a2487f044c365462fc +907b42eee612f0fb4e34a3fe9ea1a0f168da2cb89cccc1b5422e81f09bfa175e +3479915053e90007ad92ab92a2a0644726bf022737f3b7b0ee7579fb7731ac29 +e7e043175277ef22942a9030e0bf91a1e775f9fa3f6d86ea3b72c8ddb42a670c +68694780e5a7ab25968592d823bdc6e812d19641c1e176e26351ea5355435739 +7f0f92c33c67 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +/F122_0 /XDVKOU+NimbusRomNo9L-Regu 1 1 +[ /.notdef/.notdef/fi/fl/.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/hyphen/period/slash + /zero/one/two/three/four/five/six/seven + /eight/nine/colon/semicolon/less/equal/greater/question + /at/A/B/C/D/E/F/G + /H/I/J/K/L/M/N/O + /P/Q/R/S/T/U/V/W + /X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore + /quoteleft/a/b/c/d/e/f/g + /h/i/j/k/l/m/n/o + /p/q/r/s/t/u/v/w + /x/y/z/braceleft/bar/braceright/asciitilde/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/bullet/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/exclamdown/cent/sterling/fraction/yen/florin/section + /currency/copyright/quotedblleft/guillemotleft/guilsinglleft/guilsinglright/fi/fl + /.notdef/endash/dagger/daggerdbl/periodcentered/.notdef/paragraph/bullet + /quotesinglbase/quotedblbase/quotedblright/guillemotright/ellipsis/perthousand/.notdef/questiondown + /.notdef/grave/acute/circumflex/tilde/macron/breve/dotaccent + /dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut/ogonek/caron + /emdash/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/AE/.notdef/ordfeminine/.notdef/.notdef/.notdef/.notdef + /Lslash/Oslash/OE/ordmasculine/.notdef/.notdef/.notdef/.notdef + /.notdef/ae/.notdef/.notdef/.notdef/dotlessi/.notdef/.notdef + /lslash/oslash/oe/germandbls/.notdef/.notdef/.notdef/.notdef] +pdfMakeFont +%%BeginResource: font QYKIKI+NimbusMonL-Regu +%!PS-AdobeFont-1.0: NimbusMonL-Regu 1.05 +%%CreationDate: Wed Dec 22 1999 +% Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development +% (URW)++,Copyright 1999 by (URW)++ Design & Development +% See the file COPYING (GNU General Public License) for license conditions. +% As a special exception, permission is granted to include this font +% program in a Postscript or PDF file that consists of a document that +% contains text to be displayed or printed using this font, regardless +% of the conditions or license applying to the document itself. +12 dict begin +/FontInfo 10 dict dup begin +/version (1.05) readonly def +/Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file COPYING (GNU General Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def +/Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def +/FullName (Nimbus Mono L Regular) readonly def +/FamilyName (Nimbus Mono L) readonly def +/Weight (Regular) readonly def +/ItalicAngle 0.0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /QYKIKI+NimbusMonL-Regu def +/PaintType 0 def +/WMode 0 def +/FontBBox {-12 -237 650 811} readonly def +/FontType 1 def +/FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def +/Encoding StandardEncoding def +currentdict end +currentfile eexec +d9d66f633b846a989b9974b0179fc6cc445bc2c03103c68570a7b354a4a280ae +6fbf7f9888e039ab60fcaf852eb4ce3afeb979d5ea70fde44a2ae5c8c0166c27 +bf9665eea11c7d2329c1a211dd26bb372be5822f5ea70d99eb578c7befd44cdf +045a363056e5e1cc51525ea6fc061dcebb337208eff729802376a2801424f670 +0e7e6397b28f15bc10b40012b0a3eaeb2693e8f7f627c4c9c7c6c5bff105c1e4 +1b2b9e8f09253b61177e95ea219474796072f4b363fe05fa763777e13b518310 +ac032eeb94b88c7dc8741fef59c541b57b0441c6888237a2b66a182599d1517f +9ec474a9539f1632c9a5a1801fd646b529cec2b430f1cd205feff509b4092535 +29e0b7b372145ddf62052c9c08b7673d36dce58e3e78a8e4788b34e36eb543c0 +d68a36e2831e23c440c3e5f1ba2248633aec75ba8d6c9e7fc0da01af08776246 +9a8009a4f3a93241f2f34c72db3361e701c06538a631f6a8cc47b1b5df7cbf9e +9029d42fad4b90f81cdc2b4cf52c09864f657c7c357180375c0b64206515e472 +c6d71a2c5d03c5143600d0dd439998956b9896ffbcbbb77fc1b6675f1e428390 +144b29367ed224ea9e5f51cb3e349dd118422bda8b6adfe217a02320be72983f +d6fa232c9289e529552708746c4c76df4ff0c7b27fbca194c650679504c0fcaf +0c643c945a2563ed47cd8538edd441bfee93dc4160421cd9efe6cb32d81a8e1d +e1c446eb5ec2a6c855e4449731ed3da1c3ebbc3cfb6553c0f78fe88bea6edb14 +a4abb572eaea91681b7e9f6a2a08005164340dc1983f75b8abe75fc02747fc2f +0c5b31e0f9a8960410d5cc677ea77d0b1b28681ab5e6b3ac11368b1e493f594e +9d037f4fa4c47ee06351cb471af4c1966aad3e51415d70e57eb0d84ec3a655d2 +b0e3a818baebfcc472b485625414c4e20d63b9673b0a0780d8838b0b4004df79 +da0444405db6a534a7571cb1aaff7d4975ea8a578ac37044cb1395a056c7d9e1 +ccd617391a2e852a4d71101cdc3c9350e57657b376cfc7cf7e387414e4a017f9 +943ba9c3aa45e955812e6b8173acbb5e5fd0f0654868def282d134d0b4533159 +c2bf0fb6959689dde7e8e5d22618fe9c8a973a87ac0e853af5542de5b89e7b94 +44ad4496afb696be0eafc9dd7a421856b1c0baf95b5fa887669124ad3698b544 +5e82a4c5cfba4e5083784e52462f3724e7273de6e00e84a1d83b6a8c0e79afcd +1df167b97e2dd796b6826231d31fd02991e990dcf2dbbb0026f9a151c0720467 +e68e2cc0a5fce825564902efd08e2ce18896ca20df47d2df8928baa632825543 +d0f6a5c94630e63411a6adb264443eb7d0f6c3883d195661ca3a1bbaea7bcb41 +d5c18fee8453579ee23f1785112e31c6dfd8e9ecb8681b248f0ce3d77aef339f +b455f3817cf7182d1fb0c53589750be5bd6543beb9c341427d0a4107dd5d6ef6 +2197b85088749f3cafa40a6a3223d4ced495d6228b3398fbbd0d4765cad178a6 +f93c5217bd254777c20cbfbd33673c5ba58e2b021580d63c76bf196391815c05 +d05159b171c9034edbd0e861c5a26f2dd38736457fcd38003882a66a4cf8d7b1 +e2803ccfc1c9fc2abda0271c331247360b7f2cee58ad9cef1b325f62dbe2be6c +babe23a220f662247df70428c1f79c79684890324e6b7166b269b174b98ec8cf +f33b589cc3d3daf1aba6835a22aa2f59f8d386610bfe936a05794242e99cddea +8da5b4e5e56a875c49267e2d48ccae616053235b4b64ae53a573922009e8a05c +a56fe84205488200ac68b62fe4f07572392940638301363c4131ccb86462c242 +afa463e3f7f036f63e622243893261e7ef744ed489397030a6604318da3f592d +037a620fcdc10da51b8f31c816f91016d38efc65b6d463779720ebe8df03be2d +0ec52886ef9205fbfc6563ca80accfecb7c686f0212f85da5024129f01bd81b0 +bb90d58eefd17fb353ca143a4757421323238c5653a3bf9f28cabdce6ff9d946 +867a33fc9ffe0adabd3679b555a9ed3c181d3e108f776e13bb39794cb9f4edd7 +7a607e017fe054811b3ea3f5b02c95343a5eb449723c9fe7857441feab37cc93 +70c285d3d91df0a0e1bb21d022f68f0c0c8bfb311b8efd056f47c67b03b45dc9 +0bd78333d366796421469cda8df6f0095a5eee1a56621d055a5b12d6464cceee +9f5fb6a40ce44ab669786f4f0ff1f348c9d3712761a07eb8aac26c35c694e1cd +65b01b32a2319a381734864a06a349db71a2fba74ddd58010c94aeec901ddeb5 +41e0205df489d02664b4e2fa03a404c8aeeddd6d1506bfe56e2e8a6d3a83f79f +35f2d552dfff754bad59df45582e3aa87e6bd45725b2c44260e651b70af70186 +8b168e440bd70014be5c4ff89028997bde67279b107f9fec9b4b2f2dc112d811 +4dae65205429ffb3c9734df32328ede30565ad65d8a1aa620bd543286908d747 +d13cec2a2f19cafbd2ad480206f8b2b39524a2fee286cea20b22b67dde321e3e +3ed87d8f7d9b253a16c648de1c9c8cd84c4f2304510ee263083ac617954b7c9e +62f397daee458e60e6058addaa14ea573888162b6777c4b5e80c2fbfc8f75ebb +2026c01a1ea38b85c4fca949d15b9a470f36e0b697ef5dcee10c45f01230dc48 +728f50abafaa52ec5f2899b09db8b74f46ed55c8efbd3f54f6afb0691a992b15 +e1bfe3b6fcb6764227aabba94c4450183f139da7e12df63878b0aff0d07c51e5 +21a29ab9fa0482e9dcb043cf704f17bdc1fa1f79bac725d6fb01dda18a700eff +5d691d1573cb0ba677a9b1a62dc483fbbb7e4fb0ee0c87cd631f7145b710d181 +85d5bf85df1cff42d9dda4430a8f6f4b6f6c01d20055d8d9cf1d48f268e046a4 +9bc64bcbd7742d090608a1c025f39d44bad9a05ec2c7b5ea4b48959f1cab0974 +537bdbb8828a830843ecb3b6bac3589cb8a35fddf8a55fe4445ee3419ecb9dc1 +3c9a3045f5fa5264860b6e310854cfec5bf920061c6a4784d911fbd82c6b5353 +72cdc7ff3dba22cbd02303654e4d1ce6c5f03ea5719bb456d1ab804a6a9e08e1 +15d0ddbc46f2ff494f0703fcb9f6c079e5af3f4a7bb5a4546f9ef8d708732fbb +1bb4d11a942470e0a96d5c83d20343876d89fd6db3ae1fe60034cb97659382b8 +03a4c8ee4a01738285c8af5812c4de7a97b1eae85315c9497c082b28990e232d +7603a06ade5075fa217ef86ed78492c31ce4082f14a6952e0d07ca9d8e15589e +7c3f49cfde17055e8695923477b71b4c09986c62875e25576dfc3a3854c1cf5f +73004b97da00a3deef1be0aec1920342613d3e4f805eda2ac121809b02a42d3f +de9e9245943a23627ae0c1c34b5e6bb1504ceb67966e9b6f104fddff62e82b16 +cbe3d401aaff4d9b44236ef0d04b7edf16eb08b7d19862effe88b696d05008ae +ffbfd118722a55a1597604e232416c2190b36c30928f82b208006c26b85d7428 +7153fccc92a65f04229c8d7b2c27ac4294034a051b45f6ed5b0fa3e23af3b5a3 +5f996bb65cf298c4e15e98d228a719e1c968e7d5d0a75a9bc3cdf8b5c4a136cd +a6995d94f5dbe307ae1ca6beb56dfd09a6683bb1437fdcd537e43cb1633a72bc +1e72a5f98497227072d863dee990660c137064f8f73d78d9c5a40096dcff10a9 +4e3c9dff0d2bb80c429e2c135895b2b3c5be663adb1bf39e3125e4017a6050c5 +d4dac24a8149a6166cf87493f766d9706e13a4c3b443722d7ddedf777c5d0bdd +780e839b10a61dcbb8c06caf2246feccc66c6fbaaaf8270e06a4838391d7ba0a +a3d35b278235fff9a707e8da8344c078d88e8eb2b5e2f8cd8f2134d458221623 +1dd96524af97b92662292f6e1759e004e2255dbdc4e0a9fe007e550144af357a +32cd32e348fd2e60d4c10c33d032fc02ff8a897c4b4b5c35992e6caa8bc4c966 +6a520e2e98184efcb59e2d534fa34c428bb51998e68e91dc9382e28798845da1 +ae9d6e418c2e3b05373fe26901654e1e1a7849431681479cf05e0c19392ac9e0 +562794d94316670bdf9afe2d368fdc31fc2a2a98dc8f23bc236690d897e209b1 +c6048724f4ad378857640140a356919180b348fd6ceeb5da8e4b3f9dae1cda65 +fc155e10b53a271f23c65397711cedf404dc45dcfd9d3c87d57c1365cf9e6f9d +64a11df0f71f72ff52a8a4c899879f38e797867570844ce904c3104e28f1b85c +e31f5e4dc09852f5b47b4fcf2b1fb394f4a8c9cc8b807eaa9ad4d8ddd816a28d +7bdea3811e47722cb0a11f3967bfdc501f5f19f5b7f925455da271243465b55f +56030748235d6c1e8cda657c5fb7c1ef58427b148713c569d2fa172a2d32e50f +7440f4cb961d34feff587acfc3009b39005f8ef1b91c28718601d140034b4030 +05dcca93b5d4a0778cfc1a3fbf7e489221c88c27e05652d3c3aacae2cbcd9b5a +439d3687e32bdaa54a317a6f70833c88af86056dcd68e8546832e7662713ce20 +98e5bd9dcfee48545391246e794e408adbeba57fc3a3ba4e18e487abd6f26a3d +085eed9bf8e30a77c85271294eff2f8e3def17482c5455dd60fb942f85dc73ec +9f57db31ce83e7e3574e17004ebe6fd903f485e5ea88c8294ac48ed09afa41d3 +80ea17e2cd33190477a0492a51ba20be31a367e6260d0dbab050cedae7659cf5 +a67d94540d7022178ae1d4463f84630d51af81054a6b7ecf1229d9ba0a6773c8 +e3aa1a9d95416fbeea9ed901f1dab166058080d42f90499b415ad8aafd99ac0b +7220401edb7a32b298bd9b9010679a1f9369a5bbe7cbe04b2c395f1159c2a2fe +b4a85292714a8f491e29c703932acd583f6405828ca8331612f5f580c049da26 +22a27b7aef2806c427af57147beef345e56a2ad82b0fa3662a31828bab7f6b6a +abf00d5bdcf2d595ef576d7da2ea634a82458444145803d443560553a7d17313 +b67ce7fa22fe118e9e8187dae14e79860b371c83ae2ae787210a86a6fdcb95d0 +c05f1b2ac98eaf239af2469397fd8afa989eb8ba0c15412b9f90c1555cbef583 +25c0999b1b10ce4345e6e949b375a91ec348eda0b0d418ad25ae482e02cb47d9 +ec19b444406d720a45986bdf85b4181b8064872f65e7a93bde15ff80ebe555dd +8adfc28b6ab58525a6a72bbe50cde6461edd83ac9359c0042709e63ffda54a50 +a5a6e72058b498b7c494b2a7e68014bf1c354506c4dda52d7173e6530340f834 +7db62785ac8e70a8f560574249630f3f89c159f31ce437b8a86cac7f5b25ccfd +b2fc41fc8392430c296146477d501ea752cf52ec9bfbf462d12b39291f49ae74 +28485eec80df5a1fa01806b3013bda44477e671e87e82f58fab32ffc10c111cb +76e7099f297d6a67a7374e26109f751361768ef8118dca742c8f20774549a2d4 +da72d15706888cec1edbfba70bb8149b54655eba7caaa85529df4bea9ce0c633 +38837abff2597c6b75bd058dfe7091d3719efc3964d1a386b7c6b93d491b02ac +86b08ff115b548abdb68f67de3b6cd280ee1544ddf344782fe30913a21eadc6e +314f3ea2ab3d9a3783d5f9be76c4caed815af7def664098cf1a167444f31cf02 +b9229bfdd8109322df0cce8fe0405d523bd8020753f3d80f49365d5006829fed +63cb9571b219b3869dddfdc2212f0fd468aa3a8c78d06f58fc6be0753bf19eb2 +b014e28d06053e931257185ff8a46b2c443b163f9d9997cd2225a33ec6bef513 +41aeafb9f384bdb7f3c78de5d4adb511c16259b1916b29440fd8cc01dde8ccf4 +e8bf0a4dc53a1e26c020f813cab07eda515e7d395348ecbf8c64186fa5a81390 +7653da3f3143382a374b96398d14bf60fcc5f7603512bed7e8b33e7b20529244 +187795b01754b61d5aaab742be9be4532ddcbe6b88671076aa9551ffd58e4930 +1f3fa48529d85586f1e197dd896f91f0c64ce80bd48519f8c1bf9c4816622cad +d9cbbb97e7628a64f96b6816c5b0312bb98a23715c3de2a797015203e2787aa5 +ef40b3e17cac398805fe76a33819d4825f80654270445ba955779204f5e8fb5f +418edf66b627b992cd3db5f04b18b5dd3f742689b3182d41760bfe95be97e313 +ed97e32ecdc16d3d574a2ba1092408b5ad6c165a39eb148b2513bcdd01141a77 +0720028f31693360e9909897d85bcb5364188d391e34dc98d86d4909fb41a13a +cd4e43c7f943889aaf1d430714d1b0f3302432135a39b11be63f77d04780a191 +cb686729a89c7badec30d3a9b416c32350eb416fbd37104d038b0252a8b91f77 +45b543618155a76f06274dfcc284bfea8726e55ee8b47df6b4760e22c8f2020c +e0da1fbba9564cd974075c1670bbbfa32b5b1598d198a1a9b82d87a7814f5d6a +e5a97d890ae6e9307f3147d78d4fa40f5388b9759429acdb0e20d9ddc923f4cf +f2865f95a8fc0595724b0043e90091a2315ea8c071ab631ccd04c3ea77541646 +b2fae2bd69c5bb80849b85fcc583ed6bc743c7ab0e83634e9625262ca557911a +3715e19e727337fd16171908a75e44fd7f6ba76157167a214f11c228bb1f132a +b6cb965beb1aeb597276e4e1bf52614076a37eb859f9d61669257c195560586b +b567183114c9895464a71774bae8eb31e9de3c11e0011f85024f749a571a3e2f +0fa7d8ce0d53deb20fd2f10895bb8aed95ac89f8956a8c93e809536e9087cca8 +09106a42a59417359e0ec681c5905a6024bd3208fed44320b723392e3f900e90 +767a6af4c4e67b407b215422a6f409d59c309d1999f973fd9b3746d983b0bb9e +1675aa41b9f6713630710faa59328b3659f559a5e547451191d88e336863256e +d43a577b77f81bad982c3d06cbe5a12321cf45da2d300346d8534c4ed6f449e5 +14ad627693dd361913862aa14548113a553b5558f8da4f5fe5cce86ef8b6efec +00b188a5fa1ac6cf819110e6feb793411cfac4f900a379178c2d7990f8adfe06 +4d741594d2134678e7f9789fd72e87985334ce7e531f0855525b9dcac36196cd +2d75d8bbe2b02ad9b20184d54e9ac6bbcfdb0d13367e2b4b4310b9f89172d59c +385866af42d06f9477dbb56e8d3bc8ee8c129849080ced3d7b83d9dc1a32da0d +b79f6e1760b7b836e2d9a0b59dc7312a3cd10932fc771d14f0f2278479e7168f +2f4e058c0177456811b2de2b5358ef33a162bdbd4d908e3332930d0e1bfdcf35 +ebaad4210a5f80a39279c5faad2803a748d96651778d0ce97289bb70ba010d93 +60ca05073141c30ee35fb9b8d9eb3ba37cb97fe42fdeef382fd604a1cccbee9a +65716ccdb777bee502ce3b654612362291ab13fcb507ab797d697f4f32d85763 +39b9cf437eb119eba024e775fe01501a8e7982d266531a5a9316abcbaf5b9672 +8ffdd900cd9814cf82b9ee6e789309cbf1dfc11f715b1a201dda33cf7527da51 +cff0e36d2f4856808b522d5344596058508302f36554419f9654f941ca0804e6 +b38a6d596ca3fd660901d1c3553aa92bcc95703219cdb0cc8bb540c2e60ce0ad +0eaeab36ac18b3ae477967bf586ddc3a45b5949ca5fad78910e834d8c83faed8 +3cd8b0546efd2575a42e8d4e44c80f375c9d960686e6885a6cd283ad3c1f1a9e +8e0cd7ed0590ffcad9da423285a26c04960dfbde0a5315d81e5170ae081644b0 +2aee581ab984fc189b5adbfb155a52d9f7ed759091062e9d2b2c2b03c9272ebc +a0101422d252aeba66664b23a123ab5fb05da5c62e83934c10f7a9489fe6a26e +72ae45fa17dfe3c1badf296c09a375d2451b7b7ed5dfd262a7c74fa4a9a4f5d1 +f431bfd1e79decc99db3f7eddfa78dfc46a47c0881f500f8fdb96aeb4fc4dcaa +ae0f9687e6edb2519ea85fef772477c3e33ddb52900657f018ff227701992647 +c9db8e4802cb0d6976b1cb0e3dccbc573bfb38ecc9db8a95bed9c4d90c97d3b7 +0f87ecba2fc8b03a7088f1eb02875c27cbfa32efbbf38ddfa77ab23c8fb36d1b +ce1112bfc0de7f911f1b096461faf86cc41be0bf61ef31581847b1b478fe28c2 +cf6a34770e43a95e08ba67e429545a65bb9e6e18a6c4dd2a34ca9cfbdba9cfe6 +63826142391f15c543076928f9867bde8b2b1acefe68c777fbcb70707f4f91e4 +7eff73b0c3c26986d1ca582bd05873f4e40179723271d1799dc4fc5e3dd9cf77 +64e41b8aa8dfb907abf53e3a0007a714d6c941114f5beaac82c46927441e3402 +36c2fb70de002ae35627ee5119577ad7fcb9fe5deefc239aa09e6bef15aee873 +db24b3cd614565415a3077b20c1b095a5726ae475c889cd9341c93d4a1984709 +5ffa8e8ef4f31ea7dcf6375177f319a05e551a8905bb47c9f23cc5c0e5fcd8e0 +29b3072632a060e6891f2b77bc1da20cf7da33173db210baaaf8270e0315b6ff +3fd6c2207b1a429577d5d9d66a0f8268d4aaeb29681a21f7319ab813e2a1eadc +39b8eb7aec1c33cc62809a10ef560d2453ed7551f097960efb4e4708858d5729 +6307189fdfd3ab62c75a7c501fada7428e157752fcabfe629902715193acb11f +ca4aff2b0ed13442450e4f2a4873d5cc3689f7d4f7e372326e2f7093bd7df4d0 +ca957794a61a2e813e24155ee3a67c4312a06c72f84acba679e67e6c71f43027 +cdf8a21da3bb5f68e576405c1283016e541a3e9eadd67a20ff9ad7a658a8b831 +2f30c18c451f553c1149960156b201304263eff2f2549fef2e4906909c1b4904 +ced62fd9c0c973b82dd66044bfcd36e1991e0b6b84b6102258e205a458952aa9 +53832d094e6915c3a1669d4f532132424fc707dce60bf9ee9e06d4035394192d +922641adf5777d563ae7960c8cd6175dafb255747737b02c40687953c766601e +caf56e747afdc67f8163de81bec4dbd48b3712c0d24e92747d98d5d1da952de3 +eb9ccb3a132121cb1c9b2de42fe1417bea313043b5aec119bb0d1e3058a82087 +bea4d00203fefed8ac113723b1081e92ca7e91363b86eec7bb5dc2e123e41c66 +577dce271c93c667cd8665372d5d3b906070bd229489a91867551f3127591bca +b1ce86d7d9bbd5f265bebdca4c58af03023e9ba2c291d78b629ef48bdd731c45 +591edf98d4eae6290a00c331780943d1c6671ac237a2844cbb84082c06d39cd6 +b04a2e5819d27a25da749ee7c94488fff5f59eb0a3789522ea85eb999c66f359 +d1ecc77cfe14774fd76b97270e30e95bec696aef56f99123db82304bc662d8d4 +6b342e53171a512e7d435f3009de3613d91a6f32f9ec2e11bc98b09c4dc4d516 +8a2ed64ac351109e5e38a68caac84ab583421eafafee02980bf8d8fc700f1a00 +129564d5efcd4f7896130e76fbcc6c6ad66411285958e3d17c2d408960cecab4 +02c5068c43df99d4de6b9876ec4fa2128d9ddcb0f10aa89aa8935f22c9445804 +4c1b0ce6cd07c272cfaddab0719ef5cc8c597960b7eea7b4cb5a10c826bed1b8 +219d464d72a0be58ae80de6edf876c04dd2abdca41253efcefc0552989dea491 +9605795e6ecbac4ffbc39307ce1fc794d4bd78b64ae38b2750546b8613378f70 +7c5c29640874f1bc3549f9a381ec1d13ab38b1c20d59f90dbd2397a573ffc9df +525a4d4e995618a58148687c5c949e14c0879316236284a571a5a386fc94cb2c +c5f7327f9269996e2483e9c4f22a813db3ba38cd036a454d335497f53d654d6f +e28e4583febc2fe34cac50be37bb6e42b8f92f694cfd4f805c6423089bba4461 +8e36e92d90a06f749d8a1dfd93bd0645dc66cd18ee797ffc06d4938ed9fe7959 +ee2ee5daac4e5f2e15a8b4c311eff43f5ea1a13fb288ac57267b71bd0ae02964 +f1901a7b5005a834e366399eae62532648625bbc13c64c006c372491878ef7fc +645667f249fc7ba564e152012e485320fb3c5dffbfcd936a93916045e0ddf257 +992e927120370994664643e2d57678fb19f0754ec4c483a8b6ceae60d39703d9 +f309e68388cf20bc752caee575c86ba39575a07528b65400cbe9fdae6a5f307a +b199a54aaf70c5889bc64a30d5cce65c2276ed1d9fb30bcdc94a65941a2b0e76 +3940f7d243c8de8120b5b2f2995d2ec3c7be6421aa1f7a5f8b6050c17771c5f9 +d61330fb818df90f3062f9f21c23fd0a59d6ad28e023e0d3d7eb4dfbcf0c6bc9 +9fdfb74f740579c8460fa6755dfc800c5327da99e494d9e18efc6752f1e6eb31 +5e399606ddfe98339d085bf92634d2f557d2a07db440f45fc2e60732c51fc4c3 +047f9f6dfaccaea71a9b14ae1e22223987cfc33856fa6d78be0c8b4cfbd8d608 +96c0699ff248a80af31d111d3d7437427688430782e1e99858a2379852ca04de +bf7d0922b11865b5771d902dae865c3ff7aba28da86ce91a6c031a647b6d5676 +672480a7ea057dd805ade4318482e9f5c7e2592df1672342b98c8b67cf25dda2 +f69d55e28f1c35b070acca2e4c5100c18b102164f534b151375bf8e9ec27cd8e +e43a7a23cca2c5462ea92b202d9eaae4da36f8df69c38a4689b04ba3e6e6a2a7 +8b06763decd52595b21d5348e3f6fbfa775f8b88330a4f35bc3213a5ba19d277 +4fa8c256d06787e6aced43124b422d3ed2ca884c64da93933135926880b21cac +35e222c4b6076bb2b391357e0c643f04d209788fc140c7303c90a3c3faf5fccc +046d3b268154e017f1e4082819de8a5bef0c1725f008b936a243b2eb850d0900 +4560651003c30ae5fd462d8e68e4ae51d17b636bf9d45c7fe07255e470d2748e +f9720203181e528304f71c1fa2fdde7872ccfe55bb77c8a04b529cc5ff114c64 +544c4896f091965dafaa0eef5e8671d258f4303512567dfe2eacc764f0ab9a78 +206ddb0942d1dc868d52241185e7c830c57f31ca9c08453c6a8f35bfd7220a52 +3e3148beb6fca0c2d56048b7755f068220d59d4fc713056bde03b1146e8e4b37 +cb5cb8a90858920236e561fa21f179c12f7be7cb63eba15759bf0b6299ef3835 +b8d41edd37c1f1098fa2bf3cbbfe0f7a98620e7b072f5ce1c90bdb8d5f6fa9e7 +8629f3c6b4bfb047c9ac1869daf234e4a95bc0bb73f036de76595dcfa2d5e856 +22b48bec72edc8a798ae673dd434b01e89019a908f59089c9789f58b8350a43d +b00ca1fe192390daa4e85e7235492ce567dc403ae5fe8f0761274973e07ec119 +1b0ae1cb7f6f31076771d896139920861da5c58d3403a416f243f1b58cf54e94 +f3dbc9351633887e8d7ea6f88fc4a0dc6d2a471a78f98ebdc2a98613499a80fe +b166a4b803b7b4ed05ccabefb2405745f1ff28921a05a0245bfae09355910031 +180305de2f64f071a7abb75a72eff13539eecbc4cf54ff0bc87f6d72d8a742cf +5073aaf7942a137ab2f273e22391ad1d0dec9dafd58ec68553be5fc4e6c4936f +a3e67a86f4ec045cf294a1cb7f9a60ebe5178026fda700042cf5bfadac3d7ad3 +17f9bfb62ebd5946992569e9aedbdce9f3abfaecd6d8fee82559f0888d48f794 +697c54b805026ceb1d708751d88af0e5cf88332068833ceeb24223f5b5025384 +066f67ce49e586ebc4249bfb15074cb522c3626bf2571af43f0164b044b5aa66 +9d8217230edeae2453fe02f018bf8a8043cfd63d744388c12cc8430ca4157c81 +e7018b963021ef43aeb42f1f5246eedde76ad7507e65225430f2ed40877214ad +78a2e199f951e52790e30ca09c0ea8bb318756137639532e638661228e314364 +1b1d60aefb5222a3b724674ab6fbbc3445b878f99b629de47e52e36693dc4060 +9fcb048910f3d70211659cdbce05f0733af96afad264d1841b2fe33f3df5262a +92e98f7a5873f70b931a7c78863dbaacfde460906281d5ba5accd188edb2924a +bfc1c6313cf0cd29ac91d2d374734280adb1ec4b2dac9b53da1134b7ef26d10e +e05685ea4b31e5396c4281ba371b59b12516816675ef303fe4f01f1f84de922d +69edc0d18568c06d4dc79be0b9754b8f88632fc3a74fa418833aa2943c05c912 +b7b60343a7dc7a3f6f1aea9d83011afcc00619ca95cd8f97ea85176570bcb441 +e9b74ce8b100efa22290b3dc8113db1b383ec98f8367eca2844bf1742d752d29 +7cca604ed822c3f7b560300b39afe9fc8d9340735a718b09064157fd10d43dbf +96302c60195fa1d5bde0c68c4f235184898d0381849a6011239ed7d6c47814e0 +a163b82e56389248e7594fb9f4a2522ccea4eca0d36e1295b3ef67aead84cc8b +c297009eb5d21eaad7ab4176a443acadee13915c5ca44ff41ccc2bb9abb47fd9 +6461ec3d38876df77e5fa9993a300c39813f788e17320de56592806658b42a04 +dbcdaf7bd0684f445884e6f1a574467e52019ee8fc129ff3fe74fb03a5d67047 +80155de767defb2964317f6d058d5b8cc35324368469291ebb15cd320d566b96 +c5079d12493a8f84dda5005f8f3fd7038c40d1e704b4faade3ccbbdc7e90903d +fd3da3bfeb37ba41db2557640f2bbd6f3f49d9e37925007cb97f98c6e365d06d +282a433e1aa95dbef41be2facde3f5a08254a366a74b7a2f5c14898881d4be99 +aec4b0ee10022dcc55501637ef6f6570d437dc8120e63045002d7419057e5c15 +6a5539ebefa7d632d343a41df8804a6f855eaa3186b3f97fb7f79fe1377f5472 +04e186f1a97011fb950ecfbdeec1ff992b1ebc6837afbc0d9362c1712b114bb4 +4747c291759e7fee3f81b000f9ce65feaed5c16287f5e812f152ec27815bc6aa +35aaa245c882c9176baabcbb81548b5f271c42169287da48a7c6140af35f09a6 +b82abdc84b8220577cbf0ecf0d8edfd303f468ab9d6a2b89d806b3e19297eb13 +eedade8e405ae9e0e9412525f95e6a7716948fa2ac037dce19d67a156c5b813c +0af189b9b778bbfdf730c2050091018865e23d6cff0ea4fc0d26a0cc510ddf5f +456f6aa4f1c33fe7b40f5f8576b477970d6487275389ce7b2444f09e3fa5c426 +9090dc59354fba985544a261230fb1758bac67e142c4a1e71664d7f66eafd525 +22b83d1f2cbb5f97f04924e8cc4645b27331eae812266982efccbccc4ee93bed +e1e0ae7e88768e690cfaa0abba98973caff66daa632834527b26260e0a4b1655 +3994bdc9c729f2d45f72ba1c510a000b731ac3d9191e1faa5c9cbb7b94056d90 +f65df04c47abd4bc12b9ba0c1f84e4d77081d773a9dd939ba4c4b32785bbb337 +ab4df32d20ce0df7ef0374dcbf88be107e8813b5a769d530cded5649ec7de7de +0f7f373f006ce997b6f7bef0c52d49b8a62a620a37069ee851e7d23244f6a014 +4d50911d347551a63f9ea59cfe0159797af521c09bdf75e12a4a8e4c38ede4c4 +4e7a9712340d42110b7cbf4061ba2f2a5ddcf67a39eef57345975a9198fb8573 +f34b9a350845815873e4ddb7866c702ba7193fb92d21bb74d8bb4c49f2f3c7fc +3b703bcee9e7745fa637a9383786fc2729c73c29d2efa5ea274d9573265df506 +c1ddb510c9f3fdcd3a80c0ab90748651537efa2d8e0bf374472b5c7bb50b0101 +7263ffae7f90a979c3e5f3cd8a5cea478627890536251c4c16c0f63c1c822efa +66a75e01a68758fd97c5928bb2b1df6f2b74d2950015f2eacca793e7888c26ee +723e78f3cd926b1979bdf422bc83b4b51d1a0ae3ce120540e9b653728d769265 +c03c0a3cbee6240c0de90646e7ab730e5e0cf1124566bc16ec17989c1052f8e1 +84590223348e5b4510204322929d8632c4bd136c89169d45718a88babd7f2cda +62afba21cc46bb3207676b96695d911fb99bbf37b375ff4fb8be949fcc4b0481 +3776a3451fe65a47d623565160358c977d4bebce7aadea5648814b8769dfbaee +b8bc2da767da69b10daaff6a50b6a7006ab74f8bd0ec64e5681199b7f3bafeb9 +bd0ebd1a79554e8cf3e5896956d279d4d27202a4667afbc46b84c6b9873e8ef6 +9d5b0777a750a5c8ce86f3d5851cf3203e8b47edaabcc6c6256872f31ff228d5 +7b686b38b35d5dca23c755a5ab9e661630e61d1d376a46466b1f0100f66affcb +fd1d6befb5b196143998848e48119456d6f5791bf1473a2cacb9973bb80421fa +781d90e0c1e6912dcff9ff07ebe821aaff09597bdea4e71e72136c4e37946f0c +146b9d507ee79dc7a715cf4d65db2614cd87c5709112938acf9bb2e01187fc03 +5cea0fd5c2ca980adb6bbf5b9eb427971bed47970a13775be150a7a87bb2b8df +a92f8c86b98a36ab956ece9f5c562071306642d74f177ea0ebc1eadf96cda6ee +4c53703763505ff273c296a11adf59c4919f63c78f9b7c2fa998f5befc631ab5 +4dfec01d96fbd7d076357fd85f26eef6c10aaf99a7639c5111b3a13bd144bdfa +daf1fa9633b69feb2590a878ce4621251a2b860b3e1ad8d7a6ac1a896380f206 +158dbd525bde081e9e7c58f7aba0ba68a22065d3fb7638ab4b2027cfdf4dd926 +0f624b197d19691e1219f705d63781d6eac4ed8bddc3cbe2e7c735f73aabbfa8 +01081532536832bb4455483b827fa9f37d547a4d2cfc98707e5a4efe77037671 +faafb5489b64ea22fa51f2df96a89e8f986b3fa39e113be69438f1a4bb1b5d1f +33ed7ca77228938a98bf47fa54eeb2da8d81ecedec102f71c278d824c2bf5bb5 +37cde6342b1ac156946de7f6c4c12e1d639d83cbe78d8775cce11584a4edbcf4 +59c05abd0b590172401b83fe9cd49b347c01671277ea43400b1ff4212b3d02fa +cc6d384f815d7fdb652ab34d7bacca2e9b2b120de79e3532f81d778b6081d631 +32c88f10184f07abe8830a3f5efe712e7e3cac875f3b157ca3a0dd8a0417d512 +9554ac58171e09ae6ad91f69d3235be00c67d41e00b6988b7df3a07e5d65538b +6f600988178e4c98db360c5ded8f7f8b7866e6d3168a085ca9a823a347519ab3 +5f4fb80774aa4bcee175c02cbe39ea9a0ca56044f50ffb2fd637f925339d30ba +8f4f7fd7ea5a606dfd7b82ba69b4724c960a5cb49ad40f1900a0969cd912957f +345c08603ed7e8292789984bcfafc504dcfc19eadb79ee198dcb6539164db7bd +4d210c9bde5bfe4207c363af21967146511d70f7a0fd682afb045cf22a37bfaa +edf500dc18251dd086a8d2a91ceb979d2a1e9cb45a6b59afedf66174b764dfc1 +1048356c96b585d142f943ec97c62de95f9b8a8253ee0d6b2b0153c445563826 +787921b9a60417cd4075922332dfd82be6d45b581b581c24c4548ac5782f726b +0bf70d2d08493e9a96668054bccea2db3f66cfa6a4d37b36418f9fc8d8058c9f +e713810483a5e75b3f61cfc012dae494dfc2b717cc59e417e25e8c0e21f62186 +acab4158cdf47343ad8b73dc8e43dc792dd29897d8aa1fbb977e9a3dd20fd247 +d0ceb53d2fcc627179dabb49f2920cf8a1fa4d57f39da7e5ca0a94d377cbb20e +2c98445881201bebff5e33ce17d8089f552c3dea96bc70b99cdad2289a3686dc +b5aea099076ae9450c3aa43f18a3d98d711e43835c31f566866ca556b2945738 +f359ef7e7ade8e1f56bfbb0317fc2d08846163cf343c919adbe19686ab94f7b0 +7a06f3d97d5545df781e11a06b06b175fbdd1316580a66af1d94f4247f158c59 +d8e1fee6ecb6ad565e772fdcfead3898a5be123f2d0303ddda02b8e86c7baeea +70eca3cbd43509a85b853eb3286deae9e29921782ed417b13cf1e6775921b2dc +ff5b2424f98bf14408d446d0ab530d88f49d231315c6739ccd0cc8d01cfdc259 +f47bedfe7a53dd893cd5be51674e6ba162e1a8aeb2b21ad54819bd3d648318e5 +4d651933c280e81a327934ef0eebb83b795b3b384a129c16536bdb05bb2ea560 +72241eeb5f35e10fa050fc0f05fe4deb3e2e8eb52a97450c56594746d0278802 +9559abdc108ddd3431c2cea2da1886ebc7a973ef73038004fa13752c80a35ee2 +8e5772676df858dc9ff0d05c735576262b80e3e49751d78f2febd65ae4c1d0d7 +66cb53656583299d2c058bc94f272d398f72728e72368362a69f69af06a708f7 +ceac24a0846496457635fdfae466621eb4e0755230abb71bb5abe293abf7cc5f +8ea2fc15c66a5b2fc6a6d510a6730d9fb678a485616374f5c1c01b2ce834add5 +6f8dba31a95983c97af9e9ec5b8406fc67dc045c551ddf6131834edd18f79d55 +983aec1d18d5fb2209e87f1157df947772de42d04da8085d3691dc7010505c0f +a9724190d9a82611cf435b360971bdcd2e569629d98d439da052bda080ce1e33 +bfa5ebd35ef2e7dd77bd517f1cae2250b13a031c69bfe0d147919c53ad773024 +142ecb1a3ba1ab50a941fb54e63ef49edf844306f7e5d12c9090d2819dc6e450 +42936015482c7bd75693e910eaae10f04385f624083d00276d0499cf9891cecc +d31b06128a7afa49154eed960f37e7fc260e1372f1d4559062471db4f0db6faf +efd3e6e06b578e2ba8ffa1e9c3f5a787124a22e0111ae960bd85fb1d62b6ca5c +b2b3a87e3081470706237fcf936e37dc5b408d0c41299f921d810e01b5052751 +cfcc27024185194c147fe01bc1c4409c520b3e3a5c0f5514aea4cc899ca9e9ff +7834dfe5bb0b4b0b019c1e8163f294fb6ee50b05fec276b53f04160fce3defca +2c33ff34f6b1515705ecaba0aebd40a99fba99942bd8d451e1c1e489655daf7d +39437b97be715b11ff28fb291b972b143da98f5c66b2d02a47850765017bf4e9 +82e2bb732dc64b51fd4fdd3d8144d1231548dcc29bb9927280492da505dfe82a +dd17fb67b02ef0804bc82339d60dcc1c0f8789074747a805a7250f494dd1e9b9 +173110c4b3f2154e865371295ebad4e321f15826b3d3e61a400bdcd15ead2adc +2a5f00bc25e36413e46e195eab01069a35f34fe5c00f46b90d2e444c8d5e8a53 +bfaf1fa61745cec24611b2854a7ee8532b54b40ad523f955a4fa2a9c546dea87 +e6d9e2de21fc4b3b2da747fb3075a641b29f6d6cfc3ecd725f26972e31594686 +111bfe80caba23be92b04171b738c1709bad40060fb0b603d3a2ed6e7d49daa2 +627ea6916d3fc19815fbd0fcbe5d1ec8a8c7a6a7488b465973d3c1991664bf71 +003353d2b025d571348227ec1700407e16fc5bda2cae07dbe55bcd7dd0207219 +f4e61479f22c8b7aaa0ec7281e933379b5d25a6ad9ce46a1c67a488cbb315f2c +08fece286194bb86c66bfcda0fbc668b8b84c2af3e9cc85d065e17f55863529c +d1668f07dcd6e51caca4eca02811c1ffb9a4eaea01a41e8bbb12b1d23cdd10a4 +97d1a6b9ad43927837f9b12b9f703d414070ee06729c1e0f78d5f63629739f5d +95cbfaa9a695db4862149ee51c566b8f94f79ef9a3de87c0ebfd3bcdf4940bfb +314e1bcd17595f3d041b65e4e7765b60a192c4ed917b8361ba0b5fb4fce8f49c +b09412a1ae8f99d878a8fbdd375de3631a63119042e11e6d742f909fcd775784 +1f5a40a168b4da3dddc65d947ad0950a1a275fc72a923422db5fda3d54e4ed03 +a1ae04ab0f59134abf88aa65d6944affa2bd46ed8c5596062e4d32536d2c8ffd +e5cee1bf927d1affbf9dd4e214ef0f323a9f48af8ce0ef87e858edac7a6cbc3f +9ee530f7609cf023032a19298b334306ab3f5ed123b7652aaf77ef421dfa4ea2 +e1dbc68390082b50940aef52f583767e8a5d9eb33142f9883ec9dd26a4c0a446 +31e1b1e55031a9defc48060e783c7a56426e4f690aa6cd006c5a9fa76310d351 +9f8ba5c79c301bb370d30c7b3adcab60adb70e4b4cb9b9dbeac8bb08f07aba62 +3fa6c7805a38a4cf9c5b7f2ddd6dd510b174f7c63b2d5f4e391005bacb81b7e8 +5249518ce22a99e8811376e7a464e22fbdc4574ab3684b416dab3526b3bd0c75 +0acea306c0d448fc4942d2c61d44566f8a058ab93651eb319affdd9ecf2655c1 +d00500943b59360b6c75b780beaa2f1b98165ce2ea6a64aa9435ad5b4d57a089 +0fb6274b5f137ff957e2dc801dfcc8f778fec72a96b31e7457f421399dbd9dfa +c99e611405a24bdf0bdce785d6ade5a5c09ffb66f787bcc2ca4b7e0f5dad5453 +b3d87e5ba383065143952a9364df8cf4063b2f7b3ab30c263e5b92ec64c43c30 +502894c1b01fee36aac472a6e2adbb9b74129074e25e4cfa3c70e8ac2b3d645c +8f54f45ba3ed89629cb4f2f35c418ef74a194c496c4b2518429067932d57bc0f +7569bf4fcac26e621327db71e19eeb5335d8a6f25c99d6aea57bc6ca73238c6f +ea54a43c09c65c83d5319231adc05299a668372a9f77833064c460b312fd39e7 +49426fa209cb1f5d3d90c043603c8f997470de5cded5bef35daf0145f5dca5da +50de2bb8b678e6f36c53643aa97f3fb0bfb3191ef20abf0022d160732455237d +45d23239e4700ca5d7b71231d537bd032c3f2e7fee61b5e32caafd5de34b2a31 +9a4745e6e94da94286497233f66637586af51856552b0430710606bb3aefe457 +acaae21b8cdcd140b2bc4ff16705fcc80d04e0bd9b6a3207d933388b624893fc +349fce3e420690841637e1ce83247d5de15a109350c60944853a42fc3adabeeb +69e78bb11a5143fd2c465be7f72c9478a96883d1369414bcbc5b20bb60457eb5 +22e748594f23e082c29689369e48e01187efc53b3637218a36813cc4da7faa36 +9e29596f5de513074eb3a364b82e1af8a0cdcc513ec66d60f1173dd50937ee3f +dc888950c9a6b86ceebd3bf64b6319eee63db2199b824dc84e53553442b80e6a +6f29d9ed68d767c3d1ae78037e2c7835800e08a67c5be8f57571a71426c25e30 +a80439f9976ba351cc64a15249905b04742ab07e98b867d4985444e7a9096346 +8f70bfe63fe94f0a4f23257703e8793d059ffdc798ef3cf642a870aa311abca2 +c2a19fcbe68054c2bc94e2d030e8bede94db3c839e3d85302c297369903b9c9a +fc45596809d3c3f2be2c287d8b49273640d1dde3c7a4000616cb0821a01ee775 +e7e1b96c796acb7764ce16478e2c98547840df255eb133fe407b5081d808f368 +c575cc039dfd5fcc9e332e629e8565cf227079d25627dcd5e4d6a0710b486b00 +7189b9cc441a094d4be628d1990b63cbc5cb7fa127f49bd2b5ac659115bbb018 +dfb667d4154218d907abe558d4fa3ea3c753aef0e05b94772e6ddba0b88961ce +49d8d6f1d85930efde0fbd9dfa0682c5a8adb81d8d0be2fcd209238765af1977 +dcb18c4f80bbafa42b4cccb09f9da4db574398d30754f0c2870f0ff1d628dd4c +b57e3791ffd27ee4a9793f3ee5e105a917cbf9b6dc9fb7a32c752519b8334b71 +8fbdd41eb77d5e6c5438c6cb200559b914cb5b562cb914d777f889dc0af180a0 +3d2c2036358f8a105ec2a6f6313155cb96c5d792e2dd3c2fec6c56084f295047 +c1ef4ce1317930046ee382913d7df30626801fc5f6d1501fa31e643345128e7c +1f9dbd43ba580ef2bffd9af99a7a325a4e39f02f4ff5d372fd1ad895c3741914 +b1b944da9fefbe268e9a4763767718dae9d44728591c4e60845231f31ee5e929 +30f7c26c3235548323c5d14c3d7bc73033940071739c215441a9e72f2ff242f5 +5c65173ef32f00001340a53936c3f926a54e0818aa8cb28dd6fe9fd1c62ea09e +141fd00782dc1203b43dadebeb2104286082a14af250bf64ec9bc75371a9542a +2d27f971d3ff426371bfaae72a51d2aba44e859625120ccdfb350ba1c7f31413 +4669405f69b8515e23b0e305f3cfb9b0f29b410d26062bc8a1930ca753184e1e +dc97b40c9769450780c4a742ece35d726475e7d5ca91700e23cd325c7853b6c2 +b9b439ea12ea4576d7267e7e19baa00665f42d0cd312715e3b92493bb6a3a6db +54afd1f4c5e7f7bb20be232591b37778de18eecb0d6cfd30d247240b777501c8 +82b269a8959952836bf7d26713019f7677937a97354fd1106f6ee6d09f6c75d0 +296b22831ecac76882f68bb9434dfeef9d18f0d5b8ff6615dcafb348ec7a9866 +6fd749afbcf651be1ed1ca671a6013ce0c183f1ea86566dc9159cd9383b9e5ea +9900ae6c384ce3409aa4db1603fdc010083db0f0ee139b27c6090b8135799e8b +420f8f7b10e7334d53df7a0b1581485bc449776ca4b2678a490f9d0ec5207514 +de7bf64d8cf9711cbaef78b6b599d518d77b4544434b8cd95d04149e1b546204 +32b266a48da343d0704d10661485e4c11d4fd05fb727ab2db4975482edbc7c42 +b9b3af2806828da2173a304f83b9cff0ac4c5d4f553fe7276caec477bef48321 +ba153884a05e23002239cef2f5c95d8f6e99dc9554ea767409ce0108e73b76a4 +273aa49f123dfd32d27fb45f80622c7f61bc3242b8e00e6f50ea21d0b2c35f0f +10308818835feeb760d0ae64c755aae98e40eacb8f0ce744c8aa6d6b5c1d256a +0a476118f5f2d1de2bf12a0dfa68ca2a2e99f5cc0fb1aeb3e56cd8ee3221dd3d +5ad1fd57901727acb63a9aac3aef6c753f57e34aec57d0876b442066c2e324cf +b6637243db0a9cb9d2fe8e82e0dd2d513ad2b33f99bdf99b5c551cc0114da38e +392ac1ba0d3f536963f6e078a6a123f973395ae4846dbd335e30af20c3c23134 +91e2bc5987f44b6d377af7c5242e4f9ffb43517017dc7340f54460977dd8f8b5 +d1461c6707040c47de84d198d4164ddd7e7715a70abd458507fb336b824ba24c +ac0e6901295372b2863c119d0ee2fab224f7c0b56af33c8b82436ba9303cc0ee +3a809129e3c15b8c7a45538ec88fd1597406f696adc7ecdce383d3715325bcec +7563f1f4baaad70af9d24dbe272710dbff77d95c3462aec9e75a1e24e9f0f716 +2f82f1410d4b77344983fcae866279a98112d6718ff23da33bf16255c1b10736 +e8f98e8ef876d73ab139009bda89836d18dd03dfb13e332c50227032ff403ec7 +26dc8fa78d77aaef79bee7e0656275fbb6cc6aba6bec4920167380a1b07f8ede +5fa970f56f530ea2cb06be96def3b5327ff0f35d2d2152d23d712013bfb47b1f +e34f9339712f75c84d90df05f9ba2e8ab689f7804c588e5e075942b6dd11d875 +c56c016d18f48d569ff5ddcf4e323fd9fe03d5c702da6b98776601e925c73ff1 +7943756f5a4867c8d9c3f0a23280e873a891a6371c258e1cca3c4dd8be44e16c +267512e5fcf49a6db090e47da0f7a2f56804992df1c5387639b67aea74912727 +2d54a49823165ad330dd59020f1351f22d2172d018383555b8bd88bd50d5f715 +0839576ac6b14c3d651b54411167189c9b93f44e1783880a4c1b31f671988e19 +be05d3e519b72857420d6053ee7e459e98b31ee77dbe9242fb65d39e7065b67d +4c4b6619bb0a8bf1f860b98111710a61e2038d8ecf06c4f825322a66d327a631 +0bc1e8941fc36ff52d7286dfa8d2c38b76864f062457c198ee7335602cd975ec +1958a3930918b4959aeee256b98e0bbba1c370c9ea62913e9ef33ec799bcccea +de68997283d202476f1f065861c7d611478ffca395677e4152bc82e9686bc4fa +a82c0cc2a7e8b025eabf0fdc11e0564eab69bcdd8c4a05e5c249164c117ba859 +3b0d1c7293455320b0dd104b95afbfde7a03c0ec5b25f9d9ac6accc4de9ce736 +eab4c6726b23a116ff885b29258a57981be31f03ea5c5bf6db8c9ba21b831f37 +41c32223133c36127a0b3ea1d378a31002722f439564eaa70bf9c6465c3a7d03 +da8deaf66b1534bf11654562b6f4ee776d5fd7f3d288b51bb1e78808d261120b +b367cab8ac4ad2e910abe6bd80f9d421127cacdd282116a4bd376ff6999746f1 +4202272291588b6acc250700f32398d7ca3229bdad1e2244fa8d5a93af30fd0b +98f114afb0e4f4f917aa0935f735ec4d5d3293ba3c9d70af980d3fc9b9ba6db0 +ec2d4038a4c9872775c3ff227583bf4a0bb3baa3a14fa3757b01c461b2f6b1c9 +4e549e58ea596670aa747ee95f8b881391593f409cf52daeed278831aaede2f4 +b7dc53a8ea279127c7ac74bd500f97c86a513e546e05b343a3d590b7081df88a +3acc4d21a3c8bb060bd4ac8cf01971a8ba33d1e7828a5e64453028be2731bb48 +dec51bd85a6114c8dbb2f6ee87ed07af749318c90fb75a672b2b9c656c0b760c +ee4c6c462f9d6fae1d26469b37a043720fc710031abe62cf4deb987749340f27 +43a142310687a8b5822724b7b0657e7b291e803d14d2eee8b795b432a983f54e +53b17161d32c7a2d937fc8151c37866d3e25469c346b59c13930312fbbed651b +3019b9f09ef2c2a217780eebe098bb92f43e86c1062e161110d23b17b9b92682 +e32feb15891454b1c6201c375d58c4f66bb0a322fa8cdcdb2ad5556a9b6f0eea +2b3066c1c89a44adf94a7ee1cf4e15d51ae4c17052ac66df51d27e2b1cc36871 +14867d0fc33ea44338e9823c1016ee6263b1bf8365b900d2acdf2dc41b53429c +b64e9e89bf148370f62822b51bc4faf675fac2c9cf47a29f34f37628a471c4e3 +6daa47bc0b23ea7c1933d849ed2cec6eecc3ca56cc93a14a4258ce5148c0dc0c +f4f236316363140a32b91a4a7d78f7bd49e9e138b037621e52dd5e8e30062fb4 +1c537aac83e2e85b2e57cb43102568966d75c37fedd7799108a24de96670fd6a +4e5d9b9b778b6d25d0030070ba7329e482c82696e65df223e0579823f0db7323 +e7ff8a4bbe8ed37afde9a15deb7fc8521a1179e9197e2d3e6640e591c50606e9 +11815ea278b0809d5b7ed1dac77d333638b027e340fb624e9f1d6fdc40ad7cf5 +bc8b03e4cae755be841a9c72c86930024006b17f89f9d4ee22bef17b5baf4cd1 +364f889aecf94c1cce61909dd22f6d35a389136125d44a6b4c27efac337d8e46 +6d657a804eefea97ad0b436468e088a93764365d2481aa2d5e79ab437ecde035 +43f6023c3b75a1eb4c5b1685bf0eb3b9e3944a78c9aa0d410d20f7e366670095 +8f17d09d8b713ba121c46774ce83b09ce675193b845ace5496ed1ed96bd0f1bf +505353ed69f2aab2eef00169531e57f8ae498ec78d5d01aa45f4d7e2c96c486b +e14a1b21a1b61f6e73c970630692e385184d32c08036af05fe240976397d06e1 +18892245ebace16be7ad3445945b9edfd4794f190bc4bdd159813aba09f80544 +58a0c5d5b5624fe081c09dcf2b1707890dbc43def71d3222f8f853a5d169fdaa +95a33d1667b9e9bd7bf5883cdab58f17708bed530ebf7eee4acb2c9bae6b8337 +f1b4cb61b37c32cc0b3e390fdf35df5bb198a2d704ffbee24e27c4c1248f3f85 +606de45396611b4ba6ddbe1e9434e7e48273365ec73dd8df8aa378822e6f1f6f +8f35454c47ac054c77d62fddaa17b41f60997bb9f1ba5b700e7f840f1cbad1cd +e2305a92564e0f4c88bc4f3ccc6ee1175af3b2f83cbc57fcf10f0e63e7f635e7 +1e428064be1542f59407f2a18f70adb7d0eeff6baf6ed415d7a2a0237d17a726 +e84344dd77c48b43f47451142ae90d22b0e90e993715c55d0be8c808944f24d7 +d3b167f8f6f6469aba9fba2bde048298e85784ade8d96fe228ae328a0c8532b8 +1d97be36095fb1a3930417db8c50713f86e647113b607c7c93bfb424316e1aa4 +4f8543880efeb8b9be6fc7b978a4acaae9782a2721757f32173cc39142103963 +9da323208310b292114a62ff42e3cc0c986f709f986e07b9364634fad4a3be7a +8a63cb7b26036eb8515b8ae6af058874ca36054c184f2626ec2683bf21304e1b +5fde01772a0895de5ae8caa031125b614a83b949bf40681252218b10f5d4ec6c +21e8190dafab34551a3b8712b13d195ad6c934cf96b9da70302e84b34e6f8bc0 +ef3d383ccb7adb2e5d67ee464f9b2124cd034dd4ffb20962a6abd3764694e07f +4b4d244fad6fcee6167f5f44f943a02caa9b326726e949a8424496a79f5acb37 +d8c7c3b10d5fec76b568ee77b02061eec7bfc67c9e75ea1784e15ecaf2bade6b +48a80532beea72fbe2ce5062da978663984b2cfcf067ddef4de6155f60a6c34b +b469c3db6fdc40e5f79f3562cf6f8bc43ff8032692ec0f95a03263e2cd7cbfe7 +5b2f4a7c4dc6b8445dbecf16b800f43a6835ba3226b5b112cb09a18bb0161210 +4ab91a24919291406a436f4cafde0ed998da1b99718d003d3afa3729203b5999 +a87df0b91c5adda6e678039344bb36495fb1b5e5965fcfc86f6f61763d48c0d3 +7c55d221b1fded8a9a359371f8c08c778e269334c2af994b75186f3b75b7f61f +6d6d48def0aa6856962f7b9c468c795abec3b622ed16241f4c506963acf2cb36 +29ab91296d06193741f36343fe0f315877a090df94858d93c527d44670760ba5 +68b61609a3d750e4153c0f17dcd5f870b3a38b7d2272ee60a24668afc2b54084 +63664a6fff7ebdf7d2bdf9b1636b17041bb12f49ee3cda336f84c77746fb5036 +61b18775cf02fbb4c635fd09886798b09085b8cdb795bab93438ad36f4e9c23b +b30e1fcff1bab17fe49566f755ff904cbc11da5e966a545c6c7d7259ba4c729a +391ae47953a99bc4d500d68420204e23a07f6c0e137bd1a7034d670e1e9d8804 +1bc039653a023a6edcae8f73c93ddcd8a2e85396f5debed0d0565be384f21c5f +1171e37ce2443cd8ea5b20da6bab9b62ce5e8f1f485a4b3fd7fb22ba4bdd28df +f76493059c56b7a5c65209ee98f2e81ab6e25cd0a0f81cb511004e9da7fcd65a +8e73b549ee33577db68adc05e0b24e820500cd50523470eb760844155d4ffcd1 +759d5f50b803888f3bb3a616f99aad9a18a745fc6c248684c2b0df40e38234fe +1d21017d2a7a1def67c9dd2884d2239e9e1790910a8486e5cd001d2aed32e05c +bf6fd016f4e70e6af610330f47048bfc8d0a490e60b9e27cc75098a74147b30f +267ca6983b5940b8ce47d4fdbfc3a7f89f78ff4c35ec0a50228aed5907e05dd7 +ea33ef10c079981b1ab1c361d78f58f78fcbb3d9d4a569e0c8e1f86067bd61a6 +cdcc34c490078ea150b792d466b7a6a1a4ed7c46f4ca2e46800f5498820464f2 +c88c8e6ea79bac3535fe2c12f9e121a07588426e60067e13e77999939ac6e36d +9b63c024d67d2dd1a1e7172a6441a051b2e1405877aea4ad0e78cabb4cff67cb +82535954d4ba25bbffaf67dfa0d2a889592d2ba5718168b3a620ed8fcc10720f +b25da0cabd8265af47ce144b68c6058350d643d8f0746c43ace3b7445efebca4 +8d48d6f46c9154a95a4f4b8962fe1392418ab22e84ffe824554c74679bfd6662 +09b79c6d147858aa4ea978389503c1b8f0dd5ce10af89739f19a42a932c3cc14 +25882a16c505ddd2547572b93581ae8f0eea2c7725f91b8b2bddfed70ce9b39c +398a0beb2d83471822dc81039695f6fda204907ea0078d854dc4b86318921169 +c744ac7d846af8980e123b6219f8663b9fdbaa3416e6cba8ae367755309372ee +84b812650858053cd0f7f2d4e62d8905b0cd349112adac19953517ac36219044 +3cfb831fbe6e045dc567c182337d4148036e6e715a366a7e2be5bf0da704808d +7bf418275826e99d696b0c296e7b5a15f5e63f9c90c5ac093822290c8d254e7e +828104afc3ef7c5a8d8fe631f191e266434f34d9e10619a7f4b7df6566c86463 +a86f6dfff94f01f8b4c7688e999f306a65628679ab9123af6dca39e88808dfe3 +e99107b918a8dbb02b1d5ed0f6bb82d115cb36889e5aa14c9cef78bf09d3b429 +c1e3cf2ff96d289a6279d186130ec5cfcdd5a7dea4d23124f012646dca173108 +2ad555c142a587d98fca7b8308cccf3856b0901dbb3ca53082b368cd2850613b +32da388cffd23ab28d932eeff2a7388295286539aaf03746f35eb28338ad23f9 +f4fb3c91c79ab2fef1e061cdf2aa1f2a991b39fd0afa1063cd54dae5d31d2f44 +516cd6be0ee051bbb0201cc747a04d5b171d4f13686e77b9ebf9ba2236886c4a +505461037b7a5f2ee8db790e6fdfd047033354f60786c1f2c00aa6847c8fa0f6 +3ab3215c78229d47364fc91ac88f98eec9e5d96ecaf41c0aedb88dc216964a52 +54bf9f88a7bc9f5ed16fd210252dd2f8e7f54ca4b4ef4a7356023556fb69a31e +72df664882f57b786417d6955b17783e9c206fd33064f6d9a9e23ca274189782 +1c18375d12d1ee22e74713f6911c3ab08b1d7f35f00f18f5e9b669ad15d4e1ad +0831fb8edaa74fc257fcc5ab9ade88ed85a19cc22d32b2a9e2ff3830e76caa2d +15f5c1fe3fc21bd1eb96d1d35e8966ac563d1ea40d6d3d2b79a9c602bafadceb +31cc10aa90012955cef8982620ae3d6d01ce14bc184f5dcdbebf94cfb5b10c42 +d174ae261dbed22fb969fcf1bb64f2bdfe0e43ef54eacce5fb5e537e872eb1bd +d7070d3bee6768186c4bc824cb828830b8696af783d3410a62fca2b996aaafab +4ee639122e65f121b941485cfb581c57df7e0c5b7e4c912b75eb6409352ff5c0 +33b1c7e4dca272245235cd8b23a5e9452652d212fad18eaa899935b90bebf320 +3c50b223eb1caaa160a4ce8469a1311c69ba2ae787edc9ee304f32afa013a0e9 +092d80c29dde16413909f3d00f9844e86dc234442748128e96b3ee0d243ac8a8 +00d872aba50e81604e5270aa9972e57b021dbb1eac08a064d250df6acf727c6a +098c99b2074af3b4bf14913fe867707fe0f9b058e05c38205d1603925f7fe1a2 +54eaa39ce49ff00bfb494cbfeec9b738750b53feaead8bce2bfa1e20cedb5e2f +d815755c40352198c1daa5d092c700d3745eaf183bc281b86e7762985bb5f730 +baa1ffa889dbb0e2f7aee08d5abc2180466eecef7c588a1c0f78453685526911 +165bcbf5cf3e9e +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +/F124_0 /QYKIKI+NimbusMonL-Regu 1 1 +[ /.notdef/.notdef/fi/fl/.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/hyphen/period/slash + /zero/one/two/three/four/five/six/seven + /eight/nine/colon/semicolon/less/equal/greater/question + /at/A/B/C/D/E/F/G + /H/I/J/K/L/M/N/O + /P/Q/R/S/T/U/V/W + /X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore + /quoteleft/a/b/c/d/e/f/g + /h/i/j/k/l/m/n/o + /p/q/r/s/t/u/v/w + /x/y/z/braceleft/bar/braceright/asciitilde/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/bullet/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/exclamdown/cent/sterling/fraction/yen/florin/section + /currency/copyright/quotedblleft/guillemotleft/guilsinglleft/guilsinglright/fi/fl + /.notdef/endash/dagger/daggerdbl/periodcentered/.notdef/paragraph/bullet + /quotesinglbase/quotedblbase/quotedblright/guillemotright/ellipsis/perthousand/.notdef/questiondown + /.notdef/grave/acute/circumflex/tilde/macron/breve/dotaccent + /dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut/ogonek/caron + /emdash/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/AE/.notdef/ordfeminine/.notdef/.notdef/.notdef/.notdef + /Lslash/Oslash/OE/ordmasculine/.notdef/.notdef/.notdef/.notdef + /.notdef/ae/.notdef/.notdef/.notdef/dotlessi/.notdef/.notdef + /lslash/oslash/oe/germandbls/.notdef/.notdef/.notdef/.notdef] +pdfMakeFont +%%BeginResource: font BITXNG+CMMI10 +%!PS-AdobeFont-1.0: CMMI10 003.002 +%%Title: CMMI10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMMI10. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMMI10 known{/CMMI10 findfont dup/UniqueID known{dup +/UniqueID get 5087385 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /BITXNG+CMMI10 def +/FontBBox {-32 -250 1048 750 }readonly def +/UniqueID 5087385 def +/PaintType 0 def +/FontInfo 10 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMMI10.) readonly def +/FullName (CMMI10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +/ascent 750 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 45 /arrowhookright put +dup 58 /period put +readonly def +currentdict end +currentfile eexec +d9d66f633b846ab284bcf8b0411b772de5ce3c05ef98f858322dcea45e0874c5 +45d25fe192539d9cda4baa46d9c431465e6abf4e4271f89eded7f37be4b31fb4 +7934f62d1f46e8671f6290d6fff601d4937bf71c22d60fb800a15796421e3aa7 +72c500501d8b10c0093f6467c553250f7c27b2c3d893772614a846374a85bc4e +bec0b0a89c4c161c3956ece25274b962c854e535f418279fe26d8f83e38c5c89 +974e9a224b3cbef90a9277af10e0c7cac8dc11c41dc18b814a7682e5f0248674 +11453bc81c443407af56dca20efc9fa776eb9a127b62471340eb64c5abdf2996 +f8b24ef268e4f2eb5d212894c037686094668c31ec7af91d1170dc14429872a0 +a3e68a64db9e871f03b7c73e93f77356c3996948c2deade21d6b4a87854b79da +d4c3d1e0fc754b97495bcfc684282c4d923dfeace4ec7db525bd8d76668602ba +27b09611e4452b169c29ea7d6683a2c6246c9ddcf62885d457325b389868bc54 +3ea6dc3984ba80581133330d766998ae550e2fb5e7c707a559f67b7a34fea2f3 +bebe4226da71af8b6e8d128c7ae0b3dc7c9aa4a1faef312fc9b46399b18c437a +776de1f67caf78e15d4cc76d6fa57dad7abc6d35ede0d7118e8c6f3a201f9ea9 +eabf8a848d182eba8922addbe3c488f51eac02906400a84ea0abfaf48116cdc6 +6fbc00330a76a8818cfaeb7afdeb029a204e0a70b47a05aa50153b56d2bf6736 +c7a2c50b023ed92cfff13eba974f804a346d4130ccfd5233b6d6b92a14c87bbe +2ba216bae4123911e1856975e5cf4d94e44f400f687d2d13db288e0d821451c8 +83e9928f8cbc41e0f4b99f8b29d3b11bd4ed0cbca83d81082e39a9e79cebf433 +671b1af39c3d0e1f5bbe5f1fff62ff6f5f15f0421c56a4dffac682cb07b6f257 +221fed1902e4b69d9bc2e061f2e96f5a46734f91298494a425ef6432f2b9778c +4ebbadd3483ef5447df5f008db9d91c559950ebcedb4b1316a5aae8367a80e06 +bf3162beb99c4aaa617c60be688da7627f29c1775983ef635b26306a94f0b258 +003779f8670a1398681953b785a226057f7d1270fe2dd2ea66d65e2061fbd65f +0ac51b6c347a56e9f3e86e52f3e0bf1d5f8d6540afb32a027a7c96919557692e +b739cc298ec7999b4286538edf7333cf8f8f6ba02c5e8c62929af07acbb90861 +0bcb85345f4206e3ea130512dcfbc6cefa31ef2bd1da11d3010fec57b5b232ca +706f9c44fb9cab8903be783eca66d748b3fa5b1f5d5445f6c16a9a52c88a7e2f +2bfb0be4e416ea209a9810dd6c38e47a58dc9270b2f49f9b9d482156f7dc8164 +b621b6803b6434a2a354a50fd9353a2ce3fa761423634b8f2adcd63b2b7acf15 +07588caf127a0d6b2017a451d3df77c53e6171c66236e5318d49fab9ce4b1026 +853f65d0d5f7913d88ea66b9b63cf06a4bfc8ed3246bb86cf6de255ff46d245d +109939e32dc483a0e5176b614ccb7f1adcf99854cf50317bd081131a146ea089 +8ed59e46da7b6254bdccbc660686e2eda0ad7b894cd2eb2688c0c00aca589d39 +e3caa6e0faf7eeb5df3e3f8113dae4b454a0d8c86fee52779ad3e13a0a871e9b +65b9ef0a2ff20989bae81d1cc1181679fbedb80e7d84a08774e6da58a283ba22 +3780f2717484e066fa7dc012e6d19429b08638045352d358957917123c9c73b4 +326a954f5ebce183ba1025c00c8f559dba85e07b3ed48d2fa0acafa9436d6fdf +e530ce25ac7da170db1764e77b6816343e8a128a075e7744a6f0406551f4640e +c403ea61696459d15ee040bfb53f08700c69333b1cb28142c5b9411d65fbfb1e +c7f4f50c03d122ad4b63e9e65f0a0af43efcc9fc546fd13da42a1c13b8c9cbfa +79a480d923701306249955ce1c61a680b2809d3551325a333a189db71bc83c59 +47d17b31f8ff63564919b00336285f724d22f889748564808083ddaa4eeb8632 +5d636961e1f634f3ff3def1dcd7299bb7679dbaf685e2ac1484bd9b17c5cf4d8 +59897713b51a4deba3332c2ab5c48a76357d2eaaa539a617b09f223661bcb411 +0e6559e99a7d900336a9327d4b8330ee5f56b016cebb8c07dbcc2fa736c07ecb +8930f26b429288c6fe6cee3e7792de58ea3ce248598db0c604787612bd137d80 +e4462d249b229b62142128b57a6b44515262743bb3c70ee96aa4b8c49d6b0be4 +4e19f634add30634f999f4dfb3dcff6a412a9b6067d28751aab1b20928a6e73b +cb81b0510d551f84437062e8cd403bf8c343003965e926465b288b0aa2fc85f9 +90f9a63fce188d72008aed98bcba5ff4ae850711d2664f0857ded002e3a89fa8 +75f930ddf7918d6b2f92ae26af35f50cc9d2a8f9b5d5d80981b12ddf4c59565a +aa62ec34589e5bcc3075cc6a163e45d46bb280b22158c5c04c90beb6f8a1c791 +5597b0f69be3204d876cfa54481cc86ed2fe799bc46555c6c6fffc73854104dc +9c8a6f85331fce7c5d1f20af5d99e4e61b7ab981dd4eae26951a9447d5553140 +b5862e2f39023bc7d14901eacf467a9424a6be8055d82f4b02036cd766367871 +e0a01d09790ab2777db18248482fb32a25fadb62956b93affc59b1796f78d0b6 +6aaeee9778a3b253bd98035c79b5296e173fba9e56e8824ab6191ef9062b1fc8 +1b6b6185a05b167adccc6698b1801297d766492add5b66193d024d121633d329 +25bcf1a9ae109371aaaeb64f2805bf5c2d5a218c191e9eeb4ac30a48291c7251 +f690b51d5135f6a37f5418624c7d2f3ece356b12ec18f73d5177a24ffe371635 +fc88231b3a95d72ca2555f164c503f91b5c7ca174e43aee6534df6d569efd50d +da3e950e11c6cff788e50ce5f1332ad76a2357c39d44ea38e88b24f2d37cf29e +21b7468adfcacc8ab8fe1ae9da4c933b5f7f0a6451964a4924b6ba96c359c828 +d818166d5271e813f7a34a5b18927e66d61003392c96ab36b3e2175f31faa3d3 +7e77200bbbeba91c532c053f318f3f83080bf3d641d4c5df796c2882e34c01b9 +cf74bba01f03ef559012eeece809c019ab6d40d22a16fb9054143990db45b902 +a5574f672dda96d6c18c0fb048e970e6180e6148061e22085c7aa4fdc2102fd2 +d31e84456a56057b9d3189f331cc8354b195564cfdd23579574b7c7a80d2f3e3 +97f07cdab67407a46a4264e985563dae7ad933dac054d64a7ebce65bb2beb5fe +d53360fd76a0fe706e7283550c4d5657aa9bf62ee713592d74e89998e9b0adb2 +327a9dd5f19184a500870a3c53367431b56cc4dd60bb629ae68a009fba0049eb +16d11d5f299d5a99f3d45f6510450e53740da5556335eccd43e1408b826fc535 +10c7784c44cdbf41988ab67ffdc54ea61dd05208204c8bed9c66c678e6324428 +9682cc6ea0b2dad69cdb69dc8daacfd1a98c730dc3d9bc8d83e2fa2e72de08b0 +031ef3455ba92d03acfdb7ecf50ee883a8817abd96e58f72ae050feae0d224a5 +42aa0b4c022f8a90e73ab84216f520d6ded72680471b9ed2ce317536305d7360 +810a92f4957c9aba9328b116349fdfa728e9f042b2fd2d116bbcbbb99ec6966b +a5e1f4fbbb4b1eae6d8bdd40de5fa44127e6d7c05abad3c012082c245265096d +d4445b03ad8dc08d707ecbf0aef0890b0658dc9341fd386d417ad9f5e79c0464 +be4e3b22e4997e1806d192a8be70dfbcf69715b8194347a60e80934ed09fb08e +c4df7c3b204b07ee3610c041dff7d4c76060e4be6a3a2f0b0217005ab38f80ff +fe55a6252afa361b5cd8f3b642e6e193da913ccaeae5508c2470036aad80c0c6 +e977c374852b69a8de69aea44aaad49eb7fcd420bd55a5c5cbf073e859ba9d6a +857da20a5cc2744843ea07efcaf91e992f0a44e1e520bbca097b6965c4e30c99 +03ac3ca1af1bbeeacffd7cc22e7b9763b0876cf8308ea38828a716da7f430898 +2beecd1cb81cd95ab8fe70242026f11061a70fb42445aa9246488d6d0029df17 +dea43305ac74df52e5699b6c243025786b21fd43993a8039e9e75fce2dbb7d6b +7e4cd140e7edacc20dcb473dc45eab68d8ea296baf9bb969093862d391f84073 +5e17f87847ff2e9186080feb184ff7869a5a8bee6aafe3461454dcbcd00d2c24 +61ef831a52dbb0fa736694b4a3a4d85c6d80636b316fb12be67f0887cce6df04 +80c145ea8762ef8b2c43ae71f3c32686fd5813eb49a39bc6d4980472bd5cdbb6 +c282c9ffe2fb52656f607692e1ba726417703feccfd4aeaf9c66d543ce1506b1 +a9d6b95705f67086d4f36b06a283cec841a01f1028d95d4de419d7110f091014 +f6dc905e81add1d54f95b16cddcfd0793d1cf4a85e7a35458c81197a24fe82cb +63edde30cb6b538a708fbd41f00268a772730b85bd8860054acd93fe6b8bbcb9 +cc474568d426e83f15838520a313e0ae1b60959de340398b21986f5c404c9361 +54975d52740bec0f7abfaf271a2ac1f7553b862d45d11ae585936fbb5462e2dd +bf35e4afb7bffcbd3294be3eabec4b787133c3a5e0c95f74a71dad9be990d07c +d157d7258830a3cc3de6459140afba942eef325ee072b3a53a9f281d483eac65 +e8da50ccddb3d43baff7d8c7d7a1847d6d579ce92df1b54de141ce7a73607362 +7d909e8cd9fdc373b840145f9373bc2f02979ee34688bf840f4f9245c2ab976c +ee8bde685c47606201f6611e38a49ab72428def2c85e553313af719ab4d4f5ef +e3f3430522abff76bf8bb8f56afe11008d3f989ffadccb411dd3b7e6352ea873 +3abe5dc71b3b4832ae85bdb23f6cbfb4b2631412e4fe0050a5f7f4216508a3db +ea2d74318ed82f1a2fc791623c869593dcfd6bfb2fe57bdf06e9d1946f9bcea0 +13848fcdc603e3eca5384725118970cebcc9ebc6b74df13ad395fa6efdc22463 +5380eb1b3521aa929eba30958ae2da40852196b67ee44409d323383b0c7fa1f2 +b4fff373041d9f5eeab03d6743f0a291b481dd3ff9e8ebd77a073b8d5f5d93bc +727e6566204893af892f74fc0bc3f3e83643a93747678eb998f9c91b3a0ff942 +3d3924f507f1c7eb18249b2ab73691f5fac868720ff52183091f65ac3be8cb0e +80d257c52ea8647ef747fe304598e1ce0900a4de4031e4b6a58d7869b08a56aa +710c91ccb8afab94ad10d670e767a44e0177795ddfd65c9cdc7332716deefe3f +9e2ed8a54bb6faf63b7bf5f554b934821086c09fc28fa74ea2efd410e006be6b +ebe0c464e078c14968453dc783a788a55d925d72205492c07d0dbaee4982fbed +9b32dd19ae230da5870499feeac55b09b0970ad5926375fd79b95552816be003 +90515262b5ca891babcd81bf86847cbc5850d4a056bdc528e97aded1ea6d7b76 +bd8ec34e742a9fccf19a6310004499b1cc1a920b5f3b746bd4de2d9b9dea341d +25a7a7b60546a8f9ef99190cf8ddedb21a0103414f9f28ae8673c966b12528dc +fb70ce44db4822322605982d708a0b4bef7eb08962e3f433213d7545f351e994 +970828eb443c3bb36ab0c4cab7fadfd949e5f93273141da2b6dffb41b4678647 +93cd4e53c78a63c632d4fcbad772122e86dde337d5438e5e4342a0e18be8b014 +3ddd7290d16096f2149c6c71ad28325dddbf994e651b9d4be89430b31dec3fa7 +d2703196f7f10b5e8d98f20e14151160507e53ff1f3d4bddff3f45f9e64b1b9b +9b26b32bf389a3725c243209245bd78c2f78d67033be00ebe25955a1ac718305 +b52a0260a07220a9f7410bad935538c6c7c56f902a70730c1cf90d45a5f66c6b +a762406e512bf3cc3b52918c6e9e92893279cf86af1684d9b67d1ebbe84be9d8 +4b56548323ab381ae18c9e9570453abe77ca9d9ed1164563120b939fc3acc33d +49f5e989a74ac760f0c99458295278efde92e99003c4780935d12eda68a82308 +ba444819ea9fd930c80263b57ec1b9164aa50ce386b8ef81a53a710416c6c868 +794bddb4fe463b3c59ff9fd085fc7ec37cf2abb7df09d41113f4542f72bffda6 +1fafef41c462eabcc7a3b4fbe46cac256c7af4309a617e73e7934450434e344b +5cb6ddf2e63f4523f1526ed2f79522eae16b23dd9ff4924053a0fa7c4a0b29ff +f4485c041b06147d2c94d276553f443c2980cb96ef5da49bfda4ee95bbf092ac +e2dee947d0c711c1930500b79a5424e8494df6e1798b009a3816342f4d1d7cb0 +b7bf239f3d60361ac605020591740d13ce386bca1e69a2e8063c62f9959c9fb9 +010ae39f18882b1e3b3d0d9b0447db7f7f7a3810375372702686b224896bf5e4 +cd40e308b5a6988b614d8088c296171423cab2657cfb98f462afe21e990b0c74 +4c8738d1b13097ca887ccfd3eabe4f1e29df71d0e51046957409964f9f02a33d +78b2a5bac5058bda0dd8a65fe6c53dff9310fd2b97afd24f39e586417dcc18a1 +5c0be1795e0f2c3d785f8cc1ab5505bb8fc0dfa1364f08876a42dae3383f853f +84e7e54405bb8d00911c5b8ef4794494d9bf076d57a65f2392628b61ff967c77 +29114960e00fadc36961617c61c673bd2d2e4a9d54702233c8414026e67940bd +ed16e2d3822f06068502c0966f2ff68f74d11a0b780b95f3f52bcc162a37b6ef +48cf5ff8513cf4183176734f80b9835401b3db6bd53597645873fa96488eb183 +646b577037e5717952d23cc71ee1780b3df42d9c768804fc47cf147db059b9ee +7a6399d4f4afcf2d296902f16d56d6df28ac4c9a96e357678ba901fe72ce3d2f +b10fbf263146547d455df1bc33a1dfa753251c264db8798da35943a4940962f9 +e3b8a68d2b094177154ba30af7bd201cad919c09a34536e41d6c5772873c0634 +fef84dca5f1a5d5488997e279876af1dfb3f51790a6ae085d09ea4e1947fc10b +987c2db0634c100484f4b45404119fee7a7ec81111029cff1b4cfa1a8637d4a5 +ad472b5ac0cb9f428cb1df8abfea3db8082a26cc815437ab387e7f87902398d2 +e0c6bf6c95c2381f15b61fb2c5bdb8684afbb7a6c1a01ca2286a8dff62e52a16 +3d7c748c1b2c63d2933012c5306cb7efb0b4cd733c56ba7700acc731d294f7a1 +1f2a1f8f461983f2972da8c3dbb3f9117f7a6f3583c8a5dcabb364ac0310457f +93fbca26c31482d806c6a7a4f87f4cb92e3f30b4dd2dd5e3da5360430c008237 +7165549aa416a73c62a50b707074b2b7ded2b07454574f60861cd2f0342e4f78 +24789278e711f18ef858b819a0accb67384b47145fee30b32181d66ff47aa657 +83f0cccb693ac70657bc2bf204974bb3bcbffcd6540477e7a973718754acbe68 +823672daeaf24c93263a57598ac4bc999120e367aaa4b54c643e8c8987024b07 +9b0d40fb33d55cee534e3a38a1a316276704e9a6df08553fde29e4d4526225d1 +fbda6f8cb78098e83e8a360de3c4c77e2998094f920aaba9c7587735cd2f22cb +e17c6b99a8286519242f18de4aabbe470bb8e0931ec7f5c19e1c304df56f2368 +70d154e925c4f2e5012d52a0283ea52acefa09d2a8ecc832358868bce8efba7c +492e3575c1605150a3f7d6822960f1a9975151c7b6e928fc07f73493351895b3 +5ea783de8482144ddfaf6f881d0835472a603fcd52464da80de0c380fed5cc67 +e38eea70c066dadf026e03fe00be35c6310f64aca4b991ed4bc4eb125b4c0a79 +b87109b442c0b624c340271988ca36e92157ebe00ace90fa4515b6c649b9ef36 +f82cfb4954c124878dfece799bd987ee930148967069b9e6ff5663689e5d186c +26dbdfa146c3dd3ab9c2104fa4e92423c88a0821443aa8008b11008525290207 +146118e39b4d7893fdc8c7225f4c97fa3f1cc264122afa3a87d630ef325d3778 +28ecba34700bae5038bc2a1c2e0476351d9e73cb623cf58eb35d4c518630ef2a +f8b64bed95d72bb7403e652e2dda6faad38fe8fe4319ae190f0496a1c6806cca +10efc6d15c7e19522b152476c36f9644a599da6786df08fe7981f9eaa0e8611f +880ce7444e6e72e82aefccf6ae7aa0ae68f883d9f85b8126a6c52687c0ffe6d4 +fc712eae8bcaf81dbfddd0a58717c4cea5ebc76c94567833f5549daa0cf6254c +627a1a0662537ad3b43c6f3a90d553bd6e7e841769777c502e4dd5fb8b15431a +61ad9b26cd69b5d7d2b28776074e7b7beb25da2d5b8ce39e2d982b9fb9122e6f +401cdba8684365458bd82680150de4ea9c386dc6666e613f4de18bcf4540ce5e +663a6f3de86e8ff97339085dd62fc33bdaed076740de76c1830a14618ced99f8 +07519a5526f787b5f96e8086ff187ddc36ab3b385520dd23ceb0b0a779c97537 +496cdcbd8b82bc87bd2473acc490c6a86a6e6f85496a2dabbe2c92f4394c23bb +714c0cdce7c02a397f2a66862ac165931eadc3dd374873357e315c8cd99f00b9 +20d3c62c04401d15413d4c640c2aa4caf5fa5db6eecf4ecf43478b2ed317e06f +cdbab783a6921463b346d8bf72e98a4d7fbe011cbe565cb54a7157af3fa4d5c9 +d6a36c7600f5a884595278efddf5085f74c3d7d8e9beb3be3f7f6131e8233b08 +4b16dfda9cc778dc10adda42786156d707750d12c920cc297e8f58578d5084a8 +6d68a5180a +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +/F230_0 /BITXNG+CMMI10 1 1 +[ /.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/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/arrowhookright/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/period/.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/.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/.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/.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/.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 + /.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] +pdfMakeFont +%%BeginResource: font ZWXELK+NimbusMonL-Bold +%!PS-AdobeFont-1.0: NimbusMonL-Bold 1.05 +%%CreationDate: Wed Dec 22 1999 +% Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development +% (URW)++,Copyright 1999 by (URW)++ Design & Development +% See the file COPYING (GNU General Public License) for license conditions. +% As a special exception, permission is granted to include this font +% program in a Postscript or PDF file that consists of a document that +% contains text to be displayed or printed using this font, regardless +% of the conditions or license applying to the document itself. +12 dict begin +/FontInfo 10 dict dup begin +/version (1.05) readonly def +/Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file COPYING (GNU General Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def +/Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def +/FullName (Nimbus Mono L Bold) readonly def +/FamilyName (Nimbus Mono L) readonly def +/Weight (Bold) readonly def +/ItalicAngle 0.0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /ZWXELK+NimbusMonL-Bold def +/PaintType 0 def +/WMode 0 def +/FontBBox {-43 -278 681 871} readonly def +/FontType 1 def +/FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def +/Encoding StandardEncoding def +currentdict end +currentfile eexec +d9d66f633b846a989b9974b0179fc6cc445bc2c03103c68570a7b354a4a280ae +6fbf7f9888e039ab60fcaf852eb4ce3afeb979d5ea70fde44a2ae5c8c0166c27 +bf9665eea11c7d2329c1a211dd26bb372be5822f5ea70d99eb578c7befd44cdf +045a363056e5e1cc51525ea6fc061dcebb337208eff729802376a2801424f670 +0e7e6397b28f15bc10b40012b0a3eaeb2693e8f7f627c4c9c7c6c5bff105c1e4 +1b2b9e8f09253b61177e95ea219474796072f4b363fe05fa7637750ee32abe88 +6f7c1368d9ce6c8e0c490dfce9b86d093c646a926013616599be4a08eeab1ef9 +4d9066aa43407ce8754ca1bb33035af23db30794e2d3368c4fa14ccccbdeaf01 +2caf3cd75f4a9430011661c1bf054a530ddc57f032ecffb56ef20be97a76074d +a40f2ab5f5ca4b83c12482c76211aebb54d996a3771a33008145b436f16e5100 +3c766da4e9fc3ac88ac60879f47b0d72099a606f615cd397a05aed4a92a6e86b +6a9685a3fce4cb303371639026c74f19dd67a353e70a7f40b4d317f830c0342a +9f2fec7a3304e4c4009e2bc3f0dcee97c8381bc7682c6d3f80d93a69ce5d74bb +b3ae9b016bca6cf044056c8ab210f7f1ab28c6b4c457d0184278951c4e2bd743 +41f9c9c8fafb9f11da77c2ce9f820e65ba3b7184d08598f9ecc956d38ffa3d71 +0ef485905434474fbb7cf4b43b193a537efe076c26a9251d45d06ff575a5b9a6 +20ec66effcfa67a9e089a1a78ab7331d3841898dd7476d70a2a97c8f6c283fae +4010a9eb770604ba65878fa2105d063a44c56e21bd4847b542af04cec1cfc7d5 +ec2b1ee2103bd35e162f2dc6d1f224925a0d7eb5b883a6eff782245605bb8fcc +1e0453694af4725205d9225ffa329bbdd4392fcccb8dac6a0e8be2059177757e +2fc359426f4e1ed2e19ca9b5311c2e77ef9f97618b0c337a906ff39926d2b0b7 +883abba6508102d9f4fb0387d88d82973b53718c98d58c9b83d2a62386b74c16 +9cb5c33dda965420dd78aa19ff23f88bd2355f93ebaca543d8b18ea36b4ee8fc +b5924e01f73a9501819be812383107d361fe8c805163a6957de6aa4af7fa6963 +e77ac8e5d39349be33448d2f6258da61aaf47917c66c7c5ae99a990b727c6c70 +20f14175225efea39202b489cb6623c51f41fe9a5f6d3be27796e51be6945774 +6cdc1ec49ed6114400f4724ecff05fe0bed476dd3d5650ce735475ff6f232456 +5918f9ed222319d2a544aa4a74be19f45cd466fcf191e7ea641ea38f9d3133f8 +872bafe19691dcdf0bce48ed6fd0e0ee9a81faa6dff8b239874ffe2072a73107 +0ffb5095f90a653a1690655a9b4287545138b8049e04eeb928256a05a73edf71 +4e0c8692f37cf1d7e3defd43b2b428f853f35bd79f3811fa7bf788d1c1cf4a61 +65b8eebc60521fac324403d3bca11817c9d15012e0be84e194435fd27361e68d +79b52b6c9a96c1a40596f048a31c49088b883ee21d9bd24b48e4d1e03e7378c0 +5b62dc00623f9c5dbe5087eb9122de23199ac72b491ff847674d6141ca7facd9 +6bdbfc373e1e1f87881fd7bc3a7d64292c55a687f3837424612103bd6be8fe2c +0b3f529ff61d27d3fe8cbb25636f48e6a41f205d04a802e50fd974cfa67f94ec +19c3ec32aa714e650af284926ec5f2e29bb880efc696d77d210536d7d1148ac9 +ea9263bc02d2ba97369f2ab531944e132484c3f2c2638b01fc97731f1b39a492 +4822b5265773a5e86a17a41e7346b7c4c48029f58450663e0d09836d75ca7f8a +d9a78eeea4f41976945501f32bb383455467d217777e642f32777bbd74cff9c7 +97041d0a982ab1c0d4999077201cc9ab52a92cf959cafd2e6790ab45f6927c7e +96f24481280a0242e823e22a4e32669bc829ef1b7ec3fa34e9cdd920b0f7e2c3 +8f138ee0922fbdd3d7bec614805aa562591c3969760019c54ede008db2c2f8af +bc66034e5810bc32c823b819eb39a15c0f25be8f2dfe5a01b90848a5adcc95de +49241dc602f4b71f8901fbb38725ee7ff097f769c017f16598b835a0b93cc6aa +c437310f1a7d586cc05048684af27ef3c09f72ac62adb2f4fe7f99d1340d27c4 +479c144afdc37e4131d8fc6479afbb1004ba15e3e5d0ee470b9811a0f51294c6 +dee3fa7431267cb6ec7a96c590ebc1cc7333a103eddc21219f392ddbea601d6d +dce7a8645953235a0ab6d46578e8e438ffc41be6b509b844b73e586131f694bf +f0ed77a7847f7c747410cbba2473f5869eda83ec8118d800f3b2a7b5ea03e16b +204962bc68ac47bcc5d29f88aee951c2452d22aa967d32c3f37a91ba88baad3d +bc74cf2c7fbf0c76faa4eb347390dd08303b439cb1f1a3363d265fec5734c81c +bf1af913f88820cc29f4a3b54c712e006e1d6bd993668999c3ad54676c71fda5 +e29df4c794a4fa812b13ad32b28bc57e05c7908b8334bd4fe842d57b04423fd0 +db3a43eb047f86eb925dfe31a012031f36d5f6099187724b0e2203ca1da764db +623d1e0a59b9fe47d7d4d67c241d297bc5a6641770f5e9f75c572675ae6e69e7 +ae37627c1e4d3ba60b95605da55c67c5f6ef7ae2049ea3d1246a0c03309ebd39 +951a398883fc919a711e8e891d914459d4296bc3a584610663af1c2ff053c137 +9f447f918ca55c5dd4a52a060d1725c26e6940371eb4fd9d254749d04ebc0f11 +06f62a30d3f714a33e4f65f4dd0b20daaa10aa02b9a6e6eeec07fd93d19f9c0a +6cd6bde1d7ccd1a973bf297fe6a8821e03a381c468b9adfde87a4b7f484a55ff +a5b83052ac23f4b3644234d935485f912cba1c84227a609b32509552ad1d7ce4 +6f564f7f9da1e131d9921befbf53cad1adfee699702cb6bc949688b30f0b4f3f +d3afc9caa04a796e5afe2aa8f8e14a7959731a74dc4b215d7ec095ebe86a3863 +ef6d7975c3d2edc2e7c2f5d2c8cfc5f6fda37368a54dc07a7026ebe9e2d290b1 +eedfe0322838aad2f5be5c299a658f47d0487584b1f9e7def39aaddd212138e0 +8a8d2479be76477e5193944353796d86aa5e2ebce0a453bae8cd9bc976a14910 +93b30d44f25a29808227330b98bb42bad91b4964f6832f2946b0ff1701853c49 +dc522636d5b7fb6ef764097a17da725c3af793585d24c91627f49e83271b7498 +cbd67abde015c94f5f24579852564ef01dc4ad98f15d522bd15fb9043b241350 +2b1f128d874c1d119798ebb0e11be341f78db622204aef7778aa81055bf4b7e8 +c455a6398d7d5dac94a5007b4f76265bc8875392b5354bd38ddc111dbb8b5b92 +15beaf72f041f17d55b49b81f3d1279bb7a5ccb1a9daaf125e79d5ad7dab0595 +9e694040bce7da09f795dd3cd508b405c6bd07cc7ee9bfe298156ff2620bc3cb +cc7b27d9618e04a2ee6e3744d7a344f6554e0baa2290b2082f996026adc420c6 +76ad5978868e062323522240a388179de4d224f19182ba7a35c3aa952844df49 +f6c532d429e5c86f89d1e697fce1b50861cca95504dd63423bf603b14459b7c6 +91bf64bed93e5ca158ed057c9bf9160f61584608ee366e3be548bf2dc46c219e +9e0acdbaaca1a5b02770bbf21dede6a80f3af65ae92a9089683dce3ec5e6ec68 +9de2dc208f7304afddf88f35e1f428dbe74e7042766346ec02e1eda87b8c246f +89a0eb22d1c6fdb17142af0c8c0b565ab6db819d2ae2bb3bad7c7778c53b2686 +72191116278357d8659bcc81753c2906eac08fc3fb966aa5ded522da2a5edf40 +9a3eeb5735617e77a7a77009cd38c2b62bcb89ab73052cce4526f4f02bbec777 +e6ca65c90ff5931dadf03da48afb8561fc2e71008fb1d1d4343512ada1b78e71 +0a10079f211faa5227eb0b30588e9e03fad6d901dca2b6bac956eb8cd2ccfad8 +80e8cb37e31fa6a8206f6a9a2a9e1cfff1205345019a0feaecde57fb0fa418c6 +f4cb83025e7180e50394f52064d8ea0383b80482e48ac91c24d10c7ddabe98b2 +13eaacad917275e916fc0803796efc1f9597f8952547d27dee1fad9ac1fa6d10 +27127514e0f2dcdf9ca30393cefc7cda027c85e53d10ce53796529fb13b079c2 +0c7402109235a0c25965b3b7d741e90e500ec2476c5dd11dfae57d6f57b218c4 +b9cce956161aff0a55a52eb58a59d7a62d90b110f9a0dd26b8c902122271a38b +7923957a15d11cf1427ce56323c7e4428d2ee1ec6b1c465be35668b0a7ac8eb8 +af1f080a993c3c74871e4b7bdb2602d07587aed96ddb05374c2aadaa24486f9a +831ba1179b2ea3602d071411f1756b58168f9ffb572d787b2ffe01bc07c04d48 +f893271ee576454a86a0c216b224e0de81d66ace456d352a5b2537eb96be26e0 +342e4165d30208448c9314ec962ac31ee36f887d0cf61a575444b31180850172 +10ce125407e77e5c63c947fa320845efd26c85ae8813a99e518d679137ae1dfa +9e9f19c49b461da073dc1be4a9d32f6ad62d05afdcdce4e33091132d471edcae +38607b7f5a17e7340b4e1a110bf7ed2bbbb9ad9b8ab909430f29f87b1db0a04f +a4a80796d144bc1875a846990df6fb3f14a1457be695a3cf1a5c16878d44be38 +107e327ec4096cd66caa90efb30bf9837ad04d995c4f9165b1ef14d394b71ff1 +281b0d67d4d3cd375c79603efa6e0830183be17f77e7d5423dbe0776fa1387d7 +df0dccfbda67f6ada4d87dc8c6325f0460690be677aa6db7e0250b5196b420d0 +cc8d66fec329d81a7584a5d001c2c3e42350eb22313f036b5ae64868fc6aeed9 +af95ec8f2aeefe4a95e69cc77f321fb7e7aeaa45b2f56d92d0956bf321ad859b +d2e2bbe984b17fe9303f13428a68d6a1959288ffb63d800c11ffb6226920324f +6517eb5373f2b8f058be35adbc7ff15a2b0a81683aea4ff11071451a49efd1cc +f15664182fc26672cf89416da86a3b8cfb45510e1ebbe11060963434bcb7581c +4816bbd63c6d79dbdca7dcf26a4217bff8060ad7955402af67fe4743997a028c +c33d49847b57712e0e23a1c5b72da33198426130a132be52890df4423fe21d4d +2625e646ce72588478bf941f1f74e875812f7d7ac9c54d0ddcd12178abf50bcf +f5131713cf9c42d0faf6cde696534896406a8a5234a8ac19bfd531ca934c35e1 +576099082701fce199811dd294cc46ca147d5a187c3737d3d128ee8d437a2afb +114183da45b49ddc768c31e35c395c3bf67a79f8b1ac292f38ab2ef721453256 +523e9dc08e80bedabece9bc9af135276c819140d7a0e966156dea6e2f7aae463 +c634c4de83feff86407b556651a455077d64b52c5ff4b80250d312dbdf83dc0e +b9ebd541aa9fbfddef1f775be0c411788b054aad44c85d8723ca7d2a6b00cca2 +4ac55e90ec48e4acc15be17b9544bb71ad967c4b8437470e4d020fc6e8677251 +92e2307b51148b2cf46fc1b7f2b149ebc1ebb02c33477b4c56e56a9f06566377 +d2de31c00d90ff5ddb509f8ed457e915c6fee8103da73b5d782bffad7f7c029e +12e1930e95fd7b7bb37c48b7cc48d99dc9aa79388c90bf6c7c0b83c7f7fc0935 +8fd5f673dcc906c7e0fa7711abe8258828289ef48a40723e39b7ec79f2d3822c +6f45a6ae0745413ce860467d7cc0aef52c680b8cf1767915d3550d9813b5bde7 +1c21b0f7b7119bb0e1eae6a7874ff0588adf14626d101b4e117c63f2e7a60627 +dc40cb9ab16032434469f390804b9039e21f1afc9380f26571e3b2c64a86c851 +74fc32a61b787769985079d60cf71131977accec6954da9032b1333396fd5450 +00e364e7e6a79bdbc9f1e842e222ca480f1f22089a38079692312519392296ef +08f00707ec53e1cf114795631e3b14687b9e351f1b7bd44d6f7d41ac91e8404d +8ae952c3c78e4a6bc9ad64ac1baeb952053c409cfad43a877a7c420006ce3e9e +0278a33cebd6d9d9737432c982165ed82c45d26f55c133162a41be27005cd6fd +e60cc41bc098314a5a1619dedc6bd9acc637f398219f9a3c543f8421ad4c4e58 +9265d23edb6cb45f2273a908ca416ad8c32c2992d9efa95d86e631ac8fad778f +ef9936c2dff4053cfb253c24c65bd20fd534d6509c0c141a358d4ad95bd9b5af +8abb5cacb94788cbf6c43bb54d52751d05a1a2e6848c33ab9b769ca9bccd8e3b +ee742c0d93ecba4c5c31c1d32a567d4213522f2a5687b014351cc01a42c14208 +69ef5852aa703ba076abcd4c6653fe6c4100bfbe047e34d4d6e9c62a6e5532e3 +f9ac9e7cac24e076546134c226f38ad0f51f8f2dd8501a001b5c0da65d9286eb +3560b947ee38fa27a502e87f8c99ffcd54b1d128096360be6c5b6f3e536c57e9 +1acffa0392e87026f5acadd1d81295d54155ac6154e247d95bad5d9ace11215a +e0ca996979f6dd8e94e7567ea17b8827ea4d5d5c9a8484ca568332bac134f993 +91505c7fbd8ba336f9c37d6dedd17261483c232995658b078fe8f1a312cf74ca +de87453964bc73a936a0ea09f74e9b0822b8336cc888f0f1f399061c342c8b18 +1d93b17a0afe2a2a69acf2f91ecbc8441db2aa35091968a0408b2abbfa35e4cc +77208f81b76a199312d8b3c3426e49e08f8359e6ceb694550f4b8fb113f2b977 +937eb20585083e72e0abd60e60ca4ac0f216b65b7a9bcbe1005c5b8bbddb702d +ca9da36f1fd416315266905f3ca5ed221be1ec496c5b16070bbe38ea094ae5ef +be93eb0eacb95603d7c36ba04f606a11ad22580b1ee5498ffae48f218108b774 +d71bde64b7de26f696d95abd3c13853aa368cd2582f2b03be9b7ac59e9bf0207 +df0ad55054c594811c5e89277d3804d058e1fa5419b15d11605066742d284108 +7411f111e7375c6710060d26e0b60f6aa8387f348cf2bcc5762c16ef320e24c1 +755f88376f5f2ec00b4121861518c97145a7105bd0d571454c177da407fbfbc3 +4a93ee4852b09cb436f682f9f84da4d61ecf72f8f801a548a9304f19163d6bb8 +12f5de6e1f2b4ccc494015627416d54877ee71221b95fe357bf67271242a8f17 +a4eb4be3b7a649c234524b2554a8fd24210b7acefdecb2198265167b8bb28593 +07ed7a654e9a6e2119e6dd14fb33faa084c71e930b8035952b87fe8b4a297dc0 +e4a89d17214cf1063caac03d4bdd5b4fd62bfa6897811c3494ec3018c558282c +2efa94538edde156727152eea21c6e3f88f68a0176aaee333b79e6b37344bfe2 +77292544c72d4023a3728c2e39d2841c2450465852d02503fe0a871700b470c1 +a73d8c1db644db39e9c1ce3ccbf2149625e915599ecc3091e15e0a74768ed5b1 +8271fc242e10bd83e73b4636cf874ca6e6d756e707e671d99fc43d61ce6bf80c +3a3be178d9f5d3cb32ca669cf99b70b10dad7d270d0cd85a9865d60df07fdd94 +cd +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +/F440_0 /ZWXELK+NimbusMonL-Bold 1 1 +[ /.notdef/.notdef/fi/fl/.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/hyphen/period/slash + /zero/one/two/three/four/five/six/seven + /eight/nine/colon/semicolon/less/equal/greater/question + /at/A/B/C/D/E/F/G + /H/I/J/K/L/M/N/O + /P/Q/R/S/T/U/V/W + /X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore + /quoteleft/a/b/c/d/e/f/g + /h/i/j/k/l/m/n/o + /p/q/r/s/t/u/v/w + /x/y/z/braceleft/bar/braceright/asciitilde/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/bullet/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/exclamdown/cent/sterling/fraction/yen/florin/section + /currency/copyright/quotedblleft/guillemotleft/guilsinglleft/guilsinglright/fi/fl + /.notdef/endash/dagger/daggerdbl/periodcentered/.notdef/paragraph/bullet + /quotesinglbase/quotedblbase/quotedblright/guillemotright/ellipsis/perthousand/.notdef/questiondown + /.notdef/grave/acute/circumflex/tilde/macron/breve/dotaccent + /dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut/ogonek/caron + /emdash/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/AE/.notdef/ordfeminine/.notdef/.notdef/.notdef/.notdef + /Lslash/Oslash/OE/ordmasculine/.notdef/.notdef/.notdef/.notdef + /.notdef/ae/.notdef/.notdef/.notdef/dotlessi/.notdef/.notdef + /lslash/oslash/oe/germandbls/.notdef/.notdef/.notdef/.notdef] +pdfMakeFont +%%BeginResource: font FRBTTO+CMSY10 +%!PS-AdobeFont-1.0: CMSY10 003.002 +%%Title: CMSY10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMSY10. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup +/UniqueID get 5096651 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /FRBTTO+CMSY10 def +/FontBBox {-29 -960 1116 775 }readonly def +/UniqueID 5096651 def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSY10.) readonly def +/FullName (CMSY10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 32 /arrowleft put +readonly def +currentdict end +currentfile eexec +d9d66f633b846ab284bcf8b0411b772de5cd06dfe1be899059c588357426d7a0 +7b684c079a47d271426064ad18cb9750d8a986d1d67c1b2aeef8ce785cc19c81 +de96489f740045c5e342f02da1c9f9f3c167651e646f1a67cf379789e311ef91 +511d0f605b045b279357d6fc8537c233e7aee6a4fdbe73e75a39eb206d20a6f6 +1021961b748d419ebeeb028b592124e174ca595c108e12725b9875544955cffd +028b698ef742bc8c19f979e35b8e99caddddc89cc6c59733f2a24bc3af36ad86 +1319147a4a219ecb92c71915919c4ab77300264235f643a995902219a56d8626 +de036037defbd3a2c6bb91c73375b5674e43810b4f7eccb675b36f35d63d9ec2 +def21c5fe49b54f92f0d18b89289682cb097244225af6400f6ca98efaf336c9f +c304161e2006b3bedbff4dd36fa7a8f7594c02dab68c077e83335ee6d018f860 +8d9a9131325d953d6c38c7e0a34236506c1e70cb6657dafc3c9520131a251350 +49034e216ae175cb232c2ef5a3c569ab581f936ef4e8b8c8bccac287f06f24ee +1d15d2819058bd9aebc4ea91b74935f6d411562a453674b14bd76fbf5f298f9e +8fd37f529f9e0450bbbe473b5a4039d8d0228f56330fa15411d7544ce700984e +09593a854180d3100e136beea91daedaac36cca03d82b83d953880307edbd0f0 +014451ec8f10b1e30b51c2f9055e906272f02f32085e4b9fbe5a6860a74e274a +74349069b6eb90fce84259d281f037d6de9f42fe557f5f13a87e5c9f668dfb8e +f5e7f4b5ef9f5841b3885a6c8994bfd27fe35fa3cc1dbd5ac68e1c98c0d0ecc3 +bd2795e77848b5faf604f01362ca473ac72284a56cabb68f35ba43ddc6158955 +5bc6614cbcf4b80872c2cc66b6f4f90c315bf73b34e481705ee8b54eef70fbaa +71424420120f27d8853933e3ad4d8026397b040c88567f440df538120d61d0b5 +8232d66e2e006866b60ae46c3f4bda16a2eb5b248bb88a11b3fa4770f0f6c31c +dd13bab11c2f4ac77a63f703a5824638fb765033dce02f584f36c879416fbfb1 +ee7eebe75d57711b44824db906885934dfa7f386b811a2598fd5cca2585045f0 +4cfd32e35f32b90badb9a96f48957b0a311778d21914c9ea27bfbc75197cbb6f +0df8f6fa574e1f1d529a4594f2a6ed99b98fd302f4fb2694e3986c1f46ff165c +7f4c1102526831ae1e469e62f1a6adcf7d2b876c0d43f85d20a6a5dbc2280884 +1c7666d56f832b66cf189c4debed1fb37df76c3f1c632ade8822eead5e7f52ac +e65daa6d86e410d469a7844baa4fc9d28e21490b8cb2d3b2fbe718f55211fe5f +74d3573b99bfccf198c775402823aa742acca713d30b55a09c7b7ce3f5f5517d +6133e546a86c0395bef3387804ac1b07a4d27492485741a8c2ade23bb321da56 +ded0fe0d43baca1483566fb397db76ba9eec923fc2b3941f3b949cb13dcbdc3e +2c84c6e3a7abbe5c22abf9b6959a17d152ed0576524395d8a5049c5144680a19 +0ed3405f2c9ec716cb9c0fbd6b12168d62666ce74149f8505e02aab39977d99a +13a66449c9487a6b2863f7338378fb901e8ac981ec53ca555049b3667b4bcea9 +cd731a850ceecd59afbca1ed2fec76c18fcf5ba1b9fbd81eb84c254fa140eb99 +48838693123cde50278e4aa3cbdb7f7691d52cc624b4226855a74d3ff4b3eb3f +e193702ad68437760ed7173ddb5031737de3470f9340a44e92355ef033958954 +e5b33866ba86201a7951a68783b94f2984b40dac3037d3e6d2250e850984470c +a4fa92527aa313f3f366e97b87d05e114468dcf43ce4a27b9999e24295cbead6 +7dfac0c6d99e7332662743f379dee2b05fc7aed3ae405d631e3893b16e1a3771 +278319e6014b88fc346b4f3d17edfeab40d6552092a8dc6c2cdd506f458bde17 +e66b02d4992a0e370871035bda2106ecf7fab7ced8e8d35c6fbb825ed724b726 +8ce5f3f25d11386c958fe4b773b9268484c12f90e2e25e299a2154e5c480610d +f302e1aceed9d0b3e11681bd5322a13b8fe895fc755e0053890a4135f2993642 +3d11dba2766edb9954e308ad998fb1cfbc2285d1f7a9135d2f06cd2d7f7d7b88 +d1c6c9409fd3962b8b1c9a690e01fda96361ce706ec9dbe3b4d3e0d57baa0d4e +a98200ef682573f9aae9f09e2000b9d7e14ea41682e4e5ac56dae4cec783bf61 +a99a5df4e83fd52c0c02edf26274a16c939868103691ff4f8876c25fa70652e9 +ccb3399053205e0350ed215170f709c1901bf7b97236f7bcc13ba5b35a96e8bf +c6e476d81e396b0c79118e16b5489279703b1a44c9d7e320936a19ed319cd03a +f052845dacdd9b627a47433f2225827c65dda57721e8b196cd368dcba55250e8 +24e6b7b93affbdd429c9bd8e4523d8e8a56427acc3e5bf1b2db9b60cc832002f +1bc52025f18e7d87d9bf1b8cd8dc170c6dcb85af5afc1ac4a24c0e38cfc0f4d9 +8d63cbf3b5cf6f14d902ac8a9b4c48a5d4ba4bdcf4f3b69e2998f507719e2bd7 +db63597995c5cdbba59f9b010a135f4dcc8cfd602d40b30730125606fd1b27f4 +9ccfb1d0f6a97453a8c9a40f643fddb1581504132883598385c4f76b4e57b559 +c0ed46d83ce8427db396e96bb3dbc307df52ed28dad5cf5e32d82510300241fc +fdec6d84bb008cce0fe96c7c6d836fd3c8eca9341951e5ba15ad84a1799d137c +938fda761f12ef2b7e90a49f1ec49445b5638ed4b2d903924dc6ebd72fadf61d +16eb74d88503fc48659a86d95043b4e9764eeee72247367d0ca6ec0dee079f9e +5db531a1411790c08c942b7ce7b028e4b956d5f1df8a47a8ac6c37824b661b57 +147ade729f5fed3dfb47227b27aa34cb86584d20a628bf18c395b186ef197a2f +dcb3b6d97ad24cc35a847cb98944011ec6342d0ff9e13045ed70b68a1a5a53fa +b8f341c7e187ac0888b3c8e119d8b841e494b9c1bd746cbeb1ce48fda15b0054 +817873ce4da21d8550892ab4a06565a98fa666a6be00776bda87181ef8483129 +3708a88f69228dd0c3ef8224301dd8fe81b4abc3563f69bf1212897af3e738c6 +c57cbfa53e64ff6a79549a8d81c3b5566dc7e697e11971a7cc6743ca1991f391 +efd8c0ba9a01397a05bbe5548843de7f2fc4747eba91c5988605a76f1d2aed97 +398cc672cfd5498ba16f6aaf55ed4bf613786aa1ba2e092c06cdf82b6231b0d6 +b2f10cc3499b6c444cef515a033381f7b6502d6e6ff4bcf2bd273cd059bddf06 +652dec312ff80e8c9f37818c2a453523976487f1a46f8e967b5d43aa3e24fe03 +46097a6721d0882aa36fba00d3056a8ad42d4efb81edcda5cdad6ff2388fc54b +775167dd8d709c2a315e130e822ed68a889dcec2ebb10c4c56897ef4c8fffcf8 +6d0d146c61ce0d5d2514ec2e22a66090bba95fae51b7691c7f1ae470c0f6c58e +1eca070773920235792e58838f031cd2cdae29f1e61ca254a1ed00a6f664314b +9fa26bababcc8a6add7faba2081b6e307a17aa47ae1de11f7189b78feb61a957 +51e9257a84d3184ab2b9d858a41aa2c23374497930c4bea32e04d32389c55b93 +23a41d83442345d482927070af462aaba8f5b1de9876ef724fd364ce6e376e0b +a411d2036639832aaf1bec583af5bee73ec7bc9a3a2acdde4c1d6602cd8d15c3 +39922661926a3b2b1d7b15bb30870929d0da419267c3b04b2aea81584bc202db +56b6277ad95af3cc411dda29096eeef6cf0bb3d554bc9411c39990db4ccedf0e +4aebeff2e95e4469a8fd5ba6f03a733c9ddcb832c221f114de5587fa7c9b0096 +2306f9355684eb66d1558aea7150817df7fcd27c3dff8c9abbbe47c2354f7c50 +c306e8739a39f1a71e8e7de4e5932a0a1d2b677041802cb02cc13d7c6aab3235 +1143c982379bf5d50c92ef96afb597d81c107f2ee92f46a81b1bc9b9cb30a296 +74529ce1ba8a022e221c77650c681a19bf0e5080a065e4d66d70f2ee4a876fb4 +40b0b1e29681ff5ff0ea41d27f33a7e25115e9bf421e56f47e24f03945a2ba16 +906a3d0a8b5d3f20abe89d7b7705af5f0f3533f7a546ee67d3bfb3349d4299e8 +e49bec41a8ab12e1bd71b2cff0cb0f1fdfc0ded134b5078a1e87a490d0ee31ae +506618d409acf32cd653c59f36f4e3bc051ca072a4a75b91ddc17660e00cbcb5 +b1fb8d17f4bf7f78f74724ff9f1b84a5eacf2e7da1b9ce0bcc94b7a817dccfbe +46cd999463b0b19a91823d18adc1662117011f2acbbdaa2e062fe77706c48952 +38ba2840d9d98b9a7a0d63b8bd40c34e26496d979edda33e5821c86d9565f1ca +40ce6c160e57ff22d2564348e8f89d38d46b17d591053c79f89c4e750d619407 +eaa5a8bdc52ea6c6ef02744eb4a5c4886c32b210b86b41495d8729174df80f7f +b653a2e6ff5996d96eb51a828d0606998fd526a82a5e8e1dc79127fc6340000f +e218fc26b7c97c3cdfcec5a497f7be1ed11aedb012ffead9aa2b94630ead80b6 +3ca17e79276dec733c9955e9813970215fbe02a751bcdaf5e427a64e9b47b4ef +e105983e0e02c5a8cdc06a5db4126ef333583e4aa17a3fd944ed803d4ef88501 +bd626e0d1d8d7b71176259283e22d9382ae88bbec9cd6ba87933f86fe28af800 +dc2080f38948e3c20d8f4477e2b9f85da4800cbd1b9015eb64a07b459215caa5 +c38b7781d919e199112e241556e1e7681a749cf67a6b246b6b245d34ebaf1504 +f06366b8a1faaf10bb4304579640f2cbf3fb339df697701f6c51afa09351e699 +890462e1a8152f70f301b5f3a01c549371be46d138045ffed5411192bf6eeb13 +51d407ffa26d4b8e7b267a3b3cd5bf9e06816df2e35b6937cccf16b4eb9ca3f1 +272a16fd71588054016ef2743c1bd58c6bf22f083fa9326d19299ecbcf66f4b9 +afed95e1e2a2f8792328e3af6025da7baa1b10a721bc511e9c2f302673df78b9 +f466e742ab2bacd5728bef45dfef5b74d1da674f4b1c8d51a324fa24b23d141a +e082d79c3fea6440336329105d33aa1a960eead51cd500252a4d7d481cc31a99 +e9a59e3b4364a3e19805c97270bd19b031146afd9f46111a10bf886385731d74 +95ed4727f7e2435c96ba702904ad29f606fe9c5f1f9a11a229b1d528b9fa9ba5 +b50b4d4dba0ab5b3840d71c67626b6afcaf743dfe5334e00b64c5a73b3775450 +757b911673bcbacfb0f8509e8b2b2d9dada9a1558b97b146f555f85022bb4bce +86862babbcd259be6537133f30ab2895f60869641b1b9a4cb43b676b0739c112 +2859492d908c6c60aef5ee3b60d515e7e641d008483ab4aea0e159481d623193 +b5e2bb48c77bb87783c7525e59d19a190e2c0aa02446a8d4964844d9f2561a3f +70f20779d197b91450de25463dbb82c2c7c6428706f6d9f6a1474bd85068b37e +4eb45bb80449ca5fea88804308f054167aded26609e7093cd396948cfc810160 +347c6d834531d64a27bcfde1dd24607d5209060f8207da7f5ca88011e24e326b +66a261f36f754a37339d7f10eab4f276e1eabff47f4bdb577b9c4dd3de333fd7 +8f8da94df25df93a57193b1411761f908510980558e23b0584421f920989a758 +138f2e50e1493b3f9f2154a488202e0bb77316ec03f6555de4ae83923dd1588a +fe0bfd9235b4c08a8072804d743e793daf862ae381624303be7e5e0dbd74c51b +4172b1a16c27b6f8c5a695fcf3015cf4f7d89fc91c4c8102eb83a15093263774 +740f02f675477a3b4b6734daf3d18d1e3bb7752922e9b33bfadc539596c276bd +cbf0fcf5437eb33fbf4a83bb2f92462236552eb0303ee70602f42bdc4b51d384 +301922cad3abd13deb81f173e9deed83786f4a5de1d7aa21cc77fc364fdd2e7d +8b9e8074ebcb7f3511f0a256e2cba9b32bac11a5b7acadc0fc1d378ab3557382 +9aaed6a9c679e7e5cac49307549f8c4335fc477267e25506c41035cc248f8797 +8c267cb08fb5bf8a087e95dd47aae4d8389e97ea0da1af064d76e5df286a1774 +a783e3df200df1cfa26ef1ed9b5dce5dc55102cc5718854fd8911a886d0e2e8c +a38eadf009525bbe17d0986f4e3c6a23e608fe2782e7c4bc31ad13d80ec03b7d +1f0ff0855c4d7f9d63d6283ad8658fb13ff68586e3135a99341e4b88678704a9 +c5e8a4c2a9e70f13408c9c54ac9420d52761f62225c64b7c60514b7de0a2c8e3 +f27544869c93890e7df32680fdc438392efdd6a7bbe7621a7642632b7f45bf2b +3f0cc935a688266c39f458b9503ed06e67f4094946e73a3fc27494d890065355 +4fce63c60e6a32436d5ba5e0ab4f373e816b57fa6ba5a2a9bd02cb58af2783b2 +ee1da6169c0f15c23c55a7b2d74edb384c6f646adb73d70e3310873e0c99231b +1af196d1742758956415392b4537b1f04ee4060899648c387bc55df28c6db99d +2f87190bc6f1109ebbd78e15a5641a76198b590286065996f6fe1f776f7013f4 +e999219945c4509d37463f6f18cfc46a500f39e2f2ad229bc16793428a9d8cce +c5d950ee8ef43b425e518f4fa99333f9bf2a420b33b383756ebb0324b7df49c6 +0eeaff9f5f4f0665fe60d40a1f9824c0df60827d2d3915512fc4a5e54db36580 +9e3fd8c1c7c9ead2b0b5011e10ec68e4035d8aa662f0bf09fde9bbeaab5fea32 +3cd1f8cd96c62b0410ec741cc2aab05bcf9cb188194aa1fea94f40a4254d9149 +82dee90d74a6b5d876068386d55c1ab92f62e3d1c3f24d564615ca3035ffce2b +6b49e53257393e66967da9b72010d0f8c4b6f4337487b6abffbaa16aaa86a6c3 +7c22a7b4e6f4ee90d60a9fc7c95b15d34c8a689f028e591215b329d86f35376b +15dffe9323257f0748925c002cac78ce7cf473af7378eda5489e3c464b11e3e4 +87d805cded68a70bb95a36d01885006d2cded168532d575a128f0e03ce4a1827 +b7b0f7ca3da8e4dc774ee59db3616caa3a8924f84f35df50e48477c35fd08945 +308a214bde3389d0cb225ee5d1f96771fe3930b16645c6283b70223dfeca6663 +d72e9b6b4773edd543cbeb81e38a094ff9f1eb6012ca08a77092987bb8dfa849 +361743964bfd43032f77b09d6d1407abdcca53d424ae51fb1ed1434cf4a2f391 +b81678987709e0bea61d8546b8de9b05260d7e2284e445933ecd867cb63b6004 +0fc50c76fb25f81fdaaf545bed63d6065def8265028a224797551a6a8ddfab06 +84798af0747678d53a7564519116755a795f14b254642293aaa3622be7c14f86 +5dd86caf78e0273677f2e33658b24310bf444b1e4f0719c187669b286740775d +66a65699cbc25bea7f7eeb8c3146f9e91e5e0f413376ac09c7e24f9b76d2af1c +b63201760c0a7afae554b8defacb30d9dd146223f69b015b9b7a79cf92d52404 +6531acdb6bd53597645241ec6028c585407b903d0579573ebff088e43efa91af +e77940e6c5ffb955e1fa083b949cb13dc3483bc7637b96f03c79426237a96c21 +26788fbaf00540a987d4ef95082d64a104dbbd75e4ea5c00c2cd02e622987ff7 +2775eeca7c15213edb33fb30b48d17c3bca35ed5ae941829d5992d7bb74f8fb9 +b04fd6fa321052a8c2b40f78c8e8eb081f8851c508f4774267d091e2bcfd53fd +bb9e9b22d7aa6c9b62f0f67a3bb9b1984979d55c45d705c1cbea897072a86b4d +0cb7400640c26526c0a03395986cc3ca897453f7e6c4251d81ed29e82f7052c7 +f8ded9c0aa221832b5750a9845659235f82bc4d9b073a75af2271a0814b1b9a7 +f598e0e7628851b21af4f0b0536c129f6ac5f62090191a7a0776190010de80e2 +7e252e134b7a5c4e14a18a84e7fce3f71645ea072ce3655632d2113d4d176f13 +29142d814a63c756e0a43ad21a55d932d1b83ec93188d7c893220fbf5157baa0 +834ffdf5d191342a4f7afbba2e63b8f36a6394ab5926fcdfdcd8d8cf138fecea +3deb371294591899b4f6f8c8f0ea2c41356eca49df468a952f9c3ffccc8a99e1 +0d5d61732eb44e2ae7b254bab320d13990ffcdb63f3d541ed21ae022e86ddf20 +1eac6701a072aaf27664dd4e7874c4e428682c44de9d9b14c25fa8c2e8760acd +79f11c13e198602be9d9573f6f04643b80abae1cb6269e00c8ab419d49c3606b +11b1f8f46e7977789b19ee83c5bc35bfc48da6d32dd4d16c1303b0799dfe98fa +0cf8531205195af9e992dac76c6cb79ef51865e6b012f29df6d3333daae56b36 +8ede2fc26a580344fdedcdf9c61366f5887fb1e7300f7898e38de35b4dac436d +c4f79f7b365cdf9b6a32d842b6f8494b7b6c91c122af116dd8a3c3c1a35a21a9 +509f5c0c8479c5e57b2c0e175fbb4a85d3b52c927a20fd0cfdf3e2273ec8726b +58c23b0d4f56d69ec2c59d8ce896ea7dd86cea423c2f7250170a09991fdba4f2 +40a6df094cd170ee83bab69d4b8706441730cf417284c8206c646b5105d592da +9274bc54d07e141fcdcd130e51bacc353ea2e99dfae63ecfb9138e0aaa07178e +de98a4f4d365375190585c8579e73929b840667afbc659f5ba4b9f25fe55c75a +2a42fe330a4b90f3a088202806baa50fa1e99fb32973f23819fba8 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +/F548_0 /FRBTTO+CMSY10 1 1 +[ /.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 + /arrowleft/.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/.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/.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/.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/.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/.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/.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] +pdfMakeFont +%%BeginResource: font AMYDOG+NimbusRomNo9L-ReguItal +%!PS-AdobeFont-1.0: NimbusRomNo9L-ReguItal 1.05 +%%CreationDate: Wed Dec 22 1999 +% Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development +% (URW)++,Copyright 1999 by (URW)++ Design & Development +% See the file COPYING (GNU General Public License) for license conditions. +% As a special exception, permission is granted to include this font +% program in a Postscript or PDF file that consists of a document that +% contains text to be displayed or printed using this font, regardless +% of the conditions or license applying to the document itself. +12 dict begin +/FontInfo 10 dict dup begin +/version (1.05) readonly def +/Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file COPYING (GNU General Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def +/Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def +/FullName (Nimbus Roman No9 L Regular Italic) readonly def +/FamilyName (Nimbus Roman No9 L) readonly def +/Weight (Regular) readonly def +/ItalicAngle -15.5 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /AMYDOG+NimbusRomNo9L-ReguItal def +/PaintType 0 def +/WMode 0 def +/FontBBox {-169 -270 1010 924} readonly def +/FontType 1 def +/FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def +/Encoding StandardEncoding def +currentdict end +currentfile eexec +d9d66f633b846a989b9974b0179fc6cc445bc2c03103c68570a7b354a4a280ae +6fbf7f9888e039ab60fcaf852eb4ce3afeb979d5ea70fde44a2ae5c8c0166c27 +bf9665eea11c7d2329c1a211dd26bb372be5822f5ea70d99eb578c7befd44cdf +045a363056e5e1cc51525ea6fc061dcebb337208eff729802376a2801424f670 +0e7e6397b28f15bc10b40012b0a3eaeb2693e8f7f627c4c9c7c6c5bff105c1e4 +1b2b9e8f09253b61177e95ea219474796072f4b363fe05fa7637750b770d7b13 +99fd7523816e22986f43b17ad2f9328028bba7f383ce5c429773b3d968b4307a +efc6f468433d2320871c85fc9a377c8146b0238e6386f2f010e4c23bf50f301c +95de2b4a559abd765880f5b3d8960d7c462f28339aec4978f261a05761583468 +b73b46da2852db1d9b0b53f6427551b6e87f1a1492a19dd774ccc6a1d0bf8d1f +afb24bc1b3a56e452791e8fb9206a2c9df1677e848a67c4dc754cd0833116c84 +25127a919ffae922f6ec724252ae53662f3eeab1dba230a6ab6ad98cf27afcb2 +6837487ece5214be13a113d27d5ec449ac017cc7f12ff7b731b6aea24462f3bf +e743debd18a99eda36d085ad3602ee939e3c2a40fb9551f4e5e904578e8df0ae +a6e10910d5205c917b45b0d0f44caa993ea6fc2e17ea43b83e62abb31717b3cf +d783d25486084caa1c642a4d9719906889510d7e60c8ba0b48b9d40222d36a01 +1aa4c8148ba57f165bb7181534df0a597bcd1df98fd644fd3e3a09a21bb018bf +637e620e494eeb843c575bdc71016214e19d0d3d030b8a9eaea88822ee97d8ba +ffbd2f522d3ac2f34927961e189b0c163c365ebb410088e95a5bd200e62bd5b5 +e846bdf4c127018a54a78bce6dc744c4c1aec0087df470d72e461c8079f1e8a5 +12794d770d391a02d428fccaaa4fc4ce3eefcf12b553d8fc59588b922565aba2 +c179b29dcecea5254dd73f388bb94a7ea4f16c0ea0278deaa11f2be56dadb4b0 +43bf781fb5151a4d2491bfa2d439082e8cf7a05cbc84393aa92f1d09af1e69f1 +692065dfb293c7d7bb552469bead4b1479ad1b75e552af4c162d37027dda9863 +5e1ff0b4c3ba9cdb41e9c292e901446d40a10906ca0c3f649f7968b4ffd2c653 +650bb2320e55fa19938e4c3775f286a05a1011cff4e4c7f353bfdd88ce318584 +799cd9350da919e462621dc3556b48bf53edce91940eab01870741f0fbbebd2b +c6a26e593fd78e7ab5d05af43231c262477a5309acf964c0fbc114419c98df24 +279612da5ae02b2db3eb07c329891aeab0da742593183a92a619912d6e53b33e +f9489dfb011045b4f20c79a7038e473f435dcc8dfed5b9071acab5a322d4e4b9 +f225eef68b8281688882693085432c16d81dbadaa3df3c2ed508a5547c4b8b18 +2cbe2aab5bfd98acf80d5927a07da8a3aa987a899e28e69a49aca9aa960b45b0 +53079246f09b1f8be89a5912784ef566497df949ac722c37b8b4c641f602217d +e1c7fcd757c04c263aa2a4a08d7e08055e5b922d850c2a898cf32baf2418e0a1 +fa6e54e2459ef6283fbcdd406b9079950669763106c9d8b16d0aac8815fe894b +e1c7af9702ca13b36325fdd90110f1b8a03ce3e7aff614a0a2b1b15a1041800b +b72ceea17cf4a939410c53d5bac0b89eeeb9e2f9cfc6bcdfd9a438c109784adf +9d2843fc809a040b9287f0c71d93f7c2b3273d39c5ed535a8e130b46d3c97f4d +e0bf14ef07eec07f1c747a6b5d294cf4d47ac12f1d9282d2de0f808a4c609e4a +0e2a68646e9583b6b9a75c95840bab3fe259ad8846a82af91f44923f25bac677 +3c8ad0a810731fafb0a95a5445b5800d0be0378909aec60f544c3e7438760b6b +feb2b9b16652caab36f65ac444ce9358670e060a90cc422043b8ea8f0b065446 +0b4ed94690003cc77027d8a3c0a06a48bccdf5d6d6770402b4f44ed2673b1329 +06d4f88bf12a3445794fc9db3f1bb4afb8d380def7dc1dc78624c748192fa321 +c96b32dc26b30e54dffe770165d1759d82a5542cfc4a772d8c2cadcd2e2fb1ca +1517ac15deb0bccf94ce83436e989adba2903489abb6b2eb9f977f3f4d690b31 +e8f6e27faa56bde2c4fd331ceb502ad286857dd67d898f8b86e13a98044f77c9 +ef13c7b14a754fd0e07c68a90940f3fe3594afe83c605102c08ccb046b807975 +e69c165c9b833f41da40d17653b80730495803061fe194ca599d53a3367ba3c2 +8db6183ae68f6564178dc0372c58a103da58de056b7b0f8795cccb1cbd4239ee +a2b6af7eeec2f7da99f12110e07d663dfbdc0645dbf9e051f91924855405f022 +13933f1c51af2ca7a39ae3204ed31d68b15f2b74914bf86548d87316170a909e +e9638b25282a209e9d8bbea3ecfa3ed46c2dba5cb3b38d8fadd66baf9417f5cb +6b3a9186e34d1710c011e3a16fe8f9dbc207edeaa72c2f7d4b7b7112bfdd1b0a +1330a7f88ee867f55c828a9154dda3c57b6e596b830b33ff636e46d8d00fb39e +cc497f82e037ae6f7975a36876d66694e3dfccdd4a5f9ee70883fde704969531 +9cf38a1bbe0c7fbea056326e41636e17d93850a1df92ee50089f30f3c4ade4d3 +07305271d998208c7ac0f998b96ab3e3e182e29b819fd861e52b04e00f9b6be0 +8f5766fa4f3557d0ccc9edf31bf84531d664fc186ae2e7f9c81fe8c4f9f1f2ae +3b9560c9df5fe69d969a0d6c120a6621bd68991fd5593f3197223c9f09613eb7 +1ae0c78d9ffad6be1e36df5885f657994ffb6eefb5e0949674c34768f001827f +12f1ba77ae821657e3e96f17de324f9355152cd28c7bc3bb93b0bd0d40d17d35 +2b303f2518e05cfdc4dfa697683ecbd6a949a2eab9cce57b8b14c53ba2265a49 +5c28d22dab35e36b5b02d2fc02738aa6fa7c4cc66c88f5bf25b2be88a4987cfd +39ca40be4ebe0174ba827e7dba9579fe52b869142fe488f9ea5cff30111d6400 +ac3cdd3e1476468fb113f2b977937e70b7214069a06007d987d0f3ade59460c4 +35361b9ee2378b0b2365178ce4fdaff19dc8e52a4eba7cea25387a2e330bea1f +dac191c9e385c837ee253220a279f05876328864c9c2248258814f7a16030c60 +5a0da56b130757b262ba58ab68340b32d30ba67ae01efd748994a6510bdfb15b +50c31f5dedaa1866ee9123cfc235591e6516e8210dc0157687a8f081c3aae846 +7481d16e8af6d8caa9c8596c801dd5948cf7361cafb8e01268eaf0cb40ae29d0 +de3bb879970e06fea94930ffce9d4a15ff822de7486a4023fb6bcf27d496e0a5 +2c73d409ed6aea6923de8e6ddcd7615d76b5af4f2be2cee210bb781fd622574e +042b2fa03ff6e45cbefae7dfb53447fc56da42938717098806352776208567e1 +f07e8372e0bd8a19332de3a09320e82dfb6ac58689a65ec1fb97808e3ecfc84c +1173378bbcabc629bb8d4f2642cfbe1bfa1a25137db295526810f349baa1e4fe +9bc755f32a1ed330171ada792e10540d41b177bffbd9b94c2c008ff74a20138b +eb2d0b23fcdc136e434d7fc5e7710559b91756ad1171ed3bae249960384eb4b8 +4ec4c71e91d872b1db3b7ee412aa9b4e66c8e5a03d5f1d98de47ab51dd77014c +2926ab5e994a095d9ee5fb336746bba506603279bfa91724f6cc868abb2ce5b2 +c145dae2b6128e6c913c8814a5a0b4134c30edc7f97908ddc6e7bb65cf8a58de +88ffab9273afe5819be1d31040559f763e95cfe230d48681d0b4103ebb92a3f8 +01177bde9bdd61e288e9c5dbd18163eac0a67899acfc1c386f8b261fabd320ab +89fe9be450e41549b3753c32e2cd3069e82101530513728dc24d8c2c25b06ae0 +91db97dcde55f701a63895445c0bcce07ccf4c82b318494f42c776d9482c8c19 +46fce4e987e770a4a7512b5276e36ec3072c6dc9812e56e11b34baaaf9bed596 +e52d1ac1768e8e0a8b20b94f320d56406f4ea3202920fe665809102ba71932b5 +51ad5c83f6f34b1e87272e8ac300761cb99c9104a20557c09df9cf7ac51625ab +05c5a60689321d8cef7eb8edd092b9feaba272a94e133aa84a9b7cded15c6824 +3f7ef11eee530323afe1153fbd6285b2302588252609824ed75c05416beae011 +98155779dec43c2e7fc92532951a1ce0dd6613afb3f9c73055f528f993a342c2 +3ea326391cb99feae1d61d95af36536b1c53d0a2c19709f7c85f07715f95a98a +cdb7722e297692fc187c000a9e64bdfb0c56852bf7ff946f932852d3931043f2 +60b7beabb6b6faf76bd8ff3f2a6fca03fb36ef04f59a9f67d26da5ddbc23bf20 +d82e99326a41155cfc7b4fedb80f69d361c31826743ec395b7aa83c10f9b5eed +80044f3c258d7e2052d2cfe08f6046189bd0022ad8e6e7890cd31848b2477ecd +095ba2ca9f4e9ad4bc8c7b2dae33d20d4cd01885c2f172052c1f8bcea593fff3 +4821540e79f626f4d7fa64c0bb4cc5485309e67071d0277a61369645ad3a4d8c +fbfb1722ef6011fa6b2095aa4e5b32746f64c16af093df2e9bc175409949d440 +795f6f2b72a69435be1621154ade8d4dfb1bfbb0e28da8f08c76cd0521ff176a +d2e7dd44916af6a1dfa3ecd6194189190b428cb56e2ef4a1bdc5d739ff1cbefc +39eac4b5934d3707bd30caf67adb3612b37056151b45e9eb73c3bde4b4350148 +23c3ea6ad5be04886842418ea1872bc169f92a890670fe0b8bdd86421400b49d +57e5ae8fdded5d706eebe573a5a172004e59b9c81fc990d2cf7036344c4335b1 +842a5c879354a84cc837d76b2babf981d4e60c857649054fc69fc59bf14aea72 +51210ac8babc95d58f4f3b497d5db3395a638fe339c5149f284b8dfd340c0b0c +1984d43b5951b7bdb82423182dce8af2baad5eb25e037c5d976b534a3459f742 +751b5ed1c5bbe4915a7b281d1b1c806c58bbf900d5ca092fe2119ce099e52872 +0e5c8231dd6d7ed8fa5d2c953bd8bdc13781119d2b31a94bf39948d4b3688e58 +8aeae48e2d66e17935058ed16528d28e50e37bbeb1d155450364517018b1b44d +bb0703befedb3681a2b609063302129628fcc24d88653589b431fb84e4ddb650 +c2f783594de613ebdad8a1324574cad1fd05a37844799928b4da778710e3a4cf +b85afd46ed46ccad840106074f69ae7c306abf4cead6c66f4fbc0fdeef002570 +25305004426efca887ed5b4f2ef6dcb912ff552089f383d270c1312811b510f4 +11622aab22c5add53e1979fa80a9ac5ab80b3255c901cda700904e4254725a18 +6925971163b35469c55ddf9d36d2e690c988678e2be17e2668807c0fee64d264 +5a8f26899ceae3abc5553bc58674333d43f27d0ead9297619e8169554512d7f2 +9984c12dd44285a3d8a75dd20ebdb5280b95471bcbe5473447fcf750c3b061ba +bf491a61adf487ccefc79cc514569978f12a7a3420ee046e1c28776c96c550e7 +fb0e2b46b3e57b2b8a6ae7d306fd0eaeb026beb5b13b8c980828f78905369fad +aa7ac9c3b91df9a4d1be00b3aea709995849ae4ece16c126b99c3d0fc0bdc084 +f8486d70022e0d5a8e50a27e9439e37d3bc175c3a3bb19914a4bded2feb81ec1 +fa7e274b027f4f4bfb331bf4fcb58fcdd1b999a775bd2a9002e846d7fe61c6d2 +e29fedf3121af6edcef90f23f54b128efad5fcc3e2236e1f9f59218994460d1a +f21eb9a2999501fc489873e9eafb986d9e9e780b4eddf332aa72697ec956f63a +4307133ed0fd2dfafe283677469b7b14b155b17a8da4a81cbce56da716149124 +bb3b20fa7a2b64b58d6eab90dbaff1d560e5e5492f17615b7308cf7670f09a04 +6115d454937c733ed45b1156c2e7d0ed43c093d6416b91533637d5d5f649bca5 +50a5ca5522b0f8362042caa30a4bc87a4a4339710e2de9b2c0c84baebedd073f +25cacf0e4c4bdba46f4c545e27d20536827ea4a4d5f5e19518fae6ba2d45b5e0 +b247f20752a795594d9ce548b5c0217ef480cc5a0be6794178fc7c017aa8a3bd +74686310f635ae6153d9e18a0514882d4ccfe9d7dae9f24b393985e8da776880 +1d9a6515ed7bfad3cabd1e13f2a9be17d42dda60f38dc5dd5412b03b938bed86 +0f9cc900eba7eb281e619edc39b5413af1e242ab56171d3a01203c76788d9024 +2f72c89b7adb10f5caf6851acd3a4369972f796d5a1a9816023f5a454dbf5bfa +5ea34c00df81a76fd79a0198e91ea01efbf7d89d78f9da5253250bb29770c4e8 +df955af85d48c33fbdff3845d6868920a3b09ceb0b7de798354e80d1f3ec05d6 +3ceeb37751ab5f9d5f7e682958235c0fb224551296108eeded2e000bf86193ad +5f290f698375727743a699633867f03f2d7801b18627f25628c0b65ace0e766e +ed22bae384ad0305bbba6a3cbb913641106259e2947e77caa437856febd8b604 +7621e8be93bf909cf3893cb2e0b4c75afabcac6ee9ebfa30dc6ba5e9bb572318 +ba844429bd3b5bec550ebf2b7a3776f11dcb71c930489a792bbad9f6a1679b6e +22a32048d0652fe2e3c1dfebce17cf97281087ed892b5d02d83a97dba1b3b221 +4f52eaa45592670902f979905281d7e92e9bbeebb909d5152f97aa49068d3b2e +8ce26b784b48936a3f8e569e5d96d8f3cf19335c7ca5f139815f26b62ef0be05 +2f436d3d7ad037451cef14021a15b0b10a07048ffd4cc4b4ca987cde5290318d +7100cdfb146fa044c694c79f3ff3ac98f1067bcdddc054cb3867af0b7e340e39 +81cc10ba0763901afa3f492590664fbddc6fe2ef568d6765579eaa5ff1501a1e +6b6b303c415557a70b4d60994b9841785a8791b51814f08ce8f0b048c690dc05 +fce223f392df0b93c030960e7a4717203c957f428fa52cf5d206eac92a7ec569 +b1353585ae6a14877eebbd8c402163bec563feab67ed764809e5205bc3f50fcb +557af616a430215a7f9915872478572a2335fa3817abd8ff113020f023c513b4 +202a3015e22d173b07d87e6d6eeeb3e0b0891c00831843c6a2613c15bfbcaf5a +8bad5d9e69a88eed3a1965e1876b223b74dedd8f16a2302c7f70ed7c8b5e60e2 +25c39cd88e4b559888007abc4f48955fe377c69b00be16bf9eec8248ebeb6808 +5a80b2f60ae03c29fa29b91f30efb4ca29bc51fb2bc09a7343d0b107ffd02a03 +b26ffb1c6b1d2b5adb3647d37bdb45420e8a115beadb142e3aeedbcc8d0ecd93 +8777fb9ee661d5db7088e3faf04e91f1865418e2723565fe2617d2d8e106a230 +a2dcb6a4502528d22457a4399cb7f9e4f788a03d6c8b5757cf59267fd86ac4f9 +21675f6da1a90156bbdfa77facf6df331491cd2cde707e509b8e5d03ba1b6781 +eacd2ac3eeabb5f5ac4d0d8f5b10676e7357557c23bd6412c625d7944302c969 +561c704f937fe5304e1704b20352a758d6237e52c4a356a08f9893743a5c20da +6a817899bb2edbadbf4234e1ece52b9b3f3e29095f0975259c931b67595f0ce0 +db8e4ccd5f6fdfdda07663d252bd05fd4ca58fa54a9fa6acceabd97f2313c59d +195cbc3bfb55f9050d5e3ec4e42f883635f18d17efb2a0ab333e09c2521705be +aa147b6717c816e57d38adfb2f4658249a3a345b337251b7537cd305c6424dbf +b204417f4c36086edaa8da348dc065aa5a7f68a0ad3e3676a7c240e76ddc8786 +96b56cd4e70c28c3009185ae13ad4e96c8522735074ad649cabf39201903e974 +12967a45b574790d727dc68222dff726fd162dbfee4964afbe6549abeead5264 +a033fb29e70f1d17fe58934bfdd5ee6defe6056ea4a0e39a39b7fc1a6da06713 +f952bc20c689bdddb94bd67997f60f31fa6239387089deee5b687455a5c06fa9 +fe941781f0d9835d8d020cc6286c2fb8ed5906eccffacadd71ee0b7c7b67d8c7 +aaa95f9cb24fd22bea989e0e0919a4ea35fac630a9090346da895bb5b6e1c1ba +ff90f1e16665998ab7612444979edefd96f1f701d13950e0ca2daa7787735fc8 +4b268e36cba6d7de0506dc5353f3d13ad666cba8f8c56e27e44b57873adee581 +fafd1f33a85b6169d4794b1d73940c134f11dfde03ccc5709f6d806cfffdb6fd +f9361520d0023ac6aa3c93b843d8cd8a652a665eb31d6b75d752e7679a9e1327 +d0adf92820acc78b0793b9f0307c776c201a408a883f99f9d2ade3960b1e62e2 +db5d6ca4115a028f87f77651c95bd71456ba087709827b05a80ff78746cd3c09 +72eec0baa7ebc8a05043e18e63517fb66e333973dfa6bc796af520e8efbae640 +a2f4b94f244d365b76fb3e229726dd7c61478dff4d616cdceaec1ad70d9cefd6 +0e9e6affa41f34b777da7174b3281acda204977bcedb3f5f9f0c5d77607237a6 +9d6780dd18cef875257fd719d237a35864498978239cc0933a9ad0fb8ac74f3d +869fab0c30e8001a2df0ada8f56de43c5e9a7dc78220720dae05f0fff948adf9 +0e8319eafa3fc8e936c9c040b1498e7eafc36f03bb4cd11a6fed37b7a8d05b1d +00b5f36799e9556526f5e5f2205dd641ee39a4bd6c8ec20a36473eadfe1a499e +88284d2fb544b7bdb637868345ae4b3dca6bc0754bad59df4558d2d608faf166 +68daeac6bfb73db431a3146628d371c2d158a1ba65c8d2d47ceec7addae77864 +042ef587a6d6c04dce664bf83492d164d2fc00c1313c220bfdd7a30dede201c5 +1e84d9573c79235a8d847d0a4c231fe009058f5848c775e343c61835c7c8e025 +44dbe77ccfff9e9c950ace49091771604234e586c1335904da22349a847ade3c +060aec69c2987eb1f3332d8b66e59be53edab3da137d59cc6efa0f579f8a1d03 +882c720c27834570c10bf892f79b30340ead8535881b11171b2040fb6637140b +e927369f803a4ff311d78d7e68f4b5f8628fdcfa2cc376442d78e6f47cb378eb +31f079902cd32d6aec688f02a7365b66797de1ea022afec2f3aae36fe01a3e5e +6cc49c79ca23dc10ed8071eea3a0f8924a0dcc610f842e4e30c1104f859ac970 +06c7490195599c65393be11269c8dd7247c96d632523256f59edeb144329b8da +b35303c922432e92394a95196dad464e35858f00e6a27320cf515b7b8af90d06 +82e89f09afb605862d14eab6a99218b3f66f11ea2f345629c402bd9aeb25e3e9 +8734a0ca4a814d824ee4ca5383c6eb8ff1458c767dd9b71530c5f01be2d2611c +f9644c28f3f52ac748749b54eb652f76630e3a62b63a3562a54144c306beddfd +557e154c7d4931bafe9a9136c3aae071b00e7204150cece0d45e10bd736b633c +8abf3817168828ba17b23c8ef8ee35119c43cd7fe068e1f016aadc734d4338d7 +8abd60567f307d6ec471f99b03cc7b5e8140dc07f726303c2185590f9f2224c1 +52bf01b038ae1e963098a309edf98ce5ba1ab235e1190ba23732e42841b2bf69 +36560701e1653df36a29c8c3254d402d0140f5ffeda15ded4728c176e3f39c35 +48b5a2be25266587b52bda256f255c940adddbfcaf37ba2500213239f12dc7e0 +0b61230190a4380917962c18effc6774f6db08b799c5966ca7133fadfd7e2b25 +75116286d1c2a40545f973870cbb5cf97691afe304ca7b586f198c426a71dfa8 +cedbe3d94bda4267b9b5ff1454ac7d54f59c5d94588bb274601cee186b9ee892 +5f359ec5bc402442bba33b2663d564461ca130d7f1405b0467027ec1e27bbec4 +8d51c674c81b66ec733c4c57410956520f9c16708aaee0d9ae34f1050f6412c7 +7a23c8c3364dad8e407319772c9b201c49b75dea4685566d9c912acdb47aece3 +f9786e47398891c07b0269e74e2eb935991c9d7a835eb88bc04eb2b195ddeb02 +38dcd1e4bb773e269ad58fa9e2f5482db94a661f065bfafee3ccc1c812e9fac3 +31fd70975e3a0c72d37207d6c90f998103a821c35734f0153950e5f72ff6a8ac +cb831f57267142dcc4079c915a4d01807fdc883e15a15b67e8cea1ef8d26e4fc +b55c69418d7a4dcef51473a037050cc43e204fc7de2392905800993bbccaf459 +3bd84187fd1c295d111867930dd068988631f5d0abb9adc48b7ca8134f8a3baf +3569f5ffbf19291022b3e13fdabbf0ddf64fef601cf97dc70ed2e4355de38f1c +0ca81966adfc95cf03e794d875025af92bbeaacd9ee58b49c3f0b67d72b13a0a +971076819781d91814c47a0a3b53f767b7630fb55df3d2706d834b127d56fc95 +b9b30ab934839b8324c9ee0147f0bbec998eb1b2939a2102c59c896b9f57c9b2 +fc138cfd94fd5c512bd83e30e8356e983cceb0de72224f78b3c8a98359e46f22 +c19ab808b70c4287397eade3b28a311244385d3d49fb80adc4f90f32366fcf42 +eaea8d05392164a48f03184563922bcbeb78376f512b9a289325a61c0c357e40 +bb3dbeebf870ec12ef096a8997bb6ec55251ad55bd881ebdda84056556380935 +b0b8eb1f74ef96bf02375a30dc53795da638252a12a2e9bc18bfd7ff5aa7a8f4 +4a6bb4a34f1c94a781a129fc975823bd16a6df7c5d75b7f6dff55ac5f82e3e2f +572f339f48024e93f0c59fb1fc95bacf7bf5fd7c683c9b159c3b5d937c3a2110 +e78889021ebbbbe76b1f984317d310ea61f7b5cdb4ed1754a35adc9c6924c3e0 +2e3b157261eea5092e0e7a914a259eea2b14192343680a18710db9f82e54c920 +369587bcdeed8f8acb72d2565ca89ea92b6b58bb861012ccab7270200ed5cef3 +9bdc58f4831161e8ce4ef5c6fc839deb8216482d906d60c1a3292de191b40c79 +85529eae01de8fadd442ec8bfa775366070a9e193138a4c6f6eca7ff554c57a0 +19346015d6ed5dfe8b9dd876a207e7247deaa1e42a41c3edccb32d47e5fa97c0 +9bf3f8324a366856d6c6df8f295da2a9164a99b6e66adf4247dd79bbf54525dd +bcf518651fd8b374cbca6ac532ed443a1c952ce148a67cc655d92b670ab76c64 +cba90089f1d252ab55d93cfd0ec1545e79b65c5337fc57e46ad6ddcf5ca56204 +867e467d3982d77c2e603fee7ec4b57bd8718e5be9203666459815b7428679b2 +134188b7c2c89f64b7426e0dde73f586a7a86a4cc4136bcd5b09b2482aaf3ea2 +6a9c99cdc852ae0a7262b57c06143f1a6528b02cdd69b9fd5edc635873997b4d +7c5644daa467783e154ad0a787e72bf5a627f712267198d9368b480a4e764627 +b268d7f1500b8e155615bf9e59bedc125774802dcbe33451e222f6a9ba24afc1 +92933742c74822f138baac4bddcfbf447dea77a4e913028db069e802014b5d57 +b0c7d6b7a727742eebb6a7c7a2231c94d63fbe66fa8030f3b378006027ceb4b2 +74d8d75d001c7b4d0225ec9cb04ca7f5e1668b44682847a8b14dda4ecd87fda2 +6b1694a2810f90537c403ff242d0accc8b73fa0088d668fb4fd50c4a0b0aafe3 +0dddc6e893c1bb127147fd1b35254e2ef659f023cd826cbf5e400dfba85f4df9 +f70b30a42df485bf5dd6c620e37c82bedef5841131716bc5eeb40aefec8c0379 +f9348a1d7ad0618a422d85300bc0f4208a5b4baf9dd1f568da943f0023eec988 +21187716ec2104282a7fed77b0c5b01e78d5d9d5d99994a9f232859ce68a62a9 +e6960f557f153d7101dd98b7836d7841d3180be3b34a99d4434af82db181de42 +e7f3fd86d86678ea86c4ea4d0af845955141ca4f9266f3ef69c2ce9b73ae1558 +9dd98a8a0802572fba00fc509918a64f1dcabd06286039e75042d53d472ae66e +38ecb6e6795e3dd12757255e786909f306fc17d14ed432f5107aac6cc50236b7 +d381ad2c4da239669d94cb276610a846e991f508a75e1a3a851be789b9a3f75b +f5d7dfde15eadd55e7710d79b5a4127b5e9f85f6bceace031aa9ad412541848d +59dd3f66886672db5d90f51fd15334eb973e64baa4181186cc3c090b2a5bbb70 +e9e1fd9420a31674e9e517b1dc0196fcb5624668785a65dfa60a0944386beda0 +66e2a3d871913d23001c0b5f22c4136fa48e6fbd636fe0bbc104cba53ecd15b7 +0034db9200070b7924ab31ea318cffc35cb44bbda45e04f64516b48bbaceed37 +56a2aaa5d5c0a2d06f71a5ca689c8c8afc991638fff960d060555d9ee7a13868 +434853e22d4d9aed6231039517aa713e67e7c08467c687a21bfb00e6c99c9b15 +51859fb8f437c77bca2b0fc97a36ee9b552645b83ddcd2ae48049085693c356c +53b214b9216d5466852340dbb92eadc60bb6225d9c08bb9f5e9f50e40dfb7c12 +2b5126c6e11393d04691831af2707bf11e0c4e887511a59442469df76bc8eb2e +d2e97d09b6b2f1b533ac64d85d454f57702af92cc88d5ddc46388d6c203ba06a +f57846d420ef1727d97d964da29018245d91f1e37e3e3f9f04e02d997b0c28fe +4c99293e87c978606c3a0c7ca1d121c60ac58fad627be407057eae2ebc2074dd +fd2bd9fb017ad048ead3d1243b7634701508034a934c81a9f63a05b7319676d7 +bb9af94fbe826f84d4149e81b46424e482c8c1c655affecb4393177d768eaa24 +a68a71e4faf578e57865b15f459315a26ddf6e39bd3d16958a3a8cbeab793eaa +533eaa3d89e78d292fe37f0c23e32abfd50b2c9fba8261331c66458340bb4cd5 +4e7a7cac3df5ca530fbffd93789357877ad2fe127377b899340416d6100e2165 +64c62ed803d484656ef5ff7587902285671f280de39228b9432ba46c3ecbdd23 +46222998ef3c528cec6da555eb72092d97664cf35ea21e31ffb70e8b8102ddf6 +0203d3dddaa7593a8dc0b1c6af796d891e80860e6bba501e4c38dd5c6b5a6f35 +a38ef0c7cd4ab7cce0e17fae913eec2572565070169cce8517c37b21699fe4d3 +58439dcec0066047253d42a74ba564d2fc7ccf34b3b4e77fbac09d950c3c134c +5671c64b9964c124d123a299d2070826fde61b7f637bf87739e7a0de70ef82af +c901821eabb31969a27596e9826dd506912d05918ddd2981d5fb153526683f83 +04bbb13678af6d8a65aaae58240688caf7a8419f7bacf078dae7495ab646fc40 +c9004cbabf4c76143e33fe49fed460a102129b9f6cdda0797e53df9b9db99890 +7dc89ecb49ee18cd7556b44b096c9337f6a5618b589c6d7c87ea0f292bb446fe +c901b120180e3b514e3e7e32e52028a30cfd6879068a68b7ef5db202f575a6f3 +52748c45a3509d747d672b446efd09b0dcab7b3f8808c011a0470eb5c9d8d632 +0f413186fdf227c7f9c45c403ef93db5fb63819de4ca368f1b9387dfb0f039e8 +2c47f56fa0d3073c901393803ae628eba7313821a01b07918efa4d901aca044e +90d0227813c537cdc2c906e44140bdcb8717e95b7597ad7c01b51b7dac732e65 +fa3870fe8865ae6dbc96b5a984e2e363c4b67a3a07fe4eb42044112ecfff74f4 +09329f03a55e1f57656f88a08e597bfccb97a2b0bc0c26db9aa5bc5f1d1bafa3 +65f32c6ae5de5f798233ed6878583d8335e8988021438e992be94f6b73608413 +b83693b45e539261664f851652bd9458e643bd60628d0acb48a0edd350749e13 +9e480bb10cfb50b4fa0e37348d2f5ebc3e3f3457128b9793ef1359076da9e92d +e3bbd59ccc0c0327867bd7895a19cb93fdcd6ef8d459ccabadb1e0bc6896b456 +b13cab755da348b349da1b485947a23d05e9bb5dfeb8300f8fef30d7f09d288f +681ee6e23d21f76f806440680e7913d323a264fd6d69d4be33527e050856f8d7 +20fcf33f81e5021271c2cefd7b1c6a2dc9e207140be0030fd866fb65e33cf5fb +8879dd70eed5e887537c45d136be8bb191bd9dc4cea400137903a12b66dcd359 +9b6c2e43306759110af0878c8f37c8daf847657c2bd68d5c3ca105b332d18d5e +03269eedc1ae92f4e45c79915981c1f32b5a39c46c358708460301ca4298bbb4 +5b91e0d45fd1de756c6885545bdf5bce1cd40bb0c92c481a629b0d8dafb6b895 +995c6777d9355af0b03720d3c7456ad60eaa5a80549bb54c0820e000eb30a3e6 +f81c1cdc55b70d902a432d13a233c63ae54f98718d6ddae3c6aabebc65760e59 +d87abb67a5171a4ec2b2377bb5a39f +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +/F621_0 /AMYDOG+NimbusRomNo9L-ReguItal 1 1 +[ /.notdef/.notdef/fi/fl/.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/hyphen/period/slash + /zero/one/two/three/four/five/six/seven + /eight/nine/colon/semicolon/less/equal/greater/question + /at/A/B/C/D/E/F/G + /H/I/J/K/L/M/N/O + /P/Q/R/S/T/U/V/W + /X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore + /quoteleft/a/b/c/d/e/f/g + /h/i/j/k/l/m/n/o + /p/q/r/s/t/u/v/w + /x/y/z/braceleft/bar/braceright/asciitilde/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/bullet/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/exclamdown/cent/sterling/fraction/yen/florin/section + /currency/copyright/quotedblleft/guillemotleft/guilsinglleft/guilsinglright/fi/fl + /.notdef/endash/dagger/daggerdbl/periodcentered/.notdef/paragraph/bullet + /quotesinglbase/quotedblbase/quotedblright/guillemotright/ellipsis/perthousand/.notdef/questiondown + /.notdef/grave/acute/circumflex/tilde/macron/breve/dotaccent + /dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut/ogonek/caron + /emdash/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/AE/.notdef/ordfeminine/.notdef/.notdef/.notdef/.notdef + /Lslash/Oslash/OE/ordmasculine/.notdef/.notdef/.notdef/.notdef + /.notdef/ae/.notdef/.notdef/.notdef/dotlessi/.notdef/.notdef + /lslash/oslash/oe/germandbls/.notdef/.notdef/.notdef/.notdef] +pdfMakeFont +612 792 false pdfSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +117.435 701.916 Td +/F116_0 24.7902 Tf +(bzip2) 63.3638 Tj +-278 TJm +(and) 44.077 Tj +-278 TJm +(libbzip2,) 99.1856 Tj +-278 TJm +(ver) 37.2101 Tj +15 TJm +(sion) 50.9687 Tj +-278 TJm +(1.0.6) 55.1334 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +90.493 661.631 Td +/F116_0 20.6585 Tf +(A) 14.9154 Tj +-278 TJm +(pr) 20.6585 Tj +20 TJm +(ogram) 63.1324 Tj +-278 TJm +(and) 36.7308 Tj +-278 TJm +(librar) 51.6669 Tj +-10 TJm +(y) 11.4861 Tj +-278 TJm +(f) 6.8793 Tj +20 TJm +(or) 20.6585 Tj +-278 TJm +(data) 42.4739 Tj +-278 TJm +(compression) 128.5785 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +207.676 503.285 Td +/F116_0 11.9552 Tf +(J) 6.6471 Tj +20 TJm +(ulian) 27.9034 Tj +-278 TJm +(Se) 14.6212 Tj +15 TJm +(war) 20.5988 Tj +20 TJm +(d,) 10.6282 Tj +-278 TJm +(http://www) 61.103 Tj +40 TJm +(.bzip.or) 42.5127 Tj +15 TJm +(g) 7.3046 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 2 2 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +72 709.534 Td +/F116_0 14.3462 Tf +(bzip2) 36.6689 Tj +-489 TJm +(and) 25.5075 Tj +-488 TJm +(libbzip2,) 57.3991 Tj +-542 TJm +(ver) 21.5336 Tj +15 TJm +(sion) 29.4958 Tj +-488 TJm +(1.0.6:) 36.6832 Tj +-766 TJm +(A) 10.358 Tj +-488 TJm +(pr) 14.3462 Tj +20 TJm +(ogram) 43.842 Tj +-489 TJm +(and) 25.5075 Tj +-489 TJm +(librar) 35.8798 Tj +-10 TJm +(y) 7.9765 Tj +-488 TJm +(f) 4.7773 Tj +20 TJm +(or) 14.3462 Tj +-489 TJm +(data) 29.4958 Tj +72 692.319 Td +(compression) 89.2907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 680.364 Td +/F122_0 9.9626 Tf +(by) 9.9626 Tj +-250 TJm +(Julian) 23.8007 Tj +-250 TJm +(Se) 9.9626 Tj +25 TJm +(w) 7.193 Tj +10 TJm +(ard) 12.7222 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 663.427 Td +(V) 7.193 Tj +111 TJm +(ersion) 24.3486 Tj +-250 TJm +(1.0.6) 19.9252 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(6) 4.9813 Tj +-250 TJm +(September) 42.61 Tj +-250 TJm +(2010) 19.9252 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 651.472 Td +(Cop) 16.6077 Tj +10 TJm +(yright) 23.8007 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-250 TJm +(\251) 7.5716 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-250 TJm +(1996-2010) 43.1679 Tj +-250 TJm +(Julian) 23.8007 Tj +-250 TJm +(Se) 9.9626 Tj +25 TJm +(w) 7.193 Tj +10 TJm +(ard) 12.7222 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 633.938 Td +/F122_0 7.9701 Tf +(This) 14.1708 Tj +-250 TJm +(program,) 28.9952 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +119.151 633.938 Td +/F124_0 7.9701 Tf +(bzip2) 23.9103 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +143.061 633.938 Td +/F122_0 7.9701 Tf +(,) 1.9925 Tj +-250 TJm +(the) 9.7395 Tj +-250 TJm +(associated) 32.7571 Tj +-250 TJm +(library) 21.2483 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +216.768 633.938 Td +/F124_0 7.9701 Tf +(libbzip2) 38.2565 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +255.025 633.938 Td +/F122_0 7.9701 Tf +(,) 1.9925 Tj +-250 TJm +(and) 11.5088 Tj +-250 TJm +(all) 7.9701 Tj +-250 TJm +(documentation,) 49.3668 Tj +-250 TJm +(are) 9.7315 Tj +-250 TJm +(cop) 11.5088 Tj +10 TJm +(yright) 19.0406 Tj +-250 TJm +(\251) 6.0573 Tj +-250 TJm +(1996-2010) 34.5344 Tj +-250 TJm +(Julian) 19.0406 Tj +-250 TJm +(Se) 7.9701 Tj +25 TJm +(w) 5.7544 Tj +10 TJm +(ard.) 12.1703 Tj +-310 TJm +(All) 10.1858 Tj +-250 TJm +(rights) 18.1559 Tj +-250 TJm +(reserv) 19.471 Tj +15 TJm +(ed.) 9.5163 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 616.404 Td +(Redistrib) 29.2264 Tj +20 TJm +(ution) 16.3865 Tj +-250 TJm +(and) 11.5088 Tj +-250 TJm +(use) 10.6241 Tj +-250 TJm +(in) 6.2007 Tj +-250 TJm +(source) 20.802 Tj +-250 TJm +(and) 11.5088 Tj +-250 TJm +(binary) 20.3636 Tj +-250 TJm +(forms,) 20.5868 Tj +-250 TJm +(with) 14.1708 Tj +-250 TJm +(or) 6.6391 Tj +-250 TJm +(without) 24.3566 Tj +-250 TJm +(modi\002cation,) 42.2894 Tj +-250 TJm +(are) 9.7315 Tj +-250 TJm +(permitted) 30.5494 Tj +-250 TJm +(pro) 10.6241 Tj +15 TJm +(vided) 17.7096 Tj +-250 TJm +(that) 11.9552 Tj +-250 TJm +(the) 9.7395 Tj +-250 TJm +(follo) 15.0555 Tj +25 TJm +(wing) 15.9402 Tj +-250 TJm +(conditions) 33.2114 Tj +-250 TJm +(are) 9.7315 Tj +-250 TJm +(met:) 14.1708 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +73.993 590.899 Td +(\225) 2.7895 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-450 TJm +(Redistrib) 29.2264 Tj +20 TJm +(utions) 19.4869 Tj +-250 TJm +(of) 6.6391 Tj +-250 TJm +(source) 20.802 Tj +-250 TJm +(code) 15.0475 Tj +-250 TJm +(must) 15.5018 Tj +-250 TJm +(retain) 18.1479 Tj +-250 TJm +(the) 9.7395 Tj +-250 TJm +(abo) 11.5088 Tj +15 TJm +(v) 3.9851 Tj +15 TJm +(e) 3.5387 Tj +-250 TJm +(cop) 11.5088 Tj +10 TJm +(yright) 19.0406 Tj +-250 TJm +(notice,) 21.4714 Tj +-250 TJm +(this) 11.5168 Tj +-250 TJm +(list) 9.7474 Tj +-250 TJm +(of) 6.6391 Tj +-250 TJm +(conditions) 33.2114 Tj +-250 TJm +(and) 11.5088 Tj +-250 TJm +(the) 9.7395 Tj +-250 TJm +(follo) 15.0555 Tj +25 TJm +(wing) 15.9402 Tj +-250 TJm +(disclaimer) 33.2034 Tj +55 TJm +(.) 1.9925 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +73.993 573.365 Td +(\225) 2.7895 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-450 TJm +(The) 12.3935 Tj +-285 TJm +(origin) 19.0406 Tj +-284 TJm +(of) 6.6391 Tj +-285 TJm +(this) 11.5168 Tj +-285 TJm +(softw) 17.7096 Tj +10 TJm +(are) 9.7315 Tj +-284 TJm +(must) 15.5018 Tj +-285 TJm +(not) 10.1858 Tj +-285 TJm +(be) 7.5238 Tj +-285 TJm +(misrepresente) 44.2659 Tj +1 TJm +(d;) 6.2007 Tj +-303 TJm +(you) 11.9552 Tj +-284 TJm +(must) 15.5018 Tj +-285 TJm +(not) 10.1858 Tj +-285 TJm +(claim) 17.7096 Tj +-284 TJm +(that) 11.9552 Tj +-285 TJm +(you) 11.9552 Tj +-285 TJm +(wrote) 18.1479 Tj +-284 TJm +(the) 9.7395 Tj +-285 TJm +(original) 24.795 Tj +-285 TJm +(softw) 17.7096 Tj +10 TJm +(are.) 11.724 Tj +-828 TJm +(If) 5.3081 Tj +-285 TJm +(you) 11.9552 Tj +-285 TJm +(use) 10.6241 Tj +-284 TJm +(this) 11.5168 Tj +-285 TJm +(softw) 17.7096 Tj +10 TJm +(are) 9.7315 Tj +-285 TJm +(in) 6.2007 Tj +-284 TJm +(a) 3.5387 Tj +79.97 563.801 Td +(product,) 26.3412 Tj +-250 TJm +(an) 7.5238 Tj +-250 TJm +(ackno) 19.0326 Tj +25 TJm +(wledgment) 35.4191 Tj +-250 TJm +(in) 6.2007 Tj +-250 TJm +(the) 9.7395 Tj +-250 TJm +(product) 24.3487 Tj +-250 TJm +(documentation) 47.3743 Tj +-250 TJm +(w) 5.7544 Tj +10 TJm +(ould) 14.1708 Tj +-250 TJm +(be) 7.5238 Tj +-250 TJm +(appreciated) 36.7342 Tj +-250 TJm +(b) 3.9851 Tj +20 TJm +(ut) 6.2007 Tj +-250 TJm +(is) 5.3161 Tj +-250 TJm +(not) 10.1858 Tj +-250 TJm +(required.) 28.5489 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +73.993 546.267 Td +(\225) 2.7895 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-450 TJm +(Altered) 23.9023 Tj +-250 TJm +(source) 20.802 Tj +-250 TJm +(v) 3.9851 Tj +15 TJm +(ersions) 22.5793 Tj +-250 TJm +(must) 15.5018 Tj +-250 TJm +(be) 7.5238 Tj +-250 TJm +(plainly) 22.1409 Tj +-250 TJm +(mark) 16.3786 Tj +10 TJm +(ed) 7.5238 Tj +-250 TJm +(as) 6.6391 Tj +-250 TJm +(such,) 16.6017 Tj +-250 TJm +(and) 11.5088 Tj +-250 TJm +(must) 15.5018 Tj +-250 TJm +(not) 10.1858 Tj +-250 TJm +(be) 7.5238 Tj +-250 TJm +(misrepresented) 48.251 Tj +-250 TJm +(as) 6.6391 Tj +-250 TJm +(being) 17.7096 Tj +-250 TJm +(the) 9.7395 Tj +-250 TJm +(original) 24.795 Tj +-250 TJm +(softw) 17.7096 Tj +10 TJm +(are.) 11.724 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +73.993 528.733 Td +(\225) 2.7895 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-450 TJm +(The) 12.3935 Tj +-250 TJm +(name) 17.2632 Tj +-250 TJm +(of) 6.6391 Tj +-250 TJm +(the) 9.7395 Tj +-250 TJm +(author) 20.3636 Tj +-250 TJm +(may) 13.7245 Tj +-250 TJm +(not) 10.1858 Tj +-250 TJm +(be) 7.5238 Tj +-250 TJm +(used) 14.6092 Tj +-250 TJm +(to) 6.2007 Tj +-250 TJm +(endorse) 24.787 Tj +-250 TJm +(or) 6.6391 Tj +-250 TJm +(promote) 26.5643 Tj +-250 TJm +(products) 27.449 Tj +-250 TJm +(deri) 12.3935 Tj +25 TJm +(v) 3.9851 Tj +15 TJm +(ed) 7.5238 Tj +-250 TJm +(from) 15.4939 Tj +-250 TJm +(this) 11.5168 Tj +-250 TJm +(softw) 17.7096 Tj +10 TJm +(are) 9.7315 Tj +-250 TJm +(without) 24.3566 Tj +-250 TJm +(speci\002c) 24.3487 Tj +-250 TJm +(prior) 15.4939 Tj +-250 TJm +(written) 22.5793 Tj +-250 TJm +(permission.) 36.9733 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 511.198 Td +(THIS) 17.7096 Tj +-401 TJm +(SOFTW) 27.0107 Tj +120 TJm +(ARE) 15.9402 Tj +-401 TJm +(IS) 7.0854 Tj +-400 TJm +(PR) 9.7474 Tj +40 TJm +(O) 5.7544 Tj +50 TJm +(VIDED) 24.787 Tj +-401 TJm +(BY) 11.0705 Tj +-401 TJm +(THE) 15.4939 Tj +-401 TJm +(A) 5.7544 Tj +55 TJm +(UTHOR) 27.449 Tj +-401 TJm +("AS) 13.4376 Tj +-401 TJm +(IS") 10.3372 Tj +-401 TJm +(AND) 17.2632 Tj +-400 TJm +(ANY) 17.2632 Tj +-401 TJm +(EXPRESS) 34.1041 Tj +-401 TJm +(OR) 11.0705 Tj +-401 TJm +(IMPLIED) 32.3188 Tj +-401 TJm +(W) 7.5238 Tj +120 TJm +(ARRANTIES,) 46.7128 Tj +-401 TJm +(INCLUDING,) 46.2585 Tj +-401 TJm +(B) 5.3161 Tj +11 TJm +(UT) 10.6241 Tj +72 501.634 Td +(NO) 11.5088 Tj +40 TJm +(T) 4.8697 Tj +-304 TJm +(LIMITED) 32.7571 Tj +-304 TJm +(T) 4.8697 Tj +18 TJm +(O,) 7.7469 Tj +-305 TJm +(THE) 15.4939 Tj +-304 TJm +(IMPLIED) 32.3188 Tj +-304 TJm +(W) 7.5238 Tj +120 TJm +(ARRANTIES) 44.7202 Tj +-304 TJm +(OF) 10.1858 Tj +-304 TJm +(MERCHANT) 44.7202 Tj +93 TJm +(ABILITY) 31.8724 Tj +-304 TJm +(AND) 17.2632 Tj +-305 TJm +(FITNESS) 31.442 Tj +-304 TJm +(FOR) 15.5018 Tj +-304 TJm +(A) 5.7544 Tj +-304 TJm +(P) 4.4314 Tj +92 TJm +(AR) 11.0705 Tj +60 TJm +(TICULAR) 34.5344 Tj +-304 TJm +(PURPOSE) 34.9887 Tj +-304 TJm +(ARE) 15.9402 Tj +-305 TJm +(DIS) 12.8398 Tj +1 TJm +(-) 2.654 Tj +72 492.07 Td +(CLAIMED.) 38.2963 Tj +-576 TJm +(IN) 8.4085 Tj +-287 TJm +(NO) 11.5088 Tj +-288 TJm +(EVENT) 26.118 Tj +-288 TJm +(SHALL) 25.6797 Tj +-288 TJm +(THE) 15.4939 Tj +-287 TJm +(A) 5.7544 Tj +55 TJm +(UTHOR) 27.449 Tj +-288 TJm +(BE) 10.1858 Tj +-288 TJm +(LIABLE) 28.3337 Tj +-288 TJm +(FOR) 15.5018 Tj +-288 TJm +(ANY) 17.2632 Tj +-287 TJm +(DIRECT) 28.78 Tj +74 TJm +(,) 1.9925 Tj +-288 TJm +(INDIRECT) 37.1885 Tj +74 TJm +(,) 1.9925 Tj +-288 TJm +(INCIDENT) 37.6268 Tj +93 TJm +(AL,) 12.6167 Tj +-288 TJm +(SPECIAL,) 34.3193 Tj +-288 TJm +(EXEMPLAR) 42.9509 Tj +65 TJm +(Y) 5.7544 Tj +129 TJm +(,) 1.9925 Tj +72 482.506 Td +(OR) 11.0705 Tj +-299 TJm +(CONSEQ) 31.8804 Tj +10 TJm +(UENTIAL) 34.5265 Tj +-300 TJm +(D) 5.7544 Tj +40 TJm +(AMA) 18.5942 Tj +40 TJm +(GES) 15.0555 Tj +-299 TJm +(\(INCLUDING,) 48.9125 Tj +-299 TJm +(B) 5.3161 Tj +10 TJm +(UT) 10.6241 Tj +-299 TJm +(NO) 11.5088 Tj +40 TJm +(T) 4.8697 Tj +-300 TJm +(LIMITED) 32.7571 Tj +-299 TJm +(T) 4.8697 Tj +18 TJm +(O,) 7.7469 Tj +-299 TJm +(PR) 9.7474 Tj +40 TJm +(OCUREMENT) 49.59 Tj +-299 TJm +(OF) 10.1858 Tj +-300 TJm +(SUBSTITUTE) 47.8206 Tj +-299 TJm +(GOODS) 27.449 Tj +-299 TJm +(OR) 11.0705 Tj +-300 TJm +(SER) 14.6172 Tj +80 TJm +(VICES) 23.0256 Tj +1 TJm +(;) 2.2157 Tj +72 472.942 Td +(LOSS) 19.4869 Tj +-360 TJm +(OF) 10.1858 Tj +-360 TJm +(USE,) 17.048 Tj +-360 TJm +(D) 5.7544 Tj +40 TJm +(A) 5.7544 Tj +111 TJm +(T) 4.8697 Tj +93 TJm +(A,) 7.7469 Tj +-360 TJm +(OR) 11.0705 Tj +-359 TJm +(PR) 9.7474 Tj +40 TJm +(OFITS;) 24.3566 Tj +-360 TJm +(OR) 11.0705 Tj +-360 TJm +(B) 5.3161 Tj +10 TJm +(USINESS) 32.3267 Tj +-360 TJm +(INTERR) 28.78 Tj +40 TJm +(UPTION\)) 31.8724 Tj +-360 TJm +(HO) 11.5088 Tj +35 TJm +(WEVER) 28.3337 Tj +-360 TJm +(CA) 11.0705 Tj +55 TJm +(USED) 20.8099 Tj +-359 TJm +(AND) 17.2632 Tj +-360 TJm +(ON) 11.5088 Tj +-360 TJm +(ANY) 17.2632 Tj +-360 TJm +(THEOR) 26.5643 Tj +65 TJm +(Y) 5.7544 Tj +-360 TJm +(OF) 10.1858 Tj +-360 TJm +(LIABI) 21.2483 Tj +1 TJm +(LITY) 18.1479 Tj +128 TJm +(,) 1.9925 Tj +72 463.378 Td +(WHETHER) 38.9578 Tj +-247 TJm +(IN) 8.4085 Tj +-247 TJm +(CONTRA) 32.7651 Tj +40 TJm +(CT) 10.1858 Tj +74 TJm +(,) 1.9925 Tj +-247 TJm +(STRICT) 27.457 Tj +-247 TJm +(LIABILITY) 39.3962 Tj +129 TJm +(,) 1.9925 Tj +-247 TJm +(O) 5.7544 Tj +1 TJm +(R) 5.3161 Tj +-247 TJm +(T) 4.8697 Tj +18 TJm +(OR) 11.0705 Tj +60 TJm +(T) 4.8697 Tj +-247 TJm +(\(INCLUDING) 46.92 Tj +-247 TJm +(NEGLIGENCE) 50.4667 Tj +-247 TJm +(OR) 11.0705 Tj +-247 TJm +(O) 5.7544 Tj +40 TJm +(THER) 20.8099 Tj +55 TJm +(WISE\)) 22.133 Tj +-247 TJm +(ARISING) 32.3188 Tj +-247 TJm +(IN) 8.4085 Tj +-247 TJm +(ANY) 17.2632 Tj +-247 TJm +(W) 7.5238 Tj +120 TJm +(A) 5.7544 Tj +105 TJm +(Y) 5.7544 Tj +-247 TJm +(OUT) 16.3786 Tj +72 453.814 Td +(OF) 10.1858 Tj +-250 TJm +(THE) 15.4939 Tj +-250 TJm +(USE) 15.0555 Tj +-250 TJm +(OF) 10.1858 Tj +-250 TJm +(THIS) 17.7096 Tj +-250 TJm +(SOFTW) 27.0107 Tj +120 TJm +(ARE,) 17.9327 Tj +-250 TJm +(EVEN) 21.2483 Tj +-250 TJm +(IF) 7.0854 Tj +-250 TJm +(AD) 11.5088 Tj +40 TJm +(VISED) 23.464 Tj +-250 TJm +(OF) 10.1858 Tj +-250 TJm +(THE) 15.4939 Tj +-250 TJm +(POSSIBILITY) 47.8206 Tj +-250 TJm +(OF) 10.1858 Tj +-250 TJm +(SUCH) 21.2563 Tj +-250 TJm +(D) 5.7544 Tj +40 TJm +(AMA) 18.5942 Tj +40 TJm +(GE.) 12.6167 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 436.279 Td +(P) 4.4314 Tj +92 TJm +(A) 5.7544 Tj +111 TJm +(TENTS:) 27.0107 Tj +-296 TJm +(T) 4.8697 Tj +80 TJm +(o) 3.9851 Tj +-295 TJm +(the) 9.7395 Tj +-296 TJm +(best) 12.8398 Tj +-295 TJm +(of) 6.6391 Tj +-296 TJm +(my) 10.1858 Tj +-295 TJm +(kno) 11.9552 Tj +25 TJm +(wledge,) 25.0102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +208.544 436.279 Td +/F124_0 7.9701 Tf +(bzip2) 23.9103 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +234.81 436.279 Td +/F122_0 7.9701 Tf +(and) 11.5088 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +248.674 436.279 Td +/F124_0 7.9701 Tf +(libbzip2) 38.2565 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +289.286 436.279 Td +/F122_0 7.9701 Tf +(do) 7.9701 Tj +-296 TJm +(not) 10.1858 Tj +-295 TJm +(use) 10.6241 Tj +-296 TJm +(an) 7.5238 Tj +15 TJm +(y) 3.9851 Tj +-295 TJm +(patented) 27.0027 Tj +-296 TJm +(algorithms.) 36.0886 Tj +-893 TJm +(Ho) 9.7395 Tj +25 TJm +(we) 9.2931 Tj +25 TJm +(v) 3.9851 Tj +15 TJm +(er) 6.1928 Tj +40 TJm +(,) 1.9925 Tj +-307 TJm +(I) 2.654 Tj +-295 TJm +(do) 7.9701 Tj +-296 TJm +(not) 10.1858 Tj +-295 TJm +(ha) 7.5238 Tj +20 TJm +(v) 3.9851 Tj +15 TJm +(e) 3.5387 Tj +-296 TJm +(the) 9.7395 Tj +-295 TJm +(resources) 30.0951 Tj +-296 TJm +(to) 6.2007 Tj +72 426.715 Td +(carry) 16.3706 Tj +-250 TJm +(out) 10.1858 Tj +-250 TJm +(a) 3.5387 Tj +-250 TJm +(patent) 19.4789 Tj +-250 TJm +(search.) 22.3482 Tj +-620 TJm +(Therefore) 31.4181 Tj +-250 TJm +(I) 2.654 Tj +-250 TJm +(cannot) 21.2483 Tj +-250 TJm +(gi) 6.2007 Tj +25 TJm +(v) 3.9851 Tj +15 TJm +(e) 3.5387 Tj +-250 TJm +(an) 7.5238 Tj +15 TJm +(y) 3.9851 Tj +-250 TJm +(guarantee) 30.9798 Tj +-250 TJm +(of) 6.6391 Tj +-250 TJm +(the) 9.7395 Tj +-250 TJm +(abo) 11.5088 Tj +15 TJm +(v) 3.9851 Tj +15 TJm +(e) 3.5387 Tj +-250 TJm +(statement.) 32.5419 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 3 3 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +72 707.441 Td +/F116_0 17.2154 Tf +(T) 10.5186 Tj +80 TJm +(ab) 20.0904 Tj +10 TJm +(le) 14.3576 Tj +-278 TJm +(of) 16.2513 Tj +-278 TJm +(Contents) 74.5943 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 686.878 Td +/F122_0 9.9626 Tf +(1.) 7.472 Tj +-310 TJm +(Introduction) 49.2551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +145.733 686.878 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +511.108 686.878 Td +/F122_0 9.9626 Tf +(1) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 674.923 Td +(2.) 7.472 Tj +-310 TJm +(Ho) 12.1743 Tj +25 TJm +(w) 7.193 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(use) 13.2801 Tj +-250 TJm +(bzip2) 22.1369 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +167.054 674.923 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +511.108 674.923 Td +/F122_0 9.9626 Tf +(2) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 662.968 Td +(2.1.) 14.9439 Tj +-310 TJm +(N) 7.193 Tj +35 TJm +(AME) 22.1369 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +132.691 662.968 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +511.108 662.968 Td +/F122_0 9.9626 Tf +(2) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 651.013 Td +(2.2.) 14.9439 Tj +-310 TJm +(SYNOPSIS) 47.0534 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +150.582 651.013 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +511.108 651.013 Td +/F122_0 9.9626 Tf +(2) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 639.058 Td +(2.3.) 14.9439 Tj +-310 TJm +(DESCRIPTION) 64.7569 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +168.29 639.058 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +511.108 639.058 Td +/F122_0 9.9626 Tf +(3) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 627.103 Td +(2.4.) 14.9439 Tj +-310 TJm +(OPTIONS) 42.0621 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +145.873 627.103 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +511.108 627.103 Td +/F122_0 9.9626 Tf +(4) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 615.147 Td +(2.5.) 14.9439 Tj +-310 TJm +(MEMOR) 37.6387 Tj +65 TJm +(Y) 7.193 Tj +-250 TJm +(MAN) 23.2427 Tj +35 TJm +(A) 7.193 Tj +40 TJm +(GEMENT) 41.5042 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +221.412 615.147 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +511.108 615.147 Td +/F122_0 9.9626 Tf +(5) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 603.192 Td +(2.6.) 14.9439 Tj +-310 TJm +(RECO) 26.5703 Tj +50 TJm +(VERING) 37.6287 Tj +-250 TJm +(D) 7.193 Tj +40 TJm +(A) 7.193 Tj +111 TJm +(T) 6.0871 Tj +93 TJm +(A) 7.193 Tj +-250 TJm +(FR) 12.1843 Tj +40 TJm +(OM) 16.0497 Tj +-250 TJm +(D) 7.193 Tj +40 TJm +(AMA) 23.2427 Tj +40 TJm +(GED) 20.4731 Tj +-250 TJm +(FILES) 26.5703 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +308.464 603.192 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +511.108 603.192 Td +/F122_0 9.9626 Tf +(6) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 591.237 Td +(2.7.) 14.9439 Tj +-310 TJm +(PERFORMANCE) 73.6236 Tj +-250 TJm +(NO) 14.386 Tj +40 TJm +(TES) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +211.958 591.237 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +511.108 591.237 Td +/F122_0 9.9626 Tf +(6) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 579.282 Td +(2.8.) 14.9439 Tj +-310 TJm +(CA) 13.8381 Tj +135 TJm +(VEA) 20.4731 Tj +111 TJm +(TS) 11.6264 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +148.799 579.282 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +511.108 579.282 Td +/F122_0 9.9626 Tf +(7) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 567.327 Td +(2.9.) 14.9439 Tj +-310 TJm +(A) 7.193 Tj +55 TJm +(UTHOR) 34.3112 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +145.32 567.327 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +511.108 567.327 Td +/F122_0 9.9626 Tf +(7) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 555.372 Td +(3.) 7.472 Tj +-310 TJm +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +160.049 555.372 Td +/F124_0 9.9626 Tf +(libbzip2) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +224.856 555.372 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +511.108 555.372 Td +/F122_0 9.9626 Tf +(8) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 543.416 Td +(3.1.) 14.9439 Tj +-310 TJm +(T) 6.0871 Tj +80 TJm +(op-le) 20.4731 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-250 TJm +(structure) 34.8591 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +179.997 543.416 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +511.108 543.416 Td +/F122_0 9.9626 Tf +(8) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 531.461 Td +(3.1.1.) 22.4159 Tj +-310 TJm +(Lo) 11.0684 Tj +25 TJm +(w-le) 17.7035 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-250 TJm +(summary) 37.0808 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +192.866 531.461 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +511.108 531.461 Td +/F122_0 9.9626 Tf +(9) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 519.506 Td +(3.1.2.) 22.4159 Tj +-310 TJm +(High-le) 30.4357 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-250 TJm +(summary) 37.0808 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +193.822 519.506 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +511.108 519.506 Td +/F122_0 9.9626 Tf +(9) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 507.551 Td +(3.1.3.) 22.4159 Tj +-310 TJm +(Utility) 26.0223 Tj +-250 TJm +(functions) 37.0808 Tj +-250 TJm +(summary) 37.0808 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +216.582 507.551 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +511.108 507.551 Td +/F122_0 9.9626 Tf +(9) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 495.596 Td +(3.2.) 14.9439 Tj +-310 TJm +(Error) 21.0211 Tj +-250 TJm +(handling) 34.8691 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +162.611 495.596 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 495.596 Td +/F122_0 9.9626 Tf +(10) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 483.64 Td +(3.3.) 14.9439 Tj +-310 TJm +(Lo) 11.0684 Tj +25 TJm +(w-le) 17.7035 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-250 TJm +(interf) 21.579 Tj +10 TJm +(ace) 13.2702 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +181.045 483.64 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 483.64 Td +/F122_0 9.9626 Tf +(11) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 471.685 Td +(3.3.1.) 22.4159 Tj +-310 TJm +(BZ2_bzCompressInit) 85.7879 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +197.762 471.685 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 471.685 Td +/F122_0 9.9626 Tf +(11) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 459.73 Td +(3.3.2.) 22.4159 Tj +-310 TJm +(BZ2_bzCompress) 71.9499 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +184.201 459.73 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 459.73 Td +/F122_0 9.9626 Tf +(13) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 447.775 Td +(3.3.3.) 22.4159 Tj +-310 TJm +(BZ2_bzCompressEnd) 87.9996 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +198.868 447.775 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 447.775 Td +/F122_0 9.9626 Tf +(16) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 435.82 Td +(3.3.4.) 22.4159 Tj +-310 TJm +(BZ2_bzDecompressInit) 95.1827 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +206.887 435.82 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 435.82 Td +/F122_0 9.9626 Tf +(16) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 423.865 Td +(3.3.5.) 22.4159 Tj +-310 TJm +(BZ2_bzDecompress) 81.3446 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +193.326 423.865 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 423.865 Td +/F122_0 9.9626 Tf +(17) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 411.909 Td +(3.3.6.) 22.4159 Tj +-310 TJm +(BZ2_bzDecompressEnd) 97.3944 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +210.207 411.909 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 411.909 Td +/F122_0 9.9626 Tf +(18) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 399.954 Td +(3.4.) 14.9439 Tj +-310 TJm +(High-le) 30.4357 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-250 TJm +(interf) 21.579 Tj +10 TJm +(ace) 13.2702 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +184.216 399.954 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 399.954 Td +/F122_0 9.9626 Tf +(18) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 387.999 Td +(3.4.1.) 22.4159 Tj +-310 TJm +(BZ2_bzReadOpen) 74.1516 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +185.302 387.999 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 387.999 Td +/F122_0 9.9626 Tf +(19) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 376.044 Td +(3.4.2.) 22.4159 Tj +-310 TJm +(BZ2_bzRead) 52.5726 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +163.443 376.044 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 376.044 Td +/F122_0 9.9626 Tf +(20) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 364.089 Td +(3.4.3.) 22.4159 Tj +-310 TJm +(BZ2_bzReadGetUnused) 97.3944 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +210.207 364.089 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 364.089 Td +/F122_0 9.9626 Tf +(21) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 352.134 Td +(3.4.4.) 22.4159 Tj +-310 TJm +(BZ2_bzReadClose) 75.2674 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +188.074 352.134 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 352.134 Td +/F122_0 9.9626 Tf +(22) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 340.178 Td +(3.4.5.) 22.4159 Tj +-310 TJm +(BZ2_bzWriteOpen) 76.3633 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +188.622 340.178 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 340.178 Td +/F122_0 9.9626 Tf +(22) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 328.223 Td +(3.4.6.) 22.4159 Tj +-310 TJm +(BZ2_bzWrite) 54.7843 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +166.763 328.223 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 328.223 Td +/F122_0 9.9626 Tf +(23) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 316.268 Td +(3.4.7.) 22.4159 Tj +-310 TJm +(BZ2_bzWriteClose) 77.4791 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +189.179 316.268 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 316.268 Td +/F122_0 9.9626 Tf +(23) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 304.313 Td +(3.4.8.) 22.4159 Tj +-310 TJm +(Handling) 37.0808 Tj +-250 TJm +(embedded) 40.9463 Tj +-250 TJm +(compressed) 47.0334 Tj +-250 TJm +(data) 16.5977 Tj +-250 TJm +(streams) 30.4357 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +294.601 304.313 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 304.313 Td +/F122_0 9.9626 Tf +(24) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 292.358 Td +(3.4.9.) 22.4159 Tj +-310 TJm +(Standard) 35.417 Tj +-250 TJm +(\002le-reading/writing) 77.4791 Tj +-250 TJm +(code) 18.8094 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +247.564 292.358 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 292.358 Td +/F122_0 9.9626 Tf +(25) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 280.403 Td +(3.5.) 14.9439 Tj +-310 TJm +(Utility) 26.0223 Tj +-250 TJm +(functions) 37.0808 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +170.645 280.403 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 280.403 Td +/F122_0 9.9626 Tf +(26) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 268.447 Td +(3.5.1.) 22.4159 Tj +-310 TJm +(BZ2_bzBuf) 47.0434 Tj +25 TJm +(fT) 9.4047 Tj +80 TJm +(oBuf) 19.9252 Tj +25 TJm +(fCompress) 43.1679 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +229.488 268.447 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 268.447 Td +/F122_0 9.9626 Tf +(26) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 256.492 Td +(3.5.2.) 22.4159 Tj +-310 TJm +(BZ2_bzBuf) 47.0434 Tj +25 TJm +(fT) 9.4047 Tj +80 TJm +(oBuf) 19.9252 Tj +25 TJm +(fDecompress) 52.5627 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +238.613 256.492 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 256.492 Td +/F122_0 9.9626 Tf +(27) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 244.537 Td +(3.6.) 14.9439 Tj +-310 TJm +(zlib) 14.9439 Tj +-250 TJm +(compatibility) 53.1405 Tj +-250 TJm +(functions) 37.0808 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +215.06 244.537 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 244.537 Td +/F122_0 9.9626 Tf +(28) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 232.582 Td +(3.7.) 14.9439 Tj +-310 TJm +(Using) 23.8007 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(library) 26.5603 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(stdio-free) 38.1767 Tj +-250 TJm +(en) 9.4047 Tj +40 TJm +(vironment) 40.9562 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +282.092 232.582 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 232.582 Td +/F122_0 9.9626 Tf +(28) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 220.627 Td +(3.7.1.) 22.4159 Tj +-310 TJm +(Getting) 29.8878 Tj +-250 TJm +(rid) 11.0684 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(stdio) 19.3773 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +188.492 220.627 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 220.627 Td +/F122_0 9.9626 Tf +(29) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 208.671 Td +(3.7.2.) 22.4159 Tj +-310 TJm +(Critical) 29.8878 Tj +-250 TJm +(error) 19.3573 Tj +-250 TJm +(handling) 34.8691 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +201.629 208.671 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 208.671 Td +/F122_0 9.9626 Tf +(29) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 196.716 Td +(3.8.) 14.9439 Tj +-310 TJm +(Making) 30.9936 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(W) 9.4047 Tj +40 TJm +(indo) 17.7135 Tj +25 TJm +(ws) 11.0684 Tj +-250 TJm +(DLL) 19.3673 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +203.243 196.716 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 196.716 Td +/F122_0 9.9626 Tf +(29) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 184.761 Td +(4.) 7.472 Tj +-310 TJm +(Miscellanea) 48.1393 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +144.898 184.761 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 184.761 Td +/F122_0 9.9626 Tf +(31) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 172.806 Td +(4.1.) 14.9439 Tj +-310 TJm +(Limitations) 45.9475 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(compressed) 47.0334 Tj +-250 TJm +(\002le) 12.7322 Tj +-250 TJm +(format) 26.5603 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +269.154 172.806 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 172.806 Td +/F122_0 9.9626 Tf +(31) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 160.851 Td +(4.2.) 14.9439 Tj +-310 TJm +(Portability) 42.0721 Tj +-250 TJm +(issues) 23.8007 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +172.03 160.851 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 160.851 Td +/F122_0 9.9626 Tf +(32) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 148.896 Td +(4.3.) 14.9439 Tj +-310 TJm +(Reporting) 39.8504 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(ugs) 13.8381 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +166.115 148.896 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 148.896 Td +/F122_0 9.9626 Tf +(32) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 136.94 Td +(4.4.) 14.9439 Tj +-310 TJm +(Did) 14.9439 Tj +-250 TJm +(you) 14.9439 Tj +-250 TJm +(get) 12.1743 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(right) 18.8194 Tj +-250 TJm +(package?) 37.0609 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +229.109 136.94 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 136.94 Td +/F122_0 9.9626 Tf +(33) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 124.985 Td +(4.5.) 14.9439 Tj +-310 TJm +(Further) 29.3299 Tj +-250 TJm +(Reading) 33.2053 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +170.361 124.985 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 124.985 Td +/F122_0 9.9626 Tf +(34) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +536.068 50.852 Td +(iii) 8.3088 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 1 4 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +72 701.916 Td +/F116_0 24.7902 Tf +(1.) 20.675 Tj +-278 TJm +(Intr) 39.937 Tj +20 TJm +(oduction) 104.6642 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 679.998 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +104.507 679.998 Td +/F122_0 9.9626 Tf +(compresses) 45.9276 Tj +-263 TJm +(\002les) 16.6077 Tj +-263 TJm +(using) 21.589 Tj +-263 TJm +(the) 12.1743 Tj +-262 TJm +(Burro) 23.2427 Tj +25 TJm +(ws-Wheeler) 48.1293 Tj +-263 TJm +(block-sorting) 53.1305 Tj +-263 TJm +(te) 7.193 Tj +15 TJm +(xt) 7.7509 Tj +-263 TJm +(compression) 50.3609 Tj +-263 TJm +(algorithm,) 41.2352 Tj +-266 TJm +(and) 14.386 Tj +-263 TJm +(Huf) 15.4918 Tj +25 TJm +(fman) 20.4731 Tj +-263 TJm +(coding.) 29.6088 Tj +72 668.043 Td +(Compression) 52.5826 Tj +-203 TJm +(is) 6.6451 Tj +-204 TJm +(generally) 37.0708 Tj +-203 TJm +(considerably) 50.9089 Tj +-203 TJm +(better) 22.6848 Tj +-204 TJm +(t) 2.7696 Tj +1 TJm +(han) 14.386 Tj +-204 TJm +(that) 14.9439 Tj +-203 TJm +(achie) 21.0211 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ed) 9.4047 Tj +-203 TJm +(by) 9.9626 Tj +-204 TJm +(more) 20.4731 Tj +-203 TJm +(con) 14.386 Tj +40 TJm +(v) 4.9813 Tj +15 TJm +(entional) 32.0995 Tj +-203 TJm +(LZ77/LZ78-based) 73.0458 Tj +-204 TJm +(compressors,) 52.2937 Tj +72 656.087 Td +(and) 14.386 Tj +-250 TJm +(approaches) 44.8118 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(performance) 50.341 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(PPM) 19.9352 Tj +-250 TJm +(f) 3.3175 Tj +10 TJm +(amily) 22.6948 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(statistical) 37.6387 Tj +-250 TJm +(compressors.) 52.2937 Tj +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 634.17 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +105.074 634.17 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-320 TJm +(b) 4.9813 Tj +20 TJm +(uilt) 13.2901 Tj +-319 TJm +(on) 9.9626 Tj +-320 TJm +(top) 12.7322 Tj +-320 TJm +(of) 8.2988 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +176.712 634.17 Td +/F124_0 9.9626 Tf +(libbzip2) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +224.533 634.17 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-337 TJm +(a) 4.4234 Tj +-320 TJm +(\003e) 9.9626 Tj +15 TJm +(xible) 19.9252 Tj +-320 TJm +(library) 26.5603 Tj +-319 TJm +(for) 11.6164 Tj +-320 TJm +(handling) 34.8691 Tj +-320 TJm +(compressed) 47.0334 Tj +-320 TJm +(data) 16.5977 Tj +-319 TJm +(in) 7.7509 Tj +-320 TJm +(the) 12.1743 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +449.816 634.17 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +482.889 634.17 Td +/F122_0 9.9626 Tf +(format.) 29.0509 Tj +-1039 TJm +(This) 17.7135 Tj +72 622.214 Td +(manual) 29.3299 Tj +-316 TJm +(describes) 37.0708 Tj +-316 TJm +(both) 17.7135 Tj +-317 TJm +(ho) 9.9626 Tj +25 TJm +(w) 7.193 Tj +-316 TJm +(to) 7.7509 Tj +-316 TJm +(use) 13.2801 Tj +-316 TJm +(the) 12.1743 Tj +-316 TJm +(program) 33.7533 Tj +-316 TJm +(and) 14.386 Tj +-317 TJm +(ho) 9.9626 Tj +25 TJm +(w) 7.193 Tj +-316 TJm +(to) 7.7509 Tj +-316 TJm +(w) 7.193 Tj +10 TJm +(ork) 13.2801 Tj +-316 TJm +(with) 17.7135 Tj +-316 TJm +(the) 12.1743 Tj +-317 TJm +(library) 26.5603 Tj +-316 TJm +(interf) 21.579 Tj +10 TJm +(ace.) 15.7608 Tj +-1017 TJm +(Most) 20.4831 Tj +-316 TJm +(of) 8.2988 Tj +-316 TJm +(the) 12.1743 Tj +-317 TJm +(manual) 29.3299 Tj +-316 TJm +(is) 6.6451 Tj +72 610.259 Td +(de) 9.4047 Tj +25 TJm +(v) 4.9813 Tj +20 TJm +(oted) 17.1556 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(this) 14.396 Tj +-250 TJm +(library) 26.5603 Tj +65 TJm +(,) 2.4907 Tj +-250 TJm +(not) 12.7322 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(program,) 36.2439 Tj +-250 TJm +(which) 24.3486 Tj +-250 TJm +(is) 6.6451 Tj +-250 TJm +(good) 19.9252 Tj +-250 TJm +(ne) 9.4047 Tj +25 TJm +(ws) 11.0684 Tj +-250 TJm +(if) 6.0871 Tj +-250 TJm +(your) 18.2614 Tj +-250 TJm +(interest) 29.3299 Tj +-250 TJm +(is) 6.6451 Tj +-250 TJm +(only) 17.7135 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(program.) 36.2439 Tj +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +74.491 578.379 Td +(\225) 3.4869 Tj +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +-450 TJm +(Ho) 12.1743 Tj +25 TJm +(w) 7.193 Tj +-278 TJm +(to) 7.7509 Tj +-278 TJm +(use) 13.2801 Tj +-277 TJm +(bzip2) 22.1369 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +-278 TJm +([2]) 11.6164 Tj +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-278 TJm +(describes) 37.0708 Tj +-278 TJm +(ho) 9.9626 Tj +25 TJm +(w) 7.193 Tj +-278 TJm +(to) 7.7509 Tj +-278 TJm +(use) 13.2801 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +256.282 578.379 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +286.17 578.379 Td +/F122_0 9.9626 Tf +(;) 2.7696 Tj +-292 TJm +(this) 14.396 Tj +-278 TJm +(is) 6.6451 Tj +-277 TJm +(the) 12.1743 Tj +-278 TJm +(only) 17.7135 Tj +-278 TJm +(part) 15.4918 Tj +-278 TJm +(you) 14.9439 Tj +-278 TJm +(need) 18.8094 Tj +-278 TJm +(to) 7.7509 Tj +-277 TJm +(read) 17.1456 Tj +-278 TJm +(if) 6.0871 Tj +-278 TJm +(you) 14.9439 Tj +-278 TJm +(just) 14.396 Tj +-278 TJm +(w) 7.193 Tj +10 TJm +(ant) 12.1743 Tj +-277 TJm +(to) 7.7509 Tj +-278 TJm +(kno) 14.9439 Tj +25 TJm +(w) 7.193 Tj +81.963 566.424 Td +(ho) 9.9626 Tj +25 TJm +(w) 7.193 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(operate) 29.3199 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(program.) 36.2439 Tj +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +74.491 544.506 Td +(\225) 3.4869 Tj +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +-450 TJm +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +-250 TJm +(libbzip2) 32.6574 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +-250 TJm +([8]) 11.6164 Tj +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-250 TJm +(describes) 37.0708 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(programming) 54.2364 Tj +-250 TJm +(interf) 21.579 Tj +10 TJm +(aces) 17.1456 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(detail,) 24.6275 Tj +-250 TJm +(and) 14.386 Tj +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +74.491 522.588 Td +(\225) 3.4869 Tj +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +-450 TJm +(Miscellanea) 48.1393 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +-250 TJm +([31]) 16.5977 Tj +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-250 TJm +(records) 29.3199 Tj +-250 TJm +(some) 21.031 Tj +-250 TJm +(miscellaneous) 56.4481 Tj +-250 TJm +(notes) 21.031 Tj +-250 TJm +(which) 24.3486 Tj +-250 TJm +(I) 3.3175 Tj +-250 TJm +(thought) 30.4457 Tj +-250 TJm +(ought) 22.6948 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(be) 9.4047 Tj +-250 TJm +(recorded) 34.8492 Tj +-250 TJm +(some) 21.031 Tj +25 TJm +(where.) 26.8293 Tj +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +539.395 50.852 Td +(1) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 2 5 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +72 701.916 Td +/F116_0 24.7902 Tf +(2.) 20.675 Tj +-278 TJm +(Ho) 33.0453 Tj +15 TJm +(w) 19.2868 Tj +-278 TJm +(to) 23.4019 Tj +-278 TJm +(use) 42.7135 Tj +-278 TJm +(bzip2) 63.3638 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 656.35 Td +/F116_0 17.2154 Tf +(T) 10.5186 Tj +80 TJm +(ab) 20.0904 Tj +10 TJm +(le) 14.3576 Tj +-278 TJm +(of) 16.2513 Tj +-278 TJm +(Contents) 74.5943 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 635.788 Td +/F122_0 9.9626 Tf +(2.1.) 14.9439 Tj +-310 TJm +(N) 7.193 Tj +35 TJm +(AME) 22.1369 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +132.691 635.788 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +511.108 635.788 Td +/F122_0 9.9626 Tf +(2) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 623.832 Td +(2.2.) 14.9439 Tj +-310 TJm +(SYNOPSIS) 47.0534 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +150.582 623.832 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +511.108 623.832 Td +/F122_0 9.9626 Tf +(2) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 611.877 Td +(2.3.) 14.9439 Tj +-310 TJm +(DESCRIPTION) 64.7569 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +168.29 611.877 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +511.108 611.877 Td +/F122_0 9.9626 Tf +(3) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 599.922 Td +(2.4.) 14.9439 Tj +-310 TJm +(OPTIONS) 42.0621 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +145.873 599.922 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +511.108 599.922 Td +/F122_0 9.9626 Tf +(4) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 587.967 Td +(2.5.) 14.9439 Tj +-310 TJm +(MEMOR) 37.6387 Tj +65 TJm +(Y) 7.193 Tj +-250 TJm +(MAN) 23.2427 Tj +35 TJm +(A) 7.193 Tj +40 TJm +(GEMENT) 41.5042 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +221.412 587.967 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +511.108 587.967 Td +/F122_0 9.9626 Tf +(5) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 576.012 Td +(2.6.) 14.9439 Tj +-310 TJm +(RECO) 26.5703 Tj +50 TJm +(VERING) 37.6287 Tj +-250 TJm +(D) 7.193 Tj +40 TJm +(A) 7.193 Tj +111 TJm +(T) 6.0871 Tj +93 TJm +(A) 7.193 Tj +-250 TJm +(FR) 12.1843 Tj +40 TJm +(OM) 16.0497 Tj +-250 TJm +(D) 7.193 Tj +40 TJm +(AMA) 23.2427 Tj +40 TJm +(GED) 20.4731 Tj +-250 TJm +(FILES) 26.5703 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +308.464 576.012 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +511.108 576.012 Td +/F122_0 9.9626 Tf +(6) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 564.057 Td +(2.7.) 14.9439 Tj +-310 TJm +(PERFORMANCE) 73.6236 Tj +-250 TJm +(NO) 14.386 Tj +40 TJm +(TES) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +211.958 564.057 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +511.108 564.057 Td +/F122_0 9.9626 Tf +(6) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 552.101 Td +(2.8.) 14.9439 Tj +-310 TJm +(CA) 13.8381 Tj +135 TJm +(VEA) 20.4731 Tj +111 TJm +(TS) 11.6264 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +148.799 552.101 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +511.108 552.101 Td +/F122_0 9.9626 Tf +(7) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 540.146 Td +(2.9.) 14.9439 Tj +-310 TJm +(A) 7.193 Tj +55 TJm +(UTHOR) 34.3112 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +145.32 540.146 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +511.108 540.146 Td +/F122_0 9.9626 Tf +(7) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 508.266 Td +(This) 17.7135 Tj +-250 TJm +(chapter) 29.3199 Tj +-250 TJm +(contains) 33.2053 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(cop) 14.386 Tj +10 TJm +(y) 4.9813 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(the) 12.1743 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +213.837 508.266 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +246.215 508.266 Td +/F122_0 9.9626 Tf +(man) 17.1556 Tj +-250 TJm +(page,) 21.3 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(nothing) 30.4457 Tj +-250 TJm +(else.) 17.9825 Tj +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 473.513 Td +/F116_0 20.6585 Tf +(2.1.) 34.4584 Tj +-278 TJm +(NAME) 60.8186 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +74.491 441.632 Td +/F122_0 9.9626 Tf +(\225) 3.4869 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +82.461 441.632 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +112.349 441.632 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +117.33 441.632 Td +/F124_0 9.9626 Tf +(bunzip2) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +161.664 441.632 Td +/F122_0 9.9626 Tf +(-) 3.3175 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(block-sorting) 53.1305 Tj +-250 TJm +(\002le) 12.7322 Tj +-250 TJm +(compressor) 45.9276 Tj +40 TJm +(,) 2.4907 Tj +-250 TJm +(v1.0.6) 24.9065 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +74.491 419.715 Td +(\225) 3.4869 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +82.461 419.715 Td +/F124_0 9.9626 Tf +(bzcat) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +114.839 419.715 Td +/F122_0 9.9626 Tf +(-) 3.3175 Tj +-250 TJm +(decompresses) 55.3323 Tj +-250 TJm +(\002les) 16.6077 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(stdout) 24.3586 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +74.491 397.797 Td +(\225) 3.4869 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +82.461 397.797 Td +/F124_0 9.9626 Tf +(bzip2recover) 71.7307 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +156.682 397.797 Td +/F122_0 9.9626 Tf +(-) 3.3175 Tj +-250 TJm +(reco) 17.1456 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(ers) 11.6164 Tj +-250 TJm +(data) 16.5977 Tj +-250 TJm +(from) 19.3673 Tj +-250 TJm +(damaged) 35.965 Tj +-250 TJm +(bzip2) 22.1369 Tj +-250 TJm +(\002les) 16.6077 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 353.081 Td +/F116_0 20.6585 Tf +(2.2.) 34.4584 Tj +-278 TJm +(SYNOPSIS) 105.6269 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +74.491 321.201 Td +/F122_0 9.9626 Tf +(\225) 3.4869 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +82.461 321.201 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +114.839 321.201 Td +/F122_0 9.9626 Tf +([) 3.3175 Tj +-250 TJm +(-cdfkqstvzVL123456789) 100.164 Tj +-250 TJm +(]) 3.3175 Tj +-250 TJm +([) 3.3175 Tj +-250 TJm +(\002lenames) 38.1866 Tj +-250 TJm +(...) 7.472 Tj +-620 TJm +(]) 3.3175 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +74.491 299.283 Td +(\225) 3.4869 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +82.461 299.283 Td +/F124_0 9.9626 Tf +(bunzip2) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +126.795 299.283 Td +/F122_0 9.9626 Tf +([) 3.3175 Tj +-250 TJm +(-fkvsVL) 33.7533 Tj +-250 TJm +(]) 3.3175 Tj +-250 TJm +([) 3.3175 Tj +-250 TJm +(\002lenames) 38.1866 Tj +-250 TJm +(...) 7.472 Tj +-620 TJm +(]) 3.3175 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +74.491 277.365 Td +(\225) 3.4869 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +82.461 277.365 Td +/F124_0 9.9626 Tf +(bzcat) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +114.839 277.365 Td +/F122_0 9.9626 Tf +([) 3.3175 Tj +-250 TJm +(-s) 7.193 Tj +-250 TJm +(]) 3.3175 Tj +-250 TJm +([) 3.3175 Tj +-250 TJm +(\002lenames) 38.1866 Tj +-250 TJm +(...) 7.472 Tj +-620 TJm +(]) 3.3175 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +74.491 255.447 Td +(\225) 3.4869 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +82.461 255.447 Td +/F124_0 9.9626 Tf +(bzip2recover) 71.7307 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +156.683 255.447 Td +/F122_0 9.9626 Tf +(\002lename) 34.3112 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +539.395 50.852 Td +(2) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 3 6 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +477.109 749.245 Td +/F122_0 9.9626 Tf +(Ho) 12.1743 Tj +25 TJm +(w) 7.193 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(use) 13.2801 Tj +-250 TJm +(bzip2) 22.1369 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +72 704.93 Td +/F116_0 20.6585 Tf +(2.3.) 34.4584 Tj +-278 TJm +(DESCRIPTION) 141.1802 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 683.012 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +104.56 683.012 Td +/F122_0 9.9626 Tf +(compresses) 45.9276 Tj +-268 TJm +(\002les) 16.6077 Tj +-268 TJm +(using) 21.589 Tj +-268 TJm +(the) 12.1743 Tj +-269 TJm +(Burro) 23.2427 Tj +25 TJm +(ws-Wheeler) 48.1293 Tj +-268 TJm +(block) 22.1369 Tj +-268 TJm +(sorting) 27.6761 Tj +-268 TJm +(te) 7.193 Tj +15 TJm +(xt) 7.7509 Tj +-268 TJm +(compression) 50.3609 Tj +-268 TJm +(algorithm,) 41.2352 Tj +-273 TJm +(and) 14.386 Tj +-268 TJm +(Huf) 15.4918 Tj +25 TJm +(fman) 20.4731 Tj +-268 TJm +(coding.) 29.6088 Tj +72 671.057 Td +(Compression) 52.5826 Tj +-203 TJm +(is) 6.6451 Tj +-204 TJm +(generally) 37.0708 Tj +-203 TJm +(considerably) 50.9089 Tj +-203 TJm +(better) 22.6848 Tj +-204 TJm +(t) 2.7696 Tj +1 TJm +(han) 14.386 Tj +-204 TJm +(that) 14.9439 Tj +-203 TJm +(achie) 21.0211 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ed) 9.4047 Tj +-203 TJm +(by) 9.9626 Tj +-204 TJm +(more) 20.4731 Tj +-203 TJm +(con) 14.386 Tj +40 TJm +(v) 4.9813 Tj +15 TJm +(entional) 32.0995 Tj +-203 TJm +(LZ77/LZ78-based) 73.0458 Tj +-204 TJm +(compressors,) 52.2937 Tj +72 659.101 Td +(and) 14.386 Tj +-250 TJm +(approaches) 44.8118 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(performance) 50.341 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(PPM) 19.9352 Tj +-250 TJm +(f) 3.3175 Tj +10 TJm +(amily) 22.6948 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(statistical) 37.6387 Tj +-250 TJm +(compressors.) 52.2937 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 637.184 Td +(The) 15.4918 Tj +-250 TJm +(command-line) 57.5539 Tj +-250 TJm +(options) 29.3399 Tj +-250 TJm +(are) 12.1643 Tj +-250 TJm +(deliberately) 47.0334 Tj +-250 TJm +(v) 4.9813 Tj +15 TJm +(ery) 12.7222 Tj +-250 TJm +(similar) 27.6761 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(those) 21.031 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(GNU) 21.579 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +364.869 637.184 Td +/F124_0 9.9626 Tf +(gzip) 23.9102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +388.779 637.184 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-250 TJm +(the) 12.1743 Tj +15 TJm +(y) 4.9813 Tj +-250 TJm +(are) 12.1643 Tj +-250 TJm +(not) 12.7322 Tj +-250 TJm +(identical.) 36.8018 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 615.266 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +105.175 615.266 Td +/F122_0 9.9626 Tf +(e) 4.4234 Tj +15 TJm +(xpects) 25.4544 Tj +-330 TJm +(a) 4.4234 Tj +-330 TJm +(list) 12.1843 Tj +-330 TJm +(of) 8.2988 Tj +-330 TJm +(\002le) 12.7322 Tj +-329 TJm +(names) 25.4544 Tj +-330 TJm +(to) 7.7509 Tj +-330 TJm +(accompan) 40.3884 Tj +15 TJm +(y) 4.9813 Tj +-330 TJm +(the) 12.1743 Tj +-330 TJm +(command-line) 57.5539 Tj +-330 TJm +(\003ags.) 21.31 Tj +-1099 TJm +(Each) 19.9152 Tj +-330 TJm +(\002le) 12.7322 Tj +-330 TJm +(is) 6.6451 Tj +-330 TJm +(replaced) 33.7433 Tj +-330 TJm +(by) 9.9626 Tj +-330 TJm +(a) 4.4234 Tj +-330 TJm +(compressed) 47.0334 Tj +72 603.311 Td +(v) 4.9813 Tj +15 TJm +(ersion) 24.3486 Tj +-349 TJm +(of) 8.2988 Tj +-348 TJm +(itself,) 22.4159 Tj +-373 TJm +(with) 17.7135 Tj +-349 TJm +(the) 12.1743 Tj +-349 TJm +(name) 21.579 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +204.444 603.311 Td +/F124_0 9.9626 Tf +(original_name.bz2) 101.6185 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +306.063 603.311 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +-1212 TJm +(Each) 19.9152 Tj +-348 TJm +(compressed) 47.0334 Tj +-349 TJm +(\002le) 12.7322 Tj +-348 TJm +(has) 13.2801 Tj +-349 TJm +(the) 12.1743 Tj +-348 TJm +(same) 20.4731 Tj +-349 TJm +(modi\002cation) 50.3709 Tj +-349 TJm +(date,) 19.0883 Tj +72 591.356 Td +(permissions,) 50.092 Tj +-344 TJm +(and,) 16.8766 Tj +-344 TJm +(when) 21.579 Tj +-325 TJm +(possible,) 35.1481 Tj +-344 TJm +(o) 4.9813 Tj +25 TJm +(wnership) 36.5229 Tj +-325 TJm +(as) 8.2988 Tj +-325 TJm +(the) 12.1743 Tj +-326 TJm +(corresponding) 56.996 Tj +-325 TJm +(original,) 33.4843 Tj +-344 TJm +(so) 8.8568 Tj +-325 TJm +(that) 14.9439 Tj +-325 TJm +(these) 20.4731 Tj +-325 TJm +(properties) 39.8404 Tj +-325 TJm +(can) 13.8281 Tj +-326 TJm +(be) 9.4047 Tj +-325 TJm +(correctly) 35.4071 Tj +72 579.4 Td +(restored) 32.0895 Tj +-308 TJm +(at) 7.193 Tj +-308 TJm +(decompression) 59.7656 Tj +-307 TJm +(time.) 20.2042 Tj +-484 TJm +(File) 15.5018 Tj +-308 TJm +(name) 21.579 Tj +-308 TJm +(handling) 34.8691 Tj +-308 TJm +(is) 6.6451 Tj +-307 TJm +(nai) 12.1743 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-308 TJm +(in) 7.7509 Tj +-308 TJm +(the) 12.1743 Tj +-308 TJm +(sense) 21.579 Tj +-308 TJm +(that) 14.9439 Tj +-308 TJm +(there) 19.9152 Tj +-307 TJm +(is) 6.6451 Tj +-308 TJm +(no) 9.9626 Tj +-308 TJm +(mechanism) 45.3796 Tj +-308 TJm +(for) 11.6164 Tj +-308 TJm +(preserving) 42.0521 Tj +72 567.445 Td +(original) 30.9936 Tj +-334 TJm +(\002le) 12.7322 Tj +-333 TJm +(names,) 27.9451 Tj +-355 TJm +(permissions,) 50.092 Tj +-355 TJm +(o) 4.9813 Tj +25 TJm +(wnerships) 40.3983 Tj +-333 TJm +(or) 8.2988 Tj +-334 TJm +(dates) 20.4731 Tj +-334 TJm +(in) 7.7509 Tj +-333 TJm +(\002lesystems) 44.2838 Tj +-334 TJm +(which) 24.3486 Tj +-334 TJm +(lack) 16.5977 Tj +-333 TJm +(these) 20.4731 Tj +-334 TJm +(concepts,) 37.3498 Tj +-355 TJm +(or) 8.2988 Tj +-333 TJm +(ha) 9.4047 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-334 TJm +(serious) 28.224 Tj +-334 TJm +(\002le) 12.7322 Tj +72 555.49 Td +(name) 21.579 Tj +-250 TJm +(length) 24.9065 Tj +-250 TJm +(restrictions,) 46.7644 Tj +-250 TJm +(such) 18.2614 Tj +-250 TJm +(as) 8.2988 Tj +-250 TJm +(MS-DOS.) 40.1294 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 533.572 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +104.379 533.572 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +121.255 533.572 Td +/F124_0 9.9626 Tf +(bunzip2) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +165.589 533.572 Td +/F122_0 9.9626 Tf +(will) 15.5018 Tj +-250 TJm +(by) 9.9626 Tj +-250 TJm +(def) 12.7222 Tj +10 TJm +(ault) 14.9439 Tj +-250 TJm +(not) 12.7322 Tj +-250 TJm +(o) 4.9813 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(erwrite) 28.2141 Tj +-250 TJm +(e) 4.4234 Tj +15 TJm +(xisting) 27.1282 Tj +-250 TJm +(\002les.) 19.0983 Tj +-620 TJm +(If) 6.6351 Tj +-250 TJm +(you) 14.9439 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(ant) 12.1743 Tj +-250 TJm +(this) 14.396 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(happen,) 31.2626 Tj +-250 TJm +(specify) 28.772 Tj +-250 TJm +(the) 12.1743 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +495.977 533.572 Td +/F124_0 9.9626 Tf +(-f) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +510.423 533.572 Td +/F122_0 9.9626 Tf +(\003ag.) 17.4346 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 511.654 Td +(If) 6.6351 Tj +-284 TJm +(no) 9.9626 Tj +-285 TJm +(\002le) 12.7322 Tj +-284 TJm +(names) 25.4544 Tj +-284 TJm +(are) 12.1643 Tj +-284 TJm +(speci\002ed,) 37.9077 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +193.935 511.654 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +226.655 511.654 Td +/F122_0 9.9626 Tf +(compresses) 45.9276 Tj +-284 TJm +(from) 19.3673 Tj +-285 TJm +(standard) 33.7533 Tj +-284 TJm +(input) 20.4831 Tj +-284 TJm +(to) 7.7509 Tj +-284 TJm +(standard) 33.7533 Tj +-285 TJm +(output.) 27.9551 Tj +-825 TJm +(In) 8.2988 Tj +-285 TJm +(this) 14.396 Tj +-284 TJm +(case,) 19.6363 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +491.778 511.654 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +524.499 511.654 Td +/F122_0 9.9626 Tf +(will) 15.5018 Tj +72 499.699 Td +(decline) 28.772 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(write) 20.4731 Tj +-250 TJm +(compressed) 47.0334 Tj +-250 TJm +(output) 25.4644 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(terminal,) 35.696 Tj +-250 TJm +(as) 8.2988 Tj +-250 TJm +(this) 14.396 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(ould) 17.7135 Tj +-250 TJm +(be) 9.4047 Tj +-250 TJm +(entirely) 30.4357 Tj +-250 TJm +(incomprehensible) 70.8341 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(therefore) 35.955 Tj +-250 TJm +(pointless.) 37.9177 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 477.781 Td +/F124_0 9.9626 Tf +(bunzip2) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +116.176 477.781 Td +/F122_0 9.9626 Tf +(\(or) 11.6164 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +130.125 477.781 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +-600 TJm +(-d) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +177.946 477.781 Td +/F122_0 9.9626 Tf +(\)) 3.3175 Tj +-234 TJm +(decompresses) 55.3323 Tj +-234 TJm +(all) 9.9626 Tj +-234 TJm +(speci\002ed) 35.417 Tj +-235 TJm +(\002les.) 19.0983 Tj +-609 TJm +(Files) 19.3773 Tj +-234 TJm +(which) 24.3486 Tj +-234 TJm +(were) 19.3573 Tj +-234 TJm +(not) 12.7322 Tj +-235 TJm +(created) 28.762 Tj +-234 TJm +(by) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +445.012 477.781 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +477.233 477.781 Td +/F122_0 9.9626 Tf +(will) 15.5018 Tj +-234 TJm +(be) 9.4047 Tj +-234 TJm +(detected) 33.1954 Tj +72 465.826 Td +(and) 14.386 Tj +-280 TJm +(i) 2.7696 Tj +1 TJm +(gnored,) 30.1568 Tj +-287 TJm +(and) 14.386 Tj +-280 TJm +(a) 4.4234 Tj +-279 TJm +(w) 7.193 Tj +10 TJm +(arning) 25.4544 Tj +-280 TJm +(issued.) 27.3972 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +216.033 465.826 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +248.705 465.826 Td +/F122_0 9.9626 Tf +(attempts) 33.7633 Tj +-279 TJm +(to) 7.7509 Tj +-280 TJm +(guess) 22.1369 Tj +-279 TJm +(the) 12.1743 Tj +-280 TJm +(\002lename) 34.3112 Tj +-279 TJm +(for) 11.6164 Tj +-280 TJm +(the) 12.1743 Tj +-279 TJm +(decompressed) 56.4381 Tj +-280 TJm +(\002le) 12.7322 Tj +-279 TJm +(from) 19.3673 Tj +-280 TJm +(that) 14.9439 Tj +-279 TJm +(of) 8.2988 Tj +-280 TJm +(the) 12.1743 Tj +72 453.871 Td +(compressed) 47.0334 Tj +-250 TJm +(\002le) 12.7322 Tj +-250 TJm +(as) 8.2988 Tj +-250 TJm +(follo) 18.8194 Tj +25 TJm +(ws:) 13.8381 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +74.491 421.991 Td +(\225) 3.4869 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +82.461 421.991 Td +/F124_0 9.9626 Tf +(filename.bz2) 71.7307 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +162.66 421.991 Td +/F122_0 9.9626 Tf +(becomes) 34.8591 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +200.01 421.991 Td +/F124_0 9.9626 Tf +(filename) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +74.491 400.073 Td +/F122_0 9.9626 Tf +(\225) 3.4869 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +82.461 400.073 Td +/F124_0 9.9626 Tf +(filename.bz) 65.7532 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +156.682 400.073 Td +/F122_0 9.9626 Tf +(becomes) 34.8591 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +194.032 400.073 Td +/F124_0 9.9626 Tf +(filename) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +74.491 378.155 Td +/F122_0 9.9626 Tf +(\225) 3.4869 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +82.461 378.155 Td +/F124_0 9.9626 Tf +(filename.tbz2) 77.7083 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +162.66 378.155 Td +/F122_0 9.9626 Tf +(becomes) 34.8591 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +200.01 378.155 Td +/F124_0 9.9626 Tf +(filename.tar) 71.7307 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +74.491 356.237 Td +/F122_0 9.9626 Tf +(\225) 3.4869 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +82.461 356.237 Td +/F124_0 9.9626 Tf +(filename.tbz) 71.7307 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +162.66 356.237 Td +/F122_0 9.9626 Tf +(becomes) 34.8591 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +200.01 356.237 Td +/F124_0 9.9626 Tf +(filename.tar) 71.7307 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +74.491 334.319 Td +/F122_0 9.9626 Tf +(\225) 3.4869 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +82.461 334.319 Td +/F124_0 9.9626 Tf +(anyothername) 71.7307 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +162.66 334.319 Td +/F122_0 9.9626 Tf +(becomes) 34.8591 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +200.01 334.319 Td +/F124_0 9.9626 Tf +(anyothername.out) 95.641 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 312.402 Td +/F122_0 9.9626 Tf +(If) 6.6351 Tj +-342 TJm +(the) 12.1743 Tj +-342 TJm +(\002le) 12.7322 Tj +-342 TJm +(does) 18.2614 Tj +-342 TJm +(n) 4.9813 Tj +-1 TJm +(ot) 7.7509 Tj +-342 TJm +(end) 14.386 Tj +-342 TJm +(in) 7.7509 Tj +-342 TJm +(one) 14.386 Tj +-342 TJm +(of) 8.2988 Tj +-342 TJm +(the) 12.1743 Tj +-342 TJm +(recognised) 43.158 Tj +-342 TJm +(endings,) 33.4843 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +309.305 312.402 Td +/F124_0 9.9626 Tf +(.bz2) 23.9102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +333.215 312.402 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +339.344 312.402 Td +/F124_0 9.9626 Tf +(.bz) 17.9327 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +357.276 312.402 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +363.405 312.402 Td +/F124_0 9.9626 Tf +(.tbz2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +396.702 312.402 Td +/F122_0 9.9626 Tf +(or) 8.2988 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +408.409 312.402 Td +/F124_0 9.9626 Tf +(.tbz) 23.9102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +432.319 312.402 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +438.448 312.402 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +471.744 312.402 Td +/F122_0 9.9626 Tf +(complains) 40.9562 Tj +-342 TJm +(that) 14.9439 Tj +-342 TJm +(it) 5.5392 Tj +72 300.446 Td +(cannot) 26.5603 Tj +-250 TJm +(guess) 22.1369 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(name) 21.579 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(original) 30.9936 Tj +-250 TJm +(\002le,) 15.2229 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(uses) 17.1556 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(original) 30.9936 Tj +-250 TJm +(name) 21.579 Tj +-250 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +370.009 300.446 Td +/F124_0 9.9626 Tf +(.out) 23.9102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +396.41 300.446 Td +/F122_0 9.9626 Tf +(appended.) 40.6673 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 278.529 Td +(As) 11.0684 Tj +-250 TJm +(with) 17.7135 Tj +-250 TJm +(compression,) 52.8516 Tj +-250 TJm +(supplying) 39.3025 Tj +-250 TJm +(no) 9.9626 Tj +-250 TJm +(\002lenames) 38.1866 Tj +-250 TJm +(causes) 26.0024 Tj +-250 TJm +(decompression) 59.7656 Tj +-250 TJm +(from) 19.3673 Tj +-250 TJm +(standard) 33.7533 Tj +-250 TJm +(input) 20.4831 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(standard) 33.7533 Tj +-250 TJm +(output.) 27.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 256.611 Td +/F124_0 9.9626 Tf +(bunzip2) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +116.409 256.611 Td +/F122_0 9.9626 Tf +(will) 15.5018 Tj +-257 TJm +(correctly) 35.4071 Tj +-258 TJm +(decompress) 47.0334 Tj +-257 TJm +(a) 4.4234 Tj +-258 TJm +(\002le) 12.7322 Tj +-257 TJm +(which) 24.3486 Tj +-258 TJm +(is) 6.6451 Tj +-257 TJm +(the) 12.1743 Tj +-258 TJm +(concatenation) 55.3323 Tj +-257 TJm +(of) 8.2988 Tj +-258 TJm +(tw) 9.9626 Tj +10 TJm +(o) 4.9813 Tj +-258 TJm +(or) 8.2988 Tj +-257 TJm +(more) 20.4731 Tj +-258 TJm +(compressed) 47.0334 Tj +-257 TJm +(\002les.) 19.0983 Tj +-665 TJm +(The) 15.4918 Tj +-258 TJm +(result) 22.1369 Tj +-257 TJm +(is) 6.6451 Tj +72 244.656 Td +(the) 12.1743 Tj +-239 TJm +(concatenation) 55.3323 Tj +-238 TJm +(of) 8.2988 Tj +-239 TJm +(the) 12.1743 Tj +-239 TJm +(corresponding) 56.996 Tj +-239 TJm +(uncompressed) 56.996 Tj +-238 TJm +(\002les.) 19.0983 Tj +-613 TJm +(Inte) 15.4918 Tj +15 TJm +(grity) 18.8194 Tj +-238 TJm +(testing) 26.5703 Tj +-239 TJm +(\() 3.3175 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +382.247 244.656 Td +/F124_0 9.9626 Tf +(-t) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +394.202 244.656 Td +/F122_0 9.9626 Tf +(\)) 3.3175 Tj +-239 TJm +(of) 8.2988 Tj +-238 TJm +(concatenated) 52.0048 Tj +-239 TJm +(compressed) 47.0334 Tj +-239 TJm +(\002les) 16.6077 Tj +-239 TJm +(is) 6.6451 Tj +72 232.7 Td +(also) 16.0497 Tj +-250 TJm +(supported.) 41.7831 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 210.783 Td +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-399 TJm +(can) 13.8281 Tj +-399 TJm +(also) 16.0497 Tj +-399 TJm +(compress) 37.6287 Tj +-400 TJm +(or) 8.2988 Tj +-399 TJm +(decompress) 47.0334 Tj +-399 TJm +(\002les) 16.6077 Tj +-399 TJm +(to) 7.7509 Tj +-399 TJm +(the) 12.1743 Tj +-399 TJm +(standard) 33.7533 Tj +-399 TJm +(output) 25.4644 Tj +-399 TJm +(by) 9.9626 Tj +-400 TJm +(gi) 7.7509 Tj +25 TJm +(ving) 17.7135 Tj +-399 TJm +(the) 12.1743 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +409.67 210.783 Td +/F124_0 9.9626 Tf +(-c) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +425.602 210.783 Td +/F122_0 9.9626 Tf +(\003ag.) 17.4346 Tj +-757 TJm +(Multiple) 34.3212 Tj +-400 TJm +(\002l) 8.3088 Tj +1 TJm +(es) 8.2988 Tj +-400 TJm +(may) 17.1556 Tj +-399 TJm +(be) 9.4047 Tj +72 198.827 Td +(compressed) 47.0334 Tj +-367 TJm +(and) 14.386 Tj +-367 TJm +(decompressed) 56.4381 Tj +-367 TJm +(lik) 10.5205 Tj +10 TJm +(e) 4.4234 Tj +-367 TJm +(this.) 16.8866 Tj +-1321 TJm +(The) 15.4918 Tj +-367 TJm +(resulting) 34.8691 Tj +-367 TJm +(outputs) 29.3399 Tj +-367 TJm +(are) 12.1643 Tj +-367 TJm +(fed) 12.7222 Tj +-367 TJm +(sequentially) 48.1492 Tj +-366 TJm +(to) 7.7509 Tj +-367 TJm +(stdout.) 26.8492 Tj +-1322 TJm +(Compression) 52.5826 Tj +-367 TJm +(of) 8.2988 Tj +72 186.872 Td +(multiple) 33.2153 Tj +-289 TJm +(\002les) 16.6077 Tj +-289 TJm +(in) 7.7509 Tj +-289 TJm +(this) 14.396 Tj +-289 TJm +(manner) 29.8778 Tj +-288 TJm +(generates) 37.6188 Tj +-289 TJm +(a) 4.4234 Tj +-289 TJm +(stream) 26.5603 Tj +-289 TJm +(containing) 42.0621 Tj +-289 TJm +(multiple) 33.2153 Tj +-289 TJm +(compressed) 47.0334 Tj +-289 TJm +(\002le) 12.7322 Tj +-289 TJm +(representations.) 62.8042 Tj +-853 TJm +(Such) 19.9252 Tj +-289 TJm +(a) 4.4234 Tj +-289 TJm +(stream) 26.5603 Tj +72 174.917 Td +(can) 13.8281 Tj +-391 TJm +(be) 9.4047 Tj +-391 TJm +(decompressed) 56.4381 Tj +-390 TJm +(correctly) 35.4071 Tj +-391 TJm +(only) 17.7135 Tj +-391 TJm +(by) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +238.116 174.917 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +271.898 174.917 Td +/F122_0 9.9626 Tf +(v) 4.9813 Tj +15 TJm +(ersion) 24.3486 Tj +-391 TJm +(0.9.0) 19.9252 Tj +-391 TJm +(or) 8.2988 Tj +-390 TJm +(later) 17.7035 Tj +55 TJm +(.) 2.4907 Tj +-733 TJm +(Earlier) 27.1082 Tj +-391 TJm +(v) 4.9813 Tj +15 TJm +(ersions) 28.224 Tj +-391 TJm +(of) 8.2988 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +448.071 174.917 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +481.852 174.917 Td +/F122_0 9.9626 Tf +(will) 15.5018 Tj +-391 TJm +(stop) 16.6077 Tj +-391 TJm +(after) 18.2515 Tj +72 162.962 Td +(decompressing) 59.7656 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(\002rst) 15.5018 Tj +-250 TJm +(\002le) 12.7322 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(stream.) 29.0509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 141.044 Td +/F124_0 9.9626 Tf +(bzcat) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +104.379 141.044 Td +/F122_0 9.9626 Tf +(\(or) 11.6164 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +118.486 141.044 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +-600 TJm +(-dc) 17.9327 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +172.284 141.044 Td +/F122_0 9.9626 Tf +(\)) 3.3175 Tj +-250 TJm +(decompresses) 55.3323 Tj +-250 TJm +(all) 9.9626 Tj +-250 TJm +(speci\002ed) 35.417 Tj +-250 TJm +(\002les) 16.6077 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(standard) 33.7533 Tj +-250 TJm +(output.) 27.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 119.126 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +104.866 119.126 Td +/F122_0 9.9626 Tf +(will) 15.5018 Tj +-299 TJm +(read) 17.1456 Tj +-299 TJm +(ar) 7.7409 Tj +18 TJm +(guments) 33.7633 Tj +-299 TJm +(from) 19.3673 Tj +-299 TJm +(the) 12.1743 Tj +-299 TJm +(en) 9.4047 Tj +40 TJm +(vironment) 40.9562 Tj +-298 TJm +(v) 4.9813 Tj +25 TJm +(ariables) 30.9837 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +316.903 119.126 Td +/F124_0 9.9626 Tf +(BZIP2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +349.769 119.126 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +367.133 119.126 Td +/F124_0 9.9626 Tf +(BZIP) 23.9102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +391.043 119.126 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-299 TJm +(in) 7.7509 Tj +-299 TJm +(that) 14.9439 Tj +-299 TJm +(order) 21.0211 Tj +40 TJm +(,) 2.4907 Tj +-311 TJm +(and) 14.386 Tj +-299 TJm +(will) 15.5018 Tj +-299 TJm +(process) 29.8778 Tj +-299 TJm +(them) 19.9252 Tj +72 107.171 Td +(before) 25.4445 Tj +-250 TJm +(an) 9.4047 Tj +15 TJm +(y) 4.9813 Tj +-250 TJm +(ar) 7.7409 Tj +18 TJm +(guments) 33.7633 Tj +-250 TJm +(read) 17.1456 Tj +-250 TJm +(from) 19.3673 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(command) 39.2925 Tj +-250 TJm +(line.) 17.4346 Tj +-310 TJm +(This) 17.7135 Tj +-250 TJm +(gi) 7.7509 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(es) 8.2988 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(con) 14.386 Tj +40 TJm +(v) 4.9813 Tj +15 TJm +(enient) 24.3486 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(ay) 9.4047 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(supply) 26.5703 Tj +-250 TJm +(def) 12.7222 Tj +10 TJm +(ault) 14.9439 Tj +-250 TJm +(ar) 7.7409 Tj +18 TJm +(guments.) 36.2539 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 85.253 Td +(Compression) 52.5826 Tj +-294 TJm +(is) 6.6451 Tj +-294 TJm +(al) 7.193 Tj +10 TJm +(w) 7.193 Tj +10 TJm +(ays) 13.2801 Tj +-294 TJm +(performed,) 43.9849 Tj +-305 TJm +(e) 4.4234 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(en) 9.4047 Tj +-294 TJm +(if) 6.0871 Tj +-294 TJm +(the) 12.1743 Tj +-294 TJm +(compressed) 47.0334 Tj +-294 TJm +(\002le) 12.7322 Tj +-293 TJm +(is) 6.6451 Tj +-294 TJm +(slightly) 29.8978 Tj +-294 TJm +(lar) 10.5105 Tj +18 TJm +(ger) 12.7222 Tj +-294 TJm +(than) 17.1556 Tj +-294 TJm +(the) 12.1743 Tj +-294 TJm +(original.) 33.4843 Tj +-884 TJm +(Files) 19.3773 Tj +-294 TJm +(of) 8.2988 Tj +-294 TJm +(less) 14.9439 Tj +-294 TJm +(than) 17.1556 Tj +72 73.298 Td +(about) 22.1369 Tj +-246 TJm +(one) 14.386 Tj +-246 TJm +(hundred) 32.6474 Tj +-245 TJm +(bytes) 21.031 Tj +-246 TJm +(tend) 17.1556 Tj +-246 TJm +(to) 7.7509 Tj +-246 TJm +(get) 12.1743 Tj +-246 TJm +(l) 2.7696 Tj +1 TJm +(ar) 7.7409 Tj +18 TJm +(ger) 12.7222 Tj +40 TJm +(,) 2.4907 Tj +-247 TJm +(since) 20.4731 Tj +-246 TJm +(the) 12.1743 Tj +-246 TJm +(compression) 50.3609 Tj +-245 TJm +(mechanism) 45.3796 Tj +-246 TJm +(has) 13.2801 Tj +-246 TJm +(a) 4.4234 Tj +-246 TJm +(constant) 33.2053 Tj +-246 TJm +(o) 4.9813 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(erhead) 26.5503 Tj +-245 TJm +(in) 7.7509 Tj +-246 TJm +(the) 12.1743 Tj +-246 TJm +(re) 7.7409 Tj +15 TJm +(gion) 17.7135 Tj +-246 TJm +(of) 8.2988 Tj +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +539.395 50.951 Td +(3) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 4 7 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +477.109 749.245 Td +/F122_0 9.9626 Tf +(Ho) 12.1743 Tj +25 TJm +(w) 7.193 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(use) 13.2801 Tj +-250 TJm +(bzip2) 22.1369 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +72 710.037 Td +/F122_0 9.9626 Tf +(50) 9.9626 Tj +-264 TJm +(bytes.) 23.5217 Tj +-351 TJm +(Random) 33.7633 Tj +-264 TJm +(dat) 12.1743 Tj +1 TJm +(a) 4.4234 Tj +-264 TJm +(\(including) 40.9562 Tj +-264 TJm +(the) 12.1743 Tj +-264 TJm +(output) 25.4644 Tj +-263 TJm +(of) 8.2988 Tj +-264 TJm +(most) 19.3773 Tj +-264 TJm +(\002le) 12.7322 Tj +-263 TJm +(compressors\)) 53.1206 Tj +-264 TJm +(is) 6.6451 Tj +-264 TJm +(coded) 23.7907 Tj +-263 TJm +(at) 7.193 Tj +-264 TJm +(about) 22.1369 Tj +-264 TJm +(8.05) 17.4346 Tj +-263 TJm +(bits) 14.396 Tj +-264 TJm +(per) 12.7222 Tj +-264 TJm +(byte,) 19.6462 Tj +-267 TJm +(gi) 7.7509 Tj +25 TJm +(ving) 17.7135 Tj +-264 TJm +(an) 9.4047 Tj +72 698.082 Td +(e) 4.4234 Tj +15 TJm +(xpansion) 35.9749 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(around) 27.6661 Tj +-250 TJm +(0.5%.) 23.2427 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 676.283 Td +(As) 11.0684 Tj +-268 TJm +(a) 4.4234 Tj +-268 TJm +(self-check) 40.9363 Tj +-269 TJm +(for) 11.6164 Tj +-268 TJm +(your) 18.2614 Tj +-268 TJm +(protection,) 42.889 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +217.273 676.283 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +249.833 676.283 Td +/F122_0 9.9626 Tf +(uses) 17.1556 Tj +-268 TJm +(32-bit) 23.8007 Tj +-268 TJm +(CRCs) 23.8106 Tj +-269 TJm +(to) 7.7509 Tj +-268 TJm +(mak) 17.1556 Tj +10 TJm +(e) 4.4234 Tj +-268 TJm +(sure) 16.5977 Tj +-268 TJm +(that) 14.9439 Tj +-268 TJm +(the) 12.1743 Tj +-269 TJm +(decompressed) 56.4381 Tj +-268 TJm +(v) 4.9813 Tj +15 TJm +(ersion) 24.3486 Tj +-268 TJm +(of) 8.2988 Tj +-268 TJm +(a) 4.4234 Tj +-268 TJm +(\002le) 12.7322 Tj +-269 TJm +(is) 6.6451 Tj +72 664.328 Td +(identical) 34.3112 Tj +-200 TJm +(to) 7.7509 Tj +-199 TJm +(the) 12.1743 Tj +-200 TJm +(original.) 33.4843 Tj +-586 TJm +(This) 17.7135 Tj +-200 TJm +(guards) 26.5603 Tj +-199 TJm +(ag) 9.4047 Tj +5 TJm +(ainst) 18.8194 Tj +-200 TJm +(corruption) 41.5042 Tj +-199 TJm +(of) 8.2988 Tj +-200 TJm +(the) 12.1743 Tj +-200 TJm +(compressed) 47.0334 Tj +-199 TJm +(data,) 19.0883 Tj +-210 TJm +(and) 14.386 Tj +-199 TJm +(ag) 9.4047 Tj +5 TJm +(ainst) 18.8194 Tj +-200 TJm +(undetected) 43.158 Tj +-200 TJm +(b) 4.9813 Tj +20 TJm +(ugs) 13.8381 Tj +-199 TJm +(in) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +510.112 664.328 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 652.373 Td +/F122_0 9.9626 Tf +(\(hopefully) 41.5042 Tj +-275 TJm +(v) 4.9813 Tj +15 TJm +(ery) 12.7222 Tj +-274 TJm +(unlik) 20.4831 Tj +10 TJm +(ely\).) 17.9825 Tj +-384 TJm +(The) 15.4918 Tj +-275 TJm +(chances) 31.5316 Tj +-275 TJm +(of) 8.2988 Tj +-275 TJm +(data) 16.5977 Tj +-274 TJm +(corruption) 41.5042 Tj +-275 TJm +(going) 22.6948 Tj +-275 TJm +(undetected) 43.158 Tj +-274 TJm +(is) 6.6451 Tj +-275 TJm +(microscopic,) 51.1878 Tj +-281 TJm +(about) 22.1369 Tj +-275 TJm +(one) 14.386 Tj +-274 TJm +(chance) 27.6562 Tj +-275 TJm +(in) 7.7509 Tj +-275 TJm +(four) 16.5977 Tj +72 640.417 Td +(billion) 26.0223 Tj +-279 TJm +(for) 11.6164 Tj +-279 TJm +(each) 18.2515 Tj +-279 TJm +(\002le) 12.7322 Tj +-280 TJm +(processed.) 41.7732 Tj +-795 TJm +(Be) 11.0684 Tj +-279 TJm +(a) 4.4234 Tj +15 TJm +(w) 7.193 Tj +10 TJm +(are,) 14.655 Tj +-286 TJm +(though,) 30.1668 Tj +-287 TJm +(that) 14.9439 Tj +-279 TJm +(the) 12.1743 Tj +-279 TJm +(check) 23.2328 Tj +-279 TJm +(occurs) 26.0024 Tj +-279 TJm +(upon) 19.9252 Tj +-279 TJm +(decompression,) 62.2563 Tj +-287 TJm +(so) 8.8568 Tj +-279 TJm +(it) 5.5392 Tj +-279 TJm +(can) 13.8281 Tj +-279 TJm +(only) 17.7135 Tj +-280 TJm +(tell) 12.7322 Tj +-279 TJm +(you) 14.9439 Tj +72 628.462 Td +(that) 14.9439 Tj +-237 TJm +(something) 41.5142 Tj +-236 TJm +(is) 6.6451 Tj +-237 TJm +(wrong.) 27.9451 Tj +-611 TJm +(It) 6.0871 Tj +-237 TJm +(can') 17.1456 Tj +18 TJm +(t) 2.7696 Tj +-237 TJm +(help) 17.1556 Tj +-237 TJm +(you) 14.9439 Tj +-236 TJm +(reco) 17.1456 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(er) 7.7409 Tj +-237 TJm +(the) 12.1743 Tj +-237 TJm +(original) 30.9936 Tj +-237 TJm +(uncompressed) 56.996 Tj +-236 TJm +(data.) 19.0883 Tj +-612 TJm +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-236 TJm +(can) 13.8281 Tj +-237 TJm +(use) 13.2801 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +458.159 628.462 Td +/F124_0 9.9626 Tf +(bzip2recover) 71.7307 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +532.249 628.462 Td +/F122_0 9.9626 Tf +(to) 7.7509 Tj +72 616.507 Td +(try) 11.0684 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(reco) 17.1456 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(er) 7.7409 Tj +-250 TJm +(data) 16.5977 Tj +-250 TJm +(from) 19.3673 Tj +-250 TJm +(damaged) 35.965 Tj +-250 TJm +(\002les.) 19.0983 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 594.708 Td +(Return) 27.1182 Tj +-298 TJm +(v) 4.9813 Tj +25 TJm +(alues:) 23.2427 Tj +-406 TJm +(0) 4.9813 Tj +-298 TJm +(for) 11.6164 Tj +-298 TJm +(a) 4.4234 Tj +-298 TJm +(normal) 28.224 Tj +-298 TJm +(e) 4.4234 Tj +15 TJm +(xit,) 13.0112 Tj +-310 TJm +(1) 4.9813 Tj +-298 TJm +(for) 11.6164 Tj +-297 TJm +(en) 9.4047 Tj +40 TJm +(vironmental) 48.1492 Tj +-298 TJm +(problems) 37.0808 Tj +-298 TJm +(\(\002le) 16.0497 Tj +-298 TJm +(not) 12.7322 Tj +-298 TJm +(found,) 25.7334 Tj +-310 TJm +(in) 7.7509 Tj +40 TJm +(v) 4.9813 Tj +25 TJm +(alid) 14.9439 Tj +-298 TJm +(\003ags,) 21.31 Tj +-310 TJm +(I/O) 13.2801 Tj +-298 TJm +(errors,) 25.7234 Tj +-310 TJm +(etc.\),) 19.9152 Tj +-310 TJm +(2) 4.9813 Tj +-298 TJm +(to) 7.7509 Tj +72 582.753 Td +(indicate) 31.5416 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(corrupt) 28.772 Tj +-250 TJm +(compressed) 47.0334 Tj +-250 TJm +(\002le,) 15.2229 Tj +-250 TJm +(3) 4.9813 Tj +-250 TJm +(for) 11.6164 Tj +-250 TJm +(an) 9.4047 Tj +-250 TJm +(internal) 30.4357 Tj +-250 TJm +(consistenc) 41.5042 Tj +15 TJm +(y) 4.9813 Tj +-250 TJm +(error) 19.3573 Tj +-250 TJm +(\(e) 7.7409 Tj +15 TJm +(g,) 7.472 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(ug\)) 13.2801 Tj +-250 TJm +(which) 24.3486 Tj +-250 TJm +(caused) 27.1082 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +443.065 582.753 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +475.444 582.753 Td +/F122_0 9.9626 Tf +(to) 7.7509 Tj +-250 TJm +(panic.) 24.0696 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 548.118 Td +/F116_0 20.6585 Tf +(2.4.) 34.4584 Tj +-278 TJm +(OPTIONS) 92.9839 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 516.475 Td +/F124_0 9.9626 Tf +(-c) 11.9551 Tj +-600 TJm +(--stdout) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 504.52 Td +/F122_0 9.9626 Tf +(Compress) 39.8504 Tj +-250 TJm +(or) 8.2988 Tj +-250 TJm +(decompress) 47.0334 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(standard) 33.7533 Tj +-250 TJm +(output.) 27.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 478.854 Td +/F124_0 9.9626 Tf +(-d) 11.9551 Tj +-600 TJm +(--decompress) 71.7307 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 466.899 Td +/F122_0 9.9626 Tf +(F) 5.5392 Tj +15 TJm +(orce) 17.1456 Tj +-296 TJm +(decompression.) 62.2563 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +200.214 466.899 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +230.102 466.899 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +235.659 466.899 Td +/F124_0 9.9626 Tf +(bunzip2) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +280.454 466.899 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +297.791 466.899 Td +/F124_0 9.9626 Tf +(bzcat) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +330.631 466.899 Td +/F122_0 9.9626 Tf +(are) 12.1643 Tj +-296 TJm +(really) 22.6848 Tj +-296 TJm +(the) 12.1743 Tj +-297 TJm +(same) 20.4731 Tj +-296 TJm +(program,) 36.2439 Tj +-308 TJm +(and) 14.386 Tj +-296 TJm +(the) 12.1743 Tj +-296 TJm +(decision) 33.2053 Tj +-297 TJm +(about) 22.1369 Tj +108 454.944 Td +(what) 19.3673 Tj +-303 TJm +(actions) 28.224 Tj +-303 TJm +(to) 7.7509 Tj +-303 TJm +(tak) 12.1743 Tj +10 TJm +(e) 4.4234 Tj +-303 TJm +(is) 6.6451 Tj +-303 TJm +(done) 19.3673 Tj +-303 TJm +(on) 9.9626 Tj +-304 TJm +(the) 12.1743 Tj +-303 TJm +(basis) 19.9252 Tj +-303 TJm +(of) 8.2988 Tj +-303 TJm +(which) 24.3486 Tj +-303 TJm +(name) 21.579 Tj +-303 TJm +(is) 6.6451 Tj +-303 TJm +(used.) 20.7521 Tj +-939 TJm +(This) 17.7135 Tj +-303 TJm +(\003ag) 14.9439 Tj +-303 TJm +(o) 4.9813 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(errides) 27.1082 Tj +-303 TJm +(that) 14.9439 Tj +-303 TJm +(mechanism,) 47.8703 Tj +-316 TJm +(and) 14.386 Tj +108 442.988 Td +(forces) 24.3386 Tj +-250 TJm +(bzip2) 22.1369 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(decompress.) 49.5241 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 417.323 Td +/F124_0 9.9626 Tf +(-z) 11.9551 Tj +-600 TJm +(--compress) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 405.368 Td +/F122_0 9.9626 Tf +(The) 15.4918 Tj +-250 TJm +(complement) 49.2551 Tj +-250 TJm +(to) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +187.969 405.368 Td +/F124_0 9.9626 Tf +(-d) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +199.924 405.368 Td +/F122_0 9.9626 Tf +(:) 2.7696 Tj +-310 TJm +(forces) 24.3386 Tj +-250 TJm +(compression,) 52.8516 Tj +-250 TJm +(re) 7.7409 Tj +15 TJm +(g) 4.9813 Tj +5 TJm +(ardless) 27.6661 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(in) 7.7509 Tj +40 TJm +(v) 4.9813 Tj +20 TJm +(okation) 29.8878 Tj +-250 TJm +(name.) 24.0696 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 379.702 Td +/F124_0 9.9626 Tf +(-t) 11.9551 Tj +-600 TJm +(--test) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 367.747 Td +/F122_0 9.9626 Tf +(Check) 25.4544 Tj +-270 TJm +(inte) 14.9439 Tj +15 TJm +(grity) 18.8194 Tj +-271 TJm +(of) 8.2988 Tj +-270 TJm +(the) 12.1743 Tj +-271 TJm +(speci\002ed) 35.417 Tj +-270 TJm +(\002le\(s\),) 25.7334 Tj +-276 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-270 TJm +(don') 18.2614 Tj +18 TJm +(t) 2.7696 Tj +-270 TJm +(decompress) 47.0334 Tj +-271 TJm +(them.) 22.4159 Tj +-742 TJm +(This) 17.7135 Tj +-271 TJm +(really) 22.6848 Tj +-270 TJm +(performs) 35.965 Tj +-270 TJm +(a) 4.4234 Tj +-271 TJm +(trial) 16.0497 Tj +-270 TJm +(decompres-) 46.4755 Tj +108 355.792 Td +(sion) 16.6077 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(thro) 16.0497 Tj +25 TJm +(ws) 11.0684 Tj +-250 TJm +(a) 4.4234 Tj +15 TJm +(w) 7.193 Tj +10 TJm +(ay) 9.4047 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(result.) 24.6275 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 330.126 Td +/F124_0 9.9626 Tf +(-f) 11.9551 Tj +-600 TJm +(--force) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 318.171 Td +/F122_0 9.9626 Tf +(F) 5.5392 Tj +15 TJm +(orce) 17.1456 Tj +-338 TJm +(o) 4.9813 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(erwrite) 28.2141 Tj +-339 TJm +(of) 8.2988 Tj +-338 TJm +(output) 25.4644 Tj +-338 TJm +(\002les.) 19.0983 Tj +-1150 TJm +(Normally) 38.1866 Tj +65 TJm +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +289.831 318.171 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +323.089 318.171 Td +/F122_0 9.9626 Tf +(will) 15.5018 Tj +-338 TJm +(not) 12.7322 Tj +-339 TJm +(o) 4.9813 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(erwrite) 28.2141 Tj +-338 TJm +(e) 4.4234 Tj +15 TJm +(xisting) 27.1282 Tj +-338 TJm +(output) 25.4644 Tj +-338 TJm +(\002les.) 19.0983 Tj +-1150 TJm +(Also) 18.8194 Tj +-339 TJm +(forces) 24.3386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 306.215 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +140.379 306.215 Td +/F122_0 9.9626 Tf +(to) 7.7509 Tj +-250 TJm +(break) 22.1269 Tj +-250 TJm +(hard) 17.7035 Tj +-250 TJm +(links) 19.3773 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(\002les,) 19.0983 Tj +-250 TJm +(which) 24.3486 Tj +-250 TJm +(it) 5.5392 Tj +-250 TJm +(otherwise) 38.7346 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(ouldn') 26.0123 Tj +18 TJm +(t) 2.7696 Tj +-250 TJm +(do.) 12.4533 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 284.416 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +141.211 284.416 Td +/F122_0 9.9626 Tf +(normally) 35.9749 Tj +-334 TJm +(declines) 32.6474 Tj +-333 TJm +(to) 7.7509 Tj +-334 TJm +(decompress) 47.0334 Tj +-333 TJm +(\002les) 16.6077 Tj +-334 TJm +(which) 24.3486 Tj +-333 TJm +(don') 18.2614 Tj +18 TJm +(t) 2.7696 Tj +-334 TJm +(ha) 9.4047 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-333 TJm +(the) 12.1743 Tj +-334 TJm +(correct) 27.6562 Tj +-333 TJm +(magic) 24.3486 Tj +-334 TJm +(header) 26.5503 Tj +-333 TJm +(bytes.) 23.5217 Tj +-561 TJm +(If) 6.6351 Tj +-334 TJm +(forced) 25.4445 Tj +108 272.461 Td +(\() 3.3175 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +111.318 272.461 Td +/F124_0 9.9626 Tf +(-f) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +123.273 272.461 Td +/F122_0 9.9626 Tf +(\),) 5.8082 Tj +-250 TJm +(ho) 9.9626 Tj +25 TJm +(we) 11.6164 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(er) 7.7409 Tj +40 TJm +(,) 2.4907 Tj +-250 TJm +(it) 5.5392 Tj +-250 TJm +(will) 15.5018 Tj +-250 TJm +(pass) 17.1556 Tj +-250 TJm +(such) 18.2614 Tj +-250 TJm +(\002les) 16.6077 Tj +-250 TJm +(through) 30.9936 Tj +-250 TJm +(unmodi\002ed.) 47.8803 Tj +-310 TJm +(This) 17.7135 Tj +-250 TJm +(is) 6.6451 Tj +-250 TJm +(ho) 9.9626 Tj +25 TJm +(w) 7.193 Tj +-250 TJm +(GNU) 21.579 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +412.585 272.461 Td +/F124_0 9.9626 Tf +(gzip) 23.9102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +438.986 272.461 Td +/F122_0 9.9626 Tf +(beha) 18.8094 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(es.) 10.7895 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 246.795 Td +/F124_0 9.9626 Tf +(-k) 11.9551 Tj +-600 TJm +(--keep) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 234.84 Td +/F122_0 9.9626 Tf +(K) 7.193 Tj +25 TJm +(eep) 13.8281 Tj +-250 TJm +(\(don') 21.579 Tj +18 TJm +(t) 2.7696 Tj +-250 TJm +(delete\)) 27.1082 Tj +-250 TJm +(input) 20.4831 Tj +-250 TJm +(\002les) 16.6077 Tj +-250 TJm +(during) 26.0123 Tj +-250 TJm +(compression) 50.3609 Tj +-250 TJm +(or) 8.2988 Tj +-250 TJm +(decompression.) 62.2563 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 209.174 Td +/F124_0 9.9626 Tf +(-s) 11.9551 Tj +-600 TJm +(--small) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 197.219 Td +/F122_0 9.9626 Tf +(Reduce) 29.8778 Tj +-347 TJm +(memory) 33.2053 Tj +-347 TJm +(usage,) 25.1755 Tj +-371 TJm +(for) 11.6164 Tj +-346 TJm +(compression,) 52.8516 Tj +-371 TJm +(decompression) 59.7656 Tj +-347 TJm +(and) 14.386 Tj +-347 TJm +(testing.) 29.0609 Tj +-1201 TJm +(Files) 19.3773 Tj +-347 TJm +(are) 12.1643 Tj +-347 TJm +(decompressed) 56.4381 Tj +-346 TJm +(and) 14.386 Tj +-347 TJm +(tested) 23.2427 Tj +108 185.264 Td +(using) 21.589 Tj +-388 TJm +(a) 4.4234 Tj +-388 TJm +(modi\002ed) 35.427 Tj +-388 TJm +(algorithm) 38.7446 Tj +-389 TJm +(which) 24.3486 Tj +-388 TJm +(only) 17.7135 Tj +-388 TJm +(requires) 32.0895 Tj +-388 TJm +(2.5) 12.4533 Tj +-388 TJm +(bytes) 21.031 Tj +-388 TJm +(per) 12.7222 Tj +-388 TJm +(block) 22.1369 Tj +-389 TJm +(byte.) 19.6462 Tj +-1448 TJm +(This) 17.7135 Tj +-389 TJm +(means) 25.4544 Tj +-388 TJm +(an) 9.4047 Tj +15 TJm +(y) 4.9813 Tj +-388 TJm +(\002le) 12.7322 Tj +-388 TJm +(can) 13.8281 Tj +-388 TJm +(be) 9.4047 Tj +108 173.309 Td +(decompressed) 56.4381 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(2300k) 24.9065 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(memory) 33.2053 Tj +65 TJm +(,) 2.4907 Tj +-250 TJm +(albeit) 22.1369 Tj +-250 TJm +(at) 7.193 Tj +-250 TJm +(about) 22.1369 Tj +-250 TJm +(half) 15.4918 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(normal) 28.224 Tj +-250 TJm +(speed.) 25.1755 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 151.51 Td +(During) 28.224 Tj +-252 TJm +(compr) 25.4544 Tj +1 TJm +(ession,) 27.3972 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +194.091 151.51 Td +/F124_0 9.9626 Tf +(-s) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +208.551 151.51 Td +/F122_0 9.9626 Tf +(selects) 26.5603 Tj +-252 TJm +(a) 4.4234 Tj +-251 TJm +(block) 22.1369 Tj +-252 TJm +(size) 15.4918 Tj +-251 TJm +(of) 8.2988 Tj +-252 TJm +(200k,) 22.4159 Tj +-251 TJm +(which) 24.3486 Tj +-252 TJm +(limits) 22.7048 Tj +-251 TJm +(memory) 33.2053 Tj +-252 TJm +(use) 13.2801 Tj +-251 TJm +(to) 7.7509 Tj +-252 TJm +(around) 27.6661 Tj +-251 TJm +(the) 12.1743 Tj +-252 TJm +(same) 20.4731 Tj +-251 TJm +(\002gure,) 25.7334 Tj +-252 TJm +(at) 7.193 Tj +108 139.554 Td +(the) 12.1743 Tj +-287 TJm +(e) 4.4234 Tj +15 TJm +(xpense) 27.6661 Tj +-287 TJm +(of) 8.2988 Tj +-288 TJm +(your) 18.2614 Tj +-287 TJm +(compression) 50.3609 Tj +-287 TJm +(ratio.) 20.7521 Tj +-843 TJm +(In) 8.2988 Tj +-287 TJm +(short,) 22.4159 Tj +-297 TJm +(if) 6.0871 Tj +-287 TJm +(your) 18.2614 Tj +-287 TJm +(machine) 33.7533 Tj +-287 TJm +(is) 6.6451 Tj +-287 TJm +(lo) 7.7509 Tj +25 TJm +(w) 7.193 Tj +-287 TJm +(on) 9.9626 Tj +-288 TJm +(memory) 33.2053 Tj +-287 TJm +(\(8) 8.2988 Tj +-287 TJm +(me) 12.1743 Tj +15 TJm +(g) 4.9813 Tj +5 TJm +(abytes) 25.4544 Tj +-287 TJm +(or) 8.2988 Tj +-287 TJm +(less\),) 20.7521 Tj +108 127.599 Td +(use) 13.2801 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +123.771 127.599 Td +/F124_0 9.9626 Tf +(-s) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +138.217 127.599 Td +/F122_0 9.9626 Tf +(for) 11.6164 Tj +-250 TJm +(e) 4.4234 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(erything.) 35.696 Tj +-620 TJm +(See) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +-250 TJm +(MEMOR) 37.6387 Tj +65 TJm +(Y) 7.193 Tj +-250 TJm +(MAN) 23.2427 Tj +35 TJm +(A) 7.193 Tj +40 TJm +(GEMENT) 41.5042 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +-250 TJm +([5]) 11.6164 Tj +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-250 TJm +(belo) 17.1556 Tj +25 TJm +(w) 7.193 Tj +65 TJm +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 101.933 Td +/F124_0 9.9626 Tf +(-q) 11.9551 Tj +-600 TJm +(--quiet) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 89.978 Td +/F122_0 9.9626 Tf +(Suppress) 35.9749 Tj +-221 TJm +(non-essential) 52.5726 Tj +-220 TJm +(w) 7.193 Tj +10 TJm +(arning) 25.4544 Tj +-221 TJm +(messages.) 40.1194 Tj +-300 TJm +(Messages) 38.7346 Tj +-221 TJm +(pertaining) 40.3983 Tj +-221 TJm +(to) 7.7509 Tj +-220 TJm +(I/O) 13.2801 Tj +-221 TJm +(errors) 23.2328 Tj +-221 TJm +(and) 14.386 Tj +-220 TJm +(other) 20.4731 Tj +-221 TJm +(critical) 27.6661 Tj +-221 TJm +(e) 4.4234 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ents) 16.0497 Tj +-221 TJm +(wi) 9.9626 Tj +1 TJm +(ll) 5.5392 Tj +-221 TJm +(not) 12.7322 Tj +108 78.023 Td +(be) 9.4047 Tj +-250 TJm +(suppressed.) 46.2065 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +539.395 50.852 Td +(4) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 5 8 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +477.109 749.245 Td +/F122_0 9.9626 Tf +(Ho) 12.1743 Tj +25 TJm +(w) 7.193 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(use) 13.2801 Tj +-250 TJm +(bzip2) 22.1369 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +72 710.037 Td +/F124_0 9.9626 Tf +(-v) 11.9551 Tj +-600 TJm +(--verbose) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 698.082 Td +/F122_0 9.9626 Tf +(V) 7.193 Tj +111 TJm +(erbose) 26.0024 Tj +-323 TJm +(mode) 22.1369 Tj +-322 TJm +(--) 6.6351 Tj +-323 TJm +(sho) 13.8381 Tj +25 TJm +(w) 7.193 Tj +-322 TJm +(the) 12.1743 Tj +-323 TJm +(compression) 50.3609 Tj +-323 TJm +(ratio) 18.2614 Tj +-322 TJm +(for) 11.6164 Tj +-323 TJm +(each) 18.2515 Tj +-322 TJm +(\002le) 12.7322 Tj +-323 TJm +(processed.) 41.7732 Tj +-1056 TJm +(Further) 29.3299 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +430.015 698.082 Td +/F124_0 9.9626 Tf +(-v) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +441.97 698.082 Td +/F122_0 9.9626 Tf +(') 3.3175 Tj +55 TJm +(s) 3.8755 Tj +-323 TJm +(increase) 32.6375 Tj +-322 TJm +(the) 12.1743 Tj +-323 TJm +(v) 4.9813 Tj +15 TJm +(erbosity) 32.0995 Tj +108 686.127 Td +(le) 7.193 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el,) 9.6836 Tj +-250 TJm +(spe) 13.2801 Tj +25 TJm +(wing) 19.9252 Tj +-250 TJm +(out) 12.7322 Tj +-250 TJm +(lots) 14.396 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(information) 47.0434 Tj +-250 TJm +(which) 24.3486 Tj +-250 TJm +(is) 6.6451 Tj +-250 TJm +(primarily) 37.0808 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(interest) 29.3299 Tj +-250 TJm +(for) 11.6164 Tj +-250 TJm +(diagnostic) 40.9562 Tj +-250 TJm +(purposes.) 37.9077 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 660.224 Td +/F124_0 9.9626 Tf +(-L) 11.9551 Tj +-600 TJm +(--license) 53.798 Tj +-600 TJm +(-V) 11.9551 Tj +-600 TJm +(--version) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 648.269 Td +/F122_0 9.9626 Tf +(Display) 30.9936 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(softw) 22.1369 Tj +10 TJm +(are) 12.1643 Tj +-250 TJm +(v) 4.9813 Tj +15 TJm +(ersion,) 26.8392 Tj +-250 TJm +(license) 27.6661 Tj +-250 TJm +(terms) 22.1369 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(conditions.) 44.0048 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 622.366 Td +/F124_0 9.9626 Tf +(-1) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +86.446 622.366 Td +/F122_0 9.9626 Tf +(\(or) 11.6164 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +100.553 622.366 Td +/F124_0 9.9626 Tf +(--fast) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +136.418 622.366 Td +/F122_0 9.9626 Tf +(\)) 3.3175 Tj +-250 TJm +(to) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +152.468 622.366 Td +/F124_0 9.9626 Tf +(-9) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +166.914 622.366 Td +/F122_0 9.9626 Tf +(\(or) 11.6164 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +181.021 622.366 Td +/F124_0 9.9626 Tf +(-best) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +210.909 622.366 Td +/F122_0 9.9626 Tf +(\)) 3.3175 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 610.411 Td +(Set) 12.7322 Tj +-288 TJm +(the) 12.1743 Tj +-289 TJm +(block) 22.1369 Tj +-288 TJm +(size) 15.4918 Tj +-288 TJm +(to) 7.7509 Tj +-288 TJm +(100) 14.9439 Tj +-289 TJm +(k,) 7.472 Tj +-298 TJm +(200) 14.9439 Tj +-288 TJm +(k) 4.9813 Tj +-288 TJm +(...) 7.472 Tj +-850 TJm +(900) 14.9439 Tj +-288 TJm +(k) 4.9813 Tj +-288 TJm +(when) 21.579 Tj +-289 TJm +(compressing.) 52.8516 Tj +-849 TJm +(Has) 15.4918 Tj +-289 TJm +(no) 9.9626 Tj +-288 TJm +(ef) 7.7409 Tj +25 TJm +(fect) 14.9339 Tj +-288 TJm +(when) 21.579 Tj +-288 TJm +(decompressing.) 62.2563 Tj +-850 TJm +(See) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +108 598.456 Td +(MEMOR) 37.6387 Tj +65 TJm +(Y) 7.193 Tj +-297 TJm +(MAN) 23.2427 Tj +35 TJm +(A) 7.193 Tj +40 TJm +(GEMENT) 41.5042 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +-297 TJm +([5]) 11.6164 Tj +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-298 TJm +(belo) 17.1556 Tj +25 TJm +(w) 7.193 Tj +65 TJm +(.) 2.4907 Tj +-904 TJm +(The) 15.4918 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +297.278 598.456 Td +/F124_0 9.9626 Tf +(--fast) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +336.106 598.456 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +353.454 598.456 Td +/F124_0 9.9626 Tf +(--best) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +392.281 598.456 Td +/F122_0 9.9626 Tf +(aliases) 26.5603 Tj +-297 TJm +(are) 12.1643 Tj +-298 TJm +(primarily) 37.0808 Tj +-297 TJm +(for) 11.6164 Tj +-297 TJm +(GNU) 21.579 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +516.09 598.456 Td +/F124_0 9.9626 Tf +(gzip) 23.9102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 586.501 Td +/F122_0 9.9626 Tf +(compatibility) 53.1405 Tj +65 TJm +(.) 2.4907 Tj +-356 TJm +(In) 8.2988 Tj +-265 TJm +(particular) 38.1767 Tj +40 TJm +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +220.423 586.501 Td +/F124_0 9.9626 Tf +(--fast) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +258.932 586.501 Td +/F122_0 9.9626 Tf +(doesn') 26.5603 Tj +18 TJm +(t) 2.7696 Tj +-265 TJm +(mak) 17.1556 Tj +10 TJm +(e) 4.4234 Tj +-266 TJm +(things) 24.3586 Tj +-265 TJm +(signi\002cantly) 49.2651 Tj +-265 TJm +(f) 3.3175 Tj +10 TJm +(aster) 18.8094 Tj +55 TJm +(.) 2.4907 Tj +-712 TJm +(And) 17.1556 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +444.622 586.501 Td +/F124_0 9.9626 Tf +(--best) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +483.131 586.501 Td +/F122_0 9.9626 Tf +(merely) 27.6661 Tj +-265 TJm +(selects) 26.5603 Tj +108 574.545 Td +(the) 12.1743 Tj +-250 TJm +(def) 12.7222 Tj +10 TJm +(ault) 14.9439 Tj +-250 TJm +(beha) 18.8094 Tj +20 TJm +(viour) 21.031 Tj +55 TJm +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 548.643 Td +/F124_0 9.9626 Tf +(--) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 536.688 Td +/F122_0 9.9626 Tf +(T) 6.0871 Tj +35 TJm +(reats) 18.8094 Tj +-261 TJm +(all) 9.9626 Tj +-261 TJm +(subsequent) 44.2738 Tj +-260 TJm +(ar) 7.7409 Tj +18 TJm +(guments) 33.7633 Tj +-261 TJm +(as) 8.2988 Tj +-261 TJm +(\002le) 12.7322 Tj +-261 TJm +(names,) 27.9451 Tj +-263 TJm +(e) 4.4234 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(en) 9.4047 Tj +-261 TJm +(if) 6.0871 Tj +-261 TJm +(the) 12.1743 Tj +15 TJm +(y) 4.9813 Tj +-260 TJm +(start) 17.1556 Tj +-261 TJm +(with) 17.7135 Tj +-261 TJm +(a) 4.4234 Tj +-261 TJm +(dash.) 20.7521 Tj +-685 TJm +(This) 17.7135 Tj +-260 TJm +(is) 6.6451 Tj +-261 TJm +(so) 8.8568 Tj +-261 TJm +(you) 14.9439 Tj +-261 TJm +(can) 13.8281 Tj +-260 TJm +(handle) 26.5603 Tj +-261 TJm +(\002les) 16.6077 Tj +108 524.732 Td +(with) 17.7135 Tj +-250 TJm +(names) 25.4544 Tj +-250 TJm +(be) 9.4047 Tj +15 TJm +(ginning) 30.4457 Tj +-250 TJm +(with) 17.7135 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(dash,) 20.7521 Tj +-250 TJm +(for) 11.6164 Tj +-250 TJm +(e) 4.4234 Tj +15 TJm +(xample:) 32.0995 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +302.27 524.732 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +-600 TJm +(--) 11.9551 Tj +-600 TJm +(-myfilename) 65.7532 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +421.821 524.732 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 498.83 Td +/F124_0 9.9626 Tf +(--repetitive-fast) 101.6185 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +178.6 498.83 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +188.563 498.83 Td +/F124_0 9.9626 Tf +(--repetitive-best) 101.6185 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 486.874 Td +/F122_0 9.9626 Tf +(These) 23.7907 Tj +-207 TJm +(\003ags) 18.8194 Tj +-206 TJm +(are) 12.1643 Tj +-207 TJm +(redundant) 39.8404 Tj +-207 TJm +(in) 7.7509 Tj +-206 TJm +(v) 4.9813 Tj +15 TJm +(ersions) 28.224 Tj +-207 TJm +(0.9.5) 19.9252 Tj +-207 TJm +(and) 14.386 Tj +-206 TJm +(abo) 14.386 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e.) 6.914 Tj +-591 TJm +(The) 15.4918 Tj +15 TJm +(y) 4.9813 Tj +-207 TJm +(pro) 13.2801 Tj +15 TJm +(vided) 22.1369 Tj +-207 TJm +(some) 21.031 Tj +-207 TJm +(coa) 13.8281 Tj +1 TJm +(rse) 11.6164 Tj +-207 TJm +(control) 28.224 Tj +-207 TJm +(o) 4.9813 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(er) 7.7409 Tj +-207 TJm +(the) 12.1743 Tj +-206 TJm +(beha) 18.8094 Tj +20 TJm +(viour) 21.031 Tj +108 474.919 Td +(of) 8.2988 Tj +-250 TJm +(the) 12.1743 Tj +-251 TJm +(sorting) 27.6761 Tj +-250 TJm +(algorithm) 38.7446 Tj +-250 TJm +(in) 7.7509 Tj +-251 TJm +(earlier) 25.4445 Tj +-250 TJm +(v) 4.9813 Tj +15 TJm +(ersions,) 30.7147 Tj +-250 TJm +(which) 24.3486 Tj +-251 TJm +(w) 7.193 Tj +10 TJm +(as) 8.2988 Tj +-250 TJm +(sometimes) 42.62 Tj +-250 TJm +(useful.) 26.8392 Tj +-622 TJm +(0.9.5) 19.9252 Tj +-251 TJm +(and) 14.386 Tj +-250 TJm +(abo) 14.386 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-250 TJm +(ha) 9.4047 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-251 TJm +(an) 9.4047 Tj +-250 TJm +(impro) 23.8007 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(ed) 9.4047 Tj +108 462.964 Td +(algorithm) 38.7446 Tj +-250 TJm +(which) 24.3486 Tj +-250 TJm +(renders) 29.3199 Tj +-250 TJm +(these) 20.4731 Tj +-250 TJm +(\003ags) 18.8194 Tj +-250 TJm +(irrele) 21.0211 Tj +25 TJm +(v) 4.9813 Tj +25 TJm +(ant.) 14.6649 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 414.264 Td +/F116_0 20.6585 Tf +(2.5.) 34.4584 Tj +-278 TJm +(MEMOR) 79.184 Tj +50 TJm +(Y) 13.7792 Tj +-278 TJm +(MANA) 61.9548 Tj +50 TJm +(GEMENT) 88.3771 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 392.346 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +104.454 392.346 Td +/F122_0 9.9626 Tf +(compresses) 45.9276 Tj +-258 TJm +(lar) 10.5105 Tj +18 TJm +(ge) 9.4047 Tj +-257 TJm +(\002les) 16.6077 Tj +-258 TJm +(in) 7.7509 Tj +-257 TJm +(blocks.) 28.503 Tj +-666 TJm +(The) 15.4918 Tj +-257 TJm +(block) 22.1369 Tj +-258 TJm +(size) 15.4918 Tj +-258 TJm +(af) 7.7409 Tj +25 TJm +(fects) 18.8094 Tj +-257 TJm +(both) 17.7135 Tj +-258 TJm +(the) 12.1743 Tj +-257 TJm +(compression) 50.3609 Tj +-258 TJm +(ratio) 18.2614 Tj +-257 TJm +(achie) 21.0211 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ed,) 11.8953 Tj +-260 TJm +(and) 14.386 Tj +-258 TJm +(the) 12.1743 Tj +-257 TJm +(amount) 29.8878 Tj +72 380.391 Td +(of) 8.2988 Tj +-215 TJm +(memory) 33.2053 Tj +-215 TJm +(needed) 28.2141 Tj +-215 TJm +(for) 11.6164 Tj +-215 TJm +(compression) 50.3609 Tj +-214 TJm +(and) 14.386 Tj +-215 TJm +(decompression.) 62.2563 Tj +-597 TJm +(The) 15.4918 Tj +-215 TJm +(\003ags) 18.8194 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +337.719 380.391 Td +/F124_0 9.9626 Tf +(-1) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +351.815 380.391 Td +/F122_0 9.9626 Tf +(through) 30.9936 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +384.95 380.391 Td +/F124_0 9.9626 Tf +(-9) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +399.046 380.391 Td +/F122_0 9.9626 Tf +(specify) 28.772 Tj +-215 TJm +(the) 12.1743 Tj +-215 TJm +(block) 22.1369 Tj +-215 TJm +(size) 15.4918 Tj +-215 TJm +(to) 7.7509 Tj +-214 TJm +(be) 9.4047 Tj +-215 TJm +(100,000) 32.3785 Tj +72 368.435 Td +(bytes) 21.031 Tj +-278 TJm +(through) 30.9936 Tj +-277 TJm +(900,000) 32.3785 Tj +-278 TJm +(bytes) 21.031 Tj +-278 TJm +(\(the) 15.4918 Tj +-277 TJm +(def) 12.7222 Tj +10 TJm +(ault\)) 18.2614 Tj +-278 TJm +(respecti) 30.9837 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ely) 12.1743 Tj +65 TJm +(.) 2.4907 Tj +-786 TJm +(At) 9.9626 Tj +-278 TJm +(decompression) 59.7656 Tj +-278 TJm +(time,) 20.2042 Tj +-284 TJm +(the) 12.1743 Tj +-278 TJm +(block) 22.1369 Tj +-278 TJm +(size) 15.4918 Tj +-277 TJm +(used) 18.2614 Tj +-278 TJm +(for) 11.6164 Tj +-278 TJm +(compression) 50.3609 Tj +72 356.48 Td +(is) 6.6451 Tj +-243 TJm +(read) 17.1456 Tj +-242 TJm +(from) 19.3673 Tj +-243 TJm +(the) 12.1743 Tj +-242 TJm +(header) 26.5503 Tj +-243 TJm +(of) 8.2988 Tj +-242 TJm +(the) 12.1743 Tj +-243 TJm +(compressed) 47.0334 Tj +-242 TJm +(\002le,) 15.2229 Tj +-244 TJm +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +275.174 356.48 Td +/F124_0 9.9626 Tf +(bunzip2) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +319.433 356.48 Td +/F122_0 9.9626 Tf +(then) 17.1556 Tj +-243 TJm +(all) 9.9626 Tj +1 TJm +(o) 4.9813 Tj +-1 TJm +(c) 4.4234 Tj +1 TJm +(ates) 15.4918 Tj +-243 TJm +(itself) 19.9252 Tj +-242 TJm +(just) 14.396 Tj +-243 TJm +(enough) 29.3299 Tj +-243 TJm +(memory) 33.2053 Tj +-242 TJm +(to) 7.7509 Tj +-243 TJm +(decompress) 47.0334 Tj +72 344.525 Td +(the) 12.1743 Tj +-303 TJm +(\002le.) 15.2229 Tj +-940 TJm +(Since) 22.1369 Tj +-304 TJm +(block) 22.1369 Tj +-303 TJm +(sizes) 19.3673 Tj +-303 TJm +(are) 12.1643 Tj +-303 TJm +(stored) 24.3486 Tj +-304 TJm +(in) 7.7509 Tj +-303 TJm +(compressed) 47.0334 Tj +-303 TJm +(\002les,) 19.0983 Tj +-317 TJm +(it) 5.5392 Tj +-303 TJm +(follo) 18.8194 Tj +25 TJm +(ws) 11.0684 Tj +-304 TJm +(that) 14.9439 Tj +-303 TJm +(the) 12.1743 Tj +-303 TJm +(\003ags) 18.8194 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +406.35 344.525 Td +/F124_0 9.9626 Tf +(-1) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +421.327 344.525 Td +/F122_0 9.9626 Tf +(to) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +432.1 344.525 Td +/F124_0 9.9626 Tf +(-9) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +447.077 344.525 Td +/F122_0 9.9626 Tf +(are) 12.1643 Tj +-303 TJm +(irrele) 21.0211 Tj +25 TJm +(v) 4.9813 Tj +25 TJm +(ant) 12.1743 Tj +-304 TJm +(to) 7.7509 Tj +-303 TJm +(and) 14.386 Tj +-303 TJm +(so) 8.8568 Tj +72 332.57 Td +(ignored) 30.4357 Tj +-250 TJm +(during) 26.0123 Tj +-250 TJm +(decompression.) 62.2563 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 310.652 Td +(Compression) 52.5826 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(decompression) 59.7656 Tj +-250 TJm +(requirements,) 54.5054 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(bytes,) 23.5217 Tj +-250 TJm +(can) 13.8281 Tj +-250 TJm +(be) 9.4047 Tj +-250 TJm +(estimated) 38.1866 Tj +-250 TJm +(as:) 11.0684 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 247.723] cm +0 0 468 59.776 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 299.131 Td +/F124_0 9.9626 Tf +(Compression:) 71.7307 Tj +-1278 TJm +(400k) 23.9102 Tj +-426 TJm +(+) 5.9776 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(8) 5.9776 Tj +-426 TJm +(x) 5.9776 Tj +-426 TJm +(block) 29.8878 Tj +-426 TJm +(size) 23.9102 Tj +-426 TJm +(\)) 5.9776 Tj +90 275.22 Td +(Decompression:) 83.6858 Tj +-426 TJm +(100k) 23.9102 Tj +-426 TJm +(+) 5.9776 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(4) 5.9776 Tj +-426 TJm +(x) 5.9776 Tj +-426 TJm +(block) 29.8878 Tj +-426 TJm +(size) 23.9102 Tj +-426 TJm +(\),) 11.9551 Tj +-426 TJm +(or) 11.9551 Tj +153.66 263.265 Td +(100k) 23.9102 Tj +-426 TJm +(+) 5.9776 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(2.5) 17.9327 Tj +-426 TJm +(x) 5.9776 Tj +-426 TJm +(block) 29.8878 Tj +-426 TJm +(size) 23.9102 Tj +-426 TJm +(\)) 5.9776 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 225.805 Td +/F122_0 9.9626 Tf +(Lar) 13.8281 Tj +18 TJm +(ger) 12.7222 Tj +-292 TJm +(block) 22.1369 Tj +-292 TJm +(sizes) 19.3673 Tj +-291 TJm +(gi) 7.7509 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-292 TJm +(rapidly) 28.224 Tj +-292 TJm +(diminishing) 47.6113 Tj +-292 TJm +(mar) 15.4918 Tj +18 TJm +(ginal) 19.9252 Tj +-291 TJm +(returns.) 30.1568 Tj +-871 TJm +(Most) 20.4831 Tj +-292 TJm +(of) 8.2988 Tj +-291 TJm +(the) 12.1743 Tj +-292 TJm +(compression) 50.3609 Tj +-292 TJm +(comes) 25.4544 Tj +-292 TJm +(from) 19.3673 Tj +-291 TJm +(the) 12.1743 Tj +-292 TJm +(\002rst) 15.5018 Tj +-292 TJm +(tw) 9.9626 Tj +10 TJm +(o) 4.9813 Tj +-292 TJm +(or) 8.2988 Tj +72 213.85 Td +(three) 19.9152 Tj +-232 TJm +(hundred) 32.6474 Tj +-232 TJm +(k) 4.9813 Tj +-232 TJm +(of) 8.2988 Tj +-232 TJm +(block) 22.1369 Tj +-232 TJm +(size,) 17.9825 Tj +-235 TJm +(a) 4.4234 Tj +-232 TJm +(f) 3.3175 Tj +10 TJm +(act) 11.6164 Tj +-232 TJm +(w) 7.193 Tj +10 TJm +(orth) 16.0497 Tj +-232 TJm +(bearing) 29.8778 Tj +-232 TJm +(in) 7.7509 Tj +-232 TJm +(mind) 20.4831 Tj +-232 TJm +(when) 21.579 Tj +-231 TJm +(using) 21.589 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +354.025 213.85 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +386.223 213.85 Td +/F122_0 9.9626 Tf +(on) 9.9626 Tj +-232 TJm +(small) 21.589 Tj +-232 TJm +(machines.) 40.1194 Tj +-304 TJm +(It) 6.0871 Tj +-232 TJm +(is) 6.6451 Tj +-232 TJm +(also) 16.0497 Tj +-231 TJm +(important) 38.7446 Tj +72 201.895 Td +(to) 7.7509 Tj +-250 TJm +(appreciate) 40.9363 Tj +-250 TJm +(that) 14.9439 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(decompression) 59.7656 Tj +-250 TJm +(memory) 33.2053 Tj +-250 TJm +(requirement) 48.1393 Tj +-250 TJm +(is) 6.6451 Tj +-250 TJm +(set) 11.0684 Tj +-250 TJm +(at) 7.193 Tj +-250 TJm +(compression) 50.3609 Tj +-250 TJm +(time) 17.7135 Tj +-250 TJm +(by) 9.9626 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(choice) 26.0024 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(block) 22.1369 Tj +-250 TJm +(size.) 17.9825 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 179.977 Td +(F) 5.5392 Tj +15 TJm +(or) 8.2988 Tj +-388 TJm +(\002les) 16.6077 Tj +-389 TJm +(compressed) 47.0334 Tj +-388 TJm +(with) 17.7135 Tj +-389 TJm +(the) 12.1743 Tj +-388 TJm +(def) 12.7222 Tj +10 TJm +(ault) 14.9439 Tj +-389 TJm +(900k) 19.9252 Tj +-388 TJm +(block) 22.1369 Tj +-389 TJm +(size,) 17.9825 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +302.002 179.977 Td +/F124_0 9.9626 Tf +(bunzip2) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +347.716 179.977 Td +/F122_0 9.9626 Tf +(will) 15.5018 Tj +-388 TJm +(require) 28.2141 Tj +-389 TJm +(about) 22.1369 Tj +-388 TJm +(3700) 19.9252 Tj +-389 TJm +(kbytes) 26.0123 Tj +-388 TJm +(to) 7.7509 Tj +-389 TJm +(decompress.) 49.5241 Tj +72 168.022 Td +(T) 6.0871 Tj +80 TJm +(o) 4.9813 Tj +-424 TJm +(support) 29.8878 Tj +-425 TJm +(decompression) 59.7656 Tj +-424 TJm +(of) 8.2988 Tj +-424 TJm +(an) 9.4047 Tj +15 TJm +(y) 4.9813 Tj +-425 TJm +(\002l) 8.3088 Tj +1 TJm +(e) 4.4234 Tj +-425 TJm +(on) 9.9626 Tj +-424 TJm +(a) 4.4234 Tj +-424 TJm +(4) 4.9813 Tj +-425 TJm +(me) 12.1743 Tj +15 TJm +(g) 4.9813 Tj +5 TJm +(abyte) 21.579 Tj +-424 TJm +(machine,) 36.2439 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +348.272 168.022 Td +/F124_0 9.9626 Tf +(bunzip2) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +394.342 168.022 Td +/F122_0 9.9626 Tf +(has) 13.2801 Tj +-424 TJm +(an) 9.4047 Tj +-425 TJm +(option) 25.4644 Tj +-424 TJm +(to) 7.7509 Tj +-424 TJm +(decompress) 47.0334 Tj +-424 TJm +(using) 21.589 Tj +72 156.067 Td +(approximately) 57.5539 Tj +-281 TJm +(half) 15.4918 Tj +-281 TJm +(this) 14.396 Tj +-280 TJm +(amount) 29.8878 Tj +-281 TJm +(of) 8.2988 Tj +-281 TJm +(memory) 33.2053 Tj +65 TJm +(,) 2.4907 Tj +-288 TJm +(about) 22.1369 Tj +-281 TJm +(2300) 19.9252 Tj +-281 TJm +(kbytes.) 28.503 Tj +-805 TJm +(Decompression) 61.9773 Tj +-280 TJm +(speed) 22.6848 Tj +-281 TJm +(is) 6.6451 Tj +-281 TJm +(also) 16.0497 Tj +-281 TJm +(halv) 17.1556 Tj +15 TJm +(ed,) 11.8953 Tj +-288 TJm +(so) 8.8568 Tj +-281 TJm +(you) 14.9439 Tj +-281 TJm +(should) 26.5703 Tj +72 144.112 Td +(use) 13.2801 Tj +-250 TJm +(this) 14.396 Tj +-250 TJm +(option) 25.4644 Tj +-250 TJm +(only) 17.7135 Tj +-250 TJm +(where) 24.3386 Tj +-250 TJm +(necessary) 38.7246 Tj +65 TJm +(.) 2.4907 Tj +-620 TJm +(The) 15.4918 Tj +-250 TJm +(rele) 14.9339 Tj +25 TJm +(v) 4.9813 Tj +25 TJm +(ant) 12.1743 Tj +-250 TJm +(\003ag) 14.9439 Tj +-250 TJm +(is) 6.6451 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +305.024 144.112 Td +/F124_0 9.9626 Tf +(-s) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +316.979 144.112 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 122.194 Td +(In) 8.2988 Tj +-204 TJm +(general,) 31.8106 Tj +-214 TJm +(try) 11.0684 Tj +-204 TJm +(and) 14.386 Tj +-205 TJm +(use) 13.2801 Tj +-204 TJm +(the) 12.1743 Tj +-204 TJm +(lar) 10.5105 Tj +18 TJm +(gest) 16.0497 Tj +-205 TJm +(block) 22.1369 Tj +-204 TJm +(size) 15.4918 Tj +-205 TJm +(memory) 33.2053 Tj +-204 TJm +(constraints) 43.1679 Tj +-204 TJm +(allo) 14.9439 Tj +25 TJm +(w) 7.193 Tj +65 TJm +(,) 2.4907 Tj +-214 TJm +(since) 20.4731 Tj +-204 TJm +(that) 14.9439 Tj +-205 TJm +(maximises) 42.62 Tj +-204 TJm +(the) 12.1743 Tj +-204 TJm +(compression) 50.3609 Tj +-205 TJm +(achie) 21.0211 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ed.) 11.8953 Tj +72 110.239 Td +(Compression) 52.5826 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(decompression) 59.7656 Tj +-250 TJm +(speed) 22.6848 Tj +-250 TJm +(are) 12.1643 Tj +-250 TJm +(virtually) 33.7633 Tj +-250 TJm +(unaf) 17.7035 Tj +25 TJm +(fected) 24.3386 Tj +-250 TJm +(by) 9.9626 Tj +-250 TJm +(block) 22.1369 Tj +-250 TJm +(size.) 17.9825 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 88.321 Td +(Another) 32.6474 Tj +-296 TJm +(signi\002cant) 41.5142 Tj +-296 TJm +(point) 20.4831 Tj +-295 TJm +(applies) 28.224 Tj +-296 TJm +(to) 7.7509 Tj +-296 TJm +(\002les) 16.6077 Tj +-296 TJm +(which) 24.3486 Tj +-296 TJm +(\002t) 8.3088 Tj +-296 TJm +(in) 7.7509 Tj +-296 TJm +(a) 4.4234 Tj +-295 TJm +(single) 23.8007 Tj +-296 TJm +(block) 22.1369 Tj +-296 TJm +(--) 6.6351 Tj +-296 TJm +(that) 14.9439 Tj +-296 TJm +(means) 25.4544 Tj +-296 TJm +(most) 19.3773 Tj +-295 TJm +(\002les) 16.6077 Tj +-296 TJm +(you') 18.2614 Tj +50 TJm +(d) 4.9813 Tj +-296 TJm +(encounter) 39.2825 Tj +-296 TJm +(using) 21.589 Tj +-296 TJm +(a) 4.4234 Tj +72 76.366 Td +(lar) 10.5105 Tj +18 TJm +(ge) 9.4047 Tj +-290 TJm +(block) 22.1369 Tj +-290 TJm +(size.) 17.9825 Tj +-859 TJm +(The) 15.4918 Tj +-290 TJm +(amount) 29.8878 Tj +-290 TJm +(of) 8.2988 Tj +-290 TJm +(real) 14.9339 Tj +-290 TJm +(memory) 33.2053 Tj +-289 TJm +(touched) 31.5416 Tj +-290 TJm +(is) 6.6451 Tj +-290 TJm +(proportional) 49.2551 Tj +-290 TJm +(to) 7.7509 Tj +-290 TJm +(the) 12.1743 Tj +-290 TJm +(size) 15.4918 Tj +-290 TJm +(of) 8.2988 Tj +-290 TJm +(the) 12.1743 Tj +-289 TJm +(\002le,) 15.2229 Tj +-300 TJm +(since) 20.4731 Tj +-290 TJm +(the) 12.1743 Tj +-290 TJm +(\002le) 12.7322 Tj +-290 TJm +(is) 6.6451 Tj +-290 TJm +(smaller) 29.3299 Tj +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +539.395 50.951 Td +(5) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 6 9 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +477.109 749.245 Td +/F122_0 9.9626 Tf +(Ho) 12.1743 Tj +25 TJm +(w) 7.193 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(use) 13.2801 Tj +-250 TJm +(bzip2) 22.1369 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +72 710.037 Td +/F122_0 9.9626 Tf +(than) 17.1556 Tj +-362 TJm +(a) 4.4234 Tj +-362 TJm +(block.) 24.6275 Tj +-1293 TJm +(F) 5.5392 Tj +15 TJm +(or) 8.2988 Tj +-362 TJm +(e) 4.4234 Tj +15 TJm +(xample,) 31.8205 Tj +-390 TJm +(compressing) 50.3609 Tj +-362 TJm +(a) 4.4234 Tj +-362 TJm +(\002le) 12.7322 Tj +-362 TJm +(20,000) 27.3972 Tj +-362 TJm +(bytes) 21.031 Tj +-362 TJm +(long) 17.7135 Tj +-362 TJm +(with) 17.7135 Tj +-362 TJm +(the) 12.1743 Tj +-362 TJm +(\003ag) 14.9439 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +406.528 710.037 Td +/F124_0 9.9626 Tf +(-9) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +422.09 710.037 Td +/F122_0 9.9626 Tf +(will) 15.5018 Tj +-362 TJm +(cause) 22.1269 Tj +-362 TJm +(the) 12.1743 Tj +-362 TJm +(compressor) 45.9276 Tj +-362 TJm +(to) 7.7509 Tj +72 698.082 Td +(allocate) 30.9837 Tj +-271 TJm +(around) 27.6661 Tj +-272 TJm +(7600k) 24.9065 Tj +-271 TJm +(of) 8.2988 Tj +-272 TJm +(memory) 33.2053 Tj +65 TJm +(,) 2.4907 Tj +-277 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-271 TJm +(only) 17.7135 Tj +-272 TJm +(touch) 22.1369 Tj +-271 TJm +(400k) 19.9252 Tj +-272 TJm +(+) 5.6189 Tj +-271 TJm +(20000) 24.9065 Tj +-272 TJm +(*) 4.9813 Tj +-271 TJm +(8) 4.9813 Tj +-272 TJm +(=) 5.6189 Tj +-271 TJm +(560) 14.9439 Tj +-272 TJm +(kbytes) 26.0123 Tj +-271 TJm +(of) 8.2988 Tj +-272 TJm +(it.) 8.0299 Tj +-748 TJm +(Similarly) 37.0908 Tj +65 TJm +(,) 2.4907 Tj +-277 TJm +(the) 12.1743 Tj +-272 TJm +(decompressor) 55.3323 Tj +72 686.127 Td +(will) 15.5018 Tj +-250 TJm +(allocate) 30.9837 Tj +-250 TJm +(3700k) 24.9065 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-250 TJm +(only) 17.7135 Tj +-250 TJm +(touch) 22.1369 Tj +-250 TJm +(100k) 19.9252 Tj +-250 TJm +(+) 5.6189 Tj +-250 TJm +(20000) 24.9065 Tj +-250 TJm +(*) 4.9813 Tj +-250 TJm +(4) 4.9813 Tj +-250 TJm +(=) 5.6189 Tj +-250 TJm +(180) 14.9439 Tj +-250 TJm +(kbytes.) 28.503 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 664.209 Td +(Here) 19.3573 Tj +-293 TJm +(is) 6.6451 Tj +-294 TJm +(a) 4.4234 Tj +-293 TJm +(table) 19.3673 Tj +-294 TJm +(which) 24.3486 Tj +-293 TJm +(summarises) 47.0434 Tj +-294 TJm +(the) 12.1743 Tj +-293 TJm +(maximum) 40.4083 Tj +-294 TJm +(memory) 33.2053 Tj +-293 TJm +(usage) 22.6848 Tj +-294 TJm +(for) 11.6164 Tj +-293 TJm +(dif) 11.0684 Tj +25 TJm +(ferent) 23.2328 Tj +-294 TJm +(block) 22.1369 Tj +-293 TJm +(sizes.) 21.8579 Tj +-881 TJm +(Also) 18.8194 Tj +-293 TJm +(recorded) 34.8492 Tj +-294 TJm +(is) 6.6451 Tj +-293 TJm +(the) 12.1743 Tj +-294 TJm +(total) 17.7135 Tj +72 652.254 Td +(compressed) 47.0334 Tj +-289 TJm +(size) 15.4918 Tj +-289 TJm +(for) 11.6164 Tj +-289 TJm +(14) 9.9626 Tj +-289 TJm +(\002les) 16.6077 Tj +-290 TJm +(of) 8.2988 Tj +-289 TJm +(the) 12.1743 Tj +-289 TJm +(Calg) 18.8194 Tj +5 TJm +(ary) 12.7222 Tj +-289 TJm +(T) 6.0871 Tj +70 TJm +(e) 4.4234 Tj +15 TJm +(xt) 7.7509 Tj +-289 TJm +(Compression) 52.5826 Tj +-289 TJm +(Corpus) 28.782 Tj +-289 TJm +(totalling) 33.2153 Tj +-289 TJm +(3,141,622) 39.8504 Tj +-290 TJm +(bytes.) 23.5217 Tj +-854 TJm +(This) 17.7135 Tj +-290 TJm +(column) 29.8878 Tj +-289 TJm +(gi) 7.7509 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(es) 8.2988 Tj +72 640.299 Td +(some) 21.031 Tj +-253 TJm +(feel) 14.9339 Tj +-253 TJm +(for) 11.6164 Tj +-253 TJm +(ho) 9.9626 Tj +25 TJm +(w) 7.193 Tj +-253 TJm +(compression) 50.3609 Tj +-253 TJm +(v) 4.9813 Tj +25 TJm +(aries) 18.8094 Tj +-253 TJm +(with) 17.7135 Tj +-253 TJm +(block) 22.1369 Tj +-253 TJm +(size.) 17.9825 Tj +-638 TJm +(These) 23.7907 Tj +-253 TJm +(\002gures) 27.1182 Tj +-253 TJm +(tend) 17.1556 Tj +-254 TJm +(to) 7.7509 Tj +-253 TJm +(understate) 40.9463 Tj +-253 TJm +(the) 12.1743 Tj +-253 TJm +(adv) 14.386 Tj +25 TJm +(antage) 26.0024 Tj +-253 TJm +(of) 8.2988 Tj +-253 TJm +(lar) 10.5105 Tj +18 TJm +(ger) 12.7222 Tj +-253 TJm +(block) 22.1369 Tj +72 628.344 Td +(sizes) 19.3673 Tj +-250 TJm +(for) 11.6164 Tj +-250 TJm +(lar) 10.5105 Tj +18 TJm +(ger) 12.7222 Tj +-250 TJm +(\002les,) 19.0983 Tj +-250 TJm +(since) 20.4731 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(Corpus) 28.782 Tj +-250 TJm +(is) 6.6451 Tj +-250 TJm +(dominated) 42.0621 Tj +-250 TJm +(by) 9.9626 Tj +-250 TJm +(smaller) 29.3299 Tj +-250 TJm +(\002les.) 19.0983 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 469.773] cm +0 0 468 155.417 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +123.952 616.822 Td +/F124_0 9.9626 Tf +(Compress) 47.8205 Tj +-1278 TJm +(Decompress) 59.7756 Tj +-1278 TJm +(Decompress) 59.7756 Tj +-1278 TJm +(Corpus) 35.8654 Tj +90 604.867 Td +(Flag) 23.9102 Tj +-2130 TJm +(usage) 29.8878 Tj +-2556 TJm +(usage) 29.8878 Tj +-2982 TJm +(-s) 11.9551 Tj +-426 TJm +(usage) 29.8878 Tj +-2130 TJm +(Size) 23.9102 Tj +94.244 580.957 Td +(-1) 11.9551 Tj +-2556 TJm +(1200k) 29.8878 Tj +-2982 TJm +(500k) 23.9102 Tj +-3834 TJm +(350k) 23.9102 Tj +-2556 TJm +(914704) 35.8654 Tj +94.244 569.001 Td +(-2) 11.9551 Tj +-2556 TJm +(2000k) 29.8878 Tj +-2982 TJm +(900k) 23.9102 Tj +-3834 TJm +(600k) 23.9102 Tj +-2556 TJm +(877703) 35.8654 Tj +94.244 557.046 Td +(-3) 11.9551 Tj +-2556 TJm +(2800k) 29.8878 Tj +-2556 TJm +(1300k) 29.8878 Tj +-3834 TJm +(850k) 23.9102 Tj +-2556 TJm +(860338) 35.8654 Tj +94.244 545.091 Td +(-4) 11.9551 Tj +-2556 TJm +(3600k) 29.8878 Tj +-2556 TJm +(1700k) 29.8878 Tj +-3408 TJm +(1100k) 29.8878 Tj +-2556 TJm +(846899) 35.8654 Tj +94.244 533.136 Td +(-5) 11.9551 Tj +-2556 TJm +(4400k) 29.8878 Tj +-2556 TJm +(2100k) 29.8878 Tj +-3408 TJm +(1350k) 29.8878 Tj +-2556 TJm +(845160) 35.8654 Tj +94.244 521.181 Td +(-6) 11.9551 Tj +-2556 TJm +(5200k) 29.8878 Tj +-2556 TJm +(2500k) 29.8878 Tj +-3408 TJm +(1600k) 29.8878 Tj +-2556 TJm +(838626) 35.8654 Tj +94.244 509.225 Td +(-7) 11.9551 Tj +-2556 TJm +(6100k) 29.8878 Tj +-2556 TJm +(2900k) 29.8878 Tj +-3408 TJm +(1850k) 29.8878 Tj +-2556 TJm +(834096) 35.8654 Tj +94.244 497.27 Td +(-8) 11.9551 Tj +-2556 TJm +(6800k) 29.8878 Tj +-2556 TJm +(3300k) 29.8878 Tj +-3408 TJm +(2100k) 29.8878 Tj +-2556 TJm +(828642) 35.8654 Tj +94.244 485.315 Td +(-9) 11.9551 Tj +-2556 TJm +(7600k) 29.8878 Tj +-2556 TJm +(3700k) 29.8878 Tj +-3408 TJm +(2350k) 29.8878 Tj +-2556 TJm +(828642) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 435.021 Td +/F116_0 20.6585 Tf +(2.6.) 34.4584 Tj +-278 TJm +(RECO) 59.6824 Tj +50 TJm +(VERING) 79.2047 Tj +-278 TJm +(D) 14.9154 Tj +40 TJm +(A) 14.9154 Tj +90 TJm +(T) 12.6223 Tj +90 TJm +(A) 14.9154 Tj +-278 TJm +(FR) 27.5378 Tj +20 TJm +(OM) 33.2808 Tj +-278 TJm +(D) 14.9154 Tj +40 TJm +(AMA) 47.0394 Tj +50 TJm +(GED) 44.767 Tj +72 410.23 Td +(FILES) 58.5462 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 388.312 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +105.138 388.312 Td +/F122_0 9.9626 Tf +(compresses) 45.9276 Tj +-326 TJm +(\002les) 16.6077 Tj +-326 TJm +(in) 7.7509 Tj +-326 TJm +(blocks,) 28.503 Tj +-346 TJm +(usually) 28.782 Tj +-326 TJm +(900kbytes) 40.9562 Tj +-326 TJm +(long.) 20.2042 Tj +-1077 TJm +(Each) 19.9152 Tj +-326 TJm +(block) 22.1369 Tj +-326 TJm +(is) 6.6451 Tj +-327 TJm +(handled) 31.5416 Tj +-326 TJm +(independently) 56.4481 Tj +65 TJm +(.) 2.4907 Tj +-1077 TJm +(If) 6.6351 Tj +-326 TJm +(a) 4.4234 Tj +-326 TJm +(media) 24.3486 Tj +-326 TJm +(or) 8.2988 Tj +72 376.357 Td +(transmission) 50.3709 Tj +-319 TJm +(error) 19.3573 Tj +-318 TJm +(causes) 26.0024 Tj +-319 TJm +(a) 4.4234 Tj +-318 TJm +(multi-block) 46.4955 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +234.519 376.357 Td +/F124_0 9.9626 Tf +(.bz2) 23.9102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +261.603 376.357 Td +/F122_0 9.9626 Tf +(\002le) 12.7322 Tj +-319 TJm +(to) 7.7509 Tj +-318 TJm +(become) 30.9837 Tj +-319 TJm +(damaged,) 38.4556 Tj +-336 TJm +(i) 2.7696 Tj +1 TJm +(t) 2.7696 Tj +-319 TJm +(may) 17.1556 Tj +-319 TJm +(be) 9.4047 Tj +-318 TJm +(possible) 32.6574 Tj +-319 TJm +(to) 7.7509 Tj +-318 TJm +(reco) 17.1456 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(er) 7.7409 Tj +-319 TJm +(data) 16.5977 Tj +-319 TJm +(from) 19.3673 Tj +-318 TJm +(the) 12.1743 Tj +72 364.402 Td +(undamaged) 45.9276 Tj +-250 TJm +(blocks) 26.0123 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(\002le.) 15.2229 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 342.484 Td +(The) 15.4918 Tj +-358 TJm +(compressed) 47.0334 Tj +-357 TJm +(representation) 56.4381 Tj +-358 TJm +(of) 8.2988 Tj +-357 TJm +(each) 18.2515 Tj +-358 TJm +(block) 22.1369 Tj +-358 TJm +(is) 6.6451 Tj +-357 TJm +(delimited) 37.6387 Tj +-358 TJm +(by) 9.9626 Tj +-357 TJm +(a) 4.4234 Tj +-358 TJm +(48-bit) 23.8007 Tj +-358 TJm +(pattern,) 30.1568 Tj +-384 TJm +(which) 24.3486 Tj +-358 TJm +(mak) 17.1556 Tj +10 TJm +(es) 8.2988 Tj +-357 TJm +(it) 5.5392 Tj +-358 TJm +(possible) 32.6574 Tj +-357 TJm +(to) 7.7509 Tj +-358 TJm +(\002nd) 15.5018 Tj +-358 TJm +(the) 12.1743 Tj +72 330.529 Td +(block) 22.1369 Tj +-286 TJm +(boundaries) 43.7159 Tj +-286 TJm +(with) 17.7135 Tj +-285 TJm +(reasonable) 42.6001 Tj +-286 TJm +(certainty) 34.8591 Tj +65 TJm +(.) 2.4907 Tj +-835 TJm +(Each) 19.9152 Tj +-285 TJm +(block) 22.1369 Tj +-286 TJm +(also) 16.0497 Tj +-286 TJm +(carries) 26.5503 Tj +-286 TJm +(its) 9.4147 Tj +-285 TJm +(o) 4.9813 Tj +25 TJm +(wn) 12.1743 Tj +-286 TJm +(32-bit) 23.8007 Tj +-286 TJm +(CRC,) 22.4258 Tj +-286 TJm +(so) 8.8568 Tj +-285 TJm +(damaged) 35.965 Tj +-286 TJm +(blocks) 26.0123 Tj +-286 TJm +(can) 13.8281 Tj +-286 TJm +(be) 9.4047 Tj +72 318.574 Td +(distinguished) 53.1405 Tj +-250 TJm +(from) 19.3673 Tj +-250 TJm +(undamaged) 45.9276 Tj +-250 TJm +(ones.) 20.7521 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 296.656 Td +/F124_0 9.9626 Tf +(bzip2recover) 71.7307 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +146.448 296.656 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-273 TJm +(a) 4.4234 Tj +-272 TJm +(simple) 26.5703 Tj +-273 TJm +(program) 33.7533 Tj +-273 TJm +(whose) 25.4544 Tj +-272 TJm +(purpose) 31.5416 Tj +-273 TJm +(is) 6.6451 Tj +-273 TJm +(to) 7.7509 Tj +-272 TJm +(search) 25.4445 Tj +-273 TJm +(for) 11.6164 Tj +-273 TJm +(blocks) 26.0123 Tj +-272 TJm +(in) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +392.655 296.656 Td +/F124_0 9.9626 Tf +(.bz2) 23.9102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +419.282 296.656 Td +/F122_0 9.9626 Tf +(\002les,) 19.0983 Tj +-278 TJm +(and) 14.386 Tj +-273 TJm +(write) 20.4731 Tj +-273 TJm +(each) 18.2515 Tj +-272 TJm +(block) 22.1369 Tj +-273 TJm +(out) 12.7322 Tj +72 284.701 Td +(into) 15.5018 Tj +-255 TJm +(i) 2.7696 Tj +1 TJm +(ts) 6.6451 Tj +-255 TJm +(o) 4.9813 Tj +25 TJm +(wn) 12.1743 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +121.429 284.701 Td +/F124_0 9.9626 Tf +(.bz2) 23.9102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +147.875 284.701 Td +/F122_0 9.9626 Tf +(\002le.) 15.2229 Tj +-647 TJm +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-255 TJm +(can) 13.8281 Tj +-254 TJm +(then) 17.1556 Tj +-255 TJm +(use) 13.2801 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +240.01 284.701 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +-600 TJm +(-t) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +290.367 284.701 Td +/F122_0 9.9626 Tf +(to) 7.7509 Tj +-254 TJm +(test) 13.8381 Tj +-255 TJm +(the) 12.1743 Tj +-254 TJm +(inte) 14.9439 Tj +15 TJm +(grity) 18.8194 Tj +-255 TJm +(of) 8.2988 Tj +-254 TJm +(the) 12.1743 Tj +-255 TJm +(resulting) 34.8691 Tj +-254 TJm +(\002les,) 19.0983 Tj +-256 TJm +(and) 14.386 Tj +-255 TJm +(decompress) 47.0334 Tj +-254 TJm +(those) 21.031 Tj +72 272.746 Td +(which) 24.3486 Tj +-250 TJm +(are) 12.1643 Tj +-250 TJm +(undamaged.) 48.4182 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 250.828 Td +/F124_0 9.9626 Tf +(bzip2recover) 71.7307 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +150.099 250.828 Td +/F122_0 9.9626 Tf +(tak) 12.1743 Tj +10 TJm +(es) 8.2988 Tj +-639 TJm +(a) 4.4234 Tj +-639 TJm +(single) 23.8007 Tj +-639 TJm +(ar) 7.7409 Tj +18 TJm +(gument,) 32.3785 Tj +-737 TJm +(the) 12.1743 Tj +-639 TJm +(name) 21.579 Tj +-639 TJm +(of) 8.2988 Tj +-639 TJm +(the) 12.1743 Tj +-639 TJm +(damaged) 35.965 Tj +-639 TJm +(\002le,) 15.2229 Tj +-737 TJm +(and) 14.386 Tj +-639 TJm +(writes) 24.3486 Tj +-639 TJm +(a) 4.4234 Tj +-639 TJm +(number) 30.4357 Tj +-639 TJm +(of) 8.2988 Tj +-640 TJm +(\002) 5.5392 Tj +1 TJm +(les) 11.0684 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 238.873 Td +/F124_0 9.9626 Tf +(rec0001file.bz2) 89.6634 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +161.664 238.873 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +169.072 238.873 Td +/F124_0 9.9626 Tf +(rec0002file.bz2) 89.6634 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +258.736 238.873 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-494 TJm +(etc,) 14.107 Tj +-493 TJm +(containing) 42.0621 Tj +-445 TJm +(the) 12.1743 Tj +-445 TJm +(e) 4.4234 Tj +15 TJm +(xtracted) 32.0895 Tj +-445 TJm +(blocks.) 28.503 Tj +-1789 TJm +(The) 15.4918 Tj +-445 TJm +(output) 25.4644 Tj +-445 TJm +(\002lenames) 38.1866 Tj +-445 TJm +(are) 12.1643 Tj +72 226.918 Td +(designed) 35.417 Tj +-337 TJm +(so) 8.8568 Tj +-337 TJm +(that) 14.9439 Tj +-337 TJm +(the) 12.1743 Tj +-337 TJm +(use) 13.2801 Tj +-337 TJm +(of) 8.2988 Tj +-337 TJm +(wildc) 22.1369 Tj +1 TJm +(ards) 16.5977 Tj +-337 TJm +(in) 7.7509 Tj +-337 TJm +(subsequent) 44.2738 Tj +-337 TJm +(processing) 42.61 Tj +-337 TJm +(--) 6.6351 Tj +-337 TJm +(for) 11.6164 Tj +-337 TJm +(e) 4.4234 Tj +15 TJm +(xample,) 31.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +396.538 226.918 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +-600 TJm +(-dc) 17.9327 Tj +-600 TJm +(rec) 17.9327 Tj +474.247 225.174 Td +(*) 5.9776 Tj +480.224 226.918 Td +(file.bz2) 47.8205 Tj +-600 TJm +(>) 5.9776 Tj +72 214.962 Td +(recovered_data) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +158.177 214.962 Td +/F122_0 9.9626 Tf +(--) 6.6351 Tj +-250 TJm +(lists) 16.0597 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(\002les) 16.6077 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(correct) 27.6562 Tj +-250 TJm +(order) 21.0211 Tj +55 TJm +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 193.045 Td +/F124_0 9.9626 Tf +(bzip2recover) 71.7307 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +145.93 193.045 Td +/F122_0 9.9626 Tf +(should) 26.5703 Tj +-221 TJm +(be) 9.4047 Tj +-220 TJm +(of) 8.2988 Tj +-221 TJm +(most) 19.3773 Tj +-221 TJm +(use) 13.2801 Tj +-220 TJm +(dealing) 29.3299 Tj +-221 TJm +(with) 17.7135 Tj +-221 TJm +(lar) 10.5105 Tj +18 TJm +(ge) 9.4047 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +307.229 193.045 Td +/F124_0 9.9626 Tf +(.bz2) 23.9102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +333.338 193.045 Td +/F122_0 9.9626 Tf +(\002les,) 19.0983 Tj +-227 TJm +(as) 8.2988 Tj +-220 TJm +(these) 20.4731 Tj +-221 TJm +(will) 15.5018 Tj +-221 TJm +(contain) 29.3299 Tj +-220 TJm +(man) 17.1556 Tj +15 TJm +(y) 4.9813 Tj +-221 TJm +(blocks.) 28.503 Tj +-600 TJm +(It) 6.0871 Tj +-221 TJm +(is) 6.6451 Tj +-221 TJm +(clearly) 27.1082 Tj +72 181.089 Td +(futile) 21.031 Tj +-289 TJm +(to) 7.7509 Tj +-289 TJm +(use) 13.2801 Tj +-289 TJm +(it) 5.5392 Tj +-289 TJm +(on) 9.9626 Tj +-289 TJm +(damaged) 35.965 Tj +-289 TJm +(single-block) 49.2551 Tj +-290 TJm +(\002les) 16.6077 Tj +1 TJm +(,) 2.4907 Tj +-299 TJm +(since) 20.4731 Tj +-289 TJm +(a) 4.4234 Tj +-290 TJm +(damaged) 35.965 Tj +-289 TJm +(block) 22.1369 Tj +-289 TJm +(cannot) 26.5603 Tj +-289 TJm +(be) 9.4047 Tj +-289 TJm +(reco) 17.1456 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(ered.) 19.6363 Tj +-854 TJm +(If) 6.6351 Tj +-289 TJm +(you) 14.9439 Tj +-290 TJm +(wish) 18.8194 Tj +-289 TJm +(to) 7.7509 Tj +-289 TJm +(minimise) 37.0908 Tj +72 169.134 Td +(an) 9.4047 Tj +15 TJm +(y) 4.9813 Tj +-320 TJm +(potential) 34.8691 Tj +-320 TJm +(data) 16.5977 Tj +-319 TJm +(loss) 15.5018 Tj +-320 TJm +(through) 30.9936 Tj +-320 TJm +(media) 24.3486 Tj +-320 TJm +(or) 8.2988 Tj +-319 TJm +(transmission) 50.3709 Tj +-320 TJm +(errors,) 25.7234 Tj +-337 TJm +(you) 14.9439 Tj +-320 TJm +(might) 23.2527 Tj +-320 TJm +(consider) 33.7533 Tj +-320 TJm +(compressing) 50.3609 Tj +-319 TJm +(with) 17.7135 Tj +-320 TJm +(a) 4.4234 Tj +-320 TJm +(smaller) 29.3299 Tj +-320 TJm +(block) 22.1369 Tj +72 157.179 Td +(size.) 17.9825 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 122.426 Td +/F116_0 20.6585 Tf +(2.7.) 34.4584 Tj +-278 TJm +(PERFORMANCE) 161.818 Tj +-278 TJm +(NO) 30.9878 Tj +40 TJm +(TES) 40.1808 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 100.508 Td +/F122_0 9.9626 Tf +(The) 15.4918 Tj +-305 TJm +(sorting) 27.6761 Tj +-304 TJm +(phase) 22.6848 Tj +-305 TJm +(of) 8.2988 Tj +-304 TJm +(compression) 50.3609 Tj +-305 TJm +(g) 4.9813 Tj +5 TJm +(athers) 23.7907 Tj +-304 TJm +(together) 32.6474 Tj +-305 TJm +(similar) 27.6761 Tj +-304 TJm +(strings) 26.5703 Tj +-305 TJm +(in) 7.7509 Tj +-304 TJm +(the) 12.1743 Tj +-305 TJm +(\002le.) 15.2229 Tj +-947 TJm +(Because) 33.1954 Tj +-305 TJm +(of) 8.2988 Tj +-304 TJm +(this,) 16.8866 Tj +-319 TJm +(\002les) 16.6077 Tj +-304 TJm +(containing) 42.0621 Tj +-305 TJm +(v) 4.9813 Tj +15 TJm +(ery) 12.7222 Tj +72 88.553 Td +(long) 17.7135 Tj +-286 TJm +(runs) 17.1556 Tj +-285 TJm +(of) 8.2988 Tj +-286 TJm +(repeated) 33.7433 Tj +-285 TJm +(symbols,) 35.706 Tj +-295 TJm +(lik) 10.5205 Tj +10 TJm +(e) 4.4234 Tj +-286 TJm +("aabaabaabaab) 59.3771 Tj +-285 TJm +(...") 11.5367 Tj +-571 TJm +(\(repeated) 37.0609 Tj +-286 TJm +(se) 8.2988 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(eral) 14.9339 Tj +-286 TJm +(hundred) 32.6474 Tj +-285 TJm +(times\)) 24.9065 Tj +-286 TJm +(may) 17.1556 Tj +-286 TJm +(com) 17.1556 Tj +1 TJm +(press) 20.4731 Tj +-286 TJm +(more) 20.4731 Tj +-286 TJm +(slo) 11.6264 Tj +25 TJm +(wly) 14.9439 Tj +72 76.598 Td +(than) 17.1556 Tj +-322 TJm +(normal.) 30.7147 Tj +-524 TJm +(V) 7.193 Tj +111 TJm +(ersions) 28.224 Tj +-322 TJm +(0.9.5) 19.9252 Tj +-321 TJm +(and) 14.386 Tj +-322 TJm +(abo) 14.386 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-322 TJm +(f) 3.3175 Tj +10 TJm +(are) 12.1643 Tj +-321 TJm +(much) 22.1369 Tj +-322 TJm +(better) 22.6848 Tj +-321 TJm +(than) 17.1556 Tj +-322 TJm +(pre) 12.7222 Tj +25 TJm +(vious) 21.589 Tj +-321 TJm +(v) 4.9813 Tj +15 TJm +(ersions) 28.224 Tj +-322 TJm +(in) 7.7509 Tj +-322 TJm +(this) 14.396 Tj +-321 TJm +(respect.) 30.7047 Tj +-1050 TJm +(The) 15.4918 Tj +-321 TJm +(ratio) 18.2614 Tj +-322 TJm +(between) 33.1954 Tj +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +539.395 50.951 Td +(6) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 7 10 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +477.109 749.245 Td +/F122_0 9.9626 Tf +(Ho) 12.1743 Tj +25 TJm +(w) 7.193 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(use) 13.2801 Tj +-250 TJm +(bzip2) 22.1369 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +72 710.037 Td +/F122_0 9.9626 Tf +(w) 7.193 Tj +10 TJm +(orst-case) 35.4071 Tj +-289 TJm +(and) 14.386 Tj +-290 TJm +(a) 4.4234 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(erage-case) 42.0322 Tj +-289 TJm +(compression) 50.3609 Tj +-290 TJm +(time) 17.7135 Tj +-289 TJm +(is) 6.6451 Tj +-290 TJm +(in) 7.7509 Tj +-289 TJm +(the) 12.1743 Tj +-290 TJm +(re) 7.7409 Tj +15 TJm +(gion) 17.7135 Tj +-289 TJm +(of) 8.2988 Tj +-289 TJm +(10:1.) 20.2042 Tj +-857 TJm +(F) 5.5392 Tj +15 TJm +(or) 8.2988 Tj +-290 TJm +(pre) 12.7222 Tj +25 TJm +(vious) 21.589 Tj +-289 TJm +(v) 4.9813 Tj +15 TJm +(ersions,) 30.7147 Tj +-299 TJm +(this) 14.396 Tj +-290 TJm +(\002gure) 23.2427 Tj +-289 TJm +(w) 7.193 Tj +10 TJm +(as) 8.2988 Tj +-290 TJm +(more) 20.4731 Tj +72 698.082 Td +(lik) 10.5205 Tj +10 TJm +(e) 4.4234 Tj +-250 TJm +(100:1.) 25.1855 Tj +-620 TJm +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-250 TJm +(can) 13.8281 Tj +-250 TJm +(use) 13.2801 Tj +-250 TJm +(the) 12.1743 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +186.002 698.082 Td +/F124_0 9.9626 Tf +(-vvvv) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +218.38 698.082 Td +/F122_0 9.9626 Tf +(option) 25.4644 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(monitor) 31.5516 Tj +-250 TJm +(progress) 33.7533 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(great) 19.9152 Tj +-250 TJm +(detail,) 24.6275 Tj +-250 TJm +(if) 6.0871 Tj +-250 TJm +(you) 14.9439 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(ant.) 14.6649 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 676.164 Td +(Decompression) 61.9773 Tj +-250 TJm +(speed) 22.6848 Tj +-250 TJm +(is) 6.6451 Tj +-250 TJm +(unaf) 17.7035 Tj +25 TJm +(fected) 24.3386 Tj +-250 TJm +(by) 9.9626 Tj +-250 TJm +(these) 20.4731 Tj +-250 TJm +(phenomena.) 48.4182 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 654.247 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +104.863 654.247 Td +/F122_0 9.9626 Tf +(usually) 28.782 Tj +-299 TJm +(allocates) 34.8591 Tj +-298 TJm +(se) 8.2988 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(eral) 14.9339 Tj +-299 TJm +(me) 12.1743 Tj +15 TJm +(g) 4.9813 Tj +5 TJm +(abytes) 25.4544 Tj +-298 TJm +(of) 8.2988 Tj +-299 TJm +(memory) 33.2053 Tj +-299 TJm +(to) 7.7509 Tj +-298 TJm +(operate) 29.3199 Tj +-299 TJm +(in,) 10.2416 Tj +-311 TJm +(and) 14.386 Tj +-298 TJm +(then) 17.1556 Tj +-299 TJm +(char) 17.1456 Tj +18 TJm +(ges) 13.2801 Tj +-298 TJm +(all) 9.9626 Tj +-299 TJm +(o) 4.9813 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(er) 7.7409 Tj +-299 TJm +(it) 5.5392 Tj +-298 TJm +(in) 7.7509 Tj +-299 TJm +(a) 4.4234 Tj +-298 TJm +(f) 3.3175 Tj +10 TJm +(airly) 18.2614 Tj +-299 TJm +(random) 30.4357 Tj +72 642.291 Td +(f) 3.3175 Tj +10 TJm +(ashion.) 28.503 Tj +-743 TJm +(This) 17.7135 Tj +-270 TJm +(means) 25.4544 Tj +-271 TJm +(that) 14.9439 Tj +-270 TJm +(performance,) 52.8317 Tj +-276 TJm +(both) 17.7135 Tj +-270 TJm +(for) 11.6164 Tj +-271 TJm +(compressing) 50.3609 Tj +-270 TJm +(and) 14.386 Tj +-271 TJm +(decompressing,) 62.2563 Tj +-275 TJm +(is) 6.6451 Tj +-271 TJm +(lar) 10.5105 Tj +18 TJm +(gely) 17.1556 Tj +-270 TJm +(determined) 44.8217 Tj +-271 TJm +(by) 9.9626 Tj +-270 TJm +(the) 12.1743 Tj +-271 TJm +(speed) 22.6848 Tj +72 630.336 Td +(at) 7.193 Tj +-294 TJm +(which) 24.3486 Tj +-294 TJm +(your) 18.2614 Tj +-294 TJm +(machine) 33.7533 Tj +-295 TJm +(ca) 8.8468 Tj +1 TJm +(n) 4.9813 Tj +-295 TJm +(service) 28.2141 Tj +-294 TJm +(cache) 22.6749 Tj +-294 TJm +(misses.) 29.0609 Tj +-442 TJm +(Because) 33.1954 Tj +-294 TJm +(of) 8.2988 Tj +-294 TJm +(this,) 16.8866 Tj +-306 TJm +(small) 21.589 Tj +-294 TJm +(changes) 32.0895 Tj +-294 TJm +(to) 7.7509 Tj +-294 TJm +(the) 12.1743 Tj +-294 TJm +(code) 18.8094 Tj +-294 TJm +(to) 7.7509 Tj +-294 TJm +(reduce) 26.5503 Tj +-294 TJm +(the) 12.1743 Tj +-295 TJm +(miss) 18.2714 Tj +-294 TJm +(rate) 14.9339 Tj +72 618.381 Td +(ha) 9.4047 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-253 TJm +(been) 18.8094 Tj +-253 TJm +(observ) 26.5603 Tj +15 TJm +(ed) 9.4047 Tj +-253 TJm +(to) 7.7509 Tj +-253 TJm +(gi) 7.7509 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-253 TJm +(disproportionately) 73.0557 Tj +-253 TJm +(lar) 10.5105 Tj +18 TJm +(ge) 9.4047 Tj +-253 TJm +(performance) 50.341 Tj +-253 TJm +(impro) 23.8007 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(ements.) 30.7147 Tj +-639 TJm +(I) 3.3175 Tj +-253 TJm +(imagine) 32.0995 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +438.909 618.381 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +471.318 618.381 Td +/F122_0 9.9626 Tf +(will) 15.5018 Tj +-253 TJm +(perform) 32.0895 Tj +-253 TJm +(best) 16.0497 Tj +72 606.426 Td +(on) 9.9626 Tj +-250 TJm +(machines) 37.6287 Tj +-250 TJm +(with) 17.7135 Tj +-250 TJm +(v) 4.9813 Tj +15 TJm +(ery) 12.7222 Tj +-250 TJm +(lar) 10.5105 Tj +18 TJm +(ge) 9.4047 Tj +-250 TJm +(caches.) 29.041 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 571.673 Td +/F116_0 20.6585 Tf +(2.8.) 34.4584 Tj +-278 TJm +(CA) 29.8309 Tj +80 TJm +(VEA) 42.4739 Tj +90 TJm +(TS) 26.4016 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 549.755 Td +/F122_0 9.9626 Tf +(I/O) 13.2801 Tj +-268 TJm +(error) 19.3573 Tj +-267 TJm +(messages) 37.6287 Tj +-268 TJm +(are) 12.1643 Tj +-268 TJm +(not) 12.7322 Tj +-268 TJm +(as) 8.2988 Tj +-267 TJm +(helpful) 28.224 Tj +-268 TJm +(as) 8.2988 Tj +-268 TJm +(the) 12.1743 Tj +15 TJm +(y) 4.9813 Tj +-267 TJm +(could) 22.1369 Tj +-268 TJm +(be.) 11.8953 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +293.313 549.755 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +325.868 549.755 Td +/F122_0 9.9626 Tf +(tries) 17.1556 Tj +-268 TJm +(hard) 17.7035 Tj +-267 TJm +(to) 7.7509 Tj +-268 TJm +(detect) 23.7907 Tj +-268 TJm +(I/O) 13.2801 Tj +-268 TJm +(errors) 23.2328 Tj +-267 TJm +(and) 14.386 Tj +-268 TJm +(e) 4.4234 Tj +15 TJm +(xit) 10.5205 Tj +-268 TJm +(cleanly) 28.772 Tj +65 TJm +(,) 2.4907 Tj +-272 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-268 TJm +(the) 12.1743 Tj +72 537.8 Td +(details) 26.0123 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(what) 19.3673 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(problem) 33.2053 Tj +-250 TJm +(is) 6.6451 Tj +-250 TJm +(sometimes) 42.62 Tj +-250 TJm +(seem) 20.4731 Tj +-250 TJm +(rather) 23.2328 Tj +-250 TJm +(misleading.) 46.2165 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 515.882 Td +(This) 17.7135 Tj +-280 TJm +(manual) 29.3299 Tj +-279 TJm +(page) 18.8094 Tj +-280 TJm +(pertains) 31.5416 Tj +-280 TJm +(to) 7.7509 Tj +-279 TJm +(v) 4.9813 Tj +15 TJm +(ersion) 24.3486 Tj +-280 TJm +(1.0.6) 19.9252 Tj +-280 TJm +(of) 8.2988 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +256.84 515.882 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +286.728 515.882 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +-798 TJm +(Compressed) 49.2551 Tj +-280 TJm +(data) 16.5977 Tj +-279 TJm +(created) 28.762 Tj +-280 TJm +(by) 9.9626 Tj +-280 TJm +(this) 14.396 Tj +-279 TJm +(v) 4.9813 Tj +15 TJm +(ersion) 24.3486 Tj +-280 TJm +(is) 6.6451 Tj +-280 TJm +(entirely) 30.4357 Tj +-279 TJm +(forw) 18.8094 Tj +10 TJm +(ards) 16.5977 Tj +72 503.927 Td +(and) 14.386 Tj +-294 TJm +(backw) 26.0024 Tj +10 TJm +(ards) 16.5977 Tj +-293 TJm +(compatible) 44.2738 Tj +-294 TJm +(with) 17.7135 Tj +-294 TJm +(the) 12.1743 Tj +-293 TJm +(pre) 12.7222 Tj +25 TJm +(vious) 21.589 Tj +-294 TJm +(public) 24.9065 Tj +-294 TJm +(releases,) 34.0223 Tj +-304 TJm +(v) 4.9813 Tj +15 TJm +(ersions) 28.224 Tj +-294 TJm +(0.1pl2,) 27.6761 Tj +-305 TJm +(0.9.0) 19.9252 Tj +-293 TJm +(and) 14.386 Tj +-294 TJm +(0.9.5,) 22.4159 Tj +-305 TJm +(1.0.0,) 22.4159 Tj +-304 TJm +(1.0.1,) 22.4159 Tj +-305 TJm +(1.0.2) 19.9252 Tj +-294 TJm +(and) 14.386 Tj +72 491.972 Td +(1.0.3,) 22.4159 Tj +-263 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-260 TJm +(with) 17.7135 Tj +-260 TJm +(the) 12.1743 Tj +-260 TJm +(follo) 18.8194 Tj +25 TJm +(wing) 19.9252 Tj +-260 TJm +(e) 4.4234 Tj +15 TJm +(xception:) 37.0808 Tj +-330 TJm +(0.9.0) 19.9252 Tj +-260 TJm +(and) 14.386 Tj +-260 TJm +(abo) 14.386 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-260 TJm +(can) 13.8281 Tj +-260 TJm +(correctly) 35.4071 Tj +-260 TJm +(decompress) 47.0334 Tj +-260 TJm +(multiple) 33.2153 Tj +-260 TJm +(concatenated) 52.0048 Tj +-260 TJm +(compressed) 47.0334 Tj +72 480.017 Td +(\002les.) 19.0983 Tj +-310 TJm +(0.1pl2) 25.1855 Tj +-250 TJm +(cannot) 26.5603 Tj +-250 TJm +(do) 9.9626 Tj +-250 TJm +(this;) 17.1656 Tj +-250 TJm +(it) 5.5392 Tj +-250 TJm +(will) 15.5018 Tj +-250 TJm +(stop) 16.6077 Tj +-250 TJm +(after) 18.2515 Tj +-250 TJm +(decompressing) 59.7656 Tj +-250 TJm +(just) 14.396 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(\002rst) 15.5018 Tj +-250 TJm +(\002le) 12.7322 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(stream.) 29.0509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 458.099 Td +/F124_0 9.9626 Tf +(bzip2recover) 71.7307 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +146.174 458.099 Td +/F122_0 9.9626 Tf +(v) 4.9813 Tj +15 TJm +(ersions) 28.224 Tj +-245 TJm +(prior) 19.3673 Tj +-245 TJm +(to) 7.7509 Tj +-245 TJm +(1.0.2) 19.9252 Tj +-246 TJm +(used) 18.2614 Tj +-245 TJm +(32-bit) 23.8007 Tj +-245 TJm +(inte) 14.9439 Tj +15 TJm +(gers) 16.5977 Tj +-245 TJm +(to) 7.7509 Tj +-245 TJm +(represent) 36.5129 Tj +-245 TJm +(bit) 10.5205 Tj +-246 TJm +(positions) 35.9849 Tj +-245 TJm +(in) 7.7509 Tj +-245 TJm +(compressed) 47.0334 Tj +-245 TJm +(\002les,) 19.0983 Tj +-246 TJm +(so) 8.8568 Tj +-245 TJm +(it) 5.5392 Tj +-245 TJm +(could) 22.1369 Tj +72 446.144 Td +(not) 12.7322 Tj +-384 TJm +(handle) 26.5603 Tj +-383 TJm +(compressed) 47.0334 Tj +-384 TJm +(\002les) 16.6077 Tj +-383 TJm +(more) 20.4731 Tj +-384 TJm +(than) 17.1556 Tj +-383 TJm +(512) 14.9439 Tj +-384 TJm +(me) 12.1743 Tj +15 TJm +(g) 4.9813 Tj +5 TJm +(abytes) 25.4544 Tj +-383 TJm +(long.) 20.2042 Tj +-1421 TJm +(V) 7.193 Tj +111 TJm +(ersions) 28.224 Tj +-384 TJm +(1.0.2) 19.9252 Tj +-383 TJm +(and) 14.386 Tj +-384 TJm +(abo) 14.386 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-384 TJm +(use) 13.2801 Tj +-383 TJm +(64-bit) 23.8007 Tj +-384 TJm +(ints) 14.396 Tj +-383 TJm +(on) 9.9626 Tj +-384 TJm +(some) 21.031 Tj +72 434.189 Td +(platforms) 38.1866 Tj +-245 TJm +(which) 24.3486 Tj +-246 TJm +(support) 29.8878 Tj +-245 TJm +(them) 19.9252 Tj +-246 TJm +(\(GNU) 24.8965 Tj +-245 TJm +(supported) 39.2925 Tj +-245 TJm +(tar) 10.5105 Tj +18 TJm +(gets,) 18.5404 Tj +-247 TJm +(and) 14.386 Tj +-245 TJm +(W) 9.4047 Tj +40 TJm +(indo) 17.7135 Tj +25 TJm +(ws\).) 16.8766 Tj +-309 TJm +(T) 6.0871 Tj +80 TJm +(o) 4.9813 Tj +-245 TJm +(establish) 34.8691 Tj +-245 TJm +(whether) 32.0895 Tj +-246 TJm +(or) 8.2988 Tj +-245 TJm +(not) 12.7322 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +468.269 434.189 Td +/F124_0 9.9626 Tf +(bzip2recover) 71.7307 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 422.233 Td +/F122_0 9.9626 Tf +(w) 7.193 Tj +10 TJm +(as) 8.2988 Tj +-255 TJm +(b) 4.9813 Tj +20 TJm +(uilt) 13.2901 Tj +-255 TJm +(with) 17.7135 Tj +-255 TJm +(such) 18.2614 Tj +-255 TJm +(a) 4.4234 Tj +-255 TJm +(limitation,) 41.2452 Tj +-256 TJm +(run) 13.2801 Tj +-255 TJm +(it) 5.5392 Tj +-255 TJm +(without) 30.4457 Tj +-255 TJm +(ar) 7.7409 Tj +18 TJm +(guments.) 36.2539 Tj +-325 TJm +(In) 8.2988 Tj +-255 TJm +(an) 9.4047 Tj +15 TJm +(y) 4.9813 Tj +-256 TJm +(e) 4.4234 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ent) 12.1743 Tj +-255 TJm +(you) 14.9439 Tj +-255 TJm +(can) 13.8281 Tj +-255 TJm +(b) 4.9813 Tj +20 TJm +(uild) 15.5018 Tj +-255 TJm +(yourself) 32.6474 Tj +-255 TJm +(an) 9.4047 Tj +-255 TJm +(unlimited) 38.1966 Tj +-255 TJm +(v) 4.9813 Tj +15 TJm +(ersion) 24.3486 Tj +-255 TJm +(if) 6.0871 Tj +72 410.278 Td +(you) 14.9439 Tj +-250 TJm +(can) 13.8281 Tj +-250 TJm +(recompile) 39.8404 Tj +-250 TJm +(it) 5.5392 Tj +-250 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +176.318 410.278 Td +/F124_0 9.9626 Tf +(MaybeUInt64) 65.7532 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +244.562 410.278 Td +/F122_0 9.9626 Tf +(set) 11.0684 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(be) 9.4047 Tj +-250 TJm +(an) 9.4047 Tj +-250 TJm +(unsigned) 35.9749 Tj +-250 TJm +(64-bit) 23.8007 Tj +-250 TJm +(inte) 14.9439 Tj +15 TJm +(ger) 12.7222 Tj +55 TJm +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 375.525 Td +/F116_0 20.6585 Tf +(2.9.) 34.4584 Tj +-278 TJm +(A) 14.9154 Tj +50 TJm +(UTHOR) 73.441 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 353.607 Td +/F122_0 9.9626 Tf +(Julian) 23.8007 Tj +-250 TJm +(Se) 9.9626 Tj +25 TJm +(w) 7.193 Tj +10 TJm +(ard,) 15.2129 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +132.801 353.607 Td +/F124_0 9.9626 Tf +(jseward@bzip.org) 95.641 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 331.69 Td +/F122_0 9.9626 Tf +(The) 15.4918 Tj +-299 TJm +(ideas) 20.4731 Tj +-300 TJm +(embodied) 39.2925 Tj +-299 TJm +(in) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +166.942 331.69 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +199.813 331.69 Td +/F122_0 9.9626 Tf +(are) 12.1643 Tj +-299 TJm +(du) 9.9626 Tj +-1 TJm +(e) 4.4234 Tj +-299 TJm +(to) 7.7509 Tj +-299 TJm +(\(at) 10.5105 Tj +-300 TJm +(least\)) 21.579 Tj +-299 TJm +(the) 12.1743 Tj +-300 TJm +(follo) 18.8194 Tj +25 TJm +(wing) 19.9252 Tj +-299 TJm +(people:) 29.3299 Tj +-409 TJm +(Michael) 32.6474 Tj +-300 TJm +(Burro) 23.2427 Tj +25 TJm +(ws) 11.0684 Tj +-299 TJm +(and) 14.386 Tj +-300 TJm +(Da) 11.6164 Tj +20 TJm +(vid) 12.7322 Tj +-299 TJm +(Wheeler) 33.7433 Tj +-299 TJm +(\(for) 14.9339 Tj +72 319.735 Td +(the) 12.1743 Tj +-312 TJm +(block) 22.1369 Tj +-313 TJm +(sorting) 27.6761 Tj +-312 TJm +(transformation\),) 64.468 Tj +-328 TJm +(Da) 11.6164 Tj +20 TJm +(vid) 12.7322 Tj +-312 TJm +(Wheeler) 33.7433 Tj +-313 TJm +(\(ag) 12.7222 Tj +5 TJm +(ain,) 14.6649 Tj +-327 TJm +(for) 11.6164 Tj +-313 TJm +(the) 12.1743 Tj +-312 TJm +(Huf) 15.4918 Tj +25 TJm +(fman) 20.4731 Tj +-312 TJm +(coder\),) 27.9351 Tj +-328 TJm +(Peter) 20.4731 Tj +-313 TJm +(Fenwick) 34.3112 Tj +-312 TJm +(\(for) 14.9339 Tj +-312 TJm +(the) 12.1743 Tj +-313 TJm +(structured) 39.8404 Tj +72 307.779 Td +(coding) 27.1182 Tj +-325 TJm +(model) 24.9065 Tj +-326 TJm +(in) 7.7509 Tj +-325 TJm +(the) 12.1743 Tj +-326 TJm +(original) 30.9936 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +191.156 307.779 Td +/F124_0 9.9626 Tf +(bzip) 23.9102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +215.067 307.779 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-344 TJm +(and) 14.386 Tj +-326 TJm +(man) 17.1556 Tj +15 TJm +(y) 4.9813 Tj +-325 TJm +(re\002nements\),) 52.2937 Tj +-345 TJm +(and) 14.386 Tj +-325 TJm +(Alistair) 29.8878 Tj +-326 TJm +(Mof) 17.1556 Tj +25 TJm +(f) 3.3175 Tj +10 TJm +(at,) 9.6836 Tj +-344 TJm +(Radford) 32.6474 Tj +-325 TJm +(Neal) 18.8094 Tj +-326 TJm +(and) 14.386 Tj +-325 TJm +(Ian) 12.7222 Tj +-326 TJm +(W) 9.4047 Tj +40 TJm +(itten) 17.7135 Tj +-325 TJm +(\(for) 14.9339 Tj +72 295.824 Td +(the) 12.1743 Tj +-277 TJm +(arithmetic) 40.3983 Tj +-277 TJm +(coder) 22.1269 Tj +-277 TJm +(in) 7.7509 Tj +-277 TJm +(the) 12.1743 Tj +-277 TJm +(original) 30.9936 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +214.171 295.824 Td +/F124_0 9.9626 Tf +(bzip) 23.9102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +238.082 295.824 Td +/F122_0 9.9626 Tf +(\).) 5.8082 Tj +-782 TJm +(I) 3.3175 Tj +-277 TJm +(am) 12.1743 Tj +-276 TJm +(much) 22.1369 Tj +-277 TJm +(indebted) 34.3112 Tj +-277 TJm +(for) 11.6164 Tj +-277 TJm +(their) 18.2614 Tj +-277 TJm +(help,) 19.6462 Tj +-284 TJm +(support) 29.8878 Tj +-277 TJm +(and) 14.386 Tj +-277 TJm +(advice.) 28.493 Tj +-781 TJm +(See) 14.386 Tj +-277 TJm +(the) 12.1743 Tj +-277 TJm +(manual) 29.3299 Tj +72 283.869 Td +(in) 7.7509 Tj +-330 TJm +(the) 12.1743 Tj +-330 TJm +(source) 26.0024 Tj +-330 TJm +(distrib) 25.4644 Tj +20 TJm +(ution) 20.4831 Tj +-330 TJm +(for) 11.6164 Tj +-329 TJm +(pointers) 32.0995 Tj +-330 TJm +(to) 7.7509 Tj +-330 TJm +(sources) 29.8778 Tj +-330 TJm +(of) 8.2988 Tj +-330 TJm +(documentation.) 61.7083 Tj +-1099 TJm +(Christian) 36.5329 Tj +-330 TJm +(v) 4.9813 Tj +20 TJm +(on) 9.9626 Tj +-330 TJm +(Roques) 29.8878 Tj +-330 TJm +(encouraged) 45.9176 Tj +-330 TJm +(me) 12.1743 Tj +-330 TJm +(to) 7.7509 Tj +-330 TJm +(look) 17.7135 Tj +72 271.914 Td +(for) 11.6164 Tj +-271 TJm +(f) 3.3175 Tj +10 TJm +(aster) 18.8094 Tj +-271 TJm +(sorting) 27.6761 Tj +-271 TJm +(algorithms,) 45.1107 Tj +-276 TJm +(so) 8.8568 Tj +-272 TJm +(as) 8.2988 Tj +-271 TJm +(to) 7.7509 Tj +-271 TJm +(speed) 22.6848 Tj +-271 TJm +(up) 9.9626 Tj +-271 TJm +(compression.) 52.8516 Tj +-746 TJm +(Bela) 18.2614 Tj +-271 TJm +(Lubkin) 28.782 Tj +-271 TJm +(encouraged) 45.9176 Tj +-271 TJm +(me) 12.1743 Tj +-272 TJm +(to) 7.7509 Tj +-271 TJm +(impro) 23.8007 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-271 TJm +(the) 12.1743 Tj +-271 TJm +(w) 7.193 Tj +10 TJm +(orst-case) 35.4071 Tj +72 259.959 Td +(compression) 50.3609 Tj +-340 TJm +(performance.) 52.8317 Tj +-580 TJm +(Donna) 26.5603 Tj +-339 TJm +(Robinson) 38.1966 Tj +-340 TJm +(XMLised) 38.1866 Tj +-340 TJm +(the) 12.1743 Tj +-340 TJm +(documentation.) 61.7083 Tj +-580 TJm +(Man) 18.2614 Tj +15 TJm +(y) 4.9813 Tj +-340 TJm +(people) 26.5603 Tj +-340 TJm +(sent) 16.0497 Tj +-339 TJm +(patches,) 32.3685 Tj +-363 TJm +(helped) 26.5603 Tj +-340 TJm +(with) 17.7135 Tj +72 248.003 Td +(portability) 41.5142 Tj +-250 TJm +(problems,) 39.5714 Tj +-250 TJm +(lent) 14.9439 Tj +-250 TJm +(machines,) 40.1194 Tj +-250 TJm +(g) 4.9813 Tj +5 TJm +(a) 4.4234 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-250 TJm +(advice) 26.0024 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(were) 19.3573 Tj +-250 TJm +(generally) 37.0708 Tj +-250 TJm +(helpful.) 30.7147 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +539.395 50.951 Td +(7) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 8 11 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 75.786 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +72 701.916 Td +/F116_0 24.7902 Tf +(3.) 20.675 Tj +-556 TJm +(Pr) 26.1785 Tj +20 TJm +(ogramming) 134.9826 Tj +-278 TJm +(with) 49.5804 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +330.484 701.916 Td +/F440_0 24.7902 Tf +(libbzip2) 118.993 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 656.35 Td +/F116_0 17.2154 Tf +(T) 10.5186 Tj +80 TJm +(ab) 20.0904 Tj +10 TJm +(le) 14.3576 Tj +-278 TJm +(of) 16.2513 Tj +-278 TJm +(Contents) 74.5943 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 635.788 Td +/F122_0 9.9626 Tf +(3.1.) 14.9439 Tj +-310 TJm +(T) 6.0871 Tj +80 TJm +(op-le) 20.4731 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-250 TJm +(structure) 34.8591 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +179.997 635.788 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +511.108 635.788 Td +/F122_0 9.9626 Tf +(8) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 623.832 Td +(3.1.1.) 22.4159 Tj +-310 TJm +(Lo) 11.0684 Tj +25 TJm +(w-le) 17.7035 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-250 TJm +(summary) 37.0808 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +192.866 623.832 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +511.108 623.832 Td +/F122_0 9.9626 Tf +(9) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 611.877 Td +(3.1.2.) 22.4159 Tj +-310 TJm +(High-le) 30.4357 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-250 TJm +(summary) 37.0808 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +193.822 611.877 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +511.108 611.877 Td +/F122_0 9.9626 Tf +(9) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 599.922 Td +(3.1.3.) 22.4159 Tj +-310 TJm +(Utility) 26.0223 Tj +-250 TJm +(functions) 37.0808 Tj +-250 TJm +(summary) 37.0808 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +216.582 599.922 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +511.108 599.922 Td +/F122_0 9.9626 Tf +(9) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 587.967 Td +(3.2.) 14.9439 Tj +-310 TJm +(Error) 21.0211 Tj +-250 TJm +(handling) 34.8691 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +162.611 587.967 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 587.967 Td +/F122_0 9.9626 Tf +(10) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 576.012 Td +(3.3.) 14.9439 Tj +-310 TJm +(Lo) 11.0684 Tj +25 TJm +(w-le) 17.7035 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-250 TJm +(interf) 21.579 Tj +10 TJm +(ace) 13.2702 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +181.045 576.012 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 576.012 Td +/F122_0 9.9626 Tf +(11) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 564.057 Td +(3.3.1.) 22.4159 Tj +-310 TJm +(BZ2_bzCompressInit) 85.7879 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +197.762 564.057 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 564.057 Td +/F122_0 9.9626 Tf +(11) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 552.101 Td +(3.3.2.) 22.4159 Tj +-310 TJm +(BZ2_bzCompress) 71.9499 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +184.201 552.101 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 552.101 Td +/F122_0 9.9626 Tf +(13) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 540.146 Td +(3.3.3.) 22.4159 Tj +-310 TJm +(BZ2_bzCompressEnd) 87.9996 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +198.868 540.146 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 540.146 Td +/F122_0 9.9626 Tf +(16) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 528.191 Td +(3.3.4.) 22.4159 Tj +-310 TJm +(BZ2_bzDecompressInit) 95.1827 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +206.887 528.191 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 528.191 Td +/F122_0 9.9626 Tf +(16) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 516.236 Td +(3.3.5.) 22.4159 Tj +-310 TJm +(BZ2_bzDecompress) 81.3446 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +193.326 516.236 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 516.236 Td +/F122_0 9.9626 Tf +(17) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 504.281 Td +(3.3.6.) 22.4159 Tj +-310 TJm +(BZ2_bzDecompressEnd) 97.3944 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +210.207 504.281 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 504.281 Td +/F122_0 9.9626 Tf +(18) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 492.325 Td +(3.4.) 14.9439 Tj +-310 TJm +(High-le) 30.4357 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-250 TJm +(interf) 21.579 Tj +10 TJm +(ace) 13.2702 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +184.216 492.325 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 492.325 Td +/F122_0 9.9626 Tf +(18) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 480.37 Td +(3.4.1.) 22.4159 Tj +-310 TJm +(BZ2_bzReadOpen) 74.1516 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +185.302 480.37 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 480.37 Td +/F122_0 9.9626 Tf +(19) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 468.415 Td +(3.4.2.) 22.4159 Tj +-310 TJm +(BZ2_bzRead) 52.5726 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +163.443 468.415 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 468.415 Td +/F122_0 9.9626 Tf +(20) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 456.46 Td +(3.4.3.) 22.4159 Tj +-310 TJm +(BZ2_bzReadGetUnused) 97.3944 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +210.207 456.46 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 456.46 Td +/F122_0 9.9626 Tf +(21) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 444.505 Td +(3.4.4.) 22.4159 Tj +-310 TJm +(BZ2_bzReadClose) 75.2674 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +188.074 444.505 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 444.505 Td +/F122_0 9.9626 Tf +(22) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 432.55 Td +(3.4.5.) 22.4159 Tj +-310 TJm +(BZ2_bzWriteOpen) 76.3633 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +188.622 432.55 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 432.55 Td +/F122_0 9.9626 Tf +(22) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 420.594 Td +(3.4.6.) 22.4159 Tj +-310 TJm +(BZ2_bzWrite) 54.7843 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +166.763 420.594 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 420.594 Td +/F122_0 9.9626 Tf +(23) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 408.639 Td +(3.4.7.) 22.4159 Tj +-310 TJm +(BZ2_bzWriteClose) 77.4791 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +189.179 408.639 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 408.639 Td +/F122_0 9.9626 Tf +(23) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 396.684 Td +(3.4.8.) 22.4159 Tj +-310 TJm +(Handling) 37.0808 Tj +-250 TJm +(embedded) 40.9463 Tj +-250 TJm +(compressed) 47.0334 Tj +-250 TJm +(data) 16.5977 Tj +-250 TJm +(streams) 30.4357 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +294.601 396.684 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 396.684 Td +/F122_0 9.9626 Tf +(24) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 384.729 Td +(3.4.9.) 22.4159 Tj +-310 TJm +(Standard) 35.417 Tj +-250 TJm +(\002le-reading/writing) 77.4791 Tj +-250 TJm +(code) 18.8094 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +247.564 384.729 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 384.729 Td +/F122_0 9.9626 Tf +(25) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 372.774 Td +(3.5.) 14.9439 Tj +-310 TJm +(Utility) 26.0223 Tj +-250 TJm +(functions) 37.0808 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +170.645 372.774 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 372.774 Td +/F122_0 9.9626 Tf +(26) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 360.819 Td +(3.5.1.) 22.4159 Tj +-310 TJm +(BZ2_bzBuf) 47.0434 Tj +25 TJm +(fT) 9.4047 Tj +80 TJm +(oBuf) 19.9252 Tj +25 TJm +(fCompress) 43.1679 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +229.488 360.819 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 360.819 Td +/F122_0 9.9626 Tf +(26) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 348.863 Td +(3.5.2.) 22.4159 Tj +-310 TJm +(BZ2_bzBuf) 47.0434 Tj +25 TJm +(fT) 9.4047 Tj +80 TJm +(oBuf) 19.9252 Tj +25 TJm +(fDecompress) 52.5627 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +238.613 348.863 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 348.863 Td +/F122_0 9.9626 Tf +(27) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 336.908 Td +(3.6.) 14.9439 Tj +-310 TJm +(zlib) 14.9439 Tj +-250 TJm +(compatibility) 53.1405 Tj +-250 TJm +(functions) 37.0808 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +215.06 336.908 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 336.908 Td +/F122_0 9.9626 Tf +(28) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 324.953 Td +(3.7.) 14.9439 Tj +-310 TJm +(Using) 23.8007 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(library) 26.5603 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(stdio-free) 38.1767 Tj +-250 TJm +(en) 9.4047 Tj +40 TJm +(vironment) 40.9562 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +282.092 324.953 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 324.953 Td +/F122_0 9.9626 Tf +(28) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 312.998 Td +(3.7.1.) 22.4159 Tj +-310 TJm +(Getting) 29.8878 Tj +-250 TJm +(rid) 11.0684 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(stdio) 19.3773 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +188.492 312.998 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 312.998 Td +/F122_0 9.9626 Tf +(29) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 301.043 Td +(3.7.2.) 22.4159 Tj +-310 TJm +(Critical) 29.8878 Tj +-250 TJm +(error) 19.3573 Tj +-250 TJm +(handling) 34.8691 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +201.629 301.043 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 301.043 Td +/F122_0 9.9626 Tf +(29) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 289.088 Td +(3.8.) 14.9439 Tj +-310 TJm +(Making) 30.9936 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(W) 9.4047 Tj +40 TJm +(indo) 17.7135 Tj +25 TJm +(ws) 11.0684 Tj +-250 TJm +(DLL) 19.3673 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +203.243 289.088 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 289.088 Td +/F122_0 9.9626 Tf +(29) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 257.207 Td +(This) 17.7135 Tj +-250 TJm +(chapter) 29.3199 Tj +-250 TJm +(describes) 37.0708 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(programming) 54.2364 Tj +-250 TJm +(interf) 21.579 Tj +10 TJm +(ace) 13.2702 Tj +-250 TJm +(to) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +282.448 257.207 Td +/F124_0 9.9626 Tf +(libbzip2) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +330.269 257.207 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 235.289 Td +(F) 5.5392 Tj +15 TJm +(or) 8.2988 Tj +-273 TJm +(general) 29.3199 Tj +-272 TJm +(background) 47.0334 Tj +-273 TJm +(information,) 49.534 Tj +-278 TJm +(particularly) 45.9276 Tj +-273 TJm +(about) 22.1369 Tj +-273 TJm +(memory) 33.2053 Tj +-272 TJm +(use) 13.2801 Tj +-273 TJm +(and) 14.386 Tj +-273 TJm +(performance) 50.341 Tj +-272 TJm +(aspects,) 31.2626 Tj +-279 TJm +(you') 18.2614 Tj +50 TJm +(d) 4.9813 Tj +-272 TJm +(be) 9.4047 Tj +-273 TJm +(well) 17.1556 Tj +-273 TJm +(advised) 30.4357 Tj +72 223.334 Td +(to) 7.7509 Tj +-250 TJm +(read) 17.1456 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +-250 TJm +(Ho) 12.1743 Tj +25 TJm +(w) 7.193 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(use) 13.2801 Tj +-250 TJm +(bzip2) 22.1369 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +-250 TJm +([2]) 11.6164 Tj +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-250 TJm +(as) 8.2988 Tj +-250 TJm +(well.) 19.6462 Tj +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 188.581 Td +/F116_0 20.6585 Tf +(3.1.) 34.4584 Tj +-278 TJm +(T) 12.6223 Tj +80 TJm +(op-le) 49.3532 Tj +15 TJm +(vel) 28.7153 Tj +-278 TJm +(structure) 89.5339 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 166.663 Td +/F124_0 9.9626 Tf +(libbzip2) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +123.608 166.663 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-380 TJm +(a) 4.4234 Tj +-380 TJm +(\003e) 9.9626 Tj +15 TJm +(xible) 19.9252 Tj +-381 TJm +(library) 26.5603 Tj +-380 TJm +(for) 11.6164 Tj +-380 TJm +(compressing) 50.3609 Tj +-380 TJm +(and) 14.386 Tj +-380 TJm +(decompressing) 59.7656 Tj +-380 TJm +(data) 16.5977 Tj +-381 TJm +(in) 7.7509 Tj +-380 TJm +(the) 12.1743 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +405.291 166.663 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +438.966 166.663 Td +/F122_0 9.9626 Tf +(data) 16.5977 Tj +-380 TJm +(format.) 29.0509 Tj +-1401 TJm +(Although) 37.6387 Tj +72 154.708 Td +(packaged) 37.6188 Tj +-285 TJm +(as) 8.2988 Tj +-284 TJm +(a) 4.4234 Tj +-285 TJm +(single) 23.8007 Tj +-285 TJm +(entity) 22.6948 Tj +65 TJm +(,) 2.4907 Tj +-293 TJm +(it) 5.5392 Tj +-285 TJm +(helps) 21.031 Tj +-285 TJm +(to) 7.7509 Tj +-284 TJm +(re) 7.7409 Tj +15 TJm +(g) 4.9813 Tj +5 TJm +(ard) 12.7222 Tj +-285 TJm +(the) 12.1743 Tj +-285 TJm +(library) 26.5603 Tj +-284 TJm +(as) 8.2988 Tj +-285 TJm +(three) 19.9152 Tj +-285 TJm +(separate) 32.6375 Tj +-284 TJm +(parts:) 22.1369 Tj +-380 TJm +(the) 12.1743 Tj +-285 TJm +(lo) 7.7509 Tj +25 TJm +(w) 7.193 Tj +-284 TJm +(le) 7.193 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-285 TJm +(interf) 21.579 Tj +10 TJm +(ace,) 15.7608 Tj +-293 TJm +(and) 14.386 Tj +-285 TJm +(the) 12.1743 Tj +-285 TJm +(high) 17.7135 Tj +72 142.753 Td +(le) 7.193 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-250 TJm +(interf) 21.579 Tj +10 TJm +(ace,) 15.7608 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(some) 21.031 Tj +-250 TJm +(utility) 23.8106 Tj +-250 TJm +(functions.) 39.5714 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 120.835 Td +(The) 15.4918 Tj +-349 TJm +(structure) 34.8591 Tj +-349 TJm +(of) 8.2988 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +141.082 120.835 Td +/F124_0 9.9626 Tf +(libbzip2) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +188.903 120.835 Td +/F122_0 9.9626 Tf +(') 3.3175 Tj +55 TJm +(s) 3.8755 Tj +-349 TJm +(interf) 21.579 Tj +10 TJm +(aces) 17.1456 Tj +-349 TJm +(is) 6.6451 Tj +-349 TJm +(similar) 27.6761 Tj +-349 TJm +(to) 7.7509 Tj +-349 TJm +(that) 14.9439 Tj +-349 TJm +(of) 8.2988 Tj +-349 TJm +(Jean-loup) 38.7346 Tj +-349 TJm +(Gailly') 28.224 Tj +55 TJm +(s) 3.8755 Tj +-349 TJm +(and) 14.386 Tj +-349 TJm +(Mark) 21.579 Tj +-349 TJm +(Adler') 26.0024 Tj +55 TJm +(s) 3.8755 Tj +-349 TJm +(e) 4.4234 Tj +15 TJm +(xcellent) 31.5416 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +516.09 120.835 Td +/F124_0 9.9626 Tf +(zlib) 23.9102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 108.88 Td +/F122_0 9.9626 Tf +(library) 26.5603 Tj +65 TJm +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 86.962 Td +(All) 12.7322 Tj +-242 TJm +(e) 4.4234 Tj +15 TJm +(xternally) 35.417 Tj +-242 TJm +(visible) 26.5703 Tj +-241 TJm +(symbols) 33.2153 Tj +-242 TJm +(ha) 9.4047 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-242 TJm +(names) 25.4544 Tj +-242 TJm +(be) 9.4047 Tj +15 TJm +(ginning) 30.4457 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +284.687 86.962 Td +/F124_0 9.9626 Tf +(BZ2_) 23.9102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +308.597 86.962 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +-615 TJm +(This) 17.7135 Tj +-241 TJm +(is) 6.6451 Tj +-242 TJm +(ne) 9.4047 Tj +25 TJm +(w) 7.193 Tj +-242 TJm +(in) 7.7509 Tj +-242 TJm +(v) 4.9813 Tj +15 TJm +(ersion) 24.3486 Tj +-242 TJm +(1.0.) 14.9439 Tj +-614 TJm +(The) 15.4918 Tj +-242 TJm +(intention) 35.427 Tj +-242 TJm +(is) 6.6451 Tj +-241 TJm +(to) 7.7509 Tj +-242 TJm +(minimise) 37.0908 Tj +72 75.007 Td +(pollution) 35.9849 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(namespaces) 47.5814 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(library) 26.5603 Tj +-250 TJm +(clients.) 28.503 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +541.288 50.951 Td +(8) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 9 12 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +420.96 749.245 Td +/F122_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +498.449 749.245 Td +/F124_0 9.9626 Tf +(libbzip2) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 75.786 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +72 710.037 Td +/F122_0 9.9626 Tf +(T) 6.0871 Tj +80 TJm +(o) 4.9813 Tj +-250 TJm +(use) 13.2801 Tj +-250 TJm +(an) 9.4047 Tj +15 TJm +(y) 4.9813 Tj +-250 TJm +(part) 15.4918 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(library) 26.5603 Tj +65 TJm +(,) 2.4907 Tj +-250 TJm +(you) 14.9439 Tj +-250 TJm +(need) 18.8094 Tj +-250 TJm +(to) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +240.567 710.037 Td +/F124_0 9.9626 Tf +(#include) 47.8205 Tj +-600 TJm +() 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +350.654 710.037 Td +/F122_0 9.9626 Tf +(into) 15.5018 Tj +-250 TJm +(your) 18.2614 Tj +-250 TJm +(sources.) 32.3685 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 679.416 Td +/F116_0 17.2154 Tf +(3.1.1.) 43.0729 Tj +-278 TJm +(Lo) 21.0372 Tj +15 TJm +(w-le) 33.484 Tj +15 TJm +(vel) 23.9294 Tj +-278 TJm +(summar) 66.9679 Tj +-10 TJm +(y) 9.5718 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 657.498 Td +/F122_0 9.9626 Tf +(This) 17.7135 Tj +-212 TJm +(interf) 21.579 Tj +10 TJm +(ace) 13.2702 Tj +-212 TJm +(pro) 13.2801 Tj +15 TJm +(vides) 21.031 Tj +-212 TJm +(services) 32.0895 Tj +-212 TJm +(for) 11.6164 Tj +-212 TJm +(compressing) 50.3609 Tj +-212 TJm +(and) 14.386 Tj +-212 TJm +(decompress) 47.0334 Tj +1 TJm +(ing) 12.7322 Tj +-212 TJm +(data) 16.5977 Tj +-212 TJm +(in) 7.7509 Tj +-212 TJm +(memory) 33.2053 Tj +65 TJm +(.) 2.4907 Tj +-595 TJm +(There') 26.5503 Tj +55 TJm +(s) 3.8755 Tj +-212 TJm +(no) 9.9626 Tj +-212 TJm +(pro) 13.2801 Tj +15 TJm +(vision) 24.3586 Tj +-212 TJm +(for) 11.6164 Tj +-212 TJm +(dealing) 29.3299 Tj +72 645.543 Td +(with) 17.7135 Tj +-213 TJm +(\002les,) 19.0983 Tj +-220 TJm +(streams) 30.4357 Tj +-213 TJm +(or) 8.2988 Tj +-213 TJm +(an) 9.4047 Tj +15 TJm +(y) 4.9813 Tj +-213 TJm +(other) 20.4731 Tj +-213 TJm +(I/O) 13.2801 Tj +-213 TJm +(mechanisms,) 51.7457 Tj +-221 TJm +(just) 14.396 Tj +-213 TJm +(straight) 29.8878 Tj +-213 TJm +(memory-to-memory) 80.7967 Tj +-213 TJm +(w) 7.193 Tj +10 TJm +(ork.) 15.7708 Tj +-595 TJm +(In) 8.2988 Tj +-213 TJm +(f) 3.3175 Tj +10 TJm +(act,) 14.107 Tj +-221 TJm +(this) 14.396 Tj +-213 TJm +(part) 15.4918 Tj +-213 TJm +(of) 8.2988 Tj +-213 TJm +(the) 12.1743 Tj +-213 TJm +(library) 26.5603 Tj +72 633.588 Td +(can) 13.8281 Tj +-250 TJm +(be) 9.4047 Tj +-250 TJm +(compiled) 37.0808 Tj +-250 TJm +(without) 30.4457 Tj +-250 TJm +(inclusion) 36.5329 Tj +-250 TJm +(of) 8.2988 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +222.534 633.588 Td +/F124_0 9.9626 Tf +(stdio.h) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +264.377 633.588 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-250 TJm +(which) 24.3486 Tj +-250 TJm +(may) 17.1556 Tj +-250 TJm +(be) 9.4047 Tj +-250 TJm +(helpful) 28.224 Tj +-250 TJm +(for) 11.6164 Tj +-250 TJm +(embedded) 40.9463 Tj +-250 TJm +(applications.) 50.6399 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 611.67 Td +(The) 15.4918 Tj +-250 TJm +(lo) 7.7509 Tj +25 TJm +(w-le) 17.7035 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-250 TJm +(part) 15.4918 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(library) 26.5603 Tj +-250 TJm +(has) 13.2801 Tj +-250 TJm +(no) 9.9626 Tj +-250 TJm +(global) 24.9065 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(ariables) 30.9837 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(is) 6.6451 Tj +-250 TJm +(therefore) 35.955 Tj +-250 TJm +(thread-safe.) 46.7445 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 589.752 Td +(Six) 13.2901 Tj +-875 TJm +(routines) 32.0995 Tj +-876 TJm +(mak) 17.1556 Tj +10 TJm +(e) 4.4234 Tj +-875 TJm +(up) 9.9626 Tj +-876 TJm +(the) 12.1743 Tj +-875 TJm +(lo) 7.7509 Tj +25 TJm +(w) 7.193 Tj +-876 TJm +(le) 7.193 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-875 TJm +(interf) 21.579 Tj +10 TJm +(ace:) 16.0398 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +308.791 589.752 Td +/F124_0 9.9626 Tf +(BZ2_bzCompressInit) 107.5961 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +416.387 589.752 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +429.158 589.752 Td +/F124_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +512.844 589.752 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-1032 TJm +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 577.797 Td +/F124_0 9.9626 Tf +(BZ2_bzCompressEnd) 101.6185 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +186.15 577.797 Td +/F122_0 9.9626 Tf +(for) 11.6164 Tj +-1258 TJm +(compression,) 52.8516 Tj +-1510 TJm +(and) 14.386 Tj +-1257 TJm +(a) 4.4234 Tj +-1258 TJm +(corresponding) 56.996 Tj +-1258 TJm +(trio) 13.8381 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +417.958 577.797 Td +/F124_0 9.9626 Tf +(BZ2_bzDecompressInit) 119.5512 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +537.509 577.797 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 565.842 Td +/F124_0 9.9626 Tf +(BZ2_bzDecompress) 95.641 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +172.707 565.842 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +192.158 565.842 Td +/F124_0 9.9626 Tf +(BZ2_bzDecompressEnd) 113.5736 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +310.798 565.842 Td +/F122_0 9.9626 Tf +(for) 11.6164 Tj +-508 TJm +(decompression.) 62.2563 Tj +-2171 TJm +(The) 15.4918 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +431.918 564.099 Td +/F124_0 9.9626 Tf +(*) 5.9776 Tj +437.895 565.842 Td +(Init) 23.9102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +466.871 565.842 Td +/F122_0 9.9626 Tf +(functions) 37.0808 Tj +-508 TJm +(allocate) 30.9837 Tj +72 553.887 Td +(memory) 33.2053 Tj +-574 TJm +(for) 11.6164 Tj +-573 TJm +(compression/decompression) 112.8962 Tj +-574 TJm +(and) 14.386 Tj +-574 TJm +(do) 9.9626 Tj +-573 TJm +(other) 20.4731 Tj +-574 TJm +(initialisations,) 56.1891 Tj +-654 TJm +(whilst) 24.3586 Tj +-574 TJm +(the) 12.1743 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +419.503 552.143 Td +/F124_0 9.9626 Tf +(*) 5.9776 Tj +425.48 553.887 Td +(End) 17.9327 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +449.128 553.887 Td +/F122_0 9.9626 Tf +(functions) 37.0808 Tj +-574 TJm +(close) 20.4731 Tj +-573 TJm +(do) 9.9626 Tj +25 TJm +(wn) 12.1743 Tj +72 541.932 Td +(operations) 41.5042 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(release) 27.6562 Tj +-250 TJm +(memory) 33.2053 Tj +65 TJm +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 520.014 Td +(The) 15.4918 Tj +-303 TJm +(real) 14.9339 Tj +-303 TJm +(w) 7.193 Tj +10 TJm +(ork) 13.2801 Tj +-303 TJm +(is) 6.6451 Tj +-303 TJm +(done) 19.3673 Tj +-303 TJm +(by) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +176.892 520.014 Td +/F124_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +263.598 520.014 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +281.003 520.014 Td +/F124_0 9.9626 Tf +(BZ2_bzDecompress) 95.641 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +376.645 520.014 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +-939 TJm +(These) 23.7907 Tj +-303 TJm +(compress) 37.6287 Tj +-303 TJm +(and) 14.386 Tj +-303 TJm +(decompress) 47.0334 Tj +-303 TJm +(data) 16.5977 Tj +72 508.059 Td +(from) 19.3673 Tj +-205 TJm +(a) 4.4234 Tj +-205 TJm +(user) 16.5977 Tj +20 TJm +(-supplied) 37.0808 Tj +-205 TJm +(input) 20.4831 Tj +-206 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.2988 Tj +25 TJm +(fer) 11.0585 Tj +-205 TJm +(to) 7.7509 Tj +-205 TJm +(a) 4.4234 Tj +-205 TJm +(user) 16.5977 Tj +20 TJm +(-supplied) 37.0808 Tj +-205 TJm +(output) 25.4644 Tj +-205 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.2988 Tj +25 TJm +(fer) 11.0585 Tj +55 TJm +(.) 2.4907 Tj +-591 TJm +(These) 23.7907 Tj +-205 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.2988 Tj +25 TJm +(fers) 14.9339 Tj +-205 TJm +(can) 13.8281 Tj +-205 TJm +(be) 9.4047 Tj +-205 TJm +(an) 9.4047 Tj +15 TJm +(y) 4.9813 Tj +-205 TJm +(size;) 18.2614 Tj +-220 TJm +(arbitrary) 34.3012 Tj +-206 TJm +(quantities) 38.7446 Tj +-205 TJm +(of) 8.2988 Tj +72 496.104 Td +(data) 16.5977 Tj +-258 TJm +(are) 12.1643 Tj +-258 TJm +(handled) 31.5416 Tj +-258 TJm +(by) 9.9626 Tj +-257 TJm +(making) 29.8878 Tj +-258 TJm +(repeated) 33.7433 Tj +-258 TJm +(calls) 18.2614 Tj +-258 TJm +(to) 7.7509 Tj +-258 TJm +(these) 20.4731 Tj +-258 TJm +(functions.) 39.5714 Tj +-667 TJm +(This) 17.7135 Tj +-258 TJm +(is) 6.6451 Tj +-258 TJm +(a) 4.4234 Tj +-257 TJm +(\003e) 9.9626 Tj +15 TJm +(xible) 19.9252 Tj +-258 TJm +(mechanism) 45.3796 Tj +-258 TJm +(allo) 14.9439 Tj +25 TJm +(wing) 19.9252 Tj +-258 TJm +(a) 4.4234 Tj +-258 TJm +(consumer) 38.7346 Tj +20 TJm +(-pull) 18.8194 Tj +72 484.148 Td +(style) 18.8194 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(acti) 14.386 Tj +25 TJm +(vity) 15.5018 Tj +65 TJm +(,) 2.4907 Tj +-250 TJm +(or) 8.2988 Tj +-250 TJm +(producer) 35.4071 Tj +20 TJm +(-push,) 24.6275 Tj +-250 TJm +(or) 8.2988 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(mixture) 30.9936 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(both.) 20.2042 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 453.527 Td +/F116_0 17.2154 Tf +(3.1.2.) 43.0729 Tj +-278 TJm +(High-le) 58.343 Tj +15 TJm +(vel) 23.9294 Tj +-278 TJm +(summar) 66.9679 Tj +-10 TJm +(y) 9.5718 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 431.609 Td +/F122_0 9.9626 Tf +(This) 17.7135 Tj +-284 TJm +(interf) 21.579 Tj +10 TJm +(ace) 13.2702 Tj +-284 TJm +(pro) 13.2801 Tj +15 TJm +(vides) 21.031 Tj +-285 TJm +(some) 21.031 Tj +-284 TJm +(handy) 24.3486 Tj +-284 TJm +(wrappers) 36.5129 Tj +-284 TJm +(around) 27.6661 Tj +-284 TJm +(the) 12.1743 Tj +-284 TJm +(lo) 7.7509 Tj +25 TJm +(w-le) 17.7035 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-285 TJm +(interf) 21.579 Tj +10 TJm +(ace) 13.2702 Tj +-284 TJm +(to) 7.7509 Tj +-284 TJm +(f) 3.3175 Tj +10 TJm +(acilitate) 31.5416 Tj +-284 TJm +(reading) 29.8778 Tj +-284 TJm +(and) 14.386 Tj +-285 TJm +(writ) 16.0497 Tj +1 TJm +(ing) 12.7322 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +510.112 431.609 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 419.654 Td +/F122_0 9.9626 Tf +(format) 26.5603 Tj +-347 TJm +(\002les) 16.6077 Tj +-346 TJm +(\() 3.3175 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +125.391 419.654 Td +/F124_0 9.9626 Tf +(.bz2) 23.9102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +152.754 419.654 Td +/F122_0 9.9626 Tf +(\002les\).) 22.4159 Tj +-1200 TJm +(The) 15.4918 Tj +-346 TJm +(routines) 32.0995 Tj +-347 TJm +(pro) 13.2801 Tj +15 TJm +(vide) 17.1556 Tj +-346 TJm +(hooks) 23.8007 Tj +-347 TJm +(to) 7.7509 Tj +-346 TJm +(f) 3.3175 Tj +10 TJm +(acilitate) 31.5416 Tj +-347 TJm +(reading) 29.8778 Tj +-347 TJm +(\002les) 16.6077 Tj +-346 TJm +(in) 7.7509 Tj +-347 TJm +(which) 24.3486 Tj +-346 TJm +(the) 12.1743 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +460.049 419.654 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +493.39 419.654 Td +/F122_0 9.9626 Tf +(data) 16.5977 Tj +-347 TJm +(stream) 26.5603 Tj +72 407.699 Td +(is) 6.6451 Tj +-339 TJm +(embedded) 40.9463 Tj +-339 TJm +(within) 25.4644 Tj +-339 TJm +(some) 21.031 Tj +-339 TJm +(lar) 10.5105 Tj +18 TJm +(ger) 12.7222 Tj +20 TJm +(-scale) 23.2328 Tj +-339 TJm +(\002le) 12.7322 Tj +-339 TJm +(structure,) 37.3498 Tj +-361 TJm +(or) 8.2988 Tj +-340 TJm +(wher) 19.9152 Tj +1 TJm +(e) 4.4234 Tj +-340 TJm +(there) 19.9152 Tj +-339 TJm +(are) 12.1643 Tj +-339 TJm +(multiple) 33.2153 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +400.941 407.699 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +434.207 407.699 Td +/F122_0 9.9626 Tf +(data) 16.5977 Tj +-339 TJm +(streams) 30.4357 Tj +-339 TJm +(concatenated) 52.0048 Tj +72 395.744 Td +(end-to-end.) 45.6486 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 373.826 Td +(F) 5.5392 Tj +15 TJm +(or) 8.2988 Tj +-332 TJm +(reading) 29.8778 Tj +-333 TJm +(\002les,) 19.0983 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +144.803 373.826 Td +/F124_0 9.9626 Tf +(BZ2_bzReadOpen) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +228.489 373.826 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +234.496 373.826 Td +/F124_0 9.9626 Tf +(BZ2_bzRead) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +294.272 373.826 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +300.279 373.826 Td +/F124_0 9.9626 Tf +(BZ2_bzReadClose) 89.6634 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +393.253 373.826 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +410.951 373.826 Td +/F124_0 9.9626 Tf +(BZ2_bzReadGetUnused) 113.5736 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +527.836 373.826 Td +/F122_0 9.9626 Tf +(are) 12.1643 Tj +72 361.871 Td +(supplied.) 36.2539 Tj +-620 TJm +(F) 5.5392 Tj +15 TJm +(or) 8.2988 Tj +-250 TJm +(writing) 28.782 Tj +-250 TJm +(\002les,) 19.0983 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +183.471 361.871 Td +/F124_0 9.9626 Tf +(BZ2_bzWriteOpen) 89.6634 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +273.135 361.871 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +278.116 361.871 Td +/F124_0 9.9626 Tf +(BZ2_bzWrite) 65.7532 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +346.36 361.871 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +363.237 361.871 Td +/F124_0 9.9626 Tf +(BZ2_bzWriteFinish) 101.6185 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +467.346 361.871 Td +/F122_0 9.9626 Tf +(are) 12.1643 Tj +-250 TJm +(a) 4.4234 Tj +20 TJm +(v) 4.9813 Tj +25 TJm +(ailable.) 29.0509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 339.953 Td +(As) 11.0684 Tj +-374 TJm +(with) 17.7135 Tj +-374 TJm +(the) 12.1743 Tj +-375 TJm +(lo) 7.7509 Tj +25 TJm +(w-le) 17.7035 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-374 TJm +(library) 26.5603 Tj +65 TJm +(,) 2.4907 Tj +-405 TJm +(no) 9.9626 Tj +-374 TJm +(global) 24.9065 Tj +-374 TJm +(v) 4.9813 Tj +25 TJm +(ariables) 30.9837 Tj +-375 TJm +(are) 12.1643 Tj +-374 TJm +(used) 18.2614 Tj +-374 TJm +(so) 8.8568 Tj +-374 TJm +(the) 12.1743 Tj +-374 TJm +(library) 26.5603 Tj +-375 TJm +(is) 6.6451 Tj +-374 TJm +(per) 12.7222 Tj +-374 TJm +(se) 8.2988 Tj +-374 TJm +(thread-safe.) 46.7445 Tj +-1365 TJm +(Ho) 12.1743 Tj +25 TJm +(we) 11.6164 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(er) 7.7409 Tj +40 TJm +(,) 2.4907 Tj +-406 TJm +(if) 6.0871 Tj +-374 TJm +(I/O) 13.2801 Tj +72 327.998 Td +(errors) 23.2328 Tj +-267 TJm +(occur) 22.1269 Tj +-267 TJm +(whilst) 24.3586 Tj +-267 TJm +(reading) 29.8778 Tj +-267 TJm +(or) 8.2988 Tj +-267 TJm +(writing) 28.782 Tj +-267 TJm +(the) 12.1743 Tj +-268 TJm +(underlying) 43.1679 Tj +-267 TJm +(compressed) 47.0334 Tj +-267 TJm +(\002les,) 19.0983 Tj +-271 TJm +(you) 14.9439 Tj +-267 TJm +(may) 17.1556 Tj +-267 TJm +(ha) 9.4047 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-267 TJm +(to) 7.7509 Tj +-267 TJm +(consult) 28.782 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +457.199 327.998 Td +/F124_0 9.9626 Tf +(errno) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +489.748 327.998 Td +/F122_0 9.9626 Tf +(to) 7.7509 Tj +-267 TJm +(determine) 39.8404 Tj +72 316.043 Td +(the) 12.1743 Tj +-366 TJm +(cause) 22.1269 Tj +-365 TJm +(of) 8.2988 Tj +-366 TJm +(the) 12.1743 Tj +-365 TJm +(error) 19.3573 Tj +55 TJm +(.) 2.4907 Tj +-1314 TJm +(In) 8.2988 Tj +-366 TJm +(that) 14.9439 Tj +-365 TJm +(case,) 19.6363 Tj +-395 TJm +(you') 18.2614 Tj +50 TJm +(d) 4.9813 Tj +-366 TJm +(need) 18.8094 Tj +-365 TJm +(a) 4.4234 Tj +-366 TJm +(C) 6.6451 Tj +-365 TJm +(library) 26.5603 Tj +-366 TJm +(which) 24.3486 Tj +-366 TJm +(correctly) 35.4071 Tj +-365 TJm +(supports) 33.7633 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +431.668 316.043 Td +/F124_0 9.9626 Tf +(errno) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +465.199 316.043 Td +/F122_0 9.9626 Tf +(in) 7.7509 Tj +-366 TJm +(a) 4.4234 Tj +-365 TJm +(multithreaded) 55.3422 Tj +72 304.088 Td +(en) 9.4047 Tj +40 TJm +(vironment.) 43.4469 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 282.17 Td +(T) 6.0871 Tj +80 TJm +(o) 4.9813 Tj +-243 TJm +(mak) 17.1556 Tj +10 TJm +(e) 4.4234 Tj +-243 TJm +(the) 12.1743 Tj +-242 TJm +(library) 26.5603 Tj +-243 TJm +(a) 4.4234 Tj +-243 TJm +(little) 18.2714 Tj +-242 TJm +(simpler) 29.8878 Tj +-243 TJm +(and) 14.386 Tj +-243 TJm +(more) 20.4731 Tj +-243 TJm +(portable,) 35.1381 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +289.263 282.17 Td +/F124_0 9.9626 Tf +(BZ2_bzReadOpen) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +375.368 282.17 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +392.172 282.17 Td +/F124_0 9.9626 Tf +(BZ2_bzWriteOpen) 89.6634 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +484.254 282.17 Td +/F122_0 9.9626 Tf +(require) 28.2141 Tj +-243 TJm +(you) 14.9439 Tj +-243 TJm +(to) 7.7509 Tj +72 270.215 Td +(pass) 17.1556 Tj +-247 TJm +(them) 19.9252 Tj +-248 TJm +(\002le) 12.7322 Tj +-247 TJm +(handles) 30.4357 Tj +-247 TJm +(\() 3.3175 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +165.421 270.215 Td +/F124_0 9.9626 Tf +(FILE) 23.9102 Tj +189.331 268.471 Td +(*) 5.9776 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +195.309 270.215 Td +/F122_0 9.9626 Tf +(s\)) 7.193 Tj +-247 TJm +(which) 24.3486 Tj +-248 TJm +(ha) 9.4047 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-247 TJm +(pre) 12.7222 Tj +25 TJm +(viously) 29.3399 Tj +-247 TJm +(been) 18.8094 Tj +-248 TJm +(opened) 28.772 Tj +-247 TJm +(for) 11.6164 Tj +-247 TJm +(reading) 29.8778 Tj +-247 TJm +(or) 8.2988 Tj +-248 TJm +(writing) 28.782 Tj +-247 TJm +(respecti) 30.9837 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ely) 12.1743 Tj +65 TJm +(.) 2.4907 Tj +-618 TJm +(That) 18.2614 Tj +-248 TJm +(a) 4.4234 Tj +20 TJm +(v) 4.9813 Tj +20 TJm +(oids) 16.6077 Tj +72 258.259 Td +(portability) 41.5142 Tj +-272 TJm +(problems) 37.0808 Tj +-273 TJm +(associated) 40.9463 Tj +-272 TJm +(with) 17.7135 Tj +-272 TJm +(\002le) 12.7322 Tj +-273 TJm +(operations) 41.5042 Tj +-272 TJm +(and) 14.386 Tj +-272 TJm +(\002le) 12.7322 Tj +-273 TJm +(attrib) 21.031 Tj +20 TJm +(utes,) 18.5404 Tj +-278 TJm +(whilst) 24.3586 Tj +-272 TJm +(not) 12.7322 Tj +-272 TJm +(being) 22.1369 Tj +-273 TJm +(much) 22.1369 Tj +-272 TJm +(of) 8.2988 Tj +-273 TJm +(an) 9.4047 Tj +-272 TJm +(imposition) 42.63 Tj +-272 TJm +(on) 9.9626 Tj +-273 TJm +(the) 12.1743 Tj +72 246.304 Td +(programmer) 49.2451 Tj +55 TJm +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 215.683 Td +/F116_0 17.2154 Tf +(3.1.3.) 43.0729 Tj +-278 TJm +(Utility) 47.8244 Tj +-278 TJm +(functions) 77.4693 Tj +-278 TJm +(summar) 66.9679 Tj +-10 TJm +(y) 9.5718 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 193.765 Td +/F122_0 9.9626 Tf +(F) 5.5392 Tj +15 TJm +(or) 8.2988 Tj +-273 TJm +(v) 4.9813 Tj +15 TJm +(ery) 12.7222 Tj +-273 TJm +(simple) 26.5703 Tj +-273 TJm +(needs,) 25.1755 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +165.929 193.765 Td +/F124_0 9.9626 Tf +(BZ2_bzBuffToBuffCompress) 143.4614 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +312.112 193.765 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +329.219 193.765 Td +/F124_0 9.9626 Tf +(BZ2_bzBuffToBuffDecompress) 155.4166 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +487.357 193.765 Td +/F122_0 9.9626 Tf +(are) 12.1643 Tj +-273 TJm +(pro) 13.2801 Tj +15 TJm +(vided.) 24.6275 Tj +72 181.81 Td +(These) 23.7907 Tj +-374 TJm +(compress) 37.6287 Tj +-373 TJm +(data) 16.5977 Tj +-374 TJm +(in) 7.7509 Tj +-373 TJm +(memory) 33.2053 Tj +-374 TJm +(from) 19.3673 Tj +-373 TJm +(one) 14.386 Tj +-374 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.2988 Tj +25 TJm +(fer) 11.0585 Tj +-373 TJm +(to) 7.7509 Tj +-374 TJm +(another) 29.8778 Tj +-374 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.2988 Tj +25 TJm +(fer) 11.0585 Tj +-373 TJm +(in) 7.7509 Tj +-374 TJm +(a) 4.4234 Tj +-373 TJm +(single) 23.8007 Tj +-374 TJm +(function) 33.2053 Tj +-373 TJm +(call.) 16.8766 Tj +-1362 TJm +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-373 TJm +(should) 26.5703 Tj +-374 TJm +(assess) 24.3486 Tj +72 169.855 Td +(whether) 32.0895 Tj +-344 TJm +(these) 20.4731 Tj +-343 TJm +(functions) 37.0808 Tj +-344 TJm +(ful\002ll) 22.1469 Tj +-344 TJm +(your) 18.2614 Tj +-343 TJm +(memory-to-memory) 80.7967 Tj +-344 TJm +(compression/decompression) 112.8962 Tj +-343 TJm +(requirements) 52.0147 Tj +-344 TJm +(before) 25.4445 Tj +-344 TJm +(in) 7.7509 Tj +40 TJm +(v) 4.9813 Tj +15 TJm +(esting) 23.8007 Tj +72 157.9 Td +(ef) 7.7409 Tj +25 TJm +(fort) 14.386 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(understanding) 56.4481 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(more) 20.4731 Tj +-250 TJm +(general) 29.3199 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-250 TJm +(more) 20.4731 Tj +-250 TJm +(comple) 29.3299 Tj +15 TJm +(x) 4.9813 Tj +-250 TJm +(lo) 7.7509 Tj +25 TJm +(w-le) 17.7035 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-250 TJm +(interf) 21.579 Tj +10 TJm +(ace.) 15.7608 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 135.982 Td +(Y) 7.193 Tj +110 TJm +(oshioka) 30.9936 Tj +-423 TJm +(Tsuneo) 29.3299 Tj +-422 TJm +(\() 3.3175 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +150.161 135.982 Td +/F124_0 9.9626 Tf +(tsuneo@rr.iij4u.or.jp) 125.5288 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +275.69 135.982 Td +/F122_0 9.9626 Tf +(\)) 3.3175 Tj +-423 TJm +(has) 13.2801 Tj +-422 TJm +(contrib) 28.224 Tj +20 TJm +(uted) 17.1556 Tj +-423 TJm +(some) 21.031 Tj +-423 TJm +(functions) 37.0808 Tj +-422 TJm +(to) 7.7509 Tj +-423 TJm +(gi) 7.7509 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-423 TJm +(better) 22.6848 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +476.462 135.982 Td +/F124_0 9.9626 Tf +(zlib) 23.9102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +504.583 135.982 Td +/F122_0 9.9626 Tf +(compati-) 35.417 Tj +72 124.027 Td +(bility) 21.041 Tj +65 TJm +(.) 2.4907 Tj +-1446 TJm +(These) 23.7907 Tj +-388 TJm +(functions) 37.0808 Tj +-387 TJm +(are) 12.1643 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +193.914 124.027 Td +/F124_0 9.9626 Tf +(BZ2_bzopen) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +253.689 124.027 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +260.385 124.027 Td +/F124_0 9.9626 Tf +(BZ2_bzread) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +320.161 124.027 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +326.857 124.027 Td +/F124_0 9.9626 Tf +(BZ2_bzwrite) 65.7532 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +392.611 124.027 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +399.307 124.027 Td +/F124_0 9.9626 Tf +(BZ2_bzflush) 65.7532 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +465.06 124.027 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +471.756 124.027 Td +/F124_0 9.9626 Tf +(BZ2_bzclose) 65.7532 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +537.509 124.027 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 112.072 Td +/F124_0 9.9626 Tf +(BZ2_bzerror) 65.7532 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +140.408 112.072 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +157.449 112.072 Td +/F124_0 9.9626 Tf +(BZ2_bzlibVersion) 95.641 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +253.091 112.072 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +-719 TJm +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-266 TJm +(may) 17.1556 Tj +-267 TJm +(\002nd) 15.5018 Tj +-266 TJm +(these) 20.4731 Tj +-267 TJm +(functions) 37.0808 Tj +-266 TJm +(more) 20.4731 Tj +-267 TJm +(con) 14.386 Tj +40 TJm +(v) 4.9813 Tj +15 TJm +(enient) 24.3486 Tj +-266 TJm +(for) 11.6164 Tj +-267 TJm +(simple) 26.5703 Tj +-266 TJm +(\002le) 12.7322 Tj +-267 TJm +(reading) 29.8778 Tj +72 100.116 Td +(and) 14.386 Tj +-270 TJm +(writ) 16.0497 Tj +1 TJm +(ing,) 15.2229 Tj +-275 TJm +(than) 17.1556 Tj +-269 TJm +(those) 21.031 Tj +-270 TJm +(in) 7.7509 Tj +-269 TJm +(the) 12.1743 Tj +-270 TJm +(high-le) 28.224 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-269 TJm +(interf) 21.579 Tj +10 TJm +(ace.) 15.7608 Tj +-737 TJm +(These) 23.7907 Tj +-270 TJm +(functions) 37.0808 Tj +-269 TJm +(are) 12.1643 Tj +-270 TJm +(not) 12.7322 Tj +-269 TJm +(\(yet\)) 18.8094 Tj +-270 TJm +(of) 8.2988 Tj +25 TJm +(\002cially) 27.6761 Tj +-269 TJm +(part) 15.4918 Tj +-270 TJm +(of) 8.2988 Tj +-269 TJm +(the) 12.1743 Tj +-270 TJm +(library) 26.5603 Tj +65 TJm +(,) 2.4907 Tj +-274 TJm +(and) 14.386 Tj +-270 TJm +(are) 12.1643 Tj +72 88.161 Td +(minimally) 40.9662 Tj +-291 TJm +(documented) 48.6972 Tj +-291 TJm +(here.) 19.6363 Tj +-867 TJm +(If) 6.6351 Tj +-291 TJm +(the) 12.1743 Tj +15 TJm +(y) 4.9813 Tj +-291 TJm +(break,) 24.6176 Tj +-301 TJm +(you) 14.9439 Tj +-291 TJm +(get) 12.1743 Tj +-292 TJm +(to) 7.7509 Tj +-291 TJm +(k) 4.9813 Tj +10 TJm +(eep) 13.8281 Tj +-291 TJm +(all) 9.9626 Tj +-291 TJm +(the) 12.1743 Tj +-291 TJm +(pieces.) 27.3872 Tj +-433 TJm +(I) 3.3175 Tj +-291 TJm +(hope) 19.3673 Tj +-291 TJm +(to) 7.7509 Tj +-291 TJm +(document) 39.2925 Tj +-292 TJm +(them) 19.9252 Tj +-291 TJm +(properly) 33.7533 Tj +-291 TJm +(when) 21.579 Tj +72 76.206 Td +(time) 17.7135 Tj +-250 TJm +(permits.) 32.3785 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +541.288 51.071 Td +(9) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 10 13 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F122_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +496.556 749.245 Td +/F124_0 9.9626 Tf +(libbzip2) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +72 710.037 Td +/F122_0 9.9626 Tf +(Y) 7.193 Tj +110 TJm +(oshioka) 30.9936 Tj +-250 TJm +(also) 16.0497 Tj +-250 TJm +(contrib) 28.224 Tj +20 TJm +(uted) 17.1556 Tj +-250 TJm +(modi\002cations) 54.2464 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(allo) 14.9439 Tj +25 TJm +(w) 7.193 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(library) 26.5603 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(be) 9.4047 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(uilt) 13.2901 Tj +-250 TJm +(as) 8.2988 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(W) 9.4047 Tj +40 TJm +(indo) 17.7135 Tj +25 TJm +(ws) 11.0684 Tj +-250 TJm +(DLL.) 21.8579 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 675.504 Td +/F116_0 20.6585 Tf +(3.2.) 34.4584 Tj +-278 TJm +(Err) 29.8515 Tj +20 TJm +(or) 20.6585 Tj +-278 TJm +(handling) 86.084 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 653.805 Td +/F122_0 9.9626 Tf +(The) 15.4918 Tj +-214 TJm +(library) 26.5603 Tj +-215 TJm +(is) 6.6451 Tj +-214 TJm +(designed) 35.417 Tj +-215 TJm +(to) 7.7509 Tj +-214 TJm +(reco) 17.1456 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(er) 7.7409 Tj +-215 TJm +(cleanly) 28.772 Tj +-214 TJm +(in) 7.7509 Tj +-215 TJm +(all) 9.9626 Tj +-214 TJm +(situations,) 40.6873 Tj +-222 TJm +(including) 37.6387 Tj +-214 TJm +(the) 12.1743 Tj +-215 TJm +(w) 7.193 Tj +10 TJm +(orst-case) 35.4071 Tj +-214 TJm +(situation) 34.3212 Tj +-215 TJm +(of) 8.2988 Tj +-214 TJm +(decompressing) 59.7656 Tj +-215 TJm +(random) 30.4357 Tj +72 641.85 Td +(data.) 19.0883 Tj +-764 TJm +(I'm) 14.386 Tj +-274 TJm +(not) 12.7322 Tj +-275 TJm +(100%) 23.2427 Tj +-274 TJm +(sure) 16.5977 Tj +-274 TJm +(that) 14.9439 Tj +-274 TJm +(it) 5.5392 Tj +-274 TJm +(can) 13.8281 Tj +-274 TJm +(al) 7.193 Tj +10 TJm +(w) 7.193 Tj +10 TJm +(ays) 13.2801 Tj +-274 TJm +(do) 9.9626 Tj +-274 TJm +(this,) 16.8866 Tj +-280 TJm +(so) 8.8568 Tj +-274 TJm +(you) 14.9439 Tj +-274 TJm +(might) 23.2527 Tj +-274 TJm +(w) 7.193 Tj +10 TJm +(ant) 12.1743 Tj +-274 TJm +(to) 7.7509 Tj +-274 TJm +(add) 14.386 Tj +-274 TJm +(a) 4.4234 Tj +-275 TJm +(s) 3.8755 Tj +1 TJm +(ignal) 19.9252 Tj +-275 TJm +(handler) 29.8778 Tj +-274 TJm +(to) 7.7509 Tj +-274 TJm +(catch) 21.0211 Tj +-274 TJm +(se) 8.2988 Tj +15 TJm +(gmentation) 44.8317 Tj +72 629.895 Td +(violations) 39.3025 Tj +-273 TJm +(during) 26.0123 Tj +-273 TJm +(decompression) 59.7656 Tj +-273 TJm +(if) 6.0871 Tj +-273 TJm +(you) 14.9439 Tj +-273 TJm +(are) 12.1643 Tj +-273 TJm +(feeling) 27.6661 Tj +-274 TJm +(especiall) 34.8591 Tj +1 TJm +(y) 4.9813 Tj +-274 TJm +(paranoid.) 37.3498 Tj +-758 TJm +(I) 3.3175 Tj +-273 TJm +(w) 7.193 Tj +10 TJm +(ould) 17.7135 Tj +-273 TJm +(be) 9.4047 Tj +-273 TJm +(interested) 38.7346 Tj +-273 TJm +(in) 7.7509 Tj +-274 TJm +(hearing) 29.8778 Tj +-273 TJm +(more) 20.4731 Tj +-273 TJm +(about) 22.1369 Tj +72 617.939 Td +(the) 12.1743 Tj +-250 TJm +(rob) 13.2801 Tj +20 TJm +(ustness) 28.782 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(library) 26.5603 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(corrupted) 38.1767 Tj +-250 TJm +(compressed) 47.0334 Tj +-250 TJm +(data.) 19.0883 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 596.241 Td +(V) 7.193 Tj +111 TJm +(ersion) 24.3486 Tj +-251 TJm +(1.0.3) 19.9252 Tj +-251 TJm +(more) 20.4731 Tj +-251 TJm +(rob) 13.2801 Tj +20 TJm +(ust) 11.6264 Tj +-251 TJm +(in) 7.7509 Tj +-251 TJm +(this) 14.396 Tj +-251 TJm +(respect) 28.2141 Tj +-252 TJm +(than) 17.1556 Tj +-251 TJm +(an) 9.4047 Tj +15 TJm +(y) 4.9813 Tj +-251 TJm +(pre) 12.7222 Tj +25 TJm +(vious) 21.589 Tj +-251 TJm +(v) 4.9813 Tj +15 TJm +(ersion.) 26.8392 Tj +-626 TJm +(In) 8.2988 Tj +40 TJm +(v) 4.9813 Tj +15 TJm +(estig) 18.8194 Tj +5 TJm +(ations) 23.8007 Tj +-251 TJm +(with) 17.7135 Tj +-251 TJm +(V) 7.193 Tj +111 TJm +(algrind) 28.224 Tj +-251 TJm +(\(a) 7.7409 Tj +-252 TJm +(tool) 15.5018 Tj +-251 TJm +(for) 11.6164 Tj +-251 TJm +(detecting) 36.5229 Tj +72 584.285 Td +(problems) 37.0808 Tj +-422 TJm +(with) 17.7135 Tj +-421 TJm +(memory) 33.2053 Tj +-422 TJm +(management\)) 54.2264 Tj +-421 TJm +(indicate) 31.5416 Tj +-422 TJm +(that,) 17.4346 Tj +-464 TJm +(at) 7.193 Tj +-422 TJm +(least) 18.2614 Tj +-421 TJm +(for) 11.6164 Tj +-422 TJm +(the) 12.1743 Tj +-422 TJm +(f) 3.3175 Tj +1 TJm +(e) 4.4234 Tj +25 TJm +(w) 7.193 Tj +-422 TJm +(\002les) 16.6077 Tj +-422 TJm +(I) 3.3175 Tj +-421 TJm +(tested,) 25.7334 Tj +-464 TJm +(all) 9.9626 Tj +-422 TJm +(single-bit) 37.6387 Tj +-422 TJm +(errors) 23.2328 Tj +-421 TJm +(in) 7.7509 Tj +-422 TJm +(the) 12.1743 Tj +72 572.33 Td +(decompressed) 56.4381 Tj +-342 TJm +(data) 16.5977 Tj +-341 TJm +(are) 12.1643 Tj +-342 TJm +(caught) 26.5603 Tj +-342 TJm +(properly) 33.7533 Tj +65 TJm +(,) 2.4907 Tj +-365 TJm +(with) 17.7135 Tj +-341 TJm +(no) 9.9626 Tj +-342 TJm +(se) 8.2988 Tj +15 TJm +(gmentation) 44.8317 Tj +-342 TJm +(f) 3.3175 Tj +10 TJm +(aults,) 21.31 Tj +-365 TJm +(no) 9.9626 Tj +-341 TJm +(uses) 17.1556 Tj +-342 TJm +(of) 8.2988 Tj +-342 TJm +(uninitialised) 49.2651 Tj +-342 TJm +(data,) 19.0883 Tj +-364 TJm +(no) 9.9626 Tj +-342 TJm +(out) 12.7322 Tj +-342 TJm +(of) 8.2988 Tj +-342 TJm +(range) 22.1269 Tj +72 560.375 Td +(reads) 21.0211 Tj +-261 TJm +(or) 8.2988 Tj +-260 TJm +(writes,) 26.8392 Tj +-263 TJm +(and) 14.386 Tj +-261 TJm +(no) 9.9626 Tj +-261 TJm +(in\002nit) 23.8106 Tj +1 TJm +(e) 4.4234 Tj +-261 TJm +(looping) 30.4457 Tj +-261 TJm +(in) 7.7509 Tj +-260 TJm +(the) 12.1743 Tj +-261 TJm +(decompressor) 55.3323 Tj +55 TJm +(.) 2.4907 Tj +-342 TJm +(So) 10.5205 Tj +-260 TJm +(it') 8.8568 Tj +55 TJm +(s) 3.8755 Tj +-261 TJm +(certainly) 34.8591 Tj +-260 TJm +(pretty) 23.2427 Tj +-261 TJm +(rob) 13.2801 Tj +20 TJm +(ust,) 14.117 Tj +-263 TJm +(although) 34.8691 Tj +-261 TJm +(I) 3.3175 Tj +-260 TJm +(w) 7.193 Tj +10 TJm +(ouldn') 26.0123 Tj +18 TJm +(t) 2.7696 Tj +-261 TJm +(claim) 22.1369 Tj +72 548.42 Td +(it) 5.5392 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(be) 9.4047 Tj +-250 TJm +(totally) 25.4644 Tj +-250 TJm +(bombproof.) 46.7644 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 526.721 Td +(The) 15.4918 Tj +-282 TJm +(\002le) 12.7322 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +105.84 526.721 Td +/F124_0 9.9626 Tf +(bzlib.h) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +150.491 526.721 Td +/F122_0 9.9626 Tf +(contains) 33.2053 Tj +-282 TJm +(all) 9.9626 Tj +-282 TJm +(de\002nitions) 42.0721 Tj +-282 TJm +(needed) 28.2141 Tj +-281 TJm +(to) 7.7509 Tj +-282 TJm +(use) 13.2801 Tj +-282 TJm +(the) 12.1743 Tj +-282 TJm +(library) 26.5603 Tj +65 TJm +(.) 2.4907 Tj +-811 TJm +(In) 8.2988 Tj +-282 TJm +(particular) 38.1767 Tj +40 TJm +(,) 2.4907 Tj +-290 TJm +(you) 14.9439 Tj +-282 TJm +(should) 26.5703 Tj +-281 TJm +(de\002nitely) 37.6387 Tj +-282 TJm +(not) 12.7322 Tj +-282 TJm +(include) 29.3299 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 514.766 Td +/F124_0 9.9626 Tf +(bzlib_private.h) 89.6634 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +161.664 514.766 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 493.067 Td +(In) 8.2988 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +82.807 493.067 Td +/F124_0 9.9626 Tf +(bzlib.h) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +124.651 493.067 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-252 TJm +(the) 12.1743 Tj +-252 TJm +(v) 4.9813 Tj +25 TJm +(arious) 24.3486 Tj +-252 TJm +(return) 23.7907 Tj +-252 TJm +(v) 4.9813 Tj +25 TJm +(alues) 20.4731 Tj +-251 TJm +(are) 12.1643 Tj +-252 TJm +(de\002ned.) 31.8205 Tj +-631 TJm +(The) 15.4918 Tj +-252 TJm +(follo) 18.8194 Tj +25 TJm +(wing) 19.9252 Tj +-252 TJm +(list) 12.1843 Tj +-251 TJm +(is) 6.6451 Tj +-252 TJm +(not) 12.7322 Tj +-252 TJm +(intended) 34.3112 Tj +-252 TJm +(as) 8.2988 Tj +-251 TJm +(an) 9.4047 Tj +-252 TJm +(e) 4.4234 Tj +15 TJm +(xhausti) 28.782 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-252 TJm +(description) 44.2738 Tj +-252 TJm +(of) 8.2988 Tj +72 481.112 Td +(the) 12.1743 Tj +-236 TJm +(circumstances) 56.4381 Tj +-236 TJm +(in) 7.7509 Tj +-237 TJm +(which) 24.3486 Tj +-236 TJm +(a) 4.4234 Tj +-236 TJm +(gi) 7.7509 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(en) 9.4047 Tj +-236 TJm +(v) 4.9813 Tj +25 TJm +(alue) 16.5977 Tj +-236 TJm +(may) 17.1556 Tj +-237 TJm +(be) 9.4047 Tj +-236 TJm +(returned) 33.1954 Tj +-236 TJm +(--) 6.6351 Tj +-236 TJm +(those) 21.031 Tj +-236 TJm +(descriptions) 48.1492 Tj +-236 TJm +(are) 12.1643 Tj +-237 TJm +(gi) 7.7509 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(en) 9.4047 Tj +-236 TJm +(later) 17.7035 Tj +55 TJm +(.) 2.4907 Tj +-305 TJm +(Rather) 26.5603 Tj +40 TJm +(,) 2.4907 Tj +-239 TJm +(it) 5.5392 Tj +-236 TJm +(is) 6.6451 Tj +-237 TJm +(intended) 34.3112 Tj +-236 TJm +(to) 7.7509 Tj +72 469.157 Td +(con) 14.386 Tj +40 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +15 TJm +(y) 4.9813 Tj +-266 TJm +(the) 12.1743 Tj +-265 TJm +(rough) 23.2427 Tj +-266 TJm +(meaning) 34.3112 Tj +-265 TJm +(of) 8.2988 Tj +-266 TJm +(each) 18.2515 Tj +-266 TJm +(return) 23.7907 Tj +-265 TJm +(v) 4.9813 Tj +25 TJm +(alue.) 19.0883 Tj +-714 TJm +(The) 15.4918 Tj +-265 TJm +(\002rst) 15.5018 Tj +-266 TJm +(\002) 5.5392 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-265 TJm +(actions) 28.224 Tj +-266 TJm +(are) 12.1643 Tj +-266 TJm +(normal) 28.224 Tj +-265 TJm +(and) 14.386 Tj +-266 TJm +(not) 12.7322 Tj +-265 TJm +(intended) 34.3112 Tj +-266 TJm +(to) 7.7509 Tj +-266 TJm +(denote) 26.5603 Tj +-265 TJm +(an) 9.4047 Tj +-266 TJm +(error) 19.3573 Tj +72 457.202 Td +(situation.) 36.8118 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 425.759 Td +/F124_0 9.9626 Tf +(BZ_OK) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 413.804 Td +/F122_0 9.9626 Tf +(The) 15.4918 Tj +-250 TJm +(requested) 38.1767 Tj +-250 TJm +(action) 24.3486 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(as) 8.2988 Tj +-250 TJm +(completed) 41.5042 Tj +-250 TJm +(successfully) 48.6972 Tj +65 TJm +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 388.34 Td +/F124_0 9.9626 Tf +(BZ_RUN_OK,) 59.7756 Tj +-600 TJm +(BZ_FLUSH_OK,) 71.7307 Tj +-600 TJm +(BZ_FINISH_OK) 71.7307 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 376.384 Td +/F122_0 9.9626 Tf +(In) 8.2988 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +118.789 376.384 Td +/F124_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +202.476 376.384 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(requested) 38.1767 Tj +-250 TJm +(\003ush/\002nish/nothing-special) 108.4927 Tj +-250 TJm +(action) 24.3486 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(as) 8.2988 Tj +-250 TJm +(completed) 41.5042 Tj +-250 TJm +(successfully) 48.6972 Tj +65 TJm +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 350.92 Td +/F124_0 9.9626 Tf +(BZ_STREAM_END) 77.7083 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 338.965 Td +/F122_0 9.9626 Tf +(Compression) 52.5826 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(data) 16.5977 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(as) 8.2988 Tj +-250 TJm +(completed,) 43.9948 Tj +-250 TJm +(or) 8.2988 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(logical) 27.1182 Tj +-250 TJm +(stream) 26.5603 Tj +-250 TJm +(end) 14.386 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(as) 8.2988 Tj +-250 TJm +(detected) 33.1954 Tj +-250 TJm +(during) 26.0123 Tj +-250 TJm +(decompression.) 62.2563 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 303.756 Td +(The) 15.4918 Tj +-250 TJm +(follo) 18.8194 Tj +25 TJm +(wing) 19.9252 Tj +-250 TJm +(return) 23.7907 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alues) 20.4731 Tj +-250 TJm +(indicate) 31.5416 Tj +-250 TJm +(an) 9.4047 Tj +-250 TJm +(error) 19.3573 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(some) 21.031 Tj +-250 TJm +(kind.) 20.2042 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 272.314 Td +/F124_0 9.9626 Tf +(BZ_CONFIG_ERROR) 89.6634 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 260.359 Td +/F122_0 9.9626 Tf +(Indicates) 35.965 Tj +-386 TJm +(that) 14.9439 Tj +-385 TJm +(the) 12.1743 Tj +-386 TJm +(library) 26.5603 Tj +-386 TJm +(has) 13.2801 Tj +-386 TJm +(been) 18.8094 Tj +-385 TJm +(improperly) 44.2738 Tj +-386 TJm +(compiled) 37.0808 Tj +-386 TJm +(on) 9.9626 Tj +-386 TJm +(your) 18.2614 Tj +-385 TJm +(platform) 34.3112 Tj +-386 TJm +(--) 6.6351 Tj +-386 TJm +(a) 4.4234 Tj +-386 TJm +(major) 23.2427 Tj +-385 TJm +(con\002guration) 53.1305 Tj +-386 TJm +(error) 19.3573 Tj +55 TJm +(.) 2.4907 Tj +108 248.404 Td +(Speci\002cally) 47.0434 Tj +65 TJm +(,) 2.4907 Tj +-481 TJm +(it) 5.5392 Tj +-435 TJm +(means) 25.4544 Tj +-435 TJm +(that) 14.9439 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +220.614 248.404 Td +/F124_0 9.9626 Tf +(sizeof\(char\)) 71.7307 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +292.345 248.404 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +299.628 248.404 Td +/F124_0 9.9626 Tf +(sizeof\(short\)) 77.7083 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +381.669 248.404 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +400.388 248.404 Td +/F124_0 9.9626 Tf +(sizeof\(int\)) 65.7532 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +470.474 248.404 Td +/F122_0 9.9626 Tf +(are) 12.1643 Tj +-435 TJm +(not) 12.7322 Tj +-435 TJm +(1,) 7.472 Tj +-481 TJm +(2) 4.9813 Tj +-435 TJm +(and) 14.386 Tj +108 236.448 Td +(4) 4.9813 Tj +-389 TJm +(respecti) 30.9837 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ely) 12.1743 Tj +65 TJm +(,) 2.4907 Tj +-424 TJm +(as) 8.2988 Tj +-390 TJm +(the) 12.1743 Tj +15 TJm +(y) 4.9813 Tj +-389 TJm +(should) 26.5703 Tj +-389 TJm +(be.) 11.8953 Tj +-1456 TJm +(Note) 19.3673 Tj +-389 TJm +(that) 14.9439 Tj +-389 TJm +(the) 12.1743 Tj +-389 TJm +(library) 26.5603 Tj +-390 TJm +(should) 26.5703 Tj +-389 TJm +(still) 14.9539 Tj +-389 TJm +(w) 7.193 Tj +10 TJm +(ork) 13.2801 Tj +-389 TJm +(properly) 33.7533 Tj +-390 TJm +(on) 9.9626 Tj +-389 TJm +(64-bit) 23.8007 Tj +-389 TJm +(platforms) 38.1866 Tj +108 224.493 Td +(which) 24.3486 Tj +-292 TJm +(follo) 18.8194 Tj +25 TJm +(w) 7.193 Tj +-292 TJm +(the) 12.1743 Tj +-292 TJm +(LP64) 21.589 Tj +-292 TJm +(programming) 54.2364 Tj +-293 TJm +(model) 24.9065 Tj +-292 TJm +(--) 6.6351 Tj +-292 TJm +(that) 14.9439 Tj +-292 TJm +(is,) 9.1357 Tj +-303 TJm +(where) 24.3386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +355.279 224.493 Td +/F124_0 9.9626 Tf +(sizeof\(long\)) 71.7307 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +429.92 224.493 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +447.217 224.493 Td +/F124_0 9.9626 Tf +(sizeof\(void) 65.7532 Tj +512.97 222.75 Td +(*) 5.9776 Tj +518.948 224.493 Td +(\)) 5.9776 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +527.836 224.493 Td +/F122_0 9.9626 Tf +(are) 12.1643 Tj +108 212.538 Td +(8.) 7.472 Tj +-620 TJm +(Under) 24.8965 Tj +-250 TJm +(LP64,) 24.0796 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +175.606 212.538 Td +/F124_0 9.9626 Tf +(sizeof\(int\)) 65.7532 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +243.85 212.538 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-250 TJm +(still) 14.9539 Tj +-250 TJm +(4,) 7.472 Tj +-250 TJm +(so) 8.8568 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +291.74 212.538 Td +/F124_0 9.9626 Tf +(libbzip2) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +339.561 212.538 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-250 TJm +(which) 24.3486 Tj +-250 TJm +(doesn') 26.5603 Tj +18 TJm +(t) 2.7696 Tj +-250 TJm +(use) 13.2801 Tj +-250 TJm +(the) 12.1743 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +433.458 212.538 Td +/F124_0 9.9626 Tf +(long) 23.9102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +459.859 212.538 Td +/F122_0 9.9626 Tf +(type,) 19.6462 Tj +-250 TJm +(is) 6.6451 Tj +-250 TJm +(OK.) 16.8766 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 187.073 Td +/F124_0 9.9626 Tf +(BZ_SEQUENCE_ERROR) 101.6185 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 175.118 Td +/F122_0 9.9626 Tf +(When) 23.7907 Tj +-291 TJm +(using) 21.589 Tj +-290 TJm +(the) 12.1743 Tj +-291 TJm +(library) 26.5603 Tj +65 TJm +(,) 2.4907 Tj +-300 TJm +(it) 5.5392 Tj +-291 TJm +(is) 6.6451 Tj +-290 TJm +(important) 38.7446 Tj +-291 TJm +(to) 7.7509 Tj +-290 TJm +(call) 14.386 Tj +-291 TJm +(the) 12.1743 Tj +-290 TJm +(functions) 37.0808 Tj +-291 TJm +(in) 7.7509 Tj +-290 TJm +(the) 12.1743 Tj +-291 TJm +(correct) 27.6562 Tj +-290 TJm +(sequence) 36.5129 Tj +-291 TJm +(and) 14.386 Tj +-290 TJm +(with) 17.7135 Tj +-291 TJm +(data) 16.5977 Tj +-290 TJm +(structures) 38.7346 Tj +108 163.163 Td +(\(b) 8.2988 Tj +20 TJm +(uf) 8.2988 Tj +25 TJm +(fers) 14.9339 Tj +-206 TJm +(etc\)) 14.9339 Tj +-205 TJm +(in) 7.7509 Tj +-206 TJm +(the) 12.1743 Tj +-205 TJm +(correct) 27.6562 Tj +-206 TJm +(states.) 24.6275 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +239.409 163.163 Td +/F124_0 9.9626 Tf +(libbzip2) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +289.278 163.163 Td +/F122_0 9.9626 Tf +(checks) 27.1082 Tj +-206 TJm +(as) 8.2988 Tj +-205 TJm +(much) 22.1369 Tj +-206 TJm +(as) 8.2988 Tj +-206 TJm +(it) 5.5392 Tj +-205 TJm +(can) 13.8281 Tj +-206 TJm +(to) 7.7509 Tj +-205 TJm +(ensure) 26.0024 Tj +-206 TJm +(this) 14.396 Tj +-206 TJm +(is) 6.6451 Tj +-205 TJm +(happening,) 43.9948 Tj +-215 TJm +(and) 14.386 Tj +-205 TJm +(returns) 27.6661 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 151.208 Td +/F124_0 9.9626 Tf +(BZ_SEQUENCE_ERROR) 101.6185 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +213.27 151.208 Td +/F122_0 9.9626 Tf +(if) 6.0871 Tj +-367 TJm +(not.) 15.2229 Tj +-659 TJm +(Code) 21.031 Tj +-367 TJm +(which) 24.3486 Tj +-367 TJm +(complies) 35.9749 Tj +-366 TJm +(precisely) 35.965 Tj +-367 TJm +(with) 17.7135 Tj +-366 TJm +(the) 12.1743 Tj +-367 TJm +(function) 33.2053 Tj +-366 TJm +(semantics,) 41.7831 Tj +-396 TJm +(as) 8.2988 Tj +-367 TJm +(detailed) 31.5416 Tj +108 139.253 Td +(belo) 17.1556 Tj +25 TJm +(w) 7.193 Tj +65 TJm +(,) 2.4907 Tj +-250 TJm +(should) 26.5703 Tj +-250 TJm +(ne) 9.4047 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(er) 7.7409 Tj +-250 TJm +(recei) 19.3573 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-250 TJm +(this) 14.396 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alue;) 19.3673 Tj +-250 TJm +(such) 18.2614 Tj +-250 TJm +(an) 9.4047 Tj +-250 TJm +(e) 4.4234 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ent) 12.1743 Tj +-250 TJm +(denotes) 30.4357 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(uggy) 19.9252 Tj +-250 TJm +(code) 18.8094 Tj +-250 TJm +(which) 24.3486 Tj +-250 TJm +(you) 14.9439 Tj +-250 TJm +(should) 26.5703 Tj +-250 TJm +(in) 7.7509 Tj +40 TJm +(v) 4.9813 Tj +15 TJm +(estig) 18.8194 Tj +5 TJm +(ate.) 14.107 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 113.788 Td +/F124_0 9.9626 Tf +(BZ_PARAM_ERROR) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 101.833 Td +/F122_0 9.9626 Tf +(Returned) 36.5229 Tj +-434 TJm +(when) 21.579 Tj +-434 TJm +(a) 4.4234 Tj +-434 TJm +(parameter) 39.8305 Tj +-434 TJm +(to) 7.7509 Tj +-434 TJm +(a) 4.4234 Tj +-433 TJm +(function) 33.2053 Tj +-434 TJm +(call) 14.386 Tj +-434 TJm +(is) 6.6451 Tj +-434 TJm +(out) 12.7322 Tj +-434 TJm +(of) 8.2988 Tj +-434 TJm +(range) 22.1269 Tj +-434 TJm +(or) 8.2988 Tj +-434 TJm +(otherwise) 38.7346 Tj +-434 TJm +(manifestly) 42.0621 Tj +-434 TJm +(incorrect.) 37.8977 Tj +-1723 TJm +(As) 11.0684 Tj +108 89.878 Td +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +131.644 89.878 Td +/F124_0 9.9626 Tf +(BZ_SEQUENCE_ERROR) 101.6185 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +233.263 89.878 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-595 TJm +(this) 14.396 Tj +-596 TJm +(denotes) 30.4357 Tj +-595 TJm +(a) 4.4234 Tj +-595 TJm +(b) 4.9813 Tj +20 TJm +(ug) 9.9626 Tj +-596 TJm +(in) 7.7509 Tj +-595 TJm +(the) 12.1743 Tj +-595 TJm +(client) 22.1369 Tj +-595 TJm +(code.) 21.3 Tj +-2692 TJm +(The) 15.4918 Tj +-596 TJm +(distinction) 42.0721 Tj +-595 TJm +(between) 33.1954 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 77.923 Td +/F124_0 9.9626 Tf +(BZ_PARAM_ERROR) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +194.177 77.923 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +211.054 77.923 Td +/F124_0 9.9626 Tf +(BZ_SEQUENCE_ERROR) 101.6185 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +315.163 77.923 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(bit) 10.5205 Tj +-250 TJm +(hazy) 18.8094 Tj +65 TJm +(,) 2.4907 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-250 TJm +(still) 14.9539 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(orth) 16.0497 Tj +-250 TJm +(making.) 32.3785 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +534.414 50.951 Td +(10) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 11 14 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F122_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +496.556 749.245 Td +/F124_0 9.9626 Tf +(libbzip2) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +72 710.037 Td +/F124_0 9.9626 Tf +(BZ_MEM_ERROR) 71.7307 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 698.082 Td +/F122_0 9.9626 Tf +(Returned) 36.5229 Tj +-228 TJm +(when) 21.579 Tj +-227 TJm +(a) 4.4234 Tj +-228 TJm +(request) 28.772 Tj +-227 TJm +(to) 7.7509 Tj +-228 TJm +(allocate) 30.9837 Tj +-228 TJm +(memory) 33.2053 Tj +-227 TJm +(f) 3.3175 Tj +10 TJm +(ailed.) 21.8579 Tj +-605 TJm +(Note) 19.3673 Tj +-228 TJm +(that) 14.9439 Tj +-228 TJm +(the) 12.1743 Tj +-227 TJm +(quantity) 32.6574 Tj +-228 TJm +(of) 8.2988 Tj +-227 TJm +(memory) 33.2053 Tj +-228 TJm +(needed) 28.2141 Tj +-228 TJm +(to) 7.7509 Tj +-227 TJm +(decompress) 47.0334 Tj +108 686.127 Td +(a) 4.4234 Tj +-351 TJm +(stream) 26.5603 Tj +-352 TJm +(cannot) 26.5603 Tj +-351 TJm +(be) 9.4047 Tj +-352 TJm +(determined) 44.8217 Tj +-351 TJm +(until) 18.2714 Tj +-352 TJm +(the) 12.1743 Tj +-351 TJm +(stream') 29.8778 Tj +55 TJm +(s) 3.8755 Tj +-351 TJm +(header) 26.5503 Tj +-352 TJm +(has) 13.2801 Tj +-351 TJm +(been) 18.8094 Tj +-352 TJm +(read.) 19.6363 Tj +-1228 TJm +(So) 10.5205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +426.471 686.127 Td +/F124_0 9.9626 Tf +(BZ2_bzDecompress) 95.641 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +525.614 686.127 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 674.172 Td +/F124_0 9.9626 Tf +(BZ2_bzRead) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +172.13 674.172 Td +/F122_0 9.9626 Tf +(may) 17.1556 Tj +-437 TJm +(return) 23.7907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +221.784 674.172 Td +/F124_0 9.9626 Tf +(BZ_MEM_ERROR) 71.7307 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +297.867 674.172 Td +/F122_0 9.9626 Tf +(e) 4.4234 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(en) 9.4047 Tj +-437 TJm +(though) 27.6761 Tj +-437 TJm +(some) 21.031 Tj +-437 TJm +(of) 8.2988 Tj +-437 TJm +(the) 12.1743 Tj +-437 TJm +(compressed) 47.0334 Tj +-437 TJm +(data) 16.5977 Tj +-437 TJm +(has) 13.2801 Tj +-437 TJm +(been) 18.8094 Tj +-437 TJm +(read.) 19.6363 Tj +108 662.217 Td +(The) 15.4918 Tj +-479 TJm +(same) 20.4731 Tj +-478 TJm +(is) 6.6451 Tj +-479 TJm +(not) 12.7322 Tj +-478 TJm +(true) 15.4918 Tj +-479 TJm +(for) 11.6164 Tj +-479 TJm +(compression;) 53.1305 Tj +-593 TJm +(once) 18.8094 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +301.675 662.217 Td +/F124_0 9.9626 Tf +(BZ2_bzCompressInit) 107.5961 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +414.04 662.217 Td +/F122_0 9.9626 Tf +(or) 8.2988 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +427.107 662.217 Td +/F124_0 9.9626 Tf +(BZ2_bzWriteOpen) 89.6634 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +521.539 662.217 Td +/F122_0 9.9626 Tf +(ha) 9.4047 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +108 650.261 Td +(successfully) 48.6972 Tj +-250 TJm +(completed,) 43.9948 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +205.672 650.261 Td +/F124_0 9.9626 Tf +(BZ_MEM_ERROR) 71.7307 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +279.894 650.261 Td +/F122_0 9.9626 Tf +(cannot) 26.5603 Tj +-250 TJm +(occur) 22.1269 Tj +55 TJm +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 624.359 Td +/F124_0 9.9626 Tf +(BZ_DATA_ERROR) 77.7083 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 612.404 Td +/F122_0 9.9626 Tf +(Returned) 36.5229 Tj +-266 TJm +(when) 21.579 Tj +-265 TJm +(a) 4.4234 Tj +-266 TJm +(data) 16.5977 Tj +-265 TJm +(inte) 14.9439 Tj +15 TJm +(grity) 18.8194 Tj +-266 TJm +(error) 19.3573 Tj +-266 TJm +(is) 6.6451 Tj +-265 TJm +(detected) 33.1954 Tj +-266 TJm +(during) 26.0123 Tj +-265 TJm +(decompression.) 62.2563 Tj +-714 TJm +(Most) 20.4831 Tj +-266 TJm +(importantl) 41.5142 Tj +1 TJm +(y) 4.9813 Tj +64 TJm +(,) 2.4907 Tj +-269 TJm +(this) 14.396 Tj +-266 TJm +(means) 25.4544 Tj +-265 TJm +(when) 21.579 Tj +108 600.448 Td +(stored) 24.3486 Tj +-222 TJm +(and) 14.386 Tj +-223 TJm +(computed) 39.2925 Tj +-222 TJm +(CRCs) 23.8106 Tj +-222 TJm +(for) 11.6164 Tj +-222 TJm +(the) 12.1743 Tj +-223 TJm +(data) 16.5977 Tj +-222 TJm +(do) 9.9626 Tj +-222 TJm +(not) 12.7322 Tj +-222 TJm +(match.) 26.8392 Tj +-602 TJm +(This) 17.7135 Tj +-222 TJm +(v) 4.9813 Tj +25 TJm +(alue) 16.5977 Tj +-222 TJm +(is) 6.6451 Tj +-223 TJm +(also) 16.0497 Tj +-222 TJm +(returned) 33.1954 Tj +-222 TJm +(upon) 19.9252 Tj +-222 TJm +(detection) 36.5229 Tj +-223 TJm +(of) 8.2988 Tj +-222 TJm +(an) 9.4047 Tj +15 TJm +(y) 4.9813 Tj +-222 TJm +(other) 20.4731 Tj +108 588.493 Td +(anomaly) 34.3112 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(compressed) 47.0334 Tj +-250 TJm +(data.) 19.0883 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 562.59 Td +/F124_0 9.9626 Tf +(BZ_DATA_ERROR_MAGIC) 113.5736 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 550.635 Td +/F122_0 9.9626 Tf +(As) 11.0684 Tj +-306 TJm +(a) 4.4234 Tj +-306 TJm +(special) 27.6661 Tj +-306 TJm +(case) 17.1456 Tj +-307 TJm +(of) 8.2988 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +191.852 550.635 Td +/F124_0 9.9626 Tf +(BZ_DATA_ERROR) 77.7083 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +269.561 550.635 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-306 TJm +(it) 5.5392 Tj +-306 TJm +(is) 6.6451 Tj +-306 TJm +(sometimes) 42.62 Tj +-306 TJm +(useful) 24.3486 Tj +-307 TJm +(to) 7.7509 Tj +-306 TJm +(kno) 14.9439 Tj +25 TJm +(w) 7.193 Tj +-306 TJm +(when) 21.579 Tj +-306 TJm +(the) 12.1743 Tj +-306 TJm +(compressed) 47.0334 Tj +-306 TJm +(stream) 26.5603 Tj +-306 TJm +(does) 18.2614 Tj +108 538.68 Td +(not) 12.7322 Tj +-250 TJm +(start) 17.1556 Tj +-250 TJm +(with) 17.7135 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(correct) 27.6562 Tj +-250 TJm +(magic) 24.3486 Tj +-250 TJm +(bytes) 21.031 Tj +-250 TJm +(\() 3.3175 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +261.562 538.68 Td +/F124_0 9.9626 Tf +('B') 17.9327 Tj +-600 TJm +('Z') 17.9327 Tj +-600 TJm +('h') 17.9327 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +327.316 538.68 Td +/F122_0 9.9626 Tf +(\).) 5.8082 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 512.777 Td +/F124_0 9.9626 Tf +(BZ_IO_ERROR) 65.7532 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 500.822 Td +/F122_0 9.9626 Tf +(Returned) 36.5229 Tj +-233 TJm +(by) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +159.123 500.822 Td +/F124_0 9.9626 Tf +(BZ2_bzRead) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +221.218 500.822 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +237.922 500.822 Td +/F124_0 9.9626 Tf +(BZ2_bzWrite) 65.7532 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +305.995 500.822 Td +/F122_0 9.9626 Tf +(when) 21.579 Tj +-233 TJm +(there) 19.9152 Tj +-232 TJm +(is) 6.6451 Tj +-233 TJm +(an) 9.4047 Tj +-233 TJm +(error) 19.3573 Tj +-233 TJm +(reading) 29.8778 Tj +-232 TJm +(or) 8.2988 Tj +-233 TJm +(writing) 28.782 Tj +-233 TJm +(in) 7.7509 Tj +-233 TJm +(the) 12.1743 Tj +-232 TJm +(compressed) 47.0334 Tj +108 488.867 Td +(\002le,) 15.2229 Tj +-384 TJm +(and) 14.386 Tj +-357 TJm +(by) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +158.511 488.867 Td +/F124_0 9.9626 Tf +(BZ2_bzReadOpen) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +245.755 488.867 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +263.698 488.867 Td +/F124_0 9.9626 Tf +(BZ2_bzWriteOpen) 89.6634 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +356.92 488.867 Td +/F122_0 9.9626 Tf +(for) 11.6164 Tj +-357 TJm +(attempts) 33.7633 Tj +-357 TJm +(to) 7.7509 Tj +-357 TJm +(use) 13.2801 Tj +-357 TJm +(a) 4.4234 Tj +-357 TJm +(\002le) 12.7322 Tj +-357 TJm +(for) 11.6164 Tj +-358 TJm +(which) 24.3486 Tj +-357 TJm +(the) 12.1743 Tj +-357 TJm +(error) 19.3573 Tj +108 476.912 Td +(indicator) 35.417 Tj +-260 TJm +(\(viz,) 17.9825 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +166.603 476.912 Td +/F124_0 9.9626 Tf +(ferror\(f\)) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +220.401 476.912 Td +/F122_0 9.9626 Tf +(\)) 3.3175 Tj +-260 TJm +(is) 6.6451 Tj +-260 TJm +(set.) 13.5591 Tj +-680 TJm +(On) 12.1743 Tj +-259 TJm +(receipt) 27.1082 Tj +-260 TJm +(of) 8.2988 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +311.223 476.912 Td +/F124_0 9.9626 Tf +(BZ_IO_ERROR) 65.7532 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +376.976 476.912 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-260 TJm +(the) 12.1743 Tj +-260 TJm +(caller) 22.1269 Tj +-260 TJm +(should) 26.5703 Tj +-260 TJm +(consult) 28.782 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +482.068 476.912 Td +/F124_0 9.9626 Tf +(errno) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +514.546 476.912 Td +/F122_0 9.9626 Tf +(and/or) 25.4544 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 464.956 Td +/F124_0 9.9626 Tf +(perror) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +146.356 464.956 Td +/F122_0 9.9626 Tf +(to) 7.7509 Tj +-250 TJm +(acquire) 29.3199 Tj +-250 TJm +(operating-system) 68.6224 Tj +-250 TJm +(speci\002c) 30.4357 Tj +-250 TJm +(information) 47.0434 Tj +-250 TJm +(about) 22.1369 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(problem.) 35.696 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 439.054 Td +/F124_0 9.9626 Tf +(BZ_UNEXPECTED_EOF) 101.6185 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 427.099 Td +/F122_0 9.9626 Tf +(Returned) 36.5229 Tj +-250 TJm +(by) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +159.467 427.099 Td +/F124_0 9.9626 Tf +(BZ2_bzRead) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +221.733 427.099 Td +/F122_0 9.9626 Tf +(when) 21.579 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(compressed) 47.0334 Tj +-250 TJm +(\002le) 12.7322 Tj +-250 TJm +(\002nishes) 30.4457 Tj +-250 TJm +(before) 25.4445 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(logical) 27.1182 Tj +-250 TJm +(end) 14.386 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(stream) 26.5603 Tj +-250 TJm +(is) 6.6451 Tj +-250 TJm +(detected.) 35.686 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 401.196 Td +/F124_0 9.9626 Tf +(BZ_OUTBUFF_FULL) 89.6634 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +108 389.241 Td +/F122_0 9.9626 Tf +(Returned) 36.5229 Tj +-258 TJm +(by) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +159.632 389.241 Td +/F124_0 9.9626 Tf +(BZ2_bzBuffToBuffCompress) 143.4614 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +305.668 389.241 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +322.627 389.241 Td +/F124_0 9.9626 Tf +(BZ2_bzBuffToBuffDecompress) 155.4166 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +480.617 389.241 Td +/F122_0 9.9626 Tf +(to) 7.7509 Tj +-258 TJm +(indicate) 31.5416 Tj +-259 TJm +(that) 14.9439 Tj +108 377.285 Td +(the) 12.1743 Tj +-250 TJm +(output) 25.4644 Tj +-250 TJm +(data) 16.5977 Tj +-250 TJm +(will) 15.5018 Tj +-250 TJm +(not) 12.7322 Tj +-250 TJm +(\002t) 8.3088 Tj +-250 TJm +(into) 15.5018 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(output) 25.4644 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.2988 Tj +25 TJm +(fer) 11.0585 Tj +-250 TJm +(pro) 13.2801 Tj +15 TJm +(vided.) 24.6275 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 328.585 Td +/F116_0 20.6585 Tf +(3.3.) 34.4584 Tj +-278 TJm +(Lo) 25.2447 Tj +15 TJm +(w-le) 40.1808 Tj +15 TJm +(vel) 28.7153 Tj +-278 TJm +(interface) 86.1046 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 297.964 Td +/F116_0 17.2154 Tf +(3.3.1.) 43.0729 Tj +-278 TJm +(BZ2_bzCompressInit) 171.2244 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +534.414 50.852 Td +/F122_0 9.9626 Tf +(11) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 12 15 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F122_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +496.556 749.245 Td +/F124_0 9.9626 Tf +(libbzip2) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 445.031] cm +0 0 468 274.969 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 711.631 Td +/F124_0 9.9626 Tf +(typedef) 41.8429 Tj +-426 TJm +(struct) 35.8654 Tj +-426 TJm +({) 5.9776 Tj +98.488 699.676 Td +(char) 23.9102 Tj +126.642 697.933 Td +(*) 5.9776 Tj +132.62 699.676 Td +(next_in;) 47.8205 Tj +98.488 687.721 Td +(unsigned) 47.8205 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(avail_in;) 53.798 Tj +98.488 675.766 Td +(unsigned) 47.8205 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(total_in_lo32;) 83.6858 Tj +98.488 663.811 Td +(unsigned) 47.8205 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(total_in_hi32;) 83.6858 Tj +98.488 639.9 Td +(char) 23.9102 Tj +126.642 638.157 Td +(*) 5.9776 Tj +132.62 639.9 Td +(next_out;) 53.798 Tj +98.488 627.945 Td +(unsigned) 47.8205 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(avail_out;) 59.7756 Tj +98.488 615.99 Td +(unsigned) 47.8205 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(total_out_lo32;) 89.6634 Tj +98.488 604.035 Td +(unsigned) 47.8205 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(total_out_hi32;) 89.6634 Tj +98.488 580.124 Td +(void) 23.9102 Tj +126.642 578.381 Td +(*) 5.9776 Tj +132.62 580.124 Td +(state;) 35.8654 Tj +98.488 556.214 Td +(void) 23.9102 Tj +126.642 554.471 Td +(*) 5.9776 Tj +132.62 556.214 Td +(\() 5.9776 Tj +138.597 554.471 Td +(*) 5.9776 Tj +144.575 556.214 Td +(bzalloc\)\(void) 77.7083 Tj +226.528 554.471 Td +(*) 5.9776 Tj +232.505 556.214 Td +(,int,int\);) 59.7756 Tj +98.488 544.259 Td +(void) 23.9102 Tj +-426 TJm +(\() 5.9776 Tj +132.62 542.515 Td +(*) 5.9776 Tj +138.597 544.259 Td +(bzfree\)\(void) 71.7307 Tj +214.572 542.515 Td +(*) 5.9776 Tj +220.55 544.259 Td +(,void) 29.8878 Tj +254.682 542.515 Td +(*) 5.9776 Tj +260.659 544.259 Td +(\);) 11.9551 Tj +98.488 532.304 Td +(void) 23.9102 Tj +126.642 530.56 Td +(*) 5.9776 Tj +132.62 532.304 Td +(opaque;) 41.8429 Tj +90 520.349 Td +(}) 5.9776 Tj +-426 TJm +(bz_stream;) 59.7756 Tj +90 496.438 Td +(int) 17.9327 Tj +-426 TJm +(BZ2_bzCompressInit) 107.5961 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(bz_stream) 53.798 Tj +292.281 494.695 Td +(*) 5.9776 Tj +298.259 496.438 Td +(strm,) 29.8878 Tj +196.099 484.483 Td +(int) 17.9327 Tj +-426 TJm +(blockSize100k,) 83.6858 Tj +196.099 472.528 Td +(int) 17.9327 Tj +-426 TJm +(verbosity,) 59.7756 Tj +196.099 460.573 Td +(int) 17.9327 Tj +-426 TJm +(workFactor) 59.7756 Tj +-426 TJm +(\);) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 423.113 Td +/F122_0 9.9626 Tf +(Prepares) 34.3012 Tj +-356 TJm +(for) 11.6164 Tj +-356 TJm +(compression.) 52.8516 Tj +-1256 TJm +(The) 15.4918 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +209.41 423.113 Td +/F124_0 9.9626 Tf +(bz_stream) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +266.754 423.113 Td +/F122_0 9.9626 Tf +(structure) 34.8591 Tj +-356 TJm +(holds) 21.589 Tj +-356 TJm +(all) 9.9626 Tj +-356 TJm +(data) 16.5977 Tj +-356 TJm +(pertaining) 40.3983 Tj +-356 TJm +(to) 7.7509 Tj +-356 TJm +(the) 12.1743 Tj +-356 TJm +(compression) 50.3609 Tj +-355 TJm +(acti) 14.386 Tj +25 TJm +(vity) 15.5018 Tj +65 TJm +(.) 2.4907 Tj +-1256 TJm +(A) 7.193 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 411.158 Td +/F124_0 9.9626 Tf +(bz_stream) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +128.581 411.158 Td +/F122_0 9.9626 Tf +(structure) 34.8591 Tj +-279 TJm +(should) 26.5703 Tj +-280 TJm +(be) 9.4047 Tj +-279 TJm +(allocated) 35.965 Tj +-279 TJm +(and) 14.386 Tj +-280 TJm +(initialised) 39.3025 Tj +-279 TJm +(prior) 19.3673 Tj +-279 TJm +(to) 7.7509 Tj +-279 TJm +(the) 12.1743 Tj +-280 TJm +(call.) 16.8766 Tj +-796 TJm +(The) 15.4918 Tj +-279 TJm +(\002elds) 21.589 Tj +-279 TJm +(of) 8.2988 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +431.939 411.158 Td +/F124_0 9.9626 Tf +(bz_stream) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +488.52 411.158 Td +/F122_0 9.9626 Tf +(comprise) 36.5229 Tj +-279 TJm +(the) 12.1743 Tj +72 399.203 Td +(entirety) 30.4357 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(user) 16.5977 Tj +20 TJm +(-visible) 29.8878 Tj +-250 TJm +(data.) 19.0883 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +204.422 399.203 Td +/F124_0 9.9626 Tf +(state) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +236.8 399.203 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(pointer) 28.224 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(pri) 11.0684 Tj +25 TJm +(v) 4.9813 Tj +25 TJm +(ate) 11.6164 Tj +-250 TJm +(data) 16.5977 Tj +-250 TJm +(structures) 38.7346 Tj +-250 TJm +(required) 33.1954 Tj +-250 TJm +(for) 11.6164 Tj +-250 TJm +(compression.) 52.8516 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 377.285 Td +(Custom) 31.0036 Tj +-372 TJm +(memory) 33.2053 Tj +-372 TJm +(allocators) 38.7346 Tj +-372 TJm +(are) 12.1643 Tj +-372 TJm +(supported,) 41.7831 Tj +-403 TJm +(via) 12.1743 Tj +-372 TJm +(\002elds) 21.589 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +288.908 377.285 Td +/F124_0 9.9626 Tf +(bzalloc) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +330.751 377.285 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +337.253 377.285 Td +/F124_0 9.9626 Tf +(bzfree) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +373.118 377.285 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-403 TJm +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +397.714 377.285 Td +/F124_0 9.9626 Tf +(opaque) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +433.579 377.285 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +-1353 TJm +(The) 15.4918 Tj +-372 TJm +(v) 4.9813 Tj +25 TJm +(alue) 16.5977 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +493.782 377.285 Td +/F124_0 9.9626 Tf +(opaque) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +533.355 377.285 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +72 365.33 Td +(passed) 26.5603 Tj +-306 TJm +(to) 7.7509 Tj +-306 TJm +(as) 8.2988 Tj +-306 TJm +(the) 12.1743 Tj +-306 TJm +(\002rst) 15.5018 Tj +-306 TJm +(ar) 7.7409 Tj +18 TJm +(gument) 29.8878 Tj +-306 TJm +(to) 7.7509 Tj +-306 TJm +(all) 9.9626 Tj +-306 TJm +(calls) 18.2614 Tj +-305 TJm +(to) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +253.941 365.33 Td +/F124_0 9.9626 Tf +(bzalloc) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +298.832 365.33 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +316.266 365.33 Td +/F124_0 9.9626 Tf +(bzfree) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +352.132 365.33 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-320 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-306 TJm +(is) 6.6451 Tj +-306 TJm +(otherwise) 38.7346 Tj +-306 TJm +(ignored) 30.4357 Tj +-306 TJm +(by) 9.9626 Tj +-306 TJm +(the) 12.1743 Tj +-306 TJm +(library) 26.5603 Tj +65 TJm +(.) 2.4907 Tj +-955 TJm +(The) 15.4918 Tj +72 353.375 Td +(call) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +89.431 353.375 Td +/F124_0 9.9626 Tf +(bzalloc) 41.8429 Tj +-600 TJm +(\() 5.9776 Tj +-600 TJm +(opaque,) 41.8429 Tj +-600 TJm +(n,) 11.9551 Tj +-600 TJm +(m) 5.9776 Tj +-600 TJm +(\)) 5.9776 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +235.938 353.375 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-306 TJm +(e) 4.4234 Tj +15 TJm +(xpected) 30.9837 Tj +-305 TJm +(to) 7.7509 Tj +-306 TJm +(return) 23.7907 Tj +-306 TJm +(a) 4.4234 Tj +-305 TJm +(pointer) 28.224 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +360.3 353.375 Td +/F124_0 9.9626 Tf +(p) 5.9776 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +369.322 353.375 Td +/F122_0 9.9626 Tf +(to) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +380.118 353.375 Td +/F124_0 9.9626 Tf +(n) 5.9776 Tj +392.073 351.631 Td +(*) 5.9776 Tj +404.029 353.375 Td +(m) 5.9776 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +413.051 353.375 Td +/F122_0 9.9626 Tf +(bytes) 21.031 Tj +-306 TJm +(of) 8.2988 Tj +-305 TJm +(memory) 33.2053 Tj +65 TJm +(,) 2.4907 Tj +-320 TJm +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +504.135 353.375 Td +/F124_0 9.9626 Tf +(bzfree) 35.8654 Tj +72 341.42 Td +(\() 5.9776 Tj +-600 TJm +(opaque,) 41.8429 Tj +-600 TJm +(p) 5.9776 Tj +-600 TJm +(\)) 5.9776 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +152.199 341.42 Td +/F122_0 9.9626 Tf +(should) 26.5703 Tj +-250 TJm +(free) 15.4819 Tj +-250 TJm +(that) 14.9439 Tj +-250 TJm +(memory) 33.2053 Tj +65 TJm +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 319.502 Td +(If) 6.6351 Tj +-280 TJm +(you) 14.9439 Tj +-280 TJm +(don') 18.2614 Tj +18 TJm +(t) 2.7696 Tj +-280 TJm +(w) 7.193 Tj +10 TJm +(ant) 12.1743 Tj +-279 TJm +(to) 7.7509 Tj +-280 TJm +(use) 13.2801 Tj +-280 TJm +(a) 4.4234 Tj +-280 TJm +(custom) 28.782 Tj +-280 TJm +(memory) 33.2053 Tj +-279 TJm +(allocator) 34.8591 Tj +40 TJm +(,) 2.4907 Tj +-288 TJm +(set) 11.0684 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +299.9 319.502 Td +/F124_0 9.9626 Tf +(bzalloc) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +341.743 319.502 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +347.096 319.502 Td +/F124_0 9.9626 Tf +(bzfree) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +385.749 319.502 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +402.923 319.502 Td +/F124_0 9.9626 Tf +(opaque) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +441.576 319.502 Td +/F122_0 9.9626 Tf +(to) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +452.115 319.502 Td +/F124_0 9.9626 Tf +(NULL) 23.9102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +476.025 319.502 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-280 TJm +(and) 14.386 Tj +-280 TJm +(the) 12.1743 Tj +-280 TJm +(library) 26.5603 Tj +72 307.547 Td +(will) 15.5018 Tj +-250 TJm +(then) 17.1556 Tj +-250 TJm +(use) 13.2801 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(standard) 33.7533 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +176.318 307.547 Td +/F124_0 9.9626 Tf +(malloc) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +214.674 307.547 Td +/F122_0 9.9626 Tf +(/) 2.7696 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +219.934 307.547 Td +/F124_0 9.9626 Tf +(free) 23.9102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +246.335 307.547 Td +/F122_0 9.9626 Tf +(routines.) 34.5901 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 285.629 Td +(Before) 27.1082 Tj +-362 TJm +(calling) 27.1182 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +133.438 285.629 Td +/F124_0 9.9626 Tf +(BZ2_bzCompressInit) 107.5961 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +241.035 285.629 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-390 TJm +(\002elds) 21.589 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +272.606 285.629 Td +/F124_0 9.9626 Tf +(bzalloc) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +314.449 285.629 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +320.825 285.629 Td +/F124_0 9.9626 Tf +(bzfree) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +360.296 285.629 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +378.289 285.629 Td +/F124_0 9.9626 Tf +(opaque) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +417.76 285.629 Td +/F122_0 9.9626 Tf +(should) 26.5703 Tj +-362 TJm +(be) 9.4047 Tj +-362 TJm +(\002lled) 20.4831 Tj +-362 TJm +(appropriately) 53.1206 Tj +65 TJm +(,) 2.4907 Tj +72 273.674 Td +(as) 8.2988 Tj +-322 TJm +(just) 14.396 Tj +-323 TJm +(described.) 40.6673 Tj +-1055 TJm +(Upon) 22.1369 Tj +-322 TJm +(return,) 26.2813 Tj +-341 TJm +(the) 12.1743 Tj +-322 TJm +(internal) 30.4357 Tj +-323 TJm +(state) 18.2614 Tj +-322 TJm +(will) 15.5018 Tj +-323 TJm +(ha) 9.4047 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-322 TJm +(been) 18.8094 Tj +-323 TJm +(allocated) 35.965 Tj +-322 TJm +(and) 14.386 Tj +-323 TJm +(initialised,) 41.7931 Tj +-340 TJm +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +459.801 273.674 Td +/F124_0 9.9626 Tf +(total_in_lo32) 77.7083 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +537.509 273.674 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 261.718 Td +/F124_0 9.9626 Tf +(total_in_hi32) 77.7083 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +149.709 261.718 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +155.006 261.718 Td +/F124_0 9.9626 Tf +(total_out_lo32) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +241.435 261.718 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +258.564 261.718 Td +/F124_0 9.9626 Tf +(total_out_hi32) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +344.994 261.718 Td +/F122_0 9.9626 Tf +(will) 15.5018 Tj +-275 TJm +(ha) 9.4047 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-276 TJm +(been) 18.8094 Tj +-275 TJm +(set) 11.0684 Tj +-275 TJm +(to) 7.7509 Tj +-276 TJm +(zero.) 19.6363 Tj +-772 TJm +(These) 23.7907 Tj +-275 TJm +(four) 16.5977 Tj +-275 TJm +(\002elds) 21.589 Tj +-276 TJm +(are) 12.1643 Tj +72 249.763 Td +(used) 18.2614 Tj +-340 TJm +(by) 9.9626 Tj +-339 TJm +(the) 12.1743 Tj +-340 TJm +(library) 26.5603 Tj +-339 TJm +(to) 7.7509 Tj +-340 TJm +(inform) 27.1182 Tj +-339 TJm +(the) 12.1743 Tj +-340 TJm +(caller) 22.1269 Tj +-339 TJm +(of) 8.2988 Tj +-340 TJm +(the) 12.1743 Tj +-339 TJm +(total) 17.7135 Tj +-340 TJm +(amount) 29.8878 Tj +-339 TJm +(of) 8.2988 Tj +-340 TJm +(data) 16.5977 Tj +-340 TJm +(passed) 26.5603 Tj +-339 TJm +(into) 15.5018 Tj +-340 TJm +(and) 14.386 Tj +-339 TJm +(out) 12.7322 Tj +-340 TJm +(of) 8.2988 Tj +-339 TJm +(the) 12.1743 Tj +-340 TJm +(library) 26.5603 Tj +65 TJm +(,) 2.4907 Tj +-362 TJm +(respecti) 30.9837 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ely) 12.1743 Tj +65 TJm +(.) 2.4907 Tj +72 237.808 Td +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-376 TJm +(should) 26.5703 Tj +-377 TJm +(not) 12.7322 Tj +-376 TJm +(try) 11.0684 Tj +-376 TJm +(to) 7.7509 Tj +-377 TJm +(change) 28.2141 Tj +-376 TJm +(them.) 22.4159 Tj +-1378 TJm +(As) 11.0684 Tj +-377 TJm +(of) 8.2988 Tj +-376 TJm +(v) 4.9813 Tj +15 TJm +(ersion) 24.3486 Tj +-377 TJm +(1.0,) 14.9439 Tj +-408 TJm +(64-bit) 23.8007 Tj +-376 TJm +(counts) 26.0123 Tj +-376 TJm +(are) 12.1643 Tj +-377 TJm +(maintained,) 46.7644 Tj +-408 TJm +(e) 4.4234 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(en) 9.4047 Tj +-376 TJm +(on) 9.9626 Tj +-376 TJm +(32-bit) 23.8007 Tj +-377 TJm +(platforms,) 40.6773 Tj +72 225.853 Td +(using) 21.589 Tj +-371 TJm +(the) 12.1743 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +113.148 225.853 Td +/F124_0 9.9626 Tf +(_hi32) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +146.729 225.853 Td +/F122_0 9.9626 Tf +(\002elds) 21.589 Tj +-371 TJm +(to) 7.7509 Tj +-370 TJm +(store) 19.3673 Tj +-371 TJm +(the) 12.1743 Tj +-371 TJm +(upper) 22.6848 Tj +-370 TJm +(32) 9.9626 Tj +-371 TJm +(bits) 14.396 Tj +-370 TJm +(of) 8.2988 Tj +-371 TJm +(the) 12.1743 Tj +-371 TJm +(count.) 24.6275 Tj +-1344 TJm +(So,) 13.0112 Tj +-400 TJm +(for) 11.6164 Tj +-371 TJm +(e) 4.4234 Tj +15 TJm +(xample,) 31.8205 Tj +-401 TJm +(the) 12.1743 Tj +-371 TJm +(total) 17.7135 Tj +-370 TJm +(amount) 29.8878 Tj +-371 TJm +(of) 8.2988 Tj +-370 TJm +(data) 16.5977 Tj +-371 TJm +(in) 7.7509 Tj +-371 TJm +(is) 6.6451 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 213.898 Td +/F124_0 9.9626 Tf +(\(total_in_hi32) 83.6858 Tj +-600 TJm +(<<) 11.9551 Tj +-600 TJm +(32\)) 17.9327 Tj +-600 TJm +(+) 5.9776 Tj +-600 TJm +(total_in_lo32) 77.7083 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +293.171 213.898 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 191.98 Td +(P) 5.5392 Tj +15 TJm +(arameter) 34.8492 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +115.367 191.98 Td +/F124_0 9.9626 Tf +(blockSize100k) 77.7083 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +196.205 191.98 Td +/F122_0 9.9626 Tf +(speci\002es) 34.3112 Tj +-314 TJm +(the) 12.1743 Tj +-314 TJm +(block) 22.1369 Tj +-314 TJm +(size) 15.4918 Tj +-314 TJm +(to) 7.7509 Tj +-314 TJm +(be) 9.4047 Tj +-314 TJm +(used) 18.2614 Tj +-314 TJm +(for) 11.6164 Tj +-314 TJm +(compression.) 52.8516 Tj +-1004 TJm +(It) 6.0871 Tj +-314 TJm +(should) 26.5703 Tj +-314 TJm +(be) 9.4047 Tj +-314 TJm +(a) 4.4234 Tj +-315 TJm +(v) 4.9813 Tj +25 TJm +(al) 7.193 Tj +1 TJm +(u) 4.9813 Tj +-1 TJm +(e) 4.4234 Tj +-314 TJm +(between) 33.1954 Tj +-314 TJm +(1) 4.9813 Tj +72 180.025 Td +(and) 14.386 Tj +-289 TJm +(9) 4.9813 Tj +-289 TJm +(inclusi) 26.5703 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e,) 6.914 Tj +-299 TJm +(and) 14.386 Tj +-289 TJm +(the) 12.1743 Tj +-289 TJm +(actual) 23.7907 Tj +-289 TJm +(block) 22.1369 Tj +-289 TJm +(size) 15.4918 Tj +-289 TJm +(used) 18.2614 Tj +-289 TJm +(is) 6.6451 Tj +-289 TJm +(100000) 29.8878 Tj +-289 TJm +(x) 4.9813 Tj +-289 TJm +(this) 14.396 Tj +-289 TJm +(\002gure.) 25.7334 Tj +-854 TJm +(9) 4.9813 Tj +-290 TJm +(gi) 7.7509 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(es) 8.2988 Tj +-289 TJm +(the) 12.1743 Tj +-289 TJm +(best) 16.0497 Tj +-289 TJm +(compression) 50.3609 Tj +-289 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-289 TJm +(tak) 12.1743 Tj +10 TJm +(es) 8.2988 Tj +-289 TJm +(most) 19.3773 Tj +72 168.07 Td +(memory) 33.2053 Tj +65 TJm +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 146.152 Td +(P) 5.5392 Tj +15 TJm +(arameter) 34.8492 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +115.095 146.152 Td +/F124_0 9.9626 Tf +(verbosity) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +171.75 146.152 Td +/F122_0 9.9626 Tf +(should) 26.5703 Tj +-287 TJm +(be) 9.4047 Tj +-286 TJm +(set) 11.0684 Tj +-287 TJm +(to) 7.7509 Tj +-287 TJm +(a) 4.4234 Tj +-287 TJm +(number) 30.4357 Tj +-286 TJm +(between) 33.1954 Tj +-287 TJm +(0) 4.9813 Tj +-287 TJm +(and) 14.386 Tj +-287 TJm +(4) 4.9813 Tj +-286 TJm +(inclusi) 26.5703 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e.) 6.914 Tj +-841 TJm +(0) 4.9813 Tj +-286 TJm +(is) 6.6451 Tj +-287 TJm +(silent,) 24.0796 Tj +-296 TJm +(and) 14.386 Tj +-287 TJm +(greater) 27.6562 Tj +-287 TJm +(numbers) 34.3112 Tj +-286 TJm +(gi) 7.7509 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +72 134.197 Td +(increasingly) 48.6972 Tj +-342 TJm +(v) 4.9813 Tj +15 TJm +(erbose) 26.0024 Tj +-342 TJm +(monitoring/deb) 61.4394 Tj +20 TJm +(ugging) 27.6761 Tj +-342 TJm +(output.) 27.9551 Tj +-1173 TJm +(If) 6.6351 Tj +-343 TJm +(the) 12.1743 Tj +-342 TJm +(library) 26.5603 Tj +-342 TJm +(has) 13.2801 Tj +-342 TJm +(been) 18.8094 Tj +-342 TJm +(compiled) 37.0808 Tj +-342 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +446.429 134.197 Td +/F124_0 9.9626 Tf +(-DBZ_NO_STDIO) 77.7083 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +524.138 134.197 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-342 TJm +(no) 9.9626 Tj +72 122.241 Td +(such) 18.2614 Tj +-250 TJm +(output) 25.4644 Tj +-250 TJm +(will) 15.5018 Tj +-250 TJm +(appear) 26.5503 Tj +-250 TJm +(for) 11.6164 Tj +-250 TJm +(an) 9.4047 Tj +15 TJm +(y) 4.9813 Tj +-250 TJm +(v) 4.9813 Tj +15 TJm +(erbosity) 32.0995 Tj +-250 TJm +(setting.) 29.0609 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 100.324 Td +(P) 5.5392 Tj +15 TJm +(arameter) 34.8492 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +116.619 100.324 Td +/F124_0 9.9626 Tf +(workFactor) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +180.775 100.324 Td +/F122_0 9.9626 Tf +(controls) 32.0995 Tj +-440 TJm +(ho) 9.9626 Tj +25 TJm +(w) 7.193 Tj +-439 TJm +(the) 12.1743 Tj +-440 TJm +(compression) 50.3609 Tj +-439 TJm +(phase) 22.6848 Tj +-440 TJm +(beha) 18.8094 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(es) 8.2988 Tj +-440 TJm +(when) 21.579 Tj +-439 TJm +(presented) 38.1767 Tj +-440 TJm +(with) 17.7135 Tj +-440 TJm +(w) 7.193 Tj +10 TJm +(orst) 14.9439 Tj +-439 TJm +(case,) 19.6363 Tj +-487 TJm +(highly) 25.4644 Tj +72 88.368 Td +(repetiti) 28.224 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e,) 6.914 Tj +-433 TJm +(input) 20.4831 Tj +-396 TJm +(data.) 19.0883 Tj +-1496 TJm +(If) 6.6351 Tj +-396 TJm +(compression) 50.3609 Tj +-396 TJm +(runs) 17.1556 Tj +-397 TJm +(i) 2.7696 Tj +1 TJm +(nto) 12.7322 Tj +-397 TJm +(dif) 11.0684 Tj +25 TJm +(\002culties) 31.5516 Tj +-396 TJm +(caused) 27.1082 Tj +-396 TJm +(by) 9.9626 Tj +-396 TJm +(repetiti) 28.224 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-396 TJm +(data,) 19.0883 Tj +-432 TJm +(the) 12.1743 Tj +-397 TJm +(library) 26.5603 Tj +-396 TJm +(switches) 34.3112 Tj +-396 TJm +(from) 19.3673 Tj +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +534.414 50.852 Td +(12) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 13 16 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F122_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +496.556 749.245 Td +/F124_0 9.9626 Tf +(libbzip2) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +72 710.037 Td +/F122_0 9.9626 Tf +(the) 12.1743 Tj +-255 TJm +(standard) 33.7533 Tj +-254 TJm +(sorting) 27.6761 Tj +-255 TJm +(algorithm) 38.7446 Tj +-254 TJm +(to) 7.7509 Tj +-255 TJm +(a) 4.4234 Tj +-255 TJm +(f) 3.3175 Tj +10 TJm +(allback) 28.772 Tj +-254 TJm +(algorithm.) 41.2352 Tj +-648 TJm +(The) 15.4918 Tj +-255 TJm +(f) 3.3175 Tj +10 TJm +(allback) 28.772 Tj +-254 TJm +(is) 6.6451 Tj +-255 TJm +(slo) 11.6264 Tj +25 TJm +(wer) 14.9339 Tj +-255 TJm +(than) 17.1556 Tj +-254 TJm +(the) 12.1743 Tj +-255 TJm +(standard) 33.7533 Tj +-254 TJm +(algorithm) 38.7446 Tj +-255 TJm +(by) 9.9626 Tj +-255 TJm +(perhaps) 30.9837 Tj +72 698.082 Td +(a) 4.4234 Tj +-250 TJm +(f) 3.3175 Tj +10 TJm +(actor) 19.9152 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(three,) 22.4059 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-250 TJm +(al) 7.193 Tj +10 TJm +(w) 7.193 Tj +10 TJm +(ays) 13.2801 Tj +-250 TJm +(beha) 18.8094 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(es) 8.2988 Tj +-250 TJm +(reasonably) 43.158 Tj +65 TJm +(,) 2.4907 Tj +-250 TJm +(no) 9.9626 Tj +-250 TJm +(matter) 25.4544 Tj +-250 TJm +(ho) 9.9626 Tj +25 TJm +(w) 7.193 Tj +-250 TJm +(bad) 14.386 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(input.) 22.9738 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 676.268 Td +(Lo) 11.0684 Tj +25 TJm +(wer) 14.9339 Tj +-240 TJm +(v) 4.9813 Tj +25 TJm +(alues) 20.4731 Tj +-239 TJm +(of) 8.2988 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +138.421 676.268 Td +/F124_0 9.9626 Tf +(workFactor) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +200.585 676.268 Td +/F122_0 9.9626 Tf +(reduce) 26.5503 Tj +-240 TJm +(the) 12.1743 Tj +-239 TJm +(amount) 29.8878 Tj +-240 TJm +(of) 8.2988 Tj +-240 TJm +(ef) 7.7409 Tj +25 TJm +(fort) 14.386 Tj +-239 TJm +(the) 12.1743 Tj +-240 TJm +(standard) 33.7533 Tj +-240 TJm +(algorithm) 38.7446 Tj +-240 TJm +(wi) 9.9626 Tj +1 TJm +(ll) 5.5392 Tj +-240 TJm +(e) 4.4234 Tj +15 TJm +(xpend) 24.3486 Tj +-240 TJm +(before) 25.4445 Tj +-240 TJm +(resorting) 35.417 Tj +-239 TJm +(to) 7.7509 Tj +-240 TJm +(the) 12.1743 Tj +72 664.313 Td +(f) 3.3175 Tj +10 TJm +(allback.) 31.2626 Tj +-618 TJm +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-248 TJm +(should) 26.5703 Tj +-247 TJm +(set) 11.0684 Tj +-248 TJm +(this) 14.396 Tj +-247 TJm +(parameter) 39.8305 Tj +-248 TJm +(carefully;) 38.1767 Tj +-248 TJm +(too) 12.7322 Tj +-248 TJm +(lo) 7.7509 Tj +25 TJm +(w) 7.193 Tj +65 TJm +(,) 2.4907 Tj +-248 TJm +(and) 14.386 Tj +-247 TJm +(man) 17.1556 Tj +15 TJm +(y) 4.9813 Tj +-248 TJm +(inputs) 24.3586 Tj +-248 TJm +(will) 15.5018 Tj +-247 TJm +(be) 9.4047 Tj +-248 TJm +(handled) 31.5416 Tj +-247 TJm +(by) 9.9626 Tj +-248 TJm +(the) 12.1743 Tj +-247 TJm +(f) 3.3175 Tj +10 TJm +(allback) 28.772 Tj +-248 TJm +(algorithm) 38.7446 Tj +72 652.358 Td +(and) 14.386 Tj +-308 TJm +(so) 8.8568 Tj +-308 TJm +(compress) 37.6287 Tj +-308 TJm +(rather) 23.2328 Tj +-309 TJm +(slo) 11.6264 Tj +25 TJm +(wly) 14.9439 Tj +65 TJm +(,) 2.4907 Tj +-322 TJm +(too) 12.7322 Tj +-309 TJm +(high,) 20.2042 Tj +-322 TJm +(and) 14.386 Tj +-308 TJm +(your) 18.2614 Tj +-309 TJm +(a) 4.4234 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(erage-to-w) 43.148 Tj +10 TJm +(orst) 14.9439 Tj +-308 TJm +(case) 17.1456 Tj +-308 TJm +(compression) 50.3609 Tj +-308 TJm +(times) 21.589 Tj +-308 TJm +(can) 13.8281 Tj +-308 TJm +(become) 30.9837 Tj +-309 TJm +(v) 4.9813 Tj +15 TJm +(ery) 12.7222 Tj +-308 TJm +(lar) 10.5105 Tj +18 TJm +(ge.) 11.8953 Tj +72 640.402 Td +(The) 15.4918 Tj +-250 TJm +(def) 12.7222 Tj +10 TJm +(ault) 14.9439 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alue) 16.5977 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(30) 9.9626 Tj +-250 TJm +(gi) 7.7509 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(es) 8.2988 Tj +-250 TJm +(reasonable) 42.6001 Tj +-250 TJm +(beha) 18.8094 Tj +20 TJm +(viour) 21.031 Tj +-250 TJm +(o) 4.9813 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(er) 7.7409 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(wide) 19.3673 Tj +-250 TJm +(range) 22.1269 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(circumstances.) 58.9288 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 618.588 Td +(Allo) 17.7135 Tj +25 TJm +(w) 7.193 Tj +10 TJm +(able) 16.5977 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alues) 20.4731 Tj +-250 TJm +(range) 22.1269 Tj +-250 TJm +(from) 19.3673 Tj +-250 TJm +(0) 4.9813 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(250) 14.9439 Tj +-250 TJm +(inclusi) 26.5703 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e.) 6.914 Tj +-620 TJm +(0) 4.9813 Tj +-250 TJm +(is) 6.6451 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(special) 27.6661 Tj +-250 TJm +(case,) 19.6363 Tj +-250 TJm +(equi) 17.1556 Tj +25 TJm +(v) 4.9813 Tj +25 TJm +(alent) 19.3673 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(using) 21.589 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(def) 12.7222 Tj +10 TJm +(ault) 14.9439 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alue) 16.5977 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(30.) 12.4533 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 596.774 Td +(Note) 19.3673 Tj +-250 TJm +(that) 14.9439 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(compressed) 47.0334 Tj +-250 TJm +(output) 25.4644 Tj +-250 TJm +(generated) 38.7246 Tj +-250 TJm +(is) 6.6451 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(same) 20.4731 Tj +-250 TJm +(re) 7.7409 Tj +15 TJm +(g) 4.9813 Tj +5 TJm +(ardless) 27.6661 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(whether) 32.0895 Tj +-250 TJm +(or) 8.2988 Tj +-250 TJm +(not) 12.7322 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(f) 3.3175 Tj +10 TJm +(allback) 28.772 Tj +-250 TJm +(algorithm) 38.7446 Tj +-250 TJm +(is) 6.6451 Tj +-250 TJm +(used.) 20.7521 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 574.96 Td +(Be) 11.0684 Tj +-303 TJm +(a) 4.4234 Tj +15 TJm +(w) 7.193 Tj +10 TJm +(are) 12.1643 Tj +-303 TJm +(also) 16.0497 Tj +-303 TJm +(that) 14.9439 Tj +-303 TJm +(this) 14.396 Tj +-304 TJm +(parameter) 39.8305 Tj +-303 TJm +(may) 17.1556 Tj +-303 TJm +(disappear) 38.1767 Tj +-303 TJm +(entirely) 30.4357 Tj +-303 TJm +(in) 7.7509 Tj +-303 TJm +(future) 23.7907 Tj +-303 TJm +(v) 4.9813 Tj +15 TJm +(ersions) 28.224 Tj +-303 TJm +(of) 8.2988 Tj +-303 TJm +(the) 12.1743 Tj +-304 TJm +(library) 26.5603 Tj +65 TJm +(.) 2.4907 Tj +-938 TJm +(In) 8.2988 Tj +-303 TJm +(principle) 35.417 Tj +-303 TJm +(it) 5.5392 Tj +-304 TJm +(should) 26.5703 Tj +-303 TJm +(be) 9.4047 Tj +72 563.005 Td +(possible) 32.6574 Tj +-270 TJm +(to) 7.7509 Tj +-270 TJm +(de) 9.4047 Tj +25 TJm +(vise) 16.0497 Tj +-270 TJm +(a) 4.4234 Tj +-270 TJm +(good) 19.9252 Tj +-270 TJm +(w) 7.193 Tj +10 TJm +(ay) 9.4047 Tj +-270 TJm +(to) 7.7509 Tj +-271 TJm +(automat) 32.0995 Tj +1 TJm +(ically) 22.1369 Tj +-271 TJm +(choose) 27.6661 Tj +-270 TJm +(which) 24.3486 Tj +-270 TJm +(algorithm) 38.7446 Tj +-270 TJm +(to) 7.7509 Tj +-270 TJm +(use.) 15.7708 Tj +-740 TJm +(Such) 19.9252 Tj +-270 TJm +(a) 4.4234 Tj +-270 TJm +(mechanism) 45.3796 Tj +-271 TJm +(w) 7.193 Tj +10 TJm +(ould) 17.7135 Tj +-270 TJm +(render) 25.4445 Tj +-270 TJm +(the) 12.1743 Tj +72 551.049 Td +(parameter) 39.8305 Tj +-250 TJm +(obsolete.) 35.696 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 529.235 Td +(Possible) 33.2153 Tj +-250 TJm +(return) 23.7907 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alues:) 23.2427 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 384.677] cm +0 0 468 143.462 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 519.771 Td +/F124_0 9.9626 Tf +(BZ_CONFIG_ERROR) 89.6634 Tj +98.488 507.816 Td +(if) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(library) 41.8429 Tj +-426 TJm +(has) 17.9327 Tj +-426 TJm +(been) 23.9102 Tj +-426 TJm +(mis-compiled) 71.7307 Tj +90 495.86 Td +(BZ_PARAM_ERROR) 83.6858 Tj +98.488 483.905 Td +(if) 11.9551 Tj +-426 TJm +(strm) 23.9102 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +98.488 471.95 Td +(or) 11.9551 Tj +-426 TJm +(blockSize) 53.798 Tj +-426 TJm +(<) 5.9776 Tj +-426 TJm +(1) 5.9776 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(blockSize) 53.798 Tj +-426 TJm +(>) 5.9776 Tj +-426 TJm +(9) 5.9776 Tj +98.488 459.995 Td +(or) 11.9551 Tj +-426 TJm +(verbosity) 53.798 Tj +-426 TJm +(<) 5.9776 Tj +-426 TJm +(0) 5.9776 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(verbosity) 53.798 Tj +-426 TJm +(>) 5.9776 Tj +-426 TJm +(4) 5.9776 Tj +98.488 448.04 Td +(or) 11.9551 Tj +-426 TJm +(workFactor) 59.7756 Tj +-426 TJm +(<) 5.9776 Tj +-426 TJm +(0) 5.9776 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(workFactor) 59.7756 Tj +-426 TJm +(>) 5.9776 Tj +-426 TJm +(250) 17.9327 Tj +90 436.085 Td +(BZ_MEM_ERROR) 71.7307 Tj +98.488 424.129 Td +(if) 11.9551 Tj +-426 TJm +(not) 17.9327 Tj +-426 TJm +(enough) 35.8654 Tj +-426 TJm +(memory) 35.8654 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(available) 53.798 Tj +90 412.174 Td +(BZ_OK) 29.8878 Tj +98.488 400.219 Td +(otherwise) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 362.863 Td +/F122_0 9.9626 Tf +(Allo) 17.7135 Tj +25 TJm +(w) 7.193 Tj +10 TJm +(able) 16.5977 Tj +-250 TJm +(ne) 9.4047 Tj +15 TJm +(xt) 7.7509 Tj +-250 TJm +(actions:) 30.9936 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 313.947] cm +0 0 468 47.821 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 353.399 Td +/F124_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +98.488 341.444 Td +(if) 11.9551 Tj +-426 TJm +(BZ_OK) 29.8878 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(returned) 47.8205 Tj +98.488 329.488 Td +(no) 11.9551 Tj +-426 TJm +(specific) 47.8205 Tj +-426 TJm +(action) 35.8654 Tj +-426 TJm +(needed) 35.8654 Tj +-426 TJm +(in) 11.9551 Tj +-426 TJm +(case) 23.9102 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(error) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 283.429 Td +/F116_0 17.2154 Tf +(3.3.2.) 43.0729 Tj +-278 TJm +(BZ2_bzCompress) 145.4013 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 254.959] cm +0 0 468 23.91 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 270.501 Td +/F124_0 9.9626 Tf +(int) 17.9327 Tj +-426 TJm +(BZ2_bzCompress) 83.6858 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(bz_stream) 53.798 Tj +268.371 268.757 Td +(*) 5.9776 Tj +274.348 270.501 Td +(strm,) 29.8878 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(action) 35.8654 Tj +-426 TJm +(\);) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 233.145 Td +/F122_0 9.9626 Tf +(Pro) 13.8381 Tj +15 TJm +(vides) 21.031 Tj +-222 TJm +(more) 20.4731 Tj +-221 TJm +(input) 20.4831 Tj +-222 TJm +(and/or) 25.4544 Tj +-222 TJm +(output) 25.4644 Tj +-222 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.2988 Tj +25 TJm +(fer) 11.0585 Tj +-221 TJm +(space) 22.1269 Tj +-222 TJm +(for) 11.6164 Tj +-222 TJm +(the) 12.1743 Tj +-221 TJm +(library) 26.5603 Tj +65 TJm +(.) 2.4907 Tj +-601 TJm +(The) 15.4918 Tj +-222 TJm +(caller) 22.1269 Tj +-222 TJm +(maintains) 38.7446 Tj +-222 TJm +(input) 20.4831 Tj +-221 TJm +(and) 14.386 Tj +-222 TJm +(output) 25.4644 Tj +-222 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.2988 Tj +25 TJm +(fers,) 17.4246 Tj +-227 TJm +(and) 14.386 Tj +-222 TJm +(calls) 18.2614 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 221.19 Td +/F124_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +158.177 221.19 Td +/F122_0 9.9626 Tf +(to) 7.7509 Tj +-250 TJm +(transfer) 30.4258 Tj +-250 TJm +(data) 16.5977 Tj +-250 TJm +(between) 33.1954 Tj +-250 TJm +(them.) 22.4159 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 199.375 Td +(Before) 27.1082 Tj +-212 TJm +(each) 18.2515 Tj +-213 TJm +(call) 14.386 Tj +-212 TJm +(to) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +147.961 199.375 Td +/F124_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +231.647 199.375 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +236.329 199.375 Td +/F124_0 9.9626 Tf +(next_in) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +280.288 199.375 Td +/F122_0 9.9626 Tf +(should) 26.5703 Tj +-212 TJm +(point) 20.4831 Tj +-213 TJm +(at) 7.193 Tj +-212 TJm +(the) 12.1743 Tj +-213 TJm +(data) 16.5977 Tj +-212 TJm +(to) 7.7509 Tj +-213 TJm +(be) 9.4047 Tj +-212 TJm +(compressed,) 49.5241 Tj +-220 TJm +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +463.493 199.375 Td +/F124_0 9.9626 Tf +(avail_in) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +513.43 199.375 Td +/F122_0 9.9626 Tf +(should) 26.5703 Tj +72 187.42 Td +(indicate) 31.5416 Tj +-246 TJm +(ho) 9.9626 Tj +25 TJm +(w) 7.193 Tj +-247 TJm +(m) 7.7509 Tj +1 TJm +(an) 9.4047 Tj +14 TJm +(y) 4.9813 Tj +-246 TJm +(bytes) 21.031 Tj +-246 TJm +(the) 12.1743 Tj +-246 TJm +(library) 26.5603 Tj +-247 TJm +(may) 17.1556 Tj +-246 TJm +(read.) 19.6363 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +259.242 187.42 Td +/F124_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +345.382 187.42 Td +/F122_0 9.9626 Tf +(updates) 30.4357 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +378.271 187.42 Td +/F124_0 9.9626 Tf +(next_in) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +420.114 187.42 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +425.066 187.42 Td +/F124_0 9.9626 Tf +(avail_in) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +475.34 187.42 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +492.179 187.42 Td +/F124_0 9.9626 Tf +(total_in) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 175.465 Td +/F122_0 9.9626 Tf +(to) 7.7509 Tj +-250 TJm +(re\003ect) 24.8965 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(number) 30.4357 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(bytes) 21.031 Tj +-250 TJm +(it) 5.5392 Tj +-250 TJm +(has) 13.2801 Tj +-250 TJm +(read.) 19.6363 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 153.651 Td +(Similarly) 37.0908 Tj +65 TJm +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +113.611 153.651 Td +/F124_0 9.9626 Tf +(next_out) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +164.072 153.651 Td +/F122_0 9.9626 Tf +(should) 26.5703 Tj +-265 TJm +(point) 20.4831 Tj +-265 TJm +(to) 7.7509 Tj +-265 TJm +(a) 4.4234 Tj +-265 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.2988 Tj +25 TJm +(fer) 11.0585 Tj +-265 TJm +(in) 7.7509 Tj +-265 TJm +(which) 24.3486 Tj +-265 TJm +(the) 12.1743 Tj +-265 TJm +(compressed) 47.0334 Tj +-265 TJm +(data) 16.5977 Tj +-265 TJm +(is) 6.6451 Tj +-265 TJm +(to) 7.7509 Tj +-265 TJm +(be) 9.4047 Tj +-265 TJm +(placed,) 28.493 Tj +-269 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +464.742 153.651 Td +/F124_0 9.9626 Tf +(avail_out) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +521.181 153.651 Td +/F122_0 9.9626 Tf +(indi-) 18.8194 Tj +72 141.696 Td +(cating) 24.3486 Tj +-209 TJm +(ho) 9.9626 Tj +25 TJm +(w) 7.193 Tj +-209 TJm +(much) 22.1369 Tj +-209 TJm +(output) 25.4644 Tj +-209 TJm +(space) 22.1269 Tj +-209 TJm +(is) 6.6451 Tj +-210 TJm +(a) 4.4234 Tj +20 TJm +(v) 4.9813 Tj +25 TJm +(ailable.) 29.0509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +243.087 141.696 Td +/F124_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +328.856 141.696 Td +/F122_0 9.9626 Tf +(updates) 30.4357 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +361.375 141.696 Td +/F124_0 9.9626 Tf +(next_out) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +409.196 141.696 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +413.851 141.696 Td +/F124_0 9.9626 Tf +(avail_out) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +469.732 141.696 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +486.202 141.696 Td +/F124_0 9.9626 Tf +(total_out) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 129.74 Td +/F122_0 9.9626 Tf +(to) 7.7509 Tj +-250 TJm +(re\003ect) 24.8965 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(number) 30.4357 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(bytes) 21.031 Tj +-250 TJm +(output.) 27.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 107.926 Td +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-272 TJm +(may) 17.1556 Tj +-272 TJm +(pro) 13.2801 Tj +15 TJm +(vide) 17.1556 Tj +-272 TJm +(and) 14.386 Tj +-272 TJm +(remo) 20.4731 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-272 TJm +(as) 8.2988 Tj +-272 TJm +(little) 18.2714 Tj +-272 TJm +(or) 8.2988 Tj +-272 TJm +(as) 8.2988 Tj +-272 TJm +(much) 22.1369 Tj +-271 TJm +(data) 16.5977 Tj +-272 TJm +(as) 8.2988 Tj +-272 TJm +(you) 14.9439 Tj +-272 TJm +(lik) 10.5205 Tj +10 TJm +(e) 4.4234 Tj +-272 TJm +(on) 9.9626 Tj +-272 TJm +(each) 18.2515 Tj +-272 TJm +(call) 14.386 Tj +-272 TJm +(of) 8.2988 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +399.123 107.926 Td +/F124_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +482.809 107.926 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +-752 TJm +(In) 8.2988 Tj +-272 TJm +(the) 12.1743 Tj +-272 TJm +(limit,) 21.32 Tj +72 95.971 Td +(it) 5.5392 Tj +-266 TJm +(is) 6.6451 Tj +-265 TJm +(acceptable) 42.0422 Tj +-266 TJm +(to) 7.7509 Tj +-266 TJm +(supply) 26.5703 Tj +-266 TJm +(and) 14.386 Tj +-265 TJm +(remo) 20.4731 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-266 TJm +(data) 16.5977 Tj +-266 TJm +(one) 14.386 Tj +-265 TJm +(byte) 17.1556 Tj +-266 TJm +(at) 7.193 Tj +-266 TJm +(a) 4.4234 Tj +-266 TJm +(time,) 20.2042 Tj +-269 TJm +(although) 34.8691 Tj +-266 TJm +(this) 14.396 Tj +-266 TJm +(w) 7.193 Tj +10 TJm +(ould) 17.7135 Tj +-265 TJm +(be) 9.4047 Tj +-266 TJm +(terribly) 29.3299 Tj +-266 TJm +(inef) 15.4918 Tj +25 TJm +(\002cient.) 27.3972 Tj +-714 TJm +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-266 TJm +(should) 26.5703 Tj +72 84.016 Td +(al) 7.193 Tj +10 TJm +(w) 7.193 Tj +10 TJm +(ays) 13.2801 Tj +-250 TJm +(ensure) 26.0024 Tj +-250 TJm +(that) 14.9439 Tj +-250 TJm +(at) 7.193 Tj +-250 TJm +(least) 18.2614 Tj +-250 TJm +(one) 14.386 Tj +-250 TJm +(byte) 17.1556 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(output) 25.4644 Tj +-250 TJm +(space) 22.1269 Tj +-250 TJm +(is) 6.6451 Tj +-250 TJm +(a) 4.4234 Tj +20 TJm +(v) 4.9813 Tj +25 TJm +(ailable) 26.5603 Tj +-250 TJm +(at) 7.193 Tj +-250 TJm +(each) 18.2515 Tj +-250 TJm +(call.) 16.8766 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +534.414 50.951 Td +(13) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 14 17 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F122_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +496.556 749.245 Td +/F124_0 9.9626 Tf +(libbzip2) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +72 710.037 Td +/F122_0 9.9626 Tf +(A) 7.193 Tj +-250 TJm +(second) 27.6661 Tj +-250 TJm +(purpose) 31.5416 Tj +-250 TJm +(of) 8.2988 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +156.662 710.037 Td +/F124_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +242.839 710.037 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(request) 28.772 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(change) 28.2141 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(mode) 22.1369 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(compressed) 47.0334 Tj +-250 TJm +(stream.) 29.0509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 688.12 Td +(Conceptually) 53.1305 Tj +65 TJm +(,) 2.4907 Tj +-217 TJm +(a) 4.4234 Tj +-210 TJm +(compressed) 47.0334 Tj +-209 TJm +(stream) 26.5603 Tj +-209 TJm +(can) 13.8281 Tj +-209 TJm +(be) 9.4047 Tj +-210 TJm +(in) 7.7509 Tj +-209 TJm +(one) 14.386 Tj +-209 TJm +(of) 8.2988 Tj +-209 TJm +(four) 16.5977 Tj +-210 TJm +(states:) 24.9065 Tj +-289 TJm +(IDLE,) 25.1755 Tj +-209 TJm +(R) 6.6451 Tj +40 TJm +(UNNING,) 41.7732 Tj +-210 TJm +(FLUSHING) 49.2551 Tj +-209 TJm +(and) 14.386 Tj +-209 TJm +(FINISHING.) 52.2937 Tj +-419 TJm +(Be-) 14.386 Tj +72 676.164 Td +(fore) 16.0398 Tj +-264 TJm +(initialisation) 49.823 Tj +-263 TJm +(\() 3.3175 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +146.434 676.164 Td +/F124_0 9.9626 Tf +(BZ2_bzCompressInit) 107.5961 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +254.031 676.164 Td +/F122_0 9.9626 Tf +(\)) 3.3175 Tj +-264 TJm +(and) 14.386 Tj +-263 TJm +(after) 18.2515 Tj +-264 TJm +(termination) 45.9375 Tj +-264 TJm +(\() 3.3175 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +349.75 676.164 Td +/F124_0 9.9626 Tf +(BZ2_bzCompressEnd) 101.6185 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +451.369 676.164 Td +/F122_0 9.9626 Tf +(\),) 5.8082 Tj +-267 TJm +(a) 4.4234 Tj +-264 TJm +(stream) 26.5603 Tj +-264 TJm +(is) 6.6451 Tj +-263 TJm +(re) 7.7409 Tj +15 TJm +(g) 4.9813 Tj +5 TJm +(arded) 22.1269 Tj +72 664.209 Td +(as) 8.2988 Tj +-250 TJm +(IDLE.) 25.1755 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 642.291 Td +(Upon) 22.1369 Tj +-389 TJm +(initialisation) 49.823 Tj +-390 TJm +(\() 3.3175 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +155.036 642.291 Td +/F124_0 9.9626 Tf +(BZ2_bzCompressInit) 107.5961 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +262.632 642.291 Td +/F122_0 9.9626 Tf +(\),) 5.8082 Tj +-424 TJm +(the) 12.1743 Tj +-390 TJm +(stream) 26.5603 Tj +-389 TJm +(is) 6.6451 Tj +-390 TJm +(placed) 26.0024 Tj +-389 TJm +(in) 7.7509 Tj +-389 TJm +(the) 12.1743 Tj +-390 TJm +(R) 6.6451 Tj +40 TJm +(UNNING) 39.2825 Tj +-389 TJm +(state.) 20.7521 Tj +-1457 TJm +(Subsequent) 45.9375 Tj +-389 TJm +(calls) 18.2614 Tj +72 630.336 Td +(to) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +83.818 630.336 Td +/F124_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +171.571 630.336 Td +/F122_0 9.9626 Tf +(should) 26.5703 Tj +-408 TJm +(pass) 17.1556 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +223.431 630.336 Td +/F124_0 9.9626 Tf +(BZ_RUN) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +263.362 630.336 Td +/F122_0 9.9626 Tf +(as) 8.2988 Tj +-408 TJm +(the) 12.1743 Tj +-409 TJm +(request) 28.772 Tj +1 TJm +(ed) 9.4047 Tj +-409 TJm +(action;) 27.1182 Tj +-487 TJm +(other) 20.4731 Tj +-408 TJm +(actions) 28.224 Tj +-409 TJm +(are) 12.1643 Tj +-408 TJm +(ille) 12.7322 Tj +15 TJm +(g) 4.9813 Tj +5 TJm +(al) 7.193 Tj +-408 TJm +(and) 14.386 Tj +-408 TJm +(will) 15.5018 Tj +-408 TJm +(result) 22.1369 Tj +-409 TJm +(in) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 618.381 Td +/F124_0 9.9626 Tf +(BZ_SEQUENCE_ERROR) 101.6185 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +173.619 618.381 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 596.463 Td +(At) 9.9626 Tj +-279 TJm +(some) 21.031 Tj +-279 TJm +(point,) 22.9738 Tj +-286 TJm +(the) 12.1743 Tj +-279 TJm +(calling) 27.1182 Tj +-279 TJm +(program) 33.7533 Tj +-279 TJm +(will) 15.5018 Tj +-279 TJm +(ha) 9.4047 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-278 TJm +(pro) 13.2801 Tj +14 TJm +(vi) 7.7509 Tj +1 TJm +(ded) 14.386 Tj +-279 TJm +(all) 9.9626 Tj +-279 TJm +(the) 12.1743 Tj +-279 TJm +(input) 20.4831 Tj +-279 TJm +(data) 16.5977 Tj +-279 TJm +(it) 5.5392 Tj +-279 TJm +(w) 7.193 Tj +10 TJm +(ants) 16.0497 Tj +-279 TJm +(to.) 10.2416 Tj +-793 TJm +(It) 6.0871 Tj +-279 TJm +(will) 15.5018 Tj +-279 TJm +(then) 17.1556 Tj +-279 TJm +(w) 7.193 Tj +10 TJm +(ant) 12.1743 Tj +-279 TJm +(to) 7.7509 Tj +-279 TJm +(\002nish) 22.1469 Tj +-279 TJm +(up) 9.9626 Tj +-279 TJm +(--) 6.6351 Tj +72 584.508 Td +(in) 7.7509 Tj +-287 TJm +(ef) 7.7409 Tj +25 TJm +(fect,) 17.4246 Tj +-297 TJm +(asking) 26.0123 Tj +-288 TJm +(the) 12.1743 Tj +-287 TJm +(library) 26.5603 Tj +-287 TJm +(to) 7.7509 Tj +-288 TJm +(process) 29.8778 Tj +-287 TJm +(an) 9.4047 Tj +15 TJm +(y) 4.9813 Tj +-288 TJm +(data) 16.5977 Tj +-287 TJm +(it) 5.5392 Tj +-287 TJm +(might) 23.2527 Tj +-288 TJm +(ha) 9.4047 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-287 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.2988 Tj +25 TJm +(fered) 20.4632 Tj +-288 TJm +(internally) 38.1866 Tj +65 TJm +(.) 2.4907 Tj +-844 TJm +(In) 8.2988 Tj +-288 TJm +(this) 14.396 Tj +-287 TJm +(state,) 20.7521 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +456.314 584.508 Td +/F124_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 572.553 Td +/F122_0 9.9626 Tf +(will) 15.5018 Tj +-258 TJm +(no) 9.9626 Tj +-257 TJm +(longer) 25.4544 Tj +-258 TJm +(attempt) 29.8878 Tj +-258 TJm +(to) 7.7509 Tj +-258 TJm +(read) 17.1456 Tj +-257 TJm +(data) 16.5977 Tj +-258 TJm +(from) 19.3673 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +234.208 572.553 Td +/F124_0 9.9626 Tf +(next_in) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +276.051 572.553 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-260 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-257 TJm +(it) 5.5392 Tj +-258 TJm +(will) 15.5018 Tj +-258 TJm +(w) 7.193 Tj +10 TJm +(ant) 12.1743 Tj +-257 TJm +(to) 7.7509 Tj +-258 TJm +(write) 20.4731 Tj +-258 TJm +(data) 16.5977 Tj +-258 TJm +(to) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +407.082 572.553 Td +/F124_0 9.9626 Tf +(next_out) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +454.902 572.553 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +-666 TJm +(Because) 33.1954 Tj +-258 TJm +(the) 12.1743 Tj +-258 TJm +(output) 25.4644 Tj +72 560.598 Td +(b) 4.9813 Tj +20 TJm +(uf) 8.2988 Tj +25 TJm +(fer) 11.0585 Tj +-228 TJm +(supplied) 33.7633 Tj +-228 TJm +(by) 9.9626 Tj +-229 TJm +(the) 12.1743 Tj +-228 TJm +(user) 16.5977 Tj +-228 TJm +(can) 13.8281 Tj +-228 TJm +(be) 9.4047 Tj +-228 TJm +(arbitrarily) 39.8404 Tj +-229 TJm +(sma) 16.0497 Tj +1 TJm +(ll,) 8.0299 Tj +-233 TJm +(the) 12.1743 Tj +-228 TJm +(\002nishing-up) 48.1592 Tj +-228 TJm +(operation) 37.6287 Tj +-229 TJm +(cannot) 26.5603 Tj +-228 TJm +(necessarily) 44.2638 Tj +-228 TJm +(be) 9.4047 Tj +-228 TJm +(done) 19.3673 Tj +-228 TJm +(with) 17.7135 Tj +-229 TJm +(a) 4.4234 Tj +-228 TJm +(single) 23.8007 Tj +72 548.642 Td +(call) 14.386 Tj +-250 TJm +(of) 8.2988 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +99.666 548.642 Td +/F124_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +183.352 548.642 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 526.725 Td +(Instead,) 31.2626 Tj +-346 TJm +(the) 12.1743 Tj +-327 TJm +(calling) 27.1182 Tj +-326 TJm +(program) 33.7533 Tj +-327 TJm +(passes) 25.4544 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +218.231 526.725 Td +/F124_0 9.9626 Tf +(BZ_FINISH) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +275.284 526.725 Td +/F122_0 9.9626 Tf +(as) 8.2988 Tj +-327 TJm +(an) 9.4047 Tj +-327 TJm +(acti) 14.386 Tj +1 TJm +(on) 9.9626 Tj +-327 TJm +(to) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +338.109 526.725 Td +/F124_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +421.795 526.725 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +-1081 TJm +(This) 17.7135 Tj +-326 TJm +(changes) 32.0895 Tj +-327 TJm +(the) 12.1743 Tj +-327 TJm +(stream') 29.8778 Tj +55 TJm +(s) 3.8755 Tj +72 514.77 Td +(state) 18.2614 Tj +-291 TJm +(to) 7.7509 Tj +-290 TJm +(FINISHING.) 52.2937 Tj +-581 TJm +(An) 12.1743 Tj +15 TJm +(y) 4.9813 Tj +-291 TJm +(remaining) 40.3983 Tj +-290 TJm +(input) 20.4831 Tj +-291 TJm +(\(ie,) 13.0012 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +264.452 514.77 Td +/F124_0 9.9626 Tf +(next_in[0) 53.798 Tj +-600 TJm +(..) 11.9551 Tj +-1200 TJm +(avail_in-1]) 65.7532 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +413.892 514.77 Td +/F122_0 9.9626 Tf +(\)) 3.3175 Tj +-291 TJm +(is) 6.6451 Tj +-290 TJm +(compressed) 47.0334 Tj +-291 TJm +(and) 14.386 Tj +-290 TJm +(transferred) 43.148 Tj +72 502.814 Td +(to) 7.7509 Tj +-421 TJm +(the) 12.1743 Tj +-421 TJm +(output) 25.4644 Tj +-421 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.2988 Tj +25 TJm +(fer) 11.0585 Tj +55 TJm +(.) 2.4907 Tj +-1646 TJm +(T) 6.0871 Tj +80 TJm +(o) 4.9813 Tj +-421 TJm +(do) 9.9626 Tj +-422 TJm +(this) 14.396 Tj +1 TJm +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +222.339 502.814 Td +/F124_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +310.22 502.814 Td +/F122_0 9.9626 Tf +(must) 19.3773 Tj +-421 TJm +(be) 9.4047 Tj +-421 TJm +(called) 23.7907 Tj +-421 TJm +(repeatedly) 41.4942 Tj +-421 TJm +(until) 18.2714 Tj +-421 TJm +(all) 9.9626 Tj +-421 TJm +(the) 12.1743 Tj +-421 TJm +(output) 25.4644 Tj +-421 TJm +(has) 13.2801 Tj +-421 TJm +(been) 18.8094 Tj +72 490.859 Td +(consumed.) 42.889 Tj +-1397 TJm +(At) 9.9626 Tj +-379 TJm +(that) 14.9439 Tj +-380 TJm +(point,) 22.9738 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +188.346 490.859 Td +/F124_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +275.813 490.859 Td +/F122_0 9.9626 Tf +(returns) 27.6661 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +307.259 490.859 Td +/F124_0 9.9626 Tf +(BZ_STREAM_END) 77.7083 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +384.968 490.859 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-379 TJm +(and) 14.386 Tj +-380 TJm +(the) 12.1743 Tj +-379 TJm +(stream') 29.8778 Tj +55 TJm +(s) 3.8755 Tj +-380 TJm +(state) 18.2614 Tj +-379 TJm +(is) 6.6451 Tj +-380 TJm +(set) 11.0684 Tj +-379 TJm +(back) 18.8094 Tj +-379 TJm +(to) 7.7509 Tj +72 478.904 Td +(IDLE.) 25.1755 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +99.666 478.904 Td +/F124_0 9.9626 Tf +(BZ2_bzCompressEnd) 101.6185 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +203.776 478.904 Td +/F122_0 9.9626 Tf +(should) 26.5703 Tj +-250 TJm +(then) 17.1556 Tj +-250 TJm +(be) 9.4047 Tj +-250 TJm +(called.) 26.2813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 456.986 Td +(Just) 15.5018 Tj +-380 TJm +(to) 7.7509 Tj +-380 TJm +(mak) 17.1556 Tj +10 TJm +(e) 4.4234 Tj +-379 TJm +(sure) 16.5977 Tj +-380 TJm +(the) 12.1743 Tj +-380 TJm +(calling) 27.1182 Tj +-380 TJm +(program) 33.7533 Tj +-379 TJm +(does) 18.2614 Tj +-380 TJm +(not) 12.7322 Tj +-380 TJm +(cheat,) 23.5117 Tj +-412 TJm +(the) 12.1743 Tj +-380 TJm +(library) 26.5603 Tj +-380 TJm +(mak) 17.1556 Tj +10 TJm +(es) 8.2988 Tj +-379 TJm +(a) 4.4234 Tj +-380 TJm +(note) 17.1556 Tj +-380 TJm +(of) 8.2988 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +415.708 456.986 Td +/F124_0 9.9626 Tf +(avail_in) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +467.312 456.986 Td +/F122_0 9.9626 Tf +(at) 7.193 Tj +-380 TJm +(the) 12.1743 Tj +-380 TJm +(time) 17.7135 Tj +-379 TJm +(of) 8.2988 Tj +-380 TJm +(the) 12.1743 Tj +72 445.031 Td +(\002rst) 15.5018 Tj +-286 TJm +(call) 14.386 Tj +-286 TJm +(t) 2.7696 Tj +1 TJm +(o) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +118.179 445.031 Td +/F124_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +204.713 445.031 Td +/F122_0 9.9626 Tf +(which) 24.3486 Tj +-286 TJm +(has) 13.2801 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +248.035 445.031 Td +/F124_0 9.9626 Tf +(BZ_FINISH) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +304.68 445.031 Td +/F122_0 9.9626 Tf +(as) 8.2988 Tj +-286 TJm +(an) 9.4047 Tj +-286 TJm +(action) 24.3486 Tj +-285 TJm +(\(ie,) 13.0012 Tj +-295 TJm +(at) 7.193 Tj +-286 TJm +(the) 12.1743 Tj +-286 TJm +(time) 17.7135 Tj +-285 TJm +(the) 12.1743 Tj +-286 TJm +(program) 33.7533 Tj +-286 TJm +(has) 13.2801 Tj +-286 TJm +(announced) 43.158 Tj +-285 TJm +(its) 9.4147 Tj +72 433.076 Td +(intention) 35.427 Tj +-292 TJm +(to) 7.7509 Tj +-292 TJm +(not) 12.7322 Tj +-291 TJm +(supply) 26.5703 Tj +-292 TJm +(an) 9.4047 Tj +15 TJm +(y) 4.9813 Tj +-292 TJm +(more) 20.4731 Tj +-292 TJm +(input\).) 26.2913 Tj +-870 TJm +(By) 11.6264 Tj +-292 TJm +(comparing) 42.61 Tj +-292 TJm +(this) 14.396 Tj +-292 TJm +(v) 4.9813 Tj +25 TJm +(alue) 16.5977 Tj +-291 TJm +(with) 17.7135 Tj +-292 TJm +(that) 14.9439 Tj +-292 TJm +(of) 8.2988 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +392.862 433.076 Td +/F124_0 9.9626 Tf +(avail_in) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +443.589 433.076 Td +/F122_0 9.9626 Tf +(o) 4.9813 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(er) 7.7409 Tj +-292 TJm +(subsequent) 44.2738 Tj +-292 TJm +(calls) 18.2614 Tj +-291 TJm +(to) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 421.121 Td +/F124_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +155.686 421.121 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-247 TJm +(the) 12.1743 Tj +-247 TJm +(library) 26.5603 Tj +-246 TJm +(can) 13.8281 Tj +-247 TJm +(detect) 23.7907 Tj +-246 TJm +(an) 9.4047 Tj +15 TJm +(y) 4.9813 Tj +-247 TJm +(attem) 22.1369 Tj +1 TJm +(p) 4.9813 Tj +-1 TJm +(t) 2.7696 Tj +1 TJm +(s) 3.8755 Tj +-247 TJm +(to) 7.7509 Tj +-246 TJm +(slip) 14.396 Tj +-247 TJm +(in) 7.7509 Tj +-246 TJm +(more) 20.4731 Tj +-247 TJm +(data) 16.5977 Tj +-246 TJm +(to) 7.7509 Tj +-247 TJm +(compress.) 40.1194 Tj +-617 TJm +(An) 12.1743 Tj +15 TJm +(y) 4.9813 Tj +-247 TJm +(calls) 18.2614 Tj +-246 TJm +(for) 11.6164 Tj +-247 TJm +(which) 24.3486 Tj +-246 TJm +(this) 14.396 Tj +-247 TJm +(is) 6.6451 Tj +72 409.165 Td +(detected) 33.1954 Tj +-250 TJm +(will) 15.5018 Tj +-250 TJm +(return) 23.7907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +151.959 409.165 Td +/F124_0 9.9626 Tf +(BZ_SEQUENCE_ERROR) 101.6185 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +253.578 409.165 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +-500 TJm +(This) 17.7135 Tj +-250 TJm +(indicates) 35.417 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(programming) 54.2364 Tj +-250 TJm +(mistak) 26.5703 Tj +10 TJm +(e) 4.4234 Tj +-250 TJm +(which) 24.3486 Tj +-250 TJm +(should) 26.5703 Tj +-250 TJm +(be) 9.4047 Tj +-250 TJm +(corrected.) 39.5515 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 387.248 Td +(Instead) 28.772 Tj +-224 TJm +(of) 8.2988 Tj +-223 TJm +(asking) 26.0123 Tj +-224 TJm +(to) 7.7509 Tj +-223 TJm +(\002nish,) 24.6375 Tj +-229 TJm +(the) 12.1743 Tj +-224 TJm +(calling) 27.1182 Tj +-223 TJm +(program) 33.7533 Tj +-224 TJm +(may) 17.1556 Tj +-224 TJm +(ask) 13.2801 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +293.282 387.248 Td +/F124_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +379.196 387.248 Td +/F122_0 9.9626 Tf +(to) 7.7509 Tj +-224 TJm +(tak) 12.1743 Tj +10 TJm +(e) 4.4234 Tj +-223 TJm +(all) 9.9626 Tj +-224 TJm +(the) 12.1743 Tj +-223 TJm +(remaining) 40.3983 Tj +-224 TJm +(input,) 22.9738 Tj +-229 TJm +(compress) 37.6287 Tj +72 375.293 Td +(it) 5.5392 Tj +-278 TJm +(and) 14.386 Tj +-278 TJm +(terminate) 37.6287 Tj +-278 TJm +(the) 12.1743 Tj +-278 TJm +(current) 28.2141 Tj +-277 TJm +(\(Burro) 26.5603 Tj +25 TJm +(ws-Wheeler\)) 51.4469 Tj +-278 TJm +(compression) 50.3609 Tj +-278 TJm +(block.) 24.6275 Tj +-787 TJm +(Th) 11.0684 Tj +-1 TJm +(i) 2.7696 Tj +1 TJm +(s) 3.8755 Tj +-278 TJm +(could) 22.1369 Tj +-278 TJm +(be) 9.4047 Tj +-278 TJm +(useful) 24.3486 Tj +-278 TJm +(for) 11.6164 Tj +-278 TJm +(error) 19.3573 Tj +-278 TJm +(control) 28.224 Tj +-278 TJm +(purposes.) 37.9077 Tj +72 363.337 Td +(The) 15.4918 Tj +-328 TJm +(mechanism) 45.3796 Tj +-328 TJm +(is) 6.6451 Tj +-328 TJm +(analogous) 40.3983 Tj +-328 TJm +(to) 7.7509 Tj +-328 TJm +(that) 14.9439 Tj +-328 TJm +(for) 11.6164 Tj +-328 TJm +(\002nishing:) 37.6487 Tj +-466 TJm +(call) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +297.049 363.337 Td +/F124_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +384.003 363.337 Td +/F122_0 9.9626 Tf +(with) 17.7135 Tj +-328 TJm +(an) 9.4047 Tj +-328 TJm +(action) 24.3486 Tj +-328 TJm +(of) 8.2988 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +456.841 363.337 Td +/F124_0 9.9626 Tf +(BZ_FLUSH) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +504.662 363.337 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-328 TJm +(remo) 20.4731 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +72 351.382 Td +(output) 25.4644 Tj +-445 TJm +(data,) 19.0883 Tj +-494 TJm +(and) 14.386 Tj +-446 TJm +(persist) 26.0123 Tj +-445 TJm +(with) 17.7135 Tj +-445 TJm +(the) 12.1743 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +213.94 351.382 Td +/F124_0 9.9626 Tf +(BZ_FLUSH) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +266.195 351.382 Td +/F122_0 9.9626 Tf +(action) 24.3486 Tj +-445 TJm +(until) 18.2714 Tj +-445 TJm +(the) 12.1743 Tj +-446 TJm +(v) 4.9813 Tj +25 TJm +(alue) 16.5977 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +360.062 351.382 Td +/F124_0 9.9626 Tf +(BZ_RUN) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +400.362 351.382 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-445 TJm +(returned.) 35.686 Tj +-1792 TJm +(As) 11.0684 Tj +-445 TJm +(with) 17.7135 Tj +-445 TJm +(\002nishing,) 37.3697 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 339.427 Td +/F124_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +158.177 339.427 Td +/F122_0 9.9626 Tf +(detects) 27.6661 Tj +-250 TJm +(an) 9.4047 Tj +15 TJm +(y) 4.9813 Tj +-250 TJm +(attempt) 29.8878 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(pro) 13.2801 Tj +15 TJm +(vide) 17.1556 Tj +-250 TJm +(more) 20.4731 Tj +-250 TJm +(input) 20.4831 Tj +-250 TJm +(data) 16.5977 Tj +-250 TJm +(once) 18.8094 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(\003ush) 19.3773 Tj +-250 TJm +(has) 13.2801 Tj +-250 TJm +(be) 9.4047 Tj +15 TJm +(gun.) 17.4346 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 317.509 Td +(Once) 21.0211 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(\003ush) 19.3773 Tj +-250 TJm +(is) 6.6451 Tj +-250 TJm +(complete,) 39.0135 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(stream) 26.5603 Tj +-250 TJm +(returns) 27.6661 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(normal) 28.224 Tj +-250 TJm +(R) 6.6451 Tj +40 TJm +(UNNING) 39.2825 Tj +-250 TJm +(state.) 20.7521 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 295.591 Td +(This) 17.7135 Tj +-344 TJm +(all) 9.9626 Tj +-343 TJm +(sounds) 27.6761 Tj +-344 TJm +(pretty) 23.2427 Tj +-344 TJm +(comple) 29.3299 Tj +15 TJm +(x,) 7.472 Tj +-367 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-344 TJm +(isn') 14.9439 Tj +18 TJm +(t) 2.7696 Tj +-344 TJm +(really) 22.6848 Tj +65 TJm +(.) 2.4907 Tj +-1182 TJm +(Here') 22.6749 Tj +55 TJm +(s) 3.8755 Tj +-344 TJm +(a) 4.4234 Tj +-344 TJm +(table) 19.3673 Tj +-343 TJm +(which) 24.3486 Tj +-344 TJm +(sho) 13.8381 Tj +25 TJm +(ws) 11.0684 Tj +-344 TJm +(which) 24.3486 Tj +-344 TJm +(actions) 28.224 Tj +-343 TJm +(are) 12.1643 Tj +-344 TJm +(allo) 14.9439 Tj +25 TJm +(w) 7.193 Tj +10 TJm +(able) 16.5977 Tj +-344 TJm +(in) 7.7509 Tj +-344 TJm +(each) 18.2515 Tj +72 283.636 Td +(state,) 20.7521 Tj +-281 TJm +(what) 19.3673 Tj +-274 TJm +(action) 24.3486 Tj +-275 TJm +(will) 15.5018 Tj +-274 TJm +(be) 9.4047 Tj +-275 TJm +(tak) 12.1743 Tj +10 TJm +(en,) 11.8953 Tj +-280 TJm +(what) 19.3673 Tj +-275 TJm +(the) 12.1743 Tj +-274 TJm +(ne) 9.4047 Tj +15 TJm +(xt) 7.7509 Tj +-275 TJm +(state) 18.2614 Tj +-274 TJm +(is,) 9.1357 Tj +-281 TJm +(and) 14.386 Tj +-274 TJm +(what) 19.3673 Tj +-275 TJm +(the) 12.1743 Tj +-275 TJm +(non-error) 37.6188 Tj +-274 TJm +(return) 23.7907 Tj +-275 TJm +(v) 4.9813 Tj +25 TJm +(alues) 20.4731 Tj +-274 TJm +(are.) 14.655 Tj +-767 TJm +(Note) 19.3673 Tj +-275 TJm +(that) 14.9439 Tj +-274 TJm +(you) 14.9439 Tj +-275 TJm +(can') 17.1456 Tj +18 TJm +(t) 2.7696 Tj +72 271.681 Td +(e) 4.4234 Tj +15 TJm +(xplicitly) 33.2153 Tj +-347 TJm +(ask) 13.2801 Tj +-348 TJm +(what) 19.3673 Tj +-347 TJm +(state) 18.2614 Tj +-348 TJm +(the) 12.1743 Tj +-347 TJm +(stream) 26.5603 Tj +-348 TJm +(is) 6.6451 Tj +-347 TJm +(in,) 10.2416 Tj +-372 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-347 TJm +(nor) 13.2801 Tj +-348 TJm +(do) 9.9626 Tj +-347 TJm +(you) 14.9439 Tj +-348 TJm +(need) 18.8094 Tj +-347 TJm +(to) 7.7509 Tj +-348 TJm +(--) 6.6351 Tj +-347 TJm +(it) 5.5392 Tj +-348 TJm +(can) 13.8281 Tj +-347 TJm +(be) 9.4047 Tj +-347 TJm +(inferred) 31.5316 Tj +-348 TJm +(from) 19.3673 Tj +-347 TJm +(the) 12.1743 Tj +-348 TJm +(v) 4.9813 Tj +25 TJm +(alues) 20.4731 Tj +-347 TJm +(returned) 33.1954 Tj +-348 TJm +(by) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 259.726 Td +/F124_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +155.686 259.726 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +534.414 50.852 Td +(14) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 15 18 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F122_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +496.556 749.245 Td +/F124_0 9.9626 Tf +(libbzip2) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 146.152] cm +0 0 468 573.848 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 711.631 Td +/F124_0 9.9626 Tf +(IDLE/any) 47.8205 Tj +98.488 699.676 Td +(Illegal.) 47.8205 Tj +-852 TJm +(IDLE) 23.9102 Tj +-426 TJm +(state) 29.8878 Tj +-426 TJm +(only) 23.9102 Tj +-426 TJm +(exists) 35.8654 Tj +-426 TJm +(after) 29.8878 Tj +-426 TJm +(BZ2_bzCompressEnd) 101.6185 Tj +-426 TJm +(or) 11.9551 Tj +98.488 687.721 Td +(before) 35.8654 Tj +-426 TJm +(BZ2_bzCompressInit.) 113.5736 Tj +98.488 675.766 Td +(Return) 35.8654 Tj +-426 TJm +(value) 29.8878 Tj +-426 TJm +(=) 5.9776 Tj +-426 TJm +(BZ_SEQUENCE_ERROR) 101.6185 Tj +90 651.856 Td +(RUNNING/BZ_RUN) 83.6858 Tj +98.488 639.9 Td +(Compress) 47.8205 Tj +-426 TJm +(from) 23.9102 Tj +-426 TJm +(next_in) 41.8429 Tj +-426 TJm +(to) 11.9551 Tj +-426 TJm +(next_out) 47.8205 Tj +-426 TJm +(as) 11.9551 Tj +-426 TJm +(much) 23.9102 Tj +-426 TJm +(as) 11.9551 Tj +-426 TJm +(possible.) 53.798 Tj +98.488 627.945 Td +(Next) 23.9102 Tj +-426 TJm +(state) 29.8878 Tj +-426 TJm +(=) 5.9776 Tj +-426 TJm +(RUNNING) 41.8429 Tj +98.488 615.99 Td +(Return) 35.8654 Tj +-426 TJm +(value) 29.8878 Tj +-426 TJm +(=) 5.9776 Tj +-426 TJm +(BZ_RUN_OK) 53.798 Tj +90 592.08 Td +(RUNNING/BZ_FLUSH) 95.641 Tj +98.488 580.124 Td +(Remember) 47.8205 Tj +-426 TJm +(current) 41.8429 Tj +-426 TJm +(value) 29.8878 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(next_in.) 47.8205 Tj +-426 TJm +(Compress) 47.8205 Tj +-426 TJm +(from) 23.9102 Tj +-426 TJm +(next_in) 41.8429 Tj +98.488 568.169 Td +(to) 11.9551 Tj +-426 TJm +(next_out) 47.8205 Tj +-426 TJm +(as) 11.9551 Tj +-426 TJm +(much) 23.9102 Tj +-426 TJm +(as) 11.9551 Tj +-426 TJm +(possible,) 53.798 Tj +-426 TJm +(but) 17.9327 Tj +-426 TJm +(do) 11.9551 Tj +-426 TJm +(not) 17.9327 Tj +-426 TJm +(accept) 35.8654 Tj +-426 TJm +(any) 17.9327 Tj +-426 TJm +(more) 23.9102 Tj +-426 TJm +(input.) 35.8654 Tj +98.488 556.214 Td +(Next) 23.9102 Tj +-426 TJm +(state) 29.8878 Tj +-426 TJm +(=) 5.9776 Tj +-426 TJm +(FLUSHING) 47.8205 Tj +98.488 544.259 Td +(Return) 35.8654 Tj +-426 TJm +(value) 29.8878 Tj +-426 TJm +(=) 5.9776 Tj +-426 TJm +(BZ_FLUSH_OK) 65.7532 Tj +90 520.349 Td +(RUNNING/BZ_FINISH) 101.6185 Tj +98.488 508.393 Td +(Remember) 47.8205 Tj +-426 TJm +(current) 41.8429 Tj +-426 TJm +(value) 29.8878 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(next_in.) 47.8205 Tj +-426 TJm +(Compress) 47.8205 Tj +-426 TJm +(from) 23.9102 Tj +-426 TJm +(next_in) 41.8429 Tj +98.488 496.438 Td +(to) 11.9551 Tj +-426 TJm +(next_out) 47.8205 Tj +-426 TJm +(as) 11.9551 Tj +-426 TJm +(much) 23.9102 Tj +-426 TJm +(as) 11.9551 Tj +-426 TJm +(possible,) 53.798 Tj +-426 TJm +(but) 17.9327 Tj +-426 TJm +(do) 11.9551 Tj +-426 TJm +(not) 17.9327 Tj +-426 TJm +(accept) 35.8654 Tj +-426 TJm +(any) 17.9327 Tj +-426 TJm +(more) 23.9102 Tj +-426 TJm +(input.) 35.8654 Tj +98.488 484.483 Td +(Next) 23.9102 Tj +-426 TJm +(state) 29.8878 Tj +-426 TJm +(=) 5.9776 Tj +-426 TJm +(FINISHING) 53.798 Tj +98.488 472.528 Td +(Return) 35.8654 Tj +-426 TJm +(value) 29.8878 Tj +-426 TJm +(=) 5.9776 Tj +-426 TJm +(BZ_FINISH_OK) 71.7307 Tj +90 448.618 Td +(FLUSHING/BZ_FLUSH) 101.6185 Tj +98.488 436.662 Td +(Compress) 47.8205 Tj +-426 TJm +(from) 23.9102 Tj +-426 TJm +(next_in) 41.8429 Tj +-426 TJm +(to) 11.9551 Tj +-426 TJm +(next_out) 47.8205 Tj +-426 TJm +(as) 11.9551 Tj +-426 TJm +(much) 23.9102 Tj +-426 TJm +(as) 11.9551 Tj +-426 TJm +(possible,) 53.798 Tj +98.488 424.707 Td +(but) 17.9327 Tj +-426 TJm +(do) 11.9551 Tj +-426 TJm +(not) 17.9327 Tj +-426 TJm +(accept) 35.8654 Tj +-426 TJm +(any) 17.9327 Tj +-426 TJm +(more) 23.9102 Tj +-426 TJm +(input.) 35.8654 Tj +98.488 412.752 Td +(If) 11.9551 Tj +-426 TJm +(all) 17.9327 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(existing) 47.8205 Tj +-426 TJm +(input) 29.8878 Tj +-426 TJm +(has) 17.9327 Tj +-426 TJm +(been) 23.9102 Tj +-426 TJm +(used) 23.9102 Tj +-426 TJm +(up) 11.9551 Tj +-426 TJm +(and) 17.9327 Tj +-426 TJm +(all) 17.9327 Tj +-426 TJm +(compressed) 59.7756 Tj +98.488 400.797 Td +(output) 35.8654 Tj +-426 TJm +(has) 17.9327 Tj +-426 TJm +(been) 23.9102 Tj +-426 TJm +(removed) 41.8429 Tj +106.976 388.842 Td +(Next) 23.9102 Tj +-426 TJm +(state) 29.8878 Tj +-426 TJm +(=) 5.9776 Tj +-426 TJm +(RUNNING;) 47.8205 Tj +-426 TJm +(Return) 35.8654 Tj +-426 TJm +(value) 29.8878 Tj +-426 TJm +(=) 5.9776 Tj +-426 TJm +(BZ_RUN_OK) 53.798 Tj +98.488 376.887 Td +(else) 23.9102 Tj +106.976 364.931 Td +(Next) 23.9102 Tj +-426 TJm +(state) 29.8878 Tj +-426 TJm +(=) 5.9776 Tj +-426 TJm +(FLUSHING;) 53.798 Tj +-426 TJm +(Return) 35.8654 Tj +-426 TJm +(value) 29.8878 Tj +-426 TJm +(=) 5.9776 Tj +-426 TJm +(BZ_FLUSH_OK) 65.7532 Tj +90 341.021 Td +(FLUSHING/other) 83.6858 Tj +98.488 329.066 Td +(Illegal.) 47.8205 Tj +98.488 317.111 Td +(Return) 35.8654 Tj +-426 TJm +(value) 29.8878 Tj +-426 TJm +(=) 5.9776 Tj +-426 TJm +(BZ_SEQUENCE_ERROR) 101.6185 Tj +90 293.2 Td +(FINISHING/BZ_FINISH) 113.5736 Tj +98.488 281.245 Td +(Compress) 47.8205 Tj +-426 TJm +(from) 23.9102 Tj +-426 TJm +(next_in) 41.8429 Tj +-426 TJm +(to) 11.9551 Tj +-426 TJm +(next_out) 47.8205 Tj +-426 TJm +(as) 11.9551 Tj +-426 TJm +(much) 23.9102 Tj +-426 TJm +(as) 11.9551 Tj +-426 TJm +(possible,) 53.798 Tj +98.488 269.29 Td +(but) 17.9327 Tj +-426 TJm +(to) 11.9551 Tj +-426 TJm +(not) 17.9327 Tj +-426 TJm +(accept) 35.8654 Tj +-426 TJm +(any) 17.9327 Tj +-426 TJm +(more) 23.9102 Tj +-426 TJm +(input.) 35.8654 Tj +98.488 257.335 Td +(If) 11.9551 Tj +-426 TJm +(all) 17.9327 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(existing) 47.8205 Tj +-426 TJm +(input) 29.8878 Tj +-426 TJm +(has) 17.9327 Tj +-426 TJm +(been) 23.9102 Tj +-426 TJm +(used) 23.9102 Tj +-426 TJm +(up) 11.9551 Tj +-426 TJm +(and) 17.9327 Tj +-426 TJm +(all) 17.9327 Tj +-426 TJm +(compressed) 59.7756 Tj +98.488 245.38 Td +(output) 35.8654 Tj +-426 TJm +(has) 17.9327 Tj +-426 TJm +(been) 23.9102 Tj +-426 TJm +(removed) 41.8429 Tj +106.976 233.424 Td +(Next) 23.9102 Tj +-426 TJm +(state) 29.8878 Tj +-426 TJm +(=) 5.9776 Tj +-426 TJm +(IDLE;) 29.8878 Tj +-426 TJm +(Return) 35.8654 Tj +-426 TJm +(value) 29.8878 Tj +-426 TJm +(=) 5.9776 Tj +-426 TJm +(BZ_STREAM_END) 77.7083 Tj +98.488 221.469 Td +(else) 23.9102 Tj +106.976 209.514 Td +(Next) 23.9102 Tj +-426 TJm +(state) 29.8878 Tj +-426 TJm +(=) 5.9776 Tj +-426 TJm +(FINISHING;) 59.7756 Tj +-426 TJm +(Return) 35.8654 Tj +-426 TJm +(value) 29.8878 Tj +-426 TJm +(=) 5.9776 Tj +-426 TJm +(BZ_FINISH_OK) 71.7307 Tj +90 185.604 Td +(FINISHING/other) 89.6634 Tj +98.488 173.649 Td +(Illegal.) 47.8205 Tj +98.488 161.693 Td +(Return) 35.8654 Tj +-426 TJm +(value) 29.8878 Tj +-426 TJm +(=) 5.9776 Tj +-426 TJm +(BZ_SEQUENCE_ERROR) 101.6185 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 124.234 Td +/F122_0 9.9626 Tf +(That) 18.2614 Tj +-250 TJm +(still) 14.9539 Tj +-250 TJm +(looks) 21.589 Tj +-250 TJm +(complicated?) 53.1206 Tj +-620 TJm +(W) 9.4047 Tj +80 TJm +(ell,) 12.4533 Tj +-250 TJm +(f) 3.3175 Tj +10 TJm +(air) 10.5105 Tj +-250 TJm +(enough.) 31.8205 Tj +-620 TJm +(The) 15.4918 Tj +-250 TJm +(usual) 21.031 Tj +-250 TJm +(sequence) 36.5129 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(calls) 18.2614 Tj +-250 TJm +(for) 11.6164 Tj +-250 TJm +(compressing) 50.3609 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(load) 17.1556 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(data) 16.5977 Tj +-250 TJm +(is:) 9.4147 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +74.491 92.353 Td +(1.) 7.472 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-510 TJm +(Get) 14.386 Tj +-250 TJm +(started) 26.5603 Tj +-250 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +153.175 92.353 Td +/F124_0 9.9626 Tf +(BZ2_bzCompressInit) 107.5961 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +260.771 92.353 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +534.414 50.951 Td +(15) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 16 19 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F122_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +496.556 749.245 Td +/F124_0 9.9626 Tf +(libbzip2) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +74.491 710.037 Td +/F122_0 9.9626 Tf +(2.) 7.472 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-510 TJm +(Sho) 15.5018 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-267 TJm +(data) 16.5977 Tj +-268 TJm +(in) 7.7509 Tj +-267 TJm +(and) 14.386 Tj +-268 TJm +(shlurp) 24.9065 Tj +-267 TJm +(out) 12.7322 Tj +-268 TJm +(its) 9.4147 Tj +-267 TJm +(compressed) 47.0334 Tj +-267 TJm +(form) 19.3673 Tj +-268 TJm +(using) 21.589 Tj +-267 TJm +(zero) 17.1456 Tj +-268 TJm +(or) 8.2988 Tj +-267 TJm +(more) 20.4731 Tj +-268 TJm +(call) 14.386 Tj +1 TJm +(s) 3.8755 Tj +-268 TJm +(of) 8.2988 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +400.64 710.037 Td +/F124_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +486.991 710.037 Td +/F122_0 9.9626 Tf +(with) 17.7135 Tj +-267 TJm +(action) 24.3486 Tj +-268 TJm +(=) 5.6189 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +83.955 698.082 Td +/F124_0 9.9626 Tf +(BZ_RUN) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +119.821 698.082 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +74.491 676.164 Td +(3.) 7.472 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-510 TJm +(Finish) 24.9165 Tj +-276 TJm +(up.) 12.4533 Tj +-387 TJm +(Repeatedly) 44.8217 Tj +-276 TJm +(call) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +195.722 676.164 Td +/F124_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +282.156 676.164 Td +/F122_0 9.9626 Tf +(with) 17.7135 Tj +-276 TJm +(action) 24.3486 Tj +-276 TJm +(=) 5.6189 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +338.079 676.164 Td +/F124_0 9.9626 Tf +(BZ_FINISH) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +391.877 676.164 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-276 TJm +(cop) 14.386 Tj +10 TJm +(ying) 17.7135 Tj +-276 TJm +(out) 12.7322 Tj +-275 TJm +(the) 12.1743 Tj +-276 TJm +(compressed) 47.0334 Tj +-276 TJm +(output,) 27.9551 Tj +83.955 664.209 Td +(until) 18.2714 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +104.717 664.209 Td +/F124_0 9.9626 Tf +(BZ_STREAM_END) 77.7083 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +184.916 664.209 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-250 TJm +(returned.) 35.686 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +74.491 642.291 Td +(4.) 7.472 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-510 TJm +(Close) 22.6948 Tj +-250 TJm +(up) 9.9626 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(go) 9.9626 Tj +-250 TJm +(home.) 24.6275 Tj +-620 TJm +(Call) 16.6077 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +203.914 642.291 Td +/F124_0 9.9626 Tf +(BZ2_bzCompressEnd) 101.6185 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +305.533 642.291 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 620.374 Td +(If) 6.6351 Tj +-269 TJm +(the) 12.1743 Tj +-270 TJm +(data) 16.5977 Tj +-269 TJm +(you) 14.9439 Tj +-270 TJm +(w) 7.193 Tj +10 TJm +(ant) 12.1743 Tj +-269 TJm +(to) 7.7509 Tj +-270 TJm +(compress) 37.6287 Tj +-269 TJm +(\002ts) 12.1843 Tj +-270 TJm +(into) 15.5018 Tj +-269 TJm +(your) 18.2614 Tj +-270 TJm +(input) 20.4831 Tj +-269 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.2988 Tj +25 TJm +(fer) 11.0585 Tj +-270 TJm +(all) 9.9626 Tj +-269 TJm +(at) 7.193 Tj +-270 TJm +(once,) 21.3 Tj +-274 TJm +(you) 14.9439 Tj +-269 TJm +(can) 13.8281 Tj +-270 TJm +(skip) 16.6077 Tj +-269 TJm +(the) 12.1743 Tj +-270 TJm +(calls) 18.2614 Tj +-269 TJm +(of) 8.2988 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +456.314 620.374 Td +/F124_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +72 608.418 Td +(\() 5.9776 Tj +-600 TJm +(...,) 23.9102 Tj +-600 TJm +(BZ_RUN) 35.8654 Tj +-600 TJm +(\)) 5.9776 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +164.154 608.418 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +-250 TJm +(just) 14.396 Tj +-250 TJm +(do) 9.9626 Tj +-250 TJm +(the) 12.1743 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +225.036 608.418 Td +/F124_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +-600 TJm +(\() 5.9776 Tj +-600 TJm +(...,) 23.9102 Tj +-600 TJm +(BZ_FINISH) 53.798 Tj +-600 TJm +(\)) 5.9776 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +424.786 608.418 Td +/F122_0 9.9626 Tf +(calls.) 20.7521 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 586.501 Td +(All) 12.7322 Tj +-278 TJm +(required) 33.1954 Tj +-277 TJm +(memory) 33.2053 Tj +-278 TJm +(is) 6.6451 Tj +-277 TJm +(allocated) 35.965 Tj +-278 TJm +(by) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +220.295 586.501 Td +/F124_0 9.9626 Tf +(BZ2_bzCompressInit) 107.5961 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +327.891 586.501 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +-785 TJm +(The) 15.4918 Tj +-278 TJm +(compression) 50.3609 Tj +-277 TJm +(library) 26.5603 Tj +-278 TJm +(can) 13.8281 Tj +-277 TJm +(accept) 25.4445 Tj +-278 TJm +(an) 9.4047 Tj +15 TJm +(y) 4.9813 Tj +-277 TJm +(data) 16.5977 Tj +-278 TJm +(at) 7.193 Tj +-278 TJm +(all) 9.9626 Tj +72 574.545 Td +(\(ob) 13.2801 Tj +15 TJm +(viously\).) 35.1481 Tj +-612 TJm +(So) 10.5205 Tj +-238 TJm +(you) 14.9439 Tj +-237 TJm +(shouldn') 34.8691 Tj +18 TJm +(t) 2.7696 Tj +-238 TJm +(get) 12.1743 Tj +-238 TJm +(an) 9.4047 Tj +15 TJm +(y) 4.9813 Tj +-237 TJm +(error) 19.3573 Tj +-238 TJm +(return) 23.7907 Tj +-238 TJm +(v) 4.9813 Tj +25 TJm +(alues) 20.4731 Tj +-238 TJm +(from) 19.3673 Tj +-237 TJm +(the) 12.1743 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +339.287 574.545 Td +/F124_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +425.342 574.545 Td +/F122_0 9.9626 Tf +(calls.) 20.7521 Tj +-612 TJm +(If) 6.6351 Tj +-237 TJm +(you) 14.9439 Tj +-238 TJm +(do,) 12.4533 Tj +-240 TJm +(the) 12.1743 Tj +15 TJm +(y) 4.9813 Tj +-238 TJm +(will) 15.5018 Tj +-238 TJm +(be) 9.4047 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 562.59 Td +/F124_0 9.9626 Tf +(BZ_SEQUENCE_ERROR) 101.6185 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +173.619 562.59 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(indicate) 31.5416 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(ug) 9.9626 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(your) 18.2614 Tj +-250 TJm +(programming.) 56.727 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 540.672 Td +(T) 6.0871 Tj +35 TJm +(ri) 6.0871 Tj +25 TJm +(vial) 14.9439 Tj +-250 TJm +(other) 20.4731 Tj +-250 TJm +(possible) 32.6574 Tj +-250 TJm +(return) 23.7907 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alues:) 23.2427 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 501.654] cm +0 0 468 35.866 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 529.151 Td +/F124_0 9.9626 Tf +(BZ_PARAM_ERROR) 83.6858 Tj +98.488 517.196 Td +(if) 11.9551 Tj +-426 TJm +(strm) 23.9102 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL,) 29.8878 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(strm->s) 41.8429 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 471.033 Td +/F116_0 17.2154 Tf +(3.3.3.) 43.0729 Tj +-278 TJm +(BZ2_bzCompressEnd) 177.9212 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 442.563] cm +0 0 468 23.91 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 458.104 Td +/F124_0 9.9626 Tf +(int) 17.9327 Tj +-426 TJm +(BZ2_bzCompressEnd) 101.6185 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(bz_stream) 53.798 Tj +286.303 456.361 Td +(*) 5.9776 Tj +292.281 458.104 Td +(strm) 23.9102 Tj +-426 TJm +(\);) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 420.645 Td +/F122_0 9.9626 Tf +(Releases) 34.8591 Tj +-250 TJm +(all) 9.9626 Tj +-250 TJm +(memory) 33.2053 Tj +-250 TJm +(associated) 40.9463 Tj +-250 TJm +(with) 17.7135 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(compression) 50.3609 Tj +-250 TJm +(stream.) 29.0509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 398.727 Td +(Possible) 33.2153 Tj +-250 TJm +(return) 23.7907 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alues:) 23.2427 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 361.766] cm +0 0 468 35.866 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 389.263 Td +/F124_0 9.9626 Tf +(BZ_PARAM_ERROR) 83.6858 Tj +-852 TJm +(if) 11.9551 Tj +-426 TJm +(strm) 23.9102 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(strm->s) 41.8429 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +90 377.307 Td +(BZ_OK) 29.8878 Tj +-4686 TJm +(otherwise) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 331.145 Td +/F116_0 17.2154 Tf +(3.3.4.) 43.0729 Tj +-278 TJm +(BZ2_bzDecompressInit) 190.3679 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 302.674] cm +0 0 468 23.91 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 318.216 Td +/F124_0 9.9626 Tf +(int) 17.9327 Tj +-426 TJm +(BZ2_bzDecompressInit) 119.5512 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(bz_stream) 53.798 Tj +304.236 316.473 Td +(*) 5.9776 Tj +310.214 318.216 Td +(strm,) 29.8878 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(verbosity,) 59.7756 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(small) 29.8878 Tj +-426 TJm +(\);) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 280.757 Td +/F122_0 9.9626 Tf +(Prepares) 34.3012 Tj +-351 TJm +(for) 11.6164 Tj +-351 TJm +(decompression.) 62.2563 Tj +-1228 TJm +(As) 11.0684 Tj +-351 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +235.177 280.757 Td +/F124_0 9.9626 Tf +(BZ2_bzCompressInit) 107.5961 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +342.773 280.757 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-377 TJm +(a) 4.4234 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +356.937 280.757 Td +/F124_0 9.9626 Tf +(bz_stream) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +414.235 280.757 Td +/F122_0 9.9626 Tf +(record) 25.4445 Tj +-351 TJm +(should) 26.5703 Tj +-351 TJm +(be) 9.4047 Tj +-352 TJm +(allocated) 35.965 Tj +-351 TJm +(and) 14.386 Tj +72 268.801 Td +(initialised) 39.3025 Tj +-306 TJm +(before) 25.4445 Tj +-305 TJm +(the) 12.1743 Tj +-306 TJm +(call.) 16.8766 Tj +-953 TJm +(Fields) 24.3586 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +211.833 268.801 Td +/F124_0 9.9626 Tf +(bzalloc) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +253.676 268.801 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +259.35 268.801 Td +/F124_0 9.9626 Tf +(bzfree) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +298.26 268.801 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +315.69 268.801 Td +/F124_0 9.9626 Tf +(opaque) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +354.6 268.801 Td +/F122_0 9.9626 Tf +(should) 26.5703 Tj +-306 TJm +(be) 9.4047 Tj +-305 TJm +(set) 11.0684 Tj +-306 TJm +(if) 6.0871 Tj +-305 TJm +(a) 4.4234 Tj +-306 TJm +(custom) 28.782 Tj +-305 TJm +(memory) 33.2053 Tj +-306 TJm +(allocator) 34.8591 Tj +-306 TJm +(is) 6.6451 Tj +72 256.846 Td +(required,) 35.686 Tj +-350 TJm +(or) 8.2988 Tj +-331 TJm +(made) 21.579 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +147.635 256.846 Td +/F124_0 9.9626 Tf +(NULL) 23.9102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +174.836 256.846 Td +/F122_0 9.9626 Tf +(for) 11.6164 Tj +-330 TJm +(the) 12.1743 Tj +-331 TJm +(normal) 28.224 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +236.722 256.846 Td +/F124_0 9.9626 Tf +(malloc) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +275.878 256.846 Td +/F122_0 9.9626 Tf +(/) 2.7696 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +281.938 256.846 Td +/F124_0 9.9626 Tf +(free) 23.9102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +309.139 256.846 Td +/F122_0 9.9626 Tf +(routines.) 34.5901 Tj +-1102 TJm +(Upon) 22.1369 Tj +-330 TJm +(return,) 26.2813 Tj +-350 TJm +(the) 12.1743 Tj +-331 TJm +(internal) 30.4357 Tj +-330 TJm +(state) 18.2614 Tj +-330 TJm +(will) 15.5018 Tj +-330 TJm +(ha) 9.4047 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-331 TJm +(been) 18.8094 Tj +72 244.891 Td +(initialised,) 41.7931 Tj +-250 TJm +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +133.16 244.891 Td +/F124_0 9.9626 Tf +(total_in) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +183.471 244.891 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +200.348 244.891 Td +/F124_0 9.9626 Tf +(total_out) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +256.637 244.891 Td +/F122_0 9.9626 Tf +(will) 15.5018 Tj +-250 TJm +(be) 9.4047 Tj +-250 TJm +(zero.) 19.6363 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 222.973 Td +(F) 5.5392 Tj +15 TJm +(or) 8.2988 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(meaning) 34.3112 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(parameter) 39.8305 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +192.756 222.973 Td +/F124_0 9.9626 Tf +(verbosity) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +246.554 222.973 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-250 TJm +(see) 12.7222 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +266.748 222.973 Td +/F124_0 9.9626 Tf +(BZ2_bzCompressInit) 107.5961 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +374.345 222.973 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 201.055 Td +(If) 6.6351 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +81.497 201.055 Td +/F124_0 9.9626 Tf +(small) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +114.248 201.055 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-287 TJm +(nonzero,) 34.5802 Tj +-297 TJm +(the) 12.1743 Tj +-287 TJm +(library) 26.5603 Tj +-288 TJm +(wil) 12.7322 Tj +1 TJm +(l) 2.7696 Tj +-288 TJm +(use) 13.2801 Tj +-287 TJm +(an) 9.4047 Tj +-287 TJm +(alternati) 32.6474 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-288 TJm +(decompression) 59.7656 Tj +-287 TJm +(algorithm) 38.7446 Tj +-287 TJm +(which) 24.3486 Tj +-288 TJm +(uses) 17.1556 Tj +-287 TJm +(less) 14.9439 Tj +-287 TJm +(memory) 33.2053 Tj +-287 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-288 TJm +(at) 7.193 Tj +-287 TJm +(the) 12.1743 Tj +72 189.1 Td +(cost) 16.0497 Tj +-289 TJm +(of) 8.2988 Tj +-290 TJm +(decompressing) 59.7656 Tj +-289 TJm +(more) 20.4731 Tj +-289 TJm +(slo) 11.6264 Tj +25 TJm +(wly) 14.9439 Tj +-290 TJm +(\(roughly) 34.3112 Tj +-289 TJm +(speaking,) 37.9077 Tj +-299 TJm +(half) 15.4918 Tj +-290 TJm +(the) 12.1743 Tj +-289 TJm +(speed,) 25.1755 Tj +-299 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-289 TJm +(the) 12.1743 Tj +-290 TJm +(maximum) 40.4083 Tj +-289 TJm +(memory) 33.2053 Tj +-289 TJm +(requirement) 48.1393 Tj +-290 TJm +(drops) 22.1369 Tj +72 177.145 Td +(to) 7.7509 Tj +-250 TJm +(around) 27.6661 Tj +-250 TJm +(2300k\).) 30.7147 Tj +-620 TJm +(See) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +-250 TJm +(Ho) 12.1743 Tj +25 TJm +(w) 7.193 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(use) 13.2801 Tj +-250 TJm +(bzip2) 22.1369 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +-250 TJm +([2]) 11.6164 Tj +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-250 TJm +(for) 11.6164 Tj +-250 TJm +(more) 20.4731 Tj +-250 TJm +(information) 47.0434 Tj +-250 TJm +(on) 9.9626 Tj +-250 TJm +(memory) 33.2053 Tj +-250 TJm +(management.) 53.3995 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 155.227 Td +(Note) 19.3673 Tj +-289 TJm +(that) 14.9439 Tj +-290 TJm +(the) 12.1743 Tj +-289 TJm +(amount) 29.8878 Tj +-289 TJm +(of) 8.2988 Tj +-289 TJm +(memory) 33.2053 Tj +-290 TJm +(needed) 28.2141 Tj +-289 TJm +(to) 7.7509 Tj +-289 TJm +(decompress) 47.0334 Tj +-289 TJm +(a) 4.4234 Tj +-290 TJm +(stream) 26.5603 Tj +-289 TJm +(cannot) 26.5603 Tj +-289 TJm +(be) 9.4047 Tj +-289 TJm +(determined) 44.8217 Tj +-290 TJm +(until) 18.2714 Tj +-289 TJm +(the) 12.1743 Tj +-289 TJm +(stream') 29.8778 Tj +55 TJm +(s) 3.8755 Tj +-289 TJm +(header) 26.5503 Tj +-290 TJm +(has) 13.2801 Tj +72 143.272 Td +(been) 18.8094 Tj +-342 TJm +(read,) 19.6363 Tj +-366 TJm +(so) 8.8568 Tj +-342 TJm +(e) 4.4234 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(en) 9.4047 Tj +-342 TJm +(if) 6.0871 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +161.081 143.272 Td +/F124_0 9.9626 Tf +(BZ2_bzDecompressInit) 119.5512 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +284.043 143.272 Td +/F122_0 9.9626 Tf +(succeeds,) 37.8977 Tj +-365 TJm +(a) 4.4234 Tj +-343 TJm +(subsequent) 44.2738 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +381.098 143.272 Td +/F124_0 9.9626 Tf +(BZ2_bzDecompress) 95.641 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +480.149 143.272 Td +/F122_0 9.9626 Tf +(could) 22.1369 Tj +-342 TJm +(f) 3.3175 Tj +10 TJm +(ail) 9.9626 Tj +-343 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 131.317 Td +/F124_0 9.9626 Tf +(BZ_MEM_ERROR) 71.7307 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +143.731 131.317 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 109.399 Td +(Possible) 33.2153 Tj +-250 TJm +(return) 23.7907 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alues:) 23.2427 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +534.414 50.951 Td +(16) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 17 20 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F122_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +496.556 749.245 Td +/F124_0 9.9626 Tf +(libbzip2) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 624.359] cm +0 0 468 95.641 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 711.631 Td +/F124_0 9.9626 Tf +(BZ_CONFIG_ERROR) 89.6634 Tj +98.488 699.676 Td +(if) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(library) 41.8429 Tj +-426 TJm +(has) 17.9327 Tj +-426 TJm +(been) 23.9102 Tj +-426 TJm +(mis-compiled) 71.7307 Tj +90 687.721 Td +(BZ_PARAM_ERROR) 83.6858 Tj +98.488 675.766 Td +(if) 11.9551 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(small) 29.8878 Tj +-426 TJm +(!=) 11.9551 Tj +-426 TJm +(0) 5.9776 Tj +-426 TJm +(&&) 11.9551 Tj +-426 TJm +(small) 29.8878 Tj +-426 TJm +(!=) 11.9551 Tj +-426 TJm +(1) 5.9776 Tj +-426 TJm +(\)) 5.9776 Tj +98.488 663.811 Td +(or) 11.9551 Tj +-426 TJm +(\(verbosity) 59.7756 Tj +-426 TJm +(<;) 11.9551 Tj +-426 TJm +(0) 5.9776 Tj +-426 TJm +(||) 11.9551 Tj +-426 TJm +(verbosity) 53.798 Tj +-426 TJm +(>) 5.9776 Tj +-426 TJm +(4\)) 11.9551 Tj +90 651.856 Td +(BZ_MEM_ERROR) 71.7307 Tj +98.488 639.9 Td +(if) 11.9551 Tj +-426 TJm +(insufficient) 71.7307 Tj +-426 TJm +(memory) 35.8654 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(available) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 602.441 Td +/F122_0 9.9626 Tf +(Allo) 17.7135 Tj +25 TJm +(w) 7.193 Tj +10 TJm +(able) 16.5977 Tj +-250 TJm +(ne) 9.4047 Tj +15 TJm +(xt) 7.7509 Tj +-250 TJm +(actions:) 30.9936 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 553.524] cm +0 0 468 47.821 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 592.976 Td +/F124_0 9.9626 Tf +(BZ2_bzDecompress) 95.641 Tj +98.488 581.021 Td +(if) 11.9551 Tj +-426 TJm +(BZ_OK) 29.8878 Tj +-426 TJm +(was) 17.9327 Tj +-426 TJm +(returned) 47.8205 Tj +98.488 569.066 Td +(no) 11.9551 Tj +-426 TJm +(specific) 47.8205 Tj +-426 TJm +(action) 35.8654 Tj +-426 TJm +(required) 47.8205 Tj +-426 TJm +(in) 11.9551 Tj +-426 TJm +(case) 23.9102 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(error) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 522.903 Td +/F116_0 17.2154 Tf +(3.3.5.) 43.0729 Tj +-278 TJm +(BZ2_bzDecompress) 164.5448 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 494.433] cm +0 0 468 23.91 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 509.975 Td +/F124_0 9.9626 Tf +(int) 17.9327 Tj +-426 TJm +(BZ2_bzDecompress) 95.641 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(bz_stream) 53.798 Tj +280.326 508.231 Td +(*) 5.9776 Tj +286.303 509.975 Td +(strm) 23.9102 Tj +-426 TJm +(\);) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 472.515 Td +/F122_0 9.9626 Tf +(Pro) 13.8381 Tj +15 TJm +(vides) 21.031 Tj +-301 TJm +(more) 20.4731 Tj +-302 TJm +(input) 20.4831 Tj +-301 TJm +(and/out) 29.8878 Tj +-302 TJm +(output) 25.4644 Tj +-301 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.2988 Tj +25 TJm +(fer) 11.0585 Tj +-301 TJm +(space) 22.1269 Tj +-302 TJm +(for) 11.6164 Tj +-301 TJm +(the) 12.1743 Tj +-302 TJm +(library) 26.5603 Tj +65 TJm +(.) 2.4907 Tj +-928 TJm +(The) 15.4918 Tj +-301 TJm +(caller) 22.1269 Tj +-302 TJm +(maintains) 38.7446 Tj +-301 TJm +(input) 20.4831 Tj +-302 TJm +(and) 14.386 Tj +-301 TJm +(output) 25.4644 Tj +-301 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.2988 Tj +25 TJm +(fers,) 17.4246 Tj +-315 TJm +(and) 14.386 Tj +72 460.56 Td +(uses) 17.1556 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +91.646 460.56 Td +/F124_0 9.9626 Tf +(BZ2_bzDecompress) 95.641 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +189.778 460.56 Td +/F122_0 9.9626 Tf +(to) 7.7509 Tj +-250 TJm +(transfer) 30.4258 Tj +-250 TJm +(data) 16.5977 Tj +-250 TJm +(between) 33.1954 Tj +-250 TJm +(them.) 22.4159 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 438.642 Td +(Before) 27.1082 Tj +-498 TJm +(each) 18.2515 Tj +-499 TJm +(call) 14.386 Tj +-498 TJm +(to) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +159.356 438.642 Td +/F124_0 9.9626 Tf +(BZ2_bzDecompress) 95.641 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +254.997 438.642 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +263.071 438.642 Td +/F124_0 9.9626 Tf +(next_in) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +309.879 438.642 Td +/F122_0 9.9626 Tf +(should) 26.5703 Tj +-498 TJm +(point) 20.4831 Tj +-499 TJm +(at) 7.193 Tj +-498 TJm +(the) 12.1743 Tj +-498 TJm +(compressed) 47.0334 Tj +-499 TJm +(data,) 19.0883 Tj +-560 TJm +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +492.179 438.642 Td +/F124_0 9.9626 Tf +(avail_in) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 426.687 Td +/F122_0 9.9626 Tf +(should) 26.5703 Tj +-308 TJm +(indicate) 31.5416 Tj +-308 TJm +(ho) 9.9626 Tj +25 TJm +(w) 7.193 Tj +-309 TJm +(man) 17.1556 Tj +15 TJm +(y) 4.9813 Tj +-308 TJm +(bytes) 21.031 Tj +-308 TJm +(the) 12.1743 Tj +-308 TJm +(library) 26.5603 Tj +-308 TJm +(may) 17.1556 Tj +-309 TJm +(read.) 19.6363 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +294.955 426.687 Td +/F124_0 9.9626 Tf +(BZ2_bzDecompress) 95.641 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +393.667 426.687 Td +/F122_0 9.9626 Tf +(updates) 30.4357 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +427.173 426.687 Td +/F124_0 9.9626 Tf +(next_in) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +469.016 426.687 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +474.723 426.687 Td +/F124_0 9.9626 Tf +(avail_in) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +525.614 426.687 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 414.732 Td +/F124_0 9.9626 Tf +(total_in) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +122.311 414.732 Td +/F122_0 9.9626 Tf +(to) 7.7509 Tj +-250 TJm +(re\003ect) 24.8965 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(number) 30.4357 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(bytes) 21.031 Tj +-250 TJm +(it) 5.5392 Tj +-250 TJm +(has) 13.2801 Tj +-250 TJm +(read.) 19.6363 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 392.814 Td +(Similarly) 37.0908 Tj +65 TJm +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +113.799 392.814 Td +/F124_0 9.9626 Tf +(next_out) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +164.41 392.814 Td +/F122_0 9.9626 Tf +(should) 26.5703 Tj +-280 TJm +(point) 20.4831 Tj +-280 TJm +(to) 7.7509 Tj +-280 TJm +(a) 4.4234 Tj +-280 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.2988 Tj +25 TJm +(fer) 11.0585 Tj +-281 TJm +(i) 2.7696 Tj +1 TJm +(n) 4.9813 Tj +-281 TJm +(which) 24.3486 Tj +-280 TJm +(the) 12.1743 Tj +-280 TJm +(uncompressed) 56.996 Tj +-280 TJm +(output) 25.4644 Tj +-280 TJm +(is) 6.6451 Tj +-280 TJm +(to) 7.7509 Tj +-280 TJm +(be) 9.4047 Tj +-280 TJm +(placed,) 28.493 Tj +-288 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +486.202 392.814 Td +/F124_0 9.9626 Tf +(avail_out) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 380.859 Td +/F122_0 9.9626 Tf +(indicating) 39.8504 Tj +-525 TJm +(ho) 9.9626 Tj +25 TJm +(w) 7.193 Tj +-524 TJm +(much) 22.1369 Tj +-525 TJm +(output) 25.4644 Tj +-524 TJm +(space) 22.1269 Tj +-525 TJm +(is) 6.6451 Tj +-525 TJm +(a) 4.4234 Tj +20 TJm +(v) 4.9813 Tj +25 TJm +(ailable.) 29.0509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +285.792 380.859 Td +/F124_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +374.705 380.859 Td +/F122_0 9.9626 Tf +(updates) 30.4357 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +410.367 380.859 Td +/F124_0 9.9626 Tf +(next_out) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +458.188 380.859 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +466.589 380.859 Td +/F124_0 9.9626 Tf +(avail_out) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +525.614 380.859 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 368.904 Td +/F124_0 9.9626 Tf +(total_out) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +128.289 368.904 Td +/F122_0 9.9626 Tf +(to) 7.7509 Tj +-250 TJm +(re\003ect) 24.8965 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(number) 30.4357 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(bytes) 21.031 Tj +-250 TJm +(output.) 27.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 346.986 Td +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-320 TJm +(may) 17.1556 Tj +-321 TJm +(pro) 13.2801 Tj +15 TJm +(vide) 17.1556 Tj +-320 TJm +(and) 14.386 Tj +-321 TJm +(remo) 20.4731 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-320 TJm +(as) 8.2988 Tj +-321 TJm +(little) 18.2714 Tj +-320 TJm +(or) 8.2988 Tj +-320 TJm +(as) 8.2988 Tj +-321 TJm +(much) 22.1369 Tj +-320 TJm +(data) 16.5977 Tj +-321 TJm +(as) 8.2988 Tj +-320 TJm +(you) 14.9439 Tj +-321 TJm +(lik) 10.5205 Tj +10 TJm +(e) 4.4234 Tj +-320 TJm +(on) 9.9626 Tj +-320 TJm +(each) 18.2515 Tj +-321 TJm +(call) 14.386 Tj +-320 TJm +(of) 8.2988 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +407.816 346.986 Td +/F124_0 9.9626 Tf +(BZ2_bzDecompress) 95.641 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +503.457 346.986 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +-1043 TJm +(In) 8.2988 Tj +-320 TJm +(the) 12.1743 Tj +72 335.031 Td +(limit,) 21.32 Tj +-295 TJm +(it) 5.5392 Tj +-286 TJm +(is) 6.6451 Tj +-287 TJm +(acceptable) 42.0422 Tj +-286 TJm +(to) 7.7509 Tj +-286 TJm +(supply) 26.5703 Tj +-286 TJm +(and) 14.386 Tj +-287 TJm +(remo) 20.4731 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-286 TJm +(data) 16.5977 Tj +-286 TJm +(one) 14.386 Tj +-286 TJm +(byte) 17.1556 Tj +-287 TJm +(at) 7.193 Tj +-286 TJm +(a) 4.4234 Tj +-286 TJm +(time,) 20.2042 Tj +-295 TJm +(although) 34.8691 Tj +-286 TJm +(this) 14.396 Tj +-287 TJm +(w) 7.193 Tj +10 TJm +(ould) 17.7135 Tj +-286 TJm +(be) 9.4047 Tj +-286 TJm +(terribly) 29.3299 Tj +-286 TJm +(inef) 15.4918 Tj +25 TJm +(\002cient.) 27.3972 Tj +-838 TJm +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +72 323.076 Td +(should) 26.5703 Tj +-250 TJm +(al) 7.193 Tj +10 TJm +(w) 7.193 Tj +10 TJm +(ays) 13.2801 Tj +-250 TJm +(ensure) 26.0024 Tj +-250 TJm +(that) 14.9439 Tj +-250 TJm +(at) 7.193 Tj +-250 TJm +(least) 18.2614 Tj +-250 TJm +(one) 14.386 Tj +-250 TJm +(byte) 17.1556 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(output) 25.4644 Tj +-250 TJm +(space) 22.1269 Tj +-250 TJm +(is) 6.6451 Tj +-250 TJm +(a) 4.4234 Tj +20 TJm +(v) 4.9813 Tj +25 TJm +(ailable) 26.5603 Tj +-250 TJm +(at) 7.193 Tj +-250 TJm +(each) 18.2515 Tj +-250 TJm +(call.) 16.8766 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 301.158 Td +(Use) 15.4918 Tj +-250 TJm +(of) 8.2988 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +100.772 301.158 Td +/F124_0 9.9626 Tf +(BZ2_bzDecompress) 95.641 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +198.904 301.158 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-250 TJm +(simpler) 29.8878 Tj +-250 TJm +(than) 17.1556 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +260.064 301.158 Td +/F124_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +343.75 301.158 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 279.24 Td +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-346 TJm +(should) 26.5703 Tj +-347 TJm +(pro) 13.2801 Tj +15 TJm +(vide) 17.1556 Tj +-346 TJm +(input) 20.4831 Tj +-346 TJm +(and) 14.386 Tj +-346 TJm +(remo) 20.4731 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-347 TJm +(output) 25.4644 Tj +-346 TJm +(as) 8.2988 Tj +-346 TJm +(described) 38.1767 Tj +-346 TJm +(abo) 14.386 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e,) 6.914 Tj +-371 TJm +(and) 14.386 Tj +-346 TJm +(repeatedly) 41.4942 Tj +-346 TJm +(call) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +422.638 279.24 Td +/F124_0 9.9626 Tf +(BZ2_bzDecompress) 95.641 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +521.729 279.24 Td +/F122_0 9.9626 Tf +(until) 18.2714 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 267.285 Td +/F124_0 9.9626 Tf +(BZ_STREAM_END) 77.7083 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +152.314 267.285 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-262 TJm +(returned.) 35.686 Tj +-344 TJm +(Appearance) 47.5714 Tj +-262 TJm +(of) 8.2988 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +261.767 267.285 Td +/F124_0 9.9626 Tf +(BZ_STREAM_END) 77.7083 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +342.081 267.285 Td +/F122_0 9.9626 Tf +(denotes) 30.4357 Tj +-262 TJm +(that) 14.9439 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +392.672 267.285 Td +/F124_0 9.9626 Tf +(BZ2_bzDecompress) 95.641 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +490.919 267.285 Td +/F122_0 9.9626 Tf +(has) 13.2801 Tj +-262 TJm +(detected) 33.1954 Tj +72 255.33 Td +(the) 12.1743 Tj +-212 TJm +(logical) 27.1182 Tj +-212 TJm +(end) 14.386 Tj +-211 TJm +(of) 8.2988 Tj +-212 TJm +(the) 12.1743 Tj +-212 TJm +(compressed) 47.0334 Tj +-212 TJm +(stream.) 29.0509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +237.858 255.33 Td +/F124_0 9.9626 Tf +(BZ2_bzDecompress) 95.641 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +335.609 255.33 Td +/F122_0 9.9626 Tf +(will) 15.5018 Tj +-212 TJm +(not) 12.7322 Tj +-212 TJm +(produce) 32.0895 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +402.263 255.33 Td +/F124_0 9.9626 Tf +(BZ_STREAM_END) 77.7083 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +482.082 255.33 Td +/F122_0 9.9626 Tf +(until) 18.2714 Tj +-212 TJm +(all) 9.9626 Tj +-212 TJm +(output) 25.4644 Tj +72 243.375 Td +(data) 16.5977 Tj +-256 TJm +(has) 13.2801 Tj +-256 TJm +(been) 18.8094 Tj +-255 TJm +(placed) 26.0024 Tj +-256 TJm +(into) 15.5018 Tj +-256 TJm +(the) 12.1743 Tj +-256 TJm +(output) 25.4644 Tj +-256 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.2988 Tj +25 TJm +(fer) 11.0585 Tj +40 TJm +(,) 2.4907 Tj +-257 TJm +(so) 8.8568 Tj +-256 TJm +(once) 18.8094 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +278.979 243.375 Td +/F124_0 9.9626 Tf +(BZ_STREAM_END) 77.7083 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +359.236 243.375 Td +/F122_0 9.9626 Tf +(appears,) 32.9164 Tj +-257 TJm +(you) 14.9439 Tj +-256 TJm +(are) 12.1643 Tj +-256 TJm +(guaranteed) 43.7059 Tj +-256 TJm +(to) 7.7509 Tj +-255 TJm +(ha) 9.4047 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-256 TJm +(a) 4.4234 Tj +20 TJm +(v) 4.9813 Tj +25 TJm +(ailable) 26.5603 Tj +72 231.419 Td +(all) 9.9626 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(decompressed) 56.4381 Tj +-250 TJm +(output,) 27.9551 Tj +-250 TJm +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +205.369 231.419 Td +/F124_0 9.9626 Tf +(BZ2_bzDecompressEnd) 113.5736 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +321.433 231.419 Td +/F122_0 9.9626 Tf +(can) 13.8281 Tj +-250 TJm +(safely) 23.7907 Tj +-250 TJm +(be) 9.4047 Tj +-250 TJm +(called.) 26.2813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 209.502 Td +(If) 6.6351 Tj +-250 TJm +(case) 17.1456 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(an) 9.4047 Tj +-250 TJm +(error) 19.3573 Tj +-250 TJm +(return) 23.7907 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alue,) 19.0883 Tj +-250 TJm +(you) 14.9439 Tj +-250 TJm +(should) 26.5703 Tj +-250 TJm +(call) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +261.259 209.502 Td +/F124_0 9.9626 Tf +(BZ2_bzDecompressEnd) 113.5736 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +377.323 209.502 Td +/F122_0 9.9626 Tf +(to) 7.7509 Tj +-250 TJm +(clean) 21.0211 Tj +-250 TJm +(up) 9.9626 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(release) 27.6562 Tj +-250 TJm +(memory) 33.2053 Tj +65 TJm +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 187.584 Td +(Possible) 33.2153 Tj +-250 TJm +(return) 23.7907 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alues:) 23.2427 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +534.414 50.951 Td +(17) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 18 21 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F122_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +496.556 749.245 Td +/F124_0 9.9626 Tf +(libbzip2) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 540.672] cm +0 0 468 179.328 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 711.631 Td +/F124_0 9.9626 Tf +(BZ_PARAM_ERROR) 83.6858 Tj +98.488 699.676 Td +(if) 11.9551 Tj +-426 TJm +(strm) 23.9102 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(strm->s) 41.8429 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +98.488 687.721 Td +(or) 11.9551 Tj +-426 TJm +(strm->avail_out) 89.6634 Tj +-426 TJm +(<) 5.9776 Tj +-426 TJm +(1) 5.9776 Tj +90 675.766 Td +(BZ_DATA_ERROR) 77.7083 Tj +98.488 663.811 Td +(if) 11.9551 Tj +-426 TJm +(a) 5.9776 Tj +-426 TJm +(data) 23.9102 Tj +-426 TJm +(integrity) 53.798 Tj +-426 TJm +(error) 29.8878 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(detected) 47.8205 Tj +-426 TJm +(in) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(compressed) 59.7756 Tj +-426 TJm +(stream) 35.8654 Tj +90 651.856 Td +(BZ_DATA_ERROR_MAGIC) 113.5736 Tj +98.488 639.9 Td +(if) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(compressed) 59.7756 Tj +-426 TJm +(stream) 35.8654 Tj +-426 TJm +(doesn't) 41.8429 Tj +-426 TJm +(begin) 29.8878 Tj +-426 TJm +(with) 23.9102 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(right) 29.8878 Tj +-426 TJm +(magic) 29.8878 Tj +-426 TJm +(bytes) 29.8878 Tj +90 627.945 Td +(BZ_MEM_ERROR) 71.7307 Tj +98.488 615.99 Td +(if) 11.9551 Tj +-426 TJm +(there) 29.8878 Tj +-426 TJm +(wasn't) 35.8654 Tj +-426 TJm +(enough) 35.8654 Tj +-426 TJm +(memory) 35.8654 Tj +-426 TJm +(available) 53.798 Tj +90 604.035 Td +(BZ_STREAM_END) 77.7083 Tj +98.488 592.08 Td +(if) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(logical) 41.8429 Tj +-426 TJm +(end) 17.9327 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(data) 23.9102 Tj +-426 TJm +(stream) 35.8654 Tj +-426 TJm +(was) 17.9327 Tj +-426 TJm +(detected) 47.8205 Tj +-426 TJm +(and) 17.9327 Tj +-426 TJm +(all) 17.9327 Tj +98.488 580.124 Td +(output) 35.8654 Tj +-426 TJm +(in) 11.9551 Tj +-426 TJm +(has) 17.9327 Tj +-426 TJm +(been) 23.9102 Tj +-426 TJm +(consumed,) 53.798 Tj +-426 TJm +(eg) 11.9551 Tj +-426 TJm +(s-->avail_out) 77.7083 Tj +-426 TJm +(>) 5.9776 Tj +-426 TJm +(0) 5.9776 Tj +90 568.169 Td +(BZ_OK) 29.8878 Tj +98.488 556.214 Td +(otherwise) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 518.755 Td +/F122_0 9.9626 Tf +(Allo) 17.7135 Tj +25 TJm +(w) 7.193 Tj +10 TJm +(able) 16.5977 Tj +-250 TJm +(ne) 9.4047 Tj +15 TJm +(xt) 7.7509 Tj +-250 TJm +(actions:) 30.9936 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 457.883] cm +0 0 468 59.776 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 509.29 Td +/F124_0 9.9626 Tf +(BZ2_bzDecompress) 95.641 Tj +98.488 497.335 Td +(if) 11.9551 Tj +-426 TJm +(BZ_OK) 29.8878 Tj +-426 TJm +(was) 17.9327 Tj +-426 TJm +(returned) 47.8205 Tj +90 485.38 Td +(BZ2_bzDecompressEnd) 113.5736 Tj +98.488 473.425 Td +(otherwise) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 427.262 Td +/F116_0 17.2154 Tf +(3.3.6.) 43.0729 Tj +-278 TJm +(BZ2_bzDecompressEnd) 197.0647 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 398.792] cm +0 0 468 23.91 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 414.334 Td +/F124_0 9.9626 Tf +(int) 17.9327 Tj +-426 TJm +(BZ2_bzDecompressEnd) 113.5736 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(bz_stream) 53.798 Tj +298.259 412.59 Td +(*) 5.9776 Tj +304.236 414.334 Td +(strm) 23.9102 Tj +-426 TJm +(\);) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 376.874 Td +/F122_0 9.9626 Tf +(Releases) 34.8591 Tj +-250 TJm +(all) 9.9626 Tj +-250 TJm +(memory) 33.2053 Tj +-250 TJm +(associated) 40.9463 Tj +-250 TJm +(with) 17.7135 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(decompression) 59.7656 Tj +-250 TJm +(stream.) 29.0509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 354.956 Td +(Possible) 33.2153 Tj +-250 TJm +(return) 23.7907 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alues:) 23.2427 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 294.085] cm +0 0 468 59.776 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 345.492 Td +/F124_0 9.9626 Tf +(BZ_PARAM_ERROR) 83.6858 Tj +98.488 333.537 Td +(if) 11.9551 Tj +-426 TJm +(strm) 23.9102 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(strm->s) 41.8429 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +90 321.581 Td +(BZ_OK) 29.8878 Tj +98.488 309.626 Td +(otherwise) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 272.167 Td +/F122_0 9.9626 Tf +(Allo) 17.7135 Tj +25 TJm +(w) 7.193 Tj +10 TJm +(able) 16.5977 Tj +-250 TJm +(ne) 9.4047 Tj +15 TJm +(xt) 7.7509 Tj +-250 TJm +(actions:) 30.9936 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 247.161] cm +0 0 468 23.91 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +98.488 262.702 Td +/F124_0 9.9626 Tf +(None.) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 212.408 Td +/F116_0 20.6585 Tf +(3.4.) 34.4584 Tj +-278 TJm +(High-le) 70.0117 Tj +15 TJm +(vel) 28.7153 Tj +-278 TJm +(interface) 86.1046 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 190.49 Td +/F122_0 9.9626 Tf +(This) 17.7135 Tj +-250 TJm +(interf) 21.579 Tj +10 TJm +(ace) 13.2702 Tj +-250 TJm +(pro) 13.2801 Tj +15 TJm +(vides) 21.031 Tj +-250 TJm +(functions) 37.0808 Tj +-250 TJm +(for) 11.6164 Tj +-250 TJm +(reading) 29.8778 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(writing) 28.782 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +300.292 190.49 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +332.67 190.49 Td +/F122_0 9.9626 Tf +(format) 26.5603 Tj +-250 TJm +(\002les.) 19.0983 Tj +-620 TJm +(First,) 20.7621 Tj +-250 TJm +(some) 21.031 Tj +-250 TJm +(general) 29.3199 Tj +-250 TJm +(points.) 26.8492 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +74.491 158.609 Td +(\225) 3.4869 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-450 TJm +(All) 12.7322 Tj +-353 TJm +(of) 8.2988 Tj +-352 TJm +(the) 12.1743 Tj +-353 TJm +(functions) 37.0808 Tj +-352 TJm +(tak) 12.1743 Tj +10 TJm +(e) 4.4234 Tj +-353 TJm +(an) 9.4047 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +199.726 158.609 Td +/F124_0 9.9626 Tf +(int) 17.9327 Tj +217.658 156.866 Td +(*) 5.9776 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +227.149 158.609 Td +/F122_0 9.9626 Tf +(\002rst) 15.5018 Tj +-353 TJm +(ar) 7.7409 Tj +18 TJm +(gument,) 32.3785 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +289.871 158.609 Td +/F124_0 9.9626 Tf +(bzerror) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +331.715 158.609 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +-1236 TJm +(After) 21.0211 Tj +-352 TJm +(each) 18.2515 Tj +-353 TJm +(call,) 16.8766 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +413.457 158.609 Td +/F124_0 9.9626 Tf +(bzerror) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +458.813 158.609 Td +/F122_0 9.9626 Tf +(should) 26.5703 Tj +-353 TJm +(be) 9.4047 Tj +-352 TJm +(consulted) 38.1866 Tj +81.963 146.654 Td +(\002rst) 15.5018 Tj +-371 TJm +(to) 7.7509 Tj +-371 TJm +(determine) 39.8404 Tj +-372 TJm +(the) 12.1743 Tj +-371 TJm +(outcome) 34.3112 Tj +-371 TJm +(of) 8.2988 Tj +-371 TJm +(the) 12.1743 Tj +-372 TJm +(call.) 16.8766 Tj +-1347 TJm +(If) 6.6351 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +278.539 146.654 Td +/F124_0 9.9626 Tf +(bzerror) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +324.081 146.654 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +334.424 146.654 Td +/F124_0 9.9626 Tf +(BZ_OK) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +364.312 146.654 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-371 TJm +(the) 12.1743 Tj +-372 TJm +(call) 14.386 Tj +-371 TJm +(completed) 41.5042 Tj +-371 TJm +(successfully) 48.6972 Tj +65 TJm +(,) 2.4907 Tj +-402 TJm +(and) 14.386 Tj +-371 TJm +(only) 17.7135 Tj +81.963 134.699 Td +(then) 17.1556 Tj +-292 TJm +(should) 26.5703 Tj +-293 TJm +(the) 12.1743 Tj +-292 TJm +(return) 23.7907 Tj +-292 TJm +(v) 4.9813 Tj +25 TJm +(alue) 16.5977 Tj +-293 TJm +(of) 8.2988 Tj +-292 TJm +(the) 12.1743 Tj +-292 TJm +(function) 33.2053 Tj +-293 TJm +(\(if) 9.4047 Tj +-292 TJm +(an) 9.4047 Tj +15 TJm +(y\)) 8.2988 Tj +-292 TJm +(be) 9.4047 Tj +-293 TJm +(consulted.) 40.6773 Tj +-874 TJm +(If) 6.6351 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +363.994 134.699 Td +/F124_0 9.9626 Tf +(bzerror) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +408.749 134.699 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +418.307 134.699 Td +/F124_0 9.9626 Tf +(BZ_IO_ERROR) 65.7532 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +484.06 134.699 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-292 TJm +(there) 19.9152 Tj +-293 TJm +(w) 7.193 Tj +10 TJm +(as) 8.2988 Tj +-292 TJm +(an) 9.4047 Tj +81.963 122.744 Td +(error) 19.3573 Tj +-279 TJm +(reading/writ) 48.6972 Tj +1 TJm +(ing) 12.7322 Tj +-279 TJm +(the) 12.1743 Tj +-279 TJm +(underlying) 43.1679 Tj +-278 TJm +(compressed) 47.0334 Tj +-279 TJm +(\002le,) 15.2229 Tj +-285 TJm +(and) 14.386 Tj +-279 TJm +(you) 14.9439 Tj +-279 TJm +(should) 26.5703 Tj +-278 TJm +(then) 17.1556 Tj +-279 TJm +(consult) 28.782 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +412.785 122.744 Td +/F124_0 9.9626 Tf +(errno) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +445.448 122.744 Td +/F122_0 9.9626 Tf +(/) 2.7696 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +450.993 122.744 Td +/F124_0 9.9626 Tf +(perror) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +489.634 122.744 Td +/F122_0 9.9626 Tf +(to) 7.7509 Tj +-279 TJm +(determine) 39.8404 Tj +81.963 110.789 Td +(the) 12.1743 Tj +-376 TJm +(cause) 22.1269 Tj +-376 TJm +(of) 8.2988 Tj +-377 TJm +(the) 12.1743 Tj +-376 TJm +(dif) 11.0684 Tj +25 TJm +(\002culty) 25.4644 Tj +65 TJm +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +203.58 110.789 Td +/F124_0 9.9626 Tf +(bzerror) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +249.171 110.789 Td +/F122_0 9.9626 Tf +(may) 17.1556 Tj +-376 TJm +(also) 16.0497 Tj +-376 TJm +(be) 9.4047 Tj +-377 TJm +(set) 11.0684 Tj +-376 TJm +(to) 7.7509 Tj +-376 TJm +(v) 4.9813 Tj +25 TJm +(arious) 24.3486 Tj +-376 TJm +(other) 20.4731 Tj +-377 TJm +(v) 4.9813 Tj +25 TJm +(alues;) 23.2427 Tj +-439 TJm +(precise) 28.2141 Tj +-376 TJm +(details) 26.0123 Tj +-376 TJm +(are) 12.1643 Tj +-377 TJm +(gi) 7.7509 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(en) 9.4047 Tj +-376 TJm +(on) 9.9626 Tj +-376 TJm +(a) 4.4234 Tj +81.963 98.834 Td +(per) 12.7222 Tj +20 TJm +(-function) 36.5229 Tj +-250 TJm +(basis) 19.9252 Tj +-250 TJm +(belo) 17.1556 Tj +25 TJm +(w) 7.193 Tj +65 TJm +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +534.414 50.951 Td +(18) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 19 22 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F122_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +496.556 749.245 Td +/F124_0 9.9626 Tf +(libbzip2) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +74.491 710.037 Td +/F122_0 9.9626 Tf +(\225) 3.4869 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-450 TJm +(If) 6.6351 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +91.793 710.037 Td +/F124_0 9.9626 Tf +(bzerror) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +136.332 710.037 Td +/F122_0 9.9626 Tf +(indicates) 35.417 Tj +-271 TJm +(an) 9.4047 Tj +-270 TJm +(error) 19.3573 Tj +-271 TJm +(\(ie,) 13.0012 Tj +-276 TJm +(an) 9.4047 Tj +15 TJm +(ything) 25.4644 Tj +-271 TJm +(e) 4.4234 Tj +15 TJm +(xcept) 21.579 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +290.317 710.037 Td +/F124_0 9.9626 Tf +(BZ_OK) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +322.901 710.037 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +339.984 710.037 Td +/F124_0 9.9626 Tf +(BZ_STREAM_END) 77.7083 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +417.693 710.037 Td +/F122_0 9.9626 Tf +(\),) 5.8082 Tj +-271 TJm +(you) 14.9439 Tj +-270 TJm +(should) 26.5703 Tj +-271 TJm +(immediately) 49.813 Tj +-271 TJm +(call) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +81.963 698.082 Td +/F124_0 9.9626 Tf +(BZ2_bzReadClose) 89.6634 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +173.971 698.082 Td +/F122_0 9.9626 Tf +(\(or) 11.6164 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +187.932 698.082 Td +/F124_0 9.9626 Tf +(BZ2_bzWriteClose) 95.641 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +283.573 698.082 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-238 TJm +(depending) 41.5042 Tj +-236 TJm +(on) 9.9626 Tj +-235 TJm +(whether) 32.0895 Tj +-235 TJm +(you) 14.9439 Tj +-236 TJm +(are) 12.1643 Tj +-235 TJm +(attempting) 42.62 Tj +-235 TJm +(to) 7.7509 Tj +-236 TJm +(read) 17.1456 Tj +-235 TJm +(or) 8.2988 Tj +-235 TJm +(to) 7.7509 Tj +-236 TJm +(write\)) 23.7907 Tj +-235 TJm +(to) 7.7509 Tj +81.963 686.127 Td +(free) 15.4819 Tj +-309 TJm +(up) 9.9626 Tj +-309 TJm +(all) 9.9626 Tj +-309 TJm +(resources) 37.6188 Tj +-310 TJm +(associated) 40.9463 Tj +-309 TJm +(with) 17.7135 Tj +-309 TJm +(the) 12.1743 Tj +-309 TJm +(stream.) 29.0509 Tj +-975 TJm +(Once) 21.0211 Tj +-309 TJm +(an) 9.4047 Tj +-310 TJm +(error) 19.3573 Tj +-309 TJm +(has) 13.2801 Tj +-309 TJm +(been) 18.8094 Tj +-309 TJm +(indicated,) 39.0135 Tj +-324 TJm +(beha) 18.8094 Tj +20 TJm +(viour) 21.031 Tj +-309 TJm +(of) 8.2988 Tj +-309 TJm +(all) 9.9626 Tj +-310 TJm +(calls) 18.2614 Tj +-309 TJm +(e) 4.4234 Tj +15 TJm +(xcept) 21.579 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +81.963 674.172 Td +/F124_0 9.9626 Tf +(BZ2_bzReadClose) 89.6634 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +175.035 674.172 Td +/F122_0 9.9626 Tf +(\() 3.3175 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +178.352 674.172 Td +/F124_0 9.9626 Tf +(BZ2_bzWriteClose) 95.641 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +273.994 674.172 Td +/F122_0 9.9626 Tf +(\)) 3.3175 Tj +-342 TJm +(is) 6.6451 Tj +-342 TJm +(unde\002ned.) 41.7831 Tj +-1173 TJm +(The) 15.4918 Tj +-342 TJm +(implication) 45.3896 Tj +-342 TJm +(is) 6.6451 Tj +-342 TJm +(that) 14.9439 Tj +-342 TJm +(\(1\)) 11.6164 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +455.366 674.172 Td +/F124_0 9.9626 Tf +(bzerror) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +500.617 674.172 Td +/F122_0 9.9626 Tf +(should) 26.5703 Tj +-342 TJm +(be) 9.4047 Tj +81.963 662.217 Td +(check) 23.2328 Tj +10 TJm +(ed) 9.4047 Tj +-331 TJm +(after) 18.2515 Tj +-331 TJm +(each) 18.2515 Tj +-331 TJm +(call,) 16.8766 Tj +-351 TJm +(and) 14.386 Tj +-331 TJm +(\(2\)) 11.6164 Tj +-331 TJm +(if) 6.0871 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +223.255 662.217 Td +/F124_0 9.9626 Tf +(bzerror) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +268.396 662.217 Td +/F122_0 9.9626 Tf +(indicates) 35.417 Tj +-331 TJm +(an) 9.4047 Tj +-331 TJm +(error) 19.3573 Tj +40 TJm +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +344.762 662.217 Td +/F124_0 9.9626 Tf +(BZ2_bzReadClose) 89.6634 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +437.724 662.217 Td +/F122_0 9.9626 Tf +(\() 3.3175 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +441.041 662.217 Td +/F124_0 9.9626 Tf +(BZ2_bzWriteClose) 95.641 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +536.682 662.217 Td +/F122_0 9.9626 Tf +(\)) 3.3175 Tj +81.963 650.261 Td +(should) 26.5703 Tj +-250 TJm +(then) 17.1556 Tj +-250 TJm +(be) 9.4047 Tj +-250 TJm +(called) 23.7907 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(clean) 21.0211 Tj +-250 TJm +(up.) 12.4533 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +74.491 628.344 Td +(\225) 3.4869 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-450 TJm +(The) 15.4918 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +100.186 628.344 Td +/F124_0 9.9626 Tf +(FILE) 23.9102 Tj +124.097 626.6 Td +(*) 5.9776 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +132.308 628.344 Td +/F122_0 9.9626 Tf +(ar) 7.7409 Tj +18 TJm +(guments) 33.7633 Tj +-224 TJm +(passed) 26.5603 Tj +-224 TJm +(to) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +214.645 628.344 Td +/F124_0 9.9626 Tf +(BZ2_bzReadOpen) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +300.565 628.344 Td +/F122_0 9.9626 Tf +(/) 2.7696 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +305.569 628.344 Td +/F124_0 9.9626 Tf +(BZ2_bzWriteOpen) 89.6634 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +397.466 628.344 Td +/F122_0 9.9626 Tf +(should) 26.5703 Tj +-224 TJm +(be) 9.4047 Tj +-224 TJm +(set) 11.0684 Tj +-225 TJm +(to) 7.7509 Tj +-224 TJm +(binary) 25.4544 Tj +-224 TJm +(mode.) 24.6275 Tj +-603 TJm +(Most) 20.4831 Tj +81.963 616.389 Td +(Unix) 19.9252 Tj +-269 TJm +(systems) 31.5516 Tj +-270 TJm +(will) 15.5018 Tj +-269 TJm +(do) 9.9626 Tj +-269 TJm +(this) 14.396 Tj +-270 TJm +(by) 9.9626 Tj +-269 TJm +(def) 12.7222 Tj +10 TJm +(ault,) 17.4346 Tj +-274 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-270 TJm +(ot) 7.7509 Tj +1 TJm +(her) 12.7222 Tj +-270 TJm +(platforms,) 40.6773 Tj +-274 TJm +(including) 37.6387 Tj +-269 TJm +(W) 9.4047 Tj +40 TJm +(indo) 17.7135 Tj +25 TJm +(ws) 11.0684 Tj +-270 TJm +(and) 14.386 Tj +-269 TJm +(Mac,) 20.1942 Tj +-274 TJm +(will) 15.5018 Tj +-270 TJm +(not.) 15.2229 Tj +-736 TJm +(If) 6.6351 Tj +-269 TJm +(you) 14.9439 Tj +-269 TJm +(omit) 18.2714 Tj +-270 TJm +(this,) 16.8866 Tj +81.963 604.433 Td +(you) 14.9439 Tj +-250 TJm +(may) 17.1556 Tj +-250 TJm +(encounter) 39.2825 Tj +-250 TJm +(problems) 37.0808 Tj +-250 TJm +(when) 21.579 Tj +-250 TJm +(mo) 12.7322 Tj +15 TJm +(ving) 17.7135 Tj +-250 TJm +(code) 18.8094 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(ne) 9.4047 Tj +25 TJm +(w) 7.193 Tj +-250 TJm +(platforms.) 40.6773 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +74.491 582.516 Td +(\225) 3.4869 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-450 TJm +(Memory) 34.3112 Tj +-369 TJm +(allocation) 39.2925 Tj +-370 TJm +(requests) 32.6474 Tj +-369 TJm +(are) 12.1643 Tj +-370 TJm +(handled) 31.5416 Tj +-369 TJm +(by) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +264.468 582.516 Td +/F124_0 9.9626 Tf +(malloc) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +304.014 582.516 Td +/F122_0 9.9626 Tf +(/) 2.7696 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +310.465 582.516 Td +/F124_0 9.9626 Tf +(free) 23.9102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +334.376 582.516 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +-1337 TJm +(At) 9.9626 Tj +-370 TJm +(present) 28.772 Tj +-369 TJm +(there) 19.9152 Tj +-370 TJm +(is) 6.6451 Tj +-369 TJm +(no) 9.9626 Tj +-370 TJm +(f) 3.3175 Tj +10 TJm +(acility) 24.9065 Tj +-369 TJm +(for) 11.6164 Tj +-370 TJm +(user) 16.5977 Tj +20 TJm +(-de\002ned) 32.6474 Tj +81.963 570.56 Td +(memory) 33.2053 Tj +-250 TJm +(allocators) 38.7346 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(\002le) 12.7322 Tj +-250 TJm +(I/O) 13.2801 Tj +-250 TJm +(functions) 37.0808 Tj +-250 TJm +(\(could) 25.4544 Tj +-250 TJm +(easily) 23.2427 Tj +-250 TJm +(be) 9.4047 Tj +-250 TJm +(added,) 26.2813 Tj +-250 TJm +(though\).) 33.4843 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 529.977 Td +/F116_0 17.2154 Tf +(3.4.1.) 43.0729 Tj +-278 TJm +(BZ2_bzReadOpen) 147.3122 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 453.686] cm +0 0 468 71.731 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 517.048 Td +/F124_0 9.9626 Tf +(typedef) 41.8429 Tj +-426 TJm +(void) 23.9102 Tj +-426 TJm +(BZFILE;) 41.8429 Tj +90 493.138 Td +(BZFILE) 35.8654 Tj +130.109 491.394 Td +(*) 5.9776 Tj +136.087 493.138 Td +(BZ2_bzReadOpen\() 89.6634 Tj +-426 TJm +(int) 17.9327 Tj +252.171 491.394 Td +(*) 5.9776 Tj +258.149 493.138 Td +(bzerror,) 47.8205 Tj +-426 TJm +(FILE) 23.9102 Tj +338.368 491.394 Td +(*) 5.9776 Tj +344.346 493.138 Td +(f,) 11.9551 Tj +191.855 481.183 Td +(int) 17.9327 Tj +-426 TJm +(verbosity,) 59.7756 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(small,) 35.8654 Tj +191.855 469.228 Td +(void) 23.9102 Tj +220.01 467.484 Td +(*) 5.9776 Tj +225.987 469.228 Td +(unused,) 41.8429 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(nUnused) 41.8429 Tj +-426 TJm +(\);) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 431.768 Td +/F122_0 9.9626 Tf +(Prepare) 30.4258 Tj +-290 TJm +(to) 7.7509 Tj +-289 TJm +(read) 17.1456 Tj +-290 TJm +(compressed) 47.0334 Tj +-290 TJm +(data) 16.5977 Tj +-289 TJm +(from) 19.3673 Tj +-290 TJm +(\002le) 12.7322 Tj +-289 TJm +(handle) 26.5603 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +272.697 431.768 Td +/F124_0 9.9626 Tf +(f) 5.9776 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +278.675 431.768 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +285.439 431.768 Td +/F124_0 9.9626 Tf +(f) 5.9776 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +294.302 431.768 Td +/F122_0 9.9626 Tf +(should) 26.5703 Tj +-290 TJm +(refer) 18.7994 Tj +-289 TJm +(to) 7.7509 Tj +-290 TJm +(a) 4.4234 Tj +-290 TJm +(\002le) 12.7322 Tj +-289 TJm +(which) 24.3486 Tj +-290 TJm +(has) 13.2801 Tj +-290 TJm +(been) 18.8094 Tj +-289 TJm +(opened) 28.772 Tj +-290 TJm +(for) 11.6164 Tj +-289 TJm +(reading,) 32.3685 Tj +-300 TJm +(and) 14.386 Tj +72 419.813 Td +(for) 11.6164 Tj +-306 TJm +(which) 24.3486 Tj +-305 TJm +(the) 12.1743 Tj +-306 TJm +(error) 19.3573 Tj +-306 TJm +(indicator) 35.417 Tj +-305 TJm +(\() 3.3175 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +193.457 419.813 Td +/F124_0 9.9626 Tf +(ferror\(f\)) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +247.255 419.813 Td +/F122_0 9.9626 Tf +(\)is) 9.9626 Tj +-306 TJm +(not) 12.7322 Tj +-305 TJm +(set.) 13.5591 Tj +-954 TJm +(If) 6.6351 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +308.784 419.813 Td +/F124_0 9.9626 Tf +(small) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +341.717 419.813 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-306 TJm +(1,) 7.472 Tj +-319 TJm +(the) 12.1743 Tj +-306 TJm +(library) 26.5603 Tj +-306 TJm +(wil) 12.7322 Tj +1 TJm +(l) 2.7696 Tj +-306 TJm +(try) 11.0684 Tj +-306 TJm +(to) 7.7509 Tj +-305 TJm +(decompress) 47.0334 Tj +-306 TJm +(using) 21.589 Tj +-306 TJm +(less) 14.9439 Tj +72 407.858 Td +(memory) 33.2053 Tj +65 TJm +(,) 2.4907 Tj +-250 TJm +(at) 7.193 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(e) 4.4234 Tj +15 TJm +(xpense) 27.6661 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(speed.) 25.1755 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 385.94 Td +(F) 5.5392 Tj +15 TJm +(or) 8.2988 Tj +-227 TJm +(reasons) 29.8778 Tj +-227 TJm +(e) 4.4234 Tj +15 TJm +(xplained) 34.3112 Tj +-228 TJm +(belo) 17.1556 Tj +25 TJm +(w) 7.193 Tj +65 TJm +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +189.193 385.94 Td +/F124_0 9.9626 Tf +(BZ2_bzRead) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +251.232 385.94 Td +/F122_0 9.9626 Tf +(will) 15.5018 Tj +-227 TJm +(decompress) 47.0334 Tj +-227 TJm +(the) 12.1743 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +332.732 385.94 Td +/F124_0 9.9626 Tf +(nUnused) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +376.838 385.94 Td +/F122_0 9.9626 Tf +(bytes) 21.031 Tj +-227 TJm +(starting) 29.8878 Tj +-227 TJm +(at) 7.193 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +441.74 385.94 Td +/F124_0 9.9626 Tf +(unused) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +477.605 385.94 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-232 TJm +(before) 25.4445 Tj +-227 TJm +(starting) 29.8878 Tj +72 373.985 Td +(to) 7.7509 Tj +-280 TJm +(read) 17.1456 Tj +-279 TJm +(from) 19.3673 Tj +-280 TJm +(the) 12.1743 Tj +-279 TJm +(\002le) 12.7322 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +155.094 373.985 Td +/F124_0 9.9626 Tf +(f) 5.9776 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +161.072 373.985 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +-797 TJm +(At) 9.9626 Tj +-280 TJm +(most) 19.3773 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +206.414 373.985 Td +/F124_0 9.9626 Tf +(BZ_MAX_UNUSED) 77.7083 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +286.907 373.985 Td +/F122_0 9.9626 Tf +(bytes) 21.031 Tj +-280 TJm +(may) 17.1556 Tj +-279 TJm +(be) 9.4047 Tj +-280 TJm +(supplied) 33.7633 Tj +-279 TJm +(lik) 10.5205 Tj +10 TJm +(e) 4.4234 Tj +-280 TJm +(this.) 16.8866 Tj +-797 TJm +(If) 6.6351 Tj +-279 TJm +(this) 14.396 Tj +-280 TJm +(f) 3.3175 Tj +10 TJm +(acility) 24.9065 Tj +-279 TJm +(is) 6.6451 Tj +-280 TJm +(not) 12.7322 Tj +-279 TJm +(required,) 35.686 Tj +72 362.03 Td +(you) 14.9439 Tj +-250 TJm +(should) 26.5703 Tj +-250 TJm +(pass) 17.1556 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +138.141 362.03 Td +/F124_0 9.9626 Tf +(NULL) 23.9102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +164.542 362.03 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +181.419 362.03 Td +/F124_0 9.9626 Tf +(0) 5.9776 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +189.887 362.03 Td +/F122_0 9.9626 Tf +(for) 11.6164 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +203.994 362.03 Td +/F124_0 9.9626 Tf +(unused) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +242.35 362.03 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +-250 TJm +(n) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +264.208 362.03 Td +/F124_0 9.9626 Tf +(Unused) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +302.565 362.03 Td +/F122_0 9.9626 Tf +(respecti) 30.9837 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ely) 12.1743 Tj +65 TJm +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 340.112 Td +(F) 5.5392 Tj +15 TJm +(or) 8.2988 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(meaning) 34.3112 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(parameters) 43.7059 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +196.631 340.112 Td +/F124_0 9.9626 Tf +(small) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +229.01 340.112 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +245.887 340.112 Td +/F124_0 9.9626 Tf +(verbosity) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +299.685 340.112 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-250 TJm +(see) 12.7222 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +319.879 340.112 Td +/F124_0 9.9626 Tf +(BZ2_bzDecompressInit) 119.5512 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +439.431 340.112 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 318.194 Td +(The) 15.4918 Tj +-402 TJm +(amount) 29.8878 Tj +-402 TJm +(of) 8.2988 Tj +-402 TJm +(memory) 33.2053 Tj +-402 TJm +(needed) 28.2141 Tj +-402 TJm +(to) 7.7509 Tj +-402 TJm +(decompress) 47.0334 Tj +-402 TJm +(a) 4.4234 Tj +-401 TJm +(\002le) 12.7322 Tj +-402 TJm +(cannot) 26.5603 Tj +-402 TJm +(be) 9.4047 Tj +-402 TJm +(determined) 44.8217 Tj +-402 TJm +(until) 18.2714 Tj +-402 TJm +(the) 12.1743 Tj +-402 TJm +(\002le') 16.0497 Tj +55 TJm +(s) 3.8755 Tj +-402 TJm +(header) 26.5503 Tj +-402 TJm +(has) 13.2801 Tj +-402 TJm +(been) 18.8094 Tj +-402 TJm +(read.) 19.6363 Tj +72 306.239 Td +(So) 10.5205 Tj +-492 TJm +(it) 5.5392 Tj +-491 TJm +(is) 6.6451 Tj +-492 TJm +(possible) 32.6574 Tj +-492 TJm +(that) 14.9439 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +166.797 306.239 Td +/F124_0 9.9626 Tf +(BZ2_bzReadOpen) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +255.381 306.239 Td +/F122_0 9.9626 Tf +(returns) 27.6661 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +287.946 306.239 Td +/F124_0 9.9626 Tf +(BZ_OK) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +322.729 306.239 Td +/F122_0 9.9626 Tf +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-492 TJm +(a) 4.4234 Tj +-491 TJm +(subsequent) 44.2738 Tj +-492 TJm +(call) 14.386 Tj +-492 TJm +(of) 8.2988 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +431.135 306.239 Td +/F124_0 9.9626 Tf +(BZ2_bzRead) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +495.81 306.239 Td +/F122_0 9.9626 Tf +(will) 15.5018 Tj +-492 TJm +(return) 23.7907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 294.284 Td +/F124_0 9.9626 Tf +(BZ_MEM_ERROR) 71.7307 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +143.731 294.284 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 272.366 Td +(Possible) 33.2153 Tj +-250 TJm +(assignments) 48.7072 Tj +-250 TJm +(to) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +169.144 272.366 Td +/F124_0 9.9626 Tf +(bzerror) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +210.987 272.366 Td +/F122_0 9.9626 Tf +(:) 2.7696 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 101.84] cm +0 0 468 167.372 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 260.844 Td +/F124_0 9.9626 Tf +(BZ_CONFIG_ERROR) 89.6634 Tj +98.488 248.889 Td +(if) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(library) 41.8429 Tj +-426 TJm +(has) 17.9327 Tj +-426 TJm +(been) 23.9102 Tj +-426 TJm +(mis-compiled) 71.7307 Tj +90 236.934 Td +(BZ_PARAM_ERROR) 83.6858 Tj +98.488 224.979 Td +(if) 11.9551 Tj +-426 TJm +(f) 5.9776 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +98.488 213.023 Td +(or) 11.9551 Tj +-426 TJm +(small) 29.8878 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(neither) 41.8429 Tj +-426 TJm +(0) 5.9776 Tj +-426 TJm +(nor) 17.9327 Tj +-426 TJm +(1) 5.9776 Tj +98.488 201.068 Td +(or) 11.9551 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(unused) 35.8654 Tj +-426 TJm +(==) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +-426 TJm +(&&) 11.9551 Tj +-426 TJm +(nUnused) 41.8429 Tj +-426 TJm +(!=) 11.9551 Tj +-426 TJm +(0) 5.9776 Tj +-426 TJm +(\)) 5.9776 Tj +98.488 189.113 Td +(or) 11.9551 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(unused) 35.8654 Tj +-426 TJm +(!=) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +-426 TJm +(&&) 11.9551 Tj +-426 TJm +(!\(0) 17.9327 Tj +-426 TJm +(<=) 11.9551 Tj +-426 TJm +(nUnused) 41.8429 Tj +-426 TJm +(<=) 11.9551 Tj +-426 TJm +(BZ_MAX_UNUSED\)) 83.6858 Tj +-426 TJm +(\)) 5.9776 Tj +90 177.158 Td +(BZ_IO_ERROR) 65.7532 Tj +98.488 165.203 Td +(if) 11.9551 Tj +-426 TJm +(ferror\(f\)) 53.798 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(nonzero) 41.8429 Tj +90 153.248 Td +(BZ_MEM_ERROR) 71.7307 Tj +98.488 141.292 Td +(if) 11.9551 Tj +-426 TJm +(insufficient) 71.7307 Tj +-426 TJm +(memory) 35.8654 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(available) 53.798 Tj +90 129.337 Td +(BZ_OK) 29.8878 Tj +98.488 117.382 Td +(otherwise.) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 79.922 Td +/F122_0 9.9626 Tf +(Possible) 33.2153 Tj +-250 TJm +(return) 23.7907 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alues:) 23.2427 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +534.414 51.071 Td +(19) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 20 23 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F122_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +496.556 749.245 Td +/F124_0 9.9626 Tf +(libbzip2) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 660.224] cm +0 0 468 59.776 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 711.631 Td +/F124_0 9.9626 Tf +(Pointer) 41.8429 Tj +-426 TJm +(to) 11.9551 Tj +-426 TJm +(an) 11.9551 Tj +-426 TJm +(abstract) 47.8205 Tj +-426 TJm +(BZFILE) 35.8654 Tj +98.488 699.676 Td +(if) 11.9551 Tj +-426 TJm +(bzerror) 41.8429 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(BZ_OK) 29.8878 Tj +90 687.721 Td +(NULL) 23.9102 Tj +98.488 675.766 Td +(otherwise) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 638.306 Td +/F122_0 9.9626 Tf +(Allo) 17.7135 Tj +25 TJm +(w) 7.193 Tj +10 TJm +(able) 16.5977 Tj +-250 TJm +(ne) 9.4047 Tj +15 TJm +(xt) 7.7509 Tj +-250 TJm +(actions:) 30.9936 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 577.435] cm +0 0 468 59.776 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 628.842 Td +/F124_0 9.9626 Tf +(BZ2_bzRead) 59.7756 Tj +98.488 616.887 Td +(if) 11.9551 Tj +-426 TJm +(bzerror) 41.8429 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(BZ_OK) 29.8878 Tj +90 604.932 Td +(BZ2_bzClose) 65.7532 Tj +98.488 592.976 Td +(otherwise) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 546.814 Td +/F116_0 17.2154 Tf +(3.4.2.) 43.0729 Tj +-278 TJm +(BZ2_bzRead) 103.3096 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 519.841] cm +0 0 468 23.91 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 535.383 Td +/F124_0 9.9626 Tf +(int) 17.9327 Tj +-426 TJm +(BZ2_bzRead) 59.7756 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(int) 17.9327 Tj +208.595 533.639 Td +(*) 5.9776 Tj +214.572 535.383 Td +(bzerror,) 47.8205 Tj +-426 TJm +(BZFILE) 35.8654 Tj +306.747 533.639 Td +(*) 5.9776 Tj +312.724 535.383 Td +(b,) 11.9551 Tj +-426 TJm +(void) 23.9102 Tj +357.078 533.639 Td +(*) 5.9776 Tj +363.055 535.383 Td +(buf,) 23.9102 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(len) 17.9327 Tj +-426 TJm +(\);) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 497.923 Td +/F122_0 9.9626 Tf +(Reads) 24.3486 Tj +-285 TJm +(up) 9.9626 Tj +-284 TJm +(to) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +122.569 497.923 Td +/F124_0 9.9626 Tf +(len) 17.9327 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +143.337 497.923 Td +/F122_0 9.9626 Tf +(\(uncompressed\)) 63.6311 Tj +-285 TJm +(bytes) 21.031 Tj +-284 TJm +(from) 19.3673 Tj +-285 TJm +(the) 12.1743 Tj +-284 TJm +(compressed) 47.0334 Tj +-285 TJm +(\002le) 12.7322 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +336.319 497.923 Td +/F124_0 9.9626 Tf +(b) 5.9776 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +345.132 497.923 Td +/F122_0 9.9626 Tf +(into) 15.5018 Tj +-285 TJm +(the) 12.1743 Tj +-284 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.2988 Tj +25 TJm +(fer) 11.0585 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +405.205 497.923 Td +/F124_0 9.9626 Tf +(buf) 17.9327 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +423.137 497.923 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +-828 TJm +(If) 6.6351 Tj +-284 TJm +(the) 12.1743 Tj +-285 TJm +(read) 17.1456 Tj +-285 TJm +(w) 7.193 Tj +10 TJm +(as) 8.2988 Tj +-284 TJm +(successful,) 43.4369 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 485.968 Td +/F124_0 9.9626 Tf +(bzerror) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +117.36 485.968 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-353 TJm +(set) 11.0684 Tj +-353 TJm +(to) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +153.374 485.968 Td +/F124_0 9.9626 Tf +(BZ_OK) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +186.778 485.968 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +-353 TJm +(the) 12.1743 Tj +-353 TJm +(number) 30.4357 Tj +-353 TJm +(of) 8.2988 Tj +-353 TJm +(bytes) 21.031 Tj +-353 TJm +(read) 17.1456 Tj +-353 TJm +(is) 6.6451 Tj +-353 TJm +(returned.) 35.686 Tj +-1238 TJm +(If) 6.6351 Tj +-353 TJm +(the) 12.1743 Tj +-353 TJm +(logical) 27.1182 Tj +-353 TJm +(end-of-stream) 55.8802 Tj +-353 TJm +(w) 7.193 Tj +10 TJm +(as) 8.2988 Tj +-353 TJm +(detected,) 35.686 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 474.013 Td +/F124_0 9.9626 Tf +(bzerror) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +116.795 474.013 Td +/F122_0 9.9626 Tf +(will) 15.5018 Tj +-296 TJm +(be) 9.4047 Tj +-297 TJm +(set) 11.0684 Tj +-296 TJm +(to) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +172.328 474.013 Td +/F124_0 9.9626 Tf +(BZ_STREAM_END) 77.7083 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +250.037 474.013 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-296 TJm +(and) 14.386 Tj +-297 TJm +(the) 12.1743 Tj +-296 TJm +(number) 30.4357 Tj +-296 TJm +(of) 8.2988 Tj +-297 TJm +(bytes) 21.031 Tj +-296 TJm +(read) 17.1456 Tj +-296 TJm +(is) 6.6451 Tj +-296 TJm +(returned.) 35.686 Tj +-898 TJm +(All) 12.7322 Tj +-297 TJm +(other) 20.4731 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +470 474.013 Td +/F124_0 9.9626 Tf +(bzerror) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +514.795 474.013 Td +/F122_0 9.9626 Tf +(v) 4.9813 Tj +25 TJm +(alues) 20.4731 Tj +72 462.058 Td +(denote) 26.5603 Tj +-250 TJm +(an) 9.4047 Tj +-250 TJm +(error) 19.3573 Tj +55 TJm +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 440.14 Td +/F124_0 9.9626 Tf +(BZ2_bzRead) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +134.224 440.14 Td +/F122_0 9.9626 Tf +(will) 15.5018 Tj +-246 TJm +(supply) 26.5703 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +181.193 440.14 Td +/F124_0 9.9626 Tf +(len) 17.9327 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +201.575 440.14 Td +/F122_0 9.9626 Tf +(bytes,) 23.5217 Tj +-247 TJm +(unless) 24.9065 Tj +-245 TJm +(the) 12.1743 Tj +-246 TJm +(logical) 27.1182 Tj +-246 TJm +(stream) 26.5603 Tj +-246 TJm +(end) 14.386 Tj +-245 TJm +(is) 6.6451 Tj +-246 TJm +(detected) 33.1954 Tj +-246 TJm +(or) 8.2988 Tj +-246 TJm +(an) 9.4047 Tj +-245 TJm +(error) 19.3573 Tj +-246 TJm +(occurs.) 28.493 Tj +-617 TJm +(Because) 33.1954 Tj +-246 TJm +(of) 8.2988 Tj +-246 TJm +(this,) 16.8866 Tj +-247 TJm +(it) 5.5392 Tj +72 428.185 Td +(is) 6.6451 Tj +-231 TJm +(possible) 32.6574 Tj +-231 TJm +(to) 7.7509 Tj +-231 TJm +(detect) 23.7907 Tj +-231 TJm +(the) 12.1743 Tj +-231 TJm +(stream) 26.5603 Tj +-231 TJm +(end) 14.386 Tj +-232 TJm +(by) 9.9626 Tj +-231 TJm +(observing) 39.2925 Tj +-231 TJm +(when) 21.579 Tj +-231 TJm +(the) 12.1743 Tj +-231 TJm +(number) 30.4357 Tj +-231 TJm +(of) 8.2988 Tj +-231 TJm +(bytes) 21.031 Tj +-231 TJm +(returned) 33.1954 Tj +-231 TJm +(is) 6.6451 Tj +-231 TJm +(less) 14.9439 Tj +-231 TJm +(than) 17.1556 Tj +-232 TJm +(the) 12.1743 Tj +-231 TJm +(number) 30.4357 Tj +-231 TJm +(requested.) 40.6673 Tj +72 416.23 Td +(Ne) 11.6164 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ertheless,) 37.3498 Tj +-309 TJm +(this) 14.396 Tj +-297 TJm +(is) 6.6451 Tj +-298 TJm +(re) 7.7409 Tj +15 TJm +(g) 4.9813 Tj +5 TJm +(arded) 22.1269 Tj +-297 TJm +(as) 8.2988 Tj +-297 TJm +(inadvisable;) 48.1492 Tj +-321 TJm +(you) 14.9439 Tj +-298 TJm +(should) 26.5703 Tj +-297 TJm +(instead) 28.224 Tj +-297 TJm +(check) 23.2328 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +360.631 416.23 Td +/F124_0 9.9626 Tf +(bzerror) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +405.437 416.23 Td +/F122_0 9.9626 Tf +(after) 18.2515 Tj +-297 TJm +(e) 4.4234 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ery) 12.7222 Tj +-298 TJm +(call) 14.386 Tj +-297 TJm +(and) 14.386 Tj +-297 TJm +(w) 7.193 Tj +10 TJm +(atch) 16.5977 Tj +-298 TJm +(out) 12.7322 Tj +-297 TJm +(for) 11.6164 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 404.275 Td +/F124_0 9.9626 Tf +(BZ_STREAM_END) 77.7083 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +149.709 404.275 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 382.357 Td +(Internally) 38.7346 Tj +65 TJm +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +117.541 382.357 Td +/F124_0 9.9626 Tf +(BZ2_bzRead) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +181.786 382.357 Td +/F122_0 9.9626 Tf +(copies) 25.4544 Tj +-449 TJm +(data) 16.5977 Tj +-448 TJm +(from) 19.3673 Tj +-449 TJm +(the) 12.1743 Tj +-448 TJm +(compressed) 47.0334 Tj +-449 TJm +(\002le) 12.7322 Tj +-449 TJm +(in) 7.7509 Tj +-448 TJm +(chunks) 28.224 Tj +-449 TJm +(of) 8.2988 Tj +-448 TJm +(size) 15.4918 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +419.602 382.357 Td +/F124_0 9.9626 Tf +(BZ_MAX_UNUSED) 77.7083 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +501.778 382.357 Td +/F122_0 9.9626 Tf +(bytes) 21.031 Tj +-449 TJm +(be-) 12.7222 Tj +72 370.402 Td +(fore) 16.0398 Tj +-414 TJm +(decompressing) 59.7656 Tj +-414 TJm +(it.) 8.0299 Tj +-1605 TJm +(If) 6.6351 Tj +-415 TJm +(the) 12.1743 Tj +-414 TJm +(\002le) 12.7322 Tj +-414 TJm +(contains) 33.2053 Tj +-414 TJm +(more) 20.4731 Tj +-414 TJm +(bytes) 21.031 Tj +-415 TJm +(than) 17.1556 Tj +-414 TJm +(strictly) 27.6761 Tj +-414 TJm +(needed) 28.2141 Tj +-414 TJm +(to) 7.7509 Tj +-414 TJm +(reach) 21.569 Tj +-414 TJm +(the) 12.1743 Tj +-415 TJm +(logical) 27.1182 Tj +-414 TJm +(end-of-stream,) 58.3709 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 358.446 Td +/F124_0 9.9626 Tf +(BZ2_bzRead) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +134.749 358.446 Td +/F122_0 9.9626 Tf +(will) 15.5018 Tj +-298 TJm +(almost) 26.5703 Tj +-299 TJm +(certainly) 34.8591 Tj +-298 TJm +(read) 17.1456 Tj +-299 TJm +(some) 21.031 Tj +-298 TJm +(of) 8.2988 Tj +-299 TJm +(the) 12.1743 Tj +-298 TJm +(trailing) 28.782 Tj +-299 TJm +(data) 16.5977 Tj +-298 TJm +(before) 25.4445 Tj +-298 TJm +(signalling) 39.3025 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +413.162 358.446 Td +/F124_0 9.9626 Tf +(BZ_SEQUENCE_END) 89.6634 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +502.826 358.446 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +-597 TJm +(T) 6.0871 Tj +80 TJm +(o) 4.9813 Tj +-298 TJm +(col-) 15.4918 Tj +72 346.491 Td +(lect) 14.386 Tj +-242 TJm +(the) 12.1743 Tj +-242 TJm +(read) 17.1456 Tj +-243 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-242 TJm +(unused) 28.224 Tj +-242 TJm +(data) 16.5977 Tj +-242 TJm +(once) 18.8094 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +208.759 346.491 Td +/F124_0 9.9626 Tf +(BZ_SEQUENCE_END) 89.6634 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +300.835 346.491 Td +/F122_0 9.9626 Tf +(has) 13.2801 Tj +-242 TJm +(appeared,) 38.4457 Tj +-244 TJm +(call) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +374.201 346.491 Td +/F124_0 9.9626 Tf +(BZ2_bzReadGetUnused) 113.5736 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +490.188 346.491 Td +/F122_0 9.9626 Tf +(immediately) 49.813 Tj +72 334.536 Td +(before) 25.4445 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +99.935 334.536 Td +/F124_0 9.9626 Tf +(BZ2_bzReadClose) 89.6634 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +189.599 334.536 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 312.618 Td +(Possible) 33.2153 Tj +-250 TJm +(assignments) 48.7072 Tj +-250 TJm +(to) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +169.144 312.618 Td +/F124_0 9.9626 Tf +(bzerror) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +210.987 312.618 Td +/F122_0 9.9626 Tf +(:) 2.7696 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +534.414 50.951 Td +(20) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 21 24 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F122_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +496.556 749.245 Td +/F124_0 9.9626 Tf +(libbzip2) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 456.986] cm +0 0 468 263.014 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 711.631 Td +/F124_0 9.9626 Tf +(BZ_PARAM_ERROR) 83.6858 Tj +98.488 699.676 Td +(if) 11.9551 Tj +-426 TJm +(b) 5.9776 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(buf) 17.9327 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(len) 17.9327 Tj +-426 TJm +(<) 5.9776 Tj +-426 TJm +(0) 5.9776 Tj +90 687.721 Td +(BZ_SEQUENCE_ERROR) 101.6185 Tj +98.488 675.766 Td +(if) 11.9551 Tj +-426 TJm +(b) 5.9776 Tj +-426 TJm +(was) 17.9327 Tj +-426 TJm +(opened) 35.8654 Tj +-426 TJm +(with) 23.9102 Tj +-426 TJm +(BZ2_bzWriteOpen) 89.6634 Tj +90 663.811 Td +(BZ_IO_ERROR) 65.7532 Tj +98.488 651.856 Td +(if) 11.9551 Tj +-426 TJm +(there) 29.8878 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(an) 11.9551 Tj +-426 TJm +(error) 29.8878 Tj +-426 TJm +(reading) 41.8429 Tj +-426 TJm +(from) 23.9102 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(compressed) 59.7756 Tj +-426 TJm +(file) 23.9102 Tj +90 639.9 Td +(BZ_UNEXPECTED_EOF) 101.6185 Tj +98.488 627.945 Td +(if) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(compressed) 59.7756 Tj +-426 TJm +(file) 23.9102 Tj +-426 TJm +(ended) 29.8878 Tj +-426 TJm +(before) 35.8654 Tj +98.488 615.99 Td +(the) 17.9327 Tj +-426 TJm +(logical) 41.8429 Tj +-426 TJm +(end-of-stream) 77.7083 Tj +-426 TJm +(was) 17.9327 Tj +-426 TJm +(detected) 47.8205 Tj +90 604.035 Td +(BZ_DATA_ERROR) 77.7083 Tj +98.488 592.08 Td +(if) 11.9551 Tj +-426 TJm +(a) 5.9776 Tj +-426 TJm +(data) 23.9102 Tj +-426 TJm +(integrity) 53.798 Tj +-426 TJm +(error) 29.8878 Tj +-426 TJm +(was) 17.9327 Tj +-426 TJm +(detected) 47.8205 Tj +-426 TJm +(in) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(compressed) 59.7756 Tj +-426 TJm +(stream) 35.8654 Tj +90 580.124 Td +(BZ_DATA_ERROR_MAGIC) 113.5736 Tj +98.488 568.169 Td +(if) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(stream) 35.8654 Tj +-426 TJm +(does) 23.9102 Tj +-426 TJm +(not) 17.9327 Tj +-426 TJm +(begin) 29.8878 Tj +-426 TJm +(with) 23.9102 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(requisite) 53.798 Tj +-426 TJm +(header) 35.8654 Tj +-426 TJm +(bytes) 29.8878 Tj +98.488 556.214 Td +(\(ie,) 23.9102 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(not) 17.9327 Tj +-426 TJm +(a) 5.9776 Tj +-426 TJm +(bzip2) 29.8878 Tj +-426 TJm +(data) 23.9102 Tj +-426 TJm +(file\).) 35.8654 Tj +-852 TJm +(This) 23.9102 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(really) 35.8654 Tj +98.488 544.259 Td +(a) 5.9776 Tj +-426 TJm +(special) 41.8429 Tj +-426 TJm +(case) 23.9102 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(BZ_DATA_ERROR.) 83.6858 Tj +90 532.304 Td +(BZ_MEM_ERROR) 71.7307 Tj +98.488 520.349 Td +(if) 11.9551 Tj +-426 TJm +(insufficient) 71.7307 Tj +-426 TJm +(memory) 35.8654 Tj +-426 TJm +(was) 17.9327 Tj +-426 TJm +(available) 53.798 Tj +90 508.393 Td +(BZ_STREAM_END) 77.7083 Tj +98.488 496.438 Td +(if) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(logical) 41.8429 Tj +-426 TJm +(end) 17.9327 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(stream) 35.8654 Tj +-426 TJm +(was) 17.9327 Tj +-426 TJm +(detected.) 53.798 Tj +90 484.483 Td +(BZ_OK) 29.8878 Tj +98.488 472.528 Td +(otherwise.) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 435.068 Td +/F122_0 9.9626 Tf +(Possible) 33.2153 Tj +-250 TJm +(return) 23.7907 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alues:) 23.2427 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 374.197] cm +0 0 468 59.776 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 425.604 Td +/F124_0 9.9626 Tf +(number) 35.8654 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(bytes) 29.8878 Tj +-426 TJm +(read) 23.9102 Tj +98.488 413.649 Td +(if) 11.9551 Tj +-426 TJm +(bzerror) 41.8429 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(BZ_OK) 29.8878 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(BZ_STREAM_END) 77.7083 Tj +90 401.694 Td +(undefined) 53.798 Tj +98.488 389.739 Td +(otherwise) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 352.279 Td +/F122_0 9.9626 Tf +(Allo) 17.7135 Tj +25 TJm +(w) 7.193 Tj +10 TJm +(able) 16.5977 Tj +-250 TJm +(ne) 9.4047 Tj +15 TJm +(xt) 7.7509 Tj +-250 TJm +(actions:) 30.9936 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 267.497] cm +0 0 468 83.686 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 342.815 Td +/F124_0 9.9626 Tf +(collect) 41.8429 Tj +-426 TJm +(data) 23.9102 Tj +-426 TJm +(from) 23.9102 Tj +-426 TJm +(buf,) 23.9102 Tj +-426 TJm +(then) 23.9102 Tj +-426 TJm +(BZ2_bzRead) 59.7756 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(BZ2_bzReadClose) 89.6634 Tj +98.488 330.859 Td +(if) 11.9551 Tj +-426 TJm +(bzerror) 41.8429 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(BZ_OK) 29.8878 Tj +90 318.904 Td +(collect) 41.8429 Tj +-426 TJm +(data) 23.9102 Tj +-426 TJm +(from) 23.9102 Tj +-426 TJm +(buf,) 23.9102 Tj +-426 TJm +(then) 23.9102 Tj +-426 TJm +(BZ2_bzReadClose) 89.6634 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(BZ2_bzReadGetUnused) 113.5736 Tj +98.488 306.949 Td +(if) 11.9551 Tj +-426 TJm +(bzerror) 41.8429 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(BZ_SEQUENCE_END) 89.6634 Tj +90 294.994 Td +(BZ2_bzReadClose) 89.6634 Tj +98.488 283.039 Td +(otherwise) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 236.876 Td +/F116_0 17.2154 Tf +(3.4.3.) 43.0729 Tj +-278 TJm +(BZ2_bzReadGetUn) 154.9558 Tj +10 TJm +(used) 40.1807 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 197.948] cm +0 0 468 35.866 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 225.445 Td +/F124_0 9.9626 Tf +(void) 23.9102 Tj +-426 TJm +(BZ2_bzReadGetUnused\() 119.5512 Tj +-426 TJm +(int) 17.9327 Tj +259.883 223.702 Td +(*) 5.9776 Tj +270.104 225.445 Td +(bzerror,) 47.8205 Tj +-426 TJm +(BZFILE) 35.8654 Tj +362.278 223.702 Td +(*) 5.9776 Tj +368.256 225.445 Td +(b,) 11.9551 Tj +200.343 213.49 Td +(void) 23.9102 Tj +224.254 211.747 Td +(**) 11.9551 Tj +240.453 213.49 Td +(unused,) 41.8429 Tj +-426 TJm +(int) 17.9327 Tj +304.473 211.747 Td +(*) 5.9776 Tj +314.694 213.49 Td +(nUnused) 41.8429 Tj +-426 TJm +(\);) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 176.031 Td +/F122_0 9.9626 Tf +(Returns) 30.9936 Tj +-435 TJm +(data) 16.5977 Tj +-435 TJm +(which) 24.3486 Tj +-435 TJm +(w) 7.193 Tj +10 TJm +(as) 8.2988 Tj +-435 TJm +(read) 17.1456 Tj +-435 TJm +(from) 19.3673 Tj +-435 TJm +(the) 12.1743 Tj +-435 TJm +(compressed) 47.0334 Tj +-435 TJm +(\002le) 12.7322 Tj +-435 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-435 TJm +(w) 7.193 Tj +10 TJm +(as) 8.2988 Tj +-435 TJm +(not) 12.7322 Tj +-435 TJm +(needed) 28.2141 Tj +-435 TJm +(to) 7.7509 Tj +-435 TJm +(get) 12.1743 Tj +-435 TJm +(to) 7.7509 Tj +-435 TJm +(the) 12.1743 Tj +-435 TJm +(logical) 27.1182 Tj +-435 TJm +(end-of-stream.) 58.3709 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 162.332 Td +/F124_0 9.9626 Tf +(*) 5.9776 Tj +77.978 164.075 Td +(unused) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +117.2 164.075 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-337 TJm +(set) 11.0684 Tj +-337 TJm +(to) 7.7509 Tj +-337 TJm +(the) 12.1743 Tj +-337 TJm +(address) 29.8778 Tj +-337 TJm +(of) 8.2988 Tj +-336 TJm +(the) 12.1743 Tj +-337 TJm +(data,) 19.0883 Tj +-359 TJm +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +269.089 162.332 Td +/F124_0 9.9626 Tf +(*) 5.9776 Tj +275.067 164.075 Td +(nUnused) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +320.267 164.075 Td +/F122_0 9.9626 Tf +(to) 7.7509 Tj +-337 TJm +(the) 12.1743 Tj +-337 TJm +(number) 30.4357 Tj +-337 TJm +(of) 8.2988 Tj +-337 TJm +(bytes.) 23.5217 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +427.247 162.332 Td +/F124_0 9.9626 Tf +(*) 5.9776 Tj +433.225 164.075 Td +(nUnused) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +478.425 164.075 Td +/F122_0 9.9626 Tf +(will) 15.5018 Tj +-337 TJm +(be) 9.4047 Tj +-337 TJm +(set) 11.0684 Tj +-337 TJm +(to) 7.7509 Tj +-337 TJm +(a) 4.4234 Tj +72 152.12 Td +(v) 4.9813 Tj +25 TJm +(alue) 16.5977 Tj +-250 TJm +(between) 33.1954 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +131.506 152.12 Td +/F124_0 9.9626 Tf +(0) 5.9776 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +139.975 152.12 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +156.851 152.12 Td +/F124_0 9.9626 Tf +(BZ_MAX_UNUSED) 77.7083 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +237.05 152.12 Td +/F122_0 9.9626 Tf +(inclusi) 26.5703 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e.) 6.914 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 130.202 Td +(This) 17.7135 Tj +-882 TJm +(function) 33.2053 Tj +-883 TJm +(may) 17.1556 Tj +-882 TJm +(only) 17.7135 Tj +-883 TJm +(be) 9.4047 Tj +-882 TJm +(called) 23.7907 Tj +-883 TJm +(once) 18.8094 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +271.332 130.202 Td +/F124_0 9.9626 Tf +(BZ2_bzRead) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +339.9 130.202 Td +/F122_0 9.9626 Tf +(has) 13.2801 Tj +-882 TJm +(signalled) 35.9749 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +406.737 130.202 Td +/F124_0 9.9626 Tf +(BZ_STREAM_END) 77.7083 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +493.231 130.202 Td +/F122_0 9.9626 Tf +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-882 TJm +(before) 25.4445 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 118.247 Td +/F124_0 9.9626 Tf +(BZ2_bzReadClose) 89.6634 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +161.664 118.247 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 96.329 Td +(Possible) 33.2153 Tj +-250 TJm +(assignments) 48.7072 Tj +-250 TJm +(to) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +169.144 96.329 Td +/F124_0 9.9626 Tf +(bzerror) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +210.987 96.329 Td +/F122_0 9.9626 Tf +(:) 2.7696 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +534.414 50.852 Td +(21) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 22 25 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F122_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +496.556 749.245 Td +/F124_0 9.9626 Tf +(libbzip2) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 612.403] cm +0 0 468 107.597 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 711.631 Td +/F124_0 9.9626 Tf +(BZ_PARAM_ERROR) 83.6858 Tj +98.488 699.676 Td +(if) 11.9551 Tj +-426 TJm +(b) 5.9776 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +98.488 687.721 Td +(or) 11.9551 Tj +-426 TJm +(unused) 35.8654 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(nUnused) 41.8429 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +90 675.766 Td +(BZ_SEQUENCE_ERROR) 101.6185 Tj +98.488 663.811 Td +(if) 11.9551 Tj +-426 TJm +(BZ_STREAM_END) 77.7083 Tj +-426 TJm +(has) 17.9327 Tj +-426 TJm +(not) 17.9327 Tj +-426 TJm +(been) 23.9102 Tj +-426 TJm +(signalled) 53.798 Tj +98.488 651.856 Td +(or) 11.9551 Tj +-426 TJm +(if) 11.9551 Tj +-426 TJm +(b) 5.9776 Tj +-426 TJm +(was) 17.9327 Tj +-426 TJm +(opened) 35.8654 Tj +-426 TJm +(with) 23.9102 Tj +-426 TJm +(BZ2_bzWriteOpen) 89.6634 Tj +90 639.9 Td +(BZ_OK) 29.8878 Tj +98.488 627.945 Td +(otherwise) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 590.486 Td +/F122_0 9.9626 Tf +(Allo) 17.7135 Tj +25 TJm +(w) 7.193 Tj +10 TJm +(able) 16.5977 Tj +-250 TJm +(ne) 9.4047 Tj +15 TJm +(xt) 7.7509 Tj +-250 TJm +(actions:) 30.9936 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 565.48] cm +0 0 468 23.91 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 581.021 Td +/F124_0 9.9626 Tf +(BZ2_bzReadClose) 89.6634 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 534.858 Td +/F116_0 17.2154 Tf +(3.4.4.) 43.0729 Tj +-278 TJm +(BZ2_bzReadClose) 150.1871 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 507.886] cm +0 0 468 23.91 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 523.428 Td +/F124_0 9.9626 Tf +(void) 23.9102 Tj +-426 TJm +(BZ2_bzReadClose) 89.6634 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(int) 17.9327 Tj +244.46 521.684 Td +(*) 5.9776 Tj +250.438 523.428 Td +(bzerror,) 47.8205 Tj +-426 TJm +(BZFILE) 35.8654 Tj +342.612 521.684 Td +(*) 5.9776 Tj +348.59 523.428 Td +(b) 5.9776 Tj +-426 TJm +(\);) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 485.968 Td +/F122_0 9.9626 Tf +(Releases) 34.8591 Tj +-430 TJm +(all) 9.9626 Tj +-429 TJm +(memory) 33.2053 Tj +-430 TJm +(pertaining) 40.3983 Tj +-429 TJm +(to) 7.7509 Tj +-430 TJm +(the) 12.1743 Tj +-429 TJm +(compressed) 47.0334 Tj +-430 TJm +(\002le) 12.7322 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +304.352 485.968 Td +/F124_0 9.9626 Tf +(b) 5.9776 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +310.33 485.968 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +321.276 485.968 Td +/F124_0 9.9626 Tf +(BZ2_bzReadClose) 89.6634 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +415.22 485.968 Td +/F122_0 9.9626 Tf +(does) 18.2614 Tj +-430 TJm +(not) 12.7322 Tj +-429 TJm +(call) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +473.438 485.968 Td +/F124_0 9.9626 Tf +(fclose) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +513.583 485.968 Td +/F122_0 9.9626 Tf +(on) 9.9626 Tj +-430 TJm +(the) 12.1743 Tj +72 474.013 Td +(underlying) 43.1679 Tj +-264 TJm +(\002le) 12.7322 Tj +-264 TJm +(handle,) 29.0509 Tj +-267 TJm +(so) 8.8568 Tj +-264 TJm +(you) 14.9439 Tj +-264 TJm +(should) 26.5703 Tj +-264 TJm +(do) 9.9626 Tj +-264 TJm +(that) 14.9439 Tj +-264 TJm +(yourself) 32.6474 Tj +-264 TJm +(if) 6.0871 Tj +-263 TJm +(appropriate.) 47.8603 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +348.653 474.013 Td +/F124_0 9.9626 Tf +(BZ2_bzReadClose) 89.6634 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +440.946 474.013 Td +/F122_0 9.9626 Tf +(should) 26.5703 Tj +-264 TJm +(be) 9.4047 Tj +-264 TJm +(called) 23.7907 Tj +-264 TJm +(to) 7.7509 Tj +-264 TJm +(clean) 21.0211 Tj +72 462.058 Td +(up) 9.9626 Tj +-250 TJm +(after) 18.2515 Tj +-250 TJm +(all) 9.9626 Tj +-250 TJm +(error) 19.3573 Tj +-250 TJm +(situations.) 40.6873 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 440.14 Td +(Possible) 33.2153 Tj +-250 TJm +(assignments) 48.7072 Tj +-250 TJm +(to) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +169.144 440.14 Td +/F124_0 9.9626 Tf +(bzerror) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +210.987 440.14 Td +/F122_0 9.9626 Tf +(:) 2.7696 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 377.211] cm +0 0 468 59.776 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 428.618 Td +/F124_0 9.9626 Tf +(BZ_SEQUENCE_ERROR) 101.6185 Tj +98.488 416.663 Td +(if) 11.9551 Tj +-426 TJm +(b) 5.9776 Tj +-426 TJm +(was) 17.9327 Tj +-426 TJm +(opened) 35.8654 Tj +-426 TJm +(with) 23.9102 Tj +-426 TJm +(BZ2_bzOpenWrite) 89.6634 Tj +90 404.708 Td +(BZ_OK) 29.8878 Tj +98.488 392.753 Td +(otherwise) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 355.293 Td +/F122_0 9.9626 Tf +(Allo) 17.7135 Tj +25 TJm +(w) 7.193 Tj +10 TJm +(able) 16.5977 Tj +-250 TJm +(ne) 9.4047 Tj +15 TJm +(xt) 7.7509 Tj +-250 TJm +(actions:) 30.9936 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 330.287] cm +0 0 468 23.91 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 345.829 Td +/F124_0 9.9626 Tf +(none) 23.9102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 299.666 Td +/F116_0 17.2154 Tf +(3.4.5.) 43.0729 Tj +-278 TJm +(BZ2_bzWriteOpen) 148.259 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 247.286] cm +0 0 468 47.821 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 286.738 Td +/F124_0 9.9626 Tf +(BZFILE) 35.8654 Tj +130.109 284.994 Td +(*) 5.9776 Tj +136.087 286.738 Td +(BZ2_bzWriteOpen\() 95.641 Tj +-426 TJm +(int) 17.9327 Tj +258.149 284.994 Td +(*) 5.9776 Tj +264.127 286.738 Td +(bzerror,) 47.8205 Tj +-426 TJm +(FILE) 23.9102 Tj +344.346 284.994 Td +(*) 5.9776 Tj +350.323 286.738 Td +(f,) 11.9551 Tj +196.099 274.783 Td +(int) 17.9327 Tj +-426 TJm +(blockSize100k,) 83.6858 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(verbosity,) 59.7756 Tj +196.099 262.827 Td +(int) 17.9327 Tj +-426 TJm +(workFactor) 59.7756 Tj +-426 TJm +(\);) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 225.368 Td +/F122_0 9.9626 Tf +(Prepare) 30.4258 Tj +-268 TJm +(to) 7.7509 Tj +-269 TJm +(write) 20.4731 Tj +-268 TJm +(compressed) 47.0334 Tj +-269 TJm +(data) 16.5977 Tj +-268 TJm +(to) 7.7509 Tj +-269 TJm +(\002le) 12.7322 Tj +-268 TJm +(handle) 26.5603 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +262.72 225.368 Td +/F124_0 9.9626 Tf +(f) 5.9776 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +268.698 225.368 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +274.829 225.368 Td +/F124_0 9.9626 Tf +(f) 5.9776 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +283.481 225.368 Td +/F122_0 9.9626 Tf +(should) 26.5703 Tj +-268 TJm +(refer) 18.7994 Tj +-269 TJm +(to) 7.7509 Tj +-268 TJm +(a) 4.4234 Tj +-269 TJm +(\002le) 12.7322 Tj +-268 TJm +(which) 24.3486 Tj +-269 TJm +(has) 13.2801 Tj +-268 TJm +(been) 18.8094 Tj +-269 TJm +(opened) 28.772 Tj +-268 TJm +(for) 11.6164 Tj +-269 TJm +(writing,) 31.2726 Tj +-273 TJm +(and) 14.386 Tj +-268 TJm +(for) 11.6164 Tj +72 213.413 Td +(which) 24.3486 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(error) 19.3573 Tj +-250 TJm +(indicator) 35.417 Tj +-250 TJm +(\() 3.3175 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +176.577 213.413 Td +/F124_0 9.9626 Tf +(ferror\(f\)) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +230.375 213.413 Td +/F122_0 9.9626 Tf +(\)is) 9.9626 Tj +-250 TJm +(not) 12.7322 Tj +-250 TJm +(set.) 13.5591 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 191.495 Td +(F) 5.5392 Tj +15 TJm +(or) 8.2988 Tj +-223 TJm +(the) 12.1743 Tj +-224 TJm +(meaning) 34.3112 Tj +-223 TJm +(of) 8.2988 Tj +-224 TJm +(parameters) 43.7059 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +195.306 191.495 Td +/F124_0 9.9626 Tf +(blockSize100k) 77.7083 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +273.015 191.495 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +277.784 191.495 Td +/F124_0 9.9626 Tf +(verbosity) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +333.808 191.495 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +350.42 191.495 Td +/F124_0 9.9626 Tf +(workFactor) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +410.196 191.495 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-229 TJm +(see) 12.7222 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +429.913 191.495 Td +/F124_0 9.9626 Tf +(BZ2_bzCompressInit) 107.5961 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +537.509 191.495 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 169.577 Td +(All) 12.7322 Tj +-382 TJm +(required) 33.1954 Tj +-382 TJm +(memory) 33.2053 Tj +-382 TJm +(is) 6.6451 Tj +-382 TJm +(allocated) 35.965 Tj +-383 TJm +(at) 7.193 Tj +-382 TJm +(this) 14.396 Tj +-382 TJm +(stage,) 22.9638 Tj +-415 TJm +(so) 8.8568 Tj +-382 TJm +(if) 6.0871 Tj +-382 TJm +(the) 12.1743 Tj +-382 TJm +(call) 14.386 Tj +-382 TJm +(completes) 40.3983 Tj +-382 TJm +(successfully) 48.6972 Tj +65 TJm +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +424.691 169.577 Td +/F124_0 9.9626 Tf +(BZ_MEM_ERROR) 71.7307 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +500.228 169.577 Td +/F122_0 9.9626 Tf +(cannot) 26.5603 Tj +-382 TJm +(be) 9.4047 Tj +72 157.622 Td +(signalled) 35.9749 Tj +-250 TJm +(by) 9.9626 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(subsequent) 44.2738 Tj +-250 TJm +(call) 14.386 Tj +-250 TJm +(to) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +203.715 157.622 Td +/F124_0 9.9626 Tf +(BZ2_bzWrite) 65.7532 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +269.468 157.622 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 135.704 Td +(Possible) 33.2153 Tj +-250 TJm +(assignments) 48.7072 Tj +-250 TJm +(to) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +169.144 135.704 Td +/F124_0 9.9626 Tf +(bzerror) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +210.987 135.704 Td +/F122_0 9.9626 Tf +(:) 2.7696 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +534.414 50.852 Td +(22) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 23 26 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F122_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +496.556 749.245 Td +/F124_0 9.9626 Tf +(libbzip2) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 576.538] cm +0 0 468 143.462 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 711.631 Td +/F124_0 9.9626 Tf +(BZ_CONFIG_ERROR) 89.6634 Tj +98.488 699.676 Td +(if) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(library) 41.8429 Tj +-426 TJm +(has) 17.9327 Tj +-426 TJm +(been) 23.9102 Tj +-426 TJm +(mis-compiled) 71.7307 Tj +90 687.721 Td +(BZ_PARAM_ERROR) 83.6858 Tj +98.488 675.766 Td +(if) 11.9551 Tj +-426 TJm +(f) 5.9776 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +98.488 663.811 Td +(or) 11.9551 Tj +-426 TJm +(blockSize100k) 77.7083 Tj +-426 TJm +(<) 5.9776 Tj +-426 TJm +(1) 5.9776 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(blockSize100k) 77.7083 Tj +-426 TJm +(>) 5.9776 Tj +-426 TJm +(9) 5.9776 Tj +90 651.856 Td +(BZ_IO_ERROR) 65.7532 Tj +98.488 639.9 Td +(if) 11.9551 Tj +-426 TJm +(ferror\(f\)) 53.798 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(nonzero) 41.8429 Tj +90 627.945 Td +(BZ_MEM_ERROR) 71.7307 Tj +98.488 615.99 Td +(if) 11.9551 Tj +-426 TJm +(insufficient) 71.7307 Tj +-426 TJm +(memory) 35.8654 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(available) 53.798 Tj +90 604.035 Td +(BZ_OK) 29.8878 Tj +98.488 592.08 Td +(otherwise) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 554.62 Td +/F122_0 9.9626 Tf +(Possible) 33.2153 Tj +-250 TJm +(return) 23.7907 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alues:) 23.2427 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 493.749] cm +0 0 468 59.776 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 545.156 Td +/F124_0 9.9626 Tf +(Pointer) 41.8429 Tj +-426 TJm +(to) 11.9551 Tj +-426 TJm +(an) 11.9551 Tj +-426 TJm +(abstract) 47.8205 Tj +-426 TJm +(BZFILE) 35.8654 Tj +98.488 533.201 Td +(if) 11.9551 Tj +-426 TJm +(bzerror) 41.8429 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(BZ_OK) 29.8878 Tj +90 521.245 Td +(NULL) 23.9102 Tj +98.488 509.29 Td +(otherwise) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 471.831 Td +/F122_0 9.9626 Tf +(Allo) 17.7135 Tj +25 TJm +(w) 7.193 Tj +10 TJm +(able) 16.5977 Tj +-250 TJm +(ne) 9.4047 Tj +15 TJm +(xt) 7.7509 Tj +-250 TJm +(actions:) 30.9936 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 387.049] cm +0 0 468 83.686 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 462.366 Td +/F124_0 9.9626 Tf +(BZ2_bzWrite) 65.7532 Tj +98.488 450.411 Td +(if) 11.9551 Tj +-426 TJm +(bzerror) 41.8429 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(BZ_OK) 29.8878 Tj +98.488 438.456 Td +(\(you) 23.9102 Tj +-426 TJm +(could) 29.8878 Tj +-426 TJm +(go) 11.9551 Tj +-426 TJm +(directly) 47.8205 Tj +-426 TJm +(to) 11.9551 Tj +-426 TJm +(BZ2_bzWriteClose,) 101.6185 Tj +-426 TJm +(but) 17.9327 Tj +-426 TJm +(this) 23.9102 Tj +-426 TJm +(would) 29.8878 Tj +-426 TJm +(be) 11.9551 Tj +-426 TJm +(pretty) 35.8654 Tj +485.506 434.212 Td +/F548_0 9.9626 Tf +( ) 9.9626 Tj +493.808 434.212 Td +/F230_0 9.9626 Tf +(-) 2.7676 Tj +90 426.501 Td +/F124_0 9.9626 Tf +(pointless\)) 59.7756 Tj +90 414.546 Td +(BZ2_bzWriteClose) 95.641 Tj +98.488 402.59 Td +(otherwise) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 356.428 Td +/F116_0 17.2154 Tf +(3.4.6.) 43.0729 Tj +-278 TJm +(BZ2_bzWrite) 104.2565 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 329.455] cm +0 0 468 23.91 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 344.997 Td +/F124_0 9.9626 Tf +(void) 23.9102 Tj +-426 TJm +(BZ2_bzWrite) 65.7532 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(int) 17.9327 Tj +220.55 343.254 Td +(*) 5.9776 Tj +226.528 344.997 Td +(bzerror,) 47.8205 Tj +-426 TJm +(BZFILE) 35.8654 Tj +318.702 343.254 Td +(*) 5.9776 Tj +324.679 344.997 Td +(b,) 11.9551 Tj +-426 TJm +(void) 23.9102 Tj +369.033 343.254 Td +(*) 5.9776 Tj +375.01 344.997 Td +(buf,) 23.9102 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(len) 17.9327 Tj +-426 TJm +(\);) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 307.537 Td +/F122_0 9.9626 Tf +(Absorbs) 33.2053 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +107.696 307.537 Td +/F124_0 9.9626 Tf +(len) 17.9327 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +128.119 307.537 Td +/F122_0 9.9626 Tf +(bytes) 21.031 Tj +-250 TJm +(from) 19.3673 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.2988 Tj +25 TJm +(fer) 11.0585 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +214.544 307.537 Td +/F124_0 9.9626 Tf +(buf) 17.9327 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +232.477 307.537 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-250 TJm +(e) 4.4234 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(entually) 32.0995 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(be) 9.4047 Tj +-250 TJm +(compressed) 47.0334 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(written) 28.224 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(\002le.) 15.2229 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 285.62 Td +(Possible) 33.2153 Tj +-250 TJm +(assignments) 48.7072 Tj +-250 TJm +(to) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +169.144 285.62 Td +/F124_0 9.9626 Tf +(bzerror) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +210.987 285.62 Td +/F122_0 9.9626 Tf +(:) 2.7696 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 174.87] cm +0 0 468 107.597 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 274.098 Td +/F124_0 9.9626 Tf +(BZ_PARAM_ERROR) 83.6858 Tj +98.488 262.143 Td +(if) 11.9551 Tj +-426 TJm +(b) 5.9776 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(buf) 17.9327 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(len) 17.9327 Tj +-426 TJm +(<) 5.9776 Tj +-426 TJm +(0) 5.9776 Tj +90 250.188 Td +(BZ_SEQUENCE_ERROR) 101.6185 Tj +98.488 238.232 Td +(if) 11.9551 Tj +-426 TJm +(b) 5.9776 Tj +-426 TJm +(was) 17.9327 Tj +-426 TJm +(opened) 35.8654 Tj +-426 TJm +(with) 23.9102 Tj +-426 TJm +(BZ2_bzReadOpen) 83.6858 Tj +90 226.277 Td +(BZ_IO_ERROR) 65.7532 Tj +98.488 214.322 Td +(if) 11.9551 Tj +-426 TJm +(there) 29.8878 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(an) 11.9551 Tj +-426 TJm +(error) 29.8878 Tj +-426 TJm +(writing) 41.8429 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(compressed) 59.7756 Tj +-426 TJm +(file.) 29.8878 Tj +90 202.367 Td +(BZ_OK) 29.8878 Tj +98.488 190.412 Td +(otherwise) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 144.249 Td +/F116_0 17.2154 Tf +(3.4.7.) 43.0729 Tj +-278 TJm +(BZ2_bzWriteClose) 151.134 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +534.414 50.951 Td +/F122_0 9.9626 Tf +(23) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 24 27 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F122_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +496.556 749.245 Td +/F124_0 9.9626 Tf +(libbzip2) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 576.538] cm +0 0 468 143.462 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 711.631 Td +/F124_0 9.9626 Tf +(void) 23.9102 Tj +-426 TJm +(BZ2_bzWriteClose\() 101.6185 Tj +-426 TJm +(int) 17.9327 Tj +246.194 709.888 Td +(*) 5.9776 Tj +252.172 711.631 Td +(bzerror,) 47.8205 Tj +-426 TJm +(BZFILE) 35.8654 Tj +340.102 709.888 Td +(*) 5.9776 Tj +350.323 711.631 Td +(f,) 11.9551 Tj +187.611 699.676 Td +(int) 17.9327 Tj +-426 TJm +(abandon,) 47.8205 Tj +187.611 687.721 Td +(unsigned) 47.8205 Tj +-426 TJm +(int) 17.9327 Tj +257.609 685.978 Td +(*) 5.9776 Tj +267.83 687.721 Td +(nbytes_in,) 59.7756 Tj +187.611 675.766 Td +(unsigned) 47.8205 Tj +-426 TJm +(int) 17.9327 Tj +257.609 674.022 Td +(*) 5.9776 Tj +267.83 675.766 Td +(nbytes_out) 59.7756 Tj +-426 TJm +(\);) 11.9551 Tj +90 651.856 Td +(void) 23.9102 Tj +-426 TJm +(BZ2_bzWriteClose64\() 113.5736 Tj +-426 TJm +(int) 17.9327 Tj +258.149 650.112 Td +(*) 5.9776 Tj +264.127 651.856 Td +(bzerror,) 47.8205 Tj +-426 TJm +(BZFILE) 35.8654 Tj +352.057 650.112 Td +(*) 5.9776 Tj +362.278 651.856 Td +(f,) 11.9551 Tj +196.099 639.9 Td +(int) 17.9327 Tj +-426 TJm +(abandon,) 47.8205 Tj +196.099 627.945 Td +(unsigned) 47.8205 Tj +-426 TJm +(int) 17.9327 Tj +266.097 626.202 Td +(*) 5.9776 Tj +276.318 627.945 Td +(nbytes_in_lo32,) 89.6634 Tj +196.099 615.99 Td +(unsigned) 47.8205 Tj +-426 TJm +(int) 17.9327 Tj +266.097 614.247 Td +(*) 5.9776 Tj +276.318 615.99 Td +(nbytes_in_hi32,) 89.6634 Tj +196.099 604.035 Td +(unsigned) 47.8205 Tj +-426 TJm +(int) 17.9327 Tj +266.097 602.291 Td +(*) 5.9776 Tj +276.318 604.035 Td +(nbytes_out_lo32,) 95.641 Tj +196.099 592.08 Td +(unsigned) 47.8205 Tj +-426 TJm +(int) 17.9327 Tj +266.097 590.336 Td +(*) 5.9776 Tj +276.318 592.08 Td +(nbytes_out_hi32) 89.6634 Tj +-426 TJm +(\);) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 554.62 Td +/F122_0 9.9626 Tf +(Compresses) 48.1492 Tj +-403 TJm +(and) 14.386 Tj +-402 TJm +(\003ushes) 27.6761 Tj +-403 TJm +(to) 7.7509 Tj +-403 TJm +(the) 12.1743 Tj +-402 TJm +(compressed) 47.0334 Tj +-403 TJm +(\002le) 12.7322 Tj +-402 TJm +(all) 9.9626 Tj +-403 TJm +(data) 16.5977 Tj +-403 TJm +(so) 8.8568 Tj +-402 TJm +(f) 3.3175 Tj +10 TJm +(ar) 7.7409 Tj +-403 TJm +(supplied) 33.7633 Tj +-403 TJm +(by) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +384.152 554.62 Td +/F124_0 9.9626 Tf +(BZ2_bzWrite) 65.7532 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +449.906 554.62 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +-768 TJm +(The) 15.4918 Tj +-403 TJm +(logical) 27.1182 Tj +-402 TJm +(end-of-) 29.3199 Tj +72 542.665 Td +(stream) 26.5603 Tj +-352 TJm +(mark) 20.4731 Tj +10 TJm +(ers) 11.6164 Tj +-352 TJm +(are) 12.1643 Tj +-353 TJm +(also) 16.0497 Tj +-352 TJm +(written,) 30.7147 Tj +-378 TJm +(so) 8.8568 Tj +-352 TJm +(subsequent) 44.2738 Tj +-352 TJm +(calls) 18.2614 Tj +-352 TJm +(to) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +300.456 542.665 Td +/F124_0 9.9626 Tf +(BZ2_bzWrite) 65.7532 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +369.718 542.665 Td +/F122_0 9.9626 Tf +(are) 12.1643 Tj +-352 TJm +(ille) 12.7322 Tj +15 TJm +(g) 4.9813 Tj +5 TJm +(al.) 9.6836 Tj +-1234 TJm +(All) 12.7322 Tj +-352 TJm +(memory) 33.2053 Tj +-352 TJm +(associated) 40.9463 Tj +-352 TJm +(with) 17.7135 Tj +72 530.71 Td +(the) 12.1743 Tj +-250 TJm +(compressed) 47.0334 Tj +-250 TJm +(\002le) 12.7322 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +151.411 530.71 Td +/F124_0 9.9626 Tf +(b) 5.9776 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +159.88 530.71 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-250 TJm +(released.) 35.1281 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +207.231 530.71 Td +/F124_0 9.9626 Tf +(fflush) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +245.587 530.71 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-250 TJm +(called) 23.7907 Tj +-250 TJm +(on) 9.9626 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(compressed) 47.0334 Tj +-250 TJm +(\002le,) 15.2229 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-250 TJm +(it) 5.5392 Tj +-250 TJm +(is) 6.6451 Tj +-250 TJm +(not) 12.7322 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +422.771 530.71 Td +/F124_0 9.9626 Tf +(fclose) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +458.636 530.71 Td +/F122_0 9.9626 Tf +(') 3.3175 Tj +50 TJm +(d.) 7.472 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 508.792 Td +(If) 6.6351 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +81.574 508.792 Td +/F124_0 9.9626 Tf +(BZ2_bzWriteClose) 95.641 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +180.155 508.792 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-295 TJm +(called) 23.7907 Tj +-295 TJm +(to) 7.7509 Tj +-295 TJm +(clean) 21.0211 Tj +-295 TJm +(up) 9.9626 Tj +-295 TJm +(after) 18.2515 Tj +-295 TJm +(an) 9.4047 Tj +-295 TJm +(error) 19.3573 Tj +40 TJm +(,) 2.4907 Tj +-306 TJm +(the) 12.1743 Tj +-295 TJm +(only) 17.7135 Tj +-295 TJm +(action) 24.3486 Tj +-295 TJm +(is) 6.6451 Tj +-295 TJm +(to) 7.7509 Tj +-295 TJm +(release) 27.6562 Tj +-295 TJm +(the) 12.1743 Tj +-295 TJm +(memory) 33.2053 Tj +65 TJm +(.) 2.4907 Tj +-891 TJm +(The) 15.4918 Tj +-295 TJm +(library) 26.5603 Tj +72 496.837 Td +(records) 29.3199 Tj +-289 TJm +(the) 12.1743 Tj +-289 TJm +(error) 19.3573 Tj +-289 TJm +(codes) 22.6848 Tj +-289 TJm +(issued) 24.9065 Tj +-289 TJm +(by) 9.9626 Tj +-289 TJm +(pre) 12.7222 Tj +25 TJm +(vious) 21.589 Tj +-289 TJm +(calls,) 20.7521 Tj +-299 TJm +(so) 8.8568 Tj +-289 TJm +(this) 14.396 Tj +-289 TJm +(situation) 34.3212 Tj +-289 TJm +(will) 15.5018 Tj +-289 TJm +(be) 9.4047 Tj +-289 TJm +(detected) 33.1954 Tj +-289 TJm +(automatically) 54.2364 Tj +65 TJm +(.) 2.4907 Tj +-427 TJm +(There) 23.2328 Tj +-289 TJm +(is) 6.6451 Tj +-289 TJm +(no) 9.9626 Tj +-289 TJm +(attempt) 29.8878 Tj +72 484.882 Td +(to) 7.7509 Tj +-263 TJm +(complete) 36.5229 Tj +-262 TJm +(the) 12.1743 Tj +-263 TJm +(compression) 50.3609 Tj +-263 TJm +(operation,) 40.1194 Tj +-265 TJm +(nor) 13.2801 Tj +-263 TJm +(to) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +258.308 484.882 Td +/F124_0 9.9626 Tf +(fflush) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +296.79 484.882 Td +/F122_0 9.9626 Tf +(the) 12.1743 Tj +-263 TJm +(compressed) 47.0334 Tj +-262 TJm +(\002le.) 15.2229 Tj +-696 TJm +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-263 TJm +(can) 13.8281 Tj +-263 TJm +(force) 20.4632 Tj +-262 TJm +(this) 14.396 Tj +-263 TJm +(beha) 18.8094 Tj +20 TJm +(viour) 21.031 Tj +-263 TJm +(to) 7.7509 Tj +-262 TJm +(happen) 28.772 Tj +72 472.926 Td +(e) 4.4234 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(en) 9.4047 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(case) 17.1456 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(no) 9.9626 Tj +-250 TJm +(error) 19.3573 Tj +40 TJm +(,) 2.4907 Tj +-250 TJm +(by) 9.9626 Tj +-250 TJm +(passing) 29.8878 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(nonzero) 32.0895 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alue) 16.5977 Tj +-250 TJm +(to) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +305.015 472.926 Td +/F124_0 9.9626 Tf +(abandon) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +346.858 472.926 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 451.009 Td +(If) 6.6351 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +80.597 451.009 Td +/F124_0 9.9626 Tf +(nbytes_in) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +136.358 451.009 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-197 TJm +(non-null,) 36.2539 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +183.287 449.265 Td +/F124_0 9.9626 Tf +(*) 5.9776 Tj +189.265 451.009 Td +(nbytes_in) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +245.025 451.009 Td +/F122_0 9.9626 Tf +(will) 15.5018 Tj +-197 TJm +(be) 9.4047 Tj +-197 TJm +(set) 11.0684 Tj +-197 TJm +(to) 7.7509 Tj +-197 TJm +(be) 9.4047 Tj +-197 TJm +(the) 12.1743 Tj +-197 TJm +(total) 17.7135 Tj +-197 TJm +(v) 4.9813 Tj +20 TJm +(olume) 24.9065 Tj +-197 TJm +(of) 8.2988 Tj +-197 TJm +(uncompressed) 56.996 Tj +-197 TJm +(data) 16.5977 Tj +-197 TJm +(handled.) 34.0322 Tj +-584 TJm +(Similarly) 37.0908 Tj +65 TJm +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 439.053 Td +/F124_0 9.9626 Tf +(nbytes_out) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +134.716 439.053 Td +/F122_0 9.9626 Tf +(will) 15.5018 Tj +-295 TJm +(be) 9.4047 Tj +-295 TJm +(set) 11.0684 Tj +-295 TJm +(to) 7.7509 Tj +-295 TJm +(the) 12.1743 Tj +-295 TJm +(total) 17.7135 Tj +-295 TJm +(v) 4.9813 Tj +20 TJm +(olume) 24.9065 Tj +-295 TJm +(of) 8.2988 Tj +-296 TJm +(compressed) 47.0334 Tj +-295 TJm +(data) 16.5977 Tj +-295 TJm +(written.) 30.7147 Tj +-890 TJm +(F) 5.5392 Tj +15 TJm +(or) 8.2988 Tj +-295 TJm +(compatibility) 53.1405 Tj +-295 TJm +(with) 17.7135 Tj +-295 TJm +(older) 20.4731 Tj +-295 TJm +(v) 4.9813 Tj +15 TJm +(ersions) 28.224 Tj +-296 TJm +(of) 8.2988 Tj +72 427.098 Td +(the) 12.1743 Tj +-283 TJm +(library) 26.5603 Tj +65 TJm +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +118.294 427.098 Td +/F124_0 9.9626 Tf +(BZ2_bzWriteClose) 95.641 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +216.753 427.098 Td +/F122_0 9.9626 Tf +(only) 17.7135 Tj +-283 TJm +(yields) 23.8007 Tj +-283 TJm +(the) 12.1743 Tj +-282 TJm +(lo) 7.7509 Tj +25 TJm +(wer) 14.9339 Tj +-283 TJm +(32) 9.9626 Tj +-283 TJm +(bits) 14.396 Tj +-283 TJm +(of) 8.2988 Tj +-283 TJm +(these) 20.4731 Tj +-282 TJm +(counts.) 28.503 Tj +-817 TJm +(Use) 15.4918 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +423.499 427.098 Td +/F124_0 9.9626 Tf +(BZ2_bzWriteClose64) 107.5961 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +533.913 427.098 Td +/F122_0 9.9626 Tf +(if) 6.0871 Tj +72 415.143 Td +(you) 14.9439 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(ant) 12.1743 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(full) 13.8381 Tj +-250 TJm +(64) 9.9626 Tj +-250 TJm +(bit) 10.5205 Tj +-250 TJm +(counts.) 28.503 Tj +-620 TJm +(These) 23.7907 Tj +-250 TJm +(tw) 9.9626 Tj +10 TJm +(o) 4.9813 Tj +-250 TJm +(functions) 37.0808 Tj +-250 TJm +(are) 12.1643 Tj +-250 TJm +(otherwise) 38.7346 Tj +-250 TJm +(absolutely) 40.9562 Tj +-250 TJm +(identical.) 36.8018 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 393.225 Td +(Possible) 33.2153 Tj +-250 TJm +(assignments) 48.7072 Tj +-250 TJm +(to) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +169.144 393.225 Td +/F124_0 9.9626 Tf +(bzerror) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +210.987 393.225 Td +/F122_0 9.9626 Tf +(:) 2.7696 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 306.386] cm +0 0 468 83.686 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 381.704 Td +/F124_0 9.9626 Tf +(BZ_SEQUENCE_ERROR) 101.6185 Tj +98.488 369.749 Td +(if) 11.9551 Tj +-426 TJm +(b) 5.9776 Tj +-426 TJm +(was) 17.9327 Tj +-426 TJm +(opened) 35.8654 Tj +-426 TJm +(with) 23.9102 Tj +-426 TJm +(BZ2_bzReadOpen) 83.6858 Tj +90 357.793 Td +(BZ_IO_ERROR) 65.7532 Tj +98.488 345.838 Td +(if) 11.9551 Tj +-426 TJm +(there) 29.8878 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(an) 11.9551 Tj +-426 TJm +(error) 29.8878 Tj +-426 TJm +(writing) 41.8429 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(compressed) 59.7756 Tj +-426 TJm +(file) 23.9102 Tj +90 333.883 Td +(BZ_OK) 29.8878 Tj +98.488 321.928 Td +(otherwise) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 275.765 Td +/F116_0 17.2154 Tf +(3.4.8.) 43.0729 Tj +-278 TJm +(Handling) 73.6475 Tj +-278 TJm +(embed) 55.4852 Tj +10 TJm +(ded) 30.609 Tj +-278 TJm +(compressed) 101.4159 Tj +-278 TJm +(data) 35.3949 Tj +-278 TJm +(streams) 66.0211 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 253.847 Td +/F122_0 9.9626 Tf +(The) 15.4918 Tj +-203 TJm +(high-le) 28.224 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-203 TJm +(library) 26.5603 Tj +-203 TJm +(f) 3.3175 Tj +10 TJm +(acilitates) 35.417 Tj +-203 TJm +(use) 13.2801 Tj +-203 TJm +(of) 8.2988 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +226.404 253.847 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +258.316 253.847 Td +/F122_0 9.9626 Tf +(data) 16.5977 Tj +-203 TJm +(streams) 30.4357 Tj +-203 TJm +(which) 24.3486 Tj +-203 TJm +(form) 19.3673 Tj +-203 TJm +(some) 21.031 Tj +-203 TJm +(part) 15.4918 Tj +-203 TJm +(of) 8.2988 Tj +-203 TJm +(a) 4.4234 Tj +-204 TJm +(surrounding,) 50.6399 Tj +-212 TJm +(lar) 10.5105 Tj +18 TJm +(ger) 12.7222 Tj +-203 TJm +(data) 16.5977 Tj +-203 TJm +(stream.) 29.0509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +74.491 221.967 Td +(\225) 3.4869 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-450 TJm +(F) 5.5392 Tj +15 TJm +(or) 8.2988 Tj +-264 TJm +(writing,) 31.2726 Tj +-267 TJm +(the) 12.1743 Tj +-264 TJm +(library) 26.5603 Tj +-264 TJm +(tak) 12.1743 Tj +10 TJm +(es) 8.2988 Tj +-264 TJm +(an) 9.4047 Tj +-264 TJm +(open) 19.3673 Tj +-264 TJm +(\002le) 12.7322 Tj +-264 TJm +(handle,) 29.0509 Tj +-267 TJm +(writes) 24.3486 Tj +-264 TJm +(compressed) 47.0334 Tj +-264 TJm +(data) 16.5977 Tj +-264 TJm +(to) 7.7509 Tj +-264 TJm +(it,) 8.0299 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +397.758 221.967 Td +/F124_0 9.9626 Tf +(fflush) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +433.624 221.967 Td +/F122_0 9.9626 Tf +(es) 8.2988 Tj +-264 TJm +(it) 5.5392 Tj +-264 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-264 TJm +(does) 18.2614 Tj +-264 TJm +(not) 12.7322 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +504.135 221.967 Td +/F124_0 9.9626 Tf +(fclose) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +81.963 210.012 Td +/F122_0 9.9626 Tf +(it.) 8.0299 Tj +-675 TJm +(The) 15.4918 Tj +-259 TJm +(calling) 27.1182 Tj +-260 TJm +(a) 4.4234 Tj +1 TJm +(pp) 9.9626 Tj +-1 TJm +(l) 2.7696 Tj +1 TJm +(ication) 27.1182 Tj +-260 TJm +(can) 13.8281 Tj +-259 TJm +(write) 20.4731 Tj +-259 TJm +(its) 9.4147 Tj +-259 TJm +(o) 4.9813 Tj +25 TJm +(wn) 12.1743 Tj +-259 TJm +(data) 16.5977 Tj +-260 TJm +(before) 25.4445 Tj +-259 TJm +(and) 14.386 Tj +-259 TJm +(after) 18.2515 Tj +-259 TJm +(the) 12.1743 Tj +-259 TJm +(compressed) 47.0334 Tj +-260 TJm +(dat) 12.1743 Tj +1 TJm +(a) 4.4234 Tj +-260 TJm +(stream,) 29.0509 Tj +-261 TJm +(using) 21.589 Tj +-259 TJm +(that) 14.9439 Tj +-260 TJm +(sam) 16.0497 Tj +1 TJm +(e) 4.4234 Tj +-260 TJm +(\002le) 12.7322 Tj +81.963 198.056 Td +(handle.) 29.0509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +74.491 176.139 Td +(\225) 3.4869 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-450 TJm +(Reading) 33.2053 Tj +-258 TJm +(is) 6.6451 Tj +-259 TJm +(more) 20.4731 Tj +-258 TJm +(comple) 29.3299 Tj +15 TJm +(x,) 7.472 Tj +-261 TJm +(and) 14.386 Tj +-258 TJm +(the) 12.1743 Tj +-258 TJm +(f) 3.3175 Tj +10 TJm +(acilities) 30.9936 Tj +-259 TJm +(are) 12.1643 Tj +-258 TJm +(not) 12.7322 Tj +-258 TJm +(as) 8.2988 Tj +-259 TJm +(general) 29.3199 Tj +-258 TJm +(as) 8.2988 Tj +-259 TJm +(the) 12.1743 Tj +15 TJm +(y) 4.9813 Tj +-258 TJm +(could) 22.1369 Tj +-258 TJm +(be) 9.4047 Tj +-259 TJm +(since) 20.4731 Tj +-258 TJm +(generality) 39.8404 Tj +-259 TJm +(is) 6.6451 Tj +-258 TJm +(hard) 17.7035 Tj +-258 TJm +(to) 7.7509 Tj +-259 TJm +(reconcile) 36.5129 Tj +81.963 164.183 Td +(with) 17.7135 Tj +-432 TJm +(ef) 7.7409 Tj +25 TJm +(\002cienc) 26.5603 Tj +15 TJm +(y) 4.9813 Tj +65 TJm +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +161.767 164.183 Td +/F124_0 9.9626 Tf +(BZ2_bzRead) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +225.847 164.183 Td +/F122_0 9.9626 Tf +(reads) 21.0211 Tj +-432 TJm +(from) 19.3673 Tj +-432 TJm +(the) 12.1743 Tj +-432 TJm +(compressed) 47.0334 Tj +-432 TJm +(\002le) 12.7322 Tj +-432 TJm +(in) 7.7509 Tj +-432 TJm +(blocks) 26.0123 Tj +-432 TJm +(of) 8.2988 Tj +-432 TJm +(size) 15.4918 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +434.467 164.183 Td +/F124_0 9.9626 Tf +(BZ_MAX_UNUSED) 77.7083 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +516.479 164.183 Td +/F122_0 9.9626 Tf +(bytes,) 23.5217 Tj +81.963 152.228 Td +(and) 14.386 Tj +-436 TJm +(in) 7.7509 Tj +-435 TJm +(doing) 22.6948 Tj +-436 TJm +(so) 8.8568 Tj +-436 TJm +(probably) 35.417 Tj +-436 TJm +(will) 15.5018 Tj +-435 TJm +(o) 4.9813 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(ershoot) 29.3299 Tj +-436 TJm +(the) 12.1743 Tj +-436 TJm +(logical) 27.1182 Tj +-435 TJm +(end) 14.386 Tj +-436 TJm +(of) 8.2988 Tj +-436 TJm +(compressed) 47.0334 Tj +-436 TJm +(s) 3.8755 Tj +1 TJm +(tream.) 25.1755 Tj +-1735 TJm +(T) 6.0871 Tj +80 TJm +(o) 4.9813 Tj +-436 TJm +(reco) 17.1456 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(er) 7.7409 Tj +-435 TJm +(this) 14.396 Tj +-436 TJm +(data) 16.5977 Tj +-436 TJm +(once) 18.8094 Tj +81.963 140.273 Td +(decompression) 59.7656 Tj +-290 TJm +(has) 13.2801 Tj +-289 TJm +(ended,) 26.2813 Tj +-300 TJm +(call) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +207.321 140.273 Td +/F124_0 9.9626 Tf +(BZ2_bzReadGetUnused) 113.5736 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +323.782 140.273 Td +/F122_0 9.9626 Tf +(after) 18.2515 Tj +-290 TJm +(the) 12.1743 Tj +-289 TJm +(last) 13.8381 Tj +-290 TJm +(call) 14.386 Tj +-290 TJm +(of) 8.2988 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +405.164 140.273 Td +/F124_0 9.9626 Tf +(BZ2_bzRead) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +467.826 140.273 Td +/F122_0 9.9626 Tf +(\(the) 15.4918 Tj +-290 TJm +(one) 14.386 Tj +-290 TJm +(returning) 36.5229 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +81.963 128.318 Td +/F124_0 9.9626 Tf +(BZ_STREAM_END) 77.7083 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +159.671 128.318 Td +/F122_0 9.9626 Tf +(\)) 3.3175 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-250 TJm +(before) 25.4445 Tj +-250 TJm +(calling) 27.1182 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +238.047 128.318 Td +/F124_0 9.9626 Tf +(BZ2_bzReadClose) 89.6634 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +327.71 128.318 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +534.414 50.852 Td +(24) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 25 28 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F122_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +496.556 749.245 Td +/F124_0 9.9626 Tf +(libbzip2) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +72 710.037 Td +/F122_0 9.9626 Tf +(This) 17.7135 Tj +-271 TJm +(mechanism) 45.3796 Tj +-272 TJm +(mak) 17.1556 Tj +10 TJm +(es) 8.2988 Tj +-271 TJm +(it) 5.5392 Tj +-271 TJm +(easy) 17.7035 Tj +-271 TJm +(to) 7.7509 Tj +-272 TJm +(decompress) 47.0334 Tj +-271 TJm +(multiple) 33.2153 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +293.313 710.037 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +325.903 710.037 Td +/F122_0 9.9626 Tf +(streams) 30.4357 Tj +-271 TJm +(placed) 26.0024 Tj +-272 TJm +(end-to-end.) 45.6486 Tj +-374 TJm +(As) 11.0684 Tj +-271 TJm +(the) 12.1743 Tj +-271 TJm +(end) 14.386 Tj +-271 TJm +(of) 8.2988 Tj +-272 TJm +(one) 14.386 Tj +-271 TJm +(stream,) 29.0509 Tj +72 698.082 Td +(when) 21.579 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +96.195 698.082 Td +/F124_0 9.9626 Tf +(BZ2_bzRead) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +158.586 698.082 Td +/F122_0 9.9626 Tf +(returns) 27.6661 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +188.868 698.082 Td +/F124_0 9.9626 Tf +(BZ_STREAM_END) 77.7083 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +266.577 698.082 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-263 TJm +(call) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +288.685 698.082 Td +/F124_0 9.9626 Tf +(BZ2_bzReadGetUnused) 113.5736 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +404.875 698.082 Td +/F122_0 9.9626 Tf +(to) 7.7509 Tj +-263 TJm +(coll) 14.9439 Tj +1 TJm +(ect) 11.6164 Tj +-263 TJm +(the) 12.1743 Tj +-263 TJm +(unused) 28.224 Tj +-262 TJm +(data) 16.5977 Tj +-263 TJm +(\(cop) 17.7035 Tj +10 TJm +(y) 4.9813 Tj +-262 TJm +(it) 5.5392 Tj +72 686.127 Td +(into) 15.5018 Tj +-265 TJm +(your) 18.2614 Tj +-265 TJm +(o) 4.9813 Tj +25 TJm +(wn) 12.1743 Tj +-265 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.2988 Tj +25 TJm +(fer) 11.0585 Tj +-265 TJm +(some) 21.031 Tj +25 TJm +(where\).) 30.1468 Tj +-711 TJm +(That) 18.2614 Tj +-265 TJm +(data) 16.5977 Tj +-265 TJm +(forms) 23.2427 Tj +-265 TJm +(the) 12.1743 Tj +-265 TJm +(start) 17.1556 Tj +-265 TJm +(of) 8.2988 Tj +-265 TJm +(the) 12.1743 Tj +-265 TJm +(ne) 9.4047 Tj +15 TJm +(xt) 7.7509 Tj +-265 TJm +(compressed) 47.0334 Tj +-265 TJm +(stream.) 29.0509 Tj +-711 TJm +(T) 6.0871 Tj +80 TJm +(o) 4.9813 Tj +-265 TJm +(start) 17.1556 Tj +-265 TJm +(uncompressing) 60.3235 Tj +72 674.172 Td +(that) 14.9439 Tj +-246 TJm +(ne) 9.4047 Tj +15 TJm +(xt) 7.7509 Tj +-246 TJm +(stream,) 29.0509 Tj +-247 TJm +(call) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +157.205 674.172 Td +/F124_0 9.9626 Tf +(BZ2_bzReadOpen) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +243.344 674.172 Td +/F122_0 9.9626 Tf +(ag) 9.4047 Tj +5 TJm +(ain,) 14.6649 Tj +-247 TJm +(feeding) 29.8778 Tj +-246 TJm +(in) 7.7509 Tj +-246 TJm +(the) 12.1743 Tj +-247 TJm +(unused) 28.224 Tj +-246 TJm +(data) 16.5977 Tj +-246 TJm +(via) 12.1743 Tj +-246 TJm +(the) 12.1743 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +405.967 674.172 Td +/F124_0 9.9626 Tf +(unused) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +444.286 674.172 Td +/F122_0 9.9626 Tf +(/) 2.7696 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +449.508 674.172 Td +/F124_0 9.9626 Tf +(nUnused) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +493.804 674.172 Td +/F122_0 9.9626 Tf +(parameters.) 46.1966 Tj +72 662.217 Td +(K) 7.193 Tj +25 TJm +(eep) 13.8281 Tj +-263 TJm +(doing) 22.6948 Tj +-263 TJm +(this) 14.396 Tj +-264 TJm +(until) 18.2714 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +158.622 662.217 Td +/F124_0 9.9626 Tf +(BZ_STREAM_END) 77.7083 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +238.952 662.217 Td +/F122_0 9.9626 Tf +(return) 23.7907 Tj +-263 TJm +(coincides) 37.6287 Tj +-263 TJm +(with) 17.7135 Tj +-264 TJm +(the) 12.1743 Tj +-263 TJm +(ph) 9.9626 Tj +5 TJm +(ysical) 23.2427 Tj +-263 TJm +(end) 14.386 Tj +-263 TJm +(of) 8.2988 Tj +-263 TJm +(\002le) 12.7322 Tj +-263 TJm +(\() 3.3175 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +423.124 662.217 Td +/F124_0 9.9626 Tf +(feof\(f\)) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +464.968 662.217 Td +/F122_0 9.9626 Tf +(\).) 5.8082 Tj +-699 TJm +(In) 8.2988 Tj +-263 TJm +(this) 14.396 Tj +-263 TJm +(situation) 34.3212 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 650.261 Td +/F124_0 9.9626 Tf +(BZ2_bzReadGetUnused) 113.5736 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +188.065 650.261 Td +/F122_0 9.9626 Tf +(will) 15.5018 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(course) 26.0024 Tj +-250 TJm +(return) 23.7907 Tj +-250 TJm +(no) 9.9626 Tj +-250 TJm +(data.) 19.0883 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 628.344 Td +(This) 17.7135 Tj +-240 TJm +(should) 26.5703 Tj +-241 TJm +(gi) 7.7509 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-240 TJm +(some) 21.031 Tj +-241 TJm +(feel) 14.9339 Tj +-240 TJm +(for) 11.6164 Tj +-241 TJm +(ho) 9.9626 Tj +25 TJm +(w) 7.193 Tj +-240 TJm +(the) 12.1743 Tj +-240 TJm +(high-le) 28.224 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-241 TJm +(interf) 21.579 Tj +10 TJm +(ace) 13.2702 Tj +-240 TJm +(can) 13.8281 Tj +-241 TJm +(be) 9.4047 Tj +-240 TJm +(used.) 20.7521 Tj +-614 TJm +(If) 6.6351 Tj +-240 TJm +(you) 14.9439 Tj +-241 TJm +(require) 28.2141 Tj +-240 TJm +(e) 4.4234 Tj +15 TJm +(xtra) 15.4918 Tj +-241 TJm +(\003e) 9.9626 Tj +15 TJm +(xibi) 15.5018 Tj +1 TJm +(lity) 13.2901 Tj +65 TJm +(,) 2.4907 Tj +-243 TJm +(you') 18.2614 Tj +10 TJm +(ll) 5.5392 Tj +-240 TJm +(ha) 9.4047 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-241 TJm +(to) 7.7509 Tj +72 616.389 Td +(bite) 14.9439 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(ullet) 17.7135 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(get) 12.1743 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(grips) 19.9252 Tj +-250 TJm +(with) 17.7135 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(lo) 7.7509 Tj +25 TJm +(w-le) 17.7035 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-250 TJm +(interf) 21.579 Tj +10 TJm +(ace.) 15.7608 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 585.767 Td +/F116_0 17.2154 Tf +(3.4.9.) 43.0729 Tj +-278 TJm +(Standar) 64.0929 Tj +20 TJm +(d) 10.5186 Tj +-278 TJm +(\002le-reading/writing) 154.009 Tj +-278 TJm +(code) 40.1807 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 563.85 Td +/F122_0 9.9626 Tf +(Here') 22.6749 Tj +55 TJm +(s) 3.8755 Tj +-250 TJm +(ho) 9.9626 Tj +25 TJm +(w) 7.193 Tj +-250 TJm +(you') 18.2614 Tj +50 TJm +(d) 4.9813 Tj +-250 TJm +(write) 20.4731 Tj +-250 TJm +(data) 16.5977 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(compressed) 47.0334 Tj +-250 TJm +(\002le:) 15.5018 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 190.086] cm +0 0 468 370.61 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 552.328 Td +/F124_0 9.9626 Tf +(FILE) 23.9102 Tj +113.91 550.584 Td +(*) 5.9776 Tj +132.62 552.328 Td +(f;) 11.9551 Tj +90 540.373 Td +(BZFILE) 35.8654 Tj +125.866 538.629 Td +(*) 5.9776 Tj +136.087 540.373 Td +(b;) 11.9551 Tj +90 528.418 Td +(int) 17.9327 Tj +-2130 TJm +(nBuf;) 29.8878 Tj +90 516.462 Td +(char) 23.9102 Tj +-1704 TJm +(buf[) 23.9102 Tj +-426 TJm +(/) 5.9776 Tj +165.018 514.719 Td +(*) 5.9776 Tj +175.24 516.462 Td +(whatever) 47.8205 Tj +-426 TJm +(size) 23.9102 Tj +-426 TJm +(you) 17.9327 Tj +-426 TJm +(like) 23.9102 Tj +305.79 514.719 Td +(*) 5.9776 Tj +311.767 516.462 Td +(/) 5.9776 Tj +-426 TJm +(];) 11.9551 Tj +90 504.507 Td +(int) 17.9327 Tj +-2130 TJm +(bzerror;) 47.8205 Tj +90 492.552 Td +(int) 17.9327 Tj +-2130 TJm +(nWritten;) 53.798 Tj +90 468.642 Td +(f) 5.9776 Tj +-426 TJm +(=) 5.9776 Tj +-426 TJm +(fopen) 29.8878 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +("myfile.bz2",) 77.7083 Tj +-426 TJm +("w") 17.9327 Tj +-426 TJm +(\);) 11.9551 Tj +90 456.687 Td +(if) 11.9551 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(!f) 11.9551 Tj +-426 TJm +(\)) 5.9776 Tj +-426 TJm +({) 5.9776 Tj +94.244 444.731 Td +(/) 5.9776 Tj +100.222 442.988 Td +(*) 5.9776 Tj +110.443 444.731 Td +(handle) 35.8654 Tj +-426 TJm +(error) 29.8878 Tj +184.684 442.988 Td +(*) 5.9776 Tj +190.662 444.731 Td +(/) 5.9776 Tj +90 432.776 Td +(}) 5.9776 Tj +90 420.821 Td +(b) 5.9776 Tj +-426 TJm +(=) 5.9776 Tj +-426 TJm +(BZ2_bzWriteOpen\() 95.641 Tj +-426 TJm +(&bzerror,) 53.798 Tj +-426 TJm +(f,) 11.9551 Tj +-426 TJm +(9) 5.9776 Tj +-426 TJm +(\);) 11.9551 Tj +90 408.866 Td +(if) 11.9551 Tj +-426 TJm +(\(bzerror) 47.8205 Tj +-426 TJm +(!=) 11.9551 Tj +-426 TJm +(BZ_OK\)) 35.8654 Tj +-426 TJm +({) 5.9776 Tj +94.244 396.911 Td +(BZ2_bzWriteClose) 95.641 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(b) 5.9776 Tj +-426 TJm +(\);) 11.9551 Tj +94.244 384.955 Td +(/) 5.9776 Tj +100.222 383.212 Td +(*) 5.9776 Tj +110.443 384.955 Td +(handle) 35.8654 Tj +-426 TJm +(error) 29.8878 Tj +184.684 383.212 Td +(*) 5.9776 Tj +190.662 384.955 Td +(/) 5.9776 Tj +90 373 Td +(}) 5.9776 Tj +90 349.09 Td +(while) 29.8878 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(/) 5.9776 Tj +140.331 347.346 Td +(*) 5.9776 Tj +150.553 349.09 Td +(condition) 53.798 Tj +208.595 347.346 Td +(*) 5.9776 Tj +214.572 349.09 Td +(/) 5.9776 Tj +-426 TJm +(\)) 5.9776 Tj +-426 TJm +({) 5.9776 Tj +94.244 337.135 Td +(/) 5.9776 Tj +100.222 335.391 Td +(*) 5.9776 Tj +110.443 337.135 Td +(get) 17.9327 Tj +-426 TJm +(data) 23.9102 Tj +-426 TJm +(to) 11.9551 Tj +-426 TJm +(write) 29.8878 Tj +-426 TJm +(into) 23.9102 Tj +-426 TJm +(buf,) 23.9102 Tj +-426 TJm +(and) 17.9327 Tj +-426 TJm +(set) 17.9327 Tj +-426 TJm +(nBuf) 23.9102 Tj +-426 TJm +(appropriately) 77.7083 Tj +421.874 335.391 Td +(*) 5.9776 Tj +427.852 337.135 Td +(/) 5.9776 Tj +94.244 325.18 Td +(nWritten) 47.8205 Tj +-426 TJm +(=) 5.9776 Tj +-426 TJm +(BZ2_bzWrite) 65.7532 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(&bzerror,) 53.798 Tj +-426 TJm +(b,) 11.9551 Tj +-426 TJm +(buf,) 23.9102 Tj +-426 TJm +(nBuf) 23.9102 Tj +-426 TJm +(\);) 11.9551 Tj +94.244 313.224 Td +(if) 11.9551 Tj +-426 TJm +(\(bzerror) 47.8205 Tj +-426 TJm +(==) 11.9551 Tj +-426 TJm +(BZ_IO_ERROR\)) 71.7307 Tj +-426 TJm +({) 5.9776 Tj +102.732 301.269 Td +(BZ2_bzWriteClose) 95.641 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(&bzerror,) 53.798 Tj +-426 TJm +(b) 5.9776 Tj +-426 TJm +(\);) 11.9551 Tj +102.732 289.314 Td +(/) 5.9776 Tj +108.71 287.571 Td +(*) 5.9776 Tj +118.931 289.314 Td +(handle) 35.8654 Tj +-426 TJm +(error) 29.8878 Tj +193.172 287.571 Td +(*) 5.9776 Tj +199.15 289.314 Td +(/) 5.9776 Tj +94.244 277.359 Td +(}) 5.9776 Tj +90 265.404 Td +(}) 5.9776 Tj +90 241.493 Td +(BZ2_bzWriteClose\() 101.6185 Tj +-426 TJm +(&bzerror,) 53.798 Tj +-426 TJm +(b) 5.9776 Tj +-426 TJm +(\);) 11.9551 Tj +90 229.538 Td +(if) 11.9551 Tj +-426 TJm +(\(bzerror) 47.8205 Tj +-426 TJm +(==) 11.9551 Tj +-426 TJm +(BZ_IO_ERROR\)) 71.7307 Tj +-426 TJm +({) 5.9776 Tj +94.244 217.583 Td +(/) 5.9776 Tj +100.222 215.84 Td +(*) 5.9776 Tj +110.443 217.583 Td +(handle) 35.8654 Tj +-426 TJm +(error) 29.8878 Tj +184.684 215.84 Td +(*) 5.9776 Tj +190.662 217.583 Td +(/) 5.9776 Tj +90 205.628 Td +(}) 5.9776 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 168.168 Td +/F122_0 9.9626 Tf +(And) 17.1556 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(read) 17.1456 Tj +-250 TJm +(from) 19.3673 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(compressed) 47.0334 Tj +-250 TJm +(\002le:) 15.5018 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +534.414 50.951 Td +(25) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 26 29 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F122_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +496.556 749.245 Td +/F124_0 9.9626 Tf +(libbzip2) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 349.39] cm +0 0 468 370.61 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 711.631 Td +/F124_0 9.9626 Tf +(FILE) 23.9102 Tj +113.91 709.888 Td +(*) 5.9776 Tj +132.62 711.631 Td +(f;) 11.9551 Tj +90 699.676 Td +(BZFILE) 35.8654 Tj +125.866 697.933 Td +(*) 5.9776 Tj +136.087 699.676 Td +(b;) 11.9551 Tj +90 687.721 Td +(int) 17.9327 Tj +-2130 TJm +(nBuf;) 29.8878 Tj +90 675.766 Td +(char) 23.9102 Tj +-1704 TJm +(buf[) 23.9102 Tj +-426 TJm +(/) 5.9776 Tj +165.018 674.022 Td +(*) 5.9776 Tj +175.24 675.766 Td +(whatever) 47.8205 Tj +-426 TJm +(size) 23.9102 Tj +-426 TJm +(you) 17.9327 Tj +-426 TJm +(like) 23.9102 Tj +305.79 674.022 Td +(*) 5.9776 Tj +311.767 675.766 Td +(/) 5.9776 Tj +-426 TJm +(];) 11.9551 Tj +90 663.811 Td +(int) 17.9327 Tj +-2130 TJm +(bzerror;) 47.8205 Tj +90 651.856 Td +(int) 17.9327 Tj +-2130 TJm +(nWritten;) 53.798 Tj +90 627.945 Td +(f) 5.9776 Tj +-426 TJm +(=) 5.9776 Tj +-426 TJm +(fopen) 29.8878 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +("myfile.bz2",) 77.7083 Tj +-426 TJm +("r") 17.9327 Tj +-426 TJm +(\);) 11.9551 Tj +90 615.99 Td +(if) 11.9551 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(!f) 11.9551 Tj +-426 TJm +(\)) 5.9776 Tj +-426 TJm +({) 5.9776 Tj +98.488 604.035 Td +(/) 5.9776 Tj +104.466 602.291 Td +(*) 5.9776 Tj +114.687 604.035 Td +(handle) 35.8654 Tj +-426 TJm +(error) 29.8878 Tj +188.928 602.291 Td +(*) 5.9776 Tj +194.906 604.035 Td +(/) 5.9776 Tj +90 592.08 Td +(}) 5.9776 Tj +90 580.125 Td +(b) 5.9776 Tj +-426 TJm +(=) 5.9776 Tj +-426 TJm +(BZ2_bzReadOpen) 83.6858 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(&bzerror,) 53.798 Tj +-426 TJm +(f,) 11.9551 Tj +-426 TJm +(0,) 11.9551 Tj +-426 TJm +(NULL,) 29.8878 Tj +-426 TJm +(0) 5.9776 Tj +-426 TJm +(\);) 11.9551 Tj +90 568.169 Td +(if) 11.9551 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(bzerror) 41.8429 Tj +-426 TJm +(!=) 11.9551 Tj +-426 TJm +(BZ_OK) 29.8878 Tj +-426 TJm +(\)) 5.9776 Tj +-426 TJm +({) 5.9776 Tj +98.488 556.214 Td +(BZ2_bzReadClose) 89.6634 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(&bzerror,) 53.798 Tj +-426 TJm +(b) 5.9776 Tj +-426 TJm +(\);) 11.9551 Tj +98.488 544.259 Td +(/) 5.9776 Tj +104.466 542.516 Td +(*) 5.9776 Tj +114.687 544.259 Td +(handle) 35.8654 Tj +-426 TJm +(error) 29.8878 Tj +188.928 542.516 Td +(*) 5.9776 Tj +194.906 544.259 Td +(/) 5.9776 Tj +90 532.304 Td +(}) 5.9776 Tj +90 508.393 Td +(bzerror) 41.8429 Tj +-426 TJm +(=) 5.9776 Tj +-426 TJm +(BZ_OK;) 35.8654 Tj +90 496.438 Td +(while) 29.8878 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(bzerror) 41.8429 Tj +-426 TJm +(==) 11.9551 Tj +-426 TJm +(BZ_OK) 29.8878 Tj +-426 TJm +(&&) 11.9551 Tj +-426 TJm +(/) 5.9776 Tj +252.948 494.695 Td +(*) 5.9776 Tj +263.17 496.438 Td +(arbitrary) 53.798 Tj +-426 TJm +(other) 29.8878 Tj +-426 TJm +(conditions) 59.7756 Tj +419.364 494.695 Td +(*) 5.9776 Tj +425.341 496.438 Td +(/\)) 11.9551 Tj +-426 TJm +({) 5.9776 Tj +98.488 484.483 Td +(nBuf) 23.9102 Tj +-426 TJm +(=) 5.9776 Tj +-426 TJm +(BZ2_bzRead) 59.7756 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(&bzerror,) 53.798 Tj +-426 TJm +(b,) 11.9551 Tj +-426 TJm +(buf,) 23.9102 Tj +-426 TJm +(/) 5.9776 Tj +319.478 482.74 Td +(*) 5.9776 Tj +329.7 484.483 Td +(size) 23.9102 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(buf) 17.9327 Tj +396.23 482.74 Td +(*) 5.9776 Tj +402.208 484.483 Td +(/) 5.9776 Tj +-426 TJm +(\);) 11.9551 Tj +98.488 472.528 Td +(if) 11.9551 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(bzerror) 41.8429 Tj +-426 TJm +(==) 11.9551 Tj +-426 TJm +(BZ_OK) 29.8878 Tj +-426 TJm +(\)) 5.9776 Tj +-426 TJm +({) 5.9776 Tj +106.976 460.573 Td +(/) 5.9776 Tj +112.953 458.829 Td +(*) 5.9776 Tj +123.175 460.573 Td +(do) 11.9551 Tj +-426 TJm +(something) 53.798 Tj +-426 TJm +(with) 23.9102 Tj +-426 TJm +(buf[0) 29.8878 Tj +-426 TJm +(..) 11.9551 Tj +-426 TJm +(nBuf-1]) 41.8429 Tj +321.989 458.829 Td +(*) 5.9776 Tj +327.966 460.573 Td +(/) 5.9776 Tj +98.488 448.618 Td +(}) 5.9776 Tj +90 436.662 Td +(}) 5.9776 Tj +90 424.707 Td +(if) 11.9551 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(bzerror) 41.8429 Tj +-426 TJm +(!=) 11.9551 Tj +-426 TJm +(BZ_STREAM_END) 77.7083 Tj +-426 TJm +(\)) 5.9776 Tj +-426 TJm +({) 5.9776 Tj +102.732 412.752 Td +(BZ2_bzReadClose) 89.6634 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(&bzerror,) 53.798 Tj +-426 TJm +(b) 5.9776 Tj +-426 TJm +(\);) 11.9551 Tj +102.732 400.797 Td +(/) 5.9776 Tj +108.71 399.053 Td +(*) 5.9776 Tj +118.931 400.797 Td +(handle) 35.8654 Tj +-426 TJm +(error) 29.8878 Tj +193.172 399.053 Td +(*) 5.9776 Tj +199.15 400.797 Td +(/) 5.9776 Tj +90 388.842 Td +(}) 5.9776 Tj +-426 TJm +(else) 23.9102 Tj +-426 TJm +({) 5.9776 Tj +102.732 376.887 Td +(BZ2_bzReadClose) 89.6634 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(&bzerror,) 53.798 Tj +-426 TJm +(b) 5.9776 Tj +-426 TJm +(\);) 11.9551 Tj +90 364.931 Td +(}) 5.9776 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 314.637 Td +/F116_0 20.6585 Tf +(3.5.) 34.4584 Tj +-278 TJm +(Utility) 57.3893 Tj +-278 TJm +(functions) 92.9633 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 284.016 Td +/F116_0 17.2154 Tf +(3.5.1.) 43.0729 Tj +-278 TJm +(BZ2_bzBuffT) 106.1502 Tj +80 TJm +(oBuffCompress) 129.1155 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 183.815] cm +0 0 468 95.641 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 271.087 Td +/F124_0 9.9626 Tf +(int) 17.9327 Tj +-426 TJm +(BZ2_bzBuffToBuffCompress\() 149.439 Tj +-426 TJm +(char) 23.9102 Tj +289.771 269.344 Td +(*) 5.9776 Tj +333.944 271.087 Td +(dest,) 29.8878 Tj +217.319 259.132 Td +(unsigned) 47.8205 Tj +-426 TJm +(int) 17.9327 Tj +287.317 257.389 Td +(*) 5.9776 Tj +297.538 259.132 Td +(destLen,) 47.8205 Tj +217.319 247.177 Td +(char) 23.9102 Tj +241.23 245.434 Td +(*) 5.9776 Tj +285.403 247.177 Td +(source,) 41.8429 Tj +217.319 235.222 Td +(unsigned) 47.8205 Tj +-426 TJm +(int) 17.9327 Tj +-852 TJm +(sourceLen,) 59.7756 Tj +217.319 223.267 Td +(int) 17.9327 Tj +-4686 TJm +(blockSize100k,) 83.6858 Tj +217.319 211.312 Td +(int) 17.9327 Tj +-4686 TJm +(verbosity,) 59.7756 Tj +217.319 199.356 Td +(int) 17.9327 Tj +-4686 TJm +(workFactor) 59.7756 Tj +-426 TJm +(\);) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 161.897 Td +/F122_0 9.9626 Tf +(Attempts) 36.5329 Tj +-442 TJm +(to) 7.7509 Tj +-442 TJm +(compress) 37.6287 Tj +-443 TJm +(the) 12.1743 Tj +-442 TJm +(data) 16.5977 Tj +-442 TJm +(in) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +216.87 161.897 Td +/F124_0 9.9626 Tf +(source[0) 47.8205 Tj +-600 TJm +(..) 11.9551 Tj +-1200 TJm +(sourceLen-1]) 71.7307 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +370.715 161.897 Td +/F122_0 9.9626 Tf +(into) 15.5018 Tj +-442 TJm +(the) 12.1743 Tj +-443 TJm +(dest) 16.0497 Tj +1 TJm +(ination) 27.6761 Tj +-443 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.2988 Tj +25 TJm +(fer) 11.0585 Tj +40 TJm +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +486.202 161.897 Td +/F124_0 9.9626 Tf +(dest[0) 35.8654 Tj +-600 TJm +(..) 11.9551 Tj +72 148.198 Td +(*) 5.9776 Tj +77.978 149.942 Td +(destLen-1]) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +137.753 149.942 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +-1393 TJm +(If) 6.6351 Tj +-379 TJm +(the) 12.1743 Tj +-379 TJm +(destination) 43.7259 Tj +-379 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.2988 Tj +25 TJm +(fer) 11.0585 Tj +-378 TJm +(is) 6.6451 Tj +-379 TJm +(big) 12.7322 Tj +-379 TJm +(enough,) 31.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +318.487 148.198 Td +/F124_0 9.9626 Tf +(*) 5.9776 Tj +324.464 149.942 Td +(destLen) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +370.082 149.942 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-379 TJm +(set) 11.0684 Tj +-379 TJm +(to) 7.7509 Tj +-378 TJm +(the) 12.1743 Tj +-379 TJm +(size) 15.4918 Tj +-379 TJm +(of) 8.2988 Tj +-379 TJm +(the) 12.1743 Tj +-379 TJm +(compressed) 47.0334 Tj +-379 TJm +(data,) 19.0883 Tj +72 137.986 Td +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +89.527 137.986 Td +/F124_0 9.9626 Tf +(BZ_OK) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +122.556 137.986 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-315 TJm +(returned.) 35.686 Tj +-1012 TJm +(If) 6.6351 Tj +-315 TJm +(the) 12.1743 Tj +-316 TJm +(compressed) 47.0334 Tj +-315 TJm +(data) 16.5977 Tj +-315 TJm +(w) 7.193 Tj +10 TJm +(on') 13.2801 Tj +18 TJm +(t) 2.7696 Tj +-316 TJm +(\002t,) 10.7995 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +313.323 136.243 Td +/F124_0 9.9626 Tf +(*) 5.9776 Tj +319.3 137.986 Td +(destLen) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +364.285 137.986 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-315 TJm +(unchanged,) 45.6486 Tj +-332 TJm +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +440.551 137.986 Td +/F124_0 9.9626 Tf +(BZ_OUTBUFF_FULL) 89.6634 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +533.355 137.986 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +72 126.031 Td +(returned.) 35.686 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 104.113 Td +(Compression) 52.5826 Tj +-297 TJm +(in) 7.7509 Tj +-297 TJm +(this) 14.396 Tj +-297 TJm +(manner) 29.8778 Tj +-297 TJm +(is) 6.6451 Tj +-297 TJm +(a) 4.4234 Tj +-297 TJm +(one-shot) 34.3112 Tj +-297 TJm +(e) 4.4234 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ent,) 14.6649 Tj +-309 TJm +(done) 19.3673 Tj +-297 TJm +(with) 17.7135 Tj +-297 TJm +(a) 4.4234 Tj +-297 TJm +(single) 23.8007 Tj +-297 TJm +(call) 14.386 Tj +-297 TJm +(to) 7.7509 Tj +-297 TJm +(this) 14.396 Tj +-297 TJm +(function.) 35.696 Tj +-903 TJm +(The) 15.4918 Tj +-297 TJm +(resulting) 34.8691 Tj +-297 TJm +(compressed) 47.0334 Tj +72 92.158 Td +(data) 16.5977 Tj +-296 TJm +(is) 6.6451 Tj +-296 TJm +(a) 4.4234 Tj +-296 TJm +(complete) 36.5229 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +147.988 92.158 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +180.825 92.158 Td +/F122_0 9.9626 Tf +(format) 26.5603 Tj +-296 TJm +(data) 16.5977 Tj +-296 TJm +(stream.) 29.0509 Tj +-897 TJm +(There) 23.2328 Tj +-296 TJm +(is) 6.6451 Tj +-296 TJm +(no) 9.9626 Tj +-296 TJm +(mechanism) 45.3796 Tj +-296 TJm +(for) 11.6164 Tj +-296 TJm +(making) 29.8878 Tj +-296 TJm +(additional) 39.8504 Tj +-296 TJm +(calls) 18.2614 Tj +-296 TJm +(to) 7.7509 Tj +-296 TJm +(pro) 13.2801 Tj +15 TJm +(vide) 17.1556 Tj +-296 TJm +(e) 4.4234 Tj +15 TJm +(xtra) 15.4918 Tj +72 80.203 Td +(input) 20.4831 Tj +-250 TJm +(data.) 19.0883 Tj +-620 TJm +(If) 6.6351 Tj +-250 TJm +(you) 14.9439 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(ant) 12.1743 Tj +-250 TJm +(that) 14.9439 Tj +-250 TJm +(kind) 17.7135 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(mechanism,) 47.8703 Tj +-250 TJm +(use) 13.2801 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(lo) 7.7509 Tj +25 TJm +(w-le) 17.7035 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-250 TJm +(interf) 21.579 Tj +10 TJm +(ace.) 15.7608 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +534.414 50.951 Td +(26) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 27 30 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F122_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +496.556 749.245 Td +/F124_0 9.9626 Tf +(libbzip2) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +72 710.037 Td +/F122_0 9.9626 Tf +(F) 5.5392 Tj +15 TJm +(or) 8.2988 Tj +-223 TJm +(the) 12.1743 Tj +-224 TJm +(meaning) 34.3112 Tj +-223 TJm +(of) 8.2988 Tj +-224 TJm +(parameters) 43.7059 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +195.306 710.037 Td +/F124_0 9.9626 Tf +(blockSize100k) 77.7083 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +273.015 710.037 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +277.784 710.037 Td +/F124_0 9.9626 Tf +(verbosity) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +333.808 710.037 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +350.42 710.037 Td +/F124_0 9.9626 Tf +(workFactor) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +410.196 710.037 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-229 TJm +(see) 12.7222 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +429.913 710.037 Td +/F124_0 9.9626 Tf +(BZ2_bzCompressInit) 107.5961 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +537.509 710.037 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 688.12 Td +(T) 6.0871 Tj +80 TJm +(o) 4.9813 Tj +-410 TJm +(guarantee) 38.7246 Tj +-410 TJm +(that) 14.9439 Tj +-410 TJm +(the) 12.1743 Tj +-410 TJm +(compressed) 47.0334 Tj +-410 TJm +(data) 16.5977 Tj +-410 TJm +(will) 15.5018 Tj +-410 TJm +(\002t) 8.3088 Tj +-410 TJm +(in) 7.7509 Tj +-410 TJm +(its) 9.4147 Tj +-410 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.2988 Tj +25 TJm +(fer) 11.0585 Tj +40 TJm +(,) 2.4907 Tj +-450 TJm +(allocate) 30.9837 Tj +-410 TJm +(an) 9.4047 Tj +-410 TJm +(output) 25.4644 Tj +-410 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.2988 Tj +25 TJm +(fer) 11.0585 Tj +-411 TJm +(of) 8.2988 Tj +-410 TJm +(size) 15.4918 Tj +-410 TJm +(1%) 13.2801 Tj +-410 TJm +(lar) 10.5105 Tj +18 TJm +(ger) 12.7222 Tj +-410 TJm +(than) 17.1556 Tj +-410 TJm +(the) 12.1743 Tj +72 676.164 Td +(uncompressed) 56.996 Tj +-250 TJm +(data,) 19.0883 Tj +-250 TJm +(plus) 16.6077 Tj +-250 TJm +(six) 11.6264 Tj +-250 TJm +(hundred) 32.6474 Tj +-250 TJm +(e) 4.4234 Tj +15 TJm +(xtra) 15.4918 Tj +-250 TJm +(bytes.) 23.5217 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 654.247 Td +/F124_0 9.9626 Tf +(BZ2_bzBuffToBuffDecompress) 155.4166 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +230.553 654.247 Td +/F122_0 9.9626 Tf +(will) 15.5018 Tj +-315 TJm +(not) 12.7322 Tj +-315 TJm +(write) 20.4731 Tj +-314 TJm +(data) 16.5977 Tj +-315 TJm +(at) 7.193 Tj +-315 TJm +(or) 8.2988 Tj +-315 TJm +(be) 9.4047 Tj +15 TJm +(yond) 19.9252 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +362.484 654.247 Td +/F124_0 9.9626 Tf +(dest[) 29.8878 Tj +392.372 652.503 Td +(*) 5.9776 Tj +398.349 654.247 Td +(destLen]) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +446.17 654.247 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-331 TJm +(e) 4.4234 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(en) 9.4047 Tj +-315 TJm +(in) 7.7509 Tj +-315 TJm +(case) 17.1456 Tj +-314 TJm +(of) 8.2988 Tj +-315 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.2988 Tj +25 TJm +(fer) 11.0585 Tj +72 642.291 Td +(o) 4.9813 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(er\003o) 18.2614 Tj +25 TJm +(w) 7.193 Tj +65 TJm +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 620.374 Td +(Possible) 33.2153 Tj +-250 TJm +(return) 23.7907 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alues:) 23.2427 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 451.905] cm +0 0 468 167.372 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 610.909 Td +/F124_0 9.9626 Tf +(BZ_CONFIG_ERROR) 89.6634 Tj +98.488 598.954 Td +(if) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(library) 41.8429 Tj +-426 TJm +(has) 17.9327 Tj +-426 TJm +(been) 23.9102 Tj +-426 TJm +(mis-compiled) 71.7307 Tj +90 586.999 Td +(BZ_PARAM_ERROR) 83.6858 Tj +98.488 575.044 Td +(if) 11.9551 Tj +-426 TJm +(dest) 23.9102 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(destLen) 41.8429 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +98.488 563.089 Td +(or) 11.9551 Tj +-426 TJm +(blockSize100k) 77.7083 Tj +-426 TJm +(<) 5.9776 Tj +-426 TJm +(1) 5.9776 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(blockSize100k) 77.7083 Tj +-426 TJm +(>) 5.9776 Tj +-426 TJm +(9) 5.9776 Tj +98.488 551.133 Td +(or) 11.9551 Tj +-426 TJm +(verbosity) 53.798 Tj +-426 TJm +(<) 5.9776 Tj +-426 TJm +(0) 5.9776 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(verbosity) 53.798 Tj +-426 TJm +(>) 5.9776 Tj +-426 TJm +(4) 5.9776 Tj +98.488 539.178 Td +(or) 11.9551 Tj +-426 TJm +(workFactor) 59.7756 Tj +-426 TJm +(<) 5.9776 Tj +-426 TJm +(0) 5.9776 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(workFactor) 59.7756 Tj +-426 TJm +(>) 5.9776 Tj +-426 TJm +(250) 17.9327 Tj +90 527.223 Td +(BZ_MEM_ERROR) 71.7307 Tj +98.488 515.268 Td +(if) 11.9551 Tj +-426 TJm +(insufficient) 71.7307 Tj +-426 TJm +(memory) 35.8654 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(available) 53.798 Tj +90 503.313 Td +(BZ_OUTBUFF_FULL) 89.6634 Tj +98.488 491.357 Td +(if) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(size) 23.9102 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(compressed) 59.7756 Tj +-426 TJm +(data) 23.9102 Tj +-426 TJm +(exceeds) 41.8429 Tj +341.655 489.614 Td +(*) 5.9776 Tj +347.633 491.357 Td +(destLen) 41.8429 Tj +90 479.402 Td +(BZ_OK) 29.8878 Tj +98.488 467.447 Td +(otherwise) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 421.284 Td +/F116_0 17.2154 Tf +(3.5.2.) 43.0729 Tj +-278 TJm +(BZ2_bzBuffT) 106.1502 Tj +80 TJm +(oBuffDecompress) 148.259 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 333.038] cm +0 0 468 83.686 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 408.356 Td +/F124_0 9.9626 Tf +(int) 17.9327 Tj +-426 TJm +(BZ2_bzBuffToBuffDecompress\() 161.3941 Tj +-426 TJm +(char) 23.9102 Tj +301.726 406.612 Td +(*) 5.9776 Tj +345.899 408.356 Td +(dest,) 29.8878 Tj +225.807 396.401 Td +(unsigned) 47.8205 Tj +-426 TJm +(int) 17.9327 Tj +295.805 394.657 Td +(*) 5.9776 Tj +306.026 396.401 Td +(destLen,) 47.8205 Tj +225.807 384.446 Td +(char) 23.9102 Tj +249.717 382.702 Td +(*) 5.9776 Tj +293.891 384.446 Td +(source,) 41.8429 Tj +225.807 372.49 Td +(unsigned) 47.8205 Tj +-426 TJm +(int) 17.9327 Tj +-852 TJm +(sourceLen,) 59.7756 Tj +225.807 360.535 Td +(int) 17.9327 Tj +-4686 TJm +(small,) 35.8654 Tj +225.807 348.58 Td +(int) 17.9327 Tj +-4686 TJm +(verbosity) 53.798 Tj +-426 TJm +(\);) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 311.12 Td +/F122_0 9.9626 Tf +(Attempts) 36.5329 Tj +-358 TJm +(to) 7.7509 Tj +-359 TJm +(decompress) 47.0334 Tj +-358 TJm +(the) 12.1743 Tj +-358 TJm +(data) 16.5977 Tj +-359 TJm +(in) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +221.259 311.12 Td +/F124_0 9.9626 Tf +(source[0) 47.8205 Tj +-600 TJm +(..) 11.9551 Tj +-1200 TJm +(sourceLen-1]) 71.7307 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +374.268 311.12 Td +/F122_0 9.9626 Tf +(into) 15.5018 Tj +-358 TJm +(the) 12.1743 Tj +-359 TJm +(destination) 43.7259 Tj +-358 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.2988 Tj +25 TJm +(fer) 11.0585 Tj +40 TJm +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +486.202 311.12 Td +/F124_0 9.9626 Tf +(dest[0) 35.8654 Tj +-600 TJm +(..) 11.9551 Tj +72 297.422 Td +(*) 5.9776 Tj +77.978 299.165 Td +(destLen-1]) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +137.753 299.165 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +-1123 TJm +(If) 6.6351 Tj +-334 TJm +(the) 12.1743 Tj +-334 TJm +(destination) 43.7259 Tj +-334 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.2988 Tj +25 TJm +(fer) 11.0585 Tj +-334 TJm +(is) 6.6451 Tj +-334 TJm +(big) 12.7322 Tj +-334 TJm +(enough,) 31.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +312.554 297.422 Td +/F124_0 9.9626 Tf +(*) 5.9776 Tj +318.531 299.165 Td +(destLen) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +363.701 299.165 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-334 TJm +(set) 11.0684 Tj +-334 TJm +(to) 7.7509 Tj +-334 TJm +(the) 12.1743 Tj +-334 TJm +(size) 15.4918 Tj +-333 TJm +(of) 8.2988 Tj +-334 TJm +(the) 12.1743 Tj +-334 TJm +(uncompressed) 56.996 Tj +-334 TJm +(data,) 19.0883 Tj +72 287.21 Td +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +89.527 287.21 Td +/F124_0 9.9626 Tf +(BZ_OK) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +122.556 287.21 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-315 TJm +(returned.) 35.686 Tj +-1012 TJm +(If) 6.6351 Tj +-315 TJm +(the) 12.1743 Tj +-316 TJm +(compressed) 47.0334 Tj +-315 TJm +(data) 16.5977 Tj +-315 TJm +(w) 7.193 Tj +10 TJm +(on') 13.2801 Tj +18 TJm +(t) 2.7696 Tj +-316 TJm +(\002t,) 10.7995 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +313.323 285.467 Td +/F124_0 9.9626 Tf +(*) 5.9776 Tj +319.3 287.21 Td +(destLen) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +364.285 287.21 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-315 TJm +(unchanged,) 45.6486 Tj +-332 TJm +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +440.551 287.21 Td +/F124_0 9.9626 Tf +(BZ_OUTBUFF_FULL) 89.6634 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +533.355 287.21 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +72 275.255 Td +(returned.) 35.686 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 253.337 Td +/F124_0 9.9626 Tf +(source) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +110.981 253.337 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-313 TJm +(assumed) 34.3112 Tj +-312 TJm +(to) 7.7509 Tj +-313 TJm +(hold) 17.7135 Tj +-313 TJm +(a) 4.4234 Tj +-313 TJm +(complete) 36.5229 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +237.04 253.337 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +270.044 253.337 Td +/F122_0 9.9626 Tf +(format) 26.5603 Tj +-313 TJm +(data) 16.5977 Tj +-312 TJm +(stream.) 29.0509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +353.446 253.337 Td +/F124_0 9.9626 Tf +(BZ2_bzBuffToBuffDecompress) 155.4166 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +511.978 253.337 Td +/F122_0 9.9626 Tf +(tries) 17.1556 Tj +-313 TJm +(to) 7.7509 Tj +72 241.382 Td +(decompress) 47.0334 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(entirety) 30.4357 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(stream) 26.5603 Tj +-250 TJm +(into) 15.5018 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(output) 25.4644 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.2988 Tj +25 TJm +(fer) 11.0585 Tj +55 TJm +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 219.464 Td +(F) 5.5392 Tj +15 TJm +(or) 8.2988 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(meaning) 34.3112 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(parameters) 43.7059 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +196.631 219.464 Td +/F124_0 9.9626 Tf +(small) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +229.01 219.464 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +245.887 219.464 Td +/F124_0 9.9626 Tf +(verbosity) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +299.685 219.464 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-250 TJm +(see) 12.7222 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +319.879 219.464 Td +/F124_0 9.9626 Tf +(BZ2_bzDecompressInit) 119.5512 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +439.431 219.464 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 197.546 Td +(Because) 33.1954 Tj +-250 TJm +(the) 12.1743 Tj +-249 TJm +(compression) 50.3609 Tj +-250 TJm +(ratio) 18.2614 Tj +-249 TJm +(of) 8.2988 Tj +-250 TJm +(the) 12.1743 Tj +-249 TJm +(compressed) 47.0334 Tj +-250 TJm +(data) 16.5977 Tj +-249 TJm +(cannot) 26.5603 Tj +-250 TJm +(be) 9.4047 Tj +-250 TJm +(kno) 14.9439 Tj +25 TJm +(wn) 12.1743 Tj +-249 TJm +(in) 7.7509 Tj +-250 TJm +(adv) 14.386 Tj +25 TJm +(ance,) 20.7421 Tj +-249 TJm +(there) 19.9152 Tj +-250 TJm +(is) 6.6451 Tj +-249 TJm +(no) 9.9626 Tj +-250 TJm +(easy) 17.7035 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(ay) 9.4047 Tj +-249 TJm +(to) 7.7509 Tj +-250 TJm +(guarantee) 38.7246 Tj +72 185.591 Td +(that) 14.9439 Tj +-286 TJm +(the) 12.1743 Tj +-287 TJm +(output) 25.4644 Tj +-286 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.2988 Tj +25 TJm +(fer) 11.0585 Tj +-287 TJm +(will) 15.5018 Tj +-286 TJm +(be) 9.4047 Tj +-286 TJm +(big) 12.7322 Tj +-287 TJm +(enough.) 31.8205 Tj +-838 TJm +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-287 TJm +(may) 17.1556 Tj +-286 TJm +(of) 8.2988 Tj +-287 TJm +(course) 26.0024 Tj +-286 TJm +(mak) 17.1556 Tj +10 TJm +(e) 4.4234 Tj +-286 TJm +(arrangements) 53.6685 Tj +-287 TJm +(in) 7.7509 Tj +-286 TJm +(your) 18.2614 Tj +-287 TJm +(code) 18.8094 Tj +-286 TJm +(to) 7.7509 Tj +-286 TJm +(record) 25.4445 Tj +-287 TJm +(the) 12.1743 Tj +-286 TJm +(size) 15.4918 Tj +-287 TJm +(of) 8.2988 Tj +72 173.636 Td +(the) 12.1743 Tj +-250 TJm +(uncompressed) 56.996 Tj +-250 TJm +(data,) 19.0883 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-250 TJm +(such) 18.2614 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(mechanism) 45.3796 Tj +-250 TJm +(is) 6.6451 Tj +-250 TJm +(be) 9.4047 Tj +15 TJm +(yond) 19.9252 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(scope) 22.6848 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(this) 14.396 Tj +-250 TJm +(library) 26.5603 Tj +65 TJm +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 151.718 Td +/F124_0 9.9626 Tf +(BZ2_bzBuffToBuffDecompress) 155.4166 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +230.553 151.718 Td +/F122_0 9.9626 Tf +(will) 15.5018 Tj +-315 TJm +(not) 12.7322 Tj +-315 TJm +(write) 20.4731 Tj +-314 TJm +(data) 16.5977 Tj +-315 TJm +(at) 7.193 Tj +-315 TJm +(or) 8.2988 Tj +-315 TJm +(be) 9.4047 Tj +15 TJm +(yond) 19.9252 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +362.484 151.718 Td +/F124_0 9.9626 Tf +(dest[) 29.8878 Tj +392.372 149.975 Td +(*) 5.9776 Tj +398.349 151.718 Td +(destLen]) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +446.17 151.718 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-331 TJm +(e) 4.4234 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(en) 9.4047 Tj +-315 TJm +(in) 7.7509 Tj +-315 TJm +(case) 17.1456 Tj +-314 TJm +(of) 8.2988 Tj +-315 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.2988 Tj +25 TJm +(fer) 11.0585 Tj +72 139.763 Td +(o) 4.9813 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(er\003o) 18.2614 Tj +25 TJm +(w) 7.193 Tj +65 TJm +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 117.845 Td +(Possible) 33.2153 Tj +-250 TJm +(return) 23.7907 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alues:) 23.2427 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +534.414 50.951 Td +(27) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 28 31 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +420.96 749.245 Td +/F122_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +498.449 749.245 Td +/F124_0 9.9626 Tf +(libbzip2) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 75.786 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 492.852] cm +0 0 468 227.148 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 711.631 Td +/F124_0 9.9626 Tf +(BZ_CONFIG_ERROR) 89.6634 Tj +98.488 699.676 Td +(if) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(library) 41.8429 Tj +-426 TJm +(has) 17.9327 Tj +-426 TJm +(been) 23.9102 Tj +-426 TJm +(mis-compiled) 71.7307 Tj +90 687.721 Td +(BZ_PARAM_ERROR) 83.6858 Tj +98.488 675.766 Td +(if) 11.9551 Tj +-426 TJm +(dest) 23.9102 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(destLen) 41.8429 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +98.488 663.811 Td +(or) 11.9551 Tj +-426 TJm +(small) 29.8878 Tj +-426 TJm +(!=) 11.9551 Tj +-426 TJm +(0) 5.9776 Tj +-426 TJm +(&&) 11.9551 Tj +-426 TJm +(small) 29.8878 Tj +-426 TJm +(!=) 11.9551 Tj +-426 TJm +(1) 5.9776 Tj +98.488 651.856 Td +(or) 11.9551 Tj +-426 TJm +(verbosity) 53.798 Tj +-426 TJm +(<) 5.9776 Tj +-426 TJm +(0) 5.9776 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(verbosity) 53.798 Tj +-426 TJm +(>) 5.9776 Tj +-426 TJm +(4) 5.9776 Tj +90 639.9 Td +(BZ_MEM_ERROR) 71.7307 Tj +98.488 627.945 Td +(if) 11.9551 Tj +-426 TJm +(insufficient) 71.7307 Tj +-426 TJm +(memory) 35.8654 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(available) 53.798 Tj +90 615.99 Td +(BZ_OUTBUFF_FULL) 89.6634 Tj +98.488 604.035 Td +(if) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(size) 23.9102 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(compressed) 59.7756 Tj +-426 TJm +(data) 23.9102 Tj +-426 TJm +(exceeds) 41.8429 Tj +341.655 602.291 Td +(*) 5.9776 Tj +347.633 604.035 Td +(destLen) 41.8429 Tj +90 592.08 Td +(BZ_DATA_ERROR) 77.7083 Tj +98.488 580.124 Td +(if) 11.9551 Tj +-426 TJm +(a) 5.9776 Tj +-426 TJm +(data) 23.9102 Tj +-426 TJm +(integrity) 53.798 Tj +-426 TJm +(error) 29.8878 Tj +-426 TJm +(was) 17.9327 Tj +-426 TJm +(detected) 47.8205 Tj +-426 TJm +(in) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(compressed) 59.7756 Tj +-426 TJm +(data) 23.9102 Tj +90 568.169 Td +(BZ_DATA_ERROR_MAGIC) 113.5736 Tj +98.488 556.214 Td +(if) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(compressed) 59.7756 Tj +-426 TJm +(data) 23.9102 Tj +-426 TJm +(doesn't) 41.8429 Tj +-426 TJm +(begin) 29.8878 Tj +-426 TJm +(with) 23.9102 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(right) 29.8878 Tj +-426 TJm +(magic) 29.8878 Tj +-426 TJm +(bytes) 29.8878 Tj +90 544.259 Td +(BZ_UNEXPECTED_EOF) 101.6185 Tj +98.488 532.304 Td +(if) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(compressed) 59.7756 Tj +-426 TJm +(data) 23.9102 Tj +-426 TJm +(ends) 23.9102 Tj +-426 TJm +(unexpectedly) 71.7307 Tj +90 520.349 Td +(BZ_OK) 29.8878 Tj +98.488 508.393 Td +(otherwise) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 458.099 Td +/F116_0 20.6585 Tf +(3.6.) 34.4584 Tj +-278 TJm +(zlib) 34.4377 Tj +-278 TJm +(compatibility) 127.4216 Tj +-278 TJm +(functions) 92.9633 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 436.181 Td +/F122_0 9.9626 Tf +(Y) 7.193 Tj +110 TJm +(oshioka) 30.9936 Tj +-604 TJm +(Tsuneo) 29.3299 Tj +-604 TJm +(has) 13.2801 Tj +-604 TJm +(contrib) 28.224 Tj +20 TJm +(uted) 17.1556 Tj +-604 TJm +(some) 21.031 Tj +-604 TJm +(functions) 37.0808 Tj +-604 TJm +(to) 7.7509 Tj +-604 TJm +(gi) 7.7509 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-604 TJm +(better) 22.6848 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +356.347 436.181 Td +/F124_0 9.9626 Tf +(zlib) 23.9102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +386.275 436.181 Td +/F122_0 9.9626 Tf +(compatibility) 53.1405 Tj +65 TJm +(.) 2.4907 Tj +-1372 TJm +(These) 23.7907 Tj +-604 TJm +(functions) 37.0808 Tj +-604 TJm +(are) 12.1643 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 424.226 Td +/F124_0 9.9626 Tf +(BZ2_bzopen) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +131.776 424.226 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +144.283 424.226 Td +/F124_0 9.9626 Tf +(BZ2_bzread) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +204.059 424.226 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +216.567 424.226 Td +/F124_0 9.9626 Tf +(BZ2_bzwrite) 65.7532 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +282.32 424.226 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +294.827 424.226 Td +/F124_0 9.9626 Tf +(BZ2_bzflush) 65.7532 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +360.581 424.226 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +373.088 424.226 Td +/F124_0 9.9626 Tf +(BZ2_bzclose) 65.7532 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +438.842 424.226 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +451.349 424.226 Td +/F124_0 9.9626 Tf +(BZ2_bzerror) 65.7532 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +525.614 424.226 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 412.271 Td +/F124_0 9.9626 Tf +(BZ2_bzlibVersion) 95.641 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +167.641 412.271 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +-1420 TJm +(These) 23.7907 Tj +-383 TJm +(functions) 37.0808 Tj +-383 TJm +(are) 12.1643 Tj +-383 TJm +(not) 12.7322 Tj +-383 TJm +(\(yet\)) 18.8094 Tj +-384 TJm +(of) 8.2988 Tj +25 TJm +(\002cially) 27.6761 Tj +-383 TJm +(part) 15.4918 Tj +-383 TJm +(of) 8.2988 Tj +-383 TJm +(the) 12.1743 Tj +-384 TJm +(library) 26.5603 Tj +65 TJm +(.) 2.4907 Tj +-1419 TJm +(If) 6.6351 Tj +-383 TJm +(the) 12.1743 Tj +15 TJm +(y) 4.9813 Tj +-384 TJm +(break,) 24.6176 Tj +-416 TJm +(you) 14.9439 Tj +-383 TJm +(get) 12.1743 Tj +-384 TJm +(to) 7.7509 Tj +72 400.316 Td +(k) 4.9813 Tj +10 TJm +(eep) 13.8281 Tj +-250 TJm +(all) 9.9626 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(pieces.) 27.3872 Tj +-620 TJm +(Ne) 11.6164 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ertheless,) 37.3498 Tj +-250 TJm +(I) 3.3175 Tj +-250 TJm +(think) 20.4831 Tj +-250 TJm +(the) 12.1743 Tj +15 TJm +(y) 4.9813 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(ork) 13.2801 Tj +-250 TJm +(ok.) 12.4533 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 349.342] cm +0 0 468 47.821 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 388.794 Td +/F124_0 9.9626 Tf +(typedef) 41.8429 Tj +-426 TJm +(void) 23.9102 Tj +-426 TJm +(BZFILE;) 41.8429 Tj +90 364.884 Td +(const) 29.8878 Tj +-426 TJm +(char) 23.9102 Tj +152.286 363.14 Td +(*) 5.9776 Tj +162.508 364.884 Td +(BZ2_bzlibVersion) 95.641 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(void) 23.9102 Tj +-426 TJm +(\);) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 327.424 Td +/F122_0 9.9626 Tf +(Returns) 30.9936 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(string) 22.6948 Tj +-250 TJm +(indicating) 39.8504 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(library) 26.5603 Tj +-250 TJm +(v) 4.9813 Tj +15 TJm +(ersion.) 26.8392 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 288.405] cm +0 0 468 35.866 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 315.902 Td +/F124_0 9.9626 Tf +(BZFILE) 35.8654 Tj +130.109 314.159 Td +(*) 5.9776 Tj +140.331 315.902 Td +(BZ2_bzopen) 59.7756 Tj +-852 TJm +(\() 5.9776 Tj +-426 TJm +(const) 29.8878 Tj +-426 TJm +(char) 23.9102 Tj +281.103 314.159 Td +(*) 5.9776 Tj +287.08 315.902 Td +(path,) 29.8878 Tj +-426 TJm +(const) 29.8878 Tj +-426 TJm +(char) 23.9102 Tj +383.498 314.159 Td +(*) 5.9776 Tj +389.476 315.902 Td +(mode) 23.9102 Tj +-426 TJm +(\);) 11.9551 Tj +90 303.947 Td +(BZFILE) 35.8654 Tj +130.109 302.204 Td +(*) 5.9776 Tj +140.331 303.947 Td +(BZ2_bzdopen) 65.7532 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(int) 17.9327 Tj +-3408 TJm +(fd,) 17.9327 Tj +-1704 TJm +(const) 29.8878 Tj +-426 TJm +(char) 23.9102 Tj +369.629 302.204 Td +(*) 5.9776 Tj +375.607 303.947 Td +(mode) 23.9102 Tj +-426 TJm +(\);) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 266.488 Td +/F122_0 9.9626 Tf +(Opens) 25.4544 Tj +-243 TJm +(a) 4.4234 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +106.713 266.488 Td +/F124_0 9.9626 Tf +(.bz2) 23.9102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +133.041 266.488 Td +/F122_0 9.9626 Tf +(\002le) 12.7322 Tj +-243 TJm +(for) 11.6164 Tj +-242 TJm +(reading) 29.8778 Tj +-243 TJm +(or) 8.2988 Tj +-243 TJm +(writing,) 31.2726 Tj +-244 TJm +(using) 21.589 Tj +-243 TJm +(either) 22.6848 Tj +-242 TJm +(its) 9.4147 Tj +-243 TJm +(name) 21.579 Tj +-243 TJm +(or) 8.2988 Tj +-242 TJm +(a) 4.4234 Tj +-243 TJm +(pre-e) 20.4632 Tj +15 TJm +(xisting) 27.1282 Tj +-243 TJm +(\002le) 12.7322 Tj +-242 TJm +(descriptor) 39.8404 Tj +55 TJm +(.) 2.4907 Tj +-615 TJm +(Analogous) 43.1679 Tj +-243 TJm +(to) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +510.112 266.488 Td +/F124_0 9.9626 Tf +(fopen) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 254.532 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +88.877 254.532 Td +/F124_0 9.9626 Tf +(fdopen) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +124.742 254.532 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 216.137] cm +0 0 468 35.866 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 243.633 Td +/F124_0 9.9626 Tf +(int) 17.9327 Tj +-426 TJm +(BZ2_bzread) 59.7756 Tj +-852 TJm +(\() 5.9776 Tj +-426 TJm +(BZFILE) 35.8654 Tj +226.528 241.89 Td +(*) 5.9776 Tj +236.749 243.633 Td +(b,) 11.9551 Tj +-426 TJm +(void) 23.9102 Tj +276.859 241.89 Td +(*) 5.9776 Tj +287.08 243.633 Td +(buf,) 23.9102 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(len) 17.9327 Tj +-426 TJm +(\);) 11.9551 Tj +90 231.678 Td +(int) 17.9327 Tj +-426 TJm +(BZ2_bzwrite) 65.7532 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(BZFILE) 35.8654 Tj +228.261 229.935 Td +(*) 5.9776 Tj +238.483 231.678 Td +(b,) 11.9551 Tj +-426 TJm +(void) 23.9102 Tj +278.592 229.935 Td +(*) 5.9776 Tj +288.814 231.678 Td +(buf,) 23.9102 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(len) 17.9327 Tj +-426 TJm +(\);) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 194.219 Td +/F122_0 9.9626 Tf +(Reads/writes) 51.4668 Tj +-250 TJm +(data) 16.5977 Tj +-250 TJm +(from/to) 29.8878 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(pre) 12.7222 Tj +25 TJm +(viously) 29.3399 Tj +-250 TJm +(opened) 28.772 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +259.903 194.219 Td +/F124_0 9.9626 Tf +(BZFILE) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +295.769 194.219 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +-500 TJm +(Analogous) 43.1679 Tj +-250 TJm +(to) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +359.141 194.219 Td +/F124_0 9.9626 Tf +(fread) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +391.519 194.219 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +408.396 194.219 Td +/F124_0 9.9626 Tf +(fwrite) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +444.261 194.219 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 155.2] cm +0 0 468 35.866 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 182.697 Td +/F124_0 9.9626 Tf +(int) 17.9327 Tj +-852 TJm +(BZ2_bzflush) 65.7532 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(BZFILE) 35.8654 Tj +232.505 180.954 Td +(*) 5.9776 Tj +242.727 182.697 Td +(b) 5.9776 Tj +-426 TJm +(\);) 11.9551 Tj +90 170.742 Td +(void) 23.9102 Tj +-426 TJm +(BZ2_bzclose) 65.7532 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(BZFILE) 35.8654 Tj +234.239 168.998 Td +(*) 5.9776 Tj +244.46 170.742 Td +(b) 5.9776 Tj +-426 TJm +(\);) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 133.282 Td +/F122_0 9.9626 Tf +(Flushes/closes) 57.5639 Tj +-250 TJm +(a) 4.4234 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +138.968 133.282 Td +/F124_0 9.9626 Tf +(BZFILE) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +174.833 133.282 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +179.815 133.282 Td +/F124_0 9.9626 Tf +(BZ2_bzflush) 65.7532 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +248.059 133.282 Td +/F122_0 9.9626 Tf +(doesn') 26.5603 Tj +18 TJm +(t) 2.7696 Tj +-250 TJm +(actually) 31.5416 Tj +-250 TJm +(do) 9.9626 Tj +-250 TJm +(an) 9.4047 Tj +15 TJm +(ything.) 27.9551 Tj +-620 TJm +(Analogous) 43.1679 Tj +-250 TJm +(to) 7.7509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +425.472 133.282 Td +/F124_0 9.9626 Tf +(fflush) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +463.828 133.282 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +480.705 133.282 Td +/F124_0 9.9626 Tf +(fclose) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +516.57 133.282 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 106.219] cm +0 0 468 23.91 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 121.761 Td +/F124_0 9.9626 Tf +(const) 29.8878 Tj +-426 TJm +(char) 23.9102 Tj +152.286 120.017 Td +(*) 5.9776 Tj +162.508 121.761 Td +(BZ2_bzerror) 65.7532 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(BZFILE) 35.8654 Tj +282.836 120.017 Td +(*) 5.9776 Tj +288.814 121.761 Td +(b,) 11.9551 Tj +-426 TJm +(int) 17.9327 Tj +327.19 120.017 Td +(*) 5.9776 Tj +333.167 121.761 Td +(errnum) 35.8654 Tj +-426 TJm +(\)) 5.9776 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 84.301 Td +/F122_0 9.9626 Tf +(Returns) 30.9936 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(string) 22.6948 Tj +-250 TJm +(describing) 41.5042 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(more) 20.4731 Tj +-250 TJm +(recent) 24.3386 Tj +-250 TJm +(error) 19.3573 Tj +-250 TJm +(status) 22.6948 Tj +-250 TJm +(of) 8.2988 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +303.858 84.301 Td +/F124_0 9.9626 Tf +(b) 5.9776 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +309.835 84.301 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(also) 16.0497 Tj +-250 TJm +(sets) 14.9439 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +367.668 82.558 Td +/F124_0 9.9626 Tf +(*) 5.9776 Tj +373.645 84.301 Td +(errnum) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +412.002 84.301 Td +/F122_0 9.9626 Tf +(to) 7.7509 Tj +-250 TJm +(its) 9.4147 Tj +-250 TJm +(numerical) 39.8404 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alue.) 19.0883 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +536.307 50.951 Td +(28) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 29 32 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F122_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +496.556 749.245 Td +/F124_0 9.9626 Tf +(libbzip2) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +72 704.93 Td +/F116_0 20.6585 Tf +(3.7.) 34.4584 Tj +-278 TJm +(Using) 57.3893 Tj +-278 TJm +(the) 30.9878 Tj +-278 TJm +(librar) 51.6669 Tj +-10 TJm +(y) 11.4861 Tj +-278 TJm +(in) 18.3654 Tj +-278 TJm +(a) 11.4861 Tj +-278 TJm +(stdio-free) 94.1201 Tj +72 680.139 Td +(en) 24.1085 Tj +40 TJm +(vir) 25.2653 Tj +20 TJm +(onment) 74.5978 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 649.583 Td +/F116_0 17.2154 Tf +(3.7.1.) 43.0729 Tj +-278 TJm +(Getting) 60.2539 Tj +-278 TJm +(rid) 22.0013 Tj +-278 TJm +(of) 16.2513 Tj +-278 TJm +(stdio) 41.1276 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 627.73 Td +/F122_0 9.9626 Tf +(In) 8.2988 Tj +-319 TJm +(a) 4.4234 Tj +-319 TJm +(deeply) 26.5603 Tj +-319 TJm +(embedded) 40.9463 Tj +-319 TJm +(application,) 46.7644 Tj +-336 TJm +(you) 14.9439 Tj +-319 TJm +(might) 23.2527 Tj +-319 TJm +(w) 7.193 Tj +10 TJm +(ant) 12.1743 Tj +-319 TJm +(to) 7.7509 Tj +-319 TJm +(use) 13.2801 Tj +-319 TJm +(just) 14.396 Tj +-319 TJm +(the) 12.1743 Tj +-319 TJm +(memory-to-memory) 80.7967 Tj +-319 TJm +(functions.) 39.5714 Tj +-1035 TJm +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-319 TJm +(can) 13.8281 Tj +-319 TJm +(do) 9.9626 Tj +-319 TJm +(this) 14.396 Tj +72 615.775 Td +(con) 14.386 Tj +40 TJm +(v) 4.9813 Tj +15 TJm +(eniently) 32.0995 Tj +-327 TJm +(by) 9.9626 Tj +-327 TJm +(compiling) 40.4083 Tj +-327 TJm +(the) 12.1743 Tj +-327 TJm +(library) 26.5603 Tj +-327 TJm +(with) 17.7135 Tj +-328 TJm +(preproces) 38.7246 Tj +1 TJm +(sor) 12.1743 Tj +-328 TJm +(symbol) 29.3399 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +336.045 615.775 Td +/F124_0 9.9626 Tf +(BZ_NO_STDIO) 65.7532 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +405.057 615.775 Td +/F122_0 9.9626 Tf +(de\002ned.) 31.8205 Tj +-1083 TJm +(Doing) 24.9065 Tj +-327 TJm +(this) 14.396 Tj +-327 TJm +(gi) 7.7509 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(es) 8.2988 Tj +-327 TJm +(you) 14.9439 Tj +-327 TJm +(a) 4.4234 Tj +72 603.819 Td +(library) 26.5603 Tj +-250 TJm +(containing) 42.0621 Tj +-250 TJm +(only) 17.7135 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(follo) 18.8194 Tj +25 TJm +(wing) 19.9252 Tj +-250 TJm +(eight) 19.9252 Tj +-250 TJm +(functions:) 39.8504 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 581.966 Td +/F124_0 9.9626 Tf +(BZ2_bzCompressInit) 107.5961 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +179.597 581.966 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +199.079 581.966 Td +/F124_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +282.765 581.966 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +302.247 581.966 Td +/F124_0 9.9626 Tf +(BZ2_bzCompressEnd) 101.6185 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-1414 TJm +(BZ2_bzDe) 47.8205 Tj +-1 TJm +(compressInit) 71.7307 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +537.509 581.966 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 570.011 Td +/F124_0 9.9626 Tf +(BZ2_bzDecompress) 95.641 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +167.641 570.011 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +172.144 570.011 Td +/F124_0 9.9626 Tf +(BZ2_bzDecompressEnd) 113.5736 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-190 TJm +(BZ2_bzBuffToBuffCompress) 143.4614 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +431.073 570.011 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +435.577 570.011 Td +/F124_0 9.9626 Tf +(BZ2_bzBuffToBuffDecompress) 155.4166 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 548.158 Td +/F122_0 9.9626 Tf +(When) 23.7907 Tj +-250 TJm +(compiled) 37.0808 Tj +-250 TJm +(lik) 10.5205 Tj +10 TJm +(e) 4.4234 Tj +-250 TJm +(this,) 16.8866 Tj +-250 TJm +(all) 9.9626 Tj +-250 TJm +(functions) 37.0808 Tj +-250 TJm +(will) 15.5018 Tj +-250 TJm +(ignore) 25.4544 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +272.526 548.158 Td +/F124_0 9.9626 Tf +(verbosity) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +328.815 548.158 Td +/F122_0 9.9626 Tf +(settings.) 32.9364 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 517.601 Td +/F116_0 17.2154 Tf +(3.7.2.) 43.0729 Tj +-278 TJm +(Critical) 58.3602 Tj +-278 TJm +(err) 22.9653 Tj +20 TJm +(or) 17.2154 Tj +-278 TJm +(handling) 71.7366 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 495.748 Td +/F124_0 9.9626 Tf +(libbzip2) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +124.529 495.748 Td +/F122_0 9.9626 Tf +(contains) 33.2053 Tj +-473 TJm +(a) 4.4234 Tj +-472 TJm +(number) 30.4357 Tj +-473 TJm +(of) 8.2988 Tj +-472 TJm +(internal) 30.4357 Tj +-473 TJm +(assertion) 35.417 Tj +-472 TJm +(checks) 27.1082 Tj +-473 TJm +(which) 24.3486 Tj +-472 TJm +(should,) 29.0609 Tj +-529 TJm +(needless) 33.7533 Tj +-472 TJm +(to) 7.7509 Tj +-473 TJm +(say) 13.2801 Tj +65 TJm +(,) 2.4907 Tj +-528 TJm +(ne) 9.4047 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(er) 7.7409 Tj +-473 TJm +(be) 9.4047 Tj +-472 TJm +(acti) 14.386 Tj +25 TJm +(v) 4.9813 Tj +25 TJm +(ated.) 19.0883 Tj +72 483.793 Td +(Ne) 11.6164 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ertheless,) 37.3498 Tj +-533 TJm +(if) 6.0871 Tj +-476 TJm +(an) 9.4047 Tj +-476 TJm +(assertion) 35.417 Tj +-476 TJm +(should) 26.5703 Tj +-476 TJm +(f) 3.3175 Tj +10 TJm +(ail,) 12.4533 Tj +-532 TJm +(beha) 18.8094 Tj +20 TJm +(viour) 21.031 Tj +-476 TJm +(depends) 32.6474 Tj +-476 TJm +(on) 9.9626 Tj +-476 TJm +(whether) 32.0895 Tj +-476 TJm +(or) 8.2988 Tj +-477 TJm +(not) 12.7322 Tj +-476 TJm +(the) 12.1743 Tj +-476 TJm +(library) 26.5603 Tj +-476 TJm +(w) 7.193 Tj +10 TJm +(as) 8.2988 Tj +-476 TJm +(compiled) 37.0808 Tj +-476 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 471.838 Td +/F124_0 9.9626 Tf +(BZ_NO_STDIO) 65.7532 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +140.244 471.838 Td +/F122_0 9.9626 Tf +(set.) 13.5591 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 449.985 Td +(F) 5.5392 Tj +15 TJm +(or) 8.2988 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(normal) 28.224 Tj +-250 TJm +(compile,) 34.5901 Tj +-250 TJm +(an) 9.4047 Tj +-250 TJm +(assertion) 35.417 Tj +-250 TJm +(f) 3.3175 Tj +10 TJm +(ailure) 22.6848 Tj +-250 TJm +(yields) 23.8007 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(message:) 36.5229 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 428.131 Td +(bzip2/libbzip2:) 60.3335 Tj +-310 TJm +(internal) 30.4357 Tj +-250 TJm +(error) 19.3573 Tj +-250 TJm +(number) 30.4357 Tj +-250 TJm +(N.) 9.6836 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 406.278 Td +(This) 17.7135 Tj +-344 TJm +(is) 6.6451 Tj +-344 TJm +(a) 4.4234 Tj +-344 TJm +(b) 4.9813 Tj +20 TJm +(ug) 9.9626 Tj +-343 TJm +(in) 7.7509 Tj +-344 TJm +(bzip2/libbzip2,) 60.0546 Tj +-368 TJm +(1.0.6) 19.9252 Tj +-343 TJm +(of) 8.2988 Tj +-344 TJm +(6) 4.9813 Tj +-344 TJm +(September) 42.61 Tj +-344 TJm +(2010.) 22.4159 Tj +-592 TJm +(Please) 25.4544 Tj +-344 TJm +(report) 23.7907 Tj +-343 TJm +(it) 5.5392 Tj +-344 TJm +(to) 7.7509 Tj +-344 TJm +(me) 12.1743 Tj +-344 TJm +(at:) 9.9626 Tj +-498 TJm +(jse) 11.0684 Tj +25 TJm +(w) 7.193 Tj +10 TJm +(ard@bzip.or) 49.8429 Tj +18 TJm +(g.) 7.472 Tj +-1183 TJm +(If) 6.6351 Tj +-344 TJm +(this) 14.396 Tj +72 394.323 Td +(happened) 38.1767 Tj +-297 TJm +(when) 21.579 Tj +-298 TJm +(you) 14.9439 Tj +-297 TJm +(were) 19.3573 Tj +-297 TJm +(using) 21.589 Tj +-297 TJm +(some) 21.031 Tj +-298 TJm +(program) 33.7533 Tj +-297 TJm +(which) 24.3486 Tj +-297 TJm +(uses) 17.1556 Tj +-297 TJm +(libbzip2) 32.6574 Tj +-298 TJm +(as) 8.2988 Tj +-297 TJm +(a) 4.4234 Tj +-297 TJm +(component,) 46.7644 Tj +-309 TJm +(you) 14.9439 Tj +-298 TJm +(should) 26.5703 Tj +-297 TJm +(also) 16.0497 Tj +-297 TJm +(report) 23.7907 Tj +-297 TJm +(this) 14.396 Tj +-298 TJm +(b) 4.9813 Tj +20 TJm +(ug) 9.9626 Tj +72 382.368 Td +(to) 7.7509 Tj +-264 TJm +(the) 12.1743 Tj +-264 TJm +(author\(s\)) 35.965 Tj +-264 TJm +(of) 8.2988 Tj +-264 TJm +(that) 14.9439 Tj +-264 TJm +(program.) 36.2439 Tj +-703 TJm +(Please) 25.4544 Tj +-264 TJm +(mak) 17.1556 Tj +10 TJm +(e) 4.4234 Tj +-264 TJm +(an) 9.4047 Tj +-264 TJm +(ef) 7.7409 Tj +25 TJm +(fort) 14.386 Tj +-264 TJm +(to) 7.7509 Tj +-264 TJm +(report) 23.7907 Tj +-263 TJm +(this) 14.396 Tj +-264 TJm +(b) 4.9813 Tj +20 TJm +(ug;) 12.7322 Tj +-271 TJm +(timely) 25.4644 Tj +-264 TJm +(and) 14.386 Tj +-264 TJm +(accurate) 33.1854 Tj +-264 TJm +(b) 4.9813 Tj +20 TJm +(ug) 9.9626 Tj +-264 TJm +(reports) 27.6661 Tj +-264 TJm +(e) 4.4234 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(entually) 32.0995 Tj +72 370.413 Td +(lead) 16.5977 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(higher) 25.4544 Tj +-250 TJm +(quality) 27.6761 Tj +-250 TJm +(softw) 22.1369 Tj +10 TJm +(are.) 14.655 Tj +-620 TJm +(Thanks.) 31.8205 Tj +-620 TJm +(Julian) 23.8007 Tj +-250 TJm +(Se) 9.9626 Tj +25 TJm +(w) 7.193 Tj +10 TJm +(ard,) 15.2129 Tj +-250 TJm +(6) 4.9813 Tj +-250 TJm +(September) 42.61 Tj +-250 TJm +(2010.) 22.4159 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 338.758 Td +(where) 24.3386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +98.831 338.758 Td +/F124_0 9.9626 Tf +(N) 5.9776 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +107.301 338.758 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-250 TJm +(some) 21.031 Tj +-250 TJm +(error) 19.3573 Tj +-251 TJm +(code) 18.8094 Tj +-250 TJm +(number) 30.4357 Tj +55 TJm +(.) 2.4907 Tj +-621 TJm +(If) 6.6351 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +230.81 338.758 Td +/F124_0 9.9626 Tf +(N) 5.9776 Tj +-600 TJm +(==) 11.9551 Tj +-600 TJm +(1007) 23.9102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +284.608 338.758 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-250 TJm +(it) 5.5392 Tj +-250 TJm +(also) 16.0497 Tj +-251 TJm +(prints) 22.6948 Tj +-250 TJm +(some) 21.031 Tj +-250 TJm +(e) 4.4234 Tj +15 TJm +(xtra) 15.4918 Tj +-250 TJm +(te) 7.193 Tj +15 TJm +(xt) 7.7509 Tj +-250 TJm +(advising) 33.7633 Tj +-251 TJm +(the) 12.1743 Tj +-250 TJm +(reader) 24.8866 Tj +-250 TJm +(that) 14.9439 Tj +-250 TJm +(unreliable) 39.8404 Tj +72 326.803 Td +(memory) 33.2053 Tj +-425 TJm +(is) 6.6451 Tj +-424 TJm +(often) 20.4731 Tj +-425 TJm +(associated) 40.9463 Tj +-425 TJm +(with) 17.7135 Tj +-424 TJm +(internal) 30.4357 Tj +-425 TJm +(error) 19.3573 Tj +-424 TJm +(1007.) 22.4159 Tj +-834 TJm +(\(This) 21.031 Tj +-425 TJm +(is) 6.6451 Tj +-425 TJm +(a) 4.4234 Tj +-424 TJm +(frequently-observ) 70.8241 Tj +15 TJm +(ed-phenomenon) 64.189 Tj +-425 TJm +(with) 17.7135 Tj +-425 TJm +(v) 4.9813 Tj +15 TJm +(ersions) 28.224 Tj +72 314.848 Td +(1.0.0/1.0.1\).) 48.4282 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 292.995 Td +/F124_0 9.9626 Tf +(exit\(3\)) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +116.334 292.995 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-250 TJm +(then) 17.1556 Tj +-250 TJm +(called.) 26.2813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 271.142 Td +(F) 5.5392 Tj +15 TJm +(or) 8.2988 Tj +-250 TJm +(a) 4.4234 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +95.093 271.142 Td +/F124_0 9.9626 Tf +(stdio) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +124.981 271.142 Td +/F122_0 9.9626 Tf +(-free) 18.7994 Tj +-250 TJm +(library) 26.5603 Tj +65 TJm +(,) 2.4907 Tj +-250 TJm +(assertion) 35.417 Tj +-250 TJm +(f) 3.3175 Tj +10 TJm +(ailures) 26.5603 Tj +-250 TJm +(result) 22.1369 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(call) 14.386 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(function) 33.2053 Tj +-250 TJm +(declared) 33.7433 Tj +-250 TJm +(as:) 11.0684 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 244.078] cm +0 0 468 23.91 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 259.62 Td +/F124_0 9.9626 Tf +(extern) 35.8654 Tj +-426 TJm +(void) 23.9102 Tj +-426 TJm +(bz_internal_error) 101.6185 Tj +-426 TJm +(\() 5.9776 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(errcode) 41.8429 Tj +-426 TJm +(\);) 11.9551 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 222.225 Td +/F122_0 9.9626 Tf +(The) 15.4918 Tj +-250 TJm +(rele) 14.9339 Tj +25 TJm +(v) 4.9813 Tj +25 TJm +(ant) 12.1743 Tj +-250 TJm +(code) 18.8094 Tj +-250 TJm +(is) 6.6451 Tj +-250 TJm +(passed) 26.5603 Tj +-250 TJm +(as) 8.2988 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(parameter) 39.8305 Tj +55 TJm +(.) 2.4907 Tj +-620 TJm +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-250 TJm +(should) 26.5703 Tj +-250 TJm +(supply) 26.5703 Tj +-250 TJm +(such) 18.2614 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(function.) 35.696 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 200.372 Td +(In) 8.2988 Tj +-294 TJm +(either) 22.6848 Tj +-294 TJm +(case,) 19.6363 Tj +-306 TJm +(once) 18.8094 Tj +-294 TJm +(an) 9.4047 Tj +-294 TJm +(assertion) 35.417 Tj +-294 TJm +(f) 3.3175 Tj +10 TJm +(ailure) 22.6848 Tj +-294 TJm +(has) 13.2801 Tj +-295 TJm +(occurred,) 37.3398 Tj +-305 TJm +(an) 9.4047 Tj +15 TJm +(y) 4.9813 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +306.541 200.372 Td +/F124_0 9.9626 Tf +(bz_stream) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +363.271 200.372 Td +/F122_0 9.9626 Tf +(records) 29.3199 Tj +-294 TJm +(in) 7.7509 Tj +40 TJm +(v) 4.9813 Tj +20 TJm +(olv) 12.7322 Tj +15 TJm +(ed) 9.4047 Tj +-294 TJm +(can) 13.8281 Tj +-295 TJm +(be) 9.4047 Tj +-294 TJm +(re) 7.7409 Tj +15 TJm +(g) 4.9813 Tj +5 TJm +(arded) 22.1269 Tj +-294 TJm +(as) 8.2988 Tj +-294 TJm +(in) 7.7509 Tj +40 TJm +(v) 4.9813 Tj +25 TJm +(alid.) 17.4346 Tj +72 188.417 Td +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-250 TJm +(should) 26.5703 Tj +-250 TJm +(not) 12.7322 Tj +-250 TJm +(attempt) 29.8878 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(resume) 28.772 Tj +-250 TJm +(normal) 28.224 Tj +-250 TJm +(operation) 37.6287 Tj +-250 TJm +(with) 17.7135 Tj +-250 TJm +(them.) 22.4159 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 166.564 Td +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-299 TJm +(may) 17.1556 Tj +65 TJm +(,) 2.4907 Tj +-310 TJm +(of) 8.2988 Tj +-299 TJm +(course,) 28.493 Tj +-311 TJm +(change) 28.2141 Tj +-298 TJm +(critical) 27.6661 Tj +-299 TJm +(error) 19.3573 Tj +-298 TJm +(handling) 34.8691 Tj +-299 TJm +(to) 7.7509 Tj +-298 TJm +(suit) 14.396 Tj +-299 TJm +(your) 18.2614 Tj +-298 TJm +(needs.) 25.1755 Tj +-912 TJm +(As) 11.0684 Tj +-298 TJm +(I) 3.3175 Tj +-299 TJm +(said) 16.0497 Tj +-298 TJm +(abo) 14.386 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e,) 6.914 Tj +-311 TJm +(critical) 27.6661 Tj +-299 TJm +(errors) 23.2328 Tj +-298 TJm +(indicate) 31.5416 Tj +-299 TJm +(b) 4.9813 Tj +20 TJm +(ugs) 13.8381 Tj +72 154.609 Td +(in) 7.7509 Tj +-263 TJm +(the) 12.1743 Tj +-263 TJm +(library) 26.5603 Tj +-263 TJm +(and) 14.386 Tj +-263 TJm +(should) 26.5703 Tj +-263 TJm +(not) 12.7322 Tj +-263 TJm +(occur) 22.1269 Tj +55 TJm +(.) 2.4907 Tj +-697 TJm +(All) 12.7322 Tj +-263 TJm +("normal") 36.3535 Tj +-263 TJm +(error) 19.3573 Tj +-263 TJm +(situations) 38.1966 Tj +-263 TJm +(are) 12.1643 Tj +-263 TJm +(indicated) 36.5229 Tj +-263 TJm +(via) 12.1743 Tj +-263 TJm +(error) 19.3573 Tj +-263 TJm +(return) 23.7907 Tj +-263 TJm +(codes) 22.6848 Tj +-263 TJm +(from) 19.3673 Tj +-263 TJm +(functions,) 39.5714 Tj +72 142.653 Td +(and) 14.386 Tj +-250 TJm +(can) 13.8281 Tj +-250 TJm +(be) 9.4047 Tj +-250 TJm +(reco) 17.1456 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(ered) 17.1456 Tj +-250 TJm +(from.) 21.8579 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 107.965 Td +/F116_0 20.6585 Tf +(3.8.) 34.4584 Tj +-278 TJm +(Making) 71.1685 Tj +-278 TJm +(a) 11.4861 Tj +-278 TJm +(Windo) 63.1117 Tj +15 TJm +(ws) 27.5584 Tj +-278 TJm +(DLL) 40.1601 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 86.112 Td +/F122_0 9.9626 Tf +(Ev) 11.0684 Tj +15 TJm +(erything) 33.2053 Tj +-328 TJm +(related) 27.1082 Tj +-327 TJm +(to) 7.7509 Tj +-328 TJm +(W) 9.4047 Tj +40 TJm +(indo) 17.7135 Tj +25 TJm +(ws) 11.0684 Tj +-328 TJm +(has) 13.2801 Tj +-327 TJm +(been) 18.8094 Tj +-328 TJm +(contrib) 28.224 Tj +20 TJm +(uted) 17.1556 Tj +-328 TJm +(by) 9.9626 Tj +-327 TJm +(Y) 7.193 Tj +110 TJm +(oshioka) 30.9936 Tj +-328 TJm +(Tsuneo) 29.3299 Tj +-328 TJm +(\() 3.3175 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +378.139 86.112 Td +/F124_0 9.9626 Tf +(tsuneo@rr.iij4u.or.jp) 125.5288 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +503.668 86.112 Td +/F122_0 9.9626 Tf +(\),) 5.8082 Tj +-347 TJm +(so) 8.8568 Tj +-328 TJm +(you) 14.9439 Tj +72 74.157 Td +(should) 26.5703 Tj +-250 TJm +(send) 18.2614 Tj +-250 TJm +(your) 18.2614 Tj +-250 TJm +(queries) 28.772 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(him) 15.5018 Tj +-250 TJm +(\(b) 8.2988 Tj +20 TJm +(ut) 7.7509 Tj +-250 TJm +(perhaps) 30.9837 Tj +-250 TJm +(Cc:) 13.8381 Tj +-310 TJm +(me,) 14.6649 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +287.958 74.157 Td +/F124_0 9.9626 Tf +(jseward@bzip.org) 95.641 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +383.6 74.157 Td +/F122_0 9.9626 Tf +(\).) 5.8082 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +534.414 51.071 Td +(29) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 30 33 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F122_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +496.556 749.245 Td +/F124_0 9.9626 Tf +(libbzip2) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +72 710.037 Td +/F122_0 9.9626 Tf +(My) 13.8381 Tj +-367 TJm +(v) 4.9813 Tj +25 TJm +(ague) 18.8094 Tj +-367 TJm +(understanding) 56.4481 Tj +-367 TJm +(of) 8.2988 Tj +-367 TJm +(what) 19.3673 Tj +-368 TJm +(to) 7.7509 Tj +-367 TJm +(do) 9.9626 Tj +-367 TJm +(is:) 9.4147 Tj +-544 TJm +(using) 21.589 Tj +-367 TJm +(V) 7.193 Tj +60 TJm +(isual) 18.8194 Tj +-367 TJm +(C++) 17.8829 Tj +-367 TJm +(5.0,) 14.9439 Tj +-397 TJm +(open) 19.3673 Tj +-367 TJm +(the) 12.1743 Tj +-367 TJm +(project) 27.6661 Tj +-367 TJm +(\002le) 12.7322 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +432.966 710.037 Td +/F124_0 9.9626 Tf +(libbz2.dsp) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +492.742 710.037 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-396 TJm +(and) 14.386 Tj +-368 TJm +(b) 4.9813 Tj +20 TJm +(uild.) 17.9925 Tj +72 698.082 Td +(That') 21.579 Tj +55 TJm +(s) 3.8755 Tj +-250 TJm +(all.) 12.4533 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 676.164 Td +(If) 6.6351 Tj +-284 TJm +(you) 14.9439 Tj +-284 TJm +(can') 17.1456 Tj +18 TJm +(t) 2.7696 Tj +-285 TJm +(open) 19.3673 Tj +-284 TJm +(the) 12.1743 Tj +-284 TJm +(project) 27.6661 Tj +-284 TJm +(\002le) 12.7322 Tj +-284 TJm +(for) 11.6164 Tj +-285 TJm +(some) 21.031 Tj +-284 TJm +(reason,) 28.493 Tj +-293 TJm +(mak) 17.1556 Tj +10 TJm +(e) 4.4234 Tj +-284 TJm +(a) 4.4234 Tj +-284 TJm +(ne) 9.4047 Tj +25 TJm +(w) 7.193 Tj +-284 TJm +(one,) 16.8766 Tj +-293 TJm +(naming) 29.8878 Tj +-284 TJm +(these) 20.4731 Tj +-284 TJm +(\002les:) 19.3773 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +424.505 676.164 Td +/F124_0 9.9626 Tf +(blocksort.c) 65.7532 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +490.259 676.164 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +495.666 676.164 Td +/F124_0 9.9626 Tf +(bzlib.c) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +537.509 676.164 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 664.209 Td +/F124_0 9.9626 Tf +(compress.c) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +131.776 664.209 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +136.436 664.209 Td +/F124_0 9.9626 Tf +(crctable.c) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +196.211 664.209 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +200.871 664.209 Td +/F124_0 9.9626 Tf +(decompress.c) 71.7307 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +272.602 664.209 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +277.262 664.209 Td +/F124_0 9.9626 Tf +(huffman.c) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +331.06 664.209 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +335.72 664.209 Td +/F124_0 9.9626 Tf +(randtable.c) 65.7532 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +403.562 664.209 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +420.037 664.209 Td +/F124_0 9.9626 Tf +(libbz2.def) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +479.812 664.209 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +-593 TJm +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-210 TJm +(will) 15.5018 Tj +-209 TJm +(also) 16.0497 Tj +72 652.254 Td +(need) 18.8094 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(name) 21.579 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(header) 26.5503 Tj +-250 TJm +(\002les) 16.6077 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +190.415 652.254 Td +/F124_0 9.9626 Tf +(bzlib.h) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +234.749 652.254 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +251.625 652.254 Td +/F124_0 9.9626 Tf +(bzlib_private.h) 89.6634 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +341.289 652.254 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 630.336 Td +(If) 6.6351 Tj +-250 TJm +(you) 14.9439 Tj +-250 TJm +(don') 18.2614 Tj +18 TJm +(t) 2.7696 Tj +-250 TJm +(use) 13.2801 Tj +-250 TJm +(VC++,) 27.5665 Tj +-250 TJm +(you) 14.9439 Tj +-250 TJm +(may) 17.1556 Tj +-250 TJm +(need) 18.8094 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(de\002ne) 24.3486 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(proprocessor) 51.4568 Tj +-250 TJm +(symbol) 29.3399 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +363.634 630.336 Td +/F124_0 9.9626 Tf +(_WIN32) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +399.5 630.336 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 608.418 Td +(Finally) 28.234 Tj +65 TJm +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +104.568 608.418 Td +/F124_0 9.9626 Tf +(dlltest.c) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +160.856 608.418 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(sample) 28.224 Tj +-250 TJm +(program) 33.7533 Tj +-250 TJm +(using) 21.589 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(DLL.) 21.8579 Tj +-500 TJm +(It) 6.0871 Tj +-250 TJm +(has) 13.2801 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(project) 27.6661 Tj +-250 TJm +(\002le,) 15.2229 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +388.58 608.418 Td +/F124_0 9.9626 Tf +(dlltest.dsp) 65.7532 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +454.334 608.418 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 586.501 Td +(If) 6.6351 Tj +-250 TJm +(you) 14.9439 Tj +-250 TJm +(just) 14.396 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(ant) 12.1743 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(mak) 17.1556 Tj +10 TJm +(e\002le) 17.1556 Tj +-250 TJm +(for) 11.6164 Tj +-250 TJm +(V) 7.193 Tj +60 TJm +(isual) 18.8194 Tj +-250 TJm +(C,) 9.1357 Tj +-250 TJm +(ha) 9.4047 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(look) 17.7135 Tj +-250 TJm +(at) 7.193 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +292.212 586.501 Td +/F124_0 9.9626 Tf +(makefile.msc) 71.7307 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +363.943 586.501 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 564.583 Td +(Be) 11.0684 Tj +-291 TJm +(a) 4.4234 Tj +15 TJm +(w) 7.193 Tj +10 TJm +(are) 12.1643 Tj +-291 TJm +(that) 14.9439 Tj +-291 TJm +(if) 6.0871 Tj +-291 TJm +(you) 14.9439 Tj +-291 TJm +(compile) 32.0995 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +192.07 564.583 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +224.857 564.583 Td +/F122_0 9.9626 Tf +(itself) 19.9252 Tj +-291 TJm +(on) 9.9626 Tj +-291 TJm +(W) 9.4047 Tj +40 TJm +(in32,) 20.2042 Tj +-301 TJm +(you) 14.9439 Tj +-291 TJm +(must) 19.3773 Tj +-291 TJm +(set) 11.0684 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +346.842 564.583 Td +/F124_0 9.9626 Tf +(BZ_UNIX) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +391.584 564.583 Td +/F122_0 9.9626 Tf +(to) 7.7509 Tj +-291 TJm +(0) 4.9813 Tj +-291 TJm +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +427.4 564.583 Td +/F124_0 9.9626 Tf +(BZ_LCCWIN32) 65.7532 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +496.052 564.583 Td +/F122_0 9.9626 Tf +(to) 7.7509 Tj +-291 TJm +(1,) 7.472 Tj +-301 TJm +(in) 7.7509 Tj +-291 TJm +(the) 12.1743 Tj +72 552.628 Td +(\002le) 12.7322 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +87.223 552.628 Td +/F124_0 9.9626 Tf +(bzip2.c) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +129.066 552.628 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-250 TJm +(before) 25.4445 Tj +-250 TJm +(compiling.) 42.899 Tj +-310 TJm +(Otherwise) 40.9463 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(resulting) 34.8691 Tj +-250 TJm +(binary) 25.4544 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(on') 13.2801 Tj +18 TJm +(t) 2.7696 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(ork) 13.2801 Tj +-250 TJm +(correctly) 35.4071 Tj +65 TJm +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 530.71 Td +(I) 3.3175 Tj +-250 TJm +(ha) 9.4047 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(en') 12.7222 Tj +18 TJm +(t) 2.7696 Tj +-250 TJm +(tried) 18.2614 Tj +-250 TJm +(an) 9.4047 Tj +15 TJm +(y) 4.9813 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(this) 14.396 Tj +-250 TJm +(stuf) 14.9439 Tj +25 TJm +(f) 3.3175 Tj +-250 TJm +(myself,) 29.6088 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-250 TJm +(it) 5.5392 Tj +-250 TJm +(all) 9.9626 Tj +-250 TJm +(looks) 21.589 Tj +-250 TJm +(plausible.) 38.4656 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +534.414 50.951 Td +(30) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 31 34 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +72 701.916 Td +/F116_0 24.7902 Tf +(4.) 20.675 Tj +-278 TJm +(Miscellanea) 139.1722 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 656.35 Td +/F116_0 17.2154 Tf +(T) 10.5186 Tj +80 TJm +(ab) 20.0904 Tj +10 TJm +(le) 14.3576 Tj +-278 TJm +(of) 16.2513 Tj +-278 TJm +(Contents) 74.5943 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 635.788 Td +/F122_0 9.9626 Tf +(4.1.) 14.9439 Tj +-310 TJm +(Limitations) 45.9475 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(compressed) 47.0334 Tj +-250 TJm +(\002le) 12.7322 Tj +-250 TJm +(format) 26.5603 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +269.154 635.788 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 635.788 Td +/F122_0 9.9626 Tf +(31) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 623.832 Td +(4.2.) 14.9439 Tj +-310 TJm +(Portability) 42.0721 Tj +-250 TJm +(issues) 23.8007 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +172.03 623.832 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 623.832 Td +/F122_0 9.9626 Tf +(32) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 611.877 Td +(4.3.) 14.9439 Tj +-310 TJm +(Reporting) 39.8504 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(ugs) 13.8381 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +166.115 611.877 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 611.877 Td +/F122_0 9.9626 Tf +(32) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 599.922 Td +(4.4.) 14.9439 Tj +-310 TJm +(Did) 14.9439 Tj +-250 TJm +(you) 14.9439 Tj +-250 TJm +(get) 12.1743 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(right) 18.8194 Tj +-250 TJm +(package?) 37.0609 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +229.109 599.922 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 599.922 Td +/F122_0 9.9626 Tf +(33) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 587.967 Td +(4.5.) 14.9439 Tj +-310 TJm +(Further) 29.3299 Tj +-250 TJm +(Reading) 33.2053 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +170.361 587.967 Td +/F230_0 9.9626 Tf +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-166 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +-167 TJm +(:) 2.7676 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +506.127 587.967 Td +/F122_0 9.9626 Tf +(34) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 556.086 Td +(These) 23.7907 Tj +-250 TJm +(are) 12.1643 Tj +-250 TJm +(just) 14.396 Tj +-250 TJm +(some) 21.031 Tj +-250 TJm +(random) 30.4357 Tj +-250 TJm +(thoughts) 34.3212 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(mine.) 22.4159 Tj +-620 TJm +(Y) 7.193 Tj +110 TJm +(our) 13.2801 Tj +-250 TJm +(mileage) 31.5416 Tj +-250 TJm +(may) 17.1556 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(ary) 12.7222 Tj +65 TJm +(.) 2.4907 Tj +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 521.334 Td +/F116_0 20.6585 Tf +(4.1.) 34.4584 Tj +-278 TJm +(Limitations) 110.1924 Tj +-278 TJm +(of) 19.5016 Tj +-278 TJm +(the) 30.9878 Tj +-278 TJm +(compressed) 121.6992 Tj +-278 TJm +(\002le) 29.8515 Tj +-278 TJm +(f) 6.8793 Tj +20 TJm +(ormat) 57.3893 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 499.416 Td +/F124_0 9.9626 Tf +(bzip2-1.0.X) 65.7532 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +137.753 499.416 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +143.405 499.416 Td +/F124_0 9.9626 Tf +(0.9.5) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +176.453 499.416 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +194 499.416 Td +/F124_0 9.9626 Tf +(0.9.0) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +227.048 499.416 Td +/F122_0 9.9626 Tf +(use) 13.2801 Tj +-317 TJm +(e) 4.4234 Tj +15 TJm +(xactly) 24.3486 Tj +-318 TJm +(the) 12.1743 Tj +-317 TJm +(same) 20.4731 Tj +-317 TJm +(\002le) 12.7322 Tj +-317 TJm +(format) 26.5603 Tj +-317 TJm +(as) 8.2988 Tj +-318 TJm +(the) 12.1743 Tj +-317 TJm +(original) 30.9936 Tj +-317 TJm +(v) 4.9813 Tj +15 TJm +(ersion,) 26.8392 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +455.801 499.416 Td +/F124_0 9.9626 Tf +(bzip2-0.1) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +509.599 499.416 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +-1024 TJm +(This) 17.7135 Tj +72 487.461 Td +(decision) 33.2053 Tj +-222 TJm +(w) 7.193 Tj +10 TJm +(as) 8.2988 Tj +-222 TJm +(made) 21.579 Tj +-222 TJm +(in) 7.7509 Tj +-221 TJm +(the) 12.1743 Tj +-222 TJm +(interests) 33.2053 Tj +-222 TJm +(of) 8.2988 Tj +-222 TJm +(stability) 32.1095 Tj +65 TJm +(.) 2.4907 Tj +-601 TJm +(Creating) 34.3112 Tj +-222 TJm +(yet) 12.1743 Tj +-222 TJm +(another) 29.8778 Tj +-222 TJm +(incompatible) 52.0247 Tj +-221 TJm +(compressed) 47.0334 Tj +-222 TJm +(\002le) 12.7322 Tj +-222 TJm +(format) 26.5603 Tj +-222 TJm +(w) 7.193 Tj +10 TJm +(ould) 17.7135 Tj +-222 TJm +(create) 23.7807 Tj +72 475.505 Td +(further) 27.1082 Tj +-250 TJm +(confusion) 39.2925 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(disruption) 40.4083 Tj +-250 TJm +(for) 11.6164 Tj +-250 TJm +(users.) 22.9638 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 453.588 Td +(Ne) 11.6164 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ertheless,) 37.3498 Tj +-234 TJm +(this) 14.396 Tj +-229 TJm +(is) 6.6451 Tj +-230 TJm +(not) 12.7322 Tj +-229 TJm +(a) 4.4234 Tj +-230 TJm +(painless) 32.0995 Tj +-229 TJm +(decision.) 35.696 Tj +-606 TJm +(De) 11.6164 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(elopment) 37.0808 Tj +-230 TJm +(w) 7.193 Tj +10 TJm +(ork) 13.2801 Tj +-230 TJm +(sinc) 16.0497 Tj +1 TJm +(e) 4.4234 Tj +-230 TJm +(the) 12.1743 Tj +-230 TJm +(release) 27.6562 Tj +-229 TJm +(of) 8.2988 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +407.317 453.588 Td +/F124_0 9.9626 Tf +(bzip2-0.1) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +463.402 453.588 Td +/F122_0 9.9626 Tf +(in) 7.7509 Tj +-230 TJm +(August) 28.782 Tj +-229 TJm +(1997) 19.9252 Tj +-230 TJm +(has) 13.2801 Tj +72 441.632 Td +(sho) 13.8381 Tj +25 TJm +(wn) 12.1743 Tj +-226 TJm +(comple) 29.3299 Tj +15 TJm +(xities) 21.589 Tj +-226 TJm +(in) 7.7509 Tj +-225 TJm +(the) 12.1743 Tj +-226 TJm +(\002le) 12.7322 Tj +-226 TJm +(format) 26.5603 Tj +-226 TJm +(which) 24.3486 Tj +-226 TJm +(slo) 11.6264 Tj +25 TJm +(w) 7.193 Tj +-225 TJm +(do) 9.9626 Tj +25 TJm +(wn) 12.1743 Tj +-226 TJm +(decompression) 59.7656 Tj +-226 TJm +(and,) 16.8766 Tj +-231 TJm +(in) 7.7509 Tj +-226 TJm +(retrospect,) 41.7732 Tj +-230 TJm +(are) 12.1643 Tj +-226 TJm +(unnecessary) 48.6872 Tj +65 TJm +(.) 2.4907 Tj +-604 TJm +(These) 23.7907 Tj +-226 TJm +(are:) 14.9339 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +74.491 409.752 Td +(\225) 3.4869 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-450 TJm +(The) 15.4918 Tj +-287 TJm +(run-length) 41.5042 Tj +-287 TJm +(encoder) 31.5316 Tj +40 TJm +(,) 2.4907 Tj +-297 TJm +(which) 24.3486 Tj +-287 TJm +(is) 6.6451 Tj +-288 TJm +(the) 12.1743 Tj +-287 TJm +(\002rst) 15.5018 Tj +-287 TJm +(of) 8.2988 Tj +-287 TJm +(the) 12.1743 Tj +-288 TJm +(compression) 50.3609 Tj +-287 TJm +(transformations,) 65.0259 Tj +-296 TJm +(is) 6.6451 Tj +-288 TJm +(entirely) 30.4357 Tj +-287 TJm +(irrele) 21.0211 Tj +25 TJm +(v) 4.9813 Tj +25 TJm +(ant.) 14.6649 Tj +-843 TJm +(The) 15.4918 Tj +-288 TJm +(original) 30.9936 Tj +81.963 397.797 Td +(purpose) 31.5416 Tj +-322 TJm +(w) 7.193 Tj +10 TJm +(as) 8.2988 Tj +-322 TJm +(to) 7.7509 Tj +-322 TJm +(protect) 27.6661 Tj +-321 TJm +(the) 12.1743 Tj +-322 TJm +(sorting) 27.6761 Tj +-322 TJm +(algorithm) 38.7446 Tj +-322 TJm +(from) 19.3673 Tj +-322 TJm +(the) 12.1743 Tj +-322 TJm +(v) 4.9813 Tj +15 TJm +(ery) 12.7222 Tj +-322 TJm +(w) 7.193 Tj +10 TJm +(orst) 14.9439 Tj +-321 TJm +(case) 17.1456 Tj +-322 TJm +(input:) 23.2527 Tj +-454 TJm +(a) 4.4234 Tj +-322 TJm +(string) 22.6948 Tj +-322 TJm +(of) 8.2988 Tj +-322 TJm +(repeated) 33.7433 Tj +-321 TJm +(symbols.) 35.706 Tj +-1052 TJm +(But) 14.396 Tj +81.963 385.842 Td +(algorithm) 38.7446 Tj +-229 TJm +(steps) 19.9252 Tj +-230 TJm +(Q6a) 16.5977 Tj +-229 TJm +(and) 14.386 Tj +-230 TJm +(Q6b) 17.1556 Tj +-229 TJm +(in) 7.7509 Tj +-230 TJm +(t) 2.7696 Tj +1 TJm +(he) 9.4047 Tj +-230 TJm +(original) 30.9936 Tj +-229 TJm +(Burro) 23.2427 Tj +25 TJm +(ws-Wheeler) 48.1293 Tj +-230 TJm +(technical) 35.965 Tj +-229 TJm +(report) 23.7907 Tj +-230 TJm +(\(SRC-124\)) 43.7259 Tj +-229 TJm +(sho) 13.8381 Tj +25 TJm +(w) 7.193 Tj +-229 TJm +(ho) 9.9626 Tj +25 TJm +(w) 7.193 Tj +-230 TJm +(repeats) 28.2141 Tj +-229 TJm +(can) 13.8281 Tj +-230 TJm +(be) 9.4047 Tj +81.963 373.886 Td +(handled) 31.5416 Tj +-250 TJm +(without) 30.4457 Tj +-250 TJm +(dif) 11.0684 Tj +25 TJm +(\002culty) 25.4644 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(block) 22.1369 Tj +-250 TJm +(sorting.) 30.1668 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +74.491 351.969 Td +(\225) 3.4869 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-450 TJm +(The) 15.4918 Tj +-315 TJm +(randomisation) 57.006 Tj +-314 TJm +(mechanism) 45.3796 Tj +-315 TJm +(doesn') 26.5603 Tj +18 TJm +(t) 2.7696 Tj +-314 TJm +(really) 22.6848 Tj +-315 TJm +(need) 18.8094 Tj +-315 TJm +(to) 7.7509 Tj +-314 TJm +(be) 9.4047 Tj +-315 TJm +(there.) 22.4059 Tj +-1007 TJm +(Udi) 14.9439 Tj +-315 TJm +(Manber) 30.9837 Tj +-315 TJm +(and) 14.386 Tj +-314 TJm +(Gene) 21.0211 Tj +-315 TJm +(Myers) 25.4544 Tj +-314 TJm +(published) 38.7446 Tj +-315 TJm +(a) 4.4234 Tj +-315 TJm +(suf) 12.1743 Tj +25 TJm +(\002x) 10.5205 Tj +81.963 340.013 Td +(array) 20.4632 Tj +-266 TJm +(construction) 49.2551 Tj +-266 TJm +(algorithm) 38.7446 Tj +-266 TJm +(a) 4.4234 Tj +-266 TJm +(fe) 7.7409 Tj +25 TJm +(w) 7.193 Tj +-266 TJm +(years) 21.0211 Tj +-266 TJm +(back,) 21.3 Tj +-269 TJm +(which) 24.3486 Tj +-266 TJm +(can) 13.8281 Tj +-266 TJm +(be) 9.4047 Tj +-266 TJm +(emplo) 24.9065 Tj +10 TJm +(yed) 14.386 Tj +-266 TJm +(to) 7.7509 Tj +-266 TJm +(sort) 14.9439 Tj +-266 TJm +(an) 9.4047 Tj +15 TJm +(y) 4.9813 Tj +-266 TJm +(block,) 24.6275 Tj +-270 TJm +(no) 9.9626 Tj +-266 TJm +(matter) 25.4544 Tj +-266 TJm +(ho) 9.9626 Tj +25 TJm +(w) 7.193 Tj +-266 TJm +(repetiti) 28.224 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e,) 6.914 Tj +81.963 328.058 Td +(in) 7.7509 Tj +-257 TJm +(O\(N) 17.7035 Tj +-257 TJm +(log) 12.7322 Tj +-257 TJm +(N\)) 10.5105 Tj +-258 TJm +(time.) 20.2042 Tj +-663 TJm +(Subsequent) 45.9375 Tj +-257 TJm +(w) 7.193 Tj +10 TJm +(ork) 13.2801 Tj +-257 TJm +(by) 9.9626 Tj +-257 TJm +(K) 7.193 Tj +15 TJm +(unihik) 25.4644 Tj +10 TJm +(o) 4.9813 Tj +-257 TJm +(Sadakane) 38.1767 Tj +-258 TJm +(has) 13.2801 Tj +-257 TJm +(produced) 37.0708 Tj +-257 TJm +(a) 4.4234 Tj +-257 TJm +(deri) 15.4918 Tj +25 TJm +(v) 4.9813 Tj +25 TJm +(ati) 9.9626 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-257 TJm +(O\(N) 17.7035 Tj +-257 TJm +(\(log) 16.0497 Tj +-258 TJm +(N\)^2\)) 23.4818 Tj +-257 TJm +(algorithm) 38.7446 Tj +81.963 316.103 Td +(which) 24.3486 Tj +-250 TJm +(usually) 28.782 Tj +-250 TJm +(outperforms) 48.6972 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(Manber) 30.9837 Tj +20 TJm +(-Myers) 28.772 Tj +-250 TJm +(algorithm.) 41.2352 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +81.963 294.185 Td +(I) 3.3175 Tj +-274 TJm +(could) 22.1369 Tj +-274 TJm +(ha) 9.4047 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-274 TJm +(changed) 33.1954 Tj +-274 TJm +(to) 7.7509 Tj +-274 TJm +(Sadakane') 41.4942 Tj +55 TJm +(s) 3.8755 Tj +-274 TJm +(algorithm,) 41.2352 Tj +-280 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-274 TJm +(I) 3.3175 Tj +-274 TJm +(\002nd) 15.5018 Tj +-274 TJm +(it) 5.5392 Tj +-274 TJm +(to) 7.7509 Tj +-274 TJm +(be) 9.4047 Tj +-274 TJm +(slo) 11.6264 Tj +25 TJm +(wer) 14.9339 Tj +-274 TJm +(than) 17.1556 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +391.407 294.185 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +421.295 294.185 Td +/F122_0 9.9626 Tf +(') 3.3175 Tj +55 TJm +(s) 3.8755 Tj +-274 TJm +(e) 4.4234 Tj +15 TJm +(xisting) 27.1282 Tj +-274 TJm +(algorithm) 38.7446 Tj +-274 TJm +(for) 11.6164 Tj +-274 TJm +(most) 19.3773 Tj +81.963 282.23 Td +(inputs,) 26.8492 Tj +-399 TJm +(and) 14.386 Tj +-369 TJm +(the) 12.1743 Tj +-369 TJm +(randomisation) 57.006 Tj +-370 TJm +(me) 12.1743 Tj +1 TJm +(chanism) 33.2053 Tj +-370 TJm +(protects) 31.5416 Tj +-369 TJm +(adequately) 43.158 Tj +-369 TJm +(ag) 9.4047 Tj +5 TJm +(ainst) 18.8194 Tj +-369 TJm +(bad) 14.386 Tj +-369 TJm +(cases.) 23.5117 Tj +-1336 TJm +(I) 3.3175 Tj +-369 TJm +(didn') 21.031 Tj +18 TJm +(t) 2.7696 Tj +-369 TJm +(think) 20.4831 Tj +-369 TJm +(it) 5.5392 Tj +-369 TJm +(w) 7.193 Tj +10 TJm +(as) 8.2988 Tj +-369 TJm +(a) 4.4234 Tj +-370 TJm +(good) 19.9252 Tj +81.963 270.275 Td +(tradeof) 28.2141 Tj +25 TJm +(f) 3.3175 Tj +-282 TJm +(to) 7.7509 Tj +-283 TJm +(mak) 17.1556 Tj +10 TJm +(e.) 6.914 Tj +-815 TJm +(P) 5.5392 Tj +15 TJm +(artly) 18.2614 Tj +-282 TJm +(this) 14.396 Tj +-282 TJm +(is) 6.6451 Tj +-283 TJm +(due) 14.386 Tj +-282 TJm +(to) 7.7509 Tj +-283 TJm +(the) 12.1743 Tj +-282 TJm +(f) 3.3175 Tj +10 TJm +(act) 11.6164 Tj +-283 TJm +(that) 14.9439 Tj +-282 TJm +(I) 3.3175 Tj +-283 TJm +(w) 7.193 Tj +10 TJm +(as) 8.2988 Tj +-282 TJm +(not) 12.7322 Tj +-282 TJm +(\003ooded) 29.8878 Tj +-283 TJm +(with) 17.7135 Tj +-282 TJm +(email) 22.1369 Tj +-283 TJm +(complaints) 43.7259 Tj +-282 TJm +(about) 22.1369 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +479.557 270.275 Td +/F124_0 9.9626 Tf +(bzip2-0.1) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +533.355 270.275 Td +/F122_0 9.9626 Tf +(') 3.3175 Tj +55 TJm +(s) 3.8755 Tj +81.963 258.32 Td +(performance) 50.341 Tj +-250 TJm +(on) 9.9626 Tj +-250 TJm +(repetiti) 28.224 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-250 TJm +(data,) 19.0883 Tj +-250 TJm +(so) 8.8568 Tj +-250 TJm +(perhaps) 30.9837 Tj +-250 TJm +(it) 5.5392 Tj +-250 TJm +(isn') 14.9439 Tj +18 TJm +(t) 2.7696 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(problem) 33.2053 Tj +-250 TJm +(for) 11.6164 Tj +-250 TJm +(real) 14.9339 Tj +-250 TJm +(inputs.) 26.8492 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +81.963 236.402 Td +(Probably) 35.9749 Tj +-314 TJm +(the) 12.1743 Tj +-315 TJm +(best) 16.0497 Tj +-314 TJm +(long-term) 39.2925 Tj +-314 TJm +(solution,) 34.6001 Tj +-331 TJm +(and) 14.386 Tj +-314 TJm +(the) 12.1743 Tj +-314 TJm +(one) 14.386 Tj +-315 TJm +(I) 3.3175 Tj +-314 TJm +(ha) 9.4047 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-314 TJm +(incorporated) 50.351 Tj +-315 TJm +(into) 15.5018 Tj +-314 TJm +(0.9.5) 19.9252 Tj +-314 TJm +(and) 14.386 Tj +-315 TJm +(abo) 14.386 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e,) 6.914 Tj +-330 TJm +(is) 6.6451 Tj +-315 TJm +(to) 7.7509 Tj +-314 TJm +(use) 13.2801 Tj +-314 TJm +(the) 12.1743 Tj +-315 TJm +(e) 4.4234 Tj +15 TJm +(xisting) 27.1282 Tj +81.963 224.447 Td +(sorting) 27.6761 Tj +-206 TJm +(algorithm) 38.7446 Tj +-206 TJm +(initially) 31.0036 Tj +65 TJm +(,) 2.4907 Tj +-215 TJm +(and) 14.386 Tj +-207 TJm +(f) 3.3175 Tj +10 TJm +(all) 9.9626 Tj +-206 TJm +(back) 18.8094 Tj +-206 TJm +(to) 7.7509 Tj +-206 TJm +(a) 4.4234 Tj +-207 TJm +(O\(N) 17.7035 Tj +-206 TJm +(\(log) 16.0497 Tj +-206 TJm +(N\)^2\)) 23.4818 Tj +-206 TJm +(algorithm) 38.7446 Tj +-206 TJm +(if) 6.0871 Tj +-207 TJm +(the) 12.1743 Tj +-206 TJm +(standard) 33.7533 Tj +-206 TJm +(algorithm) 38.7446 Tj +-206 TJm +(gets) 16.0497 Tj +-206 TJm +(into) 15.5018 Tj +-207 TJm +(dif) 11.0684 Tj +25 TJm +(\002culties.) 34.0422 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +74.491 202.529 Td +(\225) 3.4869 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-450 TJm +(The) 15.4918 Tj +-321 TJm +(compressed) 47.0334 Tj +-322 TJm +(\002le) 12.7322 Tj +-321 TJm +(format) 26.5603 Tj +-321 TJm +(w) 7.193 Tj +10 TJm +(as) 8.2988 Tj +-322 TJm +(ne) 9.4047 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(er) 7.7409 Tj +-321 TJm +(designed) 35.417 Tj +-321 TJm +(to) 7.7509 Tj +-322 TJm +(be) 9.4047 Tj +-321 TJm +(handled) 31.5416 Tj +-321 TJm +(by) 9.9626 Tj +-322 TJm +(a) 4.4234 Tj +-321 TJm +(library) 26.5603 Tj +65 TJm +(,) 2.4907 Tj +-339 TJm +(and) 14.386 Tj +-322 TJm +(I) 3.3175 Tj +-321 TJm +(ha) 9.4047 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-321 TJm +(had) 14.386 Tj +-322 TJm +(to) 7.7509 Tj +-321 TJm +(jump) 20.4831 Tj +-321 TJm +(though) 27.6761 Tj +-322 TJm +(some) 21.031 Tj +81.963 190.574 Td +(hoops) 23.8007 Tj +-299 TJm +(t) 2.7696 Tj +1 TJm +(o) 4.9813 Tj +-299 TJm +(produce) 32.0895 Tj +-299 TJm +(an) 9.4047 Tj +-298 TJm +(ef) 7.7409 Tj +25 TJm +(\002cient) 24.9065 Tj +-299 TJm +(implementation) 62.5452 Tj +-298 TJm +(of) 8.2988 Tj +-299 TJm +(decompression.) 62.2563 Tj +-911 TJm +(It') 9.4047 Tj +55 TJm +(s) 3.8755 Tj +-298 TJm +(a) 4.4234 Tj +-299 TJm +(bit) 10.5205 Tj +-298 TJm +(hairy) 20.4731 Tj +65 TJm +(.) 2.4907 Tj +-912 TJm +(T) 6.0871 Tj +35 TJm +(ry) 8.2988 Tj +-298 TJm +(passing) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +468.269 190.574 Td +/F124_0 9.9626 Tf +(decompress.c) 71.7307 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +81.963 178.619 Td +/F122_0 9.9626 Tf +(through) 30.9936 Tj +-289 TJm +(the) 12.1743 Tj +-289 TJm +(C) 6.6451 Tj +-289 TJm +(preprocessor) 50.8989 Tj +-289 TJm +(and) 14.386 Tj +-289 TJm +(you') 18.2614 Tj +10 TJm +(ll) 5.5392 Tj +-289 TJm +(see) 12.7222 Tj +-289 TJm +(what) 19.3673 Tj +-289 TJm +(I) 3.3175 Tj +-289 TJm +(mean.) 24.0696 Tj +-854 TJm +(Much) 23.2427 Tj +-289 TJm +(of) 8.2988 Tj +-289 TJm +(this) 14.396 Tj +-289 TJm +(comple) 29.3299 Tj +15 TJm +(xity) 15.5018 Tj +-289 TJm +(could) 22.1369 Tj +-289 TJm +(ha) 9.4047 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-289 TJm +(been) 18.8094 Tj +-289 TJm +(a) 4.4234 Tj +20 TJm +(v) 4.9813 Tj +20 TJm +(oided) 22.1369 Tj +-289 TJm +(if) 6.0871 Tj +-289 TJm +(the) 12.1743 Tj +81.963 166.663 Td +(compressed) 47.0334 Tj +-250 TJm +(size) 15.4918 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(each) 18.2515 Tj +-250 TJm +(block) 22.1369 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(data) 16.5977 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(as) 8.2988 Tj +-250 TJm +(recorded) 34.8492 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(data) 16.5977 Tj +-250 TJm +(stream.) 29.0509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +74.491 144.746 Td +(\225) 3.4869 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-450 TJm +(An) 12.1743 Tj +-250 TJm +(Adler) 22.6848 Tj +20 TJm +(-32) 13.2801 Tj +-250 TJm +(checksum,) 42.3311 Tj +-250 TJm +(rather) 23.2328 Tj +-250 TJm +(than) 17.1556 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(CRC32) 29.8978 Tj +-250 TJm +(checksum,) 42.3311 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(ould) 17.7135 Tj +-250 TJm +(be) 9.4047 Tj +-250 TJm +(f) 3.3175 Tj +10 TJm +(aster) 18.8094 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(compute.) 36.8018 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 122.828 Td +(It) 6.0871 Tj +-349 TJm +(w) 7.193 Tj +10 TJm +(ould) 17.7135 Tj +-349 TJm +(be) 9.4047 Tj +-349 TJm +(f) 3.3175 Tj +10 TJm +(air) 10.5105 Tj +-348 TJm +(to) 7.7509 Tj +-349 TJm +(say) 13.2801 Tj +-349 TJm +(that) 14.9439 Tj +-349 TJm +(the) 12.1743 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +201.979 122.828 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +235.342 122.828 Td +/F122_0 9.9626 Tf +(format) 26.5603 Tj +-349 TJm +(w) 7.193 Tj +10 TJm +(as) 8.2988 Tj +-349 TJm +(frozen) 25.4445 Tj +-348 TJm +(before) 25.4445 Tj +-349 TJm +(I) 3.3175 Tj +-349 TJm +(properly) 33.7533 Tj +-349 TJm +(and) 14.386 Tj +-349 TJm +(fully) 18.8194 Tj +-349 TJm +(understood) 44.2738 Tj +-348 TJm +(the) 12.1743 Tj +-349 TJm +(performance) 50.341 Tj +72 110.873 Td +(consequences) 54.7744 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(doing) 22.6948 Tj +-250 TJm +(so.) 11.3474 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 88.955 Td +(Impro) 24.3486 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(ements) 28.224 Tj +-250 TJm +(which) 24.3486 Tj +-250 TJm +(I) 3.3175 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(as) 8.2988 Tj +-250 TJm +(able) 16.5977 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(incorporate) 45.3697 Tj +-250 TJm +(into) 15.5018 Tj +-250 TJm +(0.9.0,) 22.4159 Tj +-250 TJm +(despite) 28.224 Tj +-250 TJm +(using) 21.589 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(same) 20.4731 Tj +-250 TJm +(\002le) 12.7322 Tj +-250 TJm +(format,) 29.0509 Tj +-250 TJm +(are:) 14.9339 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +534.414 50.951 Td +(31) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 32 35 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +498.728 749.245 Td +/F122_0 9.9626 Tf +(Miscellanea) 48.1393 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +74.491 710.037 Td +/F122_0 9.9626 Tf +(\225) 3.4869 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-450 TJm +(Single) 25.4644 Tj +-234 TJm +(array) 20.4632 Tj +-234 TJm +(implementation) 62.5452 Tj +-235 TJm +(of) 8.2988 Tj +-234 TJm +(the) 12.1743 Tj +-234 TJm +(in) 7.7509 Tj +40 TJm +(v) 4.9813 Tj +15 TJm +(erse) 16.0398 Tj +-234 TJm +(BWT) 22.1369 Tj +74 TJm +(.) 2.4907 Tj +-469 TJm +(This) 17.7135 Tj +-234 TJm +(signi\002cantly) 49.2651 Tj +-235 TJm +(speeds) 26.5603 Tj +-234 TJm +(up) 9.9626 Tj +-234 TJm +(decompression,) 62.2563 Tj +-237 TJm +(presumably) 46.4855 Tj +-235 TJm +(because) 31.5316 Tj +81.963 698.082 Td +(it) 5.5392 Tj +-250 TJm +(reduces) 30.4258 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(number) 30.4357 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(cache) 22.6749 Tj +-250 TJm +(misses.) 29.0609 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +74.491 676.164 Td +(\225) 3.4869 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-450 TJm +(F) 5.5392 Tj +15 TJm +(aster) 18.8094 Tj +-338 TJm +(in) 7.7509 Tj +40 TJm +(v) 4.9813 Tj +15 TJm +(erse) 16.0398 Tj +-338 TJm +(MTF) 20.4831 Tj +-338 TJm +(transform) 38.7346 Tj +-338 TJm +(for) 11.6164 Tj +-339 TJm +(lar) 10.5105 Tj +18 TJm +(ge) 9.4047 Tj +-338 TJm +(MTF) 20.4831 Tj +-338 TJm +(v) 4.9813 Tj +25 TJm +(alues.) 22.9638 Tj +-574 TJm +(The) 15.4918 Tj +-338 TJm +(ne) 9.4047 Tj +25 TJm +(w) 7.193 Tj +-339 TJm +(implementation) 62.5452 Tj +-338 TJm +(is) 6.6451 Tj +-338 TJm +(based) 22.6848 Tj +-338 TJm +(on) 9.9626 Tj +-338 TJm +(the) 12.1743 Tj +-338 TJm +(notion) 25.4644 Tj +-339 TJm +(of) 8.2988 Tj +-338 TJm +(sliding) 27.1282 Tj +81.963 664.209 Td +(blocks) 26.0123 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alues.) 22.9638 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +74.491 642.291 Td +(\225) 3.4869 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +82.461 642.291 Td +/F124_0 9.9626 Tf +(bzip2-0.9.0) 65.7532 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +151.137 642.291 Td +/F122_0 9.9626 Tf +(no) 9.9626 Tj +25 TJm +(w) 7.193 Tj +-293 TJm +(reads) 21.0211 Tj +-294 TJm +(and) 14.386 Tj +-293 TJm +(writes) 24.3486 Tj +-293 TJm +(\002les) 16.6077 Tj +-294 TJm +(with) 17.7135 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +279.657 642.291 Td +/F124_0 9.9626 Tf +(fread) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +312.467 642.291 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +329.776 642.291 Td +/F124_0 9.9626 Tf +(fwrite) 35.8654 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +365.642 642.291 Td +/F122_0 9.9626 Tf +(;) 2.7696 Tj +-315 TJm +(v) 4.9813 Tj +15 TJm +(ersion) 24.3486 Tj +-293 TJm +(0.1) 12.4533 Tj +-294 TJm +(used) 18.2614 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +440.214 642.291 Td +/F124_0 9.9626 Tf +(putc) 23.9102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +467.047 642.291 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +484.356 642.291 Td +/F124_0 9.9626 Tf +(getc) 23.9102 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +508.266 642.291 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +-880 TJm +(Duh!) 20.4731 Tj +81.963 630.336 Td +(W) 9.4047 Tj +80 TJm +(ell,) 12.4533 Tj +-250 TJm +(you) 14.9439 Tj +-250 TJm +(li) 5.5392 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(learn.) 22.4059 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 608.418 Td +(Further) 29.3299 Tj +-304 TJm +(ahead,) 25.7234 Tj +-318 TJm +(it) 5.5392 Tj +-305 TJm +(w) 7.193 Tj +10 TJm +(ould) 17.7135 Tj +-304 TJm +(be) 9.4047 Tj +-305 TJm +(nice) 16.5977 Tj +-304 TJm +(to) 7.7509 Tj +-305 TJm +(be) 9.4047 Tj +-304 TJm +(able) 16.5977 Tj +-304 TJm +(to) 7.7509 Tj +-305 TJm +(do) 9.9626 Tj +-304 TJm +(random) 30.4357 Tj +-305 TJm +(access) 25.4445 Tj +-304 TJm +(into) 15.5018 Tj +-305 TJm +(\002les.) 19.0983 Tj +-946 TJm +(This) 17.7135 Tj +-305 TJm +(will) 15.5018 Tj +-304 TJm +(require) 28.2141 Tj +-304 TJm +(some) 21.031 Tj +-305 TJm +(careful) 27.6562 Tj +-304 TJm +(design) 26.0123 Tj +-305 TJm +(of) 8.2988 Tj +72 596.463 Td +(compressed) 47.0334 Tj +-250 TJm +(\002le) 12.7322 Tj +-250 TJm +(formats.) 32.9264 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 561.71 Td +/F116_0 20.6585 Tf +(4.2.) 34.4584 Tj +-278 TJm +(P) 13.7792 Tj +40 TJm +(or) 20.6585 Tj +-20 TJm +(tability) 66.5823 Tj +-278 TJm +(issues) 64.3099 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 539.792 Td +/F122_0 9.9626 Tf +(After) 21.0211 Tj +-250 TJm +(some) 21.031 Tj +-250 TJm +(consideration,) 56.1691 Tj +-250 TJm +(I) 3.3175 Tj +-250 TJm +(ha) 9.4047 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-250 TJm +(decided) 30.9837 Tj +-250 TJm +(not) 12.7322 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(use) 13.2801 Tj +-250 TJm +(GNU) 21.579 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +303.231 539.792 Td +/F124_0 9.9626 Tf +(autoconf) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +353.542 539.792 Td +/F122_0 9.9626 Tf +(to) 7.7509 Tj +-250 TJm +(con\002gure) 37.6287 Tj +-250 TJm +(0.9.5) 19.9252 Tj +-250 TJm +(or) 8.2988 Tj +-250 TJm +(1.0.) 14.9439 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 517.875 Td +/F124_0 9.9626 Tf +(autoconf) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +119.821 517.875 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-502 TJm +(admirable) 39.8404 Tj +-452 TJm +(and) 14.386 Tj +-452 TJm +(w) 7.193 Tj +10 TJm +(onderful) 33.7533 Tj +-452 TJm +(though) 27.6761 Tj +-452 TJm +(it) 5.5392 Tj +-452 TJm +(is,) 9.1357 Tj +-502 TJm +(mainly) 27.6761 Tj +-452 TJm +(assists) 25.4644 Tj +-452 TJm +(with) 17.7135 Tj +-452 TJm +(portability) 41.5142 Tj +-452 TJm +(problems) 37.0808 Tj +-452 TJm +(between) 33.1954 Tj +-452 TJm +(Unix-lik) 33.7633 Tj +10 TJm +(e) 4.4234 Tj +72 505.92 Td +(platforms.) 40.6773 Tj +-1398 TJm +(But) 14.396 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +144.784 505.92 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +178.455 505.92 Td +/F122_0 9.9626 Tf +(doesn') 26.5603 Tj +18 TJm +(t) 2.7696 Tj +-380 TJm +(ha) 9.4047 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-379 TJm +(much) 22.1369 Tj +-380 TJm +(in) 7.7509 Tj +-380 TJm +(the) 12.1743 Tj +-379 TJm +(w) 7.193 Tj +10 TJm +(ay) 9.4047 Tj +-380 TJm +(of) 8.2988 Tj +-380 TJm +(portability) 41.5142 Tj +-379 TJm +(problems) 37.0808 Tj +-380 TJm +(on) 9.9626 Tj +-380 TJm +(Unix;) 22.6948 Tj +-444 TJm +(most) 19.3773 Tj +-380 TJm +(of) 8.2988 Tj +-380 TJm +(the) 12.1743 Tj +-379 TJm +(dif) 11.0684 Tj +25 TJm +(\002culties) 31.5516 Tj +72 493.964 Td +(appear) 26.5503 Tj +-297 TJm +(when) 21.579 Tj +-296 TJm +(p) 4.9813 Tj +-1 TJm +(or) 8.2988 Tj +1 TJm +(ting) 15.5018 Tj +-297 TJm +(to) 7.7509 Tj +-297 TJm +(the) 12.1743 Tj +-297 TJm +(Mac,) 20.1942 Tj +-308 TJm +(or) 8.2988 Tj +-297 TJm +(to) 7.7509 Tj +-297 TJm +(Microsoft') 42.61 Tj +55 TJm +(s) 3.8755 Tj +-296 TJm +(operating) 37.6287 Tj +-297 TJm +(systems.) 34.0422 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +361.339 493.964 Td +/F124_0 9.9626 Tf +(autoconf) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +412.116 493.964 Td +/F122_0 9.9626 Tf +(doesn') 26.5603 Tj +18 TJm +(t) 2.7696 Tj +-297 TJm +(help) 17.1556 Tj +-297 TJm +(in) 7.7509 Tj +-296 TJm +(those) 21.031 Tj +-297 TJm +(cases,) 23.5117 Tj +-308 TJm +(and) 14.386 Tj +72 482.009 Td +(brings) 24.9065 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(whole) 24.3486 Tj +-250 TJm +(load) 17.1556 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(ne) 9.4047 Tj +25 TJm +(w) 7.193 Tj +-250 TJm +(comple) 29.3299 Tj +15 TJm +(xity) 15.5018 Tj +65 TJm +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 460.091 Td +(Most) 20.4831 Tj +-392 TJm +(people) 26.5603 Tj +-392 TJm +(should) 26.5703 Tj +-393 TJm +(be) 9.4047 Tj +-392 TJm +(able) 16.5977 Tj +-392 TJm +(to) 7.7509 Tj +-392 TJm +(compile) 32.0995 Tj +-393 TJm +(the) 12.1743 Tj +-392 TJm +(library) 26.5603 Tj +-392 TJm +(and) 14.386 Tj +-392 TJm +(program) 33.7533 Tj +-393 TJm +(under) 22.6848 Tj +-392 TJm +(Unix) 19.9252 Tj +-392 TJm +(straight) 29.8878 Tj +-392 TJm +(out-of-the-box,) 60.5925 Tj +-428 TJm +(so) 8.8568 Tj +-392 TJm +(to) 7.7509 Tj +-393 TJm +(speak,) 25.1755 Tj +72 448.136 Td +(especially) 39.8404 Tj +-250 TJm +(if) 6.0871 Tj +-250 TJm +(you) 14.9439 Tj +-250 TJm +(ha) 9.4047 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(v) 4.9813 Tj +15 TJm +(ersion) 24.3486 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(GNU) 21.579 Tj +-250 TJm +(C) 6.6451 Tj +-250 TJm +(a) 4.4234 Tj +20 TJm +(v) 4.9813 Tj +25 TJm +(ailable.) 29.0509 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 426.218 Td +(There) 23.2328 Tj +-259 TJm +(are) 12.1643 Tj +-258 TJm +(a) 4.4234 Tj +-259 TJm +(couple) 26.5603 Tj +-258 TJm +(of) 8.2988 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +159.561 426.218 Td +/F124_0 9.9626 Tf +(__inline__) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +221.913 426.218 Td +/F122_0 9.9626 Tf +(directi) 25.4544 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(es) 8.2988 Tj +-259 TJm +(in) 7.7509 Tj +-258 TJm +(the) 12.1743 Tj +-259 TJm +(code.) 21.3 Tj +-671 TJm +(GNU) 21.579 Tj +-259 TJm +(C) 6.6451 Tj +-258 TJm +(\() 3.3175 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +352.587 426.218 Td +/F124_0 9.9626 Tf +(gcc) 17.9327 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +370.52 426.218 Td +/F122_0 9.9626 Tf +(\)) 3.3175 Tj +-259 TJm +(should) 26.5703 Tj +-258 TJm +(be) 9.4047 Tj +-259 TJm +(able) 16.5977 Tj +-258 TJm +(to) 7.7509 Tj +-259 TJm +(handle) 26.5603 Tj +-258 TJm +(them.) 22.4159 Tj +-672 TJm +(If) 6.6351 Tj +-259 TJm +(you') 18.2614 Tj +50 TJm +(re) 7.7409 Tj +72 414.263 Td +(not) 12.7322 Tj +-279 TJm +(using) 21.589 Tj +-279 TJm +(GNU) 21.579 Tj +-279 TJm +(C,) 9.1357 Tj +-279 TJm +(your) 18.2614 Tj +-279 TJm +(C) 6.6451 Tj +-279 TJm +(compiler) 35.417 Tj +-279 TJm +(shouldn') 34.8691 Tj +18 TJm +(t) 2.7696 Tj +-279 TJm +(see) 12.7222 Tj +-279 TJm +(them) 19.9252 Tj +-279 TJm +(at) 7.193 Tj +-279 TJm +(all.) 12.4533 Tj +-794 TJm +(If) 6.6351 Tj +-279 TJm +(your) 18.2614 Tj +-279 TJm +(compiler) 35.417 Tj +-279 TJm +(does,) 20.7521 Tj +-286 TJm +(for) 11.6164 Tj +-279 TJm +(some) 21.031 Tj +-279 TJm +(reason,) 28.493 Tj +-287 TJm +(see) 12.7222 Tj +-279 TJm +(them) 19.9252 Tj +-279 TJm +(and) 14.386 Tj +72 402.308 Td +(doesn') 26.5603 Tj +18 TJm +(t) 2.7696 Tj +-283 TJm +(lik) 10.5205 Tj +10 TJm +(e) 4.4234 Tj +-283 TJm +(them,) 22.4159 Tj +-291 TJm +(just) 14.396 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +164.167 402.308 Td +/F124_0 9.9626 Tf +(#define) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-283 TJm +(__inline__) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +271.425 402.308 Td +/F122_0 9.9626 Tf +(to) 7.7509 Tj +-283 TJm +(be) 9.4047 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +294.22 402.308 Td +/F124_0 9.9626 Tf +(/) 5.9776 Tj +300.197 400.565 Td +(*) 5.9776 Tj +-600 TJm +(*) 5.9776 Tj +318.13 402.308 Td +(/) 5.9776 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +324.108 402.308 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +-818 TJm +(One) 16.5977 Tj +-283 TJm +(easy) 17.7035 Tj +-283 TJm +(w) 7.193 Tj +10 TJm +(ay) 9.4047 Tj +-283 TJm +(to) 7.7509 Tj +-283 TJm +(do) 9.9626 Tj +-283 TJm +(this) 14.396 Tj +-283 TJm +(is) 6.6451 Tj +-283 TJm +(to) 7.7509 Tj +-283 TJm +(compile) 32.0995 Tj +-283 TJm +(with) 17.7135 Tj +-283 TJm +(the) 12.1743 Tj +-283 TJm +(\003ag) 14.9439 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 390.353 Td +/F124_0 9.9626 Tf +(-D__inline__=) 77.7083 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +149.709 390.353 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-250 TJm +(which) 24.3486 Tj +-250 TJm +(should) 26.5703 Tj +-250 TJm +(be) 9.4047 Tj +-250 TJm +(understood) 44.2738 Tj +-250 TJm +(by) 9.9626 Tj +-250 TJm +(most) 19.3773 Tj +-250 TJm +(Unix) 19.9252 Tj +-250 TJm +(compilers.) 41.7831 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 368.435 Td +(If) 6.6351 Tj +-321 TJm +(you) 14.9439 Tj +-321 TJm +(still) 14.9539 Tj +-322 TJm +(ha) 9.4047 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-321 TJm +(dif) 11.0684 Tj +25 TJm +(\002culties,) 34.0422 Tj +-339 TJm +(try) 11.0684 Tj +-321 TJm +(compiling) 40.4083 Tj +-321 TJm +(with) 17.7135 Tj +-322 TJm +(t) 2.7696 Tj +1 TJm +(he) 9.4047 Tj +-322 TJm +(macro) 24.8965 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +310.295 368.435 Td +/F124_0 9.9626 Tf +(BZ_STRICT_ANSI) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +397.181 368.435 Td +/F122_0 9.9626 Tf +(de\002ned.) 31.8205 Tj +-524 TJm +(This) 17.7135 Tj +-321 TJm +(should) 26.5703 Tj +-321 TJm +(enable) 26.0024 Tj +-321 TJm +(you) 14.9439 Tj +-322 TJm +(to) 7.7509 Tj +72 356.48 Td +(b) 4.9813 Tj +20 TJm +(uild) 15.5018 Tj +-321 TJm +(the) 12.1743 Tj +-321 TJm +(library) 26.5603 Tj +-322 TJm +(in) 7.7509 Tj +-321 TJm +(a) 4.4234 Tj +-321 TJm +(strictly) 27.6761 Tj +-321 TJm +(ANSI) 23.2427 Tj +-321 TJm +(compliant) 39.8504 Tj +-322 TJm +(en) 9.4047 Tj +40 TJm +(vironment.) 43.4469 Tj +-1047 TJm +(Building) 34.8791 Tj +-321 TJm +(the) 12.1743 Tj +-321 TJm +(program) 33.7533 Tj +-322 TJm +(itself) 19.9252 Tj +-321 TJm +(lik) 10.5205 Tj +10 TJm +(e) 4.4234 Tj +-321 TJm +(this) 14.396 Tj +-321 TJm +(is) 6.6451 Tj +-321 TJm +(dangerous) 40.9463 Tj +-322 TJm +(and) 14.386 Tj +72 344.525 Td +(not) 12.7322 Tj +-260 TJm +(supported,) 41.7831 Tj +-263 TJm +(since) 20.4731 Tj +-260 TJm +(you) 14.9439 Tj +-260 TJm +(remo) 20.4731 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +204.498 344.525 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +234.386 344.525 Td +/F122_0 9.9626 Tf +(') 3.3175 Tj +55 TJm +(s) 3.8755 Tj +-260 TJm +(checks) 27.1082 Tj +-260 TJm +(ag) 9.4047 Tj +5 TJm +(ainst) 18.8194 Tj +-260 TJm +(compressing) 50.3609 Tj +-261 TJm +(directories,) 44.5428 Tj +-262 TJm +(symbolic) 36.5329 Tj +-261 TJm +(li) 5.5392 Tj +1 TJm +(nks,) 16.3287 Tj +-263 TJm +(de) 9.4047 Tj +25 TJm +(vices,) 22.9638 Tj +-263 TJm +(and) 14.386 Tj +-260 TJm +(other) 20.4731 Tj +72 332.57 Td +(not-really-a-\002le) 62.5253 Tj +-250 TJm +(entities.) 31.2726 Tj +-620 TJm +(This) 17.7135 Tj +-250 TJm +(could) 22.1369 Tj +-250 TJm +(cause) 22.1269 Tj +-250 TJm +(\002lesystem) 40.4083 Tj +-250 TJm +(corruption!) 44.8217 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 310.652 Td +(One) 16.5977 Tj +-392 TJm +(other) 20.4731 Tj +-391 TJm +(thing:) 23.2527 Tj +-594 TJm +(if) 6.0871 Tj +-391 TJm +(you) 14.9439 Tj +-392 TJm +(create) 23.7807 Tj +-391 TJm +(a) 4.4234 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +210.879 310.652 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +244.669 310.652 Td +/F122_0 9.9626 Tf +(binary) 25.4544 Tj +-392 TJm +(for) 11.6164 Tj +-391 TJm +(public) 24.9065 Tj +-392 TJm +(distrib) 25.4644 Tj +20 TJm +(ution,) 22.9738 Tj +-427 TJm +(please) 24.8965 Tj +-392 TJm +(consider) 33.7533 Tj +-391 TJm +(linking) 28.234 Tj +-392 TJm +(it) 5.5392 Tj +-391 TJm +(statically) 35.9749 Tj +-392 TJm +(\() 3.3175 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +522.067 310.652 Td +/F124_0 9.9626 Tf +(gcc) 17.9327 Tj +72 298.697 Td +(-static) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +113.843 298.697 Td +/F122_0 9.9626 Tf +(\).) 5.8082 Tj +-620 TJm +(This) 17.7135 Tj +-250 TJm +(a) 4.4234 Tj +20 TJm +(v) 4.9813 Tj +20 TJm +(oids) 16.6077 Tj +-250 TJm +(all) 9.9626 Tj +-250 TJm +(sorts) 18.8194 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(library-v) 34.8591 Tj +15 TJm +(ersion) 24.3486 Tj +-250 TJm +(issues) 23.8007 Tj +-250 TJm +(that) 14.9439 Tj +-250 TJm +(others) 24.3486 Tj +-250 TJm +(may) 17.1556 Tj +-250 TJm +(encounter) 39.2825 Tj +-250 TJm +(later) 17.7035 Tj +-250 TJm +(on.) 12.4533 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 276.779 Td +(If) 6.6351 Tj +-296 TJm +(you) 14.9439 Tj +-296 TJm +(b) 4.9813 Tj +20 TJm +(uild) 15.5018 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +122.708 276.779 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +155.545 276.779 Td +/F122_0 9.9626 Tf +(on) 9.9626 Tj +-296 TJm +(W) 9.4047 Tj +40 TJm +(in32,) 20.2042 Tj +-307 TJm +(you) 14.9439 Tj +-296 TJm +(must) 19.3773 Tj +-296 TJm +(set) 11.0684 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +254.965 276.779 Td +/F124_0 9.9626 Tf +(BZ_UNIX) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +299.756 276.779 Td +/F122_0 9.9626 Tf +(to) 7.7509 Tj +-296 TJm +(0) 4.9813 Tj +-296 TJm +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +335.72 276.779 Td +/F124_0 9.9626 Tf +(BZ_LCCWIN32) 65.7532 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +404.422 276.779 Td +/F122_0 9.9626 Tf +(to) 7.7509 Tj +-296 TJm +(1,) 7.472 Tj +-307 TJm +(in) 7.7509 Tj +-296 TJm +(the) 12.1743 Tj +-296 TJm +(\002le) 12.7322 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +467.159 276.779 Td +/F124_0 9.9626 Tf +(bzip2.c) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +509.002 276.779 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-307 TJm +(before) 25.4445 Tj +72 264.824 Td +(compiling.) 42.899 Tj +-310 TJm +(Otherwise) 40.9463 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(resulting) 34.8691 Tj +-250 TJm +(binary) 25.4544 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(on') 13.2801 Tj +18 TJm +(t) 2.7696 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(ork) 13.2801 Tj +-250 TJm +(correctly) 35.4071 Tj +65 TJm +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 230.071 Td +/F116_0 20.6585 Tf +(4.3.) 34.4584 Tj +-278 TJm +(Repor) 59.6824 Tj +-20 TJm +(ting) 37.867 Tj +-278 TJm +(b) 12.6223 Tj +20 TJm +(ugs) 36.7308 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 208.153 Td +/F122_0 9.9626 Tf +(I) 3.3175 Tj +-228 TJm +(tried) 18.2614 Tj +-228 TJm +(pretty) 23.2427 Tj +-228 TJm +(hard) 17.7035 Tj +-228 TJm +(to) 7.7509 Tj +-228 TJm +(mak) 17.1556 Tj +10 TJm +(e) 4.4234 Tj +-228 TJm +(sure) 16.5977 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +196.25 208.153 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +228.409 208.153 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-228 TJm +(b) 4.9813 Tj +20 TJm +(ug) 9.9626 Tj +-228 TJm +(free,) 17.9725 Tj +-232 TJm +(both) 17.7135 Tj +-228 TJm +(by) 9.9626 Tj +-228 TJm +(design) 26.0123 Tj +-228 TJm +(and) 14.386 Tj +-228 TJm +(by) 9.9626 Tj +-228 TJm +(testing.) 29.0609 Tj +-605 TJm +(Hopefully) 40.3983 Tj +-228 TJm +(you') 18.2614 Tj +10 TJm +(ll) 5.5392 Tj +-228 TJm +(ne) 9.4047 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(er) 7.7409 Tj +-228 TJm +(need) 18.8094 Tj +-228 TJm +(to) 7.7509 Tj +-228 TJm +(read) 17.1456 Tj +72 196.198 Td +(this) 14.396 Tj +-250 TJm +(section) 28.224 Tj +-250 TJm +(for) 11.6164 Tj +-250 TJm +(real.) 17.4246 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 174.28 Td +(Ne) 11.6164 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ertheless,) 37.3498 Tj +-313 TJm +(if) 6.0871 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +137.751 174.28 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +170.634 174.28 Td +/F122_0 9.9626 Tf +(dies) 16.0497 Tj +-301 TJm +(with) 17.7135 Tj +-300 TJm +(a) 4.4234 Tj +-301 TJm +(se) 8.2988 Tj +15 TJm +(gmentation) 44.8317 Tj +-300 TJm +(f) 3.3175 Tj +10 TJm +(ault,) 17.4346 Tj +-314 TJm +(a) 4.4234 Tj +-300 TJm +(b) 4.9813 Tj +20 TJm +(us) 8.8568 Tj +-301 TJm +(error) 19.3573 Tj +-300 TJm +(or) 8.2988 Tj +-301 TJm +(an) 9.4047 Tj +-301 TJm +(internal) 30.4357 Tj +-300 TJm +(assertion) 35.417 Tj +-301 TJm +(f) 3.3175 Tj +10 TJm +(ailure,) 25.1755 Tj +-313 TJm +(it) 5.5392 Tj +-301 TJm +(wil) 12.7322 Tj +1 TJm +(l) 2.7696 Tj +-301 TJm +(ask) 13.2801 Tj +-301 TJm +(you) 14.9439 Tj +-300 TJm +(to) 7.7509 Tj +72 162.325 Td +(email) 22.1369 Tj +-242 TJm +(me) 12.1743 Tj +-243 TJm +(a) 4.4234 Tj +-242 TJm +(b) 4.9813 Tj +20 TJm +(ug) 9.9626 Tj +-243 TJm +(report.) 26.2813 Tj +-615 TJm +(Experience) 44.8118 Tj +-242 TJm +(from) 19.3673 Tj +-243 TJm +(years) 21.0211 Tj +-242 TJm +(of) 8.2988 Tj +-242 TJm +(feedback) 35.955 Tj +-243 TJm +(of) 8.2988 Tj +-242 TJm +(bzip2) 22.1369 Tj +-243 TJm +(users) 20.4731 Tj +-242 TJm +(indicates) 35.417 Tj +-243 TJm +(that) 14.9439 Tj +-242 TJm +(almost) 26.5703 Tj +-242 TJm +(all) 9.9626 Tj +-243 TJm +(these) 20.4731 Tj +-242 TJm +(problems) 37.0808 Tj +-243 TJm +(can) 13.8281 Tj +72 150.37 Td +(be) 9.4047 Tj +-250 TJm +(traced) 24.3386 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(either) 22.6848 Tj +-250 TJm +(compiler) 35.417 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(ugs) 13.8381 Tj +-250 TJm +(or) 8.2988 Tj +-250 TJm +(hardw) 24.8965 Tj +10 TJm +(are) 12.1643 Tj +-250 TJm +(problems.) 39.5714 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +534.414 50.951 Td +(32) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 33 36 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +498.728 749.245 Td +/F122_0 9.9626 Tf +(Miscellanea) 48.1393 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +74.491 710.037 Td +/F122_0 9.9626 Tf +(\225) 3.4869 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-450 TJm +(Recompile) 43.1679 Tj +-322 TJm +(the) 12.1743 Tj +-322 TJm +(program) 33.7533 Tj +-322 TJm +(with) 17.7135 Tj +-322 TJm +(no) 9.9626 Tj +-322 TJm +(optimisat) 37.0908 Tj +1 TJm +(ion,) 15.2229 Tj +-340 TJm +(and) 14.386 Tj +-322 TJm +(see) 12.7222 Tj +-322 TJm +(if) 6.0871 Tj +-322 TJm +(it) 5.5392 Tj +-322 TJm +(w) 7.193 Tj +10 TJm +(orks.) 19.6462 Tj +-1052 TJm +(And/or) 28.224 Tj +-322 TJm +(try) 11.0684 Tj +-322 TJm +(a) 4.4234 Tj +-321 TJm +(dif) 11.0684 Tj +25 TJm +(ferent) 23.2328 Tj +-322 TJm +(compiler) 35.417 Tj +55 TJm +(.) 2.4907 Tj +-1052 TJm +(I) 3.3175 Tj +-322 TJm +(heard) 22.1269 Tj +-322 TJm +(all) 9.9626 Tj +81.963 698.082 Td +(sorts) 18.8194 Tj +-309 TJm +(of) 8.2988 Tj +-310 TJm +(stories) 26.0123 Tj +-310 TJm +(about) 22.1369 Tj +-309 TJm +(v) 4.9813 Tj +25 TJm +(arious) 24.3486 Tj +-310 TJm +(\003a) 9.9626 Tj +20 TJm +(v) 4.9813 Tj +20 TJm +(ours) 17.1556 Tj +-309 TJm +(of) 8.2988 Tj +-310 TJm +(GNU) 21.579 Tj +-309 TJm +(C) 6.6451 Tj +-310 TJm +(\(and) 17.7035 Tj +-309 TJm +(other) 20.4731 Tj +-310 TJm +(compilers\)) 42.61 Tj +-309 TJm +(generating) 42.0521 Tj +-310 TJm +(bad) 14.386 Tj +-310 TJm +(code) 18.8094 Tj +-309 TJm +(for) 11.6164 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +471.527 698.082 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +501.415 698.082 Td +/F122_0 9.9626 Tf +(,) 2.4907 Tj +-324 TJm +(and) 14.386 Tj +-310 TJm +(I') 6.6351 Tj +50 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +81.963 686.127 Td +(run) 13.2801 Tj +-250 TJm +(across) 24.8965 Tj +-250 TJm +(tw) 9.9626 Tj +10 TJm +(o) 4.9813 Tj +-250 TJm +(such) 18.2614 Tj +-250 TJm +(e) 4.4234 Tj +15 TJm +(xamples) 33.2053 Tj +-250 TJm +(myself.) 29.6088 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +81.963 664.209 Td +(2.7.X) 22.1369 Tj +-299 TJm +(v) 4.9813 Tj +15 TJm +(ersions) 28.224 Tj +-300 TJm +(of) 8.2988 Tj +-299 TJm +(GNU) 21.579 Tj +-299 TJm +(C) 6.6451 Tj +-300 TJm +(are) 12.1643 Tj +-299 TJm +(kno) 14.9439 Tj +25 TJm +(wn) 12.1743 Tj +-300 TJm +(to) 7.7509 Tj +-299 TJm +(generate) 33.7433 Tj +-299 TJm +(bad) 14.386 Tj +-300 TJm +(code) 18.8094 Tj +-299 TJm +(from) 19.3673 Tj +-299 TJm +(time) 17.7135 Tj +-300 TJm +(to) 7.7509 Tj +-299 TJm +(time,) 20.2042 Tj +-312 TJm +(at) 7.193 Tj +-299 TJm +(high) 17.7135 Tj +-300 TJm +(optimisation) 49.823 Tj +-299 TJm +(le) 7.193 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(els.) 13.5591 Tj +-916 TJm +(If) 6.6351 Tj +-300 TJm +(you) 14.9439 Tj +81.963 652.254 Td +(get) 12.1743 Tj +-328 TJm +(problems,) 39.5714 Tj +-348 TJm +(try) 11.0684 Tj +-328 TJm +(using) 21.589 Tj +-329 TJm +(the) 12.1743 Tj +-328 TJm +(\003ags) 18.8194 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +217.176 652.254 Td +/F124_0 9.9626 Tf +(-O2) 17.9327 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-328 TJm +(-fomit-frame-pointer) 119.5512 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-329 TJm +(-fno-strength-reduce) 119.5512 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +480.753 652.254 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +-1090 TJm +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-328 TJm +(should) 26.5703 Tj +81.963 640.299 Td +(speci\002cally) 45.3796 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +129.832 640.299 Td +/F621_0 9.9626 Tf +(not) 12.7322 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +145.055 640.299 Td +/F122_0 9.9626 Tf +(use) 13.2801 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +160.826 640.299 Td +/F124_0 9.9626 Tf +(-funroll-loops) 83.6858 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +244.512 640.299 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +81.963 618.381 Td +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-240 TJm +(may) 17.1556 Tj +-240 TJm +(notice) 24.3486 Tj +-241 TJm +(that) 14.9439 Tj +-240 TJm +(the) 12.1743 Tj +-240 TJm +(Mak) 18.2614 Tj +10 TJm +(e\002le) 17.1556 Tj +-240 TJm +(runs) 17.1556 Tj +-240 TJm +(six) 11.6264 Tj +-241 TJm +(tests) 17.7135 Tj +-240 TJm +(as) 8.2988 Tj +-240 TJm +(part) 15.4918 Tj +-240 TJm +(of) 8.2988 Tj +-240 TJm +(the) 12.1743 Tj +-241 TJm +(b) 4.9813 Tj +20 TJm +(uild) 15.5018 Tj +-240 TJm +(process.) 32.3685 Tj +-613 TJm +(If) 6.6351 Tj +-240 TJm +(the) 12.1743 Tj +-241 TJm +(program) 33.7533 Tj +-240 TJm +(passes) 25.4544 Tj +-240 TJm +(all) 9.9626 Tj +-240 TJm +(of) 8.2988 Tj +-240 TJm +(these,) 22.9638 Tj +-242 TJm +(it') 8.8568 Tj +55 TJm +(s) 3.8755 Tj +-241 TJm +(a) 4.4234 Tj +81.963 606.426 Td +(pretty) 23.2427 Tj +-250 TJm +(good) 19.9252 Tj +-250 TJm +(\(b) 8.2988 Tj +20 TJm +(ut) 7.7509 Tj +-250 TJm +(not) 12.7322 Tj +-250 TJm +(100%\)) 26.5603 Tj +-250 TJm +(indication) 39.8504 Tj +-250 TJm +(that) 14.9439 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(compiler) 35.417 Tj +-250 TJm +(has) 13.2801 Tj +-250 TJm +(done) 19.3673 Tj +-250 TJm +(its) 9.4147 Tj +-250 TJm +(job) 12.7322 Tj +-250 TJm +(correctly) 35.4071 Tj +65 TJm +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +74.491 584.508 Td +(\225) 3.4869 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-450 TJm +(If) 6.6351 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +91.723 584.508 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +124.239 584.508 Td +/F122_0 9.9626 Tf +(crashes) 29.3199 Tj +-264 TJm +(randomly) 38.1866 Tj +65 TJm +(,) 2.4907 Tj +-267 TJm +(and) 14.386 Tj +-264 TJm +(the) 12.1743 Tj +-263 TJm +(crashes) 29.3199 Tj +-264 TJm +(are) 12.1643 Tj +-264 TJm +(not) 12.7322 Tj +-263 TJm +(repeatable,) 43.427 Tj +-268 TJm +(you) 14.9439 Tj +-263 TJm +(may) 17.1556 Tj +-264 TJm +(ha) 9.4047 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-264 TJm +(a) 4.4234 Tj +-264 TJm +(\003ak) 14.9439 Tj +15 TJm +(y) 4.9813 Tj +-263 TJm +(memory) 33.2053 Tj +-264 TJm +(subsystem.) 44.0048 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +510.112 584.508 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +81.963 572.553 Td +/F122_0 9.9626 Tf +(really) 22.6848 Tj +-274 TJm +(hammers) 36.5229 Tj +-274 TJm +(your) 18.2614 Tj +-274 TJm +(memory) 33.2053 Tj +-274 TJm +(hierarch) 32.6375 Tj +5 TJm +(y) 4.9813 Tj +65 TJm +(,) 2.4907 Tj +-280 TJm +(and) 14.386 Tj +-274 TJm +(if) 6.0871 Tj +-274 TJm +(it') 8.8568 Tj +55 TJm +(s) 3.8755 Tj +-274 TJm +(a) 4.4234 Tj +-274 TJm +(bit) 10.5205 Tj +-274 TJm +(mar) 15.4918 Tj +18 TJm +(ginal,) 22.4159 Tj +-280 TJm +(you) 14.9439 Tj +-274 TJm +(may) 17.1556 Tj +-274 TJm +(get) 12.1743 Tj +-274 TJm +(these) 20.4731 Tj +-274 TJm +(problems.) 39.5714 Tj +-764 TJm +(Ditto) 20.4831 Tj +-274 TJm +(if) 6.0871 Tj +-274 TJm +(your) 18.2614 Tj +-274 TJm +(disk) 16.6077 Tj +81.963 560.598 Td +(or) 8.2988 Tj +-250 TJm +(I/O) 13.2801 Tj +-250 TJm +(subsystem) 41.5142 Tj +-250 TJm +(is) 6.6451 Tj +-250 TJm +(slo) 11.6264 Tj +25 TJm +(wly) 14.9439 Tj +-250 TJm +(f) 3.3175 Tj +10 TJm +(ailing.) 25.1855 Tj +-620 TJm +(Y) 7.193 Tj +111 TJm +(up,) 12.4533 Tj +-250 TJm +(this) 14.396 Tj +-250 TJm +(really) 22.6848 Tj +-250 TJm +(does) 18.2614 Tj +-250 TJm +(happen.) 31.2626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +81.963 538.68 Td +(T) 6.0871 Tj +35 TJm +(ry) 8.2988 Tj +-250 TJm +(using) 21.589 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(dif) 11.0684 Tj +25 TJm +(ferent) 23.2328 Tj +-250 TJm +(machine) 33.7533 Tj +-250 TJm +(of) 8.2988 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(same) 20.4731 Tj +-250 TJm +(type,) 19.6462 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(see) 12.7222 Tj +-250 TJm +(if) 6.0871 Tj +-250 TJm +(you) 14.9439 Tj +-250 TJm +(can) 13.8281 Tj +-250 TJm +(repeat) 24.3386 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(problem.) 35.696 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +74.491 516.762 Td +(\225) 3.4869 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +-450 TJm +(This) 17.7135 Tj +-252 TJm +(isn') 14.9439 Tj +18 TJm +(t) 2.7696 Tj +-251 TJm +(really) 22.6848 Tj +-252 TJm +(a) 4.4234 Tj +-252 TJm +(b) 4.9813 Tj +20 TJm +(ug,) 12.4533 Tj +-252 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-251 TJm +(...) 7.472 Tj +-315 TJm +(If) 6.6351 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +209.383 516.762 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +241.778 516.762 Td +/F122_0 9.9626 Tf +(tells) 16.6077 Tj +-252 TJm +(you) 14.9439 Tj +-251 TJm +(your) 18.2614 Tj +-252 TJm +(\002le) 12.7322 Tj +-252 TJm +(is) 6.6451 Tj +-251 TJm +(corrupted) 38.1767 Tj +-252 TJm +(on) 9.9626 Tj +-252 TJm +(decompression,) 62.2563 Tj +-252 TJm +(and) 14.386 Tj +-251 TJm +(you) 14.9439 Tj +-252 TJm +(obtained) 34.3112 Tj +-252 TJm +(the) 12.1743 Tj +-251 TJm +(\002le) 12.7322 Tj +81.963 504.807 Td +(via) 12.1743 Tj +-281 TJm +(FTP) 17.1656 Tj +111 TJm +(,) 2.4907 Tj +-282 TJm +(there) 19.9152 Tj +-282 TJm +(is) 6.6451 Tj +-281 TJm +(a) 4.4234 Tj +-282 TJm +(possibility) 41.5241 Tj +-281 TJm +(that) 14.9439 Tj +-282 TJm +(you) 14.9439 Tj +-281 TJm +(for) 11.6164 Tj +18 TJm +(got) 12.7322 Tj +-282 TJm +(to) 7.7509 Tj +-281 TJm +(tell) 12.7322 Tj +-282 TJm +(FTP) 17.1656 Tj +-281 TJm +(to) 7.7509 Tj +-282 TJm +(do) 9.9626 Tj +-281 TJm +(a) 4.4234 Tj +-282 TJm +(binary) 25.4544 Tj +-281 TJm +(mode) 22.1369 Tj +-282 TJm +(transfer) 30.4258 Tj +55 TJm +(.) 2.4907 Tj +-809 TJm +(That) 18.2614 Tj +-282 TJm +(absolutely) 40.9562 Tj +-281 TJm +(will) 15.5018 Tj +-282 TJm +(cause) 22.1269 Tj +81.963 492.852 Td +(the) 12.1743 Tj +-250 TJm +(\002le) 12.7322 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(be) 9.4047 Tj +-250 TJm +(non-decompressible.) 82.7294 Tj +-620 TJm +(Y) 7.193 Tj +110 TJm +(ou') 13.2801 Tj +10 TJm +(ll) 5.5392 Tj +-250 TJm +(ha) 9.4047 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(transfer) 30.4258 Tj +-250 TJm +(it) 5.5392 Tj +-250 TJm +(ag) 9.4047 Tj +5 TJm +(ain.) 14.6649 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 470.934 Td +(If) 6.6351 Tj +-235 TJm +(you') 18.2614 Tj +50 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-236 TJm +(inc) 12.1743 Tj +1 TJm +(o) 4.9813 Tj +-1 TJm +(r) 3.3175 Tj +1 TJm +(po) 9.9626 Tj +-1 TJm +(r) 3.3175 Tj +1 TJm +(ated) 16.5977 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +163.036 470.934 Td +/F124_0 9.9626 Tf +(libbzip2) 47.8205 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +213.2 470.934 Td +/F122_0 9.9626 Tf +(into) 15.5018 Tj +-235 TJm +(your) 18.2614 Tj +-236 TJm +(o) 4.9813 Tj +25 TJm +(wn) 12.1743 Tj +-235 TJm +(program) 33.7533 Tj +-235 TJm +(and) 14.386 Tj +-235 TJm +(are) 12.1643 Tj +-236 TJm +(gett) 14.9439 Tj +1 TJm +(ing) 12.7322 Tj +-236 TJm +(problems,) 39.5714 Tj +-238 TJm +(please,) 27.3872 Tj +-238 TJm +(please,) 27.3872 Tj +-238 TJm +(please,) 27.3872 Tj +-238 TJm +(check) 23.2328 Tj +-236 TJm +(that) 14.9439 Tj +72 458.979 Td +(the) 12.1743 Tj +-242 TJm +(parameters) 43.7059 Tj +-243 TJm +(you) 14.9439 Tj +-242 TJm +(are) 12.1643 Tj +-242 TJm +(passing) 29.8878 Tj +-243 TJm +(in) 7.7509 Tj +-242 TJm +(calls) 18.2614 Tj +-242 TJm +(to) 7.7509 Tj +-243 TJm +(the) 12.1743 Tj +-242 TJm +(library) 26.5603 Tj +65 TJm +(,) 2.4907 Tj +-244 TJm +(are) 12.1643 Tj +-242 TJm +(correct,) 30.1468 Tj +-244 TJm +(and) 14.386 Tj +-243 TJm +(in) 7.7509 Tj +-242 TJm +(accordance) 44.8018 Tj +-242 TJm +(with) 17.7135 Tj +-243 TJm +(what) 19.3673 Tj +-242 TJm +(the) 12.1743 Tj +-242 TJm +(documentation) 59.2177 Tj +-243 TJm +(says) 17.1556 Tj +72 447.024 Td +(is) 6.6451 Tj +-250 TJm +(allo) 14.9439 Tj +25 TJm +(w) 7.193 Tj +10 TJm +(able.) 19.0883 Tj +-310 TJm +(I) 3.3175 Tj +-250 TJm +(ha) 9.4047 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-250 TJm +(tried) 18.2614 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(mak) 17.1556 Tj +10 TJm +(e) 4.4234 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(library) 26.5603 Tj +-250 TJm +(rob) 13.2801 Tj +20 TJm +(ust) 11.6264 Tj +-250 TJm +(ag) 9.4047 Tj +5 TJm +(ainst) 18.8194 Tj +-250 TJm +(such) 18.2614 Tj +-250 TJm +(problems,) 39.5714 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-250 TJm +(I'm) 14.386 Tj +-250 TJm +(sure) 16.5977 Tj +-250 TJm +(I) 3.3175 Tj +-250 TJm +(ha) 9.4047 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(en') 12.7222 Tj +18 TJm +(t) 2.7696 Tj +-250 TJm +(succeeded.) 43.427 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 425.106 Td +(Finally) 28.234 Tj +65 TJm +(,) 2.4907 Tj +-324 TJm +(if) 6.0871 Tj +-310 TJm +(the) 12.1743 Tj +-309 TJm +(abo) 14.386 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-309 TJm +(comments) 40.9562 Tj +-310 TJm +(don') 18.2614 Tj +18 TJm +(t) 2.7696 Tj +-309 TJm +(help,) 19.6462 Tj +-324 TJm +(you') 18.2614 Tj +10 TJm +(ll) 5.5392 Tj +-310 TJm +(ha) 9.4047 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-309 TJm +(to) 7.7509 Tj +-309 TJm +(send) 18.2614 Tj +-310 TJm +(me) 12.1743 Tj +-309 TJm +(a) 4.4234 Tj +-309 TJm +(b) 4.9813 Tj +20 TJm +(ug) 9.9626 Tj +-310 TJm +(report.) 26.2813 Tj +-976 TJm +(No) 12.1743 Tj +25 TJm +(w) 7.193 Tj +65 TJm +(,) 2.4907 Tj +-324 TJm +(it') 8.8568 Tj +55 TJm +(s) 3.8755 Tj +-310 TJm +(just) 14.396 Tj +-309 TJm +(amazing) 33.7533 Tj +-309 TJm +(ho) 9.9626 Tj +25 TJm +(w) 7.193 Tj +-310 TJm +(man) 17.1556 Tj +15 TJm +(y) 4.9813 Tj +72 413.151 Td +(people) 26.5603 Tj +-250 TJm +(will) 15.5018 Tj +-250 TJm +(send) 18.2614 Tj +-250 TJm +(me) 12.1743 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(ug) 9.9626 Tj +-250 TJm +(report) 23.7907 Tj +-250 TJm +(saying) 26.0123 Tj +-250 TJm +(something) 41.5142 Tj +-250 TJm +(lik) 10.5205 Tj +10 TJm +(e:) 7.193 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 386.087] cm +0 0 468 23.91 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 401.629 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +-426 TJm +(crashed) 41.8429 Tj +-426 TJm +(with) 23.9102 Tj +-426 TJm +(segmentation) 71.7307 Tj +-426 TJm +(fault) 29.8878 Tj +-426 TJm +(on) 11.9551 Tj +-426 TJm +(my) 11.9551 Tj +-426 TJm +(machine) 41.8429 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 364.169 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +-241 TJm +(absolutely) 40.9562 Tj +-241 TJm +(nothing) 30.4457 Tj +-241 TJm +(el) 7.193 Tj +1 TJm +(se.) 10.7895 Tj +-614 TJm +(Needless) 35.965 Tj +-241 TJm +(to) 7.7509 Tj +-241 TJm +(say) 13.2801 Tj +65 TJm +(,) 2.4907 Tj +-243 TJm +(a) 4.4234 Tj +-241 TJm +(such) 18.2614 Tj +-240 TJm +(a) 4.4234 Tj +-241 TJm +(report) 23.7907 Tj +-241 TJm +(is) 6.6451 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +324.681 364.169 Td +/F621_0 9.9626 Tf +(totally) 25.4644 Tj +55 TJm +(,) 2.4907 Tj +-243 TJm +(utterly) 26.0123 Tj +55 TJm +(,) 2.4907 Tj +-242 TJm +(completely) 43.158 Tj +-241 TJm +(and) 14.9439 Tj +-241 TJm +(compr) 25.4544 Tj +37 TJm +(ehensively) 41.4942 Tj +-241 TJm +(100%) 23.2427 Tj +72 352.214 Td +(useless;) 31.5416 Tj +-257 TJm +(a) 4.9813 Tj +-255 TJm +(waste) 22.6948 Tj +-255 TJm +(of) 7.7509 Tj +-255 TJm +(your) 18.2614 Tj +-255 TJm +(time) 17.1556 Tj +10 TJm +(,) 2.4907 Tj +-256 TJm +(my) 11.6164 Tj +-255 TJm +(time) 17.1556 Tj +10 TJm +(,) 2.4907 Tj +-256 TJm +(and) 14.9439 Tj +-255 TJm +(net) 12.1743 Tj +-255 TJm +(bandwidth) 42.0721 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +302.574 352.214 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +-650 TJm +(W) 9.4047 Tj +40 TJm +(ith) 10.5205 Tj +-254 TJm +(no) 9.9626 Tj +-255 TJm +(details) 26.0123 Tj +-255 TJm +(at) 7.193 Tj +-255 TJm +(all,) 12.4533 Tj +-256 TJm +(there') 23.2328 Tj +55 TJm +(s) 3.8755 Tj +-255 TJm +(no) 9.9626 Tj +-255 TJm +(w) 7.193 Tj +10 TJm +(ay) 9.4047 Tj +-255 TJm +(I) 3.3175 Tj +-255 TJm +(can) 13.8281 Tj +-255 TJm +(possibly) 33.2153 Tj +-255 TJm +(be) 9.4047 Tj +15 TJm +(gin) 12.7322 Tj +72 340.259 Td +(to) 7.7509 Tj +-250 TJm +(\002gure) 23.2427 Tj +-250 TJm +(out) 12.7322 Tj +-250 TJm +(what) 19.3673 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(problem) 33.2053 Tj +-250 TJm +(is.) 9.1357 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 318.341 Td +(The) 15.4918 Tj +-309 TJm +(rules) 19.3673 Tj +-309 TJm +(of) 8.2988 Tj +-309 TJm +(the) 12.1743 Tj +-310 TJm +(g) 4.9813 Tj +5 TJm +(ame) 16.5977 Tj +-309 TJm +(are:) 14.9339 Tj +-428 TJm +(f) 3.3175 Tj +10 TJm +(acts,) 17.9825 Tj +-324 TJm +(f) 3.3175 Tj +10 TJm +(acts,) 17.9825 Tj +-324 TJm +(f) 3.3175 Tj +10 TJm +(acts.) 17.9825 Tj +-975 TJm +(Don') 20.4731 Tj +18 TJm +(t) 2.7696 Tj +-309 TJm +(omit) 18.2714 Tj +-309 TJm +(them) 19.9252 Tj +-309 TJm +(because) 31.5316 Tj +-309 TJm +("oh,) 16.518 Tj +-324 TJm +(the) 12.1743 Tj +15 TJm +(y) 4.9813 Tj +-309 TJm +(w) 7.193 Tj +10 TJm +(on') 13.2801 Tj +18 TJm +(t) 2.7696 Tj +-309 TJm +(be) 9.4047 Tj +-310 TJm +(rele) 14.9339 Tj +25 TJm +(v) 4.9813 Tj +25 TJm +(ant".) 18.7297 Tj +-974 TJm +(At) 9.9626 Tj +-310 TJm +(the) 12.1743 Tj +-309 TJm +(bare) 17.1456 Tj +72 306.386 Td +(minimum:) 41.5241 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.949 0.949 0.9765] sc +/DeviceRGB {} CS +[0.949 0.949 0.9765] SC +q +[1 0 0 1 72 245.514] cm +0 0 468 59.776 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 296.922 Td +/F124_0 9.9626 Tf +(Machine) 41.8429 Tj +-426 TJm +(type.) 29.8878 Tj +-852 TJm +(Operating) 53.798 Tj +-426 TJm +(system) 35.8654 Tj +-426 TJm +(version.) 47.8205 Tj +90 284.967 Td +(Exact) 29.8878 Tj +-426 TJm +(version) 41.8429 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(bzip2) 29.8878 Tj +-426 TJm +(\(do) 17.9327 Tj +-426 TJm +(bzip2) 29.8878 Tj +-426 TJm +(-V\).) 23.9102 Tj +90 273.011 Td +(Exact) 29.8878 Tj +-426 TJm +(version) 41.8429 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(compiler) 47.8205 Tj +-426 TJm +(used.) 29.8878 Tj +90 261.056 Td +(Flags) 29.8878 Tj +-426 TJm +(passed) 35.8654 Tj +-426 TJm +(to) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(compiler.) 53.798 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 223.597 Td +/F122_0 9.9626 Tf +(Ho) 12.1743 Tj +25 TJm +(we) 11.6164 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(er) 7.7409 Tj +40 TJm +(,) 2.4907 Tj +-254 TJm +(the) 12.1743 Tj +-252 TJm +(most) 19.3773 Tj +-253 TJm +(important) 38.7446 Tj +-253 TJm +(single) 23.8007 Tj +-253 TJm +(thing) 20.4831 Tj +-253 TJm +(t) 2.7696 Tj +1 TJm +(hat) 12.1743 Tj +-253 TJm +(will) 15.5018 Tj +-253 TJm +(help) 17.1556 Tj +-253 TJm +(me) 12.1743 Tj +-253 TJm +(is) 6.6451 Tj +-252 TJm +(the) 12.1743 Tj +-253 TJm +(\002le) 12.7322 Tj +-253 TJm +(that) 14.9439 Tj +-253 TJm +(you) 14.9439 Tj +-253 TJm +(were) 19.3573 Tj +-253 TJm +(trying) 23.8007 Tj +-252 TJm +(to) 7.7509 Tj +-253 TJm +(compress) 37.6287 Tj +-253 TJm +(or) 8.2988 Tj +-253 TJm +(decompress) 47.0334 Tj +72 211.641 Td +(at) 7.193 Tj +-304 TJm +(the) 12.1743 Tj +-305 TJm +(time) 17.7135 Tj +-304 TJm +(the) 12.1743 Tj +-304 TJm +(problem) 33.2053 Tj +-305 TJm +(happened.) 40.6673 Tj +-946 TJm +(W) 9.4047 Tj +40 TJm +(ithout) 23.2527 Tj +-304 TJm +(that,) 17.4346 Tj +-318 TJm +(my) 12.7322 Tj +-305 TJm +(ability) 25.4644 Tj +-304 TJm +(to) 7.7509 Tj +-304 TJm +(do) 9.9626 Tj +-305 TJm +(an) 9.4047 Tj +15 TJm +(ything) 25.4644 Tj +-304 TJm +(more) 20.4731 Tj +-304 TJm +(than) 17.1556 Tj +-305 TJm +(speculate) 37.0708 Tj +-304 TJm +(about) 22.1369 Tj +-304 TJm +(the) 12.1743 Tj +-305 TJm +(cause,) 24.6176 Tj +-318 TJm +(is) 6.6451 Tj +72 199.686 Td +(limited.) 30.7247 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 164.933 Td +/F116_0 20.6585 Tf +(4.4.) 34.4584 Tj +-278 TJm +(Did) 33.2808 Tj +-278 TJm +(y) 11.4861 Tj +25 TJm +(ou) 25.2447 Tj +-278 TJm +(g) 12.6223 Tj +-10 TJm +(et) 18.3654 Tj +-278 TJm +(the) 30.9878 Tj +-278 TJm +(right) 45.9032 Tj +-278 TJm +(pac) 35.5946 Tj +20 TJm +(ka) 22.9723 Tj +10 TJm +(g) 12.6223 Tj +-10 TJm +(e?) 24.1085 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 143.016 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +104.603 143.016 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-272 TJm +(a) 4.4234 Tj +-273 TJm +(resource) 33.7433 Tj +-272 TJm +(hog.) 17.4346 Tj +-378 TJm +(It) 6.0871 Tj +-272 TJm +(soaks) 22.1369 Tj +-273 TJm +(up) 9.9626 Tj +-272 TJm +(lar) 10.5105 Tj +18 TJm +(ge) 9.4047 Tj +-273 TJm +(amounts) 33.7633 Tj +-272 TJm +(of) 8.2988 Tj +-273 TJm +(CPU) 19.3773 Tj +-272 TJm +(c) 4.4234 Tj +15 TJm +(ycles) 20.4731 Tj +-273 TJm +(and) 14.386 Tj +-272 TJm +(memory) 33.2053 Tj +65 TJm +(.) 2.4907 Tj +-755 TJm +(Also,) 21.31 Tj +-278 TJm +(it) 5.5392 Tj +-273 TJm +(gi) 7.7509 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(es) 8.2988 Tj +-272 TJm +(v) 4.9813 Tj +15 TJm +(ery) 12.7222 Tj +-273 TJm +(lar) 10.5105 Tj +18 TJm +(ge) 9.4047 Tj +-272 TJm +(latencies.) 37.3498 Tj +72 131.06 Td +(In) 8.2988 Tj +-251 TJm +(the) 12.1743 Tj +-251 TJm +(w) 7.193 Tj +10 TJm +(orst) 14.9439 Tj +-251 TJm +(case,) 19.6363 Tj +-251 TJm +(you) 14.9439 Tj +-251 TJm +(can) 13.8281 Tj +-251 TJm +(feed) 17.1456 Tj +-251 TJm +(man) 17.1556 Tj +15 TJm +(y) 4.9813 Tj +-251 TJm +(me) 12.1743 Tj +15 TJm +(g) 4.9813 Tj +4 TJm +(abyt) 17.1556 Tj +1 TJm +(es) 8.2988 Tj +-252 TJm +(of) 8.2988 Tj +-251 TJm +(uncompressed) 56.996 Tj +-251 TJm +(data) 16.5977 Tj +-251 TJm +(into) 15.5018 Tj +-251 TJm +(the) 12.1743 Tj +-251 TJm +(library) 26.5603 Tj +-251 TJm +(before) 25.4445 Tj +-251 TJm +(getting) 27.6761 Tj +-251 TJm +(an) 9.4047 Tj +15 TJm +(y) 4.9813 Tj +-251 TJm +(compressed) 47.0334 Tj +72 119.105 Td +(output,) 27.9551 Tj +-250 TJm +(so) 8.8568 Tj +-250 TJm +(this) 14.396 Tj +-250 TJm +(probably) 35.417 Tj +-250 TJm +(rules) 19.3673 Tj +-250 TJm +(out) 12.7322 Tj +-250 TJm +(applications) 48.1492 Tj +-250 TJm +(requiring) 36.5229 Tj +-250 TJm +(interacti) 32.6474 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.4234 Tj +-250 TJm +(beha) 18.8094 Tj +20 TJm +(viour) 21.031 Tj +55 TJm +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 97.187 Td +(These) 23.7907 Tj +-304 TJm +(aren') 20.4632 Tj +18 TJm +(t) 2.7696 Tj +-304 TJm +(f) 3.3175 Tj +10 TJm +(aults) 18.8194 Tj +-304 TJm +(of) 8.2988 Tj +-304 TJm +(my) 12.7322 Tj +-304 TJm +(implementation,) 65.0359 Tj +-317 TJm +(I) 3.3175 Tj +-304 TJm +(hope,) 21.8579 Tj +-318 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-304 TJm +(more) 20.4731 Tj +-304 TJm +(an) 9.4047 Tj +-304 TJm +(intrinsic) 32.6574 Tj +-304 TJm +(property) 33.7533 Tj +-304 TJm +(of) 8.2988 Tj +-304 TJm +(the) 12.1743 Tj +-304 TJm +(Burro) 23.2427 Tj +25 TJm +(ws-Wheeler) 48.1293 Tj +-304 TJm +(transform) 38.7346 Tj +72 85.232 Td +(\(unfortunately\).) 62.8042 Tj +-620 TJm +(Maybe) 27.6661 Tj +-250 TJm +(this) 14.396 Tj +-250 TJm +(isn') 14.9439 Tj +18 TJm +(t) 2.7696 Tj +-250 TJm +(what) 19.3673 Tj +-250 TJm +(you) 14.9439 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(ant.) 14.6649 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +534.414 50.951 Td +(33) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 34 37 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +498.728 749.245 Td +/F122_0 9.9626 Tf +(Miscellanea) 48.1393 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +72 710.037 Td +/F122_0 9.9626 Tf +(If) 6.6351 Tj +-275 TJm +(you) 14.9439 Tj +-274 TJm +(w) 7.193 Tj +10 TJm +(ant) 12.1743 Tj +-275 TJm +(a) 4.4234 Tj +-274 TJm +(compressor) 45.9276 Tj +-275 TJm +(and/or) 25.4544 Tj +-275 TJm +(library) 26.5603 Tj +-274 TJm +(which) 24.3486 Tj +-275 TJm +(is) 6.6451 Tj +-274 TJm +(f) 3.3175 Tj +10 TJm +(aster) 18.8094 Tj +40 TJm +(,) 2.4907 Tj +-281 TJm +(uses) 17.1556 Tj +-275 TJm +(less) 14.9439 Tj +-274 TJm +(memory) 33.2053 Tj +-275 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-275 TJm +(gets) 16.0497 Tj +-274 TJm +(pretty) 23.2427 Tj +-275 TJm +(good) 19.9252 Tj +-274 TJm +(compression,) 52.8516 Tj +-281 TJm +(and) 14.386 Tj +-275 TJm +(has) 13.2801 Tj +72 698.082 Td +(minimal) 33.2153 Tj +-288 TJm +(latenc) 23.7907 Tj +15 TJm +(y) 4.9813 Tj +65 TJm +(,) 2.4907 Tj +-297 TJm +(consider) 33.7533 Tj +-288 TJm +(Jean-loup) 38.7346 Tj +-288 TJm +(Gailly') 28.224 Tj +55 TJm +(s) 3.8755 Tj +-288 TJm +(and) 14.386 Tj +-288 TJm +(Mark) 21.579 Tj +-288 TJm +(Adl) 14.9439 Tj +1 TJm +(er') 11.0585 Tj +55 TJm +(s) 3.8755 Tj +-288 TJm +(w) 7.193 Tj +10 TJm +(ork,) 15.7708 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +353.879 698.082 Td +/F124_0 9.9626 Tf +(zlib-1.2.1) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +416.523 698.082 Td +/F122_0 9.9626 Tf +(and) 14.386 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +433.777 698.082 Td +/F124_0 9.9626 Tf +(gzip-1.2.4) 59.7756 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +493.553 698.082 Td +/F122_0 9.9626 Tf +(.) 2.4907 Tj +-847 TJm +(Look) 21.031 Tj +-288 TJm +(for) 11.6164 Tj +72 686.127 Td +(them) 19.9252 Tj +-250 TJm +(at) 7.193 Tj +-250 TJm +(http://www) 45.3896 Tj +65 TJm +(.zlib) 17.4346 Tj +40 TJm +(.or) 10.7895 Tj +18 TJm +(g) 4.9813 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(http://www) 45.3896 Tj +65 TJm +(.gzip.or) 30.4357 Tj +18 TJm +(g) 4.9813 Tj +-250 TJm +(respecti) 30.9837 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ely) 12.1743 Tj +65 TJm +(.) 2.4907 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 664.209 Td +(F) 5.5392 Tj +15 TJm +(or) 8.2988 Tj +-582 TJm +(something) 41.5142 Tj +-583 TJm +(f) 3.3175 Tj +10 TJm +(aster) 18.8094 Tj +-582 TJm +(and) 14.386 Tj +-582 TJm +(lighter) 26.0123 Tj +-583 TJm +(still,) 17.4445 Tj +-665 TJm +(you) 14.9439 Tj +-582 TJm +(might) 23.2527 Tj +-583 TJm +(try) 11.0684 Tj +-582 TJm +(Markus) 30.4357 Tj +-582 TJm +(F) 5.5392 Tj +-582 TJm +(X) 7.193 Tj +-582 TJm +(J) 3.8755 Tj +-582 TJm +(Oberhumer') 48.6872 Tj +55 TJm +(s) 3.8755 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +437.433 664.209 Td +/F124_0 9.9626 Tf +(LZO) 17.9327 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +461.164 664.209 Td +/F122_0 9.9626 Tf +(real-time) 35.965 Tj +-582 TJm +(compres-) 37.0708 Tj +72 652.254 Td +(sion/decompression) 79.1429 Tj +-250 TJm +(library) 26.5603 Tj +65 TJm +(,) 2.4907 Tj +-250 TJm +(at) 7.193 Tj +-250 TJm +(http://www) 45.3896 Tj +65 TJm +(.oberhumer) 45.6486 Tj +55 TJm +(.com/opensource.) 70.2762 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 617.501 Td +/F116_0 20.6585 Tf +(4.5.) 34.4584 Tj +-278 TJm +(Fur) 33.2808 Tj +-20 TJm +(ther) 39.0239 Tj +-278 TJm +(Reading) 81.4978 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 595.583 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +104.923 595.583 Td +/F122_0 9.9626 Tf +(is) 6.6451 Tj +-305 TJm +(not) 12.7322 Tj +-304 TJm +(research) 33.1854 Tj +-305 TJm +(w) 7.193 Tj +10 TJm +(ork,) 15.7708 Tj +-318 TJm +(in) 7.7509 Tj +-305 TJm +(the) 12.1743 Tj +-304 TJm +(sense) 21.579 Tj +-305 TJm +(that) 14.9439 Tj +-304 TJm +(it) 5.5392 Tj +-305 TJm +(doesn') 26.5603 Tj +18 TJm +(t) 2.7696 Tj +-304 TJm +(present) 28.772 Tj +-305 TJm +(an) 9.4047 Tj +15 TJm +(y) 4.9813 Tj +-305 TJm +(ne) 9.4047 Tj +25 TJm +(w) 7.193 Tj +-304 TJm +(ideas.) 22.9638 Tj +-474 TJm +(Rather) 26.5603 Tj +40 TJm +(,) 2.4907 Tj +-318 TJm +(it') 8.8568 Tj +55 TJm +(s) 3.8755 Tj +-305 TJm +(an) 9.4047 Tj +-304 TJm +(engineering) 47.0334 Tj +-305 TJm +(e) 4.4234 Tj +15 TJm +(x) 4.9813 Tj +15 TJm +(ercise) 23.2328 Tj +72 583.628 Td +(based) 22.6848 Tj +-250 TJm +(on) 9.9626 Tj +-250 TJm +(e) 4.4234 Tj +15 TJm +(xisting) 27.1282 Tj +-250 TJm +(ideas.) 22.9638 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 561.71 Td +(F) 5.5392 Tj +15 TJm +(our) 13.2801 Tj +-250 TJm +(documents) 43.1679 Tj +-250 TJm +(describe) 33.1954 Tj +-250 TJm +(essentially) 42.0621 Tj +-250 TJm +(all) 9.9626 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(ideas) 20.4731 Tj +-250 TJm +(behind) 27.1182 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +298.747 561.71 Td +/F124_0 9.9626 Tf +(bzip2) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +328.635 561.71 Td +/F122_0 9.9626 Tf +(:) 2.7696 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.9294 0.9686 0.9568] sc +/DeviceRGB {} CS +[0.9294 0.9686 0.9568] SC +q +[1 0 0 1 72 259.678] cm +0 0 468 298.879 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 550.189 Td +/F124_0 9.9626 Tf +(Michael) 41.8429 Tj +-426 TJm +(Burrows) 41.8429 Tj +-426 TJm +(and) 17.9327 Tj +-426 TJm +(D.) 11.9551 Tj +-426 TJm +(J.) 11.9551 Tj +-426 TJm +(Wheeler:) 47.8205 Tj +98.488 538.234 Td +("A) 11.9551 Tj +-426 TJm +(block-sorting) 77.7083 Tj +-426 TJm +(lossless) 47.8205 Tj +-426 TJm +(data) 23.9102 Tj +-426 TJm +(compression) 65.7532 Tj +-426 TJm +(algorithm") 59.7756 Tj +102.732 526.278 Td +(10th) 23.9102 Tj +-426 TJm +(May) 17.9327 Tj +-426 TJm +(1994.) 29.8878 Tj +102.732 514.323 Td +(Digital) 41.8429 Tj +-426 TJm +(SRC) 17.9327 Tj +-426 TJm +(Research) 47.8205 Tj +-426 TJm +(Report) 35.8654 Tj +-426 TJm +(124.) 23.9102 Tj +102.732 502.368 Td +(ftp://ftp.digital.com/pub/DEC/SRC/research-reports/SRC-124.ps.g\ +z) 382.5638 Tj +102.732 490.413 Td +(If) 11.9551 Tj +-426 TJm +(you) 17.9327 Tj +-426 TJm +(have) 23.9102 Tj +-426 TJm +(trouble) 41.8429 Tj +-426 TJm +(finding) 41.8429 Tj +-426 TJm +(it,) 17.9327 Tj +-426 TJm +(try) 17.9327 Tj +-426 TJm +(searching) 53.798 Tj +-426 TJm +(at) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +102.732 478.458 Td +(New) 17.9327 Tj +-426 TJm +(Zealand) 41.8429 Tj +-426 TJm +(Digital) 41.8429 Tj +-426 TJm +(Library,) 47.8205 Tj +-426 TJm +(http://www.nzdl.org.) 119.5512 Tj +90 454.547 Td +(Daniel) 35.8654 Tj +-426 TJm +(S.) 11.9551 Tj +-426 TJm +(Hirschberg) 59.7756 Tj +-426 TJm +(and) 17.9327 Tj +-426 TJm +(Debra) 29.8878 Tj +-426 TJm +(A.) 11.9551 Tj +-426 TJm +(LeLewer) 41.8429 Tj +98.488 442.592 Td +("Efficient) 59.7756 Tj +-426 TJm +(Decoding) 47.8205 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(Prefix) 35.8654 Tj +-426 TJm +(Codes") 35.8654 Tj +102.732 430.637 Td +(Communications) 83.6858 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(ACM,) 23.9102 Tj +-426 TJm +(April) 29.8878 Tj +-426 TJm +(1990,) 29.8878 Tj +-426 TJm +(Vol) 17.9327 Tj +-426 TJm +(33,) 17.9327 Tj +-426 TJm +(Number) 35.8654 Tj +-426 TJm +(4.) 11.9551 Tj +102.732 418.682 Td +(You) 17.9327 Tj +-426 TJm +(might) 29.8878 Tj +-426 TJm +(be) 11.9551 Tj +-426 TJm +(able) 23.9102 Tj +-426 TJm +(to) 11.9551 Tj +-426 TJm +(get) 17.9327 Tj +-426 TJm +(an) 11.9551 Tj +-426 TJm +(electronic) 59.7756 Tj +-426 TJm +(copy) 23.9102 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(this) 23.9102 Tj +102.732 406.727 Td +(from) 23.9102 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(ACM) 17.9327 Tj +-426 TJm +(Digital) 41.8429 Tj +-426 TJm +(Library.) 47.8205 Tj +90 382.816 Td +(David) 29.8878 Tj +-426 TJm +(J.) 11.9551 Tj +-426 TJm +(Wheeler) 41.8429 Tj +102.732 370.861 Td +(Program) 41.8429 Tj +-426 TJm +(bred3.c) 41.8429 Tj +-426 TJm +(and) 17.9327 Tj +-426 TJm +(accompanying) 71.7307 Tj +-426 TJm +(document) 47.8205 Tj +-426 TJm +(bred3.ps.) 53.798 Tj +102.732 358.906 Td +(This) 23.9102 Tj +-426 TJm +(contains) 47.8205 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(idea) 23.9102 Tj +-426 TJm +(behind) 35.8654 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(multi-table) 65.7532 Tj +-426 TJm +(Huffman) 41.8429 Tj +-426 TJm +(coding) 35.8654 Tj +-426 TJm +(scheme.) 41.8429 Tj +102.732 346.951 Td +(ftp://ftp.cl.cam.ac.uk/users/djw3/) 203.237 Tj +90 323.04 Td +(Jon) 17.9327 Tj +-426 TJm +(L.) 11.9551 Tj +-426 TJm +(Bentley) 41.8429 Tj +-426 TJm +(and) 17.9327 Tj +-426 TJm +(Robert) 35.8654 Tj +-426 TJm +(Sedgewick) 53.798 Tj +98.488 311.085 Td +("Fast) 29.8878 Tj +-426 TJm +(Algorithms) 59.7756 Tj +-426 TJm +(for) 17.9327 Tj +-426 TJm +(Sorting) 41.8429 Tj +-426 TJm +(and) 17.9327 Tj +-426 TJm +(Searching) 53.798 Tj +-426 TJm +(Strings") 47.8205 Tj +102.732 299.13 Td +(Available) 53.798 Tj +-426 TJm +(from) 23.9102 Tj +-426 TJm +(Sedgewick's) 65.7532 Tj +-426 TJm +(web) 17.9327 Tj +-426 TJm +(page,) 29.8878 Tj +102.732 287.175 Td +(www.cs.princeton.edu/~rs) 143.4614 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 237.76 Td +/F122_0 9.9626 Tf +(The) 15.4918 Tj +-239 TJm +(follo) 18.8194 Tj +25 TJm +(wing) 19.9252 Tj +-238 TJm +(paper) 22.1269 Tj +-239 TJm +(gi) 7.7509 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(es) 8.2988 Tj +-239 TJm +(v) 4.9813 Tj +25 TJm +(aluable) 28.772 Tj +-238 TJm +(additional) 39.8504 Tj +-239 TJm +(insights) 31.0036 Tj +-238 TJm +(into) 15.5018 Tj +-239 TJm +(the) 12.1743 Tj +-239 TJm +(algorithm,) 41.2352 Tj +-241 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-238 TJm +(is) 6.6451 Tj +-239 TJm +(not) 12.7322 Tj +-239 TJm +(immedia) 34.8691 Tj +1 TJm +(tely) 14.9439 Tj +-239 TJm +(the) 12.1743 Tj +-239 TJm +(basis) 19.9252 Tj +-238 TJm +(of) 8.2988 Tj +-239 TJm +(an) 9.4047 Tj +15 TJm +(y) 4.9813 Tj +-239 TJm +(code) 18.8094 Tj +72 225.805 Td +(used) 18.2614 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(bzip2.) 24.6275 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.9294 0.9686 0.9568] sc +/DeviceRGB {} CS +[0.9294 0.9686 0.9568] SC +q +[1 0 0 1 72 150.921] cm +0 0 468 71.731 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 214.283 Td +/F124_0 9.9626 Tf +(Peter) 29.8878 Tj +-426 TJm +(Fenwick:) 47.8205 Tj +102.732 202.328 Td +(Block) 29.8878 Tj +-426 TJm +(Sorting) 41.8429 Tj +-426 TJm +(Text) 23.9102 Tj +-426 TJm +(Compression) 65.7532 Tj +102.732 190.373 Td +(Proceedings) 65.7532 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(19th) 23.9102 Tj +-426 TJm +(Australasian) 71.7307 Tj +-426 TJm +(Computer) 47.8205 Tj +-426 TJm +(Science) 41.8429 Tj +-426 TJm +(Conference,) 65.7532 Tj +111.22 178.418 Td +(Melbourne,) 59.7756 Tj +-426 TJm +(Australia.) 59.7756 Tj +-852 TJm +(Jan) 17.9327 Tj +-426 TJm +(31) 11.9551 Tj +-426 TJm +(-) 5.9776 Tj +-426 TJm +(Feb) 17.9327 Tj +-426 TJm +(2,) 11.9551 Tj +-426 TJm +(1996.) 29.8878 Tj +102.732 166.463 Td +(ftp://ftp.cs.auckland.ac.nz/pub/peter-f/ACSC96paper.ps) 322.7882 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 129.003 Td +/F122_0 9.9626 Tf +(K) 7.193 Tj +15 TJm +(unihik) 25.4644 Tj +10 TJm +(o) 4.9813 Tj +-250 TJm +(Sadakane') 41.4942 Tj +55 TJm +(s) 3.8755 Tj +-250 TJm +(sorting) 27.6761 Tj +-250 TJm +(algorithm,) 41.2352 Tj +-250 TJm +(mentioned) 42.0621 Tj +-250 TJm +(abo) 14.386 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e,) 6.914 Tj +-250 TJm +(is) 6.6451 Tj +-250 TJm +(a) 4.4234 Tj +20 TJm +(v) 4.9813 Tj +25 TJm +(ailable) 26.5603 Tj +-250 TJm +(from:) 22.1369 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.9294 0.9686 0.9568] sc +/DeviceRGB {} CS +[0.9294 0.9686 0.9568] SC +q +[1 0 0 1 72 89.985] cm +0 0 468 35.866 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 117.482 Td +/F124_0 9.9626 Tf +(http://naomi.is.s.u-tokyo.ac.jp/~sada/papers/Sada98b.ps.gz) 346.6985 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +534.414 50.951 Td +/F122_0 9.9626 Tf +(34) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 35 38 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +{} settransfer +q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +498.728 749.245 Td +/F122_0 9.9626 Tf +(Miscellanea) 48.1393 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +q +[1 0 0 1 73.893 741.803] cm +[] 0 d +0 J +0.498 w +0 0 m +475.465 0 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +72 710.037 Td +/F122_0 9.9626 Tf +(The) 15.4918 Tj +-250 TJm +(Manber) 30.9837 Tj +20 TJm +(-Myers) 28.772 Tj +-250 TJm +(suf) 12.1743 Tj +25 TJm +(\002x) 10.5205 Tj +-250 TJm +(array) 20.4632 Tj +-250 TJm +(construction) 49.2551 Tj +-250 TJm +(algorithm) 38.7446 Tj +-250 TJm +(is) 6.6451 Tj +-250 TJm +(described) 38.1767 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(a) 4.4234 Tj +-250 TJm +(paper) 22.1269 Tj +-250 TJm +(a) 4.4234 Tj +20 TJm +(v) 4.9813 Tj +25 TJm +(ailable) 26.5603 Tj +-250 TJm +(from:) 22.1369 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.9294 0.9686 0.9568] sc +/DeviceRGB {} CS +[0.9294 0.9686 0.9568] SC +q +[1 0 0 1 72 671.019] cm +0 0 468 35.866 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 698.516 Td +/F124_0 9.9626 Tf +(http://www.cs.arizona.edu/people/gene/PAPERS/suffix.ps) 322.7882 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +72 649.101 Td +/F122_0 9.9626 Tf +(Finally) 28.234 Tj +65 TJm +(,) 2.4907 Tj +-227 TJm +(the) 12.1743 Tj +-221 TJm +(follo) 18.8194 Tj +25 TJm +(wing) 19.9252 Tj +-222 TJm +(papers) 26.0024 Tj +-221 TJm +(document) 39.2925 Tj +-221 TJm +(some) 21.031 Tj +-222 TJm +(in) 7.7509 Tj +40 TJm +(v) 4.9813 Tj +15 TJm +(estig) 18.8194 Tj +5 TJm +(ations) 23.8007 Tj +-221 TJm +(I) 3.3175 Tj +-221 TJm +(made) 21.579 Tj +-222 TJm +(into) 15.5018 Tj +-221 TJm +(the) 12.1743 Tj +-221 TJm +(performance) 50.341 Tj +-222 TJm +(of) 8.2988 Tj +-221 TJm +(sorting) 27.6761 Tj +-221 TJm +(and) 14.386 Tj +-222 TJm +(decompression) 59.7656 Tj +72 637.146 Td +(algorithms:) 45.3896 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0.9294 0.9686 0.9568] sc +/DeviceRGB {} CS +[0.9294 0.9686 0.9568] SC +q +[1 0 0 1 72 502.486] cm +0 0 468 131.507 re +f +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 0] Tm +0 0 Td +90 625.624 Td +/F124_0 9.9626 Tf +(Julian) 35.8654 Tj +-426 TJm +(Seward) 35.8654 Tj +102.732 613.669 Td +(On) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(Performance) 65.7532 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(BWT) 17.9327 Tj +-426 TJm +(Sorting) 41.8429 Tj +-426 TJm +(Algorithms) 59.7756 Tj +102.732 601.714 Td +(Proceedings) 65.7532 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(IEEE) 23.9102 Tj +-426 TJm +(Data) 23.9102 Tj +-426 TJm +(Compression) 65.7532 Tj +-426 TJm +(Conference) 59.7756 Tj +-426 TJm +(2000) 23.9102 Tj +111.22 589.759 Td +(Snowbird,) 53.798 Tj +-426 TJm +(Utah.) 29.8878 Tj +-852 TJm +(28-30) 29.8878 Tj +-426 TJm +(March) 29.8878 Tj +-426 TJm +(2000.) 29.8878 Tj +90 565.848 Td +(Julian) 35.8654 Tj +-426 TJm +(Seward) 35.8654 Tj +102.732 553.893 Td +(Space-time) 59.7756 Tj +-426 TJm +(Tradeoffs) 53.798 Tj +-426 TJm +(in) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(Inverse) 41.8429 Tj +-426 TJm +(B-W) 17.9327 Tj +-426 TJm +(Transform) 53.798 Tj +102.732 541.938 Td +(Proceedings) 65.7532 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(IEEE) 23.9102 Tj +-426 TJm +(Data) 23.9102 Tj +-426 TJm +(Compression) 65.7532 Tj +-426 TJm +(Conference) 59.7756 Tj +-426 TJm +(2001) 23.9102 Tj +111.22 529.983 Td +(Snowbird,) 53.798 Tj +-426 TJm +(Utah.) 29.8878 Tj +-852 TJm +(27-29) 29.8878 Tj +-426 TJm +(March) 29.8878 Tj +-426 TJm +(2001.) 29.8878 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +534.414 50.951 Td +/F122_0 9.9626 Tf +(35) 9.9626 Tj +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Trailer +end +%%DocumentSuppliedResources: +%%+ font PYRIYB+NimbusSanL-Bold +%%+ font XDVKOU+NimbusRomNo9L-Regu +%%+ font QYKIKI+NimbusMonL-Regu +%%+ font BITXNG+CMMI10 +%%+ font ZWXELK+NimbusMonL-Bold +%%+ font FRBTTO+CMSY10 +%%+ font AMYDOG+NimbusRomNo9L-ReguItal +%%EOF diff --git a/plugins/Updater/bzip2-1.0.3/manual.xml b/plugins/Updater/bzip2-1.0.3/manual.xml new file mode 100644 index 0000000000..a7fbcb3375 --- /dev/null +++ b/plugins/Updater/bzip2-1.0.3/manual.xml @@ -0,0 +1,2964 @@ + + + %common-ents; +]> + + + + + bzip2 and libbzip2, version 1.0.6 + A program and library for data compression + + &bz-lifespan; + Julian Seward + + Version &bz-version; of &bz-date; + + + + Julian + Seward + + &bz-url; + + + + + + + This program, bzip2, the + associated library libbzip2, and + all documentation, are copyright © &bz-lifespan; Julian Seward. + All rights reserved. + + Redistribution and use in source and binary forms, with + or without modification, are permitted provided that the + following conditions are met: + + + + Redistributions of source code must retain the + above copyright notice, this list of conditions and the + following disclaimer. + + The origin of this software must not be + misrepresented; you must not claim that you wrote the original + software. If you use this software in a product, an + acknowledgment in the product documentation would be + appreciated but is not required. + + Altered source versions must be plainly marked + as such, and must not be misrepresented as being the original + software. + + The name of the author may not be used to + endorse or promote products derived from this software without + specific prior written permission. + + + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + + PATENTS: To the best of my knowledge, + bzip2 and + libbzip2 do not use any patented + algorithms. However, I do not have the resources to carry + out a patent search. Therefore I cannot give any guarantee of + the above statement. + + + + + + + + + +Introduction + +bzip2 compresses files +using the Burrows-Wheeler block-sorting text compression +algorithm, and Huffman coding. Compression is generally +considerably better than that achieved by more conventional +LZ77/LZ78-based compressors, and approaches the performance of +the PPM family of statistical compressors. + +bzip2 is built on top of +libbzip2, a flexible library for +handling compressed data in the +bzip2 format. This manual +describes both how to use the program and how to work with the +library interface. Most of the manual is devoted to this +library, not the program, which is good news if your interest is +only in the program. + + + + describes how to use + bzip2; this is the only part + you need to read if you just want to know how to operate the + program. + + describes the + programming interfaces in detail, and + + records some + miscellaneous notes which I thought ought to be recorded + somewhere. + + + + + + + +How to use bzip2 + +This chapter contains a copy of the +bzip2 man page, and nothing +else. + + +NAME + + + + bzip2, + bunzip2 - a block-sorting file + compressor, v1.0.6 + + bzcat - + decompresses files to stdout + + bzip2recover - + recovers data from damaged bzip2 files + + + + + + + +SYNOPSIS + + + + bzip2 [ + -cdfkqstvzVL123456789 ] [ filenames ... ] + + bunzip2 [ + -fkvsVL ] [ filenames ... ] + + bzcat [ -s ] [ + filenames ... ] + + bzip2recover + filename + + + + + + + +DESCRIPTION + +bzip2 compresses files +using the Burrows-Wheeler block sorting text compression +algorithm, and Huffman coding. Compression is generally +considerably better than that achieved by more conventional +LZ77/LZ78-based compressors, and approaches the performance of +the PPM family of statistical compressors. + +The command-line options are deliberately very similar to +those of GNU gzip, but they are +not identical. + +bzip2 expects a list of +file names to accompany the command-line flags. Each file is +replaced by a compressed version of itself, with the name +original_name.bz2. Each +compressed file has the same modification date, permissions, and, +when possible, ownership as the corresponding original, so that +these properties can be correctly restored at decompression time. +File name handling is naive in the sense that there is no +mechanism for preserving original file names, permissions, +ownerships or dates in filesystems which lack these concepts, or +have serious file name length restrictions, such as +MS-DOS. + +bzip2 and +bunzip2 will by default not +overwrite existing files. If you want this to happen, specify +the -f flag. + +If no file names are specified, +bzip2 compresses from standard +input to standard output. In this case, +bzip2 will decline to write +compressed output to a terminal, as this would be entirely +incomprehensible and therefore pointless. + +bunzip2 (or +bzip2 -d) decompresses all +specified files. Files which were not created by +bzip2 will be detected and +ignored, and a warning issued. +bzip2 attempts to guess the +filename for the decompressed file from that of the compressed +file as follows: + + + + filename.bz2 + becomes + filename + + filename.bz + becomes + filename + + filename.tbz2 + becomes + filename.tar + + filename.tbz + becomes + filename.tar + + anyothername + becomes + anyothername.out + + + +If the file does not end in one of the recognised endings, +.bz2, +.bz, +.tbz2 or +.tbz, +bzip2 complains that it cannot +guess the name of the original file, and uses the original name +with .out appended. + +As with compression, supplying no filenames causes +decompression from standard input to standard output. + +bunzip2 will correctly +decompress a file which is the concatenation of two or more +compressed files. The result is the concatenation of the +corresponding uncompressed files. Integrity testing +(-t) of concatenated compressed +files is also supported. + +You can also compress or decompress files to the standard +output by giving the -c flag. +Multiple files may be compressed and decompressed like this. The +resulting outputs are fed sequentially to stdout. Compression of +multiple files in this manner generates a stream containing +multiple compressed file representations. Such a stream can be +decompressed correctly only by +bzip2 version 0.9.0 or later. +Earlier versions of bzip2 will +stop after decompressing the first file in the stream. + +bzcat (or +bzip2 -dc) decompresses all +specified files to the standard output. + +bzip2 will read arguments +from the environment variables +BZIP2 and +BZIP, in that order, and will +process them before any arguments read from the command line. +This gives a convenient way to supply default arguments. + +Compression is always performed, even if the compressed +file is slightly larger than the original. Files of less than +about one hundred bytes tend to get larger, since the compression +mechanism has a constant overhead in the region of 50 bytes. +Random data (including the output of most file compressors) is +coded at about 8.05 bits per byte, giving an expansion of around +0.5%. + +As a self-check for your protection, +bzip2 uses 32-bit CRCs to make +sure that the decompressed version of a file is identical to the +original. This guards against corruption of the compressed data, +and against undetected bugs in +bzip2 (hopefully very unlikely). +The chances of data corruption going undetected is microscopic, +about one chance in four billion for each file processed. Be +aware, though, that the check occurs upon decompression, so it +can only tell you that something is wrong. It can't help you +recover the original uncompressed data. You can use +bzip2recover to try to recover +data from damaged files. + +Return values: 0 for a normal exit, 1 for environmental +problems (file not found, invalid flags, I/O errors, etc.), 2 +to indicate a corrupt compressed file, 3 for an internal +consistency error (eg, bug) which caused +bzip2 to panic. + + + + + +OPTIONS + + + + + -c --stdout + Compress or decompress to standard + output. + + + + -d --decompress + Force decompression. + bzip2, + bunzip2 and + bzcat are really the same + program, and the decision about what actions to take is done on + the basis of which name is used. This flag overrides that + mechanism, and forces bzip2 to decompress. + + + + -z --compress + The complement to + -d: forces compression, + regardless of the invokation name. + + + + -t --test + Check integrity of the specified file(s), but + don't decompress them. This really performs a trial + decompression and throws away the result. + + + + -f --force + Force overwrite of output files. Normally, + bzip2 will not overwrite + existing output files. Also forces + bzip2 to break hard links to + files, which it otherwise wouldn't do. + bzip2 normally declines + to decompress files which don't have the correct magic header + bytes. If forced (-f), + however, it will pass such files through unmodified. This is + how GNU gzip behaves. + + + + + -k --keep + Keep (don't delete) input files during + compression or decompression. + + + + -s --small + Reduce memory usage, for compression, + decompression and testing. Files are decompressed and tested + using a modified algorithm which only requires 2.5 bytes per + block byte. This means any file can be decompressed in 2300k + of memory, albeit at about half the normal speed. + During compression, -s + selects a block size of 200k, which limits memory use to around + the same figure, at the expense of your compression ratio. In + short, if your machine is low on memory (8 megabytes or less), + use -s for everything. See + below. + + + + -q --quiet + Suppress non-essential warning messages. + Messages pertaining to I/O errors and other critical events + will not be suppressed. + + + + -v --verbose + Verbose mode -- show the compression ratio for + each file processed. Further + -v's increase the verbosity + level, spewing out lots of information which is primarily of + interest for diagnostic purposes. + + + + -L --license -V --version + Display the software version, license terms and + conditions. + + + + -1 (or + --fast) to + -9 (or + -best) + Set the block size to 100 k, 200 k ... 900 k + when compressing. Has no effect when decompressing. See below. The + --fast and + --best aliases are primarily + for GNU gzip compatibility. + In particular, --fast doesn't + make things significantly faster. And + --best merely selects the + default behaviour. + + + + -- + Treats all subsequent arguments as file names, + even if they start with a dash. This is so you can handle + files with names beginning with a dash, for example: + bzip2 -- + -myfilename. + + + + --repetitive-fast + --repetitive-best + These flags are redundant in versions 0.9.5 and + above. They provided some coarse control over the behaviour of + the sorting algorithm in earlier versions, which was sometimes + useful. 0.9.5 and above have an improved algorithm which + renders these flags irrelevant. + + + + + + + + +MEMORY MANAGEMENT + +bzip2 compresses large +files in blocks. The block size affects both the compression +ratio achieved, and the amount of memory needed for compression +and decompression. The flags -1 +through -9 specify the block +size to be 100,000 bytes through 900,000 bytes (the default) +respectively. At decompression time, the block size used for +compression is read from the header of the compressed file, and +bunzip2 then allocates itself +just enough memory to decompress the file. Since block sizes are +stored in compressed files, it follows that the flags +-1 to +-9 are irrelevant to and so +ignored during decompression. + +Compression and decompression requirements, in bytes, can be +estimated as: + +Compression: 400k + ( 8 x block size ) + +Decompression: 100k + ( 4 x block size ), or + 100k + ( 2.5 x block size ) + + +Larger block sizes give rapidly diminishing marginal +returns. Most of the compression comes from the first two or +three hundred k of block size, a fact worth bearing in mind when +using bzip2 on small machines. +It is also important to appreciate that the decompression memory +requirement is set at compression time by the choice of block +size. + +For files compressed with the default 900k block size, +bunzip2 will require about 3700 +kbytes to decompress. To support decompression of any file on a +4 megabyte machine, bunzip2 has +an option to decompress using approximately half this amount of +memory, about 2300 kbytes. Decompression speed is also halved, +so you should use this option only where necessary. The relevant +flag is -s. + +In general, try and use the largest block size memory +constraints allow, since that maximises the compression achieved. +Compression and decompression speed are virtually unaffected by +block size. + +Another significant point applies to files which fit in a +single block -- that means most files you'd encounter using a +large block size. The amount of real memory touched is +proportional to the size of the file, since the file is smaller +than a block. For example, compressing a file 20,000 bytes long +with the flag -9 will cause the +compressor to allocate around 7600k of memory, but only touch +400k + 20000 * 8 = 560 kbytes of it. Similarly, the decompressor +will allocate 3700k but only touch 100k + 20000 * 4 = 180 +kbytes. + +Here is a table which summarises the maximum memory usage +for different block sizes. Also recorded is the total compressed +size for 14 files of the Calgary Text Compression Corpus +totalling 3,141,622 bytes. This column gives some feel for how +compression varies with block size. These figures tend to +understate the advantage of larger block sizes for larger files, +since the Corpus is dominated by smaller files. + + + Compress Decompress Decompress Corpus +Flag usage usage -s usage Size + + -1 1200k 500k 350k 914704 + -2 2000k 900k 600k 877703 + -3 2800k 1300k 850k 860338 + -4 3600k 1700k 1100k 846899 + -5 4400k 2100k 1350k 845160 + -6 5200k 2500k 1600k 838626 + -7 6100k 2900k 1850k 834096 + -8 6800k 3300k 2100k 828642 + -9 7600k 3700k 2350k 828642 + + + + + + +RECOVERING DATA FROM DAMAGED FILES + +bzip2 compresses files in +blocks, usually 900kbytes long. Each block is handled +independently. If a media or transmission error causes a +multi-block .bz2 file to become +damaged, it may be possible to recover data from the undamaged +blocks in the file. + +The compressed representation of each block is delimited by +a 48-bit pattern, which makes it possible to find the block +boundaries with reasonable certainty. Each block also carries +its own 32-bit CRC, so damaged blocks can be distinguished from +undamaged ones. + +bzip2recover is a simple +program whose purpose is to search for blocks in +.bz2 files, and write each block +out into its own .bz2 file. You +can then use bzip2 -t to test +the integrity of the resulting files, and decompress those which +are undamaged. + +bzip2recover takes a +single argument, the name of the damaged file, and writes a +number of files rec0001file.bz2, +rec0002file.bz2, etc, containing +the extracted blocks. The output filenames are designed so that +the use of wildcards in subsequent processing -- for example, +bzip2 -dc rec*file.bz2 > +recovered_data -- lists the files in the correct +order. + +bzip2recover should be of +most use dealing with large .bz2 +files, as these will contain many blocks. It is clearly futile +to use it on damaged single-block files, since a damaged block +cannot be recovered. If you wish to minimise any potential data +loss through media or transmission errors, you might consider +compressing with a smaller block size. + + + + + +PERFORMANCE NOTES + +The sorting phase of compression gathers together similar +strings in the file. Because of this, files containing very long +runs of repeated symbols, like "aabaabaabaab ..." (repeated +several hundred times) may compress more slowly than normal. +Versions 0.9.5 and above fare much better than previous versions +in this respect. The ratio between worst-case and average-case +compression time is in the region of 10:1. For previous +versions, this figure was more like 100:1. You can use the +-vvvv option to monitor progress +in great detail, if you want. + +Decompression speed is unaffected by these +phenomena. + +bzip2 usually allocates +several megabytes of memory to operate in, and then charges all +over it in a fairly random fashion. This means that performance, +both for compressing and decompressing, is largely determined by +the speed at which your machine can service cache misses. +Because of this, small changes to the code to reduce the miss +rate have been observed to give disproportionately large +performance improvements. I imagine +bzip2 will perform best on +machines with very large caches. + + + + + + +CAVEATS + +I/O error messages are not as helpful as they could be. +bzip2 tries hard to detect I/O +errors and exit cleanly, but the details of what the problem is +sometimes seem rather misleading. + +This manual page pertains to version &bz-version; of +bzip2. Compressed data created by +this version is entirely forwards and backwards compatible with the +previous public releases, versions 0.1pl2, 0.9.0 and 0.9.5, 1.0.0, +1.0.1, 1.0.2 and 1.0.3, but with the following exception: 0.9.0 and +above can correctly decompress multiple concatenated compressed files. +0.1pl2 cannot do this; it will stop after decompressing just the first +file in the stream. + +bzip2recover versions +prior to 1.0.2 used 32-bit integers to represent bit positions in +compressed files, so it could not handle compressed files more +than 512 megabytes long. Versions 1.0.2 and above use 64-bit ints +on some platforms which support them (GNU supported targets, and +Windows). To establish whether or not +bzip2recover was built with such +a limitation, run it without arguments. In any event you can +build yourself an unlimited version if you can recompile it with +MaybeUInt64 set to be an +unsigned 64-bit integer. + + + + + + +AUTHOR + +Julian Seward, +&bz-email; + +The ideas embodied in +bzip2 are due to (at least) the +following people: Michael Burrows and David Wheeler (for the +block sorting transformation), David Wheeler (again, for the +Huffman coder), Peter Fenwick (for the structured coding model in +the original bzip, and many +refinements), and Alistair Moffat, Radford Neal and Ian Witten +(for the arithmetic coder in the original +bzip). I am much indebted for +their help, support and advice. See the manual in the source +distribution for pointers to sources of documentation. Christian +von Roques encouraged me to look for faster sorting algorithms, +so as to speed up compression. Bela Lubkin encouraged me to +improve the worst-case compression performance. +Donna Robinson XMLised the documentation. +Many people sent +patches, helped with portability problems, lent machines, gave +advice and were generally helpful. + + + + + + + + + +Programming with <computeroutput>libbzip2</computeroutput> + + +This chapter describes the programming interface to +libbzip2. + +For general background information, particularly about +memory use and performance aspects, you'd be well advised to read + as well. + + + +Top-level structure + +libbzip2 is a flexible +library for compressing and decompressing data in the +bzip2 data format. Although +packaged as a single entity, it helps to regard the library as +three separate parts: the low level interface, and the high level +interface, and some utility functions. + +The structure of +libbzip2's interfaces is similar +to that of Jean-loup Gailly's and Mark Adler's excellent +zlib library. + +All externally visible symbols have names beginning +BZ2_. This is new in version +1.0. The intention is to minimise pollution of the namespaces of +library clients. + +To use any part of the library, you need to +#include <bzlib.h> +into your sources. + + + + +Low-level summary + +This interface provides services for compressing and +decompressing data in memory. There's no provision for dealing +with files, streams or any other I/O mechanisms, just straight +memory-to-memory work. In fact, this part of the library can be +compiled without inclusion of +stdio.h, which may be helpful +for embedded applications. + +The low-level part of the library has no global variables +and is therefore thread-safe. + +Six routines make up the low level interface: +BZ2_bzCompressInit, +BZ2_bzCompress, and +BZ2_bzCompressEnd for +compression, and a corresponding trio +BZ2_bzDecompressInit, +BZ2_bzDecompress and +BZ2_bzDecompressEnd for +decompression. The *Init +functions allocate memory for compression/decompression and do +other initialisations, whilst the +*End functions close down +operations and release memory. + +The real work is done by +BZ2_bzCompress and +BZ2_bzDecompress. These +compress and decompress data from a user-supplied input buffer to +a user-supplied output buffer. These buffers can be any size; +arbitrary quantities of data are handled by making repeated calls +to these functions. This is a flexible mechanism allowing a +consumer-pull style of activity, or producer-push, or a mixture +of both. + + + + + +High-level summary + +This interface provides some handy wrappers around the +low-level interface to facilitate reading and writing +bzip2 format files +(.bz2 files). The routines +provide hooks to facilitate reading files in which the +bzip2 data stream is embedded +within some larger-scale file structure, or where there are +multiple bzip2 data streams +concatenated end-to-end. + +For reading files, +BZ2_bzReadOpen, +BZ2_bzRead, +BZ2_bzReadClose and +BZ2_bzReadGetUnused are +supplied. For writing files, +BZ2_bzWriteOpen, +BZ2_bzWrite and +BZ2_bzWriteFinish are +available. + +As with the low-level library, no global variables are used +so the library is per se thread-safe. However, if I/O errors +occur whilst reading or writing the underlying compressed files, +you may have to consult errno to +determine the cause of the error. In that case, you'd need a C +library which correctly supports +errno in a multithreaded +environment. + +To make the library a little simpler and more portable, +BZ2_bzReadOpen and +BZ2_bzWriteOpen require you to +pass them file handles (FILE*s) +which have previously been opened for reading or writing +respectively. That avoids portability problems associated with +file operations and file attributes, whilst not being much of an +imposition on the programmer. + + + + + +Utility functions summary + +For very simple needs, +BZ2_bzBuffToBuffCompress and +BZ2_bzBuffToBuffDecompress are +provided. These compress data in memory from one buffer to +another buffer in a single function call. You should assess +whether these functions fulfill your memory-to-memory +compression/decompression requirements before investing effort in +understanding the more general but more complex low-level +interface. + +Yoshioka Tsuneo +(tsuneo@rr.iij4u.or.jp) has +contributed some functions to give better +zlib compatibility. These +functions are BZ2_bzopen, +BZ2_bzread, +BZ2_bzwrite, +BZ2_bzflush, +BZ2_bzclose, +BZ2_bzerror and +BZ2_bzlibVersion. You may find +these functions more convenient for simple file reading and +writing, than those in the high-level interface. These functions +are not (yet) officially part of the library, and are minimally +documented here. If they break, you get to keep all the pieces. +I hope to document them properly when time permits. + +Yoshioka also contributed modifications to allow the +library to be built as a Windows DLL. + + + + + + + +Error handling + +The library is designed to recover cleanly in all +situations, including the worst-case situation of decompressing +random data. I'm not 100% sure that it can always do this, so +you might want to add a signal handler to catch segmentation +violations during decompression if you are feeling especially +paranoid. I would be interested in hearing more about the +robustness of the library to corrupted compressed data. + +Version 1.0.3 more robust in this respect than any +previous version. Investigations with Valgrind (a tool for detecting +problems with memory management) indicate +that, at least for the few files I tested, all single-bit errors +in the decompressed data are caught properly, with no +segmentation faults, no uses of uninitialised data, no out of +range reads or writes, and no infinite looping in the decompressor. +So it's certainly pretty robust, although +I wouldn't claim it to be totally bombproof. + +The file bzlib.h contains +all definitions needed to use the library. In particular, you +should definitely not include +bzlib_private.h. + +In bzlib.h, the various +return values are defined. The following list is not intended as +an exhaustive description of the circumstances in which a given +value may be returned -- those descriptions are given later. +Rather, it is intended to convey the rough meaning of each return +value. The first five actions are normal and not intended to +denote an error situation. + + + + + BZ_OK + The requested action was completed + successfully. + + + + BZ_RUN_OK, BZ_FLUSH_OK, + BZ_FINISH_OK + In + BZ2_bzCompress, the requested + flush/finish/nothing-special action was completed + successfully. + + + + BZ_STREAM_END + Compression of data was completed, or the + logical stream end was detected during + decompression. + + + + +The following return values indicate an error of some +kind. + + + + + BZ_CONFIG_ERROR + Indicates that the library has been improperly + compiled on your platform -- a major configuration error. + Specifically, it means that + sizeof(char), + sizeof(short) and + sizeof(int) are not 1, 2 and + 4 respectively, as they should be. Note that the library + should still work properly on 64-bit platforms which follow + the LP64 programming model -- that is, where + sizeof(long) and + sizeof(void*) are 8. Under + LP64, sizeof(int) is still 4, + so libbzip2, which doesn't + use the long type, is + OK. + + + + BZ_SEQUENCE_ERROR + When using the library, it is important to call + the functions in the correct sequence and with data structures + (buffers etc) in the correct states. + libbzip2 checks as much as it + can to ensure this is happening, and returns + BZ_SEQUENCE_ERROR if not. + Code which complies precisely with the function semantics, as + detailed below, should never receive this value; such an event + denotes buggy code which you should + investigate. + + + + BZ_PARAM_ERROR + Returned when a parameter to a function call is + out of range or otherwise manifestly incorrect. As with + BZ_SEQUENCE_ERROR, this + denotes a bug in the client code. The distinction between + BZ_PARAM_ERROR and + BZ_SEQUENCE_ERROR is a bit + hazy, but still worth making. + + + + BZ_MEM_ERROR + Returned when a request to allocate memory + failed. Note that the quantity of memory needed to decompress + a stream cannot be determined until the stream's header has + been read. So + BZ2_bzDecompress and + BZ2_bzRead may return + BZ_MEM_ERROR even though some + of the compressed data has been read. The same is not true + for compression; once + BZ2_bzCompressInit or + BZ2_bzWriteOpen have + successfully completed, + BZ_MEM_ERROR cannot + occur. + + + + BZ_DATA_ERROR + Returned when a data integrity error is + detected during decompression. Most importantly, this means + when stored and computed CRCs for the data do not match. This + value is also returned upon detection of any other anomaly in + the compressed data. + + + + BZ_DATA_ERROR_MAGIC + As a special case of + BZ_DATA_ERROR, it is + sometimes useful to know when the compressed stream does not + start with the correct magic bytes ('B' 'Z' + 'h'). + + + + BZ_IO_ERROR + Returned by + BZ2_bzRead and + BZ2_bzWrite when there is an + error reading or writing in the compressed file, and by + BZ2_bzReadOpen and + BZ2_bzWriteOpen for attempts + to use a file for which the error indicator (viz, + ferror(f)) is set. On + receipt of BZ_IO_ERROR, the + caller should consult errno + and/or perror to acquire + operating-system specific information about the + problem. + + + + BZ_UNEXPECTED_EOF + Returned by + BZ2_bzRead when the + compressed file finishes before the logical end of stream is + detected. + + + + BZ_OUTBUFF_FULL + Returned by + BZ2_bzBuffToBuffCompress and + BZ2_bzBuffToBuffDecompress to + indicate that the output data will not fit into the output + buffer provided. + + + + + + + + + +Low-level interface + + + +BZ2_bzCompressInit + + +typedef struct { + char *next_in; + unsigned int avail_in; + unsigned int total_in_lo32; + unsigned int total_in_hi32; + + char *next_out; + unsigned int avail_out; + unsigned int total_out_lo32; + unsigned int total_out_hi32; + + void *state; + + void *(*bzalloc)(void *,int,int); + void (*bzfree)(void *,void *); + void *opaque; +} bz_stream; + +int BZ2_bzCompressInit ( bz_stream *strm, + int blockSize100k, + int verbosity, + int workFactor ); + + +Prepares for compression. The +bz_stream structure holds all +data pertaining to the compression activity. A +bz_stream structure should be +allocated and initialised prior to the call. The fields of +bz_stream comprise the entirety +of the user-visible data. state +is a pointer to the private data structures required for +compression. + +Custom memory allocators are supported, via fields +bzalloc, +bzfree, and +opaque. The value +opaque is passed to as the first +argument to all calls to bzalloc +and bzfree, but is otherwise +ignored by the library. The call bzalloc ( +opaque, n, m ) is expected to return a pointer +p to n * +m bytes of memory, and bzfree ( +opaque, p ) should free that memory. + +If you don't want to use a custom memory allocator, set +bzalloc, +bzfree and +opaque to +NULL, and the library will then +use the standard malloc / +free routines. + +Before calling +BZ2_bzCompressInit, fields +bzalloc, +bzfree and +opaque should be filled +appropriately, as just described. Upon return, the internal +state will have been allocated and initialised, and +total_in_lo32, +total_in_hi32, +total_out_lo32 and +total_out_hi32 will have been +set to zero. These four fields are used by the library to inform +the caller of the total amount of data passed into and out of the +library, respectively. You should not try to change them. As of +version 1.0, 64-bit counts are maintained, even on 32-bit +platforms, using the _hi32 +fields to store the upper 32 bits of the count. So, for example, +the total amount of data in is (total_in_hi32 +<< 32) + total_in_lo32. + +Parameter blockSize100k +specifies the block size to be used for compression. It should +be a value between 1 and 9 inclusive, and the actual block size +used is 100000 x this figure. 9 gives the best compression but +takes most memory. + +Parameter verbosity should +be set to a number between 0 and 4 inclusive. 0 is silent, and +greater numbers give increasingly verbose monitoring/debugging +output. If the library has been compiled with +-DBZ_NO_STDIO, no such output +will appear for any verbosity setting. + +Parameter workFactor +controls how the compression phase behaves when presented with +worst case, highly repetitive, input data. If compression runs +into difficulties caused by repetitive data, the library switches +from the standard sorting algorithm to a fallback algorithm. The +fallback is slower than the standard algorithm by perhaps a +factor of three, but always behaves reasonably, no matter how bad +the input. + +Lower values of workFactor +reduce the amount of effort the standard algorithm will expend +before resorting to the fallback. You should set this parameter +carefully; too low, and many inputs will be handled by the +fallback algorithm and so compress rather slowly, too high, and +your average-to-worst case compression times can become very +large. The default value of 30 gives reasonable behaviour over a +wide range of circumstances. + +Allowable values range from 0 to 250 inclusive. 0 is a +special case, equivalent to using the default value of 30. + +Note that the compressed output generated is the same +regardless of whether or not the fallback algorithm is +used. + +Be aware also that this parameter may disappear entirely in +future versions of the library. In principle it should be +possible to devise a good way to automatically choose which +algorithm to use. Such a mechanism would render the parameter +obsolete. + +Possible return values: + + +BZ_CONFIG_ERROR + if the library has been mis-compiled +BZ_PARAM_ERROR + if strm is NULL + or blockSize < 1 or blockSize > 9 + or verbosity < 0 or verbosity > 4 + or workFactor < 0 or workFactor > 250 +BZ_MEM_ERROR + if not enough memory is available +BZ_OK + otherwise + + +Allowable next actions: + + +BZ2_bzCompress + if BZ_OK is returned + no specific action needed in case of error + + + + + + +BZ2_bzCompress + + +int BZ2_bzCompress ( bz_stream *strm, int action ); + + +Provides more input and/or output buffer space for the +library. The caller maintains input and output buffers, and +calls BZ2_bzCompress to transfer +data between them. + +Before each call to +BZ2_bzCompress, +next_in should point at the data +to be compressed, and avail_in +should indicate how many bytes the library may read. +BZ2_bzCompress updates +next_in, +avail_in and +total_in to reflect the number +of bytes it has read. + +Similarly, next_out should +point to a buffer in which the compressed data is to be placed, +with avail_out indicating how +much output space is available. +BZ2_bzCompress updates +next_out, +avail_out and +total_out to reflect the number +of bytes output. + +You may provide and remove as little or as much data as you +like on each call of +BZ2_bzCompress. In the limit, +it is acceptable to supply and remove data one byte at a time, +although this would be terribly inefficient. You should always +ensure that at least one byte of output space is available at +each call. + +A second purpose of +BZ2_bzCompress is to request a +change of mode of the compressed stream. + +Conceptually, a compressed stream can be in one of four +states: IDLE, RUNNING, FLUSHING and FINISHING. Before +initialisation +(BZ2_bzCompressInit) and after +termination (BZ2_bzCompressEnd), +a stream is regarded as IDLE. + +Upon initialisation +(BZ2_bzCompressInit), the stream +is placed in the RUNNING state. Subsequent calls to +BZ2_bzCompress should pass +BZ_RUN as the requested action; +other actions are illegal and will result in +BZ_SEQUENCE_ERROR. + +At some point, the calling program will have provided all +the input data it wants to. It will then want to finish up -- in +effect, asking the library to process any data it might have +buffered internally. In this state, +BZ2_bzCompress will no longer +attempt to read data from +next_in, but it will want to +write data to next_out. Because +the output buffer supplied by the user can be arbitrarily small, +the finishing-up operation cannot necessarily be done with a +single call of +BZ2_bzCompress. + +Instead, the calling program passes +BZ_FINISH as an action to +BZ2_bzCompress. This changes +the stream's state to FINISHING. Any remaining input (ie, +next_in[0 .. avail_in-1]) is +compressed and transferred to the output buffer. To do this, +BZ2_bzCompress must be called +repeatedly until all the output has been consumed. At that +point, BZ2_bzCompress returns +BZ_STREAM_END, and the stream's +state is set back to IDLE. +BZ2_bzCompressEnd should then be +called. + +Just to make sure the calling program does not cheat, the +library makes a note of avail_in +at the time of the first call to +BZ2_bzCompress which has +BZ_FINISH as an action (ie, at +the time the program has announced its intention to not supply +any more input). By comparing this value with that of +avail_in over subsequent calls +to BZ2_bzCompress, the library +can detect any attempts to slip in more data to compress. Any +calls for which this is detected will return +BZ_SEQUENCE_ERROR. This +indicates a programming mistake which should be corrected. + +Instead of asking to finish, the calling program may ask +BZ2_bzCompress to take all the +remaining input, compress it and terminate the current +(Burrows-Wheeler) compression block. This could be useful for +error control purposes. The mechanism is analogous to that for +finishing: call BZ2_bzCompress +with an action of BZ_FLUSH, +remove output data, and persist with the +BZ_FLUSH action until the value +BZ_RUN is returned. As with +finishing, BZ2_bzCompress +detects any attempt to provide more input data once the flush has +begun. + +Once the flush is complete, the stream returns to the +normal RUNNING state. + +This all sounds pretty complex, but isn't really. Here's a +table which shows which actions are allowable in each state, what +action will be taken, what the next state is, and what the +non-error return values are. Note that you can't explicitly ask +what state the stream is in, but nor do you need to -- it can be +inferred from the values returned by +BZ2_bzCompress. + + +IDLE/any + Illegal. IDLE state only exists after BZ2_bzCompressEnd or + before BZ2_bzCompressInit. + Return value = BZ_SEQUENCE_ERROR + +RUNNING/BZ_RUN + Compress from next_in to next_out as much as possible. + Next state = RUNNING + Return value = BZ_RUN_OK + +RUNNING/BZ_FLUSH + Remember current value of next_in. Compress from next_in + to next_out as much as possible, but do not accept any more input. + Next state = FLUSHING + Return value = BZ_FLUSH_OK + +RUNNING/BZ_FINISH + Remember current value of next_in. Compress from next_in + to next_out as much as possible, but do not accept any more input. + Next state = FINISHING + Return value = BZ_FINISH_OK + +FLUSHING/BZ_FLUSH + Compress from next_in to next_out as much as possible, + but do not accept any more input. + If all the existing input has been used up and all compressed + output has been removed + Next state = RUNNING; Return value = BZ_RUN_OK + else + Next state = FLUSHING; Return value = BZ_FLUSH_OK + +FLUSHING/other + Illegal. + Return value = BZ_SEQUENCE_ERROR + +FINISHING/BZ_FINISH + Compress from next_in to next_out as much as possible, + but to not accept any more input. + If all the existing input has been used up and all compressed + output has been removed + Next state = IDLE; Return value = BZ_STREAM_END + else + Next state = FINISHING; Return value = BZ_FINISH_OK + +FINISHING/other + Illegal. + Return value = BZ_SEQUENCE_ERROR + + + +That still looks complicated? Well, fair enough. The +usual sequence of calls for compressing a load of data is: + + + + Get started with + BZ2_bzCompressInit. + + Shovel data in and shlurp out its compressed form + using zero or more calls of + BZ2_bzCompress with action = + BZ_RUN. + + Finish up. Repeatedly call + BZ2_bzCompress with action = + BZ_FINISH, copying out the + compressed output, until + BZ_STREAM_END is + returned. Close up and go home. Call + BZ2_bzCompressEnd. + + + +If the data you want to compress fits into your input +buffer all at once, you can skip the calls of +BZ2_bzCompress ( ..., BZ_RUN ) +and just do the BZ2_bzCompress ( ..., BZ_FINISH +) calls. + +All required memory is allocated by +BZ2_bzCompressInit. The +compression library can accept any data at all (obviously). So +you shouldn't get any error return values from the +BZ2_bzCompress calls. If you +do, they will be +BZ_SEQUENCE_ERROR, and indicate +a bug in your programming. + +Trivial other possible return values: + + +BZ_PARAM_ERROR + if strm is NULL, or strm->s is NULL + + + + + + +BZ2_bzCompressEnd + + +int BZ2_bzCompressEnd ( bz_stream *strm ); + + +Releases all memory associated with a compression +stream. + +Possible return values: + + +BZ_PARAM_ERROR if strm is NULL or strm->s is NULL +BZ_OK otherwise + + + + + + +BZ2_bzDecompressInit + + +int BZ2_bzDecompressInit ( bz_stream *strm, int verbosity, int small ); + + +Prepares for decompression. As with +BZ2_bzCompressInit, a +bz_stream record should be +allocated and initialised before the call. Fields +bzalloc, +bzfree and +opaque should be set if a custom +memory allocator is required, or made +NULL for the normal +malloc / +free routines. Upon return, the +internal state will have been initialised, and +total_in and +total_out will be zero. + +For the meaning of parameter +verbosity, see +BZ2_bzCompressInit. + +If small is nonzero, the +library will use an alternative decompression algorithm which +uses less memory but at the cost of decompressing more slowly +(roughly speaking, half the speed, but the maximum memory +requirement drops to around 2300k). See +for more information on memory management. + +Note that the amount of memory needed to decompress a +stream cannot be determined until the stream's header has been +read, so even if +BZ2_bzDecompressInit succeeds, a +subsequent BZ2_bzDecompress +could fail with +BZ_MEM_ERROR. + +Possible return values: + + +BZ_CONFIG_ERROR + if the library has been mis-compiled +BZ_PARAM_ERROR + if ( small != 0 && small != 1 ) + or (verbosity <; 0 || verbosity > 4) +BZ_MEM_ERROR + if insufficient memory is available + + +Allowable next actions: + + +BZ2_bzDecompress + if BZ_OK was returned + no specific action required in case of error + + + + + + +BZ2_bzDecompress + + +int BZ2_bzDecompress ( bz_stream *strm ); + + +Provides more input and/out output buffer space for the +library. The caller maintains input and output buffers, and uses +BZ2_bzDecompress to transfer +data between them. + +Before each call to +BZ2_bzDecompress, +next_in should point at the +compressed data, and avail_in +should indicate how many bytes the library may read. +BZ2_bzDecompress updates +next_in, +avail_in and +total_in to reflect the number +of bytes it has read. + +Similarly, next_out should +point to a buffer in which the uncompressed output is to be +placed, with avail_out +indicating how much output space is available. +BZ2_bzCompress updates +next_out, +avail_out and +total_out to reflect the number +of bytes output. + +You may provide and remove as little or as much data as you +like on each call of +BZ2_bzDecompress. In the limit, +it is acceptable to supply and remove data one byte at a time, +although this would be terribly inefficient. You should always +ensure that at least one byte of output space is available at +each call. + +Use of BZ2_bzDecompress is +simpler than +BZ2_bzCompress. + +You should provide input and remove output as described +above, and repeatedly call +BZ2_bzDecompress until +BZ_STREAM_END is returned. +Appearance of BZ_STREAM_END +denotes that BZ2_bzDecompress +has detected the logical end of the compressed stream. +BZ2_bzDecompress will not +produce BZ_STREAM_END until all +output data has been placed into the output buffer, so once +BZ_STREAM_END appears, you are +guaranteed to have available all the decompressed output, and +BZ2_bzDecompressEnd can safely +be called. + +If case of an error return value, you should call +BZ2_bzDecompressEnd to clean up +and release memory. + +Possible return values: + + +BZ_PARAM_ERROR + if strm is NULL or strm->s is NULL + or strm->avail_out < 1 +BZ_DATA_ERROR + if a data integrity error is detected in the compressed stream +BZ_DATA_ERROR_MAGIC + if the compressed stream doesn't begin with the right magic bytes +BZ_MEM_ERROR + if there wasn't enough memory available +BZ_STREAM_END + if the logical end of the data stream was detected and all + output in has been consumed, eg s-->avail_out > 0 +BZ_OK + otherwise + + +Allowable next actions: + + +BZ2_bzDecompress + if BZ_OK was returned +BZ2_bzDecompressEnd + otherwise + + + + + + +BZ2_bzDecompressEnd + + +int BZ2_bzDecompressEnd ( bz_stream *strm ); + + +Releases all memory associated with a decompression +stream. + +Possible return values: + + +BZ_PARAM_ERROR + if strm is NULL or strm->s is NULL +BZ_OK + otherwise + + +Allowable next actions: + + + None. + + + + + + + + +High-level interface + +This interface provides functions for reading and writing +bzip2 format files. First, some +general points. + + + + All of the functions take an + int* first argument, + bzerror. After each call, + bzerror should be consulted + first to determine the outcome of the call. If + bzerror is + BZ_OK, the call completed + successfully, and only then should the return value of the + function (if any) be consulted. If + bzerror is + BZ_IO_ERROR, there was an + error reading/writing the underlying compressed file, and you + should then consult errno / + perror to determine the cause + of the difficulty. bzerror + may also be set to various other values; precise details are + given on a per-function basis below. + + If bzerror indicates + an error (ie, anything except + BZ_OK and + BZ_STREAM_END), you should + immediately call + BZ2_bzReadClose (or + BZ2_bzWriteClose, depending on + whether you are attempting to read or to write) to free up all + resources associated with the stream. Once an error has been + indicated, behaviour of all calls except + BZ2_bzReadClose + (BZ2_bzWriteClose) is + undefined. The implication is that (1) + bzerror should be checked + after each call, and (2) if + bzerror indicates an error, + BZ2_bzReadClose + (BZ2_bzWriteClose) should then + be called to clean up. + + The FILE* arguments + passed to BZ2_bzReadOpen / + BZ2_bzWriteOpen should be set + to binary mode. Most Unix systems will do this by default, but + other platforms, including Windows and Mac, will not. If you + omit this, you may encounter problems when moving code to new + platforms. + + Memory allocation requests are handled by + malloc / + free. At present there is no + facility for user-defined memory allocators in the file I/O + functions (could easily be added, though). + + + + + + +BZ2_bzReadOpen + + +typedef void BZFILE; + +BZFILE *BZ2_bzReadOpen( int *bzerror, FILE *f, + int verbosity, int small, + void *unused, int nUnused ); + + +Prepare to read compressed data from file handle +f. +f should refer to a file which +has been opened for reading, and for which the error indicator +(ferror(f))is not set. If +small is 1, the library will try +to decompress using less memory, at the expense of speed. + +For reasons explained below, +BZ2_bzRead will decompress the +nUnused bytes starting at +unused, before starting to read +from the file f. At most +BZ_MAX_UNUSED bytes may be +supplied like this. If this facility is not required, you should +pass NULL and +0 for +unused and +nUnused respectively. + +For the meaning of parameters +small and +verbosity, see +BZ2_bzDecompressInit. + +The amount of memory needed to decompress a file cannot be +determined until the file's header has been read. So it is +possible that BZ2_bzReadOpen +returns BZ_OK but a subsequent +call of BZ2_bzRead will return +BZ_MEM_ERROR. + +Possible assignments to +bzerror: + + +BZ_CONFIG_ERROR + if the library has been mis-compiled +BZ_PARAM_ERROR + if f is NULL + or small is neither 0 nor 1 + or ( unused == NULL && nUnused != 0 ) + or ( unused != NULL && !(0 <= nUnused <= BZ_MAX_UNUSED) ) +BZ_IO_ERROR + if ferror(f) is nonzero +BZ_MEM_ERROR + if insufficient memory is available +BZ_OK + otherwise. + + +Possible return values: + + +Pointer to an abstract BZFILE + if bzerror is BZ_OK +NULL + otherwise + + +Allowable next actions: + + +BZ2_bzRead + if bzerror is BZ_OK +BZ2_bzClose + otherwise + + + + + + +BZ2_bzRead + + +int BZ2_bzRead ( int *bzerror, BZFILE *b, void *buf, int len ); + + +Reads up to len +(uncompressed) bytes from the compressed file +b into the buffer +buf. If the read was +successful, bzerror is set to +BZ_OK and the number of bytes +read is returned. If the logical end-of-stream was detected, +bzerror will be set to +BZ_STREAM_END, and the number of +bytes read is returned. All other +bzerror values denote an +error. + +BZ2_bzRead will supply +len bytes, unless the logical +stream end is detected or an error occurs. Because of this, it +is possible to detect the stream end by observing when the number +of bytes returned is less than the number requested. +Nevertheless, this is regarded as inadvisable; you should instead +check bzerror after every call +and watch out for +BZ_STREAM_END. + +Internally, BZ2_bzRead +copies data from the compressed file in chunks of size +BZ_MAX_UNUSED bytes before +decompressing it. If the file contains more bytes than strictly +needed to reach the logical end-of-stream, +BZ2_bzRead will almost certainly +read some of the trailing data before signalling +BZ_SEQUENCE_END. To collect the +read but unused data once +BZ_SEQUENCE_END has appeared, +call BZ2_bzReadGetUnused +immediately before +BZ2_bzReadClose. + +Possible assignments to +bzerror: + + +BZ_PARAM_ERROR + if b is NULL or buf is NULL or len < 0 +BZ_SEQUENCE_ERROR + if b was opened with BZ2_bzWriteOpen +BZ_IO_ERROR + if there is an error reading from the compressed file +BZ_UNEXPECTED_EOF + if the compressed file ended before + the logical end-of-stream was detected +BZ_DATA_ERROR + if a data integrity error was detected in the compressed stream +BZ_DATA_ERROR_MAGIC + if the stream does not begin with the requisite header bytes + (ie, is not a bzip2 data file). This is really + a special case of BZ_DATA_ERROR. +BZ_MEM_ERROR + if insufficient memory was available +BZ_STREAM_END + if the logical end of stream was detected. +BZ_OK + otherwise. + + +Possible return values: + + +number of bytes read + if bzerror is BZ_OK or BZ_STREAM_END +undefined + otherwise + + +Allowable next actions: + + +collect data from buf, then BZ2_bzRead or BZ2_bzReadClose + if bzerror is BZ_OK +collect data from buf, then BZ2_bzReadClose or BZ2_bzReadGetUnused + if bzerror is BZ_SEQUENCE_END +BZ2_bzReadClose + otherwise + + + + + + +BZ2_bzReadGetUnused + + +void BZ2_bzReadGetUnused( int* bzerror, BZFILE *b, + void** unused, int* nUnused ); + + +Returns data which was read from the compressed file but +was not needed to get to the logical end-of-stream. +*unused is set to the address of +the data, and *nUnused to the +number of bytes. *nUnused will +be set to a value between 0 and +BZ_MAX_UNUSED inclusive. + +This function may only be called once +BZ2_bzRead has signalled +BZ_STREAM_END but before +BZ2_bzReadClose. + +Possible assignments to +bzerror: + + +BZ_PARAM_ERROR + if b is NULL + or unused is NULL or nUnused is NULL +BZ_SEQUENCE_ERROR + if BZ_STREAM_END has not been signalled + or if b was opened with BZ2_bzWriteOpen +BZ_OK + otherwise + + +Allowable next actions: + + +BZ2_bzReadClose + + + + + + +BZ2_bzReadClose + + +void BZ2_bzReadClose ( int *bzerror, BZFILE *b ); + + +Releases all memory pertaining to the compressed file +b. +BZ2_bzReadClose does not call +fclose on the underlying file +handle, so you should do that yourself if appropriate. +BZ2_bzReadClose should be called +to clean up after all error situations. + +Possible assignments to +bzerror: + + +BZ_SEQUENCE_ERROR + if b was opened with BZ2_bzOpenWrite +BZ_OK + otherwise + + +Allowable next actions: + + +none + + + + + + +BZ2_bzWriteOpen + + +BZFILE *BZ2_bzWriteOpen( int *bzerror, FILE *f, + int blockSize100k, int verbosity, + int workFactor ); + + +Prepare to write compressed data to file handle +f. +f should refer to a file which +has been opened for writing, and for which the error indicator +(ferror(f))is not set. + +For the meaning of parameters +blockSize100k, +verbosity and +workFactor, see +BZ2_bzCompressInit. + +All required memory is allocated at this stage, so if the +call completes successfully, +BZ_MEM_ERROR cannot be signalled +by a subsequent call to +BZ2_bzWrite. + +Possible assignments to +bzerror: + + +BZ_CONFIG_ERROR + if the library has been mis-compiled +BZ_PARAM_ERROR + if f is NULL + or blockSize100k < 1 or blockSize100k > 9 +BZ_IO_ERROR + if ferror(f) is nonzero +BZ_MEM_ERROR + if insufficient memory is available +BZ_OK + otherwise + + +Possible return values: + + +Pointer to an abstract BZFILE + if bzerror is BZ_OK +NULL + otherwise + + +Allowable next actions: + + +BZ2_bzWrite + if bzerror is BZ_OK + (you could go directly to BZ2_bzWriteClose, but this would be pretty pointless) +BZ2_bzWriteClose + otherwise + + + + + + +BZ2_bzWrite + + +void BZ2_bzWrite ( int *bzerror, BZFILE *b, void *buf, int len ); + + +Absorbs len bytes from the +buffer buf, eventually to be +compressed and written to the file. + +Possible assignments to +bzerror: + + +BZ_PARAM_ERROR + if b is NULL or buf is NULL or len < 0 +BZ_SEQUENCE_ERROR + if b was opened with BZ2_bzReadOpen +BZ_IO_ERROR + if there is an error writing the compressed file. +BZ_OK + otherwise + + + + + + +BZ2_bzWriteClose + + +void BZ2_bzWriteClose( int *bzerror, BZFILE* f, + int abandon, + unsigned int* nbytes_in, + unsigned int* nbytes_out ); + +void BZ2_bzWriteClose64( int *bzerror, BZFILE* f, + int abandon, + unsigned int* nbytes_in_lo32, + unsigned int* nbytes_in_hi32, + unsigned int* nbytes_out_lo32, + unsigned int* nbytes_out_hi32 ); + + +Compresses and flushes to the compressed file all data so +far supplied by BZ2_bzWrite. +The logical end-of-stream markers are also written, so subsequent +calls to BZ2_bzWrite are +illegal. All memory associated with the compressed file +b is released. +fflush is called on the +compressed file, but it is not +fclose'd. + +If BZ2_bzWriteClose is +called to clean up after an error, the only action is to release +the memory. The library records the error codes issued by +previous calls, so this situation will be detected automatically. +There is no attempt to complete the compression operation, nor to +fflush the compressed file. You +can force this behaviour to happen even in the case of no error, +by passing a nonzero value to +abandon. + +If nbytes_in is non-null, +*nbytes_in will be set to be the +total volume of uncompressed data handled. Similarly, +nbytes_out will be set to the +total volume of compressed data written. For compatibility with +older versions of the library, +BZ2_bzWriteClose only yields the +lower 32 bits of these counts. Use +BZ2_bzWriteClose64 if you want +the full 64 bit counts. These two functions are otherwise +absolutely identical. + +Possible assignments to +bzerror: + + +BZ_SEQUENCE_ERROR + if b was opened with BZ2_bzReadOpen +BZ_IO_ERROR + if there is an error writing the compressed file +BZ_OK + otherwise + + + + + + +Handling embedded compressed data streams + +The high-level library facilitates use of +bzip2 data streams which form +some part of a surrounding, larger data stream. + + + + For writing, the library takes an open file handle, + writes compressed data to it, + fflushes it but does not + fclose it. The calling + application can write its own data before and after the + compressed data stream, using that same file handle. + + Reading is more complex, and the facilities are not as + general as they could be since generality is hard to reconcile + with efficiency. BZ2_bzRead + reads from the compressed file in blocks of size + BZ_MAX_UNUSED bytes, and in + doing so probably will overshoot the logical end of compressed + stream. To recover this data once decompression has ended, + call BZ2_bzReadGetUnused after + the last call of BZ2_bzRead + (the one returning + BZ_STREAM_END) but before + calling + BZ2_bzReadClose. + + + +This mechanism makes it easy to decompress multiple +bzip2 streams placed end-to-end. +As the end of one stream, when +BZ2_bzRead returns +BZ_STREAM_END, call +BZ2_bzReadGetUnused to collect +the unused data (copy it into your own buffer somewhere). That +data forms the start of the next compressed stream. To start +uncompressing that next stream, call +BZ2_bzReadOpen again, feeding in +the unused data via the unused / +nUnused parameters. Keep doing +this until BZ_STREAM_END return +coincides with the physical end of file +(feof(f)). In this situation +BZ2_bzReadGetUnused will of +course return no data. + +This should give some feel for how the high-level interface +can be used. If you require extra flexibility, you'll have to +bite the bullet and get to grips with the low-level +interface. + + + + + +Standard file-reading/writing code + +Here's how you'd write data to a compressed file: + + +FILE* f; +BZFILE* b; +int nBuf; +char buf[ /* whatever size you like */ ]; +int bzerror; +int nWritten; + +f = fopen ( "myfile.bz2", "w" ); +if ( !f ) { + /* handle error */ +} +b = BZ2_bzWriteOpen( &bzerror, f, 9 ); +if (bzerror != BZ_OK) { + BZ2_bzWriteClose ( b ); + /* handle error */ +} + +while ( /* condition */ ) { + /* get data to write into buf, and set nBuf appropriately */ + nWritten = BZ2_bzWrite ( &bzerror, b, buf, nBuf ); + if (bzerror == BZ_IO_ERROR) { + BZ2_bzWriteClose ( &bzerror, b ); + /* handle error */ + } +} + +BZ2_bzWriteClose( &bzerror, b ); +if (bzerror == BZ_IO_ERROR) { + /* handle error */ +} + + +And to read from a compressed file: + + +FILE* f; +BZFILE* b; +int nBuf; +char buf[ /* whatever size you like */ ]; +int bzerror; +int nWritten; + +f = fopen ( "myfile.bz2", "r" ); +if ( !f ) { + /* handle error */ +} +b = BZ2_bzReadOpen ( &bzerror, f, 0, NULL, 0 ); +if ( bzerror != BZ_OK ) { + BZ2_bzReadClose ( &bzerror, b ); + /* handle error */ +} + +bzerror = BZ_OK; +while ( bzerror == BZ_OK && /* arbitrary other conditions */) { + nBuf = BZ2_bzRead ( &bzerror, b, buf, /* size of buf */ ); + if ( bzerror == BZ_OK ) { + /* do something with buf[0 .. nBuf-1] */ + } +} +if ( bzerror != BZ_STREAM_END ) { + BZ2_bzReadClose ( &bzerror, b ); + /* handle error */ +} else { + BZ2_bzReadClose ( &bzerror, b ); +} + + + + + + + + +Utility functions + + + +BZ2_bzBuffToBuffCompress + + +int BZ2_bzBuffToBuffCompress( char* dest, + unsigned int* destLen, + char* source, + unsigned int sourceLen, + int blockSize100k, + int verbosity, + int workFactor ); + + +Attempts to compress the data in source[0 +.. sourceLen-1] into the destination buffer, +dest[0 .. *destLen-1]. If the +destination buffer is big enough, +*destLen is set to the size of +the compressed data, and BZ_OK +is returned. If the compressed data won't fit, +*destLen is unchanged, and +BZ_OUTBUFF_FULL is +returned. + +Compression in this manner is a one-shot event, done with a +single call to this function. The resulting compressed data is a +complete bzip2 format data +stream. There is no mechanism for making additional calls to +provide extra input data. If you want that kind of mechanism, +use the low-level interface. + +For the meaning of parameters +blockSize100k, +verbosity and +workFactor, see +BZ2_bzCompressInit. + +To guarantee that the compressed data will fit in its +buffer, allocate an output buffer of size 1% larger than the +uncompressed data, plus six hundred extra bytes. + +BZ2_bzBuffToBuffDecompress +will not write data at or beyond +dest[*destLen], even in case of +buffer overflow. + +Possible return values: + + +BZ_CONFIG_ERROR + if the library has been mis-compiled +BZ_PARAM_ERROR + if dest is NULL or destLen is NULL + or blockSize100k < 1 or blockSize100k > 9 + or verbosity < 0 or verbosity > 4 + or workFactor < 0 or workFactor > 250 +BZ_MEM_ERROR + if insufficient memory is available +BZ_OUTBUFF_FULL + if the size of the compressed data exceeds *destLen +BZ_OK + otherwise + + + + + + +BZ2_bzBuffToBuffDecompress + + +int BZ2_bzBuffToBuffDecompress( char* dest, + unsigned int* destLen, + char* source, + unsigned int sourceLen, + int small, + int verbosity ); + + +Attempts to decompress the data in source[0 +.. sourceLen-1] into the destination buffer, +dest[0 .. *destLen-1]. If the +destination buffer is big enough, +*destLen is set to the size of +the uncompressed data, and BZ_OK +is returned. If the compressed data won't fit, +*destLen is unchanged, and +BZ_OUTBUFF_FULL is +returned. + +source is assumed to hold +a complete bzip2 format data +stream. +BZ2_bzBuffToBuffDecompress tries +to decompress the entirety of the stream into the output +buffer. + +For the meaning of parameters +small and +verbosity, see +BZ2_bzDecompressInit. + +Because the compression ratio of the compressed data cannot +be known in advance, there is no easy way to guarantee that the +output buffer will be big enough. You may of course make +arrangements in your code to record the size of the uncompressed +data, but such a mechanism is beyond the scope of this +library. + +BZ2_bzBuffToBuffDecompress +will not write data at or beyond +dest[*destLen], even in case of +buffer overflow. + +Possible return values: + + +BZ_CONFIG_ERROR + if the library has been mis-compiled +BZ_PARAM_ERROR + if dest is NULL or destLen is NULL + or small != 0 && small != 1 + or verbosity < 0 or verbosity > 4 +BZ_MEM_ERROR + if insufficient memory is available +BZ_OUTBUFF_FULL + if the size of the compressed data exceeds *destLen +BZ_DATA_ERROR + if a data integrity error was detected in the compressed data +BZ_DATA_ERROR_MAGIC + if the compressed data doesn't begin with the right magic bytes +BZ_UNEXPECTED_EOF + if the compressed data ends unexpectedly +BZ_OK + otherwise + + + + + + + + +zlib compatibility functions + +Yoshioka Tsuneo has contributed some functions to give +better zlib compatibility. +These functions are BZ2_bzopen, +BZ2_bzread, +BZ2_bzwrite, +BZ2_bzflush, +BZ2_bzclose, +BZ2_bzerror and +BZ2_bzlibVersion. These +functions are not (yet) officially part of the library. If they +break, you get to keep all the pieces. Nevertheless, I think +they work ok. + + +typedef void BZFILE; + +const char * BZ2_bzlibVersion ( void ); + + +Returns a string indicating the library version. + + +BZFILE * BZ2_bzopen ( const char *path, const char *mode ); +BZFILE * BZ2_bzdopen ( int fd, const char *mode ); + + +Opens a .bz2 file for +reading or writing, using either its name or a pre-existing file +descriptor. Analogous to fopen +and fdopen. + + +int BZ2_bzread ( BZFILE* b, void* buf, int len ); +int BZ2_bzwrite ( BZFILE* b, void* buf, int len ); + + +Reads/writes data from/to a previously opened +BZFILE. Analogous to +fread and +fwrite. + + +int BZ2_bzflush ( BZFILE* b ); +void BZ2_bzclose ( BZFILE* b ); + + +Flushes/closes a BZFILE. +BZ2_bzflush doesn't actually do +anything. Analogous to fflush +and fclose. + + +const char * BZ2_bzerror ( BZFILE *b, int *errnum ) + + +Returns a string describing the more recent error status of +b, and also sets +*errnum to its numerical +value. + + + + + +Using the library in a stdio-free environment + + + +Getting rid of stdio + +In a deeply embedded application, you might want to use +just the memory-to-memory functions. You can do this +conveniently by compiling the library with preprocessor symbol +BZ_NO_STDIO defined. Doing this +gives you a library containing only the following eight +functions: + +BZ2_bzCompressInit, +BZ2_bzCompress, +BZ2_bzCompressEnd +BZ2_bzDecompressInit, +BZ2_bzDecompress, +BZ2_bzDecompressEnd +BZ2_bzBuffToBuffCompress, +BZ2_bzBuffToBuffDecompress + +When compiled like this, all functions will ignore +verbosity settings. + + + + + +Critical error handling + +libbzip2 contains a number +of internal assertion checks which should, needless to say, never +be activated. Nevertheless, if an assertion should fail, +behaviour depends on whether or not the library was compiled with +BZ_NO_STDIO set. + +For a normal compile, an assertion failure yields the +message: + +
+bzip2/libbzip2: internal error number N. +This is a bug in bzip2/libbzip2, &bz-version; of &bz-date;. +Please report it to me at: &bz-email;. If this happened +when you were using some program which uses libbzip2 as a +component, you should also report this bug to the author(s) +of that program. Please make an effort to report this bug; +timely and accurate bug reports eventually lead to higher +quality software. Thanks. Julian Seward, &bz-date;. +
+ +where N is some error code +number. If N == 1007, it also +prints some extra text advising the reader that unreliable memory +is often associated with internal error 1007. (This is a +frequently-observed-phenomenon with versions 1.0.0/1.0.1). + +exit(3) is then +called. + +For a stdio-free library, +assertion failures result in a call to a function declared +as: + + +extern void bz_internal_error ( int errcode ); + + +The relevant code is passed as a parameter. You should +supply such a function. + +In either case, once an assertion failure has occurred, any +bz_stream records involved can +be regarded as invalid. You should not attempt to resume normal +operation with them. + +You may, of course, change critical error handling to suit +your needs. As I said above, critical errors indicate bugs in +the library and should not occur. All "normal" error situations +are indicated via error return codes from functions, and can be +recovered from. + +
+ +
+ + + +Making a Windows DLL + +Everything related to Windows has been contributed by +Yoshioka Tsuneo +(tsuneo@rr.iij4u.or.jp), so +you should send your queries to him (but perhaps Cc: me, +&bz-email;). + +My vague understanding of what to do is: using Visual C++ +5.0, open the project file +libbz2.dsp, and build. That's +all. + +If you can't open the project file for some reason, make a +new one, naming these files: +blocksort.c, +bzlib.c, +compress.c, +crctable.c, +decompress.c, +huffman.c, +randtable.c and +libbz2.def. You will also need +to name the header files bzlib.h +and bzlib_private.h. + +If you don't use VC++, you may need to define the +proprocessor symbol +_WIN32. + +Finally, dlltest.c is a +sample program using the DLL. It has a project file, +dlltest.dsp. + +If you just want a makefile for Visual C, have a look at +makefile.msc. + +Be aware that if you compile +bzip2 itself on Win32, you must +set BZ_UNIX to 0 and +BZ_LCCWIN32 to 1, in the file +bzip2.c, before compiling. +Otherwise the resulting binary won't work correctly. + +I haven't tried any of this stuff myself, but it all looks +plausible. + + + +
+ + + + +Miscellanea + +These are just some random thoughts of mine. Your mileage +may vary. + + + +Limitations of the compressed file format + +bzip2-1.0.X, +0.9.5 and +0.9.0 use exactly the same file +format as the original version, +bzip2-0.1. This decision was +made in the interests of stability. Creating yet another +incompatible compressed file format would create further +confusion and disruption for users. + +Nevertheless, this is not a painless decision. Development +work since the release of +bzip2-0.1 in August 1997 has +shown complexities in the file format which slow down +decompression and, in retrospect, are unnecessary. These +are: + + + + The run-length encoder, which is the first of the + compression transformations, is entirely irrelevant. The + original purpose was to protect the sorting algorithm from the + very worst case input: a string of repeated symbols. But + algorithm steps Q6a and Q6b in the original Burrows-Wheeler + technical report (SRC-124) show how repeats can be handled + without difficulty in block sorting. + + The randomisation mechanism doesn't really need to be + there. Udi Manber and Gene Myers published a suffix array + construction algorithm a few years back, which can be employed + to sort any block, no matter how repetitive, in O(N log N) + time. Subsequent work by Kunihiko Sadakane has produced a + derivative O(N (log N)^2) algorithm which usually outperforms + the Manber-Myers algorithm. + + I could have changed to Sadakane's algorithm, but I find + it to be slower than bzip2's + existing algorithm for most inputs, and the randomisation + mechanism protects adequately against bad cases. I didn't + think it was a good tradeoff to make. Partly this is due to + the fact that I was not flooded with email complaints about + bzip2-0.1's performance on + repetitive data, so perhaps it isn't a problem for real + inputs. + + Probably the best long-term solution, and the one I have + incorporated into 0.9.5 and above, is to use the existing + sorting algorithm initially, and fall back to a O(N (log N)^2) + algorithm if the standard algorithm gets into + difficulties. + + The compressed file format was never designed to be + handled by a library, and I have had to jump though some hoops + to produce an efficient implementation of decompression. It's + a bit hairy. Try passing + decompress.c through the C + preprocessor and you'll see what I mean. Much of this + complexity could have been avoided if the compressed size of + each block of data was recorded in the data stream. + + An Adler-32 checksum, rather than a CRC32 checksum, + would be faster to compute. + + + +It would be fair to say that the +bzip2 format was frozen before I +properly and fully understood the performance consequences of +doing so. + +Improvements which I was able to incorporate into 0.9.0, +despite using the same file format, are: + + + + Single array implementation of the inverse BWT. This + significantly speeds up decompression, presumably because it + reduces the number of cache misses. + + Faster inverse MTF transform for large MTF values. + The new implementation is based on the notion of sliding blocks + of values. + + bzip2-0.9.0 now reads + and writes files with fread + and fwrite; version 0.1 used + putc and + getc. Duh! Well, you live + and learn. + + + +Further ahead, it would be nice to be able to do random +access into files. This will require some careful design of +compressed file formats. + + + + + +Portability issues + +After some consideration, I have decided not to use GNU +autoconf to configure 0.9.5 or +1.0. + +autoconf, admirable and +wonderful though it is, mainly assists with portability problems +between Unix-like platforms. But +bzip2 doesn't have much in the +way of portability problems on Unix; most of the difficulties +appear when porting to the Mac, or to Microsoft's operating +systems. autoconf doesn't help +in those cases, and brings in a whole load of new +complexity. + +Most people should be able to compile the library and +program under Unix straight out-of-the-box, so to speak, +especially if you have a version of GNU C available. + +There are a couple of +__inline__ directives in the +code. GNU C (gcc) should be +able to handle them. If you're not using GNU C, your C compiler +shouldn't see them at all. If your compiler does, for some +reason, see them and doesn't like them, just +#define +__inline__ to be +/* */. One easy way to do this +is to compile with the flag +-D__inline__=, which should be +understood by most Unix compilers. + +If you still have difficulties, try compiling with the +macro BZ_STRICT_ANSI defined. +This should enable you to build the library in a strictly ANSI +compliant environment. Building the program itself like this is +dangerous and not supported, since you remove +bzip2's checks against +compressing directories, symbolic links, devices, and other +not-really-a-file entities. This could cause filesystem +corruption! + +One other thing: if you create a +bzip2 binary for public distribution, +please consider linking it statically (gcc +-static). This avoids all sorts of library-version +issues that others may encounter later on. + +If you build bzip2 on +Win32, you must set BZ_UNIX to 0 +and BZ_LCCWIN32 to 1, in the +file bzip2.c, before compiling. +Otherwise the resulting binary won't work correctly. + + + + + +Reporting bugs + +I tried pretty hard to make sure +bzip2 is bug free, both by +design and by testing. Hopefully you'll never need to read this +section for real. + +Nevertheless, if bzip2 dies +with a segmentation fault, a bus error or an internal assertion +failure, it will ask you to email me a bug report. Experience from +years of feedback of bzip2 users indicates that almost all these +problems can be traced to either compiler bugs or hardware +problems. + + + + Recompile the program with no optimisation, and + see if it works. And/or try a different compiler. I heard all + sorts of stories about various flavours of GNU C (and other + compilers) generating bad code for + bzip2, and I've run across two + such examples myself. + + 2.7.X versions of GNU C are known to generate bad code + from time to time, at high optimisation levels. If you get + problems, try using the flags + -O2 + -fomit-frame-pointer + -fno-strength-reduce. You + should specifically not use + -funroll-loops. + + You may notice that the Makefile runs six tests as part + of the build process. If the program passes all of these, it's + a pretty good (but not 100%) indication that the compiler has + done its job correctly. + + If bzip2 + crashes randomly, and the crashes are not repeatable, you may + have a flaky memory subsystem. + bzip2 really hammers your + memory hierarchy, and if it's a bit marginal, you may get these + problems. Ditto if your disk or I/O subsystem is slowly + failing. Yup, this really does happen. + + Try using a different machine of the same type, and see + if you can repeat the problem. + + This isn't really a bug, but ... If + bzip2 tells you your file is + corrupted on decompression, and you obtained the file via FTP, + there is a possibility that you forgot to tell FTP to do a + binary mode transfer. That absolutely will cause the file to + be non-decompressible. You'll have to transfer it + again. + + + +If you've incorporated +libbzip2 into your own program +and are getting problems, please, please, please, check that the +parameters you are passing in calls to the library, are correct, +and in accordance with what the documentation says is allowable. +I have tried to make the library robust against such problems, +but I'm sure I haven't succeeded. + +Finally, if the above comments don't help, you'll have to +send me a bug report. Now, it's just amazing how many people +will send me a bug report saying something like: + + +bzip2 crashed with segmentation fault on my machine + + +and absolutely nothing else. Needless to say, a such a +report is totally, utterly, completely and +comprehensively 100% useless; a waste of your time, my time, and +net bandwidth. With no details at all, there's no way +I can possibly begin to figure out what the problem is. + +The rules of the game are: facts, facts, facts. Don't omit +them because "oh, they won't be relevant". At the bare +minimum: + + +Machine type. Operating system version. +Exact version of bzip2 (do bzip2 -V). +Exact version of the compiler used. +Flags passed to the compiler. + + +However, the most important single thing that will help me +is the file that you were trying to compress or decompress at the +time the problem happened. Without that, my ability to do +anything more than speculate about the cause, is limited. + + + + + +Did you get the right package? + +bzip2 is a resource hog. +It soaks up large amounts of CPU cycles and memory. Also, it +gives very large latencies. In the worst case, you can feed many +megabytes of uncompressed data into the library before getting +any compressed output, so this probably rules out applications +requiring interactive behaviour. + +These aren't faults of my implementation, I hope, but more +an intrinsic property of the Burrows-Wheeler transform +(unfortunately). Maybe this isn't what you want. + +If you want a compressor and/or library which is faster, +uses less memory but gets pretty good compression, and has +minimal latency, consider Jean-loup Gailly's and Mark Adler's +work, zlib-1.2.1 and +gzip-1.2.4. Look for them at +http://www.zlib.org and +http://www.gzip.org +respectively. + +For something faster and lighter still, you might try Markus F +X J Oberhumer's LZO real-time +compression/decompression library, at +http://www.oberhumer.com/opensource. + + + + + + +Further Reading + +bzip2 is not research +work, in the sense that it doesn't present any new ideas. +Rather, it's an engineering exercise based on existing +ideas. + +Four documents describe essentially all the ideas behind +bzip2: + +Michael Burrows and D. J. Wheeler: + "A block-sorting lossless data compression algorithm" + 10th May 1994. + Digital SRC Research Report 124. + ftp://ftp.digital.com/pub/DEC/SRC/research-reports/SRC-124.ps.gz + If you have trouble finding it, try searching at the + New Zealand Digital Library, http://www.nzdl.org. + +Daniel S. Hirschberg and Debra A. LeLewer + "Efficient Decoding of Prefix Codes" + Communications of the ACM, April 1990, Vol 33, Number 4. + You might be able to get an electronic copy of this + from the ACM Digital Library. + +David J. Wheeler + Program bred3.c and accompanying document bred3.ps. + This contains the idea behind the multi-table Huffman coding scheme. + ftp://ftp.cl.cam.ac.uk/users/djw3/ + +Jon L. Bentley and Robert Sedgewick + "Fast Algorithms for Sorting and Searching Strings" + Available from Sedgewick's web page, + www.cs.princeton.edu/~rs + + +The following paper gives valuable additional insights into +the algorithm, but is not immediately the basis of any code used +in bzip2. + +Peter Fenwick: + Block Sorting Text Compression + Proceedings of the 19th Australasian Computer Science Conference, + Melbourne, Australia. Jan 31 - Feb 2, 1996. + ftp://ftp.cs.auckland.ac.nz/pub/peter-f/ACSC96paper.ps + +Kunihiko Sadakane's sorting algorithm, mentioned above, is +available from: + +http://naomi.is.s.u-tokyo.ac.jp/~sada/papers/Sada98b.ps.gz + + +The Manber-Myers suffix array construction algorithm is +described in a paper available from: + +http://www.cs.arizona.edu/people/gene/PAPERS/suffix.ps + + +Finally, the following papers document some +investigations I made into the performance of sorting +and decompression algorithms: + +Julian Seward + On the Performance of BWT Sorting Algorithms + Proceedings of the IEEE Data Compression Conference 2000 + Snowbird, Utah. 28-30 March 2000. + +Julian Seward + Space-time Tradeoffs in the Inverse B-W Transform + Proceedings of the IEEE Data Compression Conference 2001 + Snowbird, Utah. 27-29 March 2001. + + + + + + +
diff --git a/plugins/Updater/bzip2-1.0.3/mk251.c b/plugins/Updater/bzip2-1.0.3/mk251.c new file mode 100644 index 0000000000..c9c36f6c48 --- /dev/null +++ b/plugins/Updater/bzip2-1.0.3/mk251.c @@ -0,0 +1,31 @@ + +/* Spew out a long sequence of the byte 251. When fed to bzip2 + versions 1.0.0 or 1.0.1, causes it to die with internal error + 1007 in blocksort.c. This assertion misses an extremely rare + case, which is fixed in this version (1.0.2) and above. +*/ + +/* ------------------------------------------------------------------ + This file is part of bzip2/libbzip2, a program and library for + lossless, block-sorting data compression. + + bzip2/libbzip2 version 1.0.6 of 6 September 2010 + Copyright (C) 1996-2010 Julian Seward + + Please read the WARNING, DISCLAIMER and PATENTS sections in the + README file. + + This program is released under the terms of the license contained + in the file LICENSE. + ------------------------------------------------------------------ */ + + +#include + +int main () +{ + int i; + for (i = 0; i < 48500000 ; i++) + putchar(251); + return 0; +} diff --git a/plugins/Updater/bzip2-1.0.3/randtable.c b/plugins/Updater/bzip2-1.0.3/randtable.c new file mode 100644 index 0000000000..6d62459906 --- /dev/null +++ b/plugins/Updater/bzip2-1.0.3/randtable.c @@ -0,0 +1,84 @@ + +/*-------------------------------------------------------------*/ +/*--- Table for randomising repetitive blocks ---*/ +/*--- randtable.c ---*/ +/*-------------------------------------------------------------*/ + +/* ------------------------------------------------------------------ + This file is part of bzip2/libbzip2, a program and library for + lossless, block-sorting data compression. + + bzip2/libbzip2 version 1.0.6 of 6 September 2010 + Copyright (C) 1996-2010 Julian Seward + + Please read the WARNING, DISCLAIMER and PATENTS sections in the + README file. + + This program is released under the terms of the license contained + in the file LICENSE. + ------------------------------------------------------------------ */ + + +#include "bzlib_private.h" + + +/*---------------------------------------------*/ +Int32 BZ2_rNums[512] = { + 619, 720, 127, 481, 931, 816, 813, 233, 566, 247, + 985, 724, 205, 454, 863, 491, 741, 242, 949, 214, + 733, 859, 335, 708, 621, 574, 73, 654, 730, 472, + 419, 436, 278, 496, 867, 210, 399, 680, 480, 51, + 878, 465, 811, 169, 869, 675, 611, 697, 867, 561, + 862, 687, 507, 283, 482, 129, 807, 591, 733, 623, + 150, 238, 59, 379, 684, 877, 625, 169, 643, 105, + 170, 607, 520, 932, 727, 476, 693, 425, 174, 647, + 73, 122, 335, 530, 442, 853, 695, 249, 445, 515, + 909, 545, 703, 919, 874, 474, 882, 500, 594, 612, + 641, 801, 220, 162, 819, 984, 589, 513, 495, 799, + 161, 604, 958, 533, 221, 400, 386, 867, 600, 782, + 382, 596, 414, 171, 516, 375, 682, 485, 911, 276, + 98, 553, 163, 354, 666, 933, 424, 341, 533, 870, + 227, 730, 475, 186, 263, 647, 537, 686, 600, 224, + 469, 68, 770, 919, 190, 373, 294, 822, 808, 206, + 184, 943, 795, 384, 383, 461, 404, 758, 839, 887, + 715, 67, 618, 276, 204, 918, 873, 777, 604, 560, + 951, 160, 578, 722, 79, 804, 96, 409, 713, 940, + 652, 934, 970, 447, 318, 353, 859, 672, 112, 785, + 645, 863, 803, 350, 139, 93, 354, 99, 820, 908, + 609, 772, 154, 274, 580, 184, 79, 626, 630, 742, + 653, 282, 762, 623, 680, 81, 927, 626, 789, 125, + 411, 521, 938, 300, 821, 78, 343, 175, 128, 250, + 170, 774, 972, 275, 999, 639, 495, 78, 352, 126, + 857, 956, 358, 619, 580, 124, 737, 594, 701, 612, + 669, 112, 134, 694, 363, 992, 809, 743, 168, 974, + 944, 375, 748, 52, 600, 747, 642, 182, 862, 81, + 344, 805, 988, 739, 511, 655, 814, 334, 249, 515, + 897, 955, 664, 981, 649, 113, 974, 459, 893, 228, + 433, 837, 553, 268, 926, 240, 102, 654, 459, 51, + 686, 754, 806, 760, 493, 403, 415, 394, 687, 700, + 946, 670, 656, 610, 738, 392, 760, 799, 887, 653, + 978, 321, 576, 617, 626, 502, 894, 679, 243, 440, + 680, 879, 194, 572, 640, 724, 926, 56, 204, 700, + 707, 151, 457, 449, 797, 195, 791, 558, 945, 679, + 297, 59, 87, 824, 713, 663, 412, 693, 342, 606, + 134, 108, 571, 364, 631, 212, 174, 643, 304, 329, + 343, 97, 430, 751, 497, 314, 983, 374, 822, 928, + 140, 206, 73, 263, 980, 736, 876, 478, 430, 305, + 170, 514, 364, 692, 829, 82, 855, 953, 676, 246, + 369, 970, 294, 750, 807, 827, 150, 790, 288, 923, + 804, 378, 215, 828, 592, 281, 565, 555, 710, 82, + 896, 831, 547, 261, 524, 462, 293, 465, 502, 56, + 661, 821, 976, 991, 658, 869, 905, 758, 745, 193, + 768, 550, 608, 933, 378, 286, 215, 979, 792, 961, + 61, 688, 793, 644, 986, 403, 106, 366, 905, 644, + 372, 567, 466, 434, 645, 210, 389, 550, 919, 135, + 780, 773, 635, 389, 707, 100, 626, 958, 165, 504, + 920, 176, 193, 713, 857, 265, 203, 50, 668, 108, + 645, 990, 626, 197, 510, 357, 358, 850, 858, 364, + 936, 638 +}; + + +/*-------------------------------------------------------------*/ +/*--- end randtable.c ---*/ +/*-------------------------------------------------------------*/ diff --git a/plugins/Updater/bzip2-1.0.3/sample1.bz2 b/plugins/Updater/bzip2-1.0.3/sample1.bz2 new file mode 100644 index 0000000000..18dea60043 Binary files /dev/null and b/plugins/Updater/bzip2-1.0.3/sample1.bz2 differ diff --git a/plugins/Updater/bzip2-1.0.3/sample1.ref b/plugins/Updater/bzip2-1.0.3/sample1.ref new file mode 100644 index 0000000000..a56e52b77f Binary files /dev/null and b/plugins/Updater/bzip2-1.0.3/sample1.ref differ diff --git a/plugins/Updater/bzip2-1.0.3/sample2.bz2 b/plugins/Updater/bzip2-1.0.3/sample2.bz2 new file mode 100644 index 0000000000..d5a6160ba2 Binary files /dev/null and b/plugins/Updater/bzip2-1.0.3/sample2.bz2 differ diff --git a/plugins/Updater/bzip2-1.0.3/sample2.ref b/plugins/Updater/bzip2-1.0.3/sample2.ref new file mode 100644 index 0000000000..34af95839a Binary files /dev/null and b/plugins/Updater/bzip2-1.0.3/sample2.ref differ diff --git a/plugins/Updater/bzip2-1.0.3/sample3.bz2 b/plugins/Updater/bzip2-1.0.3/sample3.bz2 new file mode 100644 index 0000000000..d90cff9208 Binary files /dev/null and b/plugins/Updater/bzip2-1.0.3/sample3.bz2 differ diff --git a/plugins/Updater/bzip2-1.0.3/sample3.ref b/plugins/Updater/bzip2-1.0.3/sample3.ref new file mode 100644 index 0000000000..775a2f68e2 --- /dev/null +++ b/plugins/Updater/bzip2-1.0.3/sample3.ref @@ -0,0 +1,30007 @@ +This file is exceedingly boring. If you find yourself +reading it, please (1) take it from me that you can safely +guess what the rest of the file says, and (2) seek professional +help. + +ps. there are no further sarcastic remarks in this file. + +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh diff --git a/plugins/Updater/bzip2-1.0.3/spewG.c b/plugins/Updater/bzip2-1.0.3/spewG.c new file mode 100644 index 0000000000..14a364938d --- /dev/null +++ b/plugins/Updater/bzip2-1.0.3/spewG.c @@ -0,0 +1,54 @@ + +/* spew out a thoroughly gigantic file designed so that bzip2 + can compress it reasonably rapidly. This is to help test + support for large files (> 2GB) in a reasonable amount of time. + I suggest you use the undocumented --exponential option to + bzip2 when compressing the resulting file; this saves a bit of + time. Note: *don't* bother with --exponential when compressing + Real Files; it'll just waste a lot of CPU time :-) + (but is otherwise harmless). +*/ + +/* ------------------------------------------------------------------ + This file is part of bzip2/libbzip2, a program and library for + lossless, block-sorting data compression. + + bzip2/libbzip2 version 1.0.6 of 6 September 2010 + Copyright (C) 1996-2010 Julian Seward + + Please read the WARNING, DISCLAIMER and PATENTS sections in the + README file. + + This program is released under the terms of the license contained + in the file LICENSE. + ------------------------------------------------------------------ */ + + +#define _FILE_OFFSET_BITS 64 + +#include +#include + +/* The number of megabytes of junk to spew out (roughly) */ +#define MEGABYTES 5000 + +#define N_BUF 1000000 +char buf[N_BUF]; + +int main ( int argc, char** argv ) +{ + int ii, kk, p; + srandom(1); + setbuffer ( stdout, buf, N_BUF ); + for (kk = 0; kk < MEGABYTES * 515; kk+=3) { + p = 25+random()%50; + for (ii = 0; ii < p; ii++) + printf ( "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" ); + for (ii = 0; ii < p-1; ii++) + printf ( "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" ); + for (ii = 0; ii < p+1; ii++) + printf ( "ccccccccccccccccccccccccccccccccccccc" ); + } + fflush(stdout); + return 0; +} diff --git a/plugins/Updater/bzip2-1.0.3/unzcrash.c b/plugins/Updater/bzip2-1.0.3/unzcrash.c new file mode 100644 index 0000000000..7041da51c9 --- /dev/null +++ b/plugins/Updater/bzip2-1.0.3/unzcrash.c @@ -0,0 +1,141 @@ + +/* A test program written to test robustness to decompression of + corrupted data. Usage is + unzcrash filename + and the program will read the specified file, compress it (in memory), + and then repeatedly decompress it, each time with a different bit of + the compressed data inverted, so as to test all possible one-bit errors. + This should not cause any invalid memory accesses. If it does, + I want to know about it! + + PS. As you can see from the above description, the process is + incredibly slow. A file of size eg 5KB will cause it to run for + many hours. +*/ + +/* ------------------------------------------------------------------ + This file is part of bzip2/libbzip2, a program and library for + lossless, block-sorting data compression. + + bzip2/libbzip2 version 1.0.6 of 6 September 2010 + Copyright (C) 1996-2010 Julian Seward + + Please read the WARNING, DISCLAIMER and PATENTS sections in the + README file. + + This program is released under the terms of the license contained + in the file LICENSE. + ------------------------------------------------------------------ */ + + +#include +#include +#include "bzlib.h" + +#define M_BLOCK 1000000 + +typedef unsigned char uchar; + +#define M_BLOCK_OUT (M_BLOCK + 1000000) +uchar inbuf[M_BLOCK]; +uchar outbuf[M_BLOCK_OUT]; +uchar zbuf[M_BLOCK + 600 + (M_BLOCK / 100)]; + +int nIn, nOut, nZ; + +static char *bzerrorstrings[] = { + "OK" + ,"SEQUENCE_ERROR" + ,"PARAM_ERROR" + ,"MEM_ERROR" + ,"DATA_ERROR" + ,"DATA_ERROR_MAGIC" + ,"IO_ERROR" + ,"UNEXPECTED_EOF" + ,"OUTBUFF_FULL" + ,"???" /* for future */ + ,"???" /* for future */ + ,"???" /* for future */ + ,"???" /* for future */ + ,"???" /* for future */ + ,"???" /* for future */ +}; + +void flip_bit ( int bit ) +{ + int byteno = bit / 8; + int bitno = bit % 8; + uchar mask = 1 << bitno; + //fprintf ( stderr, "(byte %d bit %d mask %d)", + // byteno, bitno, (int)mask ); + zbuf[byteno] ^= mask; +} + +int main ( int argc, char** argv ) +{ + FILE* f; + int r; + int bit; + int i; + + if (argc != 2) { + fprintf ( stderr, "usage: unzcrash filename\n" ); + return 1; + } + + f = fopen ( argv[1], "r" ); + if (!f) { + fprintf ( stderr, "unzcrash: can't open %s\n", argv[1] ); + return 1; + } + + nIn = fread ( inbuf, 1, M_BLOCK, f ); + fprintf ( stderr, "%d bytes read\n", nIn ); + + nZ = M_BLOCK; + r = BZ2_bzBuffToBuffCompress ( + zbuf, &nZ, inbuf, nIn, 9, 0, 30 ); + + assert (r == BZ_OK); + fprintf ( stderr, "%d after compression\n", nZ ); + + for (bit = 0; bit < nZ*8; bit++) { + fprintf ( stderr, "bit %d ", bit ); + flip_bit ( bit ); + nOut = M_BLOCK_OUT; + r = BZ2_bzBuffToBuffDecompress ( + outbuf, &nOut, zbuf, nZ, 0, 0 ); + fprintf ( stderr, " %d %s ", r, bzerrorstrings[-r] ); + + if (r != BZ_OK) { + fprintf ( stderr, "\n" ); + } else { + if (nOut != nIn) { + fprintf(stderr, "nIn/nOut mismatch %d %d\n", nIn, nOut ); + return 1; + } else { + for (i = 0; i < nOut; i++) + if (inbuf[i] != outbuf[i]) { + fprintf(stderr, "mismatch at %d\n", i ); + return 1; + } + if (i == nOut) fprintf(stderr, "really ok!\n" ); + } + } + + flip_bit ( bit ); + } + +#if 0 + assert (nOut == nIn); + for (i = 0; i < nOut; i++) { + if (inbuf[i] != outbuf[i]) { + fprintf ( stderr, "difference at %d !\n", i ); + return 1; + } + } +#endif + + fprintf ( stderr, "all ok\n" ); + return 0; +} diff --git a/plugins/Updater/bzip2-1.0.3/words0 b/plugins/Updater/bzip2-1.0.3/words0 new file mode 100644 index 0000000000..fbf442ad6b --- /dev/null +++ b/plugins/Updater/bzip2-1.0.3/words0 @@ -0,0 +1,9 @@ + +If compilation produces errors, or a large number of warnings, +please read README.COMPILATION.PROBLEMS -- you might be able to +adjust the flags in this Makefile to improve matters. + +Also in README.COMPILATION.PROBLEMS are some hints that may help +if your build produces an executable which is unable to correctly +handle so-called 'large files' -- files of size 2GB or more. + diff --git a/plugins/Updater/bzip2-1.0.3/words1 b/plugins/Updater/bzip2-1.0.3/words1 new file mode 100644 index 0000000000..2e83de9f08 --- /dev/null +++ b/plugins/Updater/bzip2-1.0.3/words1 @@ -0,0 +1,4 @@ + +Doing 6 tests (3 compress, 3 uncompress) ... +If there's a problem, things might stop at this point. + diff --git a/plugins/Updater/bzip2-1.0.3/words2 b/plugins/Updater/bzip2-1.0.3/words2 new file mode 100644 index 0000000000..caddcf4226 --- /dev/null +++ b/plugins/Updater/bzip2-1.0.3/words2 @@ -0,0 +1,5 @@ + +Checking test results. If any of the four "cmp"s which follow +report any differences, something is wrong. If you can't easily +figure out what, please let me know (jseward@bzip.org). + diff --git a/plugins/Updater/bzip2-1.0.3/words3 b/plugins/Updater/bzip2-1.0.3/words3 new file mode 100644 index 0000000000..6972669906 --- /dev/null +++ b/plugins/Updater/bzip2-1.0.3/words3 @@ -0,0 +1,30 @@ + +If you got this far and the 'cmp's didn't complain, it looks +like you're in business. + +To install in /usr/local/bin, /usr/local/lib, /usr/local/man and +/usr/local/include, type + + make install + +To install somewhere else, eg, /xxx/yyy/{bin,lib,man,include}, type + + make install PREFIX=/xxx/yyy + +If you are (justifiably) paranoid and want to see what 'make install' +is going to do, you can first do + + make -n install or + make -n install PREFIX=/xxx/yyy respectively. + +The -n instructs make to show the commands it would execute, but +not actually execute them. + +Instructions for use are in the preformatted manual page, in the file +bzip2.txt. For more detailed documentation, read the full manual. +It is available in Postscript form (manual.ps), PDF form (manual.pdf), +and HTML form (manual.html). + +You can also do "bzip2 --help" to see some helpful information. +"bzip2 -L" displays the software license. + diff --git a/plugins/Updater/bzip2-1.0.3/xmlproc.sh b/plugins/Updater/bzip2-1.0.3/xmlproc.sh new file mode 100644 index 0000000000..ca284ea9ed --- /dev/null +++ b/plugins/Updater/bzip2-1.0.3/xmlproc.sh @@ -0,0 +1,114 @@ +#!/bin/bash +# see the README file for usage etc. +# +# ------------------------------------------------------------------ +# This file is part of bzip2/libbzip2, a program and library for +# lossless, block-sorting data compression. +# +# bzip2/libbzip2 version 1.0.6 of 6 September 2010 +# Copyright (C) 1996-2010 Julian Seward +# +# Please read the WARNING, DISCLAIMER and PATENTS sections in the +# README file. +# +# This program is released under the terms of the license contained +# in the file LICENSE. +# ---------------------------------------------------------------- + + +usage() { + echo ''; + echo 'Usage: xmlproc.sh -[option] '; + echo 'Specify a target from:'; + echo '-v verify xml file conforms to dtd'; + echo '-html output in html format (single file)'; + echo '-ps output in postscript format'; + echo '-pdf output in pdf format'; + exit; +} + +if test $# -ne 2; then + usage +fi +# assign the variable for the output type +action=$1; shift +# assign the output filename +xmlfile=$1; shift +# and check user input it correct +if !(test -f $xmlfile); then + echo "No such file: $xmlfile"; + exit; +fi +# some other stuff we will use +OUT=output +xsl_fo=bz-fo.xsl +xsl_html=bz-html.xsl + +basename=$xmlfile +basename=${basename//'.xml'/''} + +fofile="${basename}.fo" +htmlfile="${basename}.html" +pdffile="${basename}.pdf" +psfile="${basename}.ps" +xmlfmtfile="${basename}.fmt" + +# first process the xmlfile with CDATA tags +./format.pl $xmlfile $xmlfmtfile +# so the shell knows where the catalogs live +export XML_CATALOG_FILES=/etc/xml/catalog + +# post-processing tidy up +cleanup() { + echo "Cleaning up: $@" + while [ $# != 0 ] + do + arg=$1; shift; + echo " deleting $arg"; + rm $arg + done +} + +case $action in + -v) + flags='--noout --xinclude --noblanks --postvalid' + dtd='--dtdvalid http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd' + xmllint $flags $dtd $xmlfmtfile 2> $OUT + egrep 'error' $OUT + rm $OUT + ;; + + -html) + echo "Creating $htmlfile ..." + xsltproc --nonet --xinclude -o $htmlfile $xsl_html $xmlfmtfile + cleanup $xmlfmtfile + ;; + + -pdf) + echo "Creating $pdffile ..." + xsltproc --nonet --xinclude -o $fofile $xsl_fo $xmlfmtfile + pdfxmltex $fofile >$OUT $OUT $OUT $OUT $OUT $OUT $OUT $OUT $OUT next; + delete current; + } + + count = 0; + head = tail = 0; + reset(); +} + +int UpdateList::size() { + return count; +} + +void UpdateList::reset() { + it_current = head; +} + +void UpdateList::erase() { + if(it_current) { + if(head == it_current) head = head->next; + if(tail == it_current) tail = tail->prev; + + if(it_current->next) it_current->next->prev = it_current->prev; + if(it_current->prev) it_current->prev->next = it_current->next; + + delete it_current; + count--; + reset(); + } +} + +void UpdateList::next() { + if(it_current) it_current = (Node *)it_current->next; +} + +UpdateInternal *UpdateList::current() { + return (it_current ? &it_current->ui : 0); +} + +void UpdateList::push_back(UpdateInternal &update) { + if(tail) { + tail->next = new Node; + tail->next->prev = tail; + tail = tail->next; + } else { + head = tail = new Node; + } + tail->ui = update; + count++; +} + +UpdateInternal &UpdateList::back() { + return tail->ui; +} diff --git a/plugins/Updater/common.h b/plugins/Updater/common.h new file mode 100644 index 0000000000..b1a070f78e --- /dev/null +++ b/plugins/Updater/common.h @@ -0,0 +1,145 @@ +#ifndef _COMMON_INC +#define _COMMON_INC + +#define _CRT_SECURE_NO_DEPRECATE + +#define MIRANDA_VER 0x0A00 + +#include + +#include +#include +#include + +#include +#include + +#include "ezxml.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "m_updater.h" +#include "m_trigger.h" +#include "m_folders.h" + +//#define TESTING // causes version to be 0.0.0.1 +//#define USE_MY_SERVER // uses URLS for scottellis.com.au test site for non-beta +#define REGISTER_BETA // register beta urls for beta site +//#define DEBUG_POPUPS // define to show some popups (restoring status, etc) +//#define _UD_LOGGING // define to log some stuff, from inside the external process, overwriting the data file +//#define DEBUG_HTTP_POPUPS // define to show popups re http +#define REGISTER_AUTO // get updater to automatically collect file listing URL's from backend xml data + +#define BETA_HOST_URL_PREFIX "http://www.scottellis.com.au/miranda_plugins" //(thanks Omniwolf for old twosx webspace, thx Koobs for hosting my domain) + +typedef enum Category {MC_PLUGINS, MC_LOCALIZATION, MC_UNKNOWN, NUM_CATEGORIES}; + +typedef struct UpdateOptions_tag { + bool enabled; // user has enabled updates for this plugin + bool use_beta; // use the beta update data + bool fixed; // use_beta flag is fixed - cannot be changed by user (e.g. szUpdateURL is null, szBetaUpdateURL is not) +} UpdateOptions; + +typedef struct UpdateInternal_tag { + Update update; + UpdateOptions update_options; + int file_id; // miranda file listing id + bool auto_register; + char *newVersion; + + Category cat; + + char *shortName; +} UpdateInternal; + +struct UpdateList : OBJLIST +{ + UpdateList() : OBJLIST(10) {} + UpdateList(const UpdateList& upd) : OBJLIST(10, compareUrl) + { + for (int i=0; iupdate.szBetaVersionURL && !p2->update.szBetaVersionURL) + return 0; + else if (!p1->update.szBetaVersionURL && p2->update.szBetaVersionURL) + return -1; + else if (p1->update.szBetaVersionURL && !p2->update.szBetaVersionURL) + return 1; + else + return _stricmp(p1->update.szBetaVersionURL, p2->update.szBetaVersionURL); + } +}; + +struct StrList : LIST +{ + StrList() : LIST(5) {} + ~StrList() + { + for (int i=0; i FilenameMap; + +#include "resource.h" + +#define MODULE "Updater" + +extern HINSTANCE hInst; +extern PLUGINLINK *pluginLink; +extern PLUGININFOEX pluginInfo; + +extern bool is_idle; + +extern HANDLE hNetlibUser, hNetlibHttp; + +int FindFileInList(const char *name); + +void* memmem (const void *buf1, size_t size1, const void *buf2, size_t size2); + +void NLog(char *msg); +void NLogF(const char *fmt, ...); + +#ifdef _UNICODE +void NLog(wchar_t *msg); +#endif + +// clist 'exit' menu item command id +#define ID_ICQ_EXIT 40001 + +// maximum number of redirects when getting xml data or download files via HTTP +#define MAX_REDIRECT_RECURSE 4 + +#ifndef MIID_UPDATER +#define MIID_UPDATER {0x4a47b19b, 0xde5a, 0x4436, { 0xab, 0x4b, 0xe1, 0xf3, 0xa0, 0x22, 0x5d, 0xe7}} +#endif + +#endif + + diff --git a/plugins/Updater/conf_comp_dialog.cpp b/plugins/Updater/conf_comp_dialog.cpp new file mode 100644 index 0000000000..b2ab25227a --- /dev/null +++ b/plugins/Updater/conf_comp_dialog.cpp @@ -0,0 +1,204 @@ +#include "common.h" +#include "conf_comp_dialog.h" + +void FillFolder(TCHAR *folder_name, StrList *filenames) { + TCHAR filename[MAX_PATH], *p; + + mir_sntprintf(filename, SIZEOF(filename), _T("%s\\*.*"), folder_name); + p = _tcsrchr(filename, '\\' ) + 1; + + WIN32_FIND_DATA findData; + HANDLE hFileSearch = FindFirstFile(filename, &findData); + if (hFileSearch != INVALID_HANDLE_VALUE) + { + do { + _tcscpy(p, findData.cFileName); + + if (findData.cFileName[0] != '.') + { + if(findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { + FillFolder(filename, filenames); + } else { + filenames->insert(mir_tstrdup(filename)); + } + } + } while(FindNextFile(hFileSearch, &findData)); + FindClose(hFileSearch); + } +} + +INT_PTR CALLBACK DlgProcConfirmComponents(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { + switch ( msg ) { + case WM_INITDIALOG: + TranslateDialogDefault( hwndDlg ); + SetWindowLongPtr(hwndDlg, GWLP_USERDATA, 0); + SendMessage(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS),LVM_SETEXTENDEDLISTVIEWSTYLE, 0,LVS_EX_FULLROWSELECT | LVS_EX_CHECKBOXES); + + { + LVCOLUMN lvc; + // Initialize the LVCOLUMN structure. + // The mask specifies that the format, width, text, and + // subitem members of the structure are valid. + lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; + lvc.fmt = LVCFMT_LEFT; + + lvc.iSubItem = 0; + lvc.pszText = TranslateT("Component Name"); + lvc.cx = 180; // width of column in pixels + ListView_InsertColumn(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS), 0, &lvc); + + } + + //enumerate plugins, fill in list + { + StrList filenames; + + ListView_DeleteAllItems(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS)); + + LVITEM lvI; + + // Some code to create the list-view control. + // Initialize LVITEM members that are common to all + // items. + lvI.mask = LVIF_TEXT | LVIF_NORECOMPUTE;// | LVIF_IMAGE; + + + size_t temp_folder_name_len = _tcslen(options.temp_folder); + TCHAR *p; + + FillFolder(options.temp_folder, &filenames); + for (int i = 0; i < filenames.getCount(); ++i) + { + if(_tcslen(filenames[i]) > temp_folder_name_len) + { + p = filenames[i] + temp_folder_name_len + 1; + + lvI.iSubItem = 0; + lvI.pszText = p; + lvI.iItem = ListView_InsertItem(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS), &lvI); + + ListView_SetCheckState(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS), lvI.iItem, TRUE); + } + } + + // do this after filling list - enables 'ITEMCHANGED' below + SetWindowLongPtr(hwndDlg, GWLP_USERDATA, 1); + } + + Utils_RestoreWindowPositionNoSize(hwndDlg,0,MODULE,"ConfirmCompWindow"); + + return TRUE; + + case WM_NOTIFY: + if(((LPNMHDR) lParam)->hwndFrom == GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS)) { + switch (((LPNMHDR) lParam)->code) { + + case LVN_ITEMCHANGED: + if(GetWindowLongPtr(hwndDlg, GWLP_USERDATA)) { + NMLISTVIEW *nmlv = (NMLISTVIEW *)lParam; + + if((nmlv->uNewState ^ nmlv->uOldState) & LVIS_STATEIMAGEMASK) { + + int size = ListView_GetItemCount(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS)); + bool enableOk = false; + for(int i = 0; i < size; i++) { + if(ListView_GetCheckState(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS), i)) { + enableOk = true; + break; + } + } + HWND hwOk = GetDlgItem(hwndDlg, IDOK); + EnableWindow(hwOk, enableOk ? TRUE : FALSE); + } + } + break; + } + } + break; + case WM_COMMAND: + if ( HIWORD( wParam ) == BN_CLICKED ) { + switch( LOWORD( wParam )) { + case IDC_BTN_SELECTALL: + { + int size = ListView_GetItemCount(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS)); + bool enableOk = false; + for(int i = 0; i < size; i++) { + ListView_SetCheckState(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS), i, TRUE); + enableOk = true; + } + HWND hwOk = GetDlgItem(hwndDlg, IDOK); + EnableWindow(hwOk, enableOk ? TRUE : FALSE); + } + return TRUE; + case IDC_BTN_SELECTINV: + { + int size = ListView_GetItemCount(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS)); + bool enableOk = false, flag; + for(int i = 0; i < size; i++) { + flag = !ListView_GetCheckState(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS), i); + ListView_SetCheckState(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS), i, flag); + enableOk |= flag; + } + HWND hwOk = GetDlgItem(hwndDlg, IDOK); + EnableWindow(hwOk, enableOk ? TRUE : FALSE); + } + return TRUE; + case IDC_BTN_SELECTDLLS: + { + int size = ListView_GetItemCount(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS)); + TCHAR fname_buff[MAX_PATH]; + bool enableOk = false, flag; + for(int i = 0; i < size; i++) { + ListView_GetItemText(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS), i, 0, fname_buff, MAX_PATH); + flag = _tcsstr(fname_buff, _T(".dll")) != 0; + ListView_SetCheckState(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS), i, flag); + enableOk |= flag; + } + HWND hwOk = GetDlgItem(hwndDlg, IDOK); + EnableWindow(hwOk, enableOk ? TRUE : FALSE); + } + return TRUE; + case IDOK: + SetWindowLongPtr(hwndDlg, GWLP_USERDATA, 0); + Utils_SaveWindowPosition(hwndDlg,0,MODULE,"ConfirmCompWindow"); + + { + TCHAR fname_buff[MAX_PATH]; + _tcscpy(fname_buff, options.temp_folder); + _tcscat(fname_buff, _T("\\")); + int path_len = (int)_tcslen(fname_buff); + TCHAR *p = fname_buff + path_len; + + int size = ListView_GetItemCount(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS)); + //bool enableOk = false; + for(int i = 0; i < size; i++) { + if(!ListView_GetCheckState(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS), i)) { + // delete file + ListView_GetItemText(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS), i, 0, p, MAX_PATH - path_len); + DeleteFile(fname_buff); + + // attempt to remove parent folder, if any, in case it's now empty + TCHAR *last_slash = _tcsrchr(fname_buff, _T('\\')); + if(last_slash != p - 1) { + *last_slash = 0; + RemoveDirectory(fname_buff); + } + } + } + } + + EndDialog(hwndDlg, IDOK); + return TRUE; + case IDCANCEL: + SetWindowLongPtr(hwndDlg, GWLP_USERDATA, 0); + Utils_SaveWindowPosition(hwndDlg,0,MODULE,"ConfirmCompWindow"); + EndDialog(hwndDlg, IDCANCEL); + return TRUE; + } + } + break; + } + + return FALSE; + +} diff --git a/plugins/Updater/conf_comp_dialog.h b/plugins/Updater/conf_comp_dialog.h new file mode 100644 index 0000000000..4567a6a6f0 --- /dev/null +++ b/plugins/Updater/conf_comp_dialog.h @@ -0,0 +1,8 @@ +#ifndef _CONF_COMP_DIALOG_INC +#define _CONF_COMP_DIALOG_INC + +#include "options.h" + +INT_PTR CALLBACK DlgProcConfirmComponents(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); + +#endif diff --git a/plugins/Updater/conf_dialog.cpp b/plugins/Updater/conf_dialog.cpp new file mode 100644 index 0000000000..a284952230 --- /dev/null +++ b/plugins/Updater/conf_dialog.cpp @@ -0,0 +1,289 @@ +#include "common.h" +#include "conf_dialog.h" + +#ifndef BCM_SETSHIELD +#define BCM_SETSHIELD (0x1600 + 0x000C) +#endif + +INT_PTR CALLBACK DlgProcConfirm(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) +{ + HWND hwndList = GetDlgItem(hwndDlg, IDC_LIST_UPDATES); + + switch ( msg ) { + case WM_INITDIALOG: + TranslateDialogDefault( hwndDlg ); + SetWindowLongPtr(hwndDlg, GWLP_USERDATA, 0); + SendMessage(hwndList, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_FULLROWSELECT | LVS_EX_CHECKBOXES); + + if(options.save_zips && options.no_unzip) { + CheckDlgButton(hwndDlg, IDC_CHK_CONFALL, FALSE); + HWND hw = GetDlgItem(hwndDlg, IDC_CHK_CONFALL); + EnableWindow(hw, FALSE); + hw = GetDlgItem(hwndDlg, IDC_CHK_NOINSTALL); + EnableWindow(hw, FALSE); + CheckDlgButton(hwndDlg, IDC_CHK_NOINSTALL, TRUE); + SetWindowText(GetDlgItem(hwndDlg, IDOK), TranslateT("Download")); + } else { + if(DBGetContactSettingByte(0, "Updater", "DefaultConfAll", 0)) { + CheckDlgButton(hwndDlg, IDC_CHK_CONFALL, TRUE); + HWND hw = GetDlgItem(hwndDlg, IDC_CHK_NOINSTALL); + EnableWindow(hw, FALSE); + } else if(DBGetContactSettingByte(0, "Updater", "NoInstall", 0)) { + CheckDlgButton(hwndDlg, IDC_CHK_NOINSTALL, TRUE); + SetWindowText(GetDlgItem(hwndDlg, IDOK), TranslateT("Download")); + } + } + + { + LVCOLUMN lvc = {0}; + // Initialize the LVCOLUMN structure. + // The mask specifies that the format, width, text, and + // subitem members of the structure are valid. + lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; + lvc.fmt = LVCFMT_LEFT; + + lvc.iSubItem = 0; + lvc.pszText = TranslateT("Component Name"); + lvc.cx = 145; // width of column in pixels + ListView_InsertColumn(hwndList, 0, &lvc); + + lvc.iSubItem = 1; + lvc.pszText = TranslateT("New Version"); + lvc.cx = 80; // width of column in pixels + ListView_InsertColumn(hwndList, 1, &lvc); + + lvc.iSubItem = 2; + lvc.pszText = TranslateT("Current Version"); + lvc.cx = 90; // width of column in pixels + ListView_InsertColumn(hwndList, 2, &lvc); + + lvc.iSubItem = 3; + lvc.pszText = TranslateT("Beta"); + lvc.cx = 90; // width of column in pixels + ListView_InsertColumn(hwndList, 3, &lvc); + } + + //enumerate plugins, fill in list + { + bool one_enabled = false; + ListView_DeleteAllItems(hwndList); + + LVITEM lvI = {0}; + TCHAR *temp_str; + + // Some code to create the list-view control. + // Initialize LVITEM members that are common to all + // items. + lvI.mask = LVIF_TEXT | LVIF_PARAM | LVIF_NORECOMPUTE;// | LVIF_IMAGE; + + UpdateList &todo = *(UpdateList *)lParam; + for (int i = 0; i < todo.getCount(); ++i) + { + lvI.mask = LVIF_TEXT | LVIF_PARAM;// | LVIF_IMAGE; + lvI.iSubItem = 0; + lvI.lParam = (LPARAM)&todo[i]; + lvI.pszText = (temp_str = mir_a2t(todo[i].update.szComponentName)); + lvI.iItem = ListView_InsertItem(hwndList, &lvI); + mir_free(temp_str); + + lvI.mask = LVIF_TEXT;// | LVIF_IMAGE; + + lvI.iSubItem = 1; + //lvI.pszText = LPSTR_TEXTCALLBACK; //i->newVersion; + lvI.pszText = (temp_str = mir_a2t(((UpdateInternal *)lvI.lParam)->newVersion)); + ListView_SetItem(hwndList, &lvI); + mir_free(temp_str); + + lvI.iSubItem = 2; + //lvI.pszText = LPSTR_TEXTCALLBACK; //i->newVersion; + lvI.pszText = (temp_str = mir_a2t((char *)((UpdateInternal *)lvI.lParam)->update.pbVersion)); + ListView_SetItem(hwndList, &lvI); + mir_free(temp_str); + + lvI.iSubItem = 3; + lvI.pszText = ((UpdateInternal *)lvI.lParam)->update_options.use_beta ? + TranslateT("Yes") : TranslateT("No"); + ListView_SetItem(hwndList, &lvI); + + //MessageBox(0, todo[i].newVersion, + //"Version", MB_OK); + //todo[i].update.szComponentName, MB_OK); + + // remember whether the user has decided not to update this component with this particular new version + char stored_setting[256]; + mir_snprintf(stored_setting, 256, "DisabledVer%s", todo[i].update.szComponentName); + DBVARIANT dbv; + bool check = todo[i].update_options.enabled; + if (!DBGetContactSettingString(0, "Updater", stored_setting, &dbv)) { + if(dbv.pszVal && strcmp(dbv.pszVal, ((UpdateInternal *)lvI.lParam)->newVersion) == 0) + check = false; + else + DBDeleteContactSetting(0, "Updater", stored_setting); + DBFreeVariant(&dbv); + } + one_enabled |= check; + ListView_SetCheckState(hwndList, lvI.iItem, check); + } + + HWND hwOk = GetDlgItem(hwndDlg, IDOK); + EnableWindow(hwOk, one_enabled); + } + // do this after filling list - enables 'ITEMCHANGED' below + SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam); + + Utils_RestoreWindowPositionNoSize(hwndDlg, NULL, MODULE, "ConfirmWindow"); + if (IsAdminRequired()) + SendDlgItemMessage(hwndDlg, IDOK, BCM_SETSHIELD, 0, TRUE); + + return TRUE; + + case WM_NOTIFY: + if(((LPNMHDR) lParam)->hwndFrom == hwndList) { + switch (((LPNMHDR) lParam)->code) { + + case LVN_ITEMCHANGED: + if(GetWindowLongPtr(hwndDlg, GWLP_USERDATA)) { + NMLISTVIEW *nmlv = (NMLISTVIEW *)lParam; + + LVITEM lvI = {0}; + + lvI.iItem = nmlv->iItem; + lvI.iSubItem = 0; + lvI.mask = LVIF_PARAM; + ListView_GetItem(hwndList, &lvI); + + //if(IsWindowVisible(hwndList) && ((nmlv->uNewState ^ nmlv->uOldState) & LVIS_STATEIMAGEMASK)) { + if((nmlv->uNewState ^ nmlv->uOldState) & LVIS_STATEIMAGEMASK) { + ((UpdateInternal *)lvI.lParam)->update_options.enabled = ListView_GetCheckState(hwndList, nmlv->iItem) != 0; + + char stored_setting[256]; + mir_snprintf(stored_setting, 256, "DisabledVer%s", ((UpdateInternal *)lvI.lParam)->update.szComponentName); + + if(((UpdateInternal *)lvI.lParam)->update_options.enabled) + DBDeleteContactSetting(0, "Updater", stored_setting); // user has re-enabled update to this version - remove setting from db + else + DBWriteContactSettingString(0, "Updater", stored_setting, ((UpdateInternal *)lvI.lParam)->newVersion); + //ListView_SetItem(hwndList, &lvI); + + + UpdateList &todo = *(UpdateList *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); + bool enableOk = false; + for(int i=0; iuNewState & LVIS_SELECTED) { + if((!((UpdateInternal *)lvI.lParam)->update_options.use_beta && ((UpdateInternal *)lvI.lParam)->file_id != -1) + || (((UpdateInternal *)lvI.lParam)->update_options.use_beta && ((UpdateInternal *)lvI.lParam)->update.szBetaChangelogURL)) + { + EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_CHANGELOG), TRUE); + } else { + EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_CHANGELOG), FALSE); + } + } + } + break; + + case LVN_GETDISPINFO: + { + LVITEM lvi; + lvi.mask = LVIF_PARAM; + lvi.iItem = ((NMLVDISPINFO *)lParam)->item.iItem; + lvi.iSubItem = 0; + SendMessage(hwndList, LVM_GETITEM, 0, (LPARAM)&lvi); + UpdateInternal* u = (UpdateInternal *)lvi.lParam; + switch (((NMLVDISPINFO *)lParam)->item.iSubItem) { + case 0: + MessageBox(0, _T("LVN_GETDISPINFO (0)"), _T("msg"), MB_OK); + break; + case 1: + ((NMLVDISPINFO *)lParam)->item.pszText = Translate( u->newVersion ); + break; + case 2: + ((NMLVDISPINFO *)lParam)->item.pszText = Translate((char *)u->update.pbVersion); + break; + } + } + return 0; + } + + } + break; + + case WM_COMMAND: + if (HIWORD( wParam ) == BN_CLICKED) + { + switch(LOWORD(wParam)) + { + case IDC_BTN_CHANGELOG: + { + char url[256]; + int sel = ListView_GetSelectionMark(hwndList); + LVITEM lvI = {0}; + + lvI.iItem = sel; + lvI.iSubItem = 0; + lvI.mask = LVIF_PARAM; + ListView_GetItem(hwndList, &lvI); + + if(!((UpdateInternal *)lvI.lParam)->update_options.use_beta && ((UpdateInternal *)lvI.lParam)->file_id != -1) { + sprintf(url, MIM_CHANGELOG_URL_PREFIX "%d", ((UpdateInternal *)lvI.lParam)->file_id); + CallService(MS_UTILS_OPENURL, (WPARAM)TRUE, (LPARAM)url); + } else if(((UpdateInternal *)lvI.lParam)->update_options.use_beta && ((UpdateInternal *)lvI.lParam)->update.szBetaChangelogURL) { + CallService(MS_UTILS_OPENURL, TRUE, (LPARAM)((UpdateInternal *)lvI.lParam)->update.szBetaChangelogURL); + } + + } + return TRUE; + + case IDC_CHK_CONFALL: + { + HWND hw = GetDlgItem(hwndDlg, IDC_CHK_NOINSTALL); + EnableWindow(hw, !IsDlgButtonChecked(hwndDlg, IDC_CHK_CONFALL)); + } + return TRUE; + + case IDC_CHK_NOINSTALL: + { + HWND hw = GetDlgItem(hwndDlg, IDC_CHK_CONFALL); + EnableWindow(hw, !IsDlgButtonChecked(hwndDlg, IDC_CHK_NOINSTALL)); + + if(IsDlgButtonChecked(hwndDlg, IDC_CHK_NOINSTALL)) + SetWindowText(GetDlgItem(hwndDlg, IDOK), TranslateT("Download")); + else + SetWindowText(GetDlgItem(hwndDlg, IDOK), TranslateT("Update")); + } + return TRUE; + + case IDOK: + SetWindowLongPtr(hwndDlg, GWLP_USERDATA, 0); + Utils_SaveWindowPosition(hwndDlg, NULL, MODULE, "ConfirmWindow"); + DBWriteContactSettingByte(NULL, "Updater", "DefaultConfAll", IsDlgButtonChecked(hwndDlg, IDC_CHK_CONFALL) ? 1 : 0); + DBWriteContactSettingByte(NULL, "Updater", "NoInstall", IsDlgButtonChecked(hwndDlg, IDC_CHK_NOINSTALL) ? 1 : 0); + + if(IsDlgButtonChecked(hwndDlg, IDC_CHK_CONFALL)) + EndDialog(hwndDlg, CD_CONFALL); + else if(IsDlgButtonChecked(hwndDlg, IDC_CHK_NOINSTALL)) + EndDialog(hwndDlg, CD_NOINSTALL); + else + EndDialog(hwndDlg, CD_OK); + return TRUE; + + case IDCANCEL: + SetWindowLongPtr(hwndDlg, GWLP_USERDATA, 0); + Utils_SaveWindowPosition(hwndDlg, NULL, MODULE, "ConfirmWindow"); + EndDialog(hwndDlg, CD_CANCEL); + return TRUE; + } + } + break; + } + + return FALSE; +} + diff --git a/plugins/Updater/conf_dialog.h b/plugins/Updater/conf_dialog.h new file mode 100644 index 0000000000..4304089555 --- /dev/null +++ b/plugins/Updater/conf_dialog.h @@ -0,0 +1,14 @@ +#ifndef _CONF_DIALOG_INC +#define _CONF_DIALOG_INC + +#include "utils.h" + +// return values +#define CD_CANCEL 1 +#define CD_NOINSTALL 2 +#define CD_CONFALL 3 +#define CD_OK 4 + +INT_PTR CALLBACK DlgProcConfirm(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); + +#endif diff --git a/plugins/Updater/extern.cpp b/plugins/Updater/extern.cpp new file mode 100644 index 0000000000..d33e0c2132 --- /dev/null +++ b/plugins/Updater/extern.cpp @@ -0,0 +1,524 @@ +#include "common.h" +#include "extern.h" + +// write data needed by the external process, and restart miranda +// returns 1 if any error, 0 if shutdown is imminent +int ExternProcess(bool restart) +{ + //HWND hWndMiranda = (HWND)CallService(MS_CLUI_GETHWND, 0, 0); + + // spawn a process that will: + // -- wait for miranda to exit + // -- move downloaded plugins from the temp folder to the Plugins folder, possibly backing up old ones + // -- restart miranda + + char msg[1024]; + mir_snprintf(msg, SIZEOF(msg), "spawning external process, restart = %s", restart ? "true" : "false"); + NLog(msg); + + TCHAR data_filename[MAX_PATH]; + mir_sntprintf(data_filename, SIZEOF(data_filename), _T("%s\\ud_data.txt"), options.data_folder); + + // write data to file for external process to use + HANDLE hDatFile = CreateFile(data_filename, GENERIC_WRITE, FILE_SHARE_WRITE, 0, CREATE_ALWAYS, 0, 0); + if (hDatFile == INVALID_HANDLE_VALUE) + { + //MessageBox(0, TranslateT("Could not create data file for restart."), TranslateT("Error"), MB_OK | MB_ICONERROR); + ShowError(TranslateT("Could not create data file for restart")); + return 1; + } + + TCHAR db_pathT[MAX_PATH]; + + if (CallService(MS_SYSTEM_GETVERSION, 0, 0) >= PLUGIN_MAKE_VERSION(0,9,0,12)) + { + TCHAR *p = Utils_ReplaceVarsT(_T("%miranda_profile%\\%miranda_profilename%\\%miranda_profilename%.dat")); + mir_sntprintf(db_pathT, SIZEOF(db_pathT), _T("%s"), p); + mir_free(p); + } + else + { + char db_name[100], db_path[MAX_PATH]; + + // Get Miranda exe path and profile + CallService(MS_DB_GETPROFILENAME, SIZEOF(db_name), (WPARAM)db_name); + CallService(MS_DB_GETPROFILEPATH, SIZEOF(db_path), (WPARAM)db_path); + + TCHAR *t1, *t2; + mir_sntprintf(db_pathT, SIZEOF(db_pathT), _T("%s\\%s"), (t1=mir_a2t(db_path)), (t2=mir_a2t(db_name))); + mir_free(t1); mir_free(t2); + } + + // get plugin folder + TCHAR* plugins_folder = Utils_ReplaceVarsT(_T("%miranda_path%\\Plugins")); + + TCHAR mir_exe[MAX_PATH]; + GetModuleFileName(NULL, mir_exe, SIZEOF(mir_exe)); + + unsigned long bytes_written; + static const TCHAR tnl[] = _T("\r\n"); + + WriteFile(hDatFile, mir_exe, (unsigned)_tcslen(mir_exe) * sizeof(TCHAR), &bytes_written, FALSE); + WriteFile(hDatFile, tnl, 2 * sizeof(TCHAR), &bytes_written, FALSE); + WriteFile(hDatFile, plugins_folder, (unsigned)_tcslen(plugins_folder) * sizeof(TCHAR), &bytes_written, FALSE); + WriteFile(hDatFile, tnl, 2 * sizeof(TCHAR), &bytes_written, FALSE); + WriteFile(hDatFile, db_pathT, (unsigned)_tcslen(db_pathT) * sizeof(TCHAR), &bytes_written, FALSE); + WriteFile(hDatFile, tnl, 2 * sizeof(TCHAR), &bytes_written, FALSE); + WriteFile(hDatFile, options.temp_folder, (unsigned)_tcslen(options.temp_folder) * sizeof(TCHAR), &bytes_written, FALSE); + WriteFile(hDatFile, tnl, 2 * sizeof(TCHAR), &bytes_written, FALSE); + if(options.backup) + WriteFile(hDatFile, options.backup_folder, (unsigned)_tcslen(options.backup_folder) * sizeof(TCHAR), &bytes_written, FALSE); + else + WriteFile(hDatFile, _T("no backups"),(unsigned) _tcslen(_T("no backups")) * sizeof(TCHAR), &bytes_written, FALSE); + WriteFile(hDatFile, tnl, 2 * sizeof(TCHAR), &bytes_written, FALSE); + + TCHAR buf[64]; + mir_sntprintf(buf, SIZEOF(buf), _T("%d"), (unsigned int)GetCurrentProcessId()); + //MessageBox(0, buf, "Writing process id", MB_OK); + WriteFile(hDatFile, buf, (unsigned)_tcslen(buf) * sizeof(TCHAR), &bytes_written, FALSE); + WriteFile(hDatFile, tnl, 2 * sizeof(TCHAR), &bytes_written, FALSE); + + mir_sntprintf(buf, SIZEOF(buf), restart ? _T("restart") : _T("no_restart")); + WriteFile(hDatFile, buf, (unsigned)_tcslen(buf) * sizeof(TCHAR), &bytes_written, FALSE); + WriteFile(hDatFile, tnl, 2 * sizeof(TCHAR), &bytes_written, FALSE); + + CloseHandle(hDatFile); + + mir_free(plugins_folder); + + /* + if(!CallService(MS_SYSTEM_OKTOEXIT,0,0)) { + DeleteFile(data_filename); + MessageBox(0, TranslateT("Miranda's not 'OK TO EXIT'."), TranslateT("Error"), MB_OK | MB_ICONERROR); + return; + } + */ + + TCHAR szParams[MAX_PATH], szBuf[MAX_PATH], szProcDir[MAX_PATH]; + + // try to fire up external process from new dll (if present), so we can overwrite the old one + mir_sntprintf(szBuf, SIZEOF(szBuf), _T("%s\\plugins\\updater.dll"), options.temp_folder); + if (_taccess(szBuf, 0)) + { + mir_sntprintf(szBuf, SIZEOF(szBuf), _T("%s\\updater.dll"), options.temp_folder); + if (_taccess(szBuf, 0)) + { + GetModuleFileName(hInst, szBuf, MAX_PATH); + } + } + + GetRootDir(szProcDir); _tcscat(szProcDir, _T("\\")); + + if (IsWinVerXPPlus()) + { + mir_sntprintf(szParams, SIZEOF(szParams), _T("RUNDLL32.EXE \"%s\",ExternalUpdate %s"), szBuf, data_filename); + } + else + { + TCHAR* p = _tcsrchr(szBuf, _T('\\')); if (p) *p = 0; + + // rundll32 hates spaces in the arg, but quotes aren't allowed in earlier versions... + // GetShortPath can return paths with spaces (at least on XP with 8.3 filenames disabled)... + // so we must 'CreateProcess' with the updater.dll location as the startup directory and pass only updater.dll as the arg + + mir_sntprintf(szParams, SIZEOF(szParams), _T("RUNDLL32.EXE .\\plugins\\updater.dll,ExternalUpdate %s"), data_filename); + } + + BOOL res; + + if (IsAdminRequired()) + { + SHELLEXECUTEINFO info = {0}; + info.cbSize = sizeof(info); + + TCHAR *p = _tcschr(szParams, ' '); if (p) *(p++) = 0; + + info.lpVerb = _T("runas"); + info.lpFile = szParams; + info.lpParameters = p; + info.lpDirectory = szProcDir; + info.nShow = SW_HIDE; + + res = ShellExecuteEx(&info); + info.cbSize = sizeof(info); + + } + else + { + PROCESS_INFORMATION pi = {0}; + STARTUPINFO si = {0}; + si.cb = sizeof(si); + + res = CreateProcess(0, szParams, 0, 0, 0, + CREATE_NO_WINDOW | DETACHED_PROCESS | NORMAL_PRIORITY_CLASS, + 0, szProcDir, &si, &pi); + + if (res) + { + CloseHandle(pi.hThread); + CloseHandle(pi.hProcess); + } + } + + if (res) + { + PostMessage((HWND)CallService(MS_CLUI_GETHWND, 0, 0), WM_COMMAND, ID_ICQ_EXIT, 0); + } + else + { + TCHAR msg[256]; + mir_sntprintf(msg, SIZEOF(msg), _T("Error code: %d"), GetLastError()); + MessageBox(0, msg, TranslateT("CreateProcess"), MB_OK | MB_ICONERROR); + } + + return !res; +} + +#ifdef _UD_LOGGING +void mWriteFile(HANDLE hFile, char *line) { + unsigned long bytes_written; + const char *nl = "\r\n"; + + WriteFile(hFile, line, (unsigned)strlen(line), &bytes_written, FALSE); + WriteFile(hFile, nl, 2, &bytes_written, FALSE); +} + +void mWriteFile(HANDLE hFile, wchar_t *line) { + unsigned long bytes_written; + const char *nl = "\r\n"; + + char buf[267]; + WideCharToMultiByte(CP_ACP, 0, line, -1, buf, SIZEOF(buf), NULL, NULL); + + WriteFile(hFile, buf, (unsigned)strlen(buf), &bytes_written, FALSE); + WriteFile(hFile, nl, 2, &bytes_written, FALSE); +} +#endif + +// move all files in src_folder to dst_folder - put replaced files in backup folder +// if a file in src_folder is a directory, copy it's contents to the same dir in the root folder and +// set that dir as the new root (so that dirs in dirs go in the right place) +void MoveFiles(HANDLE hLogFile, TCHAR *src_folder, TCHAR *dst_folder, TCHAR *backup_folder, TCHAR *root_folder) +{ + // move files from src_folder to dst_folder + + if(!src_folder || _tcslen(src_folder) == 0) { + MessageBox(0, _T("Your 'temporary files' folder is set to NULL. Install aborted."), _T("Updater Error"), MB_OK | MB_ICONERROR); + return; + } + + TCHAR szFilesPath[MAX_PATH], szOldFileName[MAX_PATH], szNewFileName[MAX_PATH], szBackupFileName[MAX_PATH]; + + bool do_backups = backup_folder ? (_tcscmp(backup_folder, _T("no backups")) != 0) : false; + + // ensure the destination folder exists + if (!CreatePath(dst_folder)) + return; + + _sntprintf(szFilesPath, SIZEOF(szFilesPath), _T("%s\\*.*"), src_folder); + szFilesPath[SIZEOF(szFilesPath) - 1] = 0; + + bool move_file; + + WIN32_FIND_DATA findData; + HANDLE hFileSearch = FindFirstFile(szFilesPath, &findData); + if (hFileSearch != INVALID_HANDLE_VALUE) + { + do + { + if (findData.cFileName[0] != '.') + { + + _sntprintf(szOldFileName, SIZEOF(szOldFileName), _T("%s\\%s"), src_folder, findData.cFileName); + szOldFileName[SIZEOF(szOldFileName) - 1] = 0; + + if(findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) + { + // use szNewFileName as destination and new root folder + if (_tcslen(findData.cFileName) < SIZEOF(ROOT_FILES_FOLDER) - 1 || _tcsicmp(findData.cFileName, ROOT_FILES_FOLDER)) + { + _sntprintf(szNewFileName, SIZEOF(szNewFileName), _T("%s\\%s"), root_folder, findData.cFileName); + szNewFileName[SIZEOF(szNewFileName) - 1] = 0; + } + else + _tcscpy(szNewFileName, root_folder); + + // recurse + MoveFiles(hLogFile, szOldFileName, szNewFileName, backup_folder, szNewFileName); + + } + else + { + // exception for langpack files - move to root_folder + // exception for dbtool.exe (e.g. translated) - move to root_folder + if((_tcsnicmp(findData.cFileName, _T("dbtool.exe"), _tcslen(_T("dbtool.exe"))) == 0) + || (_tcsnicmp(findData.cFileName, _T("langpack_"), _tcslen(_T("langpack_"))) == 0)) + { + _sntprintf(szNewFileName, SIZEOF(szNewFileName), _T("%s\\%s"), root_folder, findData.cFileName); + szNewFileName[SIZEOF(szNewFileName) - 1] = 0; + } + else + { + _sntprintf(szNewFileName, SIZEOF(szNewFileName), _T("%s\\%s"), dst_folder, findData.cFileName); + szNewFileName[SIZEOF(szNewFileName) - 1] = 0; + } + + move_file = false; + if (do_backups) + { + _sntprintf(szBackupFileName, SIZEOF(szBackupFileName), _T("%s\\%s"), backup_folder, findData.cFileName); + szBackupFileName[SIZEOF(szBackupFileName) - 1] = 0; + + move_file = true; + DeleteFile(szBackupFileName); + if(!MoveFile(szNewFileName, szBackupFileName)) + { + // MessageBox(0, szNewFileName, __T("Could not backup!"), MB_OK | MB_ICONWARNING); + } + } + else + { + move_file = true; + if (!DeleteFile(szNewFileName)) + { + // MessageBox(0, szNewFileName, _T("Could not delete!"), MB_OK | MB_ICONWARNING); + } + } + + if (move_file) + { + if (!MoveFile(szOldFileName, szNewFileName)) + { + //MessageBox(0, szOldFileName, _T("Could not move!"), MB_OK | MB_ICONWARNING); + + // try a copy - possibly win98 etc. will not move the updater.dll when it is being used by this process + CopyFile(szOldFileName, szNewFileName, FALSE); + DeleteFile(szOldFileName); // docs say it is marked for delete and actually removed when the last handle is closed...hmm + } + } + else + DeleteFile(szOldFileName); + } + } + } + while(FindNextFile(hFileSearch, &findData)); + FindClose(hFileSearch); + } + + RemoveDirectory(src_folder); +} + +bool ReadTLine(HANDLE hDatFile, TCHAR *line, int bsize, int &offset) { + unsigned long bytes_read; + BOOL bResult; + while((bResult = ReadFile(hDatFile, line + offset, sizeof(TCHAR), &bytes_read, 0)) && offset < bsize && bytes_read == sizeof(TCHAR) && line[offset] && (line[offset] != _T('\n') || (offset > 0 && line[offset - 1] != _T('\r')))) offset++; + +#ifndef _UNICODE + if(offset == 1 && line[1] == 0) { + wchar_t wline[MAX_PATH]; + wline[0] = *(wchar_t *)line; + + while((bResult = ReadFile(hDatFile, wline + offset, sizeof(wchar_t), &bytes_read, 0)) && offset < bsize && bytes_read == sizeof(wchar_t) && wline[offset] && (wline[offset] != L'\n' || (offset > 0 && wline[offset - 1] != L'\r'))) offset++; + if(offset > 0) wline[offset - 1] = 0; // cut off /r/n + + WideCharToMultiByte(CP_ACP, 0, wline, -1, line, bsize, 0, 0); + } +#endif + if(offset > 0) line[offset - 1] = 0; // cut off /r/n + return true; +} + +void CALLBACK ExternalUpdate(HWND hwnd, HINSTANCE hInstance, LPSTR lpszCmdLine, int nCmdShow) +{ + //MessageBox(0, _T("ExternalUpdate"), _T("Updater"), MB_OK); + HANDLE hDatFile = CreateFileA(lpszCmdLine, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0); + if(hDatFile == INVALID_HANDLE_VALUE) { + char msg[1024]; + _snprintf(msg, SIZEOF(msg), "Could not read data file:\n%s", lpszCmdLine); + MessageBoxA(0, msg, "Updater Error", MB_OK | MB_ICONERROR); + } else { + + TCHAR *mir_exe = (TCHAR *)malloc(MAX_PATH * sizeof(TCHAR)), + *plugins_folder = (TCHAR *)malloc(MAX_PATH * sizeof(TCHAR)), + *temp_folder = (TCHAR *)malloc(MAX_PATH * sizeof(TCHAR)), + *backup_folder = (TCHAR *)malloc(MAX_PATH * sizeof(TCHAR)), + *root_folder = (TCHAR *)malloc(MAX_PATH * sizeof(TCHAR)), + *db_path = (TCHAR *)malloc(MAX_PATH * sizeof(TCHAR)), + *pid = (TCHAR *)malloc(64 * sizeof(TCHAR)); + + bool restart = true; + + { + int i = 0, offset; + TCHAR line[MAX_PATH]; + BOOL bResult = TRUE; + do { + offset = 0; + ReadTLine(hDatFile, line, MAX_PATH, offset); + + switch(i) { + case 0: _tcsncpy(mir_exe, line, MAX_PATH); break; + case 1: _tcsncpy(plugins_folder, line, MAX_PATH); break; + case 2: _tcsncpy(db_path, line, MAX_PATH); break; + case 3: _tcsncpy(temp_folder, line, MAX_PATH); break; + case 4: _tcsncpy(backup_folder, line, MAX_PATH); break; + case 5: _tcsncpy(pid, line, 64); break; + case 6: + restart = (_tcsncmp(line, _T("restart"), 7) == 0); + offset = 0; // end loop + break; + default: + offset = 0; // end loop + } + i++; + } while(offset > 0); + } + CloseHandle(hDatFile); +// use data file to log to +#ifndef _UD_LOGGING + DeleteFileA(lpszCmdLine); +#else + HANDLE hDatFile = CreateFileA(lpszCmdLine, GENERIC_WRITE, FILE_SHARE_WRITE, 0, CREATE_ALWAYS, 0, 0); +#endif + +#ifdef _UD_LOGGING + mWriteFile(hDatFile, "Inside external process..."); +#endif + + _tcscpy(root_folder, mir_exe); + TCHAR *p = _tcsrchr(root_folder, _T('\\')); if (p) *p = 0; + + // ensure miranda has exited + DWORD mpi = (DWORD)_ttol(pid); + + bool exited = false; + +#ifdef _UD_LOGGING + char logmsg[1024]; + sprintf(logmsg, "Opening process #%d...", mpi); + mWriteFile(hDatFile, logmsg); +#endif + + HANDLE hMiranda = OpenProcess(SYNCHRONIZE | PROCESS_TERMINATE, FALSE, mpi); + if(hMiranda) { + int mbFlags, idRetry, idCancel, idContinue; + const int MAX_SIZE = 2048; + TCHAR message[MAX_SIZE]; + int exitStatus; + + OSVERSIONINFO vi = {0}; + vi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&vi); + _tcsncpy(message, _T("Miranda did not exit - cannot install or restart.\n"), MAX_SIZE); + + if (vi.dwMajorVersion = 5) { + //windows 2000+ + mbFlags = 0x00000006L; //MB_CANCELTRYCONTINUE; + idRetry = 10; //IDTRYAGAIN + idCancel = IDCANCEL; + idContinue = 11; //IDCONTINUE + _tcsncat(message, _T("Press 'Try again' to check Miranda's status again, press 'Continue' to kill the process or press 'Cancel' to abort."), MAX_SIZE); + } else { + //windows 98, me + mbFlags = MB_ABORTRETRYIGNORE; + idRetry = IDRETRY; + idCancel = IDCANCEL; + idContinue = IDIGNORE; + _tcsncat(message, _T("Press 'Retry' to check Miranda's status again, press 'Ignore' to kill the process or press 'Abort' to abort."), MAX_SIZE); + } + + while ((exitStatus = WaitForSingleObjectEx(hMiranda, 20 * 1000, FALSE)) == WAIT_TIMEOUT) { + int res = MessageBox(0, message, _T("Updater Error"), mbFlags | MB_ICONERROR); + + if (res == idContinue) { + //if the user chooses Continue then kill the application + TerminateProcess(hMiranda, 1); + if((exitStatus = WaitForSingleObjectEx(hMiranda, 5 * 1000, FALSE)) == WAIT_TIMEOUT) { + //hMiranda = OpenProcess(SYNCHRONIZE, FALSE, mpi); + //if(hMiranda) { + //CloseHandle(hMiranda); + MessageBox(0, _T("It seems Miranda is still running. Aborting update."), _T("Updater Error"), MB_OK | MB_ICONERROR); + } else { +#ifdef _UD_LOGGING + mWriteFile(hDatFile, "Wait for miranda processs to 'Terminate' interrupted - assuming it exited"); +#endif + } + } else { + if (res == idRetry) { + //if the user selected 'Try again' then wait a bit more. + continue; //wait again + } + } + + break; //don't update anymore (happens when user choses 'Continue' or 'Cacel' + } +#ifdef _UD_LOGGING + mWriteFile(hDatFile, "Wait for miranda processs interrupted - assuming it exited"); +#endif + exited = (exitStatus != WAIT_TIMEOUT); + CloseHandle(hMiranda); + } else { +#ifdef _UD_LOGGING + mWriteFile(hDatFile, "Could not open miranda processs - assuming it exited"); +#endif + //MessageBox(0, "Could not open Miranda process", "Update Error", MB_OK | MB_ICONERROR); + exited = true; + } + + if(exited) { +#ifdef _UD_LOGGING + mWriteFile(hDatFile, "Miranda exited - moving files"); + MoveFiles(hDatFile, temp_folder, plugins_folder, backup_folder, root_folder); +#else + MoveFiles(0, temp_folder, plugins_folder, backup_folder, root_folder); + RemoveDirectory(temp_folder); +#endif + // move files + + // restart miranda + if(restart) { +#ifdef _UD_LOGGING + mWriteFile(hDatFile, "Restarting"); +#endif + TCHAR szArgs[MAX_PATH]; + //wsprintf(szArgs, "\"%s\" \"%s\"", db_path, db_name); + _sntprintf(szArgs, SIZEOF(szArgs), _T("\"%s\" \"%s\""), mir_exe, db_path); // includes name, dummy instead of executable? + //wsprintf(szArgs, "\"%s\"", db_name); + + + PROCESS_INFORMATION pi = {0}; + STARTUPINFO si = {0}; + si.cb = sizeof(si); + + if (!CreateProcess(mir_exe, szArgs, 0, 0, 0, DETACHED_PROCESS | NORMAL_PRIORITY_CLASS, 0, 0, &si, &pi)) + { + MessageBox(0, _T("Failed to restart Miranda"), _T("Updater Error"), MB_OK | MB_ICONERROR); + //MessageBox(0, szArgs, mir_exe, MB_OK); + } + else + { + CloseHandle(pi.hThread); + CloseHandle(pi.hProcess); + } + //ShellExecute(0, 0, mir_exe, szArgs, 0, SW_NORMAL); + } + } +#ifdef _UD_LOGGING + else mWriteFile(hDatFile, "Miranda did not exit"); +#endif + + free(pid); + free(db_path); + free(root_folder); + free(backup_folder); + free(temp_folder); + free(plugins_folder); + free(mir_exe); + +#ifdef _UD_LOGGING + CloseHandle(hDatFile); +#endif + } + + FreeLibraryAndExitThread(hInstance, TRUE); +} diff --git a/plugins/Updater/extern.h b/plugins/Updater/extern.h new file mode 100644 index 0000000000..c6091f4dfa --- /dev/null +++ b/plugins/Updater/extern.h @@ -0,0 +1,20 @@ +#ifndef _EXTERN_INC +#define _EXTERN_INC + +#include "options.h" + + +#define ROOT_FILES_FOLDER _T("root_files") + +// returns 1 if any error, 0 if shutdown is imminent +int ExternProcess(bool restart); + +// move all files in src_folder to backup_folder - put replaced files in backup folder +// if a file in src_folder is a directory, copy it's contents to the same dir in the root folder and +// set that dir as the new root (so that dirs in dirs go in the right place) +void MoveFiles(HANDLE hLogFile, TCHAR *src_folder, TCHAR *dst_folder, TCHAR *backup_folder, TCHAR *root_folder); + + +void CALLBACK ExternalUpdate(HWND hwnd, HINSTANCE hInstance, LPSTR lpszCmdLine, int nCmdShow); + +#endif diff --git a/plugins/Updater/ezxml.c b/plugins/Updater/ezxml.c new file mode 100644 index 0000000000..a88e22769d --- /dev/null +++ b/plugins/Updater/ezxml.c @@ -0,0 +1,967 @@ +/* ezxml.c + * + * Copyright 2004-2006 Aaron Voisine + * + * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#if defined(_DEBUG) && !defined(__GNUC__) + #define _CRTDBG_MAP_ALLOC + #include + #include +#else + #include +#endif + +#include +#include +#include +#include +#include + +#include "ezxml.h" + +#ifndef SIZE_MAX +#define SIZE_MAX UINT_MAX +#endif + +#define EZXML_WS "\t\r\n " // whitespace +#define EZXML_ERRL 128 // maximum error string length + +typedef struct ezxml_root *ezxml_root_t; +struct ezxml_root { // additional data for the root tag + struct ezxml xml; // is a super-struct built on top of ezxml struct + ezxml_t cur; // current xml tree insertion point + char *m; // original xml string + size_t len; // length of allocated memory for mmap, -1 for malloc + char *u; // UTF-8 conversion of string if original was UTF-16 + char *s; // start of work area + char *e; // end of work area + char **ent; // general entities (ampersand sequences) + char ***attr; // default attributes + char ***pi; // processing instructions + short standalone; // non-zero if + char err[EZXML_ERRL]; // error string +}; + +char *EZXML_NIL[] = { NULL }; // empty, null terminated array of strings + +// returns the first child tag with the given name or NULL if not found +ezxml_t ezxml_child(ezxml_t xml, const char *name) +{ + xml = (xml) ? xml->child : NULL; + while (xml && strcmp(name, xml->name)) xml = xml->sibling; + return xml; +} + +// returns the Nth tag with the same name in the same subsection or NULL if not +// found +ezxml_t ezxml_idx(ezxml_t xml, int idx) +{ + for (; xml && idx; idx--) xml = xml->next; + return xml; +} + +// returns the value of the requested tag attribute or NULL if not found +const char *ezxml_attr(ezxml_t xml, const char *attr) +{ + int i = 0, j = 1; + ezxml_root_t root = (ezxml_root_t)xml; + + if (! xml || ! xml->attr) return NULL; + while (xml->attr[i] && strcmp(attr, xml->attr[i])) i += 2; + if (xml->attr[i]) return xml->attr[i + 1]; // found attribute + + while (root->xml.parent) root = (ezxml_root_t)root->xml.parent; // root tag + for (i = 0; root->attr[i] && strcmp(xml->name, root->attr[i][0]); i++); + if (! root->attr[i]) return NULL; // no matching default attributes + while (root->attr[i][j] && strcmp(attr, root->attr[i][j])) j += 3; + return (root->attr[i][j]) ? root->attr[i][j + 1] : NULL; // found default +} + +// same as ezxml_get but takes an already initialized va_list +ezxml_t ezxml_vget(ezxml_t xml, va_list ap) +{ + char *name = va_arg(ap, char *); + int idx = -1; + + if (name && *name) { + idx = va_arg(ap, int); + xml = ezxml_child(xml, name); + } + return (idx < 0) ? xml : ezxml_vget(ezxml_idx(xml, idx), ap); +} + +// Traverses the xml tree to retrieve a specific subtag. Takes a variable +// length list of tag names and indexes. The argument list must be terminated +// by either an index of -1 or an empty string tag name. Example: +// title = ezxml_get(library, "shelf", 0, "book", 2, "title", -1); +// This retrieves the title of the 3rd book on the 1st shelf of library. +// Returns NULL if not found. +ezxml_t ezxml_get(ezxml_t xml, ...) +{ + va_list ap; + ezxml_t r; + + va_start(ap, xml); + r = ezxml_vget(xml, ap); + va_end(ap); + return r; +} + +// returns a null terminated array of processing instructions for the given +// target +const char **ezxml_pi(ezxml_t xml, const char *target) +{ + ezxml_root_t root = (ezxml_root_t)xml; + int i = 0; + + if (! root) return (const char **)EZXML_NIL; + while (root->xml.parent) root = (ezxml_root_t)root->xml.parent; // root tag + while (root->pi[i] && strcmp(target, root->pi[i][0])) i++; // find target + return (const char **)((root->pi[i]) ? root->pi[i] + 1 : EZXML_NIL); +} + +// set an error string and return root +ezxml_t ezxml_err(ezxml_root_t root, char *s, const char *err, ...) +{ + va_list ap; + int line = 1; + char *t, fmt[EZXML_ERRL]; + + for (t = root->s; t < s; t++) if (*t == '\n') line++; + _snprintf(fmt, EZXML_ERRL, "[error near line %d]: %s", line, err); + + va_start(ap, err); + _vsnprintf(root->err, EZXML_ERRL, fmt, ap); + va_end(ap); + + return &root->xml; +} + +// Recursively decodes entity and character references and normalizes new lines +// ent is a null terminated array of alternating entity names and values. set t +// to '&' for general entity decoding, '%' for parameter entity decoding, 'c' +// for cdata sections, ' ' for attribute normalization, or '*' for non-cdata +// attribute normalization. Returns s, or if the decoded string is longer than +// s, returns a malloced string that must be freed. +char *ezxml_decode(char *s, char **ent, char t) +{ + char *e, *r = s, *m = s; + long b, c, d, l; +/* + for (; *s; s++) { // normalize line endings + while (*s == '\r') { + *(s++) = '\n'; + if (*s == '\n') memmove(s, (s + 1), strlen(s)); + } + } +*/ + for (s = r; ; ) { + while (*s && *s != '&' && (*s != '%' || t != '%') && (*s & 0x80 || !isspace(*s))) s++; + + if (! *s) break; + else if (t != 'c' && ! strncmp(s, "&#", 2)) { // character reference + if (s[2] == 'x') c = strtol(s + 3, &e, 16); // base 16 + else c = strtol(s + 2, &e, 10); // base 10 + if (! c || *e != ';') { s++; continue; } // not a character ref + + if (c < 0x80) *(s++) = (char)c; // US-ASCII subset + else { // multi-byte UTF-8 sequence + for (b = 0, d = c; d; d /= 2) b++; // number of bits in c + b = (b - 2) / 5; // number of bytes in payload + *(s++) = (char)((0xFF << (7 - b)) | (c >> (6 * b))); // head + while (b) *(s++) = (char)(0x80 | ((c >> (6 * --b)) & 0x3F)); // payload + } + + memmove(s, strchr(s, ';') + 1, strlen(strchr(s, ';'))); + } + else if ((*s == '&' && (t == '&' || t == ' ' || t == '*')) || + (*s == '%' && t == '%')) { // entity reference + for (b = 0; ent[b] && strncmp(s + 1, ent[b], strlen(ent[b])); + b += 2); // find entity in entity list + + if (ent[b++]) { // found a match + if ((c = (long)strlen(ent[b])) - 1 > (e = strchr(s, ';')) - s) { + l = (d = (long)(s - r)) + c + (long)strlen(e); // new length + r = (r == m) ? strcpy(malloc(l), r) : realloc(r, l); + e = strchr((s = r + d), ';'); // fix up pointers + } + + memmove(s + c, e + 1, strlen(e)); // shift rest of string + strncpy(s, ent[b], c); // copy in replacement text + } + else s++; // not a known entity + } + else if ((t == ' ' || t == '*') && isspace(*s)) *(s++) = ' '; + else s++; // no decoding needed + } + + if (t == '*') { // normalize spaces for non-cdata attributes + for (s = r; *s; s++) { + if ((l = (long)strspn(s, " "))) memmove(s, s + l, strlen(s + l) + 1); + while (*s && *s != ' ') s++; + } + if (--s >= r && *s == ' ') *s = '\0'; // trim any trailing space + } + return r; +} + +// called when parser finds start of new tag +void ezxml_open_tag(ezxml_root_t root, char *name, char **attr) +{ + ezxml_t xml = root->cur; + + if (xml->name) xml = ezxml_add_child(xml, name, strlen(xml->txt)); + else xml->name = name; // first open tag + + xml->attr = attr; + root->cur = xml; // update tag insertion point +} + +// called when parser finds character content between open and closing tag +void ezxml_char_content(ezxml_root_t root, char *s, size_t len, char t) +{ + ezxml_t xml = root->cur; + char *m = s; + size_t l; + + if (! xml || ! xml->name || ! len) return; // sanity check + + s[len] = '\0'; // null terminate text (calling functions anticipate this) + len = strlen(s = ezxml_decode(s, root->ent, t)) + 1; + + if (! *(xml->txt)) xml->txt = s; // initial character content + else { // allocate our own memory and make a copy + xml->txt = (xml->flags & EZXML_TXTM) // allocate some space + ? realloc(xml->txt, (l = strlen(xml->txt)) + len) + : strcpy(malloc((l = strlen(xml->txt)) + len), xml->txt); + strcpy(xml->txt + l, s); // add new char content + if (s != m) free(s); // free s if it was malloced by ezxml_decode() + } + + if (xml->txt != m) ezxml_set_flag(xml, EZXML_TXTM); +} + +// called when parser finds closing tag +ezxml_t ezxml_close_tag(ezxml_root_t root, char *name, char *s) +{ + if (! root->cur || ! root->cur->name || strcmp(name, root->cur->name)) + return ezxml_err(root, s, "unexpected closing tag ", name); + + root->cur = root->cur->parent; + return NULL; +} + +// checks for circular entity references, returns non-zero if no circular +// references are found, zero otherwise +int ezxml_ent_ok(char *name, char *s, char **ent) +{ + int i; + + for (; ; s++) { + while (*s && *s != '&') s++; // find next entity reference + if (! *s) return 1; + if (! strncmp(s + 1, name, strlen(name))) return 0; // circular ref. + for (i = 0; ent[i] && strncmp(ent[i], s + 1, strlen(ent[i])); i += 2); + if (ent[i] && ! ezxml_ent_ok(name, ent[i + 1], ent)) return 0; + } +} + +// called when the parser finds a processing instruction +void ezxml_proc_inst(ezxml_root_t root, char *s, size_t len) +{ + int i = 0, j = 1; + char *target = s; + + s[len] = '\0'; // null terminate instruction + if (*(s += strcspn(s, EZXML_WS))) { + *s = '\0'; // null terminate target + s += strspn(s + 1, EZXML_WS) + 1; // skip whitespace after target + } + + if (! strcmp(target, "xml")) { // + if ((s = strstr(s, "standalone")) && ! strncmp(s + strspn(s + 10, + EZXML_WS "='\"") + 10, "yes", 3)) root->standalone = 1; + return; + } + + if (! root->pi[0]) *(root->pi = malloc(sizeof(char **))) = NULL; //first pi + + while (root->pi[i] && strcmp(target, root->pi[i][0])) i++; // find target + if (! root->pi[i]) { // new target + root->pi = realloc(root->pi, sizeof(char **) * (i + 2)); + root->pi[i] = malloc(sizeof(char *) * 3); + root->pi[i][0] = target; + root->pi[i][1] = (char *)(root->pi[i + 1] = NULL); // terminate pi list + root->pi[i][2] = _strdup(""); // empty document position list + } + + while (root->pi[i][j]) j++; // find end of instruction list for this target + root->pi[i] = realloc(root->pi[i], sizeof(char *) * (j + 3)); + root->pi[i][j + 2] = realloc(root->pi[i][j + 1], j + 1); + strcpy(root->pi[i][j + 2] + j - 1, (root->xml.name) ? ">" : "<"); + root->pi[i][j + 1] = NULL; // null terminate pi list for this target + root->pi[i][j] = s; // set instruction +} + +// called when the parser finds an internal doctype subset +short ezxml_internal_dtd(ezxml_root_t root, char *s, size_t len) +{ + char q, *c, *t, *n = NULL, *v, **ent, **pe; + int i, j; + + pe = memcpy(malloc(sizeof(EZXML_NIL)), EZXML_NIL, sizeof(EZXML_NIL)); + + for (s[len] = '\0'; s; ) { + while (*s && *s != '<' && *s != '%') s++; // find next declaration + + if (! *s) break; + else if (! strncmp(s, "'); + continue; + } + + for (i = 0, ent = (*c == '%') ? pe : root->ent; ent[i]; i++); + ent = realloc(ent, (i + 3) * sizeof(char *)); // space for next ent + if (*c == '%') pe = ent; + else root->ent = ent; + + *(++s) = '\0'; // null terminate name + if ((s = strchr(v, q))) *(s++) = '\0'; // null terminate value + ent[i + 1] = ezxml_decode(v, pe, '%'); // set value + ent[i + 2] = NULL; // null terminate entity list + if (! ezxml_ent_ok(n, ent[i + 1], ent)) { // circular reference + if (ent[i + 1] != v) free(ent[i + 1]); + ezxml_err(root, v, "circular entity declaration &%s", n); + break; + } + else ent[i] = n; // set entity name + } + else if (! strncmp(s, "")) == '>') continue; + else *s = '\0'; // null terminate tag name + for (i = 0; root->attr[i] && strcmp(n, root->attr[i][0]); i++); + + while (*(n = ++s + strspn(s, EZXML_WS)) && *n != '>') { + if (*(s = n + strcspn(n, EZXML_WS))) *s = '\0'; // attr name + else { ezxml_err(root, t, "malformed ") - 1; + if (*c == ' ') continue; // cdata is default, nothing to do + v = NULL; + } + else if ((*s == '"' || *s == '\'') && // default value + (s = strchr(v = s + 1, *s))) *s = '\0'; + else { ezxml_err(root, t, "malformed attr[i]) { // new tag name + root->attr = (! i) ? malloc(2 * sizeof(char **)) + : realloc(root->attr, + (i + 2) * sizeof(char **)); + root->attr[i] = malloc(2 * sizeof(char *)); + root->attr[i][0] = t; // set tag name + root->attr[i][1] = (char *)(root->attr[i + 1] = NULL); + } + + for (j = 1; root->attr[i][j]; j += 3); // find end of list + root->attr[i] = realloc(root->attr[i], + (j + 4) * sizeof(char *)); + + root->attr[i][j + 3] = NULL; // null terminate list + root->attr[i][j + 2] = c; // is it cdata? + root->attr[i][j + 1] = (v) ? ezxml_decode(v, root->ent, *c) + : NULL; + root->attr[i][j] = n; // attribute name + } + } + else if (! strncmp(s, ""); // comments + else if (! strncmp(s, ""))) + ezxml_proc_inst(root, c, s++ - c); + } + else if (*s == '<') s = strchr(s, '>'); // skip other declarations + else if (*(s++) == '%' && ! root->standalone) break; + } + + free(pe); + return ! *root->err; +} + +// Converts a UTF-16 string to UTF-8. Returns a new string that must be freed +// or NULL if no conversion was needed. +char *ezxml_str2utf8(char **s, size_t *len) +{ + char *u; + size_t l = 0, sl, max = *len; + long c, d; + int b, be = (**s == '\xFE') ? 1 : (**s == '\xFF') ? 0 : -1; + + if (be == -1) return NULL; // not UTF-16 + + u = malloc(max); + for (sl = 2; sl < *len - 1; sl += 2) { + c = (be) ? (((*s)[sl] & 0xFF) << 8) | ((*s)[sl + 1] & 0xFF) //UTF-16BE + : (((*s)[sl + 1] & 0xFF) << 8) | ((*s)[sl] & 0xFF); //UTF-16LE + if (c >= 0xD800 && c <= 0xDFFF && (sl += 2) < *len - 1) { // high-half + d = (be) ? (((*s)[sl] & 0xFF) << 8) | ((*s)[sl + 1] & 0xFF) + : (((*s)[sl + 1] & 0xFF) << 8) | ((*s)[sl] & 0xFF); + c = (((c & 0x3FF) << 10) | (d & 0x3FF)) + 0x10000; + } + + while (l + 6 > max) u = realloc(u, max += EZXML_BUFSIZE); + if (c < 0x80) u[l++] = (char)c; // US-ASCII subset + else { // multi-byte UTF-8 sequence + for (b = 0, d = c; d; d /= 2) b++; // bits in c + b = (b - 2) / 5; // bytes in payload + u[l++] = (char)((0xFF << (7 - b)) | (c >> (6 * b))); // head + while (b) u[l++] = (char)(0x80 | ((c >> (6 * --b)) & 0x3F)); // payload + } + } + return *s = realloc(u, *len = l); +} + +// frees a tag attribute list +void ezxml_free_attr(char **attr) { + int i = 0; + char *m; + + if (! attr || attr == EZXML_NIL) return; // nothing to free + while (attr[i]) i += 2; // find end of attribute list + m = attr[i + 1]; // list of which names and values are malloced + for (i = 0; m[i]; i++) { + if (m[i] & EZXML_NAMEM) free(attr[i * 2]); + if (m[i] & EZXML_TXTM) free(attr[(i * 2) + 1]); + } + free(m); + free(attr); +} + +// parse the given xml string and return an ezxml structure +ezxml_t ezxml_parse_str(char *s, size_t len) +{ + ezxml_root_t root = (ezxml_root_t)ezxml_new(NULL); + char q, e, *d, **attr, **a = NULL; // initialize a to avoid compile warning + int l, i, j; + + root->m = s; + if (! len) return ezxml_err(root, NULL, "root tag missing"); + root->u = ezxml_str2utf8(&s, &len); // convert utf-16 to utf-8 + root->e = (root->s = s) + len; // record start and end of work area + + e = s[len - 1]; // save end char + s[len - 1] = '\0'; // turn end char into null terminator + + while (*s && *s != '<') s++; // find first tag + if (! *s) return ezxml_err(root, s, "root tag missing"); + + for (; ; ) { + attr = (char **)EZXML_NIL; + d = ++s; + + if (isalpha(*s) || *s == '_' || *s == ':' || *s < '\0') { // new tag + if (! root->cur) + return ezxml_err(root, d, "markup outside of root element"); + + s += strcspn(s, EZXML_WS "/>"); + while (isspace(*s)) *(s++) = '\0'; // null terminate tag name + + if (*s && *s != '/' && *s != '>') // find tag in default attr list + for (i = 0; (a = root->attr[i]) && strcmp(a[0], d); i++); + + for (l = 0; *s && *s != '/' && *s != '>'; l += 2) { // new attrib + attr = (l) ? realloc(attr, (l + 4) * sizeof(char *)) + : malloc(4 * sizeof(char *)); // allocate space + attr[l + 3] = (l) ? realloc(attr[l + 1], (l / 2) + 2) + : malloc(2); // mem for list of maloced vals + strcpy(attr[l + 3] + (l / 2), " "); // value is not malloced + attr[l + 2] = NULL; // null terminate list + attr[l + 1] = ""; // temporary attribute value + attr[l] = s; // set attribute name + + s += strcspn(s, EZXML_WS "=/>"); + if (*s == '=' || isspace(*s)) { + *(s++) = '\0'; // null terminate tag attribute name + q = *(s += strspn(s, EZXML_WS "=")); + if (q == '"' || q == '\'') { // attribute value + attr[l + 1] = ++s; + while (*s && *s != q) s++; + if (*s) *(s++) = '\0'; // null terminate attribute val + else { + ezxml_free_attr(attr); + return ezxml_err(root, d, "missing %c", q); + } + + for (j = 1; a && a[j] && strcmp(a[j], attr[l]); j +=3); + attr[l + 1] = ezxml_decode(attr[l + 1], root->ent, + (char)((a && a[j]) ? *a[j + 2] : ' ')); + if (attr[l + 1] < d || attr[l + 1] > s) + attr[l + 3][l / 2] = EZXML_TXTM; // value malloced + } + } + while (isspace(*s)) s++; + } + + if (*s == '/') { // self closing tag + *(s++) = '\0'; + if ((*s && *s != '>') || (! *s && e != '>')) { + if (l) ezxml_free_attr(attr); + return ezxml_err(root, d, "missing >"); + } + ezxml_open_tag(root, d, attr); + ezxml_close_tag(root, d, s); + } + else if ((q = *s) == '>' || (! *s && e == '>')) { // open tag + *s = '\0'; // temporarily null terminate tag name + ezxml_open_tag(root, d, attr); + *s = q; + } + else { + if (l) ezxml_free_attr(attr); + return ezxml_err(root, d, "missing >"); + } + } + else if (*s == '/') { // close tag + s += strcspn(d = s + 1, EZXML_WS ">") + 1; + if (! (q = *s) && e != '>') return ezxml_err(root, d, "missing >"); + *s = '\0'; // temporarily null terminate tag name + if (ezxml_close_tag(root, d, s)) return &root->xml; + if (isspace(*s = q)) s += strspn(s, EZXML_WS); + } + else if (! strncmp(s, "!--", 3)) { // xml comment + if (! (s = strstr(s + 3, "--")) || (*(s += 2) != '>' && *s) || + (! *s && e != '>')) return ezxml_err(root, d, "unclosed - - - - - - - - - - - - - - - - - - -set toc,title -book toc,title,figure,table,example,equation -chapter toc,title -section toc -sect1 toc -sect2 toc -sect3 toc -sect4 nop -sect5 nop -qandaset toc -qandadiv nop -appendix toc,title -article/appendix nop -article toc,title -preface toc,title -reference toc,title - - - diff --git a/plugins/updater/bzip2-1.0.3/bz-fo.xsl b/plugins/updater/bzip2-1.0.3/bz-fo.xsl deleted file mode 100644 index ba3e30123f..0000000000 --- a/plugins/updater/bzip2-1.0.3/bz-fo.xsl +++ /dev/null @@ -1,276 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - blue - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0pt - - - - - - - - - - baseline - - - - - - baseline - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0pt - - - - - - - - - - - - - - - baseline - - - - - - baseline - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - always - - - - - - pt - - - - pt - - false - - - - diff --git a/plugins/updater/bzip2-1.0.3/bz-html.xsl b/plugins/updater/bzip2-1.0.3/bz-html.xsl deleted file mode 100644 index 1785fffbc9..0000000000 --- a/plugins/updater/bzip2-1.0.3/bz-html.xsl +++ /dev/null @@ -1,20 +0,0 @@ - - ]> - - - - - - - - - - - - - - - diff --git a/plugins/updater/bzip2-1.0.3/bzdiff b/plugins/updater/bzip2-1.0.3/bzdiff deleted file mode 100644 index 6fc38f92d2..0000000000 --- a/plugins/updater/bzip2-1.0.3/bzdiff +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/sh -# sh is buggy on RS/6000 AIX 3.2. Replace above line with #!/bin/ksh - -# Bzcmp/diff wrapped for bzip2, -# adapted from zdiff by Philippe Troin for Debian GNU/Linux. - -# Bzcmp and bzdiff are used to invoke the cmp or the diff pro- -# gram on compressed files. All options specified are passed -# directly to cmp or diff. If only 1 file is specified, then -# the files compared are file1 and an uncompressed file1.gz. -# If two files are specified, then they are uncompressed (if -# necessary) and fed to cmp or diff. The exit status from cmp -# or diff is preserved. - -PATH="/usr/bin:/bin:$PATH"; export PATH -prog=`echo $0 | sed 's|.*/||'` -case "$prog" in - *cmp) comp=${CMP-cmp} ;; - *) comp=${DIFF-diff} ;; -esac - -OPTIONS= -FILES= -for ARG -do - case "$ARG" in - -*) OPTIONS="$OPTIONS $ARG";; - *) if test -f "$ARG"; then - FILES="$FILES $ARG" - else - echo "${prog}: $ARG not found or not a regular file" - exit 1 - fi ;; - esac -done -if test -z "$FILES"; then - echo "Usage: $prog [${comp}_options] file [file]" - exit 1 -fi -tmp=`mktemp ${TMPDIR:-/tmp}/bzdiff.XXXXXXXXXX` || { - echo 'cannot create a temporary file' >&2 - exit 1 -} -set $FILES -if test $# -eq 1; then - FILE=`echo "$1" | sed 's/.bz2$//'` - bzip2 -cd "$FILE.bz2" | $comp $OPTIONS - "$FILE" - STAT="$?" - -elif test $# -eq 2; then - case "$1" in - *.bz2) - case "$2" in - *.bz2) - F=`echo "$2" | sed 's|.*/||;s|.bz2$||'` - bzip2 -cdfq "$2" > $tmp - bzip2 -cdfq "$1" | $comp $OPTIONS - $tmp - STAT="$?" - /bin/rm -f $tmp;; - - *) bzip2 -cdfq "$1" | $comp $OPTIONS - "$2" - STAT="$?";; - esac;; - *) case "$2" in - *.bz2) - bzip2 -cdfq "$2" | $comp $OPTIONS "$1" - - STAT="$?";; - *) $comp $OPTIONS "$1" "$2" - STAT="$?";; - esac;; - esac - exit "$STAT" -else - echo "Usage: $prog [${comp}_options] file [file]" - exit 1 -fi diff --git a/plugins/updater/bzip2-1.0.3/bzdiff.1 b/plugins/updater/bzip2-1.0.3/bzdiff.1 deleted file mode 100644 index adb7a8e724..0000000000 --- a/plugins/updater/bzip2-1.0.3/bzdiff.1 +++ /dev/null @@ -1,47 +0,0 @@ -\"Shamelessly copied from zmore.1 by Philippe Troin -\"for Debian GNU/Linux -.TH BZDIFF 1 -.SH NAME -bzcmp, bzdiff \- compare bzip2 compressed files -.SH SYNOPSIS -.B bzcmp -[ cmp_options ] file1 -[ file2 ] -.br -.B bzdiff -[ diff_options ] file1 -[ file2 ] -.SH DESCRIPTION -.I Bzcmp -and -.I bzdiff -are used to invoke the -.I cmp -or the -.I diff -program on bzip2 compressed files. All options specified are passed -directly to -.I cmp -or -.IR diff "." -If only 1 file is specified, then the files compared are -.I file1 -and an uncompressed -.IR file1 ".bz2." -If two files are specified, then they are uncompressed if necessary and fed to -.I cmp -or -.IR diff "." -The exit status from -.I cmp -or -.I diff -is preserved. -.SH "SEE ALSO" -cmp(1), diff(1), bzmore(1), bzless(1), bzgrep(1), bzip2(1) -.SH BUGS -Messages from the -.I cmp -or -.I diff -programs refer to temporary filenames instead of those specified. diff --git a/plugins/updater/bzip2-1.0.3/bzgrep b/plugins/updater/bzip2-1.0.3/bzgrep deleted file mode 100644 index 9a04b8337d..0000000000 --- a/plugins/updater/bzip2-1.0.3/bzgrep +++ /dev/null @@ -1,75 +0,0 @@ -#!/bin/sh - -# Bzgrep wrapped for bzip2, -# adapted from zgrep by Philippe Troin for Debian GNU/Linux. -## zgrep notice: -## zgrep -- a wrapper around a grep program that decompresses files as needed -## Adapted from a version sent by Charles Levert - -PATH="/usr/bin:$PATH"; export PATH - -prog=`echo $0 | sed 's|.*/||'` -case "$prog" in - *egrep) grep=${EGREP-egrep} ;; - *fgrep) grep=${FGREP-fgrep} ;; - *) grep=${GREP-grep} ;; -esac -pat="" -while test $# -ne 0; do - case "$1" in - -e | -f) opt="$opt $1"; shift; pat="$1" - if test "$grep" = grep; then # grep is buggy with -e on SVR4 - grep=egrep - fi;; - -A | -B) opt="$opt $1 $2"; shift;; - -*) opt="$opt $1";; - *) if test -z "$pat"; then - pat="$1" - else - break; - fi;; - esac - shift -done - -if test -z "$pat"; then - echo "grep through bzip2 files" - echo "usage: $prog [grep_options] pattern [files]" - exit 1 -fi - -list=0 -silent=0 -op=`echo "$opt" | sed -e 's/ //g' -e 's/-//g'` -case "$op" in - *l*) list=1 -esac -case "$op" in - *h*) silent=1 -esac - -if test $# -eq 0; then - bzip2 -cdfq | $grep $opt "$pat" - exit $? -fi - -res=0 -for i do - if test -f "$i"; then :; else if test -f "$i.bz2"; then i="$i.bz2"; fi; fi - if test $list -eq 1; then - bzip2 -cdfq "$i" | $grep $opt "$pat" 2>&1 > /dev/null && echo $i - r=$? - elif test $# -eq 1 -o $silent -eq 1; then - bzip2 -cdfq "$i" | $grep $opt "$pat" - r=$? - else - j=${i//\\/\\\\} - j=${j//|/\\|} - j=${j//&/\\&} - j=`printf "%s" "$j" | tr '\n' ' '` - bzip2 -cdfq "$i" | $grep $opt "$pat" | sed "s|^|${j}:|" - r=$? - fi - test "$r" -ne 0 && res="$r" -done -exit $res diff --git a/plugins/updater/bzip2-1.0.3/bzgrep.1 b/plugins/updater/bzip2-1.0.3/bzgrep.1 deleted file mode 100644 index 930af8c7fc..0000000000 --- a/plugins/updater/bzip2-1.0.3/bzgrep.1 +++ /dev/null @@ -1,56 +0,0 @@ -\"Shamelessly copied from zmore.1 by Philippe Troin -\"for Debian GNU/Linux -.TH BZGREP 1 -.SH NAME -bzgrep, bzfgrep, bzegrep \- search possibly bzip2 compressed files for a regular expression -.SH SYNOPSIS -.B bzgrep -[ grep_options ] -.BI [\ -e\ ] " pattern" -.IR filename ".\|.\|." -.br -.B bzegrep -[ egrep_options ] -.BI [\ -e\ ] " pattern" -.IR filename ".\|.\|." -.br -.B bzfgrep -[ fgrep_options ] -.BI [\ -e\ ] " pattern" -.IR filename ".\|.\|." -.SH DESCRIPTION -.IR Bzgrep -is used to invoke the -.I grep -on bzip2-compressed files. All options specified are passed directly to -.I grep. -If no file is specified, then the standard input is decompressed -if necessary and fed to grep. -Otherwise the given files are uncompressed if necessary and fed to -.I grep. -.PP -If -.I bzgrep -is invoked as -.I bzegrep -or -.I bzfgrep -then -.I egrep -or -.I fgrep -is used instead of -.I grep. -If the GREP environment variable is set, -.I bzgrep -uses it as the -.I grep -program to be invoked. For example: - - for sh: GREP=fgrep bzgrep string files - for csh: (setenv GREP fgrep; bzgrep string files) -.SH AUTHOR -Charles Levert (charles@comm.polymtl.ca). Adapted to bzip2 by Philippe -Troin for Debian GNU/Linux. -.SH "SEE ALSO" -grep(1), egrep(1), fgrep(1), bzdiff(1), bzmore(1), bzless(1), bzip2(1) diff --git a/plugins/updater/bzip2-1.0.3/bzip.css b/plugins/updater/bzip2-1.0.3/bzip.css deleted file mode 100644 index 43193d8db0..0000000000 --- a/plugins/updater/bzip2-1.0.3/bzip.css +++ /dev/null @@ -1,74 +0,0 @@ -/* Colours: -#74240f dark brown h1, h2, h3, h4 -#336699 medium blue links -#339999 turquoise link hover colour -#202020 almost black general text -#761596 purple md5sum text -#626262 dark gray pre border -#eeeeee very light gray pre background -#f2f2f9 very light blue nav table background -#3366cc medium blue nav table border -*/ - -a, a:link, a:visited, a:active { color: #336699; } -a:hover { color: #339999; } - -body { font: 80%/126% sans-serif; } -h1, h2, h3, h4 { color: #74240f; } - -dt { color: #336699; font-weight: bold } -dd { - margin-left: 1.5em; - padding-bottom: 0.8em; -} - -/* -- ruler -- */ -div.hr_blue { - height: 3px; - background:#ffffff url("/images/hr_blue.png") repeat-x; } -div.hr_blue hr { display:none; } - -/* release styles */ -#release p { margin-top: 0.4em; } -#release .md5sum { color: #761596; } - - -/* ------ styles for docs|manuals|howto ------ */ -/* -- lists -- */ -ul { - margin: 0px 4px 16px 16px; - padding: 0px; - list-style: url("/images/li-blue.png"); -} -ul li { - margin-bottom: 10px; -} -ul ul { - list-style-type: none; - list-style-image: none; - margin-left: 0px; -} - -/* header / footer nav tables */ -table.nav { - border: solid 1px #3366cc; - background: #f2f2f9; - background-color: #f2f2f9; - margin-bottom: 0.5em; -} -/* don't have underlined links in chunked nav menus */ -table.nav a { text-decoration: none; } -table.nav a:hover { text-decoration: underline; } -table.nav td { font-size: 85%; } - -code, tt, pre { font-size: 120%; } -code, tt { color: #761596; } - -div.literallayout, pre.programlisting, pre.screen { - color: #000000; - padding: 0.5em; - background: #eeeeee; - border: 1px solid #626262; - background-color: #eeeeee; - margin: 4px 0px 4px 0px; -} diff --git a/plugins/updater/bzip2-1.0.3/bzip2.1 b/plugins/updater/bzip2-1.0.3/bzip2.1 deleted file mode 100644 index ce3a78e6b4..0000000000 --- a/plugins/updater/bzip2-1.0.3/bzip2.1 +++ /dev/null @@ -1,454 +0,0 @@ -.PU -.TH bzip2 1 -.SH NAME -bzip2, bunzip2 \- a block-sorting file compressor, v1.0.6 -.br -bzcat \- decompresses files to stdout -.br -bzip2recover \- recovers data from damaged bzip2 files - -.SH SYNOPSIS -.ll +8 -.B bzip2 -.RB [ " \-cdfkqstvzVL123456789 " ] -[ -.I "filenames \&..." -] -.ll -8 -.br -.B bunzip2 -.RB [ " \-fkvsVL " ] -[ -.I "filenames \&..." -] -.br -.B bzcat -.RB [ " \-s " ] -[ -.I "filenames \&..." -] -.br -.B bzip2recover -.I "filename" - -.SH DESCRIPTION -.I bzip2 -compresses files using the Burrows-Wheeler block sorting -text compression algorithm, and Huffman coding. Compression is -generally considerably better than that achieved by more conventional -LZ77/LZ78-based compressors, and approaches the performance of the PPM -family of statistical compressors. - -The command-line options are deliberately very similar to -those of -.I GNU gzip, -but they are not identical. - -.I bzip2 -expects a list of file names to accompany the -command-line flags. Each file is replaced by a compressed version of -itself, with the name "original_name.bz2". -Each compressed file -has the same modification date, permissions, and, when possible, -ownership as the corresponding original, so that these properties can -be correctly restored at decompression time. File name handling is -naive in the sense that there is no mechanism for preserving original -file names, permissions, ownerships or dates in filesystems which lack -these concepts, or have serious file name length restrictions, such as -MS-DOS. - -.I bzip2 -and -.I bunzip2 -will by default not overwrite existing -files. If you want this to happen, specify the \-f flag. - -If no file names are specified, -.I bzip2 -compresses from standard -input to standard output. In this case, -.I bzip2 -will decline to -write compressed output to a terminal, as this would be entirely -incomprehensible and therefore pointless. - -.I bunzip2 -(or -.I bzip2 \-d) -decompresses all -specified files. Files which were not created by -.I bzip2 -will be detected and ignored, and a warning issued. -.I bzip2 -attempts to guess the filename for the decompressed file -from that of the compressed file as follows: - - filename.bz2 becomes filename - filename.bz becomes filename - filename.tbz2 becomes filename.tar - filename.tbz becomes filename.tar - anyothername becomes anyothername.out - -If the file does not end in one of the recognised endings, -.I .bz2, -.I .bz, -.I .tbz2 -or -.I .tbz, -.I bzip2 -complains that it cannot -guess the name of the original file, and uses the original name -with -.I .out -appended. - -As with compression, supplying no -filenames causes decompression from -standard input to standard output. - -.I bunzip2 -will correctly decompress a file which is the -concatenation of two or more compressed files. The result is the -concatenation of the corresponding uncompressed files. Integrity -testing (\-t) -of concatenated -compressed files is also supported. - -You can also compress or decompress files to the standard output by -giving the \-c flag. Multiple files may be compressed and -decompressed like this. The resulting outputs are fed sequentially to -stdout. Compression of multiple files -in this manner generates a stream -containing multiple compressed file representations. Such a stream -can be decompressed correctly only by -.I bzip2 -version 0.9.0 or -later. Earlier versions of -.I bzip2 -will stop after decompressing -the first file in the stream. - -.I bzcat -(or -.I bzip2 -dc) -decompresses all specified files to -the standard output. - -.I bzip2 -will read arguments from the environment variables -.I BZIP2 -and -.I BZIP, -in that order, and will process them -before any arguments read from the command line. This gives a -convenient way to supply default arguments. - -Compression is always performed, even if the compressed -file is slightly -larger than the original. Files of less than about one hundred bytes -tend to get larger, since the compression mechanism has a constant -overhead in the region of 50 bytes. Random data (including the output -of most file compressors) is coded at about 8.05 bits per byte, giving -an expansion of around 0.5%. - -As a self-check for your protection, -.I -bzip2 -uses 32-bit CRCs to -make sure that the decompressed version of a file is identical to the -original. This guards against corruption of the compressed data, and -against undetected bugs in -.I bzip2 -(hopefully very unlikely). The -chances of data corruption going undetected is microscopic, about one -chance in four billion for each file processed. Be aware, though, that -the check occurs upon decompression, so it can only tell you that -something is wrong. It can't help you -recover the original uncompressed -data. You can use -.I bzip2recover -to try to recover data from -damaged files. - -Return values: 0 for a normal exit, 1 for environmental problems (file -not found, invalid flags, I/O errors, &c), 2 to indicate a corrupt -compressed file, 3 for an internal consistency error (eg, bug) which -caused -.I bzip2 -to panic. - -.SH OPTIONS -.TP -.B \-c --stdout -Compress or decompress to standard output. -.TP -.B \-d --decompress -Force decompression. -.I bzip2, -.I bunzip2 -and -.I bzcat -are -really the same program, and the decision about what actions to take is -done on the basis of which name is used. This flag overrides that -mechanism, and forces -.I bzip2 -to decompress. -.TP -.B \-z --compress -The complement to \-d: forces compression, regardless of the -invocation name. -.TP -.B \-t --test -Check integrity of the specified file(s), but don't decompress them. -This really performs a trial decompression and throws away the result. -.TP -.B \-f --force -Force overwrite of output files. Normally, -.I bzip2 -will not overwrite -existing output files. Also forces -.I bzip2 -to break hard links -to files, which it otherwise wouldn't do. - -bzip2 normally declines to decompress files which don't have the -correct magic header bytes. If forced (-f), however, it will pass -such files through unmodified. This is how GNU gzip behaves. -.TP -.B \-k --keep -Keep (don't delete) input files during compression -or decompression. -.TP -.B \-s --small -Reduce memory usage, for compression, decompression and testing. Files -are decompressed and tested using a modified algorithm which only -requires 2.5 bytes per block byte. This means any file can be -decompressed in 2300k of memory, albeit at about half the normal speed. - -During compression, \-s selects a block size of 200k, which limits -memory use to around the same figure, at the expense of your compression -ratio. In short, if your machine is low on memory (8 megabytes or -less), use \-s for everything. See MEMORY MANAGEMENT below. -.TP -.B \-q --quiet -Suppress non-essential warning messages. Messages pertaining to -I/O errors and other critical events will not be suppressed. -.TP -.B \-v --verbose -Verbose mode -- show the compression ratio for each file processed. -Further \-v's increase the verbosity level, spewing out lots of -information which is primarily of interest for diagnostic purposes. -.TP -.B \-L --license -V --version -Display the software version, license terms and conditions. -.TP -.B \-1 (or \-\-fast) to \-9 (or \-\-best) -Set the block size to 100 k, 200 k .. 900 k when compressing. Has no -effect when decompressing. See MEMORY MANAGEMENT below. -The \-\-fast and \-\-best aliases are primarily for GNU gzip -compatibility. In particular, \-\-fast doesn't make things -significantly faster. -And \-\-best merely selects the default behaviour. -.TP -.B \-- -Treats all subsequent arguments as file names, even if they start -with a dash. This is so you can handle files with names beginning -with a dash, for example: bzip2 \-- \-myfilename. -.TP -.B \--repetitive-fast --repetitive-best -These flags are redundant in versions 0.9.5 and above. They provided -some coarse control over the behaviour of the sorting algorithm in -earlier versions, which was sometimes useful. 0.9.5 and above have an -improved algorithm which renders these flags irrelevant. - -.SH MEMORY MANAGEMENT -.I bzip2 -compresses large files in blocks. The block size affects -both the compression ratio achieved, and the amount of memory needed for -compression and decompression. The flags \-1 through \-9 -specify the block size to be 100,000 bytes through 900,000 bytes (the -default) respectively. At decompression time, the block size used for -compression is read from the header of the compressed file, and -.I bunzip2 -then allocates itself just enough memory to decompress -the file. Since block sizes are stored in compressed files, it follows -that the flags \-1 to \-9 are irrelevant to and so ignored -during decompression. - -Compression and decompression requirements, -in bytes, can be estimated as: - - Compression: 400k + ( 8 x block size ) - - Decompression: 100k + ( 4 x block size ), or - 100k + ( 2.5 x block size ) - -Larger block sizes give rapidly diminishing marginal returns. Most of -the compression comes from the first two or three hundred k of block -size, a fact worth bearing in mind when using -.I bzip2 -on small machines. -It is also important to appreciate that the decompression memory -requirement is set at compression time by the choice of block size. - -For files compressed with the default 900k block size, -.I bunzip2 -will require about 3700 kbytes to decompress. To support decompression -of any file on a 4 megabyte machine, -.I bunzip2 -has an option to -decompress using approximately half this amount of memory, about 2300 -kbytes. Decompression speed is also halved, so you should use this -option only where necessary. The relevant flag is -s. - -In general, try and use the largest block size memory constraints allow, -since that maximises the compression achieved. Compression and -decompression speed are virtually unaffected by block size. - -Another significant point applies to files which fit in a single block --- that means most files you'd encounter using a large block size. The -amount of real memory touched is proportional to the size of the file, -since the file is smaller than a block. For example, compressing a file -20,000 bytes long with the flag -9 will cause the compressor to -allocate around 7600k of memory, but only touch 400k + 20000 * 8 = 560 -kbytes of it. Similarly, the decompressor will allocate 3700k but only -touch 100k + 20000 * 4 = 180 kbytes. - -Here is a table which summarises the maximum memory usage for different -block sizes. Also recorded is the total compressed size for 14 files of -the Calgary Text Compression Corpus totalling 3,141,622 bytes. This -column gives some feel for how compression varies with block size. -These figures tend to understate the advantage of larger block sizes for -larger files, since the Corpus is dominated by smaller files. - - Compress Decompress Decompress Corpus - Flag usage usage -s usage Size - - -1 1200k 500k 350k 914704 - -2 2000k 900k 600k 877703 - -3 2800k 1300k 850k 860338 - -4 3600k 1700k 1100k 846899 - -5 4400k 2100k 1350k 845160 - -6 5200k 2500k 1600k 838626 - -7 6100k 2900k 1850k 834096 - -8 6800k 3300k 2100k 828642 - -9 7600k 3700k 2350k 828642 - -.SH RECOVERING DATA FROM DAMAGED FILES -.I bzip2 -compresses files in blocks, usually 900kbytes long. Each -block is handled independently. If a media or transmission error causes -a multi-block .bz2 -file to become damaged, it may be possible to -recover data from the undamaged blocks in the file. - -The compressed representation of each block is delimited by a 48-bit -pattern, which makes it possible to find the block boundaries with -reasonable certainty. Each block also carries its own 32-bit CRC, so -damaged blocks can be distinguished from undamaged ones. - -.I bzip2recover -is a simple program whose purpose is to search for -blocks in .bz2 files, and write each block out into its own .bz2 -file. You can then use -.I bzip2 -\-t -to test the -integrity of the resulting files, and decompress those which are -undamaged. - -.I bzip2recover -takes a single argument, the name of the damaged file, -and writes a number of files "rec00001file.bz2", -"rec00002file.bz2", etc, containing the extracted blocks. -The output filenames are designed so that the use of -wildcards in subsequent processing -- for example, -"bzip2 -dc rec*file.bz2 > recovered_data" -- processes the files in -the correct order. - -.I bzip2recover -should be of most use dealing with large .bz2 -files, as these will contain many blocks. It is clearly -futile to use it on damaged single-block files, since a -damaged block cannot be recovered. If you wish to minimise -any potential data loss through media or transmission errors, -you might consider compressing with a smaller -block size. - -.SH PERFORMANCE NOTES -The sorting phase of compression gathers together similar strings in the -file. Because of this, files containing very long runs of repeated -symbols, like "aabaabaabaab ..." (repeated several hundred times) may -compress more slowly than normal. Versions 0.9.5 and above fare much -better than previous versions in this respect. The ratio between -worst-case and average-case compression time is in the region of 10:1. -For previous versions, this figure was more like 100:1. You can use the -\-vvvv option to monitor progress in great detail, if you want. - -Decompression speed is unaffected by these phenomena. - -.I bzip2 -usually allocates several megabytes of memory to operate -in, and then charges all over it in a fairly random fashion. This means -that performance, both for compressing and decompressing, is largely -determined by the speed at which your machine can service cache misses. -Because of this, small changes to the code to reduce the miss rate have -been observed to give disproportionately large performance improvements. -I imagine -.I bzip2 -will perform best on machines with very large caches. - -.SH CAVEATS -I/O error messages are not as helpful as they could be. -.I bzip2 -tries hard to detect I/O errors and exit cleanly, but the details of -what the problem is sometimes seem rather misleading. - -This manual page pertains to version 1.0.6 of -.I bzip2. -Compressed data created by this version is entirely forwards and -backwards compatible with the previous public releases, versions -0.1pl2, 0.9.0, 0.9.5, 1.0.0, 1.0.1, 1.0.2 and above, but with the following -exception: 0.9.0 and above can correctly decompress multiple -concatenated compressed files. 0.1pl2 cannot do this; it will stop -after decompressing just the first file in the stream. - -.I bzip2recover -versions prior to 1.0.2 used 32-bit integers to represent -bit positions in compressed files, so they could not handle compressed -files more than 512 megabytes long. Versions 1.0.2 and above use -64-bit ints on some platforms which support them (GNU supported -targets, and Windows). To establish whether or not bzip2recover was -built with such a limitation, run it without arguments. In any event -you can build yourself an unlimited version if you can recompile it -with MaybeUInt64 set to be an unsigned 64-bit integer. - - - -.SH AUTHOR -Julian Seward, jsewardbzip.org. - -http://www.bzip.org - -The ideas embodied in -.I bzip2 -are due to (at least) the following -people: Michael Burrows and David Wheeler (for the block sorting -transformation), David Wheeler (again, for the Huffman coder), Peter -Fenwick (for the structured coding model in the original -.I bzip, -and many refinements), and Alistair Moffat, Radford Neal and Ian Witten -(for the arithmetic coder in the original -.I bzip). -I am much -indebted for their help, support and advice. See the manual in the -source distribution for pointers to sources of documentation. Christian -von Roques encouraged me to look for faster sorting algorithms, so as to -speed up compression. Bela Lubkin encouraged me to improve the -worst-case compression performance. -Donna Robinson XMLised the documentation. -The bz* scripts are derived from those of GNU gzip. -Many people sent patches, helped -with portability problems, lent machines, gave advice and were generally -helpful. diff --git a/plugins/updater/bzip2-1.0.3/bzip2.1.preformatted b/plugins/updater/bzip2-1.0.3/bzip2.1.preformatted deleted file mode 100644 index 63c33be99e..0000000000 --- a/plugins/updater/bzip2-1.0.3/bzip2.1.preformatted +++ /dev/null @@ -1,399 +0,0 @@ -bzip2(1) bzip2(1) - - - -NNAAMMEE - bzip2, bunzip2 − a blockâ€sorting file compressor, v1.0.6 - bzcat − decompresses files to stdout - bzip2recover − recovers data from damaged bzip2 files - - -SSYYNNOOPPSSIISS - bbzziipp22 [ −−ccddffkkqqssttvvzzVVLL112233445566778899 ] [ _f_i_l_e_n_a_m_e_s _._._. ] - bbuunnzziipp22 [ −−ffkkvvssVVLL ] [ _f_i_l_e_n_a_m_e_s _._._. ] - bbzzccaatt [ −−ss ] [ _f_i_l_e_n_a_m_e_s _._._. ] - bbzziipp22rreeccoovveerr _f_i_l_e_n_a_m_e - - -DDEESSCCRRIIPPTTIIOONN - _b_z_i_p_2 compresses files using the Burrowsâ€Wheeler block - sorting text compression algorithm, and Huffman coding. - Compression is generally considerably better than that - achieved by more conventional LZ77/LZ78â€based compressors, - and approaches the performance of the PPM family of sta­ - tistical compressors. - - The commandâ€line options are deliberately very similar to - those of _G_N_U _g_z_i_p_, but they are not identical. - - _b_z_i_p_2 expects a list of file names to accompany the com­ - mandâ€line flags. Each file is replaced by a compressed - version of itself, with the name "original_name.bz2". - Each compressed file has the same modification date, per­ - missions, and, when possible, ownership as the correspond­ - ing original, so that these properties can be correctly - restored at decompression time. File name handling is - naive in the sense that there is no mechanism for preserv­ - ing original file names, permissions, ownerships or dates - in filesystems which lack these concepts, or have serious - file name length restrictions, such as MSâ€DOS. - - _b_z_i_p_2 and _b_u_n_z_i_p_2 will by default not overwrite existing - files. If you want this to happen, specify the −f flag. - - If no file names are specified, _b_z_i_p_2 compresses from - standard input to standard output. In this case, _b_z_i_p_2 - will decline to write compressed output to a terminal, as - this would be entirely incomprehensible and therefore - pointless. - - _b_u_n_z_i_p_2 (or _b_z_i_p_2 _−_d_) decompresses all specified files. - Files which were not created by _b_z_i_p_2 will be detected and - ignored, and a warning issued. _b_z_i_p_2 attempts to guess - the filename for the decompressed file from that of the - compressed file as follows: - - filename.bz2 becomes filename - filename.bz becomes filename - filename.tbz2 becomes filename.tar - filename.tbz becomes filename.tar - anyothername becomes anyothername.out - - If the file does not end in one of the recognised endings, - _._b_z_2_, _._b_z_, _._t_b_z_2 or _._t_b_z_, _b_z_i_p_2 complains that it cannot - guess the name of the original file, and uses the original - name with _._o_u_t appended. - - As with compression, supplying no filenames causes decom­ - pression from standard input to standard output. - - _b_u_n_z_i_p_2 will correctly decompress a file which is the con­ - catenation of two or more compressed files. The result is - the concatenation of the corresponding uncompressed files. - Integrity testing (−t) of concatenated compressed files is - also supported. - - You can also compress or decompress files to the standard - output by giving the −c flag. Multiple files may be com­ - pressed and decompressed like this. The resulting outputs - are fed sequentially to stdout. Compression of multiple - files in this manner generates a stream containing multi­ - ple compressed file representations. Such a stream can be - decompressed correctly only by _b_z_i_p_2 version 0.9.0 or - later. Earlier versions of _b_z_i_p_2 will stop after decom­ - pressing the first file in the stream. - - _b_z_c_a_t (or _b_z_i_p_2 _â€_d_c_) decompresses all specified files to - the standard output. - - _b_z_i_p_2 will read arguments from the environment variables - _B_Z_I_P_2 and _B_Z_I_P_, in that order, and will process them - before any arguments read from the command line. This - gives a convenient way to supply default arguments. - - Compression is always performed, even if the compressed - file is slightly larger than the original. Files of less - than about one hundred bytes tend to get larger, since the - compression mechanism has a constant overhead in the - region of 50 bytes. Random data (including the output of - most file compressors) is coded at about 8.05 bits per - byte, giving an expansion of around 0.5%. - - As a selfâ€check for your protection, _b_z_i_p_2 uses 32â€bit - CRCs to make sure that the decompressed version of a file - is identical to the original. This guards against corrup­ - tion of the compressed data, and against undetected bugs - in _b_z_i_p_2 (hopefully very unlikely). The chances of data - corruption going undetected is microscopic, about one - chance in four billion for each file processed. Be aware, - though, that the check occurs upon decompression, so it - can only tell you that something is wrong. It can’t help - you recover the original uncompressed data. You can use - _b_z_i_p_2_r_e_c_o_v_e_r to try to recover data from damaged files. - - Return values: 0 for a normal exit, 1 for environmental - problems (file not found, invalid flags, I/O errors, &c), - 2 to indicate a corrupt compressed file, 3 for an internal - consistency error (eg, bug) which caused _b_z_i_p_2 to panic. - - -OOPPTTIIOONNSS - −−cc â€â€â€â€ssttddoouutt - Compress or decompress to standard output. - - −−dd â€â€â€â€ddeeccoommpprreessss - Force decompression. _b_z_i_p_2_, _b_u_n_z_i_p_2 and _b_z_c_a_t are - really the same program, and the decision about - what actions to take is done on the basis of which - name is used. This flag overrides that mechanism, - and forces _b_z_i_p_2 to decompress. - - −−zz â€â€â€â€ccoommpprreessss - The complement to −d: forces compression, - regardless of the invocation name. - - −−tt â€â€â€â€tteesstt - Check integrity of the specified file(s), but don’t - decompress them. This really performs a trial - decompression and throws away the result. - - −−ff â€â€â€â€ffoorrccee - Force overwrite of output files. Normally, _b_z_i_p_2 - will not overwrite existing output files. Also - forces _b_z_i_p_2 to break hard links to files, which it - otherwise wouldn’t do. - - bzip2 normally declines to decompress files which - don’t have the correct magic header bytes. If - forced (â€f), however, it will pass such files - through unmodified. This is how GNU gzip behaves. - - −−kk â€â€â€â€kkeeeepp - Keep (don’t delete) input files during compression - or decompression. - - −−ss â€â€â€â€ssmmaallll - Reduce memory usage, for compression, decompression - and testing. Files are decompressed and tested - using a modified algorithm which only requires 2.5 - bytes per block byte. This means any file can be - decompressed in 2300k of memory, albeit at about - half the normal speed. - - During compression, −s selects a block size of - 200k, which limits memory use to around the same - figure, at the expense of your compression ratio. - In short, if your machine is low on memory (8 - megabytes or less), use −s for everything. See - MEMORY MANAGEMENT below. - - −−qq â€â€â€â€qquuiieett - Suppress nonâ€essential warning messages. Messages - pertaining to I/O errors and other critical events - will not be suppressed. - - −−vv â€â€â€â€vveerrbboossee - Verbose mode â€â€ show the compression ratio for each - file processed. Further −v’s increase the ver­ - bosity level, spewing out lots of information which - is primarily of interest for diagnostic purposes. - - −−LL â€â€â€â€lliicceennssee â€â€VV â€â€â€â€vveerrssiioonn - Display the software version, license terms and - conditions. - - −−11 ((oorr −−−−ffaasstt)) ttoo −−99 ((oorr −−−−bbeesstt)) - Set the block size to 100 k, 200 k .. 900 k when - compressing. Has no effect when decompressing. - See MEMORY MANAGEMENT below. The −−fast and −−best - aliases are primarily for GNU gzip compatibility. - In particular, −−fast doesn’t make things signifi­ - cantly faster. And −−best merely selects the - default behaviour. - - −− Treats all subsequent arguments as file names, even - if they start with a dash. This is so you can han­ - dle files with names beginning with a dash, for - example: bzip2 −†−myfilename. - - −−â€â€rreeppeettiittiivveeâ€â€ffaasstt â€â€â€â€rreeppeettiittiivveeâ€â€bbeesstt - These flags are redundant in versions 0.9.5 and - above. They provided some coarse control over the - behaviour of the sorting algorithm in earlier ver­ - sions, which was sometimes useful. 0.9.5 and above - have an improved algorithm which renders these - flags irrelevant. - - -MMEEMMOORRYY MMAANNAAGGEEMMEENNTT - _b_z_i_p_2 compresses large files in blocks. The block size - affects both the compression ratio achieved, and the - amount of memory needed for compression and decompression. - The flags −1 through −9 specify the block size to be - 100,000 bytes through 900,000 bytes (the default) respec­ - tively. At decompression time, the block size used for - compression is read from the header of the compressed - file, and _b_u_n_z_i_p_2 then allocates itself just enough memory - to decompress the file. Since block sizes are stored in - compressed files, it follows that the flags −1 to −9 are - irrelevant to and so ignored during decompression. - - Compression and decompression requirements, in bytes, can - be estimated as: - - Compression: 400k + ( 8 x block size ) - - Decompression: 100k + ( 4 x block size ), or - 100k + ( 2.5 x block size ) - - Larger block sizes give rapidly diminishing marginal - returns. Most of the compression comes from the first two - or three hundred k of block size, a fact worth bearing in - mind when using _b_z_i_p_2 on small machines. It is also - important to appreciate that the decompression memory - requirement is set at compression time by the choice of - block size. - - For files compressed with the default 900k block size, - _b_u_n_z_i_p_2 will require about 3700 kbytes to decompress. To - support decompression of any file on a 4 megabyte machine, - _b_u_n_z_i_p_2 has an option to decompress using approximately - half this amount of memory, about 2300 kbytes. Decompres­ - sion speed is also halved, so you should use this option - only where necessary. The relevant flag is â€s. - - In general, try and use the largest block size memory con­ - straints allow, since that maximises the compression - achieved. Compression and decompression speed are virtu­ - ally unaffected by block size. - - Another significant point applies to files which fit in a - single block â€â€ that means most files you’d encounter - using a large block size. The amount of real memory - touched is proportional to the size of the file, since the - file is smaller than a block. For example, compressing a - file 20,000 bytes long with the flag â€9 will cause the - compressor to allocate around 7600k of memory, but only - touch 400k + 20000 * 8 = 560 kbytes of it. Similarly, the - decompressor will allocate 3700k but only touch 100k + - 20000 * 4 = 180 kbytes. - - Here is a table which summarises the maximum memory usage - for different block sizes. Also recorded is the total - compressed size for 14 files of the Calgary Text Compres­ - sion Corpus totalling 3,141,622 bytes. This column gives - some feel for how compression varies with block size. - These figures tend to understate the advantage of larger - block sizes for larger files, since the Corpus is domi­ - nated by smaller files. - - Compress Decompress Decompress Corpus - Flag usage usage â€s usage Size - - â€1 1200k 500k 350k 914704 - â€2 2000k 900k 600k 877703 - â€3 2800k 1300k 850k 860338 - â€4 3600k 1700k 1100k 846899 - â€5 4400k 2100k 1350k 845160 - â€6 5200k 2500k 1600k 838626 - â€7 6100k 2900k 1850k 834096 - â€8 6800k 3300k 2100k 828642 - â€9 7600k 3700k 2350k 828642 - - -RREECCOOVVEERRIINNGG DDAATTAA FFRROOMM DDAAMMAAGGEEDD FFIILLEESS - _b_z_i_p_2 compresses files in blocks, usually 900kbytes long. - Each block is handled independently. If a media or trans­ - mission error causes a multiâ€block .bz2 file to become - damaged, it may be possible to recover data from the - undamaged blocks in the file. - - The compressed representation of each block is delimited - by a 48â€bit pattern, which makes it possible to find the - block boundaries with reasonable certainty. Each block - also carries its own 32â€bit CRC, so damaged blocks can be - distinguished from undamaged ones. - - _b_z_i_p_2_r_e_c_o_v_e_r is a simple program whose purpose is to - search for blocks in .bz2 files, and write each block out - into its own .bz2 file. You can then use _b_z_i_p_2 −t to test - the integrity of the resulting files, and decompress those - which are undamaged. - - _b_z_i_p_2_r_e_c_o_v_e_r takes a single argument, the name of the dam­ - aged file, and writes a number of files - "rec00001file.bz2", "rec00002file.bz2", etc, containing - the extracted blocks. The output filenames are - designed so that the use of wildcards in subsequent pro­ - cessing â€â€ for example, "bzip2 â€dc rec*file.bz2 > recov­ - ered_data" â€â€ processes the files in the correct order. - - _b_z_i_p_2_r_e_c_o_v_e_r should be of most use dealing with large .bz2 - files, as these will contain many blocks. It is clearly - futile to use it on damaged singleâ€block files, since a - damaged block cannot be recovered. If you wish to min­ - imise any potential data loss through media or transmis­ - sion errors, you might consider compressing with a smaller - block size. - - -PPEERRFFOORRMMAANNCCEE NNOOTTEESS - The sorting phase of compression gathers together similar - strings in the file. Because of this, files containing - very long runs of repeated symbols, like "aabaabaabaab - ..." (repeated several hundred times) may compress more - slowly than normal. Versions 0.9.5 and above fare much - better than previous versions in this respect. The ratio - between worstâ€case and averageâ€case compression time is in - the region of 10:1. For previous versions, this figure - was more like 100:1. You can use the −vvvv option to mon­ - itor progress in great detail, if you want. - - Decompression speed is unaffected by these phenomena. - - _b_z_i_p_2 usually allocates several megabytes of memory to - operate in, and then charges all over it in a fairly ran­ - dom fashion. This means that performance, both for com­ - pressing and decompressing, is largely determined by the - speed at which your machine can service cache misses. - Because of this, small changes to the code to reduce the - miss rate have been observed to give disproportionately - large performance improvements. I imagine _b_z_i_p_2 will per­ - form best on machines with very large caches. - - -CCAAVVEEAATTSS - I/O error messages are not as helpful as they could be. - _b_z_i_p_2 tries hard to detect I/O errors and exit cleanly, - but the details of what the problem is sometimes seem - rather misleading. - - This manual page pertains to version 1.0.6 of _b_z_i_p_2_. Com­ - pressed data created by this version is entirely forwards - and backwards compatible with the previous public - releases, versions 0.1pl2, 0.9.0, 0.9.5, 1.0.0, 1.0.1, - 1.0.2 and above, but with the following exception: 0.9.0 - and above can correctly decompress multiple concatenated - compressed files. 0.1pl2 cannot do this; it will stop - after decompressing just the first file in the stream. - - _b_z_i_p_2_r_e_c_o_v_e_r versions prior to 1.0.2 used 32â€bit integers - to represent bit positions in compressed files, so they - could not handle compressed files more than 512 megabytes - long. Versions 1.0.2 and above use 64â€bit ints on some - platforms which support them (GNU supported targets, and - Windows). To establish whether or not bzip2recover was - built with such a limitation, run it without arguments. - In any event you can build yourself an unlimited version - if you can recompile it with MaybeUInt64 set to be an - unsigned 64â€bit integer. - - - - -AAUUTTHHOORR - Julian Seward, jsewardbzip.org. - - http://www.bzip.org - - The ideas embodied in _b_z_i_p_2 are due to (at least) the fol­ - lowing people: Michael Burrows and David Wheeler (for the - block sorting transformation), David Wheeler (again, for - the Huffman coder), Peter Fenwick (for the structured cod­ - ing model in the original _b_z_i_p_, and many refinements), and - Alistair Moffat, Radford Neal and Ian Witten (for the - arithmetic coder in the original _b_z_i_p_)_. I am much - indebted for their help, support and advice. See the man­ - ual in the source distribution for pointers to sources of - documentation. Christian von Roques encouraged me to look - for faster sorting algorithms, so as to speed up compres­ - sion. Bela Lubkin encouraged me to improve the worstâ€case - compression performance. Donna Robinson XMLised the docu­ - mentation. The bz* scripts are derived from those of GNU - gzip. Many people sent patches, helped with portability - problems, lent machines, gave advice and were generally - helpful. - - - - bzip2(1) diff --git a/plugins/updater/bzip2-1.0.3/bzip2.c b/plugins/updater/bzip2-1.0.3/bzip2.c deleted file mode 100644 index 6de9d1d148..0000000000 --- a/plugins/updater/bzip2-1.0.3/bzip2.c +++ /dev/null @@ -1,2034 +0,0 @@ - -/*-----------------------------------------------------------*/ -/*--- A block-sorting, lossless compressor bzip2.c ---*/ -/*-----------------------------------------------------------*/ - -/* ------------------------------------------------------------------ - This file is part of bzip2/libbzip2, a program and library for - lossless, block-sorting data compression. - - bzip2/libbzip2 version 1.0.6 of 6 September 2010 - Copyright (C) 1996-2010 Julian Seward - - Please read the WARNING, DISCLAIMER and PATENTS sections in the - README file. - - This program is released under the terms of the license contained - in the file LICENSE. - ------------------------------------------------------------------ */ - - -/* Place a 1 beside your platform, and 0 elsewhere. - Generic 32-bit Unix. - Also works on 64-bit Unix boxes. - This is the default. -*/ -#define BZ_UNIX 1 - -/*-- - Win32, as seen by Jacob Navia's excellent - port of (Chris Fraser & David Hanson)'s excellent - lcc compiler. Or with MS Visual C. - This is selected automatically if compiled by a compiler which - defines _WIN32, not including the Cygwin GCC. ---*/ -#define BZ_LCCWIN32 0 - -#if defined(_WIN32) && !defined(__CYGWIN__) -#undef BZ_LCCWIN32 -#define BZ_LCCWIN32 1 -#undef BZ_UNIX -#define BZ_UNIX 0 -#endif - - -/*---------------------------------------------*/ -/*-- - Some stuff for all platforms. ---*/ - -#include -#include -#include -#include -#include -#include -#include -#include "bzlib.h" - -#define ERROR_IF_EOF(i) { if ((i) == EOF) ioError(); } -#define ERROR_IF_NOT_ZERO(i) { if ((i) != 0) ioError(); } -#define ERROR_IF_MINUS_ONE(i) { if ((i) == (-1)) ioError(); } - - -/*---------------------------------------------*/ -/*-- - Platform-specific stuff. ---*/ - -#if BZ_UNIX -# include -# include -# include -# include -# include -# include - -# define PATH_SEP '/' -# define MY_LSTAT lstat -# define MY_STAT stat -# define MY_S_ISREG S_ISREG -# define MY_S_ISDIR S_ISDIR - -# define APPEND_FILESPEC(root, name) \ - root=snocString((root), (name)) - -# define APPEND_FLAG(root, name) \ - root=snocString((root), (name)) - -# define SET_BINARY_MODE(fd) /**/ - -# ifdef __GNUC__ -# define NORETURN __attribute__ ((noreturn)) -# else -# define NORETURN /**/ -# endif - -# ifdef __DJGPP__ -# include -# include -# undef MY_LSTAT -# undef MY_STAT -# define MY_LSTAT stat -# define MY_STAT stat -# undef SET_BINARY_MODE -# define SET_BINARY_MODE(fd) \ - do { \ - int retVal = setmode ( fileno ( fd ), \ - O_BINARY ); \ - ERROR_IF_MINUS_ONE ( retVal ); \ - } while ( 0 ) -# endif - -# ifdef __CYGWIN__ -# include -# include -# undef SET_BINARY_MODE -# define SET_BINARY_MODE(fd) \ - do { \ - int retVal = setmode ( fileno ( fd ), \ - O_BINARY ); \ - ERROR_IF_MINUS_ONE ( retVal ); \ - } while ( 0 ) -# endif -#endif /* BZ_UNIX */ - - - -#if BZ_LCCWIN32 -# include -# include -# include - -# define NORETURN /**/ -# define PATH_SEP '\\' -# define MY_LSTAT _stat -# define MY_STAT _stat -# define MY_S_ISREG(x) ((x) & _S_IFREG) -# define MY_S_ISDIR(x) ((x) & _S_IFDIR) - -# define APPEND_FLAG(root, name) \ - root=snocString((root), (name)) - -# define APPEND_FILESPEC(root, name) \ - root = snocString ((root), (name)) - -# define SET_BINARY_MODE(fd) \ - do { \ - int retVal = setmode ( fileno ( fd ), \ - O_BINARY ); \ - ERROR_IF_MINUS_ONE ( retVal ); \ - } while ( 0 ) - -#endif /* BZ_LCCWIN32 */ - - -/*---------------------------------------------*/ -/*-- - Some more stuff for all platforms :-) ---*/ - -typedef char Char; -typedef unsigned char Bool; -typedef unsigned char UChar; -typedef int Int32; -typedef unsigned int UInt32; -typedef short Int16; -typedef unsigned short UInt16; - -#define True ((Bool)1) -#define False ((Bool)0) - -/*-- - IntNative is your platform's `native' int size. - Only here to avoid probs with 64-bit platforms. ---*/ -typedef int IntNative; - - -/*---------------------------------------------------*/ -/*--- Misc (file handling) data decls ---*/ -/*---------------------------------------------------*/ - -Int32 verbosity; -Bool keepInputFiles, smallMode, deleteOutputOnInterrupt; -Bool forceOverwrite, testFailsExist, unzFailsExist, noisy; -Int32 numFileNames, numFilesProcessed, blockSize100k; -Int32 exitValue; - -/*-- source modes; F==file, I==stdin, O==stdout --*/ -#define SM_I2O 1 -#define SM_F2O 2 -#define SM_F2F 3 - -/*-- operation modes --*/ -#define OM_Z 1 -#define OM_UNZ 2 -#define OM_TEST 3 - -Int32 opMode; -Int32 srcMode; - -#define FILE_NAME_LEN 1034 - -Int32 longestFileName; -Char inName [FILE_NAME_LEN]; -Char outName[FILE_NAME_LEN]; -Char tmpName[FILE_NAME_LEN]; -Char *progName; -Char progNameReally[FILE_NAME_LEN]; -FILE *outputHandleJustInCase; -Int32 workFactor; - -static void panic ( const Char* ) NORETURN; -static void ioError ( void ) NORETURN; -static void outOfMemory ( void ) NORETURN; -static void configError ( void ) NORETURN; -static void crcError ( void ) NORETURN; -static void cleanUpAndFail ( Int32 ) NORETURN; -static void compressedStreamEOF ( void ) NORETURN; - -static void copyFileName ( Char*, Char* ); -static void* myMalloc ( Int32 ); -static void applySavedFileAttrToOutputFile ( IntNative fd ); - - - -/*---------------------------------------------------*/ -/*--- An implementation of 64-bit ints. Sigh. ---*/ -/*--- Roll on widespread deployment of ANSI C9X ! ---*/ -/*---------------------------------------------------*/ - -typedef - struct { UChar b[8]; } - UInt64; - - -static -void uInt64_from_UInt32s ( UInt64* n, UInt32 lo32, UInt32 hi32 ) -{ - n->b[7] = (UChar)((hi32 >> 24) & 0xFF); - n->b[6] = (UChar)((hi32 >> 16) & 0xFF); - n->b[5] = (UChar)((hi32 >> 8) & 0xFF); - n->b[4] = (UChar) (hi32 & 0xFF); - n->b[3] = (UChar)((lo32 >> 24) & 0xFF); - n->b[2] = (UChar)((lo32 >> 16) & 0xFF); - n->b[1] = (UChar)((lo32 >> 8) & 0xFF); - n->b[0] = (UChar) (lo32 & 0xFF); -} - - -static -double uInt64_to_double ( UInt64* n ) -{ - Int32 i; - double base = 1.0; - double sum = 0.0; - for (i = 0; i < 8; i++) { - sum += base * (double)(n->b[i]); - base *= 256.0; - } - return sum; -} - - -static -Bool uInt64_isZero ( UInt64* n ) -{ - Int32 i; - for (i = 0; i < 8; i++) - if (n->b[i] != 0) return 0; - return 1; -} - - -/* Divide *n by 10, and return the remainder. */ -static -Int32 uInt64_qrm10 ( UInt64* n ) -{ - UInt32 rem, tmp; - Int32 i; - rem = 0; - for (i = 7; i >= 0; i--) { - tmp = rem * 256 + n->b[i]; - n->b[i] = tmp / 10; - rem = tmp % 10; - } - return rem; -} - - -/* ... and the Whole Entire Point of all this UInt64 stuff is - so that we can supply the following function. -*/ -static -void uInt64_toAscii ( char* outbuf, UInt64* n ) -{ - Int32 i, q; - UChar buf[32]; - Int32 nBuf = 0; - UInt64 n_copy = *n; - do { - q = uInt64_qrm10 ( &n_copy ); - buf[nBuf] = q + '0'; - nBuf++; - } while (!uInt64_isZero(&n_copy)); - outbuf[nBuf] = 0; - for (i = 0; i < nBuf; i++) - outbuf[i] = buf[nBuf-i-1]; -} - - -/*---------------------------------------------------*/ -/*--- Processing of complete files and streams ---*/ -/*---------------------------------------------------*/ - -/*---------------------------------------------*/ -static -Bool myfeof ( FILE* f ) -{ - Int32 c = fgetc ( f ); - if (c == EOF) return True; - ungetc ( c, f ); - return False; -} - - -/*---------------------------------------------*/ -static -void compressStream ( FILE *stream, FILE *zStream ) -{ - BZFILE* bzf = NULL; - UChar ibuf[5000]; - Int32 nIbuf; - UInt32 nbytes_in_lo32, nbytes_in_hi32; - UInt32 nbytes_out_lo32, nbytes_out_hi32; - Int32 bzerr, bzerr_dummy, ret; - - SET_BINARY_MODE(stream); - SET_BINARY_MODE(zStream); - - if (ferror(stream)) goto errhandler_io; - if (ferror(zStream)) goto errhandler_io; - - bzf = BZ2_bzWriteOpen ( &bzerr, zStream, - blockSize100k, verbosity, workFactor ); - if (bzerr != BZ_OK) goto errhandler; - - if (verbosity >= 2) fprintf ( stderr, "\n" ); - - while (True) { - - if (myfeof(stream)) break; - nIbuf = fread ( ibuf, sizeof(UChar), 5000, stream ); - if (ferror(stream)) goto errhandler_io; - if (nIbuf > 0) BZ2_bzWrite ( &bzerr, bzf, (void*)ibuf, nIbuf ); - if (bzerr != BZ_OK) goto errhandler; - - } - - BZ2_bzWriteClose64 ( &bzerr, bzf, 0, - &nbytes_in_lo32, &nbytes_in_hi32, - &nbytes_out_lo32, &nbytes_out_hi32 ); - if (bzerr != BZ_OK) goto errhandler; - - if (ferror(zStream)) goto errhandler_io; - ret = fflush ( zStream ); - if (ret == EOF) goto errhandler_io; - if (zStream != stdout) { - Int32 fd = fileno ( zStream ); - if (fd < 0) goto errhandler_io; - applySavedFileAttrToOutputFile ( fd ); - ret = fclose ( zStream ); - outputHandleJustInCase = NULL; - if (ret == EOF) goto errhandler_io; - } - outputHandleJustInCase = NULL; - if (ferror(stream)) goto errhandler_io; - ret = fclose ( stream ); - if (ret == EOF) goto errhandler_io; - - if (verbosity >= 1) { - if (nbytes_in_lo32 == 0 && nbytes_in_hi32 == 0) { - fprintf ( stderr, " no data compressed.\n"); - } else { - Char buf_nin[32], buf_nout[32]; - UInt64 nbytes_in, nbytes_out; - double nbytes_in_d, nbytes_out_d; - uInt64_from_UInt32s ( &nbytes_in, - nbytes_in_lo32, nbytes_in_hi32 ); - uInt64_from_UInt32s ( &nbytes_out, - nbytes_out_lo32, nbytes_out_hi32 ); - nbytes_in_d = uInt64_to_double ( &nbytes_in ); - nbytes_out_d = uInt64_to_double ( &nbytes_out ); - uInt64_toAscii ( buf_nin, &nbytes_in ); - uInt64_toAscii ( buf_nout, &nbytes_out ); - fprintf ( stderr, "%6.3f:1, %6.3f bits/byte, " - "%5.2f%% saved, %s in, %s out.\n", - nbytes_in_d / nbytes_out_d, - (8.0 * nbytes_out_d) / nbytes_in_d, - 100.0 * (1.0 - nbytes_out_d / nbytes_in_d), - buf_nin, - buf_nout - ); - } - } - - return; - - errhandler: - BZ2_bzWriteClose64 ( &bzerr_dummy, bzf, 1, - &nbytes_in_lo32, &nbytes_in_hi32, - &nbytes_out_lo32, &nbytes_out_hi32 ); - switch (bzerr) { - case BZ_CONFIG_ERROR: - configError(); break; - case BZ_MEM_ERROR: - outOfMemory (); break; - case BZ_IO_ERROR: - errhandler_io: - ioError(); break; - default: - panic ( "compress:unexpected error" ); - } - - panic ( "compress:end" ); - /*notreached*/ -} - - - -/*---------------------------------------------*/ -static -Bool uncompressStream ( FILE *zStream, FILE *stream ) -{ - BZFILE* bzf = NULL; - Int32 bzerr, bzerr_dummy, ret, nread, streamNo, i; - UChar obuf[5000]; - UChar unused[BZ_MAX_UNUSED]; - Int32 nUnused; - void* unusedTmpV; - UChar* unusedTmp; - - nUnused = 0; - streamNo = 0; - - SET_BINARY_MODE(stream); - SET_BINARY_MODE(zStream); - - if (ferror(stream)) goto errhandler_io; - if (ferror(zStream)) goto errhandler_io; - - while (True) { - - bzf = BZ2_bzReadOpen ( - &bzerr, zStream, verbosity, - (int)smallMode, unused, nUnused - ); - if (bzf == NULL || bzerr != BZ_OK) goto errhandler; - streamNo++; - - while (bzerr == BZ_OK) { - nread = BZ2_bzRead ( &bzerr, bzf, obuf, 5000 ); - if (bzerr == BZ_DATA_ERROR_MAGIC) goto trycat; - if ((bzerr == BZ_OK || bzerr == BZ_STREAM_END) && nread > 0) - fwrite ( obuf, sizeof(UChar), nread, stream ); - if (ferror(stream)) goto errhandler_io; - } - if (bzerr != BZ_STREAM_END) goto errhandler; - - BZ2_bzReadGetUnused ( &bzerr, bzf, &unusedTmpV, &nUnused ); - if (bzerr != BZ_OK) panic ( "decompress:bzReadGetUnused" ); - - unusedTmp = (UChar*)unusedTmpV; - for (i = 0; i < nUnused; i++) unused[i] = unusedTmp[i]; - - BZ2_bzReadClose ( &bzerr, bzf ); - if (bzerr != BZ_OK) panic ( "decompress:bzReadGetUnused" ); - - if (nUnused == 0 && myfeof(zStream)) break; - } - - closeok: - if (ferror(zStream)) goto errhandler_io; - if (stream != stdout) { - Int32 fd = fileno ( stream ); - if (fd < 0) goto errhandler_io; - applySavedFileAttrToOutputFile ( fd ); - } - ret = fclose ( zStream ); - if (ret == EOF) goto errhandler_io; - - if (ferror(stream)) goto errhandler_io; - ret = fflush ( stream ); - if (ret != 0) goto errhandler_io; - if (stream != stdout) { - ret = fclose ( stream ); - outputHandleJustInCase = NULL; - if (ret == EOF) goto errhandler_io; - } - outputHandleJustInCase = NULL; - if (verbosity >= 2) fprintf ( stderr, "\n " ); - return True; - - trycat: - if (forceOverwrite) { - rewind(zStream); - while (True) { - if (myfeof(zStream)) break; - nread = fread ( obuf, sizeof(UChar), 5000, zStream ); - if (ferror(zStream)) goto errhandler_io; - if (nread > 0) fwrite ( obuf, sizeof(UChar), nread, stream ); - if (ferror(stream)) goto errhandler_io; - } - goto closeok; - } - - errhandler: - BZ2_bzReadClose ( &bzerr_dummy, bzf ); - switch (bzerr) { - case BZ_CONFIG_ERROR: - configError(); break; - case BZ_IO_ERROR: - errhandler_io: - ioError(); break; - case BZ_DATA_ERROR: - crcError(); - case BZ_MEM_ERROR: - outOfMemory(); - case BZ_UNEXPECTED_EOF: - compressedStreamEOF(); - case BZ_DATA_ERROR_MAGIC: - if (zStream != stdin) fclose(zStream); - if (stream != stdout) fclose(stream); - if (streamNo == 1) { - return False; - } else { - if (noisy) - fprintf ( stderr, - "\n%s: %s: trailing garbage after EOF ignored\n", - progName, inName ); - return True; - } - default: - panic ( "decompress:unexpected error" ); - } - - panic ( "decompress:end" ); - return True; /*notreached*/ -} - - -/*---------------------------------------------*/ -static -Bool testStream ( FILE *zStream ) -{ - BZFILE* bzf = NULL; - Int32 bzerr, bzerr_dummy, ret, nread, streamNo, i; - UChar obuf[5000]; - UChar unused[BZ_MAX_UNUSED]; - Int32 nUnused; - void* unusedTmpV; - UChar* unusedTmp; - - nUnused = 0; - streamNo = 0; - - SET_BINARY_MODE(zStream); - if (ferror(zStream)) goto errhandler_io; - - while (True) { - - bzf = BZ2_bzReadOpen ( - &bzerr, zStream, verbosity, - (int)smallMode, unused, nUnused - ); - if (bzf == NULL || bzerr != BZ_OK) goto errhandler; - streamNo++; - - while (bzerr == BZ_OK) { - nread = BZ2_bzRead ( &bzerr, bzf, obuf, 5000 ); - if (bzerr == BZ_DATA_ERROR_MAGIC) goto errhandler; - } - if (bzerr != BZ_STREAM_END) goto errhandler; - - BZ2_bzReadGetUnused ( &bzerr, bzf, &unusedTmpV, &nUnused ); - if (bzerr != BZ_OK) panic ( "test:bzReadGetUnused" ); - - unusedTmp = (UChar*)unusedTmpV; - for (i = 0; i < nUnused; i++) unused[i] = unusedTmp[i]; - - BZ2_bzReadClose ( &bzerr, bzf ); - if (bzerr != BZ_OK) panic ( "test:bzReadGetUnused" ); - if (nUnused == 0 && myfeof(zStream)) break; - - } - - if (ferror(zStream)) goto errhandler_io; - ret = fclose ( zStream ); - if (ret == EOF) goto errhandler_io; - - if (verbosity >= 2) fprintf ( stderr, "\n " ); - return True; - - errhandler: - BZ2_bzReadClose ( &bzerr_dummy, bzf ); - if (verbosity == 0) - fprintf ( stderr, "%s: %s: ", progName, inName ); - switch (bzerr) { - case BZ_CONFIG_ERROR: - configError(); break; - case BZ_IO_ERROR: - errhandler_io: - ioError(); break; - case BZ_DATA_ERROR: - fprintf ( stderr, - "data integrity (CRC) error in data\n" ); - return False; - case BZ_MEM_ERROR: - outOfMemory(); - case BZ_UNEXPECTED_EOF: - fprintf ( stderr, - "file ends unexpectedly\n" ); - return False; - case BZ_DATA_ERROR_MAGIC: - if (zStream != stdin) fclose(zStream); - if (streamNo == 1) { - fprintf ( stderr, - "bad magic number (file not created by bzip2)\n" ); - return False; - } else { - if (noisy) - fprintf ( stderr, - "trailing garbage after EOF ignored\n" ); - return True; - } - default: - panic ( "test:unexpected error" ); - } - - panic ( "test:end" ); - return True; /*notreached*/ -} - - -/*---------------------------------------------------*/ -/*--- Error [non-] handling grunge ---*/ -/*---------------------------------------------------*/ - -/*---------------------------------------------*/ -static -void setExit ( Int32 v ) -{ - if (v > exitValue) exitValue = v; -} - - -/*---------------------------------------------*/ -static -void cadvise ( void ) -{ - if (noisy) - fprintf ( - stderr, - "\nIt is possible that the compressed file(s) have become corrupted.\n" - "You can use the -tvv option to test integrity of such files.\n\n" - "You can use the `bzip2recover' program to attempt to recover\n" - "data from undamaged sections of corrupted files.\n\n" - ); -} - - -/*---------------------------------------------*/ -static -void showFileNames ( void ) -{ - if (noisy) - fprintf ( - stderr, - "\tInput file = %s, output file = %s\n", - inName, outName - ); -} - - -/*---------------------------------------------*/ -static -void cleanUpAndFail ( Int32 ec ) -{ - IntNative retVal; - struct MY_STAT statBuf; - - if ( srcMode == SM_F2F - && opMode != OM_TEST - && deleteOutputOnInterrupt ) { - - /* Check whether input file still exists. Delete output file - only if input exists to avoid loss of data. Joerg Prante, 5 - January 2002. (JRS 06-Jan-2002: other changes in 1.0.2 mean - this is less likely to happen. But to be ultra-paranoid, we - do the check anyway.) */ - retVal = MY_STAT ( inName, &statBuf ); - if (retVal == 0) { - if (noisy) - fprintf ( stderr, - "%s: Deleting output file %s, if it exists.\n", - progName, outName ); - if (outputHandleJustInCase != NULL) - fclose ( outputHandleJustInCase ); - retVal = remove ( outName ); - if (retVal != 0) - fprintf ( stderr, - "%s: WARNING: deletion of output file " - "(apparently) failed.\n", - progName ); - } else { - fprintf ( stderr, - "%s: WARNING: deletion of output file suppressed\n", - progName ); - fprintf ( stderr, - "%s: since input file no longer exists. Output file\n", - progName ); - fprintf ( stderr, - "%s: `%s' may be incomplete.\n", - progName, outName ); - fprintf ( stderr, - "%s: I suggest doing an integrity test (bzip2 -tv)" - " of it.\n", - progName ); - } - } - - if (noisy && numFileNames > 0 && numFilesProcessed < numFileNames) { - fprintf ( stderr, - "%s: WARNING: some files have not been processed:\n" - "%s: %d specified on command line, %d not processed yet.\n\n", - progName, progName, - numFileNames, numFileNames - numFilesProcessed ); - } - setExit(ec); - exit(exitValue); -} - - -/*---------------------------------------------*/ -static -void panic ( const Char* s ) -{ - fprintf ( stderr, - "\n%s: PANIC -- internal consistency error:\n" - "\t%s\n" - "\tThis is a BUG. Please report it to me at:\n" - "\tjseward@bzip.org\n", - progName, s ); - showFileNames(); - cleanUpAndFail( 3 ); -} - - -/*---------------------------------------------*/ -static -void crcError ( void ) -{ - fprintf ( stderr, - "\n%s: Data integrity error when decompressing.\n", - progName ); - showFileNames(); - cadvise(); - cleanUpAndFail( 2 ); -} - - -/*---------------------------------------------*/ -static -void compressedStreamEOF ( void ) -{ - if (noisy) { - fprintf ( stderr, - "\n%s: Compressed file ends unexpectedly;\n\t" - "perhaps it is corrupted? *Possible* reason follows.\n", - progName ); - perror ( progName ); - showFileNames(); - cadvise(); - } - cleanUpAndFail( 2 ); -} - - -/*---------------------------------------------*/ -static -void ioError ( void ) -{ - fprintf ( stderr, - "\n%s: I/O or other error, bailing out. " - "Possible reason follows.\n", - progName ); - perror ( progName ); - showFileNames(); - cleanUpAndFail( 1 ); -} - - -/*---------------------------------------------*/ -static -void mySignalCatcher ( IntNative n ) -{ - fprintf ( stderr, - "\n%s: Control-C or similar caught, quitting.\n", - progName ); - cleanUpAndFail(1); -} - - -/*---------------------------------------------*/ -static -void mySIGSEGVorSIGBUScatcher ( IntNative n ) -{ - if (opMode == OM_Z) - fprintf ( - stderr, - "\n%s: Caught a SIGSEGV or SIGBUS whilst compressing.\n" - "\n" - " Possible causes are (most likely first):\n" - " (1) This computer has unreliable memory or cache hardware\n" - " (a surprisingly common problem; try a different machine.)\n" - " (2) A bug in the compiler used to create this executable\n" - " (unlikely, if you didn't compile bzip2 yourself.)\n" - " (3) A real bug in bzip2 -- I hope this should never be the case.\n" - " The user's manual, Section 4.3, has more info on (1) and (2).\n" - " \n" - " If you suspect this is a bug in bzip2, or are unsure about (1)\n" - " or (2), feel free to report it to me at: jseward@bzip.org.\n" - " Section 4.3 of the user's manual describes the info a useful\n" - " bug report should have. If the manual is available on your\n" - " system, please try and read it before mailing me. If you don't\n" - " have the manual or can't be bothered to read it, mail me anyway.\n" - "\n", - progName ); - else - fprintf ( - stderr, - "\n%s: Caught a SIGSEGV or SIGBUS whilst decompressing.\n" - "\n" - " Possible causes are (most likely first):\n" - " (1) The compressed data is corrupted, and bzip2's usual checks\n" - " failed to detect this. Try bzip2 -tvv my_file.bz2.\n" - " (2) This computer has unreliable memory or cache hardware\n" - " (a surprisingly common problem; try a different machine.)\n" - " (3) A bug in the compiler used to create this executable\n" - " (unlikely, if you didn't compile bzip2 yourself.)\n" - " (4) A real bug in bzip2 -- I hope this should never be the case.\n" - " The user's manual, Section 4.3, has more info on (2) and (3).\n" - " \n" - " If you suspect this is a bug in bzip2, or are unsure about (2)\n" - " or (3), feel free to report it to me at: jseward@bzip.org.\n" - " Section 4.3 of the user's manual describes the info a useful\n" - " bug report should have. If the manual is available on your\n" - " system, please try and read it before mailing me. If you don't\n" - " have the manual or can't be bothered to read it, mail me anyway.\n" - "\n", - progName ); - - showFileNames(); - if (opMode == OM_Z) - cleanUpAndFail( 3 ); else - { cadvise(); cleanUpAndFail( 2 ); } -} - - -/*---------------------------------------------*/ -static -void outOfMemory ( void ) -{ - fprintf ( stderr, - "\n%s: couldn't allocate enough memory\n", - progName ); - showFileNames(); - cleanUpAndFail(1); -} - - -/*---------------------------------------------*/ -static -void configError ( void ) -{ - fprintf ( stderr, - "bzip2: I'm not configured correctly for this platform!\n" - "\tI require Int32, Int16 and Char to have sizes\n" - "\tof 4, 2 and 1 bytes to run properly, and they don't.\n" - "\tProbably you can fix this by defining them correctly,\n" - "\tand recompiling. Bye!\n" ); - setExit(3); - exit(exitValue); -} - - -/*---------------------------------------------------*/ -/*--- The main driver machinery ---*/ -/*---------------------------------------------------*/ - -/* All rather crufty. The main problem is that input files - are stat()d multiple times before use. This should be - cleaned up. -*/ - -/*---------------------------------------------*/ -static -void pad ( Char *s ) -{ - Int32 i; - if ( (Int32)strlen(s) >= longestFileName ) return; - for (i = 1; i <= longestFileName - (Int32)strlen(s); i++) - fprintf ( stderr, " " ); -} - - -/*---------------------------------------------*/ -static -void copyFileName ( Char* to, Char* from ) -{ - if ( strlen(from) > FILE_NAME_LEN-10 ) { - fprintf ( - stderr, - "bzip2: file name\n`%s'\n" - "is suspiciously (more than %d chars) long.\n" - "Try using a reasonable file name instead. Sorry! :-)\n", - from, FILE_NAME_LEN-10 - ); - setExit(1); - exit(exitValue); - } - - strncpy(to,from,FILE_NAME_LEN-10); - to[FILE_NAME_LEN-10]='\0'; -} - - -/*---------------------------------------------*/ -static -Bool fileExists ( Char* name ) -{ - FILE *tmp = fopen ( name, "rb" ); - Bool exists = (tmp != NULL); - if (tmp != NULL) fclose ( tmp ); - return exists; -} - - -/*---------------------------------------------*/ -/* Open an output file safely with O_EXCL and good permissions. - This avoids a race condition in versions < 1.0.2, in which - the file was first opened and then had its interim permissions - set safely. We instead use open() to create the file with - the interim permissions required. (--- --- rw-). - - For non-Unix platforms, if we are not worrying about - security issues, simple this simply behaves like fopen. -*/ -static -FILE* fopen_output_safely ( Char* name, const char* mode ) -{ -# if BZ_UNIX - FILE* fp; - IntNative fh; - fh = open(name, O_WRONLY|O_CREAT|O_EXCL, S_IWUSR|S_IRUSR); - if (fh == -1) return NULL; - fp = fdopen(fh, mode); - if (fp == NULL) close(fh); - return fp; -# else - return fopen(name, mode); -# endif -} - - -/*---------------------------------------------*/ -/*-- - if in doubt, return True ---*/ -static -Bool notAStandardFile ( Char* name ) -{ - IntNative i; - struct MY_STAT statBuf; - - i = MY_LSTAT ( name, &statBuf ); - if (i != 0) return True; - if (MY_S_ISREG(statBuf.st_mode)) return False; - return True; -} - - -/*---------------------------------------------*/ -/*-- - rac 11/21/98 see if file has hard links to it ---*/ -static -Int32 countHardLinks ( Char* name ) -{ - IntNative i; - struct MY_STAT statBuf; - - i = MY_LSTAT ( name, &statBuf ); - if (i != 0) return 0; - return (statBuf.st_nlink - 1); -} - - -/*---------------------------------------------*/ -/* Copy modification date, access date, permissions and owner from the - source to destination file. We have to copy this meta-info off - into fileMetaInfo before starting to compress / decompress it, - because doing it afterwards means we get the wrong access time. - - To complicate matters, in compress() and decompress() below, the - sequence of tests preceding the call to saveInputFileMetaInfo() - involves calling fileExists(), which in turn establishes its result - by attempting to fopen() the file, and if successful, immediately - fclose()ing it again. So we have to assume that the fopen() call - does not cause the access time field to be updated. - - Reading of the man page for stat() (man 2 stat) on RedHat 7.2 seems - to imply that merely doing open() will not affect the access time. - Therefore we merely need to hope that the C library only does - open() as a result of fopen(), and not any kind of read()-ahead - cleverness. - - It sounds pretty fragile to me. Whether this carries across - robustly to arbitrary Unix-like platforms (or even works robustly - on this one, RedHat 7.2) is unknown to me. Nevertheless ... -*/ -#if BZ_UNIX -static -struct MY_STAT fileMetaInfo; -#endif - -static -void saveInputFileMetaInfo ( Char *srcName ) -{ -# if BZ_UNIX - IntNative retVal; - /* Note use of stat here, not lstat. */ - retVal = MY_STAT( srcName, &fileMetaInfo ); - ERROR_IF_NOT_ZERO ( retVal ); -# endif -} - - -static -void applySavedTimeInfoToOutputFile ( Char *dstName ) -{ -# if BZ_UNIX - IntNative retVal; - struct utimbuf uTimBuf; - - uTimBuf.actime = fileMetaInfo.st_atime; - uTimBuf.modtime = fileMetaInfo.st_mtime; - - retVal = utime ( dstName, &uTimBuf ); - ERROR_IF_NOT_ZERO ( retVal ); -# endif -} - -static -void applySavedFileAttrToOutputFile ( IntNative fd ) -{ -# if BZ_UNIX - IntNative retVal; - - retVal = fchmod ( fd, fileMetaInfo.st_mode ); - ERROR_IF_NOT_ZERO ( retVal ); - - (void) fchown ( fd, fileMetaInfo.st_uid, fileMetaInfo.st_gid ); - /* chown() will in many cases return with EPERM, which can - be safely ignored. - */ -# endif -} - - -/*---------------------------------------------*/ -static -Bool containsDubiousChars ( Char* name ) -{ -# if BZ_UNIX - /* On unix, files can contain any characters and the file expansion - * is performed by the shell. - */ - return False; -# else /* ! BZ_UNIX */ - /* On non-unix (Win* platforms), wildcard characters are not allowed in - * filenames. - */ - for (; *name != '\0'; name++) - if (*name == '?' || *name == '*') return True; - return False; -# endif /* BZ_UNIX */ -} - - -/*---------------------------------------------*/ -#define BZ_N_SUFFIX_PAIRS 4 - -const Char* zSuffix[BZ_N_SUFFIX_PAIRS] - = { ".bz2", ".bz", ".tbz2", ".tbz" }; -const Char* unzSuffix[BZ_N_SUFFIX_PAIRS] - = { "", "", ".tar", ".tar" }; - -static -Bool hasSuffix ( Char* s, const Char* suffix ) -{ - Int32 ns = strlen(s); - Int32 nx = strlen(suffix); - if (ns < nx) return False; - if (strcmp(s + ns - nx, suffix) == 0) return True; - return False; -} - -static -Bool mapSuffix ( Char* name, - const Char* oldSuffix, - const Char* newSuffix ) -{ - if (!hasSuffix(name,oldSuffix)) return False; - name[strlen(name)-strlen(oldSuffix)] = 0; - strcat ( name, newSuffix ); - return True; -} - - -/*---------------------------------------------*/ -static -void compress ( Char *name ) -{ - FILE *inStr; - FILE *outStr; - Int32 n, i; - struct MY_STAT statBuf; - - deleteOutputOnInterrupt = False; - - if (name == NULL && srcMode != SM_I2O) - panic ( "compress: bad modes\n" ); - - switch (srcMode) { - case SM_I2O: - copyFileName ( inName, (Char*)"(stdin)" ); - copyFileName ( outName, (Char*)"(stdout)" ); - break; - case SM_F2F: - copyFileName ( inName, name ); - copyFileName ( outName, name ); - strcat ( outName, ".bz2" ); - break; - case SM_F2O: - copyFileName ( inName, name ); - copyFileName ( outName, (Char*)"(stdout)" ); - break; - } - - if ( srcMode != SM_I2O && containsDubiousChars ( inName ) ) { - if (noisy) - fprintf ( stderr, "%s: There are no files matching `%s'.\n", - progName, inName ); - setExit(1); - return; - } - if ( srcMode != SM_I2O && !fileExists ( inName ) ) { - fprintf ( stderr, "%s: Can't open input file %s: %s.\n", - progName, inName, strerror(errno) ); - setExit(1); - return; - } - for (i = 0; i < BZ_N_SUFFIX_PAIRS; i++) { - if (hasSuffix(inName, zSuffix[i])) { - if (noisy) - fprintf ( stderr, - "%s: Input file %s already has %s suffix.\n", - progName, inName, zSuffix[i] ); - setExit(1); - return; - } - } - if ( srcMode == SM_F2F || srcMode == SM_F2O ) { - MY_STAT(inName, &statBuf); - if ( MY_S_ISDIR(statBuf.st_mode) ) { - fprintf( stderr, - "%s: Input file %s is a directory.\n", - progName,inName); - setExit(1); - return; - } - } - if ( srcMode == SM_F2F && !forceOverwrite && notAStandardFile ( inName )) { - if (noisy) - fprintf ( stderr, "%s: Input file %s is not a normal file.\n", - progName, inName ); - setExit(1); - return; - } - if ( srcMode == SM_F2F && fileExists ( outName ) ) { - if (forceOverwrite) { - remove(outName); - } else { - fprintf ( stderr, "%s: Output file %s already exists.\n", - progName, outName ); - setExit(1); - return; - } - } - if ( srcMode == SM_F2F && !forceOverwrite && - (n=countHardLinks ( inName )) > 0) { - fprintf ( stderr, "%s: Input file %s has %d other link%s.\n", - progName, inName, n, n > 1 ? "s" : "" ); - setExit(1); - return; - } - - if ( srcMode == SM_F2F ) { - /* Save the file's meta-info before we open it. Doing it later - means we mess up the access times. */ - saveInputFileMetaInfo ( inName ); - } - - switch ( srcMode ) { - - case SM_I2O: - inStr = stdin; - outStr = stdout; - if ( isatty ( fileno ( stdout ) ) ) { - fprintf ( stderr, - "%s: I won't write compressed data to a terminal.\n", - progName ); - fprintf ( stderr, "%s: For help, type: `%s --help'.\n", - progName, progName ); - setExit(1); - return; - }; - break; - - case SM_F2O: - inStr = fopen ( inName, "rb" ); - outStr = stdout; - if ( isatty ( fileno ( stdout ) ) ) { - fprintf ( stderr, - "%s: I won't write compressed data to a terminal.\n", - progName ); - fprintf ( stderr, "%s: For help, type: `%s --help'.\n", - progName, progName ); - if ( inStr != NULL ) fclose ( inStr ); - setExit(1); - return; - }; - if ( inStr == NULL ) { - fprintf ( stderr, "%s: Can't open input file %s: %s.\n", - progName, inName, strerror(errno) ); - setExit(1); - return; - }; - break; - - case SM_F2F: - inStr = fopen ( inName, "rb" ); - outStr = fopen_output_safely ( outName, "wb" ); - if ( outStr == NULL) { - fprintf ( stderr, "%s: Can't create output file %s: %s.\n", - progName, outName, strerror(errno) ); - if ( inStr != NULL ) fclose ( inStr ); - setExit(1); - return; - } - if ( inStr == NULL ) { - fprintf ( stderr, "%s: Can't open input file %s: %s.\n", - progName, inName, strerror(errno) ); - if ( outStr != NULL ) fclose ( outStr ); - setExit(1); - return; - }; - break; - - default: - panic ( "compress: bad srcMode" ); - break; - } - - if (verbosity >= 1) { - fprintf ( stderr, " %s: ", inName ); - pad ( inName ); - fflush ( stderr ); - } - - /*--- Now the input and output handles are sane. Do the Biz. ---*/ - outputHandleJustInCase = outStr; - deleteOutputOnInterrupt = True; - compressStream ( inStr, outStr ); - outputHandleJustInCase = NULL; - - /*--- If there was an I/O error, we won't get here. ---*/ - if ( srcMode == SM_F2F ) { - applySavedTimeInfoToOutputFile ( outName ); - deleteOutputOnInterrupt = False; - if ( !keepInputFiles ) { - IntNative retVal = remove ( inName ); - ERROR_IF_NOT_ZERO ( retVal ); - } - } - - deleteOutputOnInterrupt = False; -} - - -/*---------------------------------------------*/ -static -void uncompress ( Char *name ) -{ - FILE *inStr; - FILE *outStr; - Int32 n, i; - Bool magicNumberOK; - Bool cantGuess; - struct MY_STAT statBuf; - - deleteOutputOnInterrupt = False; - - if (name == NULL && srcMode != SM_I2O) - panic ( "uncompress: bad modes\n" ); - - cantGuess = False; - switch (srcMode) { - case SM_I2O: - copyFileName ( inName, (Char*)"(stdin)" ); - copyFileName ( outName, (Char*)"(stdout)" ); - break; - case SM_F2F: - copyFileName ( inName, name ); - copyFileName ( outName, name ); - for (i = 0; i < BZ_N_SUFFIX_PAIRS; i++) - if (mapSuffix(outName,zSuffix[i],unzSuffix[i])) - goto zzz; - cantGuess = True; - strcat ( outName, ".out" ); - break; - case SM_F2O: - copyFileName ( inName, name ); - copyFileName ( outName, (Char*)"(stdout)" ); - break; - } - - zzz: - if ( srcMode != SM_I2O && containsDubiousChars ( inName ) ) { - if (noisy) - fprintf ( stderr, "%s: There are no files matching `%s'.\n", - progName, inName ); - setExit(1); - return; - } - if ( srcMode != SM_I2O && !fileExists ( inName ) ) { - fprintf ( stderr, "%s: Can't open input file %s: %s.\n", - progName, inName, strerror(errno) ); - setExit(1); - return; - } - if ( srcMode == SM_F2F || srcMode == SM_F2O ) { - MY_STAT(inName, &statBuf); - if ( MY_S_ISDIR(statBuf.st_mode) ) { - fprintf( stderr, - "%s: Input file %s is a directory.\n", - progName,inName); - setExit(1); - return; - } - } - if ( srcMode == SM_F2F && !forceOverwrite && notAStandardFile ( inName )) { - if (noisy) - fprintf ( stderr, "%s: Input file %s is not a normal file.\n", - progName, inName ); - setExit(1); - return; - } - if ( /* srcMode == SM_F2F implied && */ cantGuess ) { - if (noisy) - fprintf ( stderr, - "%s: Can't guess original name for %s -- using %s\n", - progName, inName, outName ); - /* just a warning, no return */ - } - if ( srcMode == SM_F2F && fileExists ( outName ) ) { - if (forceOverwrite) { - remove(outName); - } else { - fprintf ( stderr, "%s: Output file %s already exists.\n", - progName, outName ); - setExit(1); - return; - } - } - if ( srcMode == SM_F2F && !forceOverwrite && - (n=countHardLinks ( inName ) ) > 0) { - fprintf ( stderr, "%s: Input file %s has %d other link%s.\n", - progName, inName, n, n > 1 ? "s" : "" ); - setExit(1); - return; - } - - if ( srcMode == SM_F2F ) { - /* Save the file's meta-info before we open it. Doing it later - means we mess up the access times. */ - saveInputFileMetaInfo ( inName ); - } - - switch ( srcMode ) { - - case SM_I2O: - inStr = stdin; - outStr = stdout; - if ( isatty ( fileno ( stdin ) ) ) { - fprintf ( stderr, - "%s: I won't read compressed data from a terminal.\n", - progName ); - fprintf ( stderr, "%s: For help, type: `%s --help'.\n", - progName, progName ); - setExit(1); - return; - }; - break; - - case SM_F2O: - inStr = fopen ( inName, "rb" ); - outStr = stdout; - if ( inStr == NULL ) { - fprintf ( stderr, "%s: Can't open input file %s:%s.\n", - progName, inName, strerror(errno) ); - if ( inStr != NULL ) fclose ( inStr ); - setExit(1); - return; - }; - break; - - case SM_F2F: - inStr = fopen ( inName, "rb" ); - outStr = fopen_output_safely ( outName, "wb" ); - if ( outStr == NULL) { - fprintf ( stderr, "%s: Can't create output file %s: %s.\n", - progName, outName, strerror(errno) ); - if ( inStr != NULL ) fclose ( inStr ); - setExit(1); - return; - } - if ( inStr == NULL ) { - fprintf ( stderr, "%s: Can't open input file %s: %s.\n", - progName, inName, strerror(errno) ); - if ( outStr != NULL ) fclose ( outStr ); - setExit(1); - return; - }; - break; - - default: - panic ( "uncompress: bad srcMode" ); - break; - } - - if (verbosity >= 1) { - fprintf ( stderr, " %s: ", inName ); - pad ( inName ); - fflush ( stderr ); - } - - /*--- Now the input and output handles are sane. Do the Biz. ---*/ - outputHandleJustInCase = outStr; - deleteOutputOnInterrupt = True; - magicNumberOK = uncompressStream ( inStr, outStr ); - outputHandleJustInCase = NULL; - - /*--- If there was an I/O error, we won't get here. ---*/ - if ( magicNumberOK ) { - if ( srcMode == SM_F2F ) { - applySavedTimeInfoToOutputFile ( outName ); - deleteOutputOnInterrupt = False; - if ( !keepInputFiles ) { - IntNative retVal = remove ( inName ); - ERROR_IF_NOT_ZERO ( retVal ); - } - } - } else { - unzFailsExist = True; - deleteOutputOnInterrupt = False; - if ( srcMode == SM_F2F ) { - IntNative retVal = remove ( outName ); - ERROR_IF_NOT_ZERO ( retVal ); - } - } - deleteOutputOnInterrupt = False; - - if ( magicNumberOK ) { - if (verbosity >= 1) - fprintf ( stderr, "done\n" ); - } else { - setExit(2); - if (verbosity >= 1) - fprintf ( stderr, "not a bzip2 file.\n" ); else - fprintf ( stderr, - "%s: %s is not a bzip2 file.\n", - progName, inName ); - } - -} - - -/*---------------------------------------------*/ -static -void testf ( Char *name ) -{ - FILE *inStr; - Bool allOK; - struct MY_STAT statBuf; - - deleteOutputOnInterrupt = False; - - if (name == NULL && srcMode != SM_I2O) - panic ( "testf: bad modes\n" ); - - copyFileName ( outName, (Char*)"(none)" ); - switch (srcMode) { - case SM_I2O: copyFileName ( inName, (Char*)"(stdin)" ); break; - case SM_F2F: copyFileName ( inName, name ); break; - case SM_F2O: copyFileName ( inName, name ); break; - } - - if ( srcMode != SM_I2O && containsDubiousChars ( inName ) ) { - if (noisy) - fprintf ( stderr, "%s: There are no files matching `%s'.\n", - progName, inName ); - setExit(1); - return; - } - if ( srcMode != SM_I2O && !fileExists ( inName ) ) { - fprintf ( stderr, "%s: Can't open input %s: %s.\n", - progName, inName, strerror(errno) ); - setExit(1); - return; - } - if ( srcMode != SM_I2O ) { - MY_STAT(inName, &statBuf); - if ( MY_S_ISDIR(statBuf.st_mode) ) { - fprintf( stderr, - "%s: Input file %s is a directory.\n", - progName,inName); - setExit(1); - return; - } - } - - switch ( srcMode ) { - - case SM_I2O: - if ( isatty ( fileno ( stdin ) ) ) { - fprintf ( stderr, - "%s: I won't read compressed data from a terminal.\n", - progName ); - fprintf ( stderr, "%s: For help, type: `%s --help'.\n", - progName, progName ); - setExit(1); - return; - }; - inStr = stdin; - break; - - case SM_F2O: case SM_F2F: - inStr = fopen ( inName, "rb" ); - if ( inStr == NULL ) { - fprintf ( stderr, "%s: Can't open input file %s:%s.\n", - progName, inName, strerror(errno) ); - setExit(1); - return; - }; - break; - - default: - panic ( "testf: bad srcMode" ); - break; - } - - if (verbosity >= 1) { - fprintf ( stderr, " %s: ", inName ); - pad ( inName ); - fflush ( stderr ); - } - - /*--- Now the input handle is sane. Do the Biz. ---*/ - outputHandleJustInCase = NULL; - allOK = testStream ( inStr ); - - if (allOK && verbosity >= 1) fprintf ( stderr, "ok\n" ); - if (!allOK) testFailsExist = True; -} - - -/*---------------------------------------------*/ -static -void license ( void ) -{ - fprintf ( stderr, - - "bzip2, a block-sorting file compressor. " - "Version %s.\n" - " \n" - " Copyright (C) 1996-2010 by Julian Seward.\n" - " \n" - " This program is free software; you can redistribute it and/or modify\n" - " it under the terms set out in the LICENSE file, which is included\n" - " in the bzip2-1.0.6 source distribution.\n" - " \n" - " This program is distributed in the hope that it will be useful,\n" - " but WITHOUT ANY WARRANTY; without even the implied warranty of\n" - " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" - " LICENSE file for more details.\n" - " \n", - BZ2_bzlibVersion() - ); -} - - -/*---------------------------------------------*/ -static -void usage ( Char *fullProgName ) -{ - fprintf ( - stderr, - "bzip2, a block-sorting file compressor. " - "Version %s.\n" - "\n usage: %s [flags and input files in any order]\n" - "\n" - " -h --help print this message\n" - " -d --decompress force decompression\n" - " -z --compress force compression\n" - " -k --keep keep (don't delete) input files\n" - " -f --force overwrite existing output files\n" - " -t --test test compressed file integrity\n" - " -c --stdout output to standard out\n" - " -q --quiet suppress noncritical error messages\n" - " -v --verbose be verbose (a 2nd -v gives more)\n" - " -L --license display software version & license\n" - " -V --version display software version & license\n" - " -s --small use less memory (at most 2500k)\n" - " -1 .. -9 set block size to 100k .. 900k\n" - " --fast alias for -1\n" - " --best alias for -9\n" - "\n" - " If invoked as `bzip2', default action is to compress.\n" - " as `bunzip2', default action is to decompress.\n" - " as `bzcat', default action is to decompress to stdout.\n" - "\n" - " If no file names are given, bzip2 compresses or decompresses\n" - " from standard input to standard output. You can combine\n" - " short flags, so `-v -4' means the same as -v4 or -4v, &c.\n" -# if BZ_UNIX - "\n" -# endif - , - - BZ2_bzlibVersion(), - fullProgName - ); -} - - -/*---------------------------------------------*/ -static -void redundant ( Char* flag ) -{ - fprintf ( - stderr, - "%s: %s is redundant in versions 0.9.5 and above\n", - progName, flag ); -} - - -/*---------------------------------------------*/ -/*-- - All the garbage from here to main() is purely to - implement a linked list of command-line arguments, - into which main() copies argv[1 .. argc-1]. - - The purpose of this exercise is to facilitate - the expansion of wildcard characters * and ? in - filenames for OSs which don't know how to do it - themselves, like MSDOS, Windows 95 and NT. - - The actual Dirty Work is done by the platform- - specific macro APPEND_FILESPEC. ---*/ - -typedef - struct zzzz { - Char *name; - struct zzzz *link; - } - Cell; - - -/*---------------------------------------------*/ -static -void *myMalloc ( Int32 n ) -{ - void* p; - - p = malloc ( (size_t)n ); - if (p == NULL) outOfMemory (); - return p; -} - - -/*---------------------------------------------*/ -static -Cell *mkCell ( void ) -{ - Cell *c; - - c = (Cell*) myMalloc ( sizeof ( Cell ) ); - c->name = NULL; - c->link = NULL; - return c; -} - - -/*---------------------------------------------*/ -static -Cell *snocString ( Cell *root, Char *name ) -{ - if (root == NULL) { - Cell *tmp = mkCell(); - tmp->name = (Char*) myMalloc ( 5 + strlen(name) ); - strcpy ( tmp->name, name ); - return tmp; - } else { - Cell *tmp = root; - while (tmp->link != NULL) tmp = tmp->link; - tmp->link = snocString ( tmp->link, name ); - return root; - } -} - - -/*---------------------------------------------*/ -static -void addFlagsFromEnvVar ( Cell** argList, Char* varName ) -{ - Int32 i, j, k; - Char *envbase, *p; - - envbase = getenv(varName); - if (envbase != NULL) { - p = envbase; - i = 0; - while (True) { - if (p[i] == 0) break; - p += i; - i = 0; - while (isspace((Int32)(p[0]))) p++; - while (p[i] != 0 && !isspace((Int32)(p[i]))) i++; - if (i > 0) { - k = i; if (k > FILE_NAME_LEN-10) k = FILE_NAME_LEN-10; - for (j = 0; j < k; j++) tmpName[j] = p[j]; - tmpName[k] = 0; - APPEND_FLAG(*argList, tmpName); - } - } - } -} - - -/*---------------------------------------------*/ -#define ISFLAG(s) (strcmp(aa->name, (s))==0) - -IntNative main ( IntNative argc, Char *argv[] ) -{ - Int32 i, j; - Char *tmp; - Cell *argList; - Cell *aa; - Bool decode; - - /*-- Be really really really paranoid :-) --*/ - if (sizeof(Int32) != 4 || sizeof(UInt32) != 4 || - sizeof(Int16) != 2 || sizeof(UInt16) != 2 || - sizeof(Char) != 1 || sizeof(UChar) != 1) - configError(); - - /*-- Initialise --*/ - outputHandleJustInCase = NULL; - smallMode = False; - keepInputFiles = False; - forceOverwrite = False; - noisy = True; - verbosity = 0; - blockSize100k = 9; - testFailsExist = False; - unzFailsExist = False; - numFileNames = 0; - numFilesProcessed = 0; - workFactor = 30; - deleteOutputOnInterrupt = False; - exitValue = 0; - i = j = 0; /* avoid bogus warning from egcs-1.1.X */ - - /*-- Set up signal handlers for mem access errors --*/ - signal (SIGSEGV, mySIGSEGVorSIGBUScatcher); -# if BZ_UNIX -# ifndef __DJGPP__ - signal (SIGBUS, mySIGSEGVorSIGBUScatcher); -# endif -# endif - - copyFileName ( inName, (Char*)"(none)" ); - copyFileName ( outName, (Char*)"(none)" ); - - copyFileName ( progNameReally, argv[0] ); - progName = &progNameReally[0]; - for (tmp = &progNameReally[0]; *tmp != '\0'; tmp++) - if (*tmp == PATH_SEP) progName = tmp + 1; - - - /*-- Copy flags from env var BZIP2, and - expand filename wildcards in arg list. - --*/ - argList = NULL; - addFlagsFromEnvVar ( &argList, (Char*)"BZIP2" ); - addFlagsFromEnvVar ( &argList, (Char*)"BZIP" ); - for (i = 1; i <= argc-1; i++) - APPEND_FILESPEC(argList, argv[i]); - - - /*-- Find the length of the longest filename --*/ - longestFileName = 7; - numFileNames = 0; - decode = True; - for (aa = argList; aa != NULL; aa = aa->link) { - if (ISFLAG("--")) { decode = False; continue; } - if (aa->name[0] == '-' && decode) continue; - numFileNames++; - if (longestFileName < (Int32)strlen(aa->name) ) - longestFileName = (Int32)strlen(aa->name); - } - - - /*-- Determine source modes; flag handling may change this too. --*/ - if (numFileNames == 0) - srcMode = SM_I2O; else srcMode = SM_F2F; - - - /*-- Determine what to do (compress/uncompress/test/cat). --*/ - /*-- Note that subsequent flag handling may change this. --*/ - opMode = OM_Z; - - if ( (strstr ( progName, "unzip" ) != 0) || - (strstr ( progName, "UNZIP" ) != 0) ) - opMode = OM_UNZ; - - if ( (strstr ( progName, "z2cat" ) != 0) || - (strstr ( progName, "Z2CAT" ) != 0) || - (strstr ( progName, "zcat" ) != 0) || - (strstr ( progName, "ZCAT" ) != 0) ) { - opMode = OM_UNZ; - srcMode = (numFileNames == 0) ? SM_I2O : SM_F2O; - } - - - /*-- Look at the flags. --*/ - for (aa = argList; aa != NULL; aa = aa->link) { - if (ISFLAG("--")) break; - if (aa->name[0] == '-' && aa->name[1] != '-') { - for (j = 1; aa->name[j] != '\0'; j++) { - switch (aa->name[j]) { - case 'c': srcMode = SM_F2O; break; - case 'd': opMode = OM_UNZ; break; - case 'z': opMode = OM_Z; break; - case 'f': forceOverwrite = True; break; - case 't': opMode = OM_TEST; break; - case 'k': keepInputFiles = True; break; - case 's': smallMode = True; break; - case 'q': noisy = False; break; - case '1': blockSize100k = 1; break; - case '2': blockSize100k = 2; break; - case '3': blockSize100k = 3; break; - case '4': blockSize100k = 4; break; - case '5': blockSize100k = 5; break; - case '6': blockSize100k = 6; break; - case '7': blockSize100k = 7; break; - case '8': blockSize100k = 8; break; - case '9': blockSize100k = 9; break; - case 'V': - case 'L': license(); break; - case 'v': verbosity++; break; - case 'h': usage ( progName ); - exit ( 0 ); - break; - default: fprintf ( stderr, "%s: Bad flag `%s'\n", - progName, aa->name ); - usage ( progName ); - exit ( 1 ); - break; - } - } - } - } - - /*-- And again ... --*/ - for (aa = argList; aa != NULL; aa = aa->link) { - if (ISFLAG("--")) break; - if (ISFLAG("--stdout")) srcMode = SM_F2O; else - if (ISFLAG("--decompress")) opMode = OM_UNZ; else - if (ISFLAG("--compress")) opMode = OM_Z; else - if (ISFLAG("--force")) forceOverwrite = True; else - if (ISFLAG("--test")) opMode = OM_TEST; else - if (ISFLAG("--keep")) keepInputFiles = True; else - if (ISFLAG("--small")) smallMode = True; else - if (ISFLAG("--quiet")) noisy = False; else - if (ISFLAG("--version")) license(); else - if (ISFLAG("--license")) license(); else - if (ISFLAG("--exponential")) workFactor = 1; else - if (ISFLAG("--repetitive-best")) redundant(aa->name); else - if (ISFLAG("--repetitive-fast")) redundant(aa->name); else - if (ISFLAG("--fast")) blockSize100k = 1; else - if (ISFLAG("--best")) blockSize100k = 9; else - if (ISFLAG("--verbose")) verbosity++; else - if (ISFLAG("--help")) { usage ( progName ); exit ( 0 ); } - else - if (strncmp ( aa->name, "--", 2) == 0) { - fprintf ( stderr, "%s: Bad flag `%s'\n", progName, aa->name ); - usage ( progName ); - exit ( 1 ); - } - } - - if (verbosity > 4) verbosity = 4; - if (opMode == OM_Z && smallMode && blockSize100k > 2) - blockSize100k = 2; - - if (opMode == OM_TEST && srcMode == SM_F2O) { - fprintf ( stderr, "%s: -c and -t cannot be used together.\n", - progName ); - exit ( 1 ); - } - - if (srcMode == SM_F2O && numFileNames == 0) - srcMode = SM_I2O; - - if (opMode != OM_Z) blockSize100k = 0; - - if (srcMode == SM_F2F) { - signal (SIGINT, mySignalCatcher); - signal (SIGTERM, mySignalCatcher); -# if BZ_UNIX - signal (SIGHUP, mySignalCatcher); -# endif - } - - if (opMode == OM_Z) { - if (srcMode == SM_I2O) { - compress ( NULL ); - } else { - decode = True; - for (aa = argList; aa != NULL; aa = aa->link) { - if (ISFLAG("--")) { decode = False; continue; } - if (aa->name[0] == '-' && decode) continue; - numFilesProcessed++; - compress ( aa->name ); - } - } - } - else - - if (opMode == OM_UNZ) { - unzFailsExist = False; - if (srcMode == SM_I2O) { - uncompress ( NULL ); - } else { - decode = True; - for (aa = argList; aa != NULL; aa = aa->link) { - if (ISFLAG("--")) { decode = False; continue; } - if (aa->name[0] == '-' && decode) continue; - numFilesProcessed++; - uncompress ( aa->name ); - } - } - if (unzFailsExist) { - setExit(2); - exit(exitValue); - } - } - - else { - testFailsExist = False; - if (srcMode == SM_I2O) { - testf ( NULL ); - } else { - decode = True; - for (aa = argList; aa != NULL; aa = aa->link) { - if (ISFLAG("--")) { decode = False; continue; } - if (aa->name[0] == '-' && decode) continue; - numFilesProcessed++; - testf ( aa->name ); - } - } - if (testFailsExist && noisy) { - fprintf ( stderr, - "\n" - "You can use the `bzip2recover' program to attempt to recover\n" - "data from undamaged sections of corrupted files.\n\n" - ); - setExit(2); - exit(exitValue); - } - } - - /* Free the argument list memory to mollify leak detectors - (eg) Purify, Checker. Serves no other useful purpose. - */ - aa = argList; - while (aa != NULL) { - Cell* aa2 = aa->link; - if (aa->name != NULL) free(aa->name); - free(aa); - aa = aa2; - } - - return exitValue; -} - - -/*-----------------------------------------------------------*/ -/*--- end bzip2.c ---*/ -/*-----------------------------------------------------------*/ diff --git a/plugins/updater/bzip2-1.0.3/bzip2.txt b/plugins/updater/bzip2-1.0.3/bzip2.txt deleted file mode 100644 index d2deb39491..0000000000 --- a/plugins/updater/bzip2-1.0.3/bzip2.txt +++ /dev/null @@ -1,391 +0,0 @@ - -NAME - bzip2, bunzip2 - a block-sorting file compressor, v1.0.6 - bzcat - decompresses files to stdout - bzip2recover - recovers data from damaged bzip2 files - - -SYNOPSIS - bzip2 [ -cdfkqstvzVL123456789 ] [ filenames ... ] - bunzip2 [ -fkvsVL ] [ filenames ... ] - bzcat [ -s ] [ filenames ... ] - bzip2recover filename - - -DESCRIPTION - bzip2 compresses files using the Burrows-Wheeler block - sorting text compression algorithm, and Huffman coding. - Compression is generally considerably better than that - achieved by more conventional LZ77/LZ78-based compressors, - and approaches the performance of the PPM family of sta- - tistical compressors. - - The command-line options are deliberately very similar to - those of GNU gzip, but they are not identical. - - bzip2 expects a list of file names to accompany the com- - mand-line flags. Each file is replaced by a compressed - version of itself, with the name "original_name.bz2". - Each compressed file has the same modification date, per- - missions, and, when possible, ownership as the correspond- - ing original, so that these properties can be correctly - restored at decompression time. File name handling is - naive in the sense that there is no mechanism for preserv- - ing original file names, permissions, ownerships or dates - in filesystems which lack these concepts, or have serious - file name length restrictions, such as MS-DOS. - - bzip2 and bunzip2 will by default not overwrite existing - files. If you want this to happen, specify the -f flag. - - If no file names are specified, bzip2 compresses from - standard input to standard output. In this case, bzip2 - will decline to write compressed output to a terminal, as - this would be entirely incomprehensible and therefore - pointless. - - bunzip2 (or bzip2 -d) decompresses all specified files. - Files which were not created by bzip2 will be detected and - ignored, and a warning issued. bzip2 attempts to guess - the filename for the decompressed file from that of the - compressed file as follows: - - filename.bz2 becomes filename - filename.bz becomes filename - filename.tbz2 becomes filename.tar - filename.tbz becomes filename.tar - anyothername becomes anyothername.out - - If the file does not end in one of the recognised endings, - .bz2, .bz, .tbz2 or .tbz, bzip2 complains that it cannot - guess the name of the original file, and uses the original - name with .out appended. - - As with compression, supplying no filenames causes decom- - pression from standard input to standard output. - - bunzip2 will correctly decompress a file which is the con- - catenation of two or more compressed files. The result is - the concatenation of the corresponding uncompressed files. - Integrity testing (-t) of concatenated compressed files is - also supported. - - You can also compress or decompress files to the standard - output by giving the -c flag. Multiple files may be com- - pressed and decompressed like this. The resulting outputs - are fed sequentially to stdout. Compression of multiple - files in this manner generates a stream containing multi- - ple compressed file representations. Such a stream can be - decompressed correctly only by bzip2 version 0.9.0 or - later. Earlier versions of bzip2 will stop after decom- - pressing the first file in the stream. - - bzcat (or bzip2 -dc) decompresses all specified files to - the standard output. - - bzip2 will read arguments from the environment variables - BZIP2 and BZIP, in that order, and will process them - before any arguments read from the command line. This - gives a convenient way to supply default arguments. - - Compression is always performed, even if the compressed - file is slightly larger than the original. Files of less - than about one hundred bytes tend to get larger, since the - compression mechanism has a constant overhead in the - region of 50 bytes. Random data (including the output of - most file compressors) is coded at about 8.05 bits per - byte, giving an expansion of around 0.5%. - - As a self-check for your protection, bzip2 uses 32-bit - CRCs to make sure that the decompressed version of a file - is identical to the original. This guards against corrup- - tion of the compressed data, and against undetected bugs - in bzip2 (hopefully very unlikely). The chances of data - corruption going undetected is microscopic, about one - chance in four billion for each file processed. Be aware, - though, that the check occurs upon decompression, so it - can only tell you that something is wrong. It can't help - you recover the original uncompressed data. You can use - bzip2recover to try to recover data from damaged files. - - Return values: 0 for a normal exit, 1 for environmental - problems (file not found, invalid flags, I/O errors, &c), - 2 to indicate a corrupt compressed file, 3 for an internal - consistency error (eg, bug) which caused bzip2 to panic. - - -OPTIONS - -c --stdout - Compress or decompress to standard output. - - -d --decompress - Force decompression. bzip2, bunzip2 and bzcat are - really the same program, and the decision about - what actions to take is done on the basis of which - name is used. This flag overrides that mechanism, - and forces bzip2 to decompress. - - -z --compress - The complement to -d: forces compression, - regardless of the invocation name. - - -t --test - Check integrity of the specified file(s), but don't - decompress them. This really performs a trial - decompression and throws away the result. - - -f --force - Force overwrite of output files. Normally, bzip2 - will not overwrite existing output files. Also - forces bzip2 to break hard links to files, which it - otherwise wouldn't do. - - bzip2 normally declines to decompress files which - don't have the correct magic header bytes. If - forced (-f), however, it will pass such files - through unmodified. This is how GNU gzip behaves. - - -k --keep - Keep (don't delete) input files during compression - or decompression. - - -s --small - Reduce memory usage, for compression, decompression - and testing. Files are decompressed and tested - using a modified algorithm which only requires 2.5 - bytes per block byte. This means any file can be - decompressed in 2300k of memory, albeit at about - half the normal speed. - - During compression, -s selects a block size of - 200k, which limits memory use to around the same - figure, at the expense of your compression ratio. - In short, if your machine is low on memory (8 - megabytes or less), use -s for everything. See - MEMORY MANAGEMENT below. - - -q --quiet - Suppress non-essential warning messages. Messages - pertaining to I/O errors and other critical events - will not be suppressed. - - -v --verbose - Verbose mode -- show the compression ratio for each - file processed. Further -v's increase the ver- - bosity level, spewing out lots of information which - is primarily of interest for diagnostic purposes. - - -L --license -V --version - Display the software version, license terms and - conditions. - - -1 (or --fast) to -9 (or --best) - Set the block size to 100 k, 200 k .. 900 k when - compressing. Has no effect when decompressing. - See MEMORY MANAGEMENT below. The --fast and --best - aliases are primarily for GNU gzip compatibility. - In particular, --fast doesn't make things signifi- - cantly faster. And --best merely selects the - default behaviour. - - -- Treats all subsequent arguments as file names, even - if they start with a dash. This is so you can han- - dle files with names beginning with a dash, for - example: bzip2 -- -myfilename. - - --repetitive-fast --repetitive-best - These flags are redundant in versions 0.9.5 and - above. They provided some coarse control over the - behaviour of the sorting algorithm in earlier ver- - sions, which was sometimes useful. 0.9.5 and above - have an improved algorithm which renders these - flags irrelevant. - - -MEMORY MANAGEMENT - bzip2 compresses large files in blocks. The block size - affects both the compression ratio achieved, and the - amount of memory needed for compression and decompression. - The flags -1 through -9 specify the block size to be - 100,000 bytes through 900,000 bytes (the default) respec- - tively. At decompression time, the block size used for - compression is read from the header of the compressed - file, and bunzip2 then allocates itself just enough memory - to decompress the file. Since block sizes are stored in - compressed files, it follows that the flags -1 to -9 are - irrelevant to and so ignored during decompression. - - Compression and decompression requirements, in bytes, can - be estimated as: - - Compression: 400k + ( 8 x block size ) - - Decompression: 100k + ( 4 x block size ), or - 100k + ( 2.5 x block size ) - - Larger block sizes give rapidly diminishing marginal - returns. Most of the compression comes from the first two - or three hundred k of block size, a fact worth bearing in - mind when using bzip2 on small machines. It is also - important to appreciate that the decompression memory - requirement is set at compression time by the choice of - block size. - - For files compressed with the default 900k block size, - bunzip2 will require about 3700 kbytes to decompress. To - support decompression of any file on a 4 megabyte machine, - bunzip2 has an option to decompress using approximately - half this amount of memory, about 2300 kbytes. Decompres- - sion speed is also halved, so you should use this option - only where necessary. The relevant flag is -s. - - In general, try and use the largest block size memory con- - straints allow, since that maximises the compression - achieved. Compression and decompression speed are virtu- - ally unaffected by block size. - - Another significant point applies to files which fit in a - single block -- that means most files you'd encounter - using a large block size. The amount of real memory - touched is proportional to the size of the file, since the - file is smaller than a block. For example, compressing a - file 20,000 bytes long with the flag -9 will cause the - compressor to allocate around 7600k of memory, but only - touch 400k + 20000 * 8 = 560 kbytes of it. Similarly, the - decompressor will allocate 3700k but only touch 100k + - 20000 * 4 = 180 kbytes. - - Here is a table which summarises the maximum memory usage - for different block sizes. Also recorded is the total - compressed size for 14 files of the Calgary Text Compres- - sion Corpus totalling 3,141,622 bytes. This column gives - some feel for how compression varies with block size. - These figures tend to understate the advantage of larger - block sizes for larger files, since the Corpus is domi- - nated by smaller files. - - Compress Decompress Decompress Corpus - Flag usage usage -s usage Size - - -1 1200k 500k 350k 914704 - -2 2000k 900k 600k 877703 - -3 2800k 1300k 850k 860338 - -4 3600k 1700k 1100k 846899 - -5 4400k 2100k 1350k 845160 - -6 5200k 2500k 1600k 838626 - -7 6100k 2900k 1850k 834096 - -8 6800k 3300k 2100k 828642 - -9 7600k 3700k 2350k 828642 - - -RECOVERING DATA FROM DAMAGED FILES - bzip2 compresses files in blocks, usually 900kbytes long. - Each block is handled independently. If a media or trans- - mission error causes a multi-block .bz2 file to become - damaged, it may be possible to recover data from the - undamaged blocks in the file. - - The compressed representation of each block is delimited - by a 48-bit pattern, which makes it possible to find the - block boundaries with reasonable certainty. Each block - also carries its own 32-bit CRC, so damaged blocks can be - distinguished from undamaged ones. - - bzip2recover is a simple program whose purpose is to - search for blocks in .bz2 files, and write each block out - into its own .bz2 file. You can then use bzip2 -t to test - the integrity of the resulting files, and decompress those - which are undamaged. - - bzip2recover takes a single argument, the name of the dam- - aged file, and writes a number of files - "rec00001file.bz2", "rec00002file.bz2", etc, containing - the extracted blocks. The output filenames are - designed so that the use of wildcards in subsequent pro- - cessing -- for example, "bzip2 -dc rec*file.bz2 > recov- - ered_data" -- processes the files in the correct order. - - bzip2recover should be of most use dealing with large .bz2 - files, as these will contain many blocks. It is clearly - futile to use it on damaged single-block files, since a - damaged block cannot be recovered. If you wish to min- - imise any potential data loss through media or transmis- - sion errors, you might consider compressing with a smaller - block size. - - -PERFORMANCE NOTES - The sorting phase of compression gathers together similar - strings in the file. Because of this, files containing - very long runs of repeated symbols, like "aabaabaabaab - ..." (repeated several hundred times) may compress more - slowly than normal. Versions 0.9.5 and above fare much - better than previous versions in this respect. The ratio - between worst-case and average-case compression time is in - the region of 10:1. For previous versions, this figure - was more like 100:1. You can use the -vvvv option to mon- - itor progress in great detail, if you want. - - Decompression speed is unaffected by these phenomena. - - bzip2 usually allocates several megabytes of memory to - operate in, and then charges all over it in a fairly ran- - dom fashion. This means that performance, both for com- - pressing and decompressing, is largely determined by the - speed at which your machine can service cache misses. - Because of this, small changes to the code to reduce the - miss rate have been observed to give disproportionately - large performance improvements. I imagine bzip2 will per- - form best on machines with very large caches. - - -CAVEATS - I/O error messages are not as helpful as they could be. - bzip2 tries hard to detect I/O errors and exit cleanly, - but the details of what the problem is sometimes seem - rather misleading. - - This manual page pertains to version 1.0.6 of bzip2. Com- - pressed data created by this version is entirely forwards - and backwards compatible with the previous public - releases, versions 0.1pl2, 0.9.0, 0.9.5, 1.0.0, 1.0.1, - 1.0.2 and above, but with the following exception: 0.9.0 - and above can correctly decompress multiple concatenated - compressed files. 0.1pl2 cannot do this; it will stop - after decompressing just the first file in the stream. - - bzip2recover versions prior to 1.0.2 used 32-bit integers - to represent bit positions in compressed files, so they - could not handle compressed files more than 512 megabytes - long. Versions 1.0.2 and above use 64-bit ints on some - platforms which support them (GNU supported targets, and - Windows). To establish whether or not bzip2recover was - built with such a limitation, run it without arguments. - In any event you can build yourself an unlimited version - if you can recompile it with MaybeUInt64 set to be an - unsigned 64-bit integer. - - -AUTHOR - Julian Seward, jsewardbzip.org. - - http://www.bzip.org - - The ideas embodied in bzip2 are due to (at least) the fol- - lowing people: Michael Burrows and David Wheeler (for the - block sorting transformation), David Wheeler (again, for - the Huffman coder), Peter Fenwick (for the structured cod- - ing model in the original bzip, and many refinements), and - Alistair Moffat, Radford Neal and Ian Witten (for the - arithmetic coder in the original bzip). I am much - indebted for their help, support and advice. See the man- - ual in the source distribution for pointers to sources of - documentation. Christian von Roques encouraged me to look - for faster sorting algorithms, so as to speed up compres- - sion. Bela Lubkin encouraged me to improve the worst-case - compression performance. Donna Robinson XMLised the docu- - mentation. The bz* scripts are derived from those of GNU - gzip. Many people sent patches, helped with portability - problems, lent machines, gave advice and were generally - helpful. - diff --git a/plugins/updater/bzip2-1.0.3/bzip2recover.c b/plugins/updater/bzip2-1.0.3/bzip2recover.c deleted file mode 100644 index f9de0496ab..0000000000 --- a/plugins/updater/bzip2-1.0.3/bzip2recover.c +++ /dev/null @@ -1,514 +0,0 @@ -/*-----------------------------------------------------------*/ -/*--- Block recoverer program for bzip2 ---*/ -/*--- bzip2recover.c ---*/ -/*-----------------------------------------------------------*/ - -/* ------------------------------------------------------------------ - This file is part of bzip2/libbzip2, a program and library for - lossless, block-sorting data compression. - - bzip2/libbzip2 version 1.0.6 of 6 September 2010 - Copyright (C) 1996-2010 Julian Seward - - Please read the WARNING, DISCLAIMER and PATENTS sections in the - README file. - - This program is released under the terms of the license contained - in the file LICENSE. - ------------------------------------------------------------------ */ - -/* This program is a complete hack and should be rewritten properly. - It isn't very complicated. */ - -#include -#include -#include -#include - - -/* This program records bit locations in the file to be recovered. - That means that if 64-bit ints are not supported, we will not - be able to recover .bz2 files over 512MB (2^32 bits) long. - On GNU supported platforms, we take advantage of the 64-bit - int support to circumvent this problem. Ditto MSVC. - - This change occurred in version 1.0.2; all prior versions have - the 512MB limitation. -*/ -#ifdef __GNUC__ - typedef unsigned long long int MaybeUInt64; -# define MaybeUInt64_FMT "%Lu" -#else -#ifdef _MSC_VER - typedef unsigned __int64 MaybeUInt64; -# define MaybeUInt64_FMT "%I64u" -#else - typedef unsigned int MaybeUInt64; -# define MaybeUInt64_FMT "%u" -#endif -#endif - -typedef unsigned int UInt32; -typedef int Int32; -typedef unsigned char UChar; -typedef char Char; -typedef unsigned char Bool; -#define True ((Bool)1) -#define False ((Bool)0) - - -#define BZ_MAX_FILENAME 2000 - -Char inFileName[BZ_MAX_FILENAME]; -Char outFileName[BZ_MAX_FILENAME]; -Char progName[BZ_MAX_FILENAME]; - -MaybeUInt64 bytesOut = 0; -MaybeUInt64 bytesIn = 0; - - -/*---------------------------------------------------*/ -/*--- Header bytes ---*/ -/*---------------------------------------------------*/ - -#define BZ_HDR_B 0x42 /* 'B' */ -#define BZ_HDR_Z 0x5a /* 'Z' */ -#define BZ_HDR_h 0x68 /* 'h' */ -#define BZ_HDR_0 0x30 /* '0' */ - - -/*---------------------------------------------------*/ -/*--- I/O errors ---*/ -/*---------------------------------------------------*/ - -/*---------------------------------------------*/ -static void readError ( void ) -{ - fprintf ( stderr, - "%s: I/O error reading `%s', possible reason follows.\n", - progName, inFileName ); - perror ( progName ); - fprintf ( stderr, "%s: warning: output file(s) may be incomplete.\n", - progName ); - exit ( 1 ); -} - - -/*---------------------------------------------*/ -static void writeError ( void ) -{ - fprintf ( stderr, - "%s: I/O error reading `%s', possible reason follows.\n", - progName, inFileName ); - perror ( progName ); - fprintf ( stderr, "%s: warning: output file(s) may be incomplete.\n", - progName ); - exit ( 1 ); -} - - -/*---------------------------------------------*/ -static void mallocFail ( Int32 n ) -{ - fprintf ( stderr, - "%s: malloc failed on request for %d bytes.\n", - progName, n ); - fprintf ( stderr, "%s: warning: output file(s) may be incomplete.\n", - progName ); - exit ( 1 ); -} - - -/*---------------------------------------------*/ -static void tooManyBlocks ( Int32 max_handled_blocks ) -{ - fprintf ( stderr, - "%s: `%s' appears to contain more than %d blocks\n", - progName, inFileName, max_handled_blocks ); - fprintf ( stderr, - "%s: and cannot be handled. To fix, increase\n", - progName ); - fprintf ( stderr, - "%s: BZ_MAX_HANDLED_BLOCKS in bzip2recover.c, and recompile.\n", - progName ); - exit ( 1 ); -} - - - -/*---------------------------------------------------*/ -/*--- Bit stream I/O ---*/ -/*---------------------------------------------------*/ - -typedef - struct { - FILE* handle; - Int32 buffer; - Int32 buffLive; - Char mode; - } - BitStream; - - -/*---------------------------------------------*/ -static BitStream* bsOpenReadStream ( FILE* stream ) -{ - BitStream *bs = malloc ( sizeof(BitStream) ); - if (bs == NULL) mallocFail ( sizeof(BitStream) ); - bs->handle = stream; - bs->buffer = 0; - bs->buffLive = 0; - bs->mode = 'r'; - return bs; -} - - -/*---------------------------------------------*/ -static BitStream* bsOpenWriteStream ( FILE* stream ) -{ - BitStream *bs = malloc ( sizeof(BitStream) ); - if (bs == NULL) mallocFail ( sizeof(BitStream) ); - bs->handle = stream; - bs->buffer = 0; - bs->buffLive = 0; - bs->mode = 'w'; - return bs; -} - - -/*---------------------------------------------*/ -static void bsPutBit ( BitStream* bs, Int32 bit ) -{ - if (bs->buffLive == 8) { - Int32 retVal = putc ( (UChar) bs->buffer, bs->handle ); - if (retVal == EOF) writeError(); - bytesOut++; - bs->buffLive = 1; - bs->buffer = bit & 0x1; - } else { - bs->buffer = ( (bs->buffer << 1) | (bit & 0x1) ); - bs->buffLive++; - }; -} - - -/*---------------------------------------------*/ -/*-- - Returns 0 or 1, or 2 to indicate EOF. ---*/ -static Int32 bsGetBit ( BitStream* bs ) -{ - if (bs->buffLive > 0) { - bs->buffLive --; - return ( ((bs->buffer) >> (bs->buffLive)) & 0x1 ); - } else { - Int32 retVal = getc ( bs->handle ); - if ( retVal == EOF ) { - if (errno != 0) readError(); - return 2; - } - bs->buffLive = 7; - bs->buffer = retVal; - return ( ((bs->buffer) >> 7) & 0x1 ); - } -} - - -/*---------------------------------------------*/ -static void bsClose ( BitStream* bs ) -{ - Int32 retVal; - - if ( bs->mode == 'w' ) { - while ( bs->buffLive < 8 ) { - bs->buffLive++; - bs->buffer <<= 1; - }; - retVal = putc ( (UChar) (bs->buffer), bs->handle ); - if (retVal == EOF) writeError(); - bytesOut++; - retVal = fflush ( bs->handle ); - if (retVal == EOF) writeError(); - } - retVal = fclose ( bs->handle ); - if (retVal == EOF) { - if (bs->mode == 'w') writeError(); else readError(); - } - free ( bs ); -} - - -/*---------------------------------------------*/ -static void bsPutUChar ( BitStream* bs, UChar c ) -{ - Int32 i; - for (i = 7; i >= 0; i--) - bsPutBit ( bs, (((UInt32) c) >> i) & 0x1 ); -} - - -/*---------------------------------------------*/ -static void bsPutUInt32 ( BitStream* bs, UInt32 c ) -{ - Int32 i; - - for (i = 31; i >= 0; i--) - bsPutBit ( bs, (c >> i) & 0x1 ); -} - - -/*---------------------------------------------*/ -static Bool endsInBz2 ( Char* name ) -{ - Int32 n = strlen ( name ); - if (n <= 4) return False; - return - (name[n-4] == '.' && - name[n-3] == 'b' && - name[n-2] == 'z' && - name[n-1] == '2'); -} - - -/*---------------------------------------------------*/ -/*--- ---*/ -/*---------------------------------------------------*/ - -/* This logic isn't really right when it comes to Cygwin. */ -#ifdef _WIN32 -# define BZ_SPLIT_SYM '\\' /* path splitter on Windows platform */ -#else -# define BZ_SPLIT_SYM '/' /* path splitter on Unix platform */ -#endif - -#define BLOCK_HEADER_HI 0x00003141UL -#define BLOCK_HEADER_LO 0x59265359UL - -#define BLOCK_ENDMARK_HI 0x00001772UL -#define BLOCK_ENDMARK_LO 0x45385090UL - -/* Increase if necessary. However, a .bz2 file with > 50000 blocks - would have an uncompressed size of at least 40GB, so the chances - are low you'll need to up this. -*/ -#define BZ_MAX_HANDLED_BLOCKS 50000 - -MaybeUInt64 bStart [BZ_MAX_HANDLED_BLOCKS]; -MaybeUInt64 bEnd [BZ_MAX_HANDLED_BLOCKS]; -MaybeUInt64 rbStart[BZ_MAX_HANDLED_BLOCKS]; -MaybeUInt64 rbEnd [BZ_MAX_HANDLED_BLOCKS]; - -Int32 main ( Int32 argc, Char** argv ) -{ - FILE* inFile; - FILE* outFile; - BitStream* bsIn, *bsWr; - Int32 b, wrBlock, currBlock, rbCtr; - MaybeUInt64 bitsRead; - - UInt32 buffHi, buffLo, blockCRC; - Char* p; - - strcpy ( progName, argv[0] ); - inFileName[0] = outFileName[0] = 0; - - fprintf ( stderr, - "bzip2recover 1.0.6: extracts blocks from damaged .bz2 files.\n" ); - - if (argc != 2) { - fprintf ( stderr, "%s: usage is `%s damaged_file_name'.\n", - progName, progName ); - switch (sizeof(MaybeUInt64)) { - case 8: - fprintf(stderr, - "\trestrictions on size of recovered file: None\n"); - break; - case 4: - fprintf(stderr, - "\trestrictions on size of recovered file: 512 MB\n"); - fprintf(stderr, - "\tto circumvent, recompile with MaybeUInt64 as an\n" - "\tunsigned 64-bit int.\n"); - break; - default: - fprintf(stderr, - "\tsizeof(MaybeUInt64) is not 4 or 8 -- " - "configuration error.\n"); - break; - } - exit(1); - } - - if (strlen(argv[1]) >= BZ_MAX_FILENAME-20) { - fprintf ( stderr, - "%s: supplied filename is suspiciously (>= %d chars) long. Bye!\n", - progName, (int)strlen(argv[1]) ); - exit(1); - } - - strcpy ( inFileName, argv[1] ); - - inFile = fopen ( inFileName, "rb" ); - if (inFile == NULL) { - fprintf ( stderr, "%s: can't read `%s'\n", progName, inFileName ); - exit(1); - } - - bsIn = bsOpenReadStream ( inFile ); - fprintf ( stderr, "%s: searching for block boundaries ...\n", progName ); - - bitsRead = 0; - buffHi = buffLo = 0; - currBlock = 0; - bStart[currBlock] = 0; - - rbCtr = 0; - - while (True) { - b = bsGetBit ( bsIn ); - bitsRead++; - if (b == 2) { - if (bitsRead >= bStart[currBlock] && - (bitsRead - bStart[currBlock]) >= 40) { - bEnd[currBlock] = bitsRead-1; - if (currBlock > 0) - fprintf ( stderr, " block %d runs from " MaybeUInt64_FMT - " to " MaybeUInt64_FMT " (incomplete)\n", - currBlock, bStart[currBlock], bEnd[currBlock] ); - } else - currBlock--; - break; - } - buffHi = (buffHi << 1) | (buffLo >> 31); - buffLo = (buffLo << 1) | (b & 1); - if ( ( (buffHi & 0x0000ffff) == BLOCK_HEADER_HI - && buffLo == BLOCK_HEADER_LO) - || - ( (buffHi & 0x0000ffff) == BLOCK_ENDMARK_HI - && buffLo == BLOCK_ENDMARK_LO) - ) { - if (bitsRead > 49) { - bEnd[currBlock] = bitsRead-49; - } else { - bEnd[currBlock] = 0; - } - if (currBlock > 0 && - (bEnd[currBlock] - bStart[currBlock]) >= 130) { - fprintf ( stderr, " block %d runs from " MaybeUInt64_FMT - " to " MaybeUInt64_FMT "\n", - rbCtr+1, bStart[currBlock], bEnd[currBlock] ); - rbStart[rbCtr] = bStart[currBlock]; - rbEnd[rbCtr] = bEnd[currBlock]; - rbCtr++; - } - if (currBlock >= BZ_MAX_HANDLED_BLOCKS) - tooManyBlocks(BZ_MAX_HANDLED_BLOCKS); - currBlock++; - - bStart[currBlock] = bitsRead; - } - } - - bsClose ( bsIn ); - - /*-- identified blocks run from 1 to rbCtr inclusive. --*/ - - if (rbCtr < 1) { - fprintf ( stderr, - "%s: sorry, I couldn't find any block boundaries.\n", - progName ); - exit(1); - }; - - fprintf ( stderr, "%s: splitting into blocks\n", progName ); - - inFile = fopen ( inFileName, "rb" ); - if (inFile == NULL) { - fprintf ( stderr, "%s: can't open `%s'\n", progName, inFileName ); - exit(1); - } - bsIn = bsOpenReadStream ( inFile ); - - /*-- placate gcc's dataflow analyser --*/ - blockCRC = 0; bsWr = 0; - - bitsRead = 0; - outFile = NULL; - wrBlock = 0; - while (True) { - b = bsGetBit(bsIn); - if (b == 2) break; - buffHi = (buffHi << 1) | (buffLo >> 31); - buffLo = (buffLo << 1) | (b & 1); - if (bitsRead == 47+rbStart[wrBlock]) - blockCRC = (buffHi << 16) | (buffLo >> 16); - - if (outFile != NULL && bitsRead >= rbStart[wrBlock] - && bitsRead <= rbEnd[wrBlock]) { - bsPutBit ( bsWr, b ); - } - - bitsRead++; - - if (bitsRead == rbEnd[wrBlock]+1) { - if (outFile != NULL) { - bsPutUChar ( bsWr, 0x17 ); bsPutUChar ( bsWr, 0x72 ); - bsPutUChar ( bsWr, 0x45 ); bsPutUChar ( bsWr, 0x38 ); - bsPutUChar ( bsWr, 0x50 ); bsPutUChar ( bsWr, 0x90 ); - bsPutUInt32 ( bsWr, blockCRC ); - bsClose ( bsWr ); - } - if (wrBlock >= rbCtr) break; - wrBlock++; - } else - if (bitsRead == rbStart[wrBlock]) { - /* Create the output file name, correctly handling leading paths. - (31.10.2001 by Sergey E. Kusikov) */ - Char* split; - Int32 ofs, k; - for (k = 0; k < BZ_MAX_FILENAME; k++) - outFileName[k] = 0; - strcpy (outFileName, inFileName); - split = strrchr (outFileName, BZ_SPLIT_SYM); - if (split == NULL) { - split = outFileName; - } else { - ++split; - } - /* Now split points to the start of the basename. */ - ofs = split - outFileName; - sprintf (split, "rec%5d", wrBlock+1); - for (p = split; *p != 0; p++) if (*p == ' ') *p = '0'; - strcat (outFileName, inFileName + ofs); - - if ( !endsInBz2(outFileName)) strcat ( outFileName, ".bz2" ); - - fprintf ( stderr, " writing block %d to `%s' ...\n", - wrBlock+1, outFileName ); - - outFile = fopen ( outFileName, "wb" ); - if (outFile == NULL) { - fprintf ( stderr, "%s: can't write `%s'\n", - progName, outFileName ); - exit(1); - } - bsWr = bsOpenWriteStream ( outFile ); - bsPutUChar ( bsWr, BZ_HDR_B ); - bsPutUChar ( bsWr, BZ_HDR_Z ); - bsPutUChar ( bsWr, BZ_HDR_h ); - bsPutUChar ( bsWr, BZ_HDR_0 + 9 ); - bsPutUChar ( bsWr, 0x31 ); bsPutUChar ( bsWr, 0x41 ); - bsPutUChar ( bsWr, 0x59 ); bsPutUChar ( bsWr, 0x26 ); - bsPutUChar ( bsWr, 0x53 ); bsPutUChar ( bsWr, 0x59 ); - } - } - - fprintf ( stderr, "%s: finished\n", progName ); - return 0; -} - - - -/*-----------------------------------------------------------*/ -/*--- end bzip2recover.c ---*/ -/*-----------------------------------------------------------*/ diff --git a/plugins/updater/bzip2-1.0.3/bzlib.c b/plugins/updater/bzip2-1.0.3/bzlib.c deleted file mode 100644 index bd358a793b..0000000000 --- a/plugins/updater/bzip2-1.0.3/bzlib.c +++ /dev/null @@ -1,1572 +0,0 @@ - -/*-------------------------------------------------------------*/ -/*--- Library top-level functions. ---*/ -/*--- bzlib.c ---*/ -/*-------------------------------------------------------------*/ - -/* ------------------------------------------------------------------ - This file is part of bzip2/libbzip2, a program and library for - lossless, block-sorting data compression. - - bzip2/libbzip2 version 1.0.6 of 6 September 2010 - Copyright (C) 1996-2010 Julian Seward - - Please read the WARNING, DISCLAIMER and PATENTS sections in the - README file. - - This program is released under the terms of the license contained - in the file LICENSE. - ------------------------------------------------------------------ */ - -/* CHANGES - 0.9.0 -- original version. - 0.9.0a/b -- no changes in this file. - 0.9.0c -- made zero-length BZ_FLUSH work correctly in bzCompress(). - fixed bzWrite/bzRead to ignore zero-length requests. - fixed bzread to correctly handle read requests after EOF. - wrong parameter order in call to bzDecompressInit in - bzBuffToBuffDecompress. Fixed. -*/ - -#include "bzlib_private.h" - - -/*---------------------------------------------------*/ -/*--- Compression stuff ---*/ -/*---------------------------------------------------*/ - - -/*---------------------------------------------------*/ -#ifndef BZ_NO_STDIO -void BZ2_bz__AssertH__fail ( int errcode ) -{ - fprintf(stderr, - "\n\nbzip2/libbzip2: internal error number %d.\n" - "This is a bug in bzip2/libbzip2, %s.\n" - "Please report it to me at: jseward@bzip.org. If this happened\n" - "when you were using some program which uses libbzip2 as a\n" - "component, you should also report this bug to the author(s)\n" - "of that program. Please make an effort to report this bug;\n" - "timely and accurate bug reports eventually lead to higher\n" - "quality software. Thanks. Julian Seward, 10 December 2007.\n\n", - errcode, - BZ2_bzlibVersion() - ); - - if (errcode == 1007) { - fprintf(stderr, - "\n*** A special note about internal error number 1007 ***\n" - "\n" - "Experience suggests that a common cause of i.e. 1007\n" - "is unreliable memory or other hardware. The 1007 assertion\n" - "just happens to cross-check the results of huge numbers of\n" - "memory reads/writes, and so acts (unintendedly) as a stress\n" - "test of your memory system.\n" - "\n" - "I suggest the following: try compressing the file again,\n" - "possibly monitoring progress in detail with the -vv flag.\n" - "\n" - "* If the error cannot be reproduced, and/or happens at different\n" - " points in compression, you may have a flaky memory system.\n" - " Try a memory-test program. I have used Memtest86\n" - " (www.memtest86.com). At the time of writing it is free (GPLd).\n" - " Memtest86 tests memory much more thorougly than your BIOSs\n" - " power-on test, and may find failures that the BIOS doesn't.\n" - "\n" - "* If the error can be repeatably reproduced, this is a bug in\n" - " bzip2, and I would very much like to hear about it. Please\n" - " let me know, and, ideally, save a copy of the file causing the\n" - " problem -- without which I will be unable to investigate it.\n" - "\n" - ); - } - - exit(3); -} -#endif - - -/*---------------------------------------------------*/ -static -int bz_config_ok ( void ) -{ - if (sizeof(int) != 4) return 0; - if (sizeof(short) != 2) return 0; - if (sizeof(char) != 1) return 0; - return 1; -} - - -/*---------------------------------------------------*/ -static -void* default_bzalloc ( void* opaque, Int32 items, Int32 size ) -{ - void* v = malloc ( items * size ); - return v; -} - -static -void default_bzfree ( void* opaque, void* addr ) -{ - if (addr != NULL) free ( addr ); -} - - -/*---------------------------------------------------*/ -static -void prepare_new_block ( EState* s ) -{ - Int32 i; - s->nblock = 0; - s->numZ = 0; - s->state_out_pos = 0; - BZ_INITIALISE_CRC ( s->blockCRC ); - for (i = 0; i < 256; i++) s->inUse[i] = False; - s->blockNo++; -} - - -/*---------------------------------------------------*/ -static -void init_RL ( EState* s ) -{ - s->state_in_ch = 256; - s->state_in_len = 0; -} - - -static -Bool isempty_RL ( EState* s ) -{ - if (s->state_in_ch < 256 && s->state_in_len > 0) - return False; else - return True; -} - - -/*---------------------------------------------------*/ -int BZ_API(BZ2_bzCompressInit) - ( bz_stream* strm, - int blockSize100k, - int verbosity, - int workFactor ) -{ - Int32 n; - EState* s; - - if (!bz_config_ok()) return BZ_CONFIG_ERROR; - - if (strm == NULL || - blockSize100k < 1 || blockSize100k > 9 || - workFactor < 0 || workFactor > 250) - return BZ_PARAM_ERROR; - - if (workFactor == 0) workFactor = 30; - if (strm->bzalloc == NULL) strm->bzalloc = default_bzalloc; - if (strm->bzfree == NULL) strm->bzfree = default_bzfree; - - s = BZALLOC( sizeof(EState) ); - if (s == NULL) return BZ_MEM_ERROR; - s->strm = strm; - - s->arr1 = NULL; - s->arr2 = NULL; - s->ftab = NULL; - - n = 100000 * blockSize100k; - s->arr1 = BZALLOC( n * sizeof(UInt32) ); - s->arr2 = BZALLOC( (n+BZ_N_OVERSHOOT) * sizeof(UInt32) ); - s->ftab = BZALLOC( 65537 * sizeof(UInt32) ); - - if (s->arr1 == NULL || s->arr2 == NULL || s->ftab == NULL) { - if (s->arr1 != NULL) BZFREE(s->arr1); - if (s->arr2 != NULL) BZFREE(s->arr2); - if (s->ftab != NULL) BZFREE(s->ftab); - if (s != NULL) BZFREE(s); - return BZ_MEM_ERROR; - } - - s->blockNo = 0; - s->state = BZ_S_INPUT; - s->mode = BZ_M_RUNNING; - s->combinedCRC = 0; - s->blockSize100k = blockSize100k; - s->nblockMAX = 100000 * blockSize100k - 19; - s->verbosity = verbosity; - s->workFactor = workFactor; - - s->block = (UChar*)s->arr2; - s->mtfv = (UInt16*)s->arr1; - s->zbits = NULL; - s->ptr = (UInt32*)s->arr1; - - strm->state = s; - strm->total_in_lo32 = 0; - strm->total_in_hi32 = 0; - strm->total_out_lo32 = 0; - strm->total_out_hi32 = 0; - init_RL ( s ); - prepare_new_block ( s ); - return BZ_OK; -} - - -/*---------------------------------------------------*/ -static -void add_pair_to_block ( EState* s ) -{ - Int32 i; - UChar ch = (UChar)(s->state_in_ch); - for (i = 0; i < s->state_in_len; i++) { - BZ_UPDATE_CRC( s->blockCRC, ch ); - } - s->inUse[s->state_in_ch] = True; - switch (s->state_in_len) { - case 1: - s->block[s->nblock] = (UChar)ch; s->nblock++; - break; - case 2: - s->block[s->nblock] = (UChar)ch; s->nblock++; - s->block[s->nblock] = (UChar)ch; s->nblock++; - break; - case 3: - s->block[s->nblock] = (UChar)ch; s->nblock++; - s->block[s->nblock] = (UChar)ch; s->nblock++; - s->block[s->nblock] = (UChar)ch; s->nblock++; - break; - default: - s->inUse[s->state_in_len-4] = True; - s->block[s->nblock] = (UChar)ch; s->nblock++; - s->block[s->nblock] = (UChar)ch; s->nblock++; - s->block[s->nblock] = (UChar)ch; s->nblock++; - s->block[s->nblock] = (UChar)ch; s->nblock++; - s->block[s->nblock] = ((UChar)(s->state_in_len-4)); - s->nblock++; - break; - } -} - - -/*---------------------------------------------------*/ -static -void flush_RL ( EState* s ) -{ - if (s->state_in_ch < 256) add_pair_to_block ( s ); - init_RL ( s ); -} - - -/*---------------------------------------------------*/ -#define ADD_CHAR_TO_BLOCK(zs,zchh0) \ -{ \ - UInt32 zchh = (UInt32)(zchh0); \ - /*-- fast track the common case --*/ \ - if (zchh != zs->state_in_ch && \ - zs->state_in_len == 1) { \ - UChar ch = (UChar)(zs->state_in_ch); \ - BZ_UPDATE_CRC( zs->blockCRC, ch ); \ - zs->inUse[zs->state_in_ch] = True; \ - zs->block[zs->nblock] = (UChar)ch; \ - zs->nblock++; \ - zs->state_in_ch = zchh; \ - } \ - else \ - /*-- general, uncommon cases --*/ \ - if (zchh != zs->state_in_ch || \ - zs->state_in_len == 255) { \ - if (zs->state_in_ch < 256) \ - add_pair_to_block ( zs ); \ - zs->state_in_ch = zchh; \ - zs->state_in_len = 1; \ - } else { \ - zs->state_in_len++; \ - } \ -} - - -/*---------------------------------------------------*/ -static -Bool copy_input_until_stop ( EState* s ) -{ - Bool progress_in = False; - - if (s->mode == BZ_M_RUNNING) { - - /*-- fast track the common case --*/ - while (True) { - /*-- block full? --*/ - if (s->nblock >= s->nblockMAX) break; - /*-- no input? --*/ - if (s->strm->avail_in == 0) break; - progress_in = True; - ADD_CHAR_TO_BLOCK ( s, (UInt32)(*((UChar*)(s->strm->next_in))) ); - s->strm->next_in++; - s->strm->avail_in--; - s->strm->total_in_lo32++; - if (s->strm->total_in_lo32 == 0) s->strm->total_in_hi32++; - } - - } else { - - /*-- general, uncommon case --*/ - while (True) { - /*-- block full? --*/ - if (s->nblock >= s->nblockMAX) break; - /*-- no input? --*/ - if (s->strm->avail_in == 0) break; - /*-- flush/finish end? --*/ - if (s->avail_in_expect == 0) break; - progress_in = True; - ADD_CHAR_TO_BLOCK ( s, (UInt32)(*((UChar*)(s->strm->next_in))) ); - s->strm->next_in++; - s->strm->avail_in--; - s->strm->total_in_lo32++; - if (s->strm->total_in_lo32 == 0) s->strm->total_in_hi32++; - s->avail_in_expect--; - } - } - return progress_in; -} - - -/*---------------------------------------------------*/ -static -Bool copy_output_until_stop ( EState* s ) -{ - Bool progress_out = False; - - while (True) { - - /*-- no output space? --*/ - if (s->strm->avail_out == 0) break; - - /*-- block done? --*/ - if (s->state_out_pos >= s->numZ) break; - - progress_out = True; - *(s->strm->next_out) = s->zbits[s->state_out_pos]; - s->state_out_pos++; - s->strm->avail_out--; - s->strm->next_out++; - s->strm->total_out_lo32++; - if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++; - } - - return progress_out; -} - - -/*---------------------------------------------------*/ -static -Bool handle_compress ( bz_stream* strm ) -{ - Bool progress_in = False; - Bool progress_out = False; - EState* s = strm->state; - - while (True) { - - if (s->state == BZ_S_OUTPUT) { - progress_out |= copy_output_until_stop ( s ); - if (s->state_out_pos < s->numZ) break; - if (s->mode == BZ_M_FINISHING && - s->avail_in_expect == 0 && - isempty_RL(s)) break; - prepare_new_block ( s ); - s->state = BZ_S_INPUT; - if (s->mode == BZ_M_FLUSHING && - s->avail_in_expect == 0 && - isempty_RL(s)) break; - } - - if (s->state == BZ_S_INPUT) { - progress_in |= copy_input_until_stop ( s ); - if (s->mode != BZ_M_RUNNING && s->avail_in_expect == 0) { - flush_RL ( s ); - BZ2_compressBlock ( s, (Bool)(s->mode == BZ_M_FINISHING) ); - s->state = BZ_S_OUTPUT; - } - else - if (s->nblock >= s->nblockMAX) { - BZ2_compressBlock ( s, False ); - s->state = BZ_S_OUTPUT; - } - else - if (s->strm->avail_in == 0) { - break; - } - } - - } - - return progress_in || progress_out; -} - - -/*---------------------------------------------------*/ -int BZ_API(BZ2_bzCompress) ( bz_stream *strm, int action ) -{ - Bool progress; - EState* s; - if (strm == NULL) return BZ_PARAM_ERROR; - s = strm->state; - if (s == NULL) return BZ_PARAM_ERROR; - if (s->strm != strm) return BZ_PARAM_ERROR; - - preswitch: - switch (s->mode) { - - case BZ_M_IDLE: - return BZ_SEQUENCE_ERROR; - - case BZ_M_RUNNING: - if (action == BZ_RUN) { - progress = handle_compress ( strm ); - return progress ? BZ_RUN_OK : BZ_PARAM_ERROR; - } - else - if (action == BZ_FLUSH) { - s->avail_in_expect = strm->avail_in; - s->mode = BZ_M_FLUSHING; - goto preswitch; - } - else - if (action == BZ_FINISH) { - s->avail_in_expect = strm->avail_in; - s->mode = BZ_M_FINISHING; - goto preswitch; - } - else - return BZ_PARAM_ERROR; - - case BZ_M_FLUSHING: - if (action != BZ_FLUSH) return BZ_SEQUENCE_ERROR; - if (s->avail_in_expect != s->strm->avail_in) - return BZ_SEQUENCE_ERROR; - progress = handle_compress ( strm ); - if (s->avail_in_expect > 0 || !isempty_RL(s) || - s->state_out_pos < s->numZ) return BZ_FLUSH_OK; - s->mode = BZ_M_RUNNING; - return BZ_RUN_OK; - - case BZ_M_FINISHING: - if (action != BZ_FINISH) return BZ_SEQUENCE_ERROR; - if (s->avail_in_expect != s->strm->avail_in) - return BZ_SEQUENCE_ERROR; - progress = handle_compress ( strm ); - if (!progress) return BZ_SEQUENCE_ERROR; - if (s->avail_in_expect > 0 || !isempty_RL(s) || - s->state_out_pos < s->numZ) return BZ_FINISH_OK; - s->mode = BZ_M_IDLE; - return BZ_STREAM_END; - } - return BZ_OK; /*--not reached--*/ -} - - -/*---------------------------------------------------*/ -int BZ_API(BZ2_bzCompressEnd) ( bz_stream *strm ) -{ - EState* s; - if (strm == NULL) return BZ_PARAM_ERROR; - s = strm->state; - if (s == NULL) return BZ_PARAM_ERROR; - if (s->strm != strm) return BZ_PARAM_ERROR; - - if (s->arr1 != NULL) BZFREE(s->arr1); - if (s->arr2 != NULL) BZFREE(s->arr2); - if (s->ftab != NULL) BZFREE(s->ftab); - BZFREE(strm->state); - - strm->state = NULL; - - return BZ_OK; -} - - -/*---------------------------------------------------*/ -/*--- Decompression stuff ---*/ -/*---------------------------------------------------*/ - -/*---------------------------------------------------*/ -int BZ_API(BZ2_bzDecompressInit) - ( bz_stream* strm, - int verbosity, - int small ) -{ - DState* s; - - if (!bz_config_ok()) return BZ_CONFIG_ERROR; - - if (strm == NULL) return BZ_PARAM_ERROR; - if (small != 0 && small != 1) return BZ_PARAM_ERROR; - if (verbosity < 0 || verbosity > 4) return BZ_PARAM_ERROR; - - if (strm->bzalloc == NULL) strm->bzalloc = default_bzalloc; - if (strm->bzfree == NULL) strm->bzfree = default_bzfree; - - s = BZALLOC( sizeof(DState) ); - if (s == NULL) return BZ_MEM_ERROR; - s->strm = strm; - strm->state = s; - s->state = BZ_X_MAGIC_1; - s->bsLive = 0; - s->bsBuff = 0; - s->calculatedCombinedCRC = 0; - strm->total_in_lo32 = 0; - strm->total_in_hi32 = 0; - strm->total_out_lo32 = 0; - strm->total_out_hi32 = 0; - s->smallDecompress = (Bool)small; - s->ll4 = NULL; - s->ll16 = NULL; - s->tt = NULL; - s->currBlockNo = 0; - s->verbosity = verbosity; - - return BZ_OK; -} - - -/*---------------------------------------------------*/ -/* Return True iff data corruption is discovered. - Returns False if there is no problem. -*/ -static -Bool unRLE_obuf_to_output_FAST ( DState* s ) -{ - UChar k1; - - if (s->blockRandomised) { - - while (True) { - /* try to finish existing run */ - while (True) { - if (s->strm->avail_out == 0) return False; - if (s->state_out_len == 0) break; - *( (UChar*)(s->strm->next_out) ) = s->state_out_ch; - BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch ); - s->state_out_len--; - s->strm->next_out++; - s->strm->avail_out--; - s->strm->total_out_lo32++; - if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++; - } - - /* can a new run be started? */ - if (s->nblock_used == s->save_nblock+1) return False; - - /* Only caused by corrupt data stream? */ - if (s->nblock_used > s->save_nblock+1) - return True; - - s->state_out_len = 1; - s->state_out_ch = s->k0; - BZ_GET_FAST(k1); BZ_RAND_UPD_MASK; - k1 ^= BZ_RAND_MASK; s->nblock_used++; - if (s->nblock_used == s->save_nblock+1) continue; - if (k1 != s->k0) { s->k0 = k1; continue; }; - - s->state_out_len = 2; - BZ_GET_FAST(k1); BZ_RAND_UPD_MASK; - k1 ^= BZ_RAND_MASK; s->nblock_used++; - if (s->nblock_used == s->save_nblock+1) continue; - if (k1 != s->k0) { s->k0 = k1; continue; }; - - s->state_out_len = 3; - BZ_GET_FAST(k1); BZ_RAND_UPD_MASK; - k1 ^= BZ_RAND_MASK; s->nblock_used++; - if (s->nblock_used == s->save_nblock+1) continue; - if (k1 != s->k0) { s->k0 = k1; continue; }; - - BZ_GET_FAST(k1); BZ_RAND_UPD_MASK; - k1 ^= BZ_RAND_MASK; s->nblock_used++; - s->state_out_len = ((Int32)k1) + 4; - BZ_GET_FAST(s->k0); BZ_RAND_UPD_MASK; - s->k0 ^= BZ_RAND_MASK; s->nblock_used++; - } - - } else { - - /* restore */ - UInt32 c_calculatedBlockCRC = s->calculatedBlockCRC; - UChar c_state_out_ch = s->state_out_ch; - Int32 c_state_out_len = s->state_out_len; - Int32 c_nblock_used = s->nblock_used; - Int32 c_k0 = s->k0; - UInt32* c_tt = s->tt; - UInt32 c_tPos = s->tPos; - char* cs_next_out = s->strm->next_out; - unsigned int cs_avail_out = s->strm->avail_out; - Int32 ro_blockSize100k = s->blockSize100k; - /* end restore */ - - UInt32 avail_out_INIT = cs_avail_out; - Int32 s_save_nblockPP = s->save_nblock+1; - unsigned int total_out_lo32_old; - - while (True) { - - /* try to finish existing run */ - if (c_state_out_len > 0) { - while (True) { - if (cs_avail_out == 0) goto return_notr; - if (c_state_out_len == 1) break; - *( (UChar*)(cs_next_out) ) = c_state_out_ch; - BZ_UPDATE_CRC ( c_calculatedBlockCRC, c_state_out_ch ); - c_state_out_len--; - cs_next_out++; - cs_avail_out--; - } - s_state_out_len_eq_one: - { - if (cs_avail_out == 0) { - c_state_out_len = 1; goto return_notr; - }; - *( (UChar*)(cs_next_out) ) = c_state_out_ch; - BZ_UPDATE_CRC ( c_calculatedBlockCRC, c_state_out_ch ); - cs_next_out++; - cs_avail_out--; - } - } - /* Only caused by corrupt data stream? */ - if (c_nblock_used > s_save_nblockPP) - return True; - - /* can a new run be started? */ - if (c_nblock_used == s_save_nblockPP) { - c_state_out_len = 0; goto return_notr; - }; - c_state_out_ch = c_k0; - BZ_GET_FAST_C(k1); c_nblock_used++; - if (k1 != c_k0) { - c_k0 = k1; goto s_state_out_len_eq_one; - }; - if (c_nblock_used == s_save_nblockPP) - goto s_state_out_len_eq_one; - - c_state_out_len = 2; - BZ_GET_FAST_C(k1); c_nblock_used++; - if (c_nblock_used == s_save_nblockPP) continue; - if (k1 != c_k0) { c_k0 = k1; continue; }; - - c_state_out_len = 3; - BZ_GET_FAST_C(k1); c_nblock_used++; - if (c_nblock_used == s_save_nblockPP) continue; - if (k1 != c_k0) { c_k0 = k1; continue; }; - - BZ_GET_FAST_C(k1); c_nblock_used++; - c_state_out_len = ((Int32)k1) + 4; - BZ_GET_FAST_C(c_k0); c_nblock_used++; - } - - return_notr: - total_out_lo32_old = s->strm->total_out_lo32; - s->strm->total_out_lo32 += (avail_out_INIT - cs_avail_out); - if (s->strm->total_out_lo32 < total_out_lo32_old) - s->strm->total_out_hi32++; - - /* save */ - s->calculatedBlockCRC = c_calculatedBlockCRC; - s->state_out_ch = c_state_out_ch; - s->state_out_len = c_state_out_len; - s->nblock_used = c_nblock_used; - s->k0 = c_k0; - s->tt = c_tt; - s->tPos = c_tPos; - s->strm->next_out = cs_next_out; - s->strm->avail_out = cs_avail_out; - /* end save */ - } - return False; -} - - - -/*---------------------------------------------------*/ -__inline__ Int32 BZ2_indexIntoF ( Int32 indx, Int32 *cftab ) -{ - Int32 nb, na, mid; - nb = 0; - na = 256; - do { - mid = (nb + na) >> 1; - if (indx >= cftab[mid]) nb = mid; else na = mid; - } - while (na - nb != 1); - return nb; -} - - -/*---------------------------------------------------*/ -/* Return True iff data corruption is discovered. - Returns False if there is no problem. -*/ -static -Bool unRLE_obuf_to_output_SMALL ( DState* s ) -{ - UChar k1; - - if (s->blockRandomised) { - - while (True) { - /* try to finish existing run */ - while (True) { - if (s->strm->avail_out == 0) return False; - if (s->state_out_len == 0) break; - *( (UChar*)(s->strm->next_out) ) = s->state_out_ch; - BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch ); - s->state_out_len--; - s->strm->next_out++; - s->strm->avail_out--; - s->strm->total_out_lo32++; - if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++; - } - - /* can a new run be started? */ - if (s->nblock_used == s->save_nblock+1) return False; - - /* Only caused by corrupt data stream? */ - if (s->nblock_used > s->save_nblock+1) - return True; - - s->state_out_len = 1; - s->state_out_ch = s->k0; - BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK; - k1 ^= BZ_RAND_MASK; s->nblock_used++; - if (s->nblock_used == s->save_nblock+1) continue; - if (k1 != s->k0) { s->k0 = k1; continue; }; - - s->state_out_len = 2; - BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK; - k1 ^= BZ_RAND_MASK; s->nblock_used++; - if (s->nblock_used == s->save_nblock+1) continue; - if (k1 != s->k0) { s->k0 = k1; continue; }; - - s->state_out_len = 3; - BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK; - k1 ^= BZ_RAND_MASK; s->nblock_used++; - if (s->nblock_used == s->save_nblock+1) continue; - if (k1 != s->k0) { s->k0 = k1; continue; }; - - BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK; - k1 ^= BZ_RAND_MASK; s->nblock_used++; - s->state_out_len = ((Int32)k1) + 4; - BZ_GET_SMALL(s->k0); BZ_RAND_UPD_MASK; - s->k0 ^= BZ_RAND_MASK; s->nblock_used++; - } - - } else { - - while (True) { - /* try to finish existing run */ - while (True) { - if (s->strm->avail_out == 0) return False; - if (s->state_out_len == 0) break; - *( (UChar*)(s->strm->next_out) ) = s->state_out_ch; - BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch ); - s->state_out_len--; - s->strm->next_out++; - s->strm->avail_out--; - s->strm->total_out_lo32++; - if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++; - } - - /* can a new run be started? */ - if (s->nblock_used == s->save_nblock+1) return False; - - /* Only caused by corrupt data stream? */ - if (s->nblock_used > s->save_nblock+1) - return True; - - s->state_out_len = 1; - s->state_out_ch = s->k0; - BZ_GET_SMALL(k1); s->nblock_used++; - if (s->nblock_used == s->save_nblock+1) continue; - if (k1 != s->k0) { s->k0 = k1; continue; }; - - s->state_out_len = 2; - BZ_GET_SMALL(k1); s->nblock_used++; - if (s->nblock_used == s->save_nblock+1) continue; - if (k1 != s->k0) { s->k0 = k1; continue; }; - - s->state_out_len = 3; - BZ_GET_SMALL(k1); s->nblock_used++; - if (s->nblock_used == s->save_nblock+1) continue; - if (k1 != s->k0) { s->k0 = k1; continue; }; - - BZ_GET_SMALL(k1); s->nblock_used++; - s->state_out_len = ((Int32)k1) + 4; - BZ_GET_SMALL(s->k0); s->nblock_used++; - } - - } -} - - -/*---------------------------------------------------*/ -int BZ_API(BZ2_bzDecompress) ( bz_stream *strm ) -{ - Bool corrupt; - DState* s; - if (strm == NULL) return BZ_PARAM_ERROR; - s = strm->state; - if (s == NULL) return BZ_PARAM_ERROR; - if (s->strm != strm) return BZ_PARAM_ERROR; - - while (True) { - if (s->state == BZ_X_IDLE) return BZ_SEQUENCE_ERROR; - if (s->state == BZ_X_OUTPUT) { - if (s->smallDecompress) - corrupt = unRLE_obuf_to_output_SMALL ( s ); else - corrupt = unRLE_obuf_to_output_FAST ( s ); - if (corrupt) return BZ_DATA_ERROR; - if (s->nblock_used == s->save_nblock+1 && s->state_out_len == 0) { - BZ_FINALISE_CRC ( s->calculatedBlockCRC ); - if (s->verbosity >= 3) - VPrintf2 ( " {0x%08x, 0x%08x}", s->storedBlockCRC, - s->calculatedBlockCRC ); - if (s->verbosity >= 2) VPrintf0 ( "]" ); - if (s->calculatedBlockCRC != s->storedBlockCRC) - return BZ_DATA_ERROR; - s->calculatedCombinedCRC - = (s->calculatedCombinedCRC << 1) | - (s->calculatedCombinedCRC >> 31); - s->calculatedCombinedCRC ^= s->calculatedBlockCRC; - s->state = BZ_X_BLKHDR_1; - } else { - return BZ_OK; - } - } - if (s->state >= BZ_X_MAGIC_1) { - Int32 r = BZ2_decompress ( s ); - if (r == BZ_STREAM_END) { - if (s->verbosity >= 3) - VPrintf2 ( "\n combined CRCs: stored = 0x%08x, computed = 0x%08x", - s->storedCombinedCRC, s->calculatedCombinedCRC ); - if (s->calculatedCombinedCRC != s->storedCombinedCRC) - return BZ_DATA_ERROR; - return r; - } - if (s->state != BZ_X_OUTPUT) return r; - } - } - - AssertH ( 0, 6001 ); - - return 0; /*NOTREACHED*/ -} - - -/*---------------------------------------------------*/ -int BZ_API(BZ2_bzDecompressEnd) ( bz_stream *strm ) -{ - DState* s; - if (strm == NULL) return BZ_PARAM_ERROR; - s = strm->state; - if (s == NULL) return BZ_PARAM_ERROR; - if (s->strm != strm) return BZ_PARAM_ERROR; - - if (s->tt != NULL) BZFREE(s->tt); - if (s->ll16 != NULL) BZFREE(s->ll16); - if (s->ll4 != NULL) BZFREE(s->ll4); - - BZFREE(strm->state); - strm->state = NULL; - - return BZ_OK; -} - - -#ifndef BZ_NO_STDIO -/*---------------------------------------------------*/ -/*--- File I/O stuff ---*/ -/*---------------------------------------------------*/ - -#define BZ_SETERR(eee) \ -{ \ - if (bzerror != NULL) *bzerror = eee; \ - if (bzf != NULL) bzf->lastErr = eee; \ -} - -typedef - struct { - FILE* handle; - Char buf[BZ_MAX_UNUSED]; - Int32 bufN; - Bool writing; - bz_stream strm; - Int32 lastErr; - Bool initialisedOk; - } - bzFile; - - -/*---------------------------------------------*/ -static Bool myfeof ( FILE* f ) -{ - Int32 c = fgetc ( f ); - if (c == EOF) return True; - ungetc ( c, f ); - return False; -} - - -/*---------------------------------------------------*/ -BZFILE* BZ_API(BZ2_bzWriteOpen) - ( int* bzerror, - FILE* f, - int blockSize100k, - int verbosity, - int workFactor ) -{ - Int32 ret; - bzFile* bzf = NULL; - - BZ_SETERR(BZ_OK); - - if (f == NULL || - (blockSize100k < 1 || blockSize100k > 9) || - (workFactor < 0 || workFactor > 250) || - (verbosity < 0 || verbosity > 4)) - { BZ_SETERR(BZ_PARAM_ERROR); return NULL; }; - - if (ferror(f)) - { BZ_SETERR(BZ_IO_ERROR); return NULL; }; - - bzf = malloc ( sizeof(bzFile) ); - if (bzf == NULL) - { BZ_SETERR(BZ_MEM_ERROR); return NULL; }; - - BZ_SETERR(BZ_OK); - bzf->initialisedOk = False; - bzf->bufN = 0; - bzf->handle = f; - bzf->writing = True; - bzf->strm.bzalloc = NULL; - bzf->strm.bzfree = NULL; - bzf->strm.opaque = NULL; - - if (workFactor == 0) workFactor = 30; - ret = BZ2_bzCompressInit ( &(bzf->strm), blockSize100k, - verbosity, workFactor ); - if (ret != BZ_OK) - { BZ_SETERR(ret); free(bzf); return NULL; }; - - bzf->strm.avail_in = 0; - bzf->initialisedOk = True; - return bzf; -} - - - -/*---------------------------------------------------*/ -void BZ_API(BZ2_bzWrite) - ( int* bzerror, - BZFILE* b, - void* buf, - int len ) -{ - Int32 n, n2, ret; - bzFile* bzf = (bzFile*)b; - - BZ_SETERR(BZ_OK); - if (bzf == NULL || buf == NULL || len < 0) - { BZ_SETERR(BZ_PARAM_ERROR); return; }; - if (!(bzf->writing)) - { BZ_SETERR(BZ_SEQUENCE_ERROR); return; }; - if (ferror(bzf->handle)) - { BZ_SETERR(BZ_IO_ERROR); return; }; - - if (len == 0) - { BZ_SETERR(BZ_OK); return; }; - - bzf->strm.avail_in = len; - bzf->strm.next_in = buf; - - while (True) { - bzf->strm.avail_out = BZ_MAX_UNUSED; - bzf->strm.next_out = bzf->buf; - ret = BZ2_bzCompress ( &(bzf->strm), BZ_RUN ); - if (ret != BZ_RUN_OK) - { BZ_SETERR(ret); return; }; - - if (bzf->strm.avail_out < BZ_MAX_UNUSED) { - n = BZ_MAX_UNUSED - bzf->strm.avail_out; - n2 = fwrite ( (void*)(bzf->buf), sizeof(UChar), - n, bzf->handle ); - if (n != n2 || ferror(bzf->handle)) - { BZ_SETERR(BZ_IO_ERROR); return; }; - } - - if (bzf->strm.avail_in == 0) - { BZ_SETERR(BZ_OK); return; }; - } -} - - -/*---------------------------------------------------*/ -void BZ_API(BZ2_bzWriteClose) - ( int* bzerror, - BZFILE* b, - int abandon, - unsigned int* nbytes_in, - unsigned int* nbytes_out ) -{ - BZ2_bzWriteClose64 ( bzerror, b, abandon, - nbytes_in, NULL, nbytes_out, NULL ); -} - - -void BZ_API(BZ2_bzWriteClose64) - ( int* bzerror, - BZFILE* b, - int abandon, - unsigned int* nbytes_in_lo32, - unsigned int* nbytes_in_hi32, - unsigned int* nbytes_out_lo32, - unsigned int* nbytes_out_hi32 ) -{ - Int32 n, n2, ret; - bzFile* bzf = (bzFile*)b; - - if (bzf == NULL) - { BZ_SETERR(BZ_OK); return; }; - if (!(bzf->writing)) - { BZ_SETERR(BZ_SEQUENCE_ERROR); return; }; - if (ferror(bzf->handle)) - { BZ_SETERR(BZ_IO_ERROR); return; }; - - if (nbytes_in_lo32 != NULL) *nbytes_in_lo32 = 0; - if (nbytes_in_hi32 != NULL) *nbytes_in_hi32 = 0; - if (nbytes_out_lo32 != NULL) *nbytes_out_lo32 = 0; - if (nbytes_out_hi32 != NULL) *nbytes_out_hi32 = 0; - - if ((!abandon) && bzf->lastErr == BZ_OK) { - while (True) { - bzf->strm.avail_out = BZ_MAX_UNUSED; - bzf->strm.next_out = bzf->buf; - ret = BZ2_bzCompress ( &(bzf->strm), BZ_FINISH ); - if (ret != BZ_FINISH_OK && ret != BZ_STREAM_END) - { BZ_SETERR(ret); return; }; - - if (bzf->strm.avail_out < BZ_MAX_UNUSED) { - n = BZ_MAX_UNUSED - bzf->strm.avail_out; - n2 = fwrite ( (void*)(bzf->buf), sizeof(UChar), - n, bzf->handle ); - if (n != n2 || ferror(bzf->handle)) - { BZ_SETERR(BZ_IO_ERROR); return; }; - } - - if (ret == BZ_STREAM_END) break; - } - } - - if ( !abandon && !ferror ( bzf->handle ) ) { - fflush ( bzf->handle ); - if (ferror(bzf->handle)) - { BZ_SETERR(BZ_IO_ERROR); return; }; - } - - if (nbytes_in_lo32 != NULL) - *nbytes_in_lo32 = bzf->strm.total_in_lo32; - if (nbytes_in_hi32 != NULL) - *nbytes_in_hi32 = bzf->strm.total_in_hi32; - if (nbytes_out_lo32 != NULL) - *nbytes_out_lo32 = bzf->strm.total_out_lo32; - if (nbytes_out_hi32 != NULL) - *nbytes_out_hi32 = bzf->strm.total_out_hi32; - - BZ_SETERR(BZ_OK); - BZ2_bzCompressEnd ( &(bzf->strm) ); - free ( bzf ); -} - - -/*---------------------------------------------------*/ -BZFILE* BZ_API(BZ2_bzReadOpen) - ( int* bzerror, - FILE* f, - int verbosity, - int small, - void* unused, - int nUnused ) -{ - bzFile* bzf = NULL; - int ret; - - BZ_SETERR(BZ_OK); - - if (f == NULL || - (small != 0 && small != 1) || - (verbosity < 0 || verbosity > 4) || - (unused == NULL && nUnused != 0) || - (unused != NULL && (nUnused < 0 || nUnused > BZ_MAX_UNUSED))) - { BZ_SETERR(BZ_PARAM_ERROR); return NULL; }; - - if (ferror(f)) - { BZ_SETERR(BZ_IO_ERROR); return NULL; }; - - bzf = malloc ( sizeof(bzFile) ); - if (bzf == NULL) - { BZ_SETERR(BZ_MEM_ERROR); return NULL; }; - - BZ_SETERR(BZ_OK); - - bzf->initialisedOk = False; - bzf->handle = f; - bzf->bufN = 0; - bzf->writing = False; - bzf->strm.bzalloc = NULL; - bzf->strm.bzfree = NULL; - bzf->strm.opaque = NULL; - - while (nUnused > 0) { - bzf->buf[bzf->bufN] = *((UChar*)(unused)); bzf->bufN++; - unused = ((void*)( 1 + ((UChar*)(unused)) )); - nUnused--; - } - - ret = BZ2_bzDecompressInit ( &(bzf->strm), verbosity, small ); - if (ret != BZ_OK) - { BZ_SETERR(ret); free(bzf); return NULL; }; - - bzf->strm.avail_in = bzf->bufN; - bzf->strm.next_in = bzf->buf; - - bzf->initialisedOk = True; - return bzf; -} - - -/*---------------------------------------------------*/ -void BZ_API(BZ2_bzReadClose) ( int *bzerror, BZFILE *b ) -{ - bzFile* bzf = (bzFile*)b; - - BZ_SETERR(BZ_OK); - if (bzf == NULL) - { BZ_SETERR(BZ_OK); return; }; - - if (bzf->writing) - { BZ_SETERR(BZ_SEQUENCE_ERROR); return; }; - - if (bzf->initialisedOk) - (void)BZ2_bzDecompressEnd ( &(bzf->strm) ); - free ( bzf ); -} - - -/*---------------------------------------------------*/ -int BZ_API(BZ2_bzRead) - ( int* bzerror, - BZFILE* b, - void* buf, - int len ) -{ - Int32 n, ret; - bzFile* bzf = (bzFile*)b; - - BZ_SETERR(BZ_OK); - - if (bzf == NULL || buf == NULL || len < 0) - { BZ_SETERR(BZ_PARAM_ERROR); return 0; }; - - if (bzf->writing) - { BZ_SETERR(BZ_SEQUENCE_ERROR); return 0; }; - - if (len == 0) - { BZ_SETERR(BZ_OK); return 0; }; - - bzf->strm.avail_out = len; - bzf->strm.next_out = buf; - - while (True) { - - if (ferror(bzf->handle)) - { BZ_SETERR(BZ_IO_ERROR); return 0; }; - - if (bzf->strm.avail_in == 0 && !myfeof(bzf->handle)) { - n = fread ( bzf->buf, sizeof(UChar), - BZ_MAX_UNUSED, bzf->handle ); - if (ferror(bzf->handle)) - { BZ_SETERR(BZ_IO_ERROR); return 0; }; - bzf->bufN = n; - bzf->strm.avail_in = bzf->bufN; - bzf->strm.next_in = bzf->buf; - } - - ret = BZ2_bzDecompress ( &(bzf->strm) ); - - if (ret != BZ_OK && ret != BZ_STREAM_END) - { BZ_SETERR(ret); return 0; }; - - if (ret == BZ_OK && myfeof(bzf->handle) && - bzf->strm.avail_in == 0 && bzf->strm.avail_out > 0) - { BZ_SETERR(BZ_UNEXPECTED_EOF); return 0; }; - - if (ret == BZ_STREAM_END) - { BZ_SETERR(BZ_STREAM_END); - return len - bzf->strm.avail_out; }; - if (bzf->strm.avail_out == 0) - { BZ_SETERR(BZ_OK); return len; }; - - } - - return 0; /*not reached*/ -} - - -/*---------------------------------------------------*/ -void BZ_API(BZ2_bzReadGetUnused) - ( int* bzerror, - BZFILE* b, - void** unused, - int* nUnused ) -{ - bzFile* bzf = (bzFile*)b; - if (bzf == NULL) - { BZ_SETERR(BZ_PARAM_ERROR); return; }; - if (bzf->lastErr != BZ_STREAM_END) - { BZ_SETERR(BZ_SEQUENCE_ERROR); return; }; - if (unused == NULL || nUnused == NULL) - { BZ_SETERR(BZ_PARAM_ERROR); return; }; - - BZ_SETERR(BZ_OK); - *nUnused = bzf->strm.avail_in; - *unused = bzf->strm.next_in; -} -#endif - - -/*---------------------------------------------------*/ -/*--- Misc convenience stuff ---*/ -/*---------------------------------------------------*/ - -/*---------------------------------------------------*/ -int BZ_API(BZ2_bzBuffToBuffCompress) - ( char* dest, - unsigned int* destLen, - char* source, - unsigned int sourceLen, - int blockSize100k, - int verbosity, - int workFactor ) -{ - bz_stream strm; - int ret; - - if (dest == NULL || destLen == NULL || - source == NULL || - blockSize100k < 1 || blockSize100k > 9 || - verbosity < 0 || verbosity > 4 || - workFactor < 0 || workFactor > 250) - return BZ_PARAM_ERROR; - - if (workFactor == 0) workFactor = 30; - strm.bzalloc = NULL; - strm.bzfree = NULL; - strm.opaque = NULL; - ret = BZ2_bzCompressInit ( &strm, blockSize100k, - verbosity, workFactor ); - if (ret != BZ_OK) return ret; - - strm.next_in = source; - strm.next_out = dest; - strm.avail_in = sourceLen; - strm.avail_out = *destLen; - - ret = BZ2_bzCompress ( &strm, BZ_FINISH ); - if (ret == BZ_FINISH_OK) goto output_overflow; - if (ret != BZ_STREAM_END) goto errhandler; - - /* normal termination */ - *destLen -= strm.avail_out; - BZ2_bzCompressEnd ( &strm ); - return BZ_OK; - - output_overflow: - BZ2_bzCompressEnd ( &strm ); - return BZ_OUTBUFF_FULL; - - errhandler: - BZ2_bzCompressEnd ( &strm ); - return ret; -} - - -/*---------------------------------------------------*/ -int BZ_API(BZ2_bzBuffToBuffDecompress) - ( char* dest, - unsigned int* destLen, - char* source, - unsigned int sourceLen, - int small, - int verbosity ) -{ - bz_stream strm; - int ret; - - if (dest == NULL || destLen == NULL || - source == NULL || - (small != 0 && small != 1) || - verbosity < 0 || verbosity > 4) - return BZ_PARAM_ERROR; - - strm.bzalloc = NULL; - strm.bzfree = NULL; - strm.opaque = NULL; - ret = BZ2_bzDecompressInit ( &strm, verbosity, small ); - if (ret != BZ_OK) return ret; - - strm.next_in = source; - strm.next_out = dest; - strm.avail_in = sourceLen; - strm.avail_out = *destLen; - - ret = BZ2_bzDecompress ( &strm ); - if (ret == BZ_OK) goto output_overflow_or_eof; - if (ret != BZ_STREAM_END) goto errhandler; - - /* normal termination */ - *destLen -= strm.avail_out; - BZ2_bzDecompressEnd ( &strm ); - return BZ_OK; - - output_overflow_or_eof: - if (strm.avail_out > 0) { - BZ2_bzDecompressEnd ( &strm ); - return BZ_UNEXPECTED_EOF; - } else { - BZ2_bzDecompressEnd ( &strm ); - return BZ_OUTBUFF_FULL; - }; - - errhandler: - BZ2_bzDecompressEnd ( &strm ); - return ret; -} - - -/*---------------------------------------------------*/ -/*-- - Code contributed by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp) - to support better zlib compatibility. - This code is not _officially_ part of libbzip2 (yet); - I haven't tested it, documented it, or considered the - threading-safeness of it. - If this code breaks, please contact both Yoshioka and me. ---*/ -/*---------------------------------------------------*/ - -/*---------------------------------------------------*/ -/*-- - return version like "0.9.5d, 4-Sept-1999". ---*/ -const char * BZ_API(BZ2_bzlibVersion)(void) -{ - return BZ_VERSION; -} - - -#ifndef BZ_NO_STDIO -/*---------------------------------------------------*/ - -#if defined(_WIN32) || defined(OS2) || defined(MSDOS) -# include -# include -# define SET_BINARY_MODE(file) setmode(fileno(file),O_BINARY) -#else -# define SET_BINARY_MODE(file) -#endif -static -BZFILE * bzopen_or_bzdopen - ( const char *path, /* no use when bzdopen */ - int fd, /* no use when bzdopen */ - const char *mode, - int open_mode) /* bzopen: 0, bzdopen:1 */ -{ - int bzerr; - char unused[BZ_MAX_UNUSED]; - int blockSize100k = 9; - int writing = 0; - char mode2[10] = ""; - FILE *fp = NULL; - BZFILE *bzfp = NULL; - int verbosity = 0; - int workFactor = 30; - int smallMode = 0; - int nUnused = 0; - - if (mode == NULL) return NULL; - while (*mode) { - switch (*mode) { - case 'r': - writing = 0; break; - case 'w': - writing = 1; break; - case 's': - smallMode = 1; break; - default: - if (isdigit((int)(*mode))) { - blockSize100k = *mode-BZ_HDR_0; - } - } - mode++; - } - strcat(mode2, writing ? "w" : "r" ); - strcat(mode2,"b"); /* binary mode */ - - if (open_mode==0) { - if (path==NULL || strcmp(path,"")==0) { - fp = (writing ? stdout : stdin); - SET_BINARY_MODE(fp); - } else { - fp = fopen(path,mode2); - } - } else { -#ifdef BZ_STRICT_ANSI - fp = NULL; -#else - fp = fdopen(fd,mode2); -#endif - } - if (fp == NULL) return NULL; - - if (writing) { - /* Guard against total chaos and anarchy -- JRS */ - if (blockSize100k < 1) blockSize100k = 1; - if (blockSize100k > 9) blockSize100k = 9; - bzfp = BZ2_bzWriteOpen(&bzerr,fp,blockSize100k, - verbosity,workFactor); - } else { - bzfp = BZ2_bzReadOpen(&bzerr,fp,verbosity,smallMode, - unused,nUnused); - } - if (bzfp == NULL) { - if (fp != stdin && fp != stdout) fclose(fp); - return NULL; - } - return bzfp; -} - - -/*---------------------------------------------------*/ -/*-- - open file for read or write. - ex) bzopen("file","w9") - case path="" or NULL => use stdin or stdout. ---*/ -BZFILE * BZ_API(BZ2_bzopen) - ( const char *path, - const char *mode ) -{ - return bzopen_or_bzdopen(path,-1,mode,/*bzopen*/0); -} - - -/*---------------------------------------------------*/ -BZFILE * BZ_API(BZ2_bzdopen) - ( int fd, - const char *mode ) -{ - return bzopen_or_bzdopen(NULL,fd,mode,/*bzdopen*/1); -} - - -/*---------------------------------------------------*/ -int BZ_API(BZ2_bzread) (BZFILE* b, void* buf, int len ) -{ - int bzerr, nread; - if (((bzFile*)b)->lastErr == BZ_STREAM_END) return 0; - nread = BZ2_bzRead(&bzerr,b,buf,len); - if (bzerr == BZ_OK || bzerr == BZ_STREAM_END) { - return nread; - } else { - return -1; - } -} - - -/*---------------------------------------------------*/ -int BZ_API(BZ2_bzwrite) (BZFILE* b, void* buf, int len ) -{ - int bzerr; - - BZ2_bzWrite(&bzerr,b,buf,len); - if(bzerr == BZ_OK){ - return len; - }else{ - return -1; - } -} - - -/*---------------------------------------------------*/ -int BZ_API(BZ2_bzflush) (BZFILE *b) -{ - /* do nothing now... */ - return 0; -} - - -/*---------------------------------------------------*/ -void BZ_API(BZ2_bzclose) (BZFILE* b) -{ - int bzerr; - FILE *fp; - - if (b==NULL) {return;} - fp = ((bzFile *)b)->handle; - if(((bzFile*)b)->writing){ - BZ2_bzWriteClose(&bzerr,b,0,NULL,NULL); - if(bzerr != BZ_OK){ - BZ2_bzWriteClose(NULL,b,1,NULL,NULL); - } - }else{ - BZ2_bzReadClose(&bzerr,b); - } - if(fp!=stdin && fp!=stdout){ - fclose(fp); - } -} - - -/*---------------------------------------------------*/ -/*-- - return last error code ---*/ -static const char *bzerrorstrings[] = { - "OK" - ,"SEQUENCE_ERROR" - ,"PARAM_ERROR" - ,"MEM_ERROR" - ,"DATA_ERROR" - ,"DATA_ERROR_MAGIC" - ,"IO_ERROR" - ,"UNEXPECTED_EOF" - ,"OUTBUFF_FULL" - ,"CONFIG_ERROR" - ,"???" /* for future */ - ,"???" /* for future */ - ,"???" /* for future */ - ,"???" /* for future */ - ,"???" /* for future */ - ,"???" /* for future */ -}; - - -const char * BZ_API(BZ2_bzerror) (BZFILE *b, int *errnum) -{ - int err = ((bzFile *)b)->lastErr; - - if(err>0) err = 0; - *errnum = err; - return bzerrorstrings[err*-1]; -} -#endif - - -/*-------------------------------------------------------------*/ -/*--- end bzlib.c ---*/ -/*-------------------------------------------------------------*/ diff --git a/plugins/updater/bzip2-1.0.3/bzlib.h b/plugins/updater/bzip2-1.0.3/bzlib.h deleted file mode 100644 index 8277123da8..0000000000 --- a/plugins/updater/bzip2-1.0.3/bzlib.h +++ /dev/null @@ -1,282 +0,0 @@ - -/*-------------------------------------------------------------*/ -/*--- Public header file for the library. ---*/ -/*--- bzlib.h ---*/ -/*-------------------------------------------------------------*/ - -/* ------------------------------------------------------------------ - This file is part of bzip2/libbzip2, a program and library for - lossless, block-sorting data compression. - - bzip2/libbzip2 version 1.0.6 of 6 September 2010 - Copyright (C) 1996-2010 Julian Seward - - Please read the WARNING, DISCLAIMER and PATENTS sections in the - README file. - - This program is released under the terms of the license contained - in the file LICENSE. - ------------------------------------------------------------------ */ - - -#ifndef _BZLIB_H -#define _BZLIB_H - -#ifdef __cplusplus -extern "C" { -#endif - -#define BZ_RUN 0 -#define BZ_FLUSH 1 -#define BZ_FINISH 2 - -#define BZ_OK 0 -#define BZ_RUN_OK 1 -#define BZ_FLUSH_OK 2 -#define BZ_FINISH_OK 3 -#define BZ_STREAM_END 4 -#define BZ_SEQUENCE_ERROR (-1) -#define BZ_PARAM_ERROR (-2) -#define BZ_MEM_ERROR (-3) -#define BZ_DATA_ERROR (-4) -#define BZ_DATA_ERROR_MAGIC (-5) -#define BZ_IO_ERROR (-6) -#define BZ_UNEXPECTED_EOF (-7) -#define BZ_OUTBUFF_FULL (-8) -#define BZ_CONFIG_ERROR (-9) - -typedef - struct { - char *next_in; - unsigned int avail_in; - unsigned int total_in_lo32; - unsigned int total_in_hi32; - - char *next_out; - unsigned int avail_out; - unsigned int total_out_lo32; - unsigned int total_out_hi32; - - void *state; - - void *(*bzalloc)(void *,int,int); - void (*bzfree)(void *,void *); - void *opaque; - } - bz_stream; - - -#ifndef BZ_IMPORT -#define BZ_EXPORT -#endif - -#ifndef BZ_NO_STDIO -/* Need a definitition for FILE */ -#include -#endif - -#ifdef _WIN32 -# include -# ifdef small - /* windows.h define small to char */ -# undef small -# endif -# ifdef BZ_EXPORT -# define BZ_API(func) WINAPI func -# define BZ_EXTERN extern -# else - /* import windows dll dynamically */ -# define BZ_API(func) (WINAPI * func) -# define BZ_EXTERN -# endif -#else -# define BZ_API(func) func -# define BZ_EXTERN extern -#endif - - -/*-- Core (low-level) library functions --*/ - -BZ_EXTERN int BZ_API(BZ2_bzCompressInit) ( - bz_stream* strm, - int blockSize100k, - int verbosity, - int workFactor - ); - -BZ_EXTERN int BZ_API(BZ2_bzCompress) ( - bz_stream* strm, - int action - ); - -BZ_EXTERN int BZ_API(BZ2_bzCompressEnd) ( - bz_stream* strm - ); - -BZ_EXTERN int BZ_API(BZ2_bzDecompressInit) ( - bz_stream *strm, - int verbosity, - int small - ); - -BZ_EXTERN int BZ_API(BZ2_bzDecompress) ( - bz_stream* strm - ); - -BZ_EXTERN int BZ_API(BZ2_bzDecompressEnd) ( - bz_stream *strm - ); - - - -/*-- High(er) level library functions --*/ - -#ifndef BZ_NO_STDIO -#define BZ_MAX_UNUSED 5000 - -typedef void BZFILE; - -BZ_EXTERN BZFILE* BZ_API(BZ2_bzReadOpen) ( - int* bzerror, - FILE* f, - int verbosity, - int small, - void* unused, - int nUnused - ); - -BZ_EXTERN void BZ_API(BZ2_bzReadClose) ( - int* bzerror, - BZFILE* b - ); - -BZ_EXTERN void BZ_API(BZ2_bzReadGetUnused) ( - int* bzerror, - BZFILE* b, - void** unused, - int* nUnused - ); - -BZ_EXTERN int BZ_API(BZ2_bzRead) ( - int* bzerror, - BZFILE* b, - void* buf, - int len - ); - -BZ_EXTERN BZFILE* BZ_API(BZ2_bzWriteOpen) ( - int* bzerror, - FILE* f, - int blockSize100k, - int verbosity, - int workFactor - ); - -BZ_EXTERN void BZ_API(BZ2_bzWrite) ( - int* bzerror, - BZFILE* b, - void* buf, - int len - ); - -BZ_EXTERN void BZ_API(BZ2_bzWriteClose) ( - int* bzerror, - BZFILE* b, - int abandon, - unsigned int* nbytes_in, - unsigned int* nbytes_out - ); - -BZ_EXTERN void BZ_API(BZ2_bzWriteClose64) ( - int* bzerror, - BZFILE* b, - int abandon, - unsigned int* nbytes_in_lo32, - unsigned int* nbytes_in_hi32, - unsigned int* nbytes_out_lo32, - unsigned int* nbytes_out_hi32 - ); -#endif - - -/*-- Utility functions --*/ - -BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffCompress) ( - char* dest, - unsigned int* destLen, - char* source, - unsigned int sourceLen, - int blockSize100k, - int verbosity, - int workFactor - ); - -BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffDecompress) ( - char* dest, - unsigned int* destLen, - char* source, - unsigned int sourceLen, - int small, - int verbosity - ); - - -/*-- - Code contributed by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp) - to support better zlib compatibility. - This code is not _officially_ part of libbzip2 (yet); - I haven't tested it, documented it, or considered the - threading-safeness of it. - If this code breaks, please contact both Yoshioka and me. ---*/ - -BZ_EXTERN const char * BZ_API(BZ2_bzlibVersion) ( - void - ); - -#ifndef BZ_NO_STDIO -BZ_EXTERN BZFILE * BZ_API(BZ2_bzopen) ( - const char *path, - const char *mode - ); - -BZ_EXTERN BZFILE * BZ_API(BZ2_bzdopen) ( - int fd, - const char *mode - ); - -BZ_EXTERN int BZ_API(BZ2_bzread) ( - BZFILE* b, - void* buf, - int len - ); - -BZ_EXTERN int BZ_API(BZ2_bzwrite) ( - BZFILE* b, - void* buf, - int len - ); - -BZ_EXTERN int BZ_API(BZ2_bzflush) ( - BZFILE* b - ); - -BZ_EXTERN void BZ_API(BZ2_bzclose) ( - BZFILE* b - ); - -BZ_EXTERN const char * BZ_API(BZ2_bzerror) ( - BZFILE *b, - int *errnum - ); -#endif - -#ifdef __cplusplus -} -#endif - -#endif - -/*-------------------------------------------------------------*/ -/*--- end bzlib.h ---*/ -/*-------------------------------------------------------------*/ diff --git a/plugins/updater/bzip2-1.0.3/bzlib_private.h b/plugins/updater/bzip2-1.0.3/bzlib_private.h deleted file mode 100644 index 5d0217f463..0000000000 --- a/plugins/updater/bzip2-1.0.3/bzlib_private.h +++ /dev/null @@ -1,509 +0,0 @@ - -/*-------------------------------------------------------------*/ -/*--- Private header file for the library. ---*/ -/*--- bzlib_private.h ---*/ -/*-------------------------------------------------------------*/ - -/* ------------------------------------------------------------------ - This file is part of bzip2/libbzip2, a program and library for - lossless, block-sorting data compression. - - bzip2/libbzip2 version 1.0.6 of 6 September 2010 - Copyright (C) 1996-2010 Julian Seward - - Please read the WARNING, DISCLAIMER and PATENTS sections in the - README file. - - This program is released under the terms of the license contained - in the file LICENSE. - ------------------------------------------------------------------ */ - - -#ifndef _BZLIB_PRIVATE_H -#define _BZLIB_PRIVATE_H - -#include - -#ifndef BZ_NO_STDIO -#include -#include -#include -#endif - -#include "bzlib.h" - - - -/*-- General stuff. --*/ - -#define BZ_VERSION "1.0.6, 6-Sept-2010" - -typedef char Char; -typedef unsigned char Bool; -typedef unsigned char UChar; -typedef int Int32; -typedef unsigned int UInt32; -typedef short Int16; -typedef unsigned short UInt16; - -#define True ((Bool)1) -#define False ((Bool)0) - -#ifndef __GNUC__ -#define __inline__ /* */ -#endif - -#ifndef BZ_NO_STDIO - -extern void BZ2_bz__AssertH__fail ( int errcode ); -#define AssertH(cond,errcode) \ - { if (!(cond)) BZ2_bz__AssertH__fail ( errcode ); } - -#if BZ_DEBUG -#define AssertD(cond,msg) \ - { if (!(cond)) { \ - fprintf ( stderr, \ - "\n\nlibbzip2(debug build): internal error\n\t%s\n", msg );\ - exit(1); \ - }} -#else -#define AssertD(cond,msg) /* */ -#endif - -#define VPrintf0(zf) \ - fprintf(stderr,zf) -#define VPrintf1(zf,za1) \ - fprintf(stderr,zf,za1) -#define VPrintf2(zf,za1,za2) \ - fprintf(stderr,zf,za1,za2) -#define VPrintf3(zf,za1,za2,za3) \ - fprintf(stderr,zf,za1,za2,za3) -#define VPrintf4(zf,za1,za2,za3,za4) \ - fprintf(stderr,zf,za1,za2,za3,za4) -#define VPrintf5(zf,za1,za2,za3,za4,za5) \ - fprintf(stderr,zf,za1,za2,za3,za4,za5) - -#else - -extern void bz_internal_error ( int errcode ); -#define AssertH(cond,errcode) \ - { if (!(cond)) bz_internal_error ( errcode ); } -#define AssertD(cond,msg) do { } while (0) -#define VPrintf0(zf) do { } while (0) -#define VPrintf1(zf,za1) do { } while (0) -#define VPrintf2(zf,za1,za2) do { } while (0) -#define VPrintf3(zf,za1,za2,za3) do { } while (0) -#define VPrintf4(zf,za1,za2,za3,za4) do { } while (0) -#define VPrintf5(zf,za1,za2,za3,za4,za5) do { } while (0) - -#endif - - -#define BZALLOC(nnn) (strm->bzalloc)(strm->opaque,(nnn),1) -#define BZFREE(ppp) (strm->bzfree)(strm->opaque,(ppp)) - - -/*-- Header bytes. --*/ - -#define BZ_HDR_B 0x42 /* 'B' */ -#define BZ_HDR_Z 0x5a /* 'Z' */ -#define BZ_HDR_h 0x68 /* 'h' */ -#define BZ_HDR_0 0x30 /* '0' */ - -/*-- Constants for the back end. --*/ - -#define BZ_MAX_ALPHA_SIZE 258 -#define BZ_MAX_CODE_LEN 23 - -#define BZ_RUNA 0 -#define BZ_RUNB 1 - -#define BZ_N_GROUPS 6 -#define BZ_G_SIZE 50 -#define BZ_N_ITERS 4 - -#define BZ_MAX_SELECTORS (2 + (900000 / BZ_G_SIZE)) - - - -/*-- Stuff for randomising repetitive blocks. --*/ - -extern Int32 BZ2_rNums[512]; - -#define BZ_RAND_DECLS \ - Int32 rNToGo; \ - Int32 rTPos \ - -#define BZ_RAND_INIT_MASK \ - s->rNToGo = 0; \ - s->rTPos = 0 \ - -#define BZ_RAND_MASK ((s->rNToGo == 1) ? 1 : 0) - -#define BZ_RAND_UPD_MASK \ - if (s->rNToGo == 0) { \ - s->rNToGo = BZ2_rNums[s->rTPos]; \ - s->rTPos++; \ - if (s->rTPos == 512) s->rTPos = 0; \ - } \ - s->rNToGo--; - - - -/*-- Stuff for doing CRCs. --*/ - -extern UInt32 BZ2_crc32Table[256]; - -#define BZ_INITIALISE_CRC(crcVar) \ -{ \ - crcVar = 0xffffffffL; \ -} - -#define BZ_FINALISE_CRC(crcVar) \ -{ \ - crcVar = ~(crcVar); \ -} - -#define BZ_UPDATE_CRC(crcVar,cha) \ -{ \ - crcVar = (crcVar << 8) ^ \ - BZ2_crc32Table[(crcVar >> 24) ^ \ - ((UChar)cha)]; \ -} - - - -/*-- States and modes for compression. --*/ - -#define BZ_M_IDLE 1 -#define BZ_M_RUNNING 2 -#define BZ_M_FLUSHING 3 -#define BZ_M_FINISHING 4 - -#define BZ_S_OUTPUT 1 -#define BZ_S_INPUT 2 - -#define BZ_N_RADIX 2 -#define BZ_N_QSORT 12 -#define BZ_N_SHELL 18 -#define BZ_N_OVERSHOOT (BZ_N_RADIX + BZ_N_QSORT + BZ_N_SHELL + 2) - - - - -/*-- Structure holding all the compression-side stuff. --*/ - -typedef - struct { - /* pointer back to the struct bz_stream */ - bz_stream* strm; - - /* mode this stream is in, and whether inputting */ - /* or outputting data */ - Int32 mode; - Int32 state; - - /* remembers avail_in when flush/finish requested */ - UInt32 avail_in_expect; - - /* for doing the block sorting */ - UInt32* arr1; - UInt32* arr2; - UInt32* ftab; - Int32 origPtr; - - /* aliases for arr1 and arr2 */ - UInt32* ptr; - UChar* block; - UInt16* mtfv; - UChar* zbits; - - /* for deciding when to use the fallback sorting algorithm */ - Int32 workFactor; - - /* run-length-encoding of the input */ - UInt32 state_in_ch; - Int32 state_in_len; - BZ_RAND_DECLS; - - /* input and output limits and current posns */ - Int32 nblock; - Int32 nblockMAX; - Int32 numZ; - Int32 state_out_pos; - - /* map of bytes used in block */ - Int32 nInUse; - Bool inUse[256]; - UChar unseqToSeq[256]; - - /* the buffer for bit stream creation */ - UInt32 bsBuff; - Int32 bsLive; - - /* block and combined CRCs */ - UInt32 blockCRC; - UInt32 combinedCRC; - - /* misc administratium */ - Int32 verbosity; - Int32 blockNo; - Int32 blockSize100k; - - /* stuff for coding the MTF values */ - Int32 nMTF; - Int32 mtfFreq [BZ_MAX_ALPHA_SIZE]; - UChar selector [BZ_MAX_SELECTORS]; - UChar selectorMtf[BZ_MAX_SELECTORS]; - - UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - Int32 code [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - Int32 rfreq [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - /* second dimension: only 3 needed; 4 makes index calculations faster */ - UInt32 len_pack[BZ_MAX_ALPHA_SIZE][4]; - - } - EState; - - - -/*-- externs for compression. --*/ - -extern void -BZ2_blockSort ( EState* ); - -extern void -BZ2_compressBlock ( EState*, Bool ); - -extern void -BZ2_bsInitWrite ( EState* ); - -extern void -BZ2_hbAssignCodes ( Int32*, UChar*, Int32, Int32, Int32 ); - -extern void -BZ2_hbMakeCodeLengths ( UChar*, Int32*, Int32, Int32 ); - - - -/*-- states for decompression. --*/ - -#define BZ_X_IDLE 1 -#define BZ_X_OUTPUT 2 - -#define BZ_X_MAGIC_1 10 -#define BZ_X_MAGIC_2 11 -#define BZ_X_MAGIC_3 12 -#define BZ_X_MAGIC_4 13 -#define BZ_X_BLKHDR_1 14 -#define BZ_X_BLKHDR_2 15 -#define BZ_X_BLKHDR_3 16 -#define BZ_X_BLKHDR_4 17 -#define BZ_X_BLKHDR_5 18 -#define BZ_X_BLKHDR_6 19 -#define BZ_X_BCRC_1 20 -#define BZ_X_BCRC_2 21 -#define BZ_X_BCRC_3 22 -#define BZ_X_BCRC_4 23 -#define BZ_X_RANDBIT 24 -#define BZ_X_ORIGPTR_1 25 -#define BZ_X_ORIGPTR_2 26 -#define BZ_X_ORIGPTR_3 27 -#define BZ_X_MAPPING_1 28 -#define BZ_X_MAPPING_2 29 -#define BZ_X_SELECTOR_1 30 -#define BZ_X_SELECTOR_2 31 -#define BZ_X_SELECTOR_3 32 -#define BZ_X_CODING_1 33 -#define BZ_X_CODING_2 34 -#define BZ_X_CODING_3 35 -#define BZ_X_MTF_1 36 -#define BZ_X_MTF_2 37 -#define BZ_X_MTF_3 38 -#define BZ_X_MTF_4 39 -#define BZ_X_MTF_5 40 -#define BZ_X_MTF_6 41 -#define BZ_X_ENDHDR_2 42 -#define BZ_X_ENDHDR_3 43 -#define BZ_X_ENDHDR_4 44 -#define BZ_X_ENDHDR_5 45 -#define BZ_X_ENDHDR_6 46 -#define BZ_X_CCRC_1 47 -#define BZ_X_CCRC_2 48 -#define BZ_X_CCRC_3 49 -#define BZ_X_CCRC_4 50 - - - -/*-- Constants for the fast MTF decoder. --*/ - -#define MTFA_SIZE 4096 -#define MTFL_SIZE 16 - - - -/*-- Structure holding all the decompression-side stuff. --*/ - -typedef - struct { - /* pointer back to the struct bz_stream */ - bz_stream* strm; - - /* state indicator for this stream */ - Int32 state; - - /* for doing the final run-length decoding */ - UChar state_out_ch; - Int32 state_out_len; - Bool blockRandomised; - BZ_RAND_DECLS; - - /* the buffer for bit stream reading */ - UInt32 bsBuff; - Int32 bsLive; - - /* misc administratium */ - Int32 blockSize100k; - Bool smallDecompress; - Int32 currBlockNo; - Int32 verbosity; - - /* for undoing the Burrows-Wheeler transform */ - Int32 origPtr; - UInt32 tPos; - Int32 k0; - Int32 unzftab[256]; - Int32 nblock_used; - Int32 cftab[257]; - Int32 cftabCopy[257]; - - /* for undoing the Burrows-Wheeler transform (FAST) */ - UInt32 *tt; - - /* for undoing the Burrows-Wheeler transform (SMALL) */ - UInt16 *ll16; - UChar *ll4; - - /* stored and calculated CRCs */ - UInt32 storedBlockCRC; - UInt32 storedCombinedCRC; - UInt32 calculatedBlockCRC; - UInt32 calculatedCombinedCRC; - - /* map of bytes used in block */ - Int32 nInUse; - Bool inUse[256]; - Bool inUse16[16]; - UChar seqToUnseq[256]; - - /* for decoding the MTF values */ - UChar mtfa [MTFA_SIZE]; - Int32 mtfbase[256 / MTFL_SIZE]; - UChar selector [BZ_MAX_SELECTORS]; - UChar selectorMtf[BZ_MAX_SELECTORS]; - UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - - Int32 limit [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - Int32 base [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - Int32 perm [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - Int32 minLens[BZ_N_GROUPS]; - - /* save area for scalars in the main decompress code */ - Int32 save_i; - Int32 save_j; - Int32 save_t; - Int32 save_alphaSize; - Int32 save_nGroups; - Int32 save_nSelectors; - Int32 save_EOB; - Int32 save_groupNo; - Int32 save_groupPos; - Int32 save_nextSym; - Int32 save_nblockMAX; - Int32 save_nblock; - Int32 save_es; - Int32 save_N; - Int32 save_curr; - Int32 save_zt; - Int32 save_zn; - Int32 save_zvec; - Int32 save_zj; - Int32 save_gSel; - Int32 save_gMinlen; - Int32* save_gLimit; - Int32* save_gBase; - Int32* save_gPerm; - - } - DState; - - - -/*-- Macros for decompression. --*/ - -#define BZ_GET_FAST(cccc) \ - /* c_tPos is unsigned, hence test < 0 is pointless. */ \ - if (s->tPos >= (UInt32)100000 * (UInt32)s->blockSize100k) return True; \ - s->tPos = s->tt[s->tPos]; \ - cccc = (UChar)(s->tPos & 0xff); \ - s->tPos >>= 8; - -#define BZ_GET_FAST_C(cccc) \ - /* c_tPos is unsigned, hence test < 0 is pointless. */ \ - if (c_tPos >= (UInt32)100000 * (UInt32)ro_blockSize100k) return True; \ - c_tPos = c_tt[c_tPos]; \ - cccc = (UChar)(c_tPos & 0xff); \ - c_tPos >>= 8; - -#define SET_LL4(i,n) \ - { if (((i) & 0x1) == 0) \ - s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0xf0) | (n); else \ - s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0x0f) | ((n) << 4); \ - } - -#define GET_LL4(i) \ - ((((UInt32)(s->ll4[(i) >> 1])) >> (((i) << 2) & 0x4)) & 0xF) - -#define SET_LL(i,n) \ - { s->ll16[i] = (UInt16)(n & 0x0000ffff); \ - SET_LL4(i, n >> 16); \ - } - -#define GET_LL(i) \ - (((UInt32)s->ll16[i]) | (GET_LL4(i) << 16)) - -#define BZ_GET_SMALL(cccc) \ - /* c_tPos is unsigned, hence test < 0 is pointless. */ \ - if (s->tPos >= (UInt32)100000 * (UInt32)s->blockSize100k) return True; \ - cccc = BZ2_indexIntoF ( s->tPos, s->cftab ); \ - s->tPos = GET_LL(s->tPos); - - -/*-- externs for decompression. --*/ - -extern Int32 -BZ2_indexIntoF ( Int32, Int32* ); - -extern Int32 -BZ2_decompress ( DState* ); - -extern void -BZ2_hbCreateDecodeTables ( Int32*, Int32*, Int32*, UChar*, - Int32, Int32, Int32 ); - - -#endif - - -/*-- BZ_NO_STDIO seems to make NULL disappear on some platforms. --*/ - -#ifdef BZ_NO_STDIO -#ifndef NULL -#define NULL 0 -#endif -#endif - - -/*-------------------------------------------------------------*/ -/*--- end bzlib_private.h ---*/ -/*-------------------------------------------------------------*/ diff --git a/plugins/updater/bzip2-1.0.3/bzmore b/plugins/updater/bzip2-1.0.3/bzmore deleted file mode 100644 index d314043404..0000000000 --- a/plugins/updater/bzip2-1.0.3/bzmore +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/sh - -# Bzmore wrapped for bzip2, -# adapted from zmore by Philippe Troin for Debian GNU/Linux. - -PATH="/usr/bin:$PATH"; export PATH - -prog=`echo $0 | sed 's|.*/||'` -case "$prog" in - *less) more=less ;; - *) more=more ;; -esac - -if test "`echo -n a`" = "-n a"; then - # looks like a SysV system: - n1=''; n2='\c' -else - n1='-n'; n2='' -fi -oldtty=`stty -g 2>/dev/null` -if stty -cbreak 2>/dev/null; then - cb='cbreak'; ncb='-cbreak' -else - # 'stty min 1' resets eof to ^a on both SunOS and SysV! - cb='min 1 -icanon'; ncb='icanon eof ^d' -fi -if test $? -eq 0 -a -n "$oldtty"; then - trap 'stty $oldtty 2>/dev/null; exit' 0 2 3 5 10 13 15 -else - trap 'stty $ncb echo 2>/dev/null; exit' 0 2 3 5 10 13 15 -fi - -if test $# = 0; then - if test -t 0; then - echo usage: $prog files... - else - bzip2 -cdfq | eval $more - fi -else - FIRST=1 - for FILE - do - if test $FIRST -eq 0; then - echo $n1 "--More--(Next file: $FILE)$n2" - stty $cb -echo 2>/dev/null - ANS=`dd bs=1 count=1 2>/dev/null` - stty $ncb echo 2>/dev/null - echo " " - if test "$ANS" = 'e' -o "$ANS" = 'q'; then - exit - fi - fi - if test "$ANS" != 's'; then - echo "------> $FILE <------" - bzip2 -cdfq "$FILE" | eval $more - fi - if test -t; then - FIRST=0 - fi - done -fi diff --git a/plugins/updater/bzip2-1.0.3/bzmore.1 b/plugins/updater/bzip2-1.0.3/bzmore.1 deleted file mode 100644 index b437d3b031..0000000000 --- a/plugins/updater/bzip2-1.0.3/bzmore.1 +++ /dev/null @@ -1,152 +0,0 @@ -.\"Shamelessly copied from zmore.1 by Philippe Troin -.\"for Debian GNU/Linux -.TH BZMORE 1 -.SH NAME -bzmore, bzless \- file perusal filter for crt viewing of bzip2 compressed text -.SH SYNOPSIS -.B bzmore -[ name ... ] -.br -.B bzless -[ name ... ] -.SH NOTE -In the following description, -.I bzless -and -.I less -can be used interchangeably with -.I bzmore -and -.I more. -.SH DESCRIPTION -.I Bzmore -is a filter which allows examination of compressed or plain text files -one screenful at a time on a soft-copy terminal. -.I bzmore -works on files compressed with -.I bzip2 -and also on uncompressed files. -If a file does not exist, -.I bzmore -looks for a file of the same name with the addition of a .bz2 suffix. -.PP -.I Bzmore -normally pauses after each screenful, printing --More-- -at the bottom of the screen. -If the user then types a carriage return, one more line is displayed. -If the user hits a space, -another screenful is displayed. Other possibilities are enumerated later. -.PP -.I Bzmore -looks in the file -.I /etc/termcap -to determine terminal characteristics, -and to determine the default window size. -On a terminal capable of displaying 24 lines, -the default window size is 22 lines. -Other sequences which may be typed when -.I bzmore -pauses, and their effects, are as follows (\fIi\fP is an optional integer -argument, defaulting to 1) : -.PP -.IP \fIi\|\fP -display -.I i -more lines, (or another screenful if no argument is given) -.PP -.IP ^D -display 11 more lines (a ``scroll''). -If -.I i -is given, then the scroll size is set to \fIi\|\fP. -.PP -.IP d -same as ^D (control-D) -.PP -.IP \fIi\|\fPz -same as typing a space except that \fIi\|\fP, if present, becomes the new -window size. Note that the window size reverts back to the default at the -end of the current file. -.PP -.IP \fIi\|\fPs -skip \fIi\|\fP lines and print a screenful of lines -.PP -.IP \fIi\|\fPf -skip \fIi\fP screenfuls and print a screenful of lines -.PP -.IP "q or Q" -quit reading the current file; go on to the next (if any) -.PP -.IP "e or q" -When the prompt --More--(Next file: -.IR file ) -is printed, this command causes bzmore to exit. -.PP -.IP s -When the prompt --More--(Next file: -.IR file ) -is printed, this command causes bzmore to skip the next file and continue. -.PP -.IP = -Display the current line number. -.PP -.IP \fIi\|\fP/expr -search for the \fIi\|\fP-th occurrence of the regular expression \fIexpr.\fP -If the pattern is not found, -.I bzmore -goes on to the next file (if any). -Otherwise, a screenful is displayed, starting two lines before the place -where the expression was found. -The user's erase and kill characters may be used to edit the regular -expression. -Erasing back past the first column cancels the search command. -.PP -.IP \fIi\|\fPn -search for the \fIi\|\fP-th occurrence of the last regular expression entered. -.PP -.IP !command -invoke a shell with \fIcommand\|\fP. -The character `!' in "command" are replaced with the -previous shell command. The sequence "\\!" is replaced by "!". -.PP -.IP ":q or :Q" -quit reading the current file; go on to the next (if any) -(same as q or Q). -.PP -.IP . -(dot) repeat the previous command. -.PP -The commands take effect immediately, i.e., it is not necessary to -type a carriage return. -Up to the time when the command character itself is given, -the user may hit the line kill character to cancel the numerical -argument being formed. -In addition, the user may hit the erase character to redisplay the ---More-- message. -.PP -At any time when output is being sent to the terminal, the user can -hit the quit key (normally control\-\\). -.I Bzmore -will stop sending output, and will display the usual --More-- -prompt. -The user may then enter one of the above commands in the normal manner. -Unfortunately, some output is lost when this is done, due to the -fact that any characters waiting in the terminal's output queue -are flushed when the quit signal occurs. -.PP -The terminal is set to -.I noecho -mode by this program so that the output can be continuous. -What you type will thus not show on your terminal, except for the / and ! -commands. -.PP -If the standard output is not a teletype, then -.I bzmore -acts just like -.I bzcat, -except that a header is printed before each file. -.SH FILES -.DT -/etc/termcap Terminal data base -.SH "SEE ALSO" -more(1), less(1), bzip2(1), bzdiff(1), bzgrep(1) diff --git a/plugins/updater/bzip2-1.0.3/compress.c b/plugins/updater/bzip2-1.0.3/compress.c deleted file mode 100644 index caf7696011..0000000000 --- a/plugins/updater/bzip2-1.0.3/compress.c +++ /dev/null @@ -1,672 +0,0 @@ - -/*-------------------------------------------------------------*/ -/*--- Compression machinery (not incl block sorting) ---*/ -/*--- compress.c ---*/ -/*-------------------------------------------------------------*/ - -/* ------------------------------------------------------------------ - This file is part of bzip2/libbzip2, a program and library for - lossless, block-sorting data compression. - - bzip2/libbzip2 version 1.0.6 of 6 September 2010 - Copyright (C) 1996-2010 Julian Seward - - Please read the WARNING, DISCLAIMER and PATENTS sections in the - README file. - - This program is released under the terms of the license contained - in the file LICENSE. - ------------------------------------------------------------------ */ - - -/* CHANGES - 0.9.0 -- original version. - 0.9.0a/b -- no changes in this file. - 0.9.0c -- changed setting of nGroups in sendMTFValues() - so as to do a bit better on small files -*/ - -#include "bzlib_private.h" - - -/*---------------------------------------------------*/ -/*--- Bit stream I/O ---*/ -/*---------------------------------------------------*/ - -/*---------------------------------------------------*/ -void BZ2_bsInitWrite ( EState* s ) -{ - s->bsLive = 0; - s->bsBuff = 0; -} - - -/*---------------------------------------------------*/ -static -void bsFinishWrite ( EState* s ) -{ - while (s->bsLive > 0) { - s->zbits[s->numZ] = (UChar)(s->bsBuff >> 24); - s->numZ++; - s->bsBuff <<= 8; - s->bsLive -= 8; - } -} - - -/*---------------------------------------------------*/ -#define bsNEEDW(nz) \ -{ \ - while (s->bsLive >= 8) { \ - s->zbits[s->numZ] \ - = (UChar)(s->bsBuff >> 24); \ - s->numZ++; \ - s->bsBuff <<= 8; \ - s->bsLive -= 8; \ - } \ -} - - -/*---------------------------------------------------*/ -static -__inline__ -void bsW ( EState* s, Int32 n, UInt32 v ) -{ - bsNEEDW ( n ); - s->bsBuff |= (v << (32 - s->bsLive - n)); - s->bsLive += n; -} - - -/*---------------------------------------------------*/ -static -void bsPutUInt32 ( EState* s, UInt32 u ) -{ - bsW ( s, 8, (u >> 24) & 0xffL ); - bsW ( s, 8, (u >> 16) & 0xffL ); - bsW ( s, 8, (u >> 8) & 0xffL ); - bsW ( s, 8, u & 0xffL ); -} - - -/*---------------------------------------------------*/ -static -void bsPutUChar ( EState* s, UChar c ) -{ - bsW( s, 8, (UInt32)c ); -} - - -/*---------------------------------------------------*/ -/*--- The back end proper ---*/ -/*---------------------------------------------------*/ - -/*---------------------------------------------------*/ -static -void makeMaps_e ( EState* s ) -{ - Int32 i; - s->nInUse = 0; - for (i = 0; i < 256; i++) - if (s->inUse[i]) { - s->unseqToSeq[i] = s->nInUse; - s->nInUse++; - } -} - - -/*---------------------------------------------------*/ -static -void generateMTFValues ( EState* s ) -{ - UChar yy[256]; - Int32 i, j; - Int32 zPend; - Int32 wr; - Int32 EOB; - - /* - After sorting (eg, here), - s->arr1 [ 0 .. s->nblock-1 ] holds sorted order, - and - ((UChar*)s->arr2) [ 0 .. s->nblock-1 ] - holds the original block data. - - The first thing to do is generate the MTF values, - and put them in - ((UInt16*)s->arr1) [ 0 .. s->nblock-1 ]. - Because there are strictly fewer or equal MTF values - than block values, ptr values in this area are overwritten - with MTF values only when they are no longer needed. - - The final compressed bitstream is generated into the - area starting at - (UChar*) (&((UChar*)s->arr2)[s->nblock]) - - These storage aliases are set up in bzCompressInit(), - except for the last one, which is arranged in - compressBlock(). - */ - UInt32* ptr = s->ptr; - UChar* block = s->block; - UInt16* mtfv = s->mtfv; - - makeMaps_e ( s ); - EOB = s->nInUse+1; - - for (i = 0; i <= EOB; i++) s->mtfFreq[i] = 0; - - wr = 0; - zPend = 0; - for (i = 0; i < s->nInUse; i++) yy[i] = (UChar) i; - - for (i = 0; i < s->nblock; i++) { - UChar ll_i; - AssertD ( wr <= i, "generateMTFValues(1)" ); - j = ptr[i]-1; if (j < 0) j += s->nblock; - ll_i = s->unseqToSeq[block[j]]; - AssertD ( ll_i < s->nInUse, "generateMTFValues(2a)" ); - - if (yy[0] == ll_i) { - zPend++; - } else { - - if (zPend > 0) { - zPend--; - while (True) { - if (zPend & 1) { - mtfv[wr] = BZ_RUNB; wr++; - s->mtfFreq[BZ_RUNB]++; - } else { - mtfv[wr] = BZ_RUNA; wr++; - s->mtfFreq[BZ_RUNA]++; - } - if (zPend < 2) break; - zPend = (zPend - 2) / 2; - }; - zPend = 0; - } - { - register UChar rtmp; - register UChar* ryy_j; - register UChar rll_i; - rtmp = yy[1]; - yy[1] = yy[0]; - ryy_j = &(yy[1]); - rll_i = ll_i; - while ( rll_i != rtmp ) { - register UChar rtmp2; - ryy_j++; - rtmp2 = rtmp; - rtmp = *ryy_j; - *ryy_j = rtmp2; - }; - yy[0] = rtmp; - j = ryy_j - &(yy[0]); - mtfv[wr] = j+1; wr++; s->mtfFreq[j+1]++; - } - - } - } - - if (zPend > 0) { - zPend--; - while (True) { - if (zPend & 1) { - mtfv[wr] = BZ_RUNB; wr++; - s->mtfFreq[BZ_RUNB]++; - } else { - mtfv[wr] = BZ_RUNA; wr++; - s->mtfFreq[BZ_RUNA]++; - } - if (zPend < 2) break; - zPend = (zPend - 2) / 2; - }; - zPend = 0; - } - - mtfv[wr] = EOB; wr++; s->mtfFreq[EOB]++; - - s->nMTF = wr; -} - - -/*---------------------------------------------------*/ -#define BZ_LESSER_ICOST 0 -#define BZ_GREATER_ICOST 15 - -static -void sendMTFValues ( EState* s ) -{ - Int32 v, t, i, j, gs, ge, totc, bt, bc, iter; - Int32 nSelectors, alphaSize, minLen, maxLen, selCtr; - Int32 nGroups, nBytes; - - /*-- - UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - is a global since the decoder also needs it. - - Int32 code[BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - Int32 rfreq[BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - are also globals only used in this proc. - Made global to keep stack frame size small. - --*/ - - - UInt16 cost[BZ_N_GROUPS]; - Int32 fave[BZ_N_GROUPS]; - - UInt16* mtfv = s->mtfv; - - if (s->verbosity >= 3) - VPrintf3( " %d in block, %d after MTF & 1-2 coding, " - "%d+2 syms in use\n", - s->nblock, s->nMTF, s->nInUse ); - - alphaSize = s->nInUse+2; - for (t = 0; t < BZ_N_GROUPS; t++) - for (v = 0; v < alphaSize; v++) - s->len[t][v] = BZ_GREATER_ICOST; - - /*--- Decide how many coding tables to use ---*/ - AssertH ( s->nMTF > 0, 3001 ); - if (s->nMTF < 200) nGroups = 2; else - if (s->nMTF < 600) nGroups = 3; else - if (s->nMTF < 1200) nGroups = 4; else - if (s->nMTF < 2400) nGroups = 5; else - nGroups = 6; - - /*--- Generate an initial set of coding tables ---*/ - { - Int32 nPart, remF, tFreq, aFreq; - - nPart = nGroups; - remF = s->nMTF; - gs = 0; - while (nPart > 0) { - tFreq = remF / nPart; - ge = gs-1; - aFreq = 0; - while (aFreq < tFreq && ge < alphaSize-1) { - ge++; - aFreq += s->mtfFreq[ge]; - } - - if (ge > gs - && nPart != nGroups && nPart != 1 - && ((nGroups-nPart) % 2 == 1)) { - aFreq -= s->mtfFreq[ge]; - ge--; - } - - if (s->verbosity >= 3) - VPrintf5( " initial group %d, [%d .. %d], " - "has %d syms (%4.1f%%)\n", - nPart, gs, ge, aFreq, - (100.0 * (float)aFreq) / (float)(s->nMTF) ); - - for (v = 0; v < alphaSize; v++) - if (v >= gs && v <= ge) - s->len[nPart-1][v] = BZ_LESSER_ICOST; else - s->len[nPart-1][v] = BZ_GREATER_ICOST; - - nPart--; - gs = ge+1; - remF -= aFreq; - } - } - - /*--- - Iterate up to BZ_N_ITERS times to improve the tables. - ---*/ - for (iter = 0; iter < BZ_N_ITERS; iter++) { - - for (t = 0; t < nGroups; t++) fave[t] = 0; - - for (t = 0; t < nGroups; t++) - for (v = 0; v < alphaSize; v++) - s->rfreq[t][v] = 0; - - /*--- - Set up an auxiliary length table which is used to fast-track - the common case (nGroups == 6). - ---*/ - if (nGroups == 6) { - for (v = 0; v < alphaSize; v++) { - s->len_pack[v][0] = (s->len[1][v] << 16) | s->len[0][v]; - s->len_pack[v][1] = (s->len[3][v] << 16) | s->len[2][v]; - s->len_pack[v][2] = (s->len[5][v] << 16) | s->len[4][v]; - } - } - - nSelectors = 0; - totc = 0; - gs = 0; - while (True) { - - /*--- Set group start & end marks. --*/ - if (gs >= s->nMTF) break; - ge = gs + BZ_G_SIZE - 1; - if (ge >= s->nMTF) ge = s->nMTF-1; - - /*-- - Calculate the cost of this group as coded - by each of the coding tables. - --*/ - for (t = 0; t < nGroups; t++) cost[t] = 0; - - if (nGroups == 6 && 50 == ge-gs+1) { - /*--- fast track the common case ---*/ - register UInt32 cost01, cost23, cost45; - register UInt16 icv; - cost01 = cost23 = cost45 = 0; - -# define BZ_ITER(nn) \ - icv = mtfv[gs+(nn)]; \ - cost01 += s->len_pack[icv][0]; \ - cost23 += s->len_pack[icv][1]; \ - cost45 += s->len_pack[icv][2]; \ - - BZ_ITER(0); BZ_ITER(1); BZ_ITER(2); BZ_ITER(3); BZ_ITER(4); - BZ_ITER(5); BZ_ITER(6); BZ_ITER(7); BZ_ITER(8); BZ_ITER(9); - BZ_ITER(10); BZ_ITER(11); BZ_ITER(12); BZ_ITER(13); BZ_ITER(14); - BZ_ITER(15); BZ_ITER(16); BZ_ITER(17); BZ_ITER(18); BZ_ITER(19); - BZ_ITER(20); BZ_ITER(21); BZ_ITER(22); BZ_ITER(23); BZ_ITER(24); - BZ_ITER(25); BZ_ITER(26); BZ_ITER(27); BZ_ITER(28); BZ_ITER(29); - BZ_ITER(30); BZ_ITER(31); BZ_ITER(32); BZ_ITER(33); BZ_ITER(34); - BZ_ITER(35); BZ_ITER(36); BZ_ITER(37); BZ_ITER(38); BZ_ITER(39); - BZ_ITER(40); BZ_ITER(41); BZ_ITER(42); BZ_ITER(43); BZ_ITER(44); - BZ_ITER(45); BZ_ITER(46); BZ_ITER(47); BZ_ITER(48); BZ_ITER(49); - -# undef BZ_ITER - - cost[0] = cost01 & 0xffff; cost[1] = cost01 >> 16; - cost[2] = cost23 & 0xffff; cost[3] = cost23 >> 16; - cost[4] = cost45 & 0xffff; cost[5] = cost45 >> 16; - - } else { - /*--- slow version which correctly handles all situations ---*/ - for (i = gs; i <= ge; i++) { - UInt16 icv = mtfv[i]; - for (t = 0; t < nGroups; t++) cost[t] += s->len[t][icv]; - } - } - - /*-- - Find the coding table which is best for this group, - and record its identity in the selector table. - --*/ - bc = 999999999; bt = -1; - for (t = 0; t < nGroups; t++) - if (cost[t] < bc) { bc = cost[t]; bt = t; }; - totc += bc; - fave[bt]++; - s->selector[nSelectors] = bt; - nSelectors++; - - /*-- - Increment the symbol frequencies for the selected table. - --*/ - if (nGroups == 6 && 50 == ge-gs+1) { - /*--- fast track the common case ---*/ - -# define BZ_ITUR(nn) s->rfreq[bt][ mtfv[gs+(nn)] ]++ - - BZ_ITUR(0); BZ_ITUR(1); BZ_ITUR(2); BZ_ITUR(3); BZ_ITUR(4); - BZ_ITUR(5); BZ_ITUR(6); BZ_ITUR(7); BZ_ITUR(8); BZ_ITUR(9); - BZ_ITUR(10); BZ_ITUR(11); BZ_ITUR(12); BZ_ITUR(13); BZ_ITUR(14); - BZ_ITUR(15); BZ_ITUR(16); BZ_ITUR(17); BZ_ITUR(18); BZ_ITUR(19); - BZ_ITUR(20); BZ_ITUR(21); BZ_ITUR(22); BZ_ITUR(23); BZ_ITUR(24); - BZ_ITUR(25); BZ_ITUR(26); BZ_ITUR(27); BZ_ITUR(28); BZ_ITUR(29); - BZ_ITUR(30); BZ_ITUR(31); BZ_ITUR(32); BZ_ITUR(33); BZ_ITUR(34); - BZ_ITUR(35); BZ_ITUR(36); BZ_ITUR(37); BZ_ITUR(38); BZ_ITUR(39); - BZ_ITUR(40); BZ_ITUR(41); BZ_ITUR(42); BZ_ITUR(43); BZ_ITUR(44); - BZ_ITUR(45); BZ_ITUR(46); BZ_ITUR(47); BZ_ITUR(48); BZ_ITUR(49); - -# undef BZ_ITUR - - } else { - /*--- slow version which correctly handles all situations ---*/ - for (i = gs; i <= ge; i++) - s->rfreq[bt][ mtfv[i] ]++; - } - - gs = ge+1; - } - if (s->verbosity >= 3) { - VPrintf2 ( " pass %d: size is %d, grp uses are ", - iter+1, totc/8 ); - for (t = 0; t < nGroups; t++) - VPrintf1 ( "%d ", fave[t] ); - VPrintf0 ( "\n" ); - } - - /*-- - Recompute the tables based on the accumulated frequencies. - --*/ - /* maxLen was changed from 20 to 17 in bzip2-1.0.3. See - comment in huffman.c for details. */ - for (t = 0; t < nGroups; t++) - BZ2_hbMakeCodeLengths ( &(s->len[t][0]), &(s->rfreq[t][0]), - alphaSize, 17 /*20*/ ); - } - - - AssertH( nGroups < 8, 3002 ); - AssertH( nSelectors < 32768 && - nSelectors <= (2 + (900000 / BZ_G_SIZE)), - 3003 ); - - - /*--- Compute MTF values for the selectors. ---*/ - { - UChar pos[BZ_N_GROUPS], ll_i, tmp2, tmp; - for (i = 0; i < nGroups; i++) pos[i] = i; - for (i = 0; i < nSelectors; i++) { - ll_i = s->selector[i]; - j = 0; - tmp = pos[j]; - while ( ll_i != tmp ) { - j++; - tmp2 = tmp; - tmp = pos[j]; - pos[j] = tmp2; - }; - pos[0] = tmp; - s->selectorMtf[i] = j; - } - }; - - /*--- Assign actual codes for the tables. --*/ - for (t = 0; t < nGroups; t++) { - minLen = 32; - maxLen = 0; - for (i = 0; i < alphaSize; i++) { - if (s->len[t][i] > maxLen) maxLen = s->len[t][i]; - if (s->len[t][i] < minLen) minLen = s->len[t][i]; - } - AssertH ( !(maxLen > 17 /*20*/ ), 3004 ); - AssertH ( !(minLen < 1), 3005 ); - BZ2_hbAssignCodes ( &(s->code[t][0]), &(s->len[t][0]), - minLen, maxLen, alphaSize ); - } - - /*--- Transmit the mapping table. ---*/ - { - Bool inUse16[16]; - for (i = 0; i < 16; i++) { - inUse16[i] = False; - for (j = 0; j < 16; j++) - if (s->inUse[i * 16 + j]) inUse16[i] = True; - } - - nBytes = s->numZ; - for (i = 0; i < 16; i++) - if (inUse16[i]) bsW(s,1,1); else bsW(s,1,0); - - for (i = 0; i < 16; i++) - if (inUse16[i]) - for (j = 0; j < 16; j++) { - if (s->inUse[i * 16 + j]) bsW(s,1,1); else bsW(s,1,0); - } - - if (s->verbosity >= 3) - VPrintf1( " bytes: mapping %d, ", s->numZ-nBytes ); - } - - /*--- Now the selectors. ---*/ - nBytes = s->numZ; - bsW ( s, 3, nGroups ); - bsW ( s, 15, nSelectors ); - for (i = 0; i < nSelectors; i++) { - for (j = 0; j < s->selectorMtf[i]; j++) bsW(s,1,1); - bsW(s,1,0); - } - if (s->verbosity >= 3) - VPrintf1( "selectors %d, ", s->numZ-nBytes ); - - /*--- Now the coding tables. ---*/ - nBytes = s->numZ; - - for (t = 0; t < nGroups; t++) { - Int32 curr = s->len[t][0]; - bsW ( s, 5, curr ); - for (i = 0; i < alphaSize; i++) { - while (curr < s->len[t][i]) { bsW(s,2,2); curr++; /* 10 */ }; - while (curr > s->len[t][i]) { bsW(s,2,3); curr--; /* 11 */ }; - bsW ( s, 1, 0 ); - } - } - - if (s->verbosity >= 3) - VPrintf1 ( "code lengths %d, ", s->numZ-nBytes ); - - /*--- And finally, the block data proper ---*/ - nBytes = s->numZ; - selCtr = 0; - gs = 0; - while (True) { - if (gs >= s->nMTF) break; - ge = gs + BZ_G_SIZE - 1; - if (ge >= s->nMTF) ge = s->nMTF-1; - AssertH ( s->selector[selCtr] < nGroups, 3006 ); - - if (nGroups == 6 && 50 == ge-gs+1) { - /*--- fast track the common case ---*/ - UInt16 mtfv_i; - UChar* s_len_sel_selCtr - = &(s->len[s->selector[selCtr]][0]); - Int32* s_code_sel_selCtr - = &(s->code[s->selector[selCtr]][0]); - -# define BZ_ITAH(nn) \ - mtfv_i = mtfv[gs+(nn)]; \ - bsW ( s, \ - s_len_sel_selCtr[mtfv_i], \ - s_code_sel_selCtr[mtfv_i] ) - - BZ_ITAH(0); BZ_ITAH(1); BZ_ITAH(2); BZ_ITAH(3); BZ_ITAH(4); - BZ_ITAH(5); BZ_ITAH(6); BZ_ITAH(7); BZ_ITAH(8); BZ_ITAH(9); - BZ_ITAH(10); BZ_ITAH(11); BZ_ITAH(12); BZ_ITAH(13); BZ_ITAH(14); - BZ_ITAH(15); BZ_ITAH(16); BZ_ITAH(17); BZ_ITAH(18); BZ_ITAH(19); - BZ_ITAH(20); BZ_ITAH(21); BZ_ITAH(22); BZ_ITAH(23); BZ_ITAH(24); - BZ_ITAH(25); BZ_ITAH(26); BZ_ITAH(27); BZ_ITAH(28); BZ_ITAH(29); - BZ_ITAH(30); BZ_ITAH(31); BZ_ITAH(32); BZ_ITAH(33); BZ_ITAH(34); - BZ_ITAH(35); BZ_ITAH(36); BZ_ITAH(37); BZ_ITAH(38); BZ_ITAH(39); - BZ_ITAH(40); BZ_ITAH(41); BZ_ITAH(42); BZ_ITAH(43); BZ_ITAH(44); - BZ_ITAH(45); BZ_ITAH(46); BZ_ITAH(47); BZ_ITAH(48); BZ_ITAH(49); - -# undef BZ_ITAH - - } else { - /*--- slow version which correctly handles all situations ---*/ - for (i = gs; i <= ge; i++) { - bsW ( s, - s->len [s->selector[selCtr]] [mtfv[i]], - s->code [s->selector[selCtr]] [mtfv[i]] ); - } - } - - - gs = ge+1; - selCtr++; - } - AssertH( selCtr == nSelectors, 3007 ); - - if (s->verbosity >= 3) - VPrintf1( "codes %d\n", s->numZ-nBytes ); -} - - -/*---------------------------------------------------*/ -void BZ2_compressBlock ( EState* s, Bool is_last_block ) -{ - if (s->nblock > 0) { - - BZ_FINALISE_CRC ( s->blockCRC ); - s->combinedCRC = (s->combinedCRC << 1) | (s->combinedCRC >> 31); - s->combinedCRC ^= s->blockCRC; - if (s->blockNo > 1) s->numZ = 0; - - if (s->verbosity >= 2) - VPrintf4( " block %d: crc = 0x%08x, " - "combined CRC = 0x%08x, size = %d\n", - s->blockNo, s->blockCRC, s->combinedCRC, s->nblock ); - - BZ2_blockSort ( s ); - } - - s->zbits = (UChar*) (&((UChar*)s->arr2)[s->nblock]); - - /*-- If this is the first block, create the stream header. --*/ - if (s->blockNo == 1) { - BZ2_bsInitWrite ( s ); - bsPutUChar ( s, BZ_HDR_B ); - bsPutUChar ( s, BZ_HDR_Z ); - bsPutUChar ( s, BZ_HDR_h ); - bsPutUChar ( s, (UChar)(BZ_HDR_0 + s->blockSize100k) ); - } - - if (s->nblock > 0) { - - bsPutUChar ( s, 0x31 ); bsPutUChar ( s, 0x41 ); - bsPutUChar ( s, 0x59 ); bsPutUChar ( s, 0x26 ); - bsPutUChar ( s, 0x53 ); bsPutUChar ( s, 0x59 ); - - /*-- Now the block's CRC, so it is in a known place. --*/ - bsPutUInt32 ( s, s->blockCRC ); - - /*-- - Now a single bit indicating (non-)randomisation. - As of version 0.9.5, we use a better sorting algorithm - which makes randomisation unnecessary. So always set - the randomised bit to 'no'. Of course, the decoder - still needs to be able to handle randomised blocks - so as to maintain backwards compatibility with - older versions of bzip2. - --*/ - bsW(s,1,0); - - bsW ( s, 24, s->origPtr ); - generateMTFValues ( s ); - sendMTFValues ( s ); - } - - - /*-- If this is the last block, add the stream trailer. --*/ - if (is_last_block) { - - bsPutUChar ( s, 0x17 ); bsPutUChar ( s, 0x72 ); - bsPutUChar ( s, 0x45 ); bsPutUChar ( s, 0x38 ); - bsPutUChar ( s, 0x50 ); bsPutUChar ( s, 0x90 ); - bsPutUInt32 ( s, s->combinedCRC ); - if (s->verbosity >= 2) - VPrintf1( " final combined CRC = 0x%08x\n ", s->combinedCRC ); - bsFinishWrite ( s ); - } -} - - -/*-------------------------------------------------------------*/ -/*--- end compress.c ---*/ -/*-------------------------------------------------------------*/ diff --git a/plugins/updater/bzip2-1.0.3/crctable.c b/plugins/updater/bzip2-1.0.3/crctable.c deleted file mode 100644 index 1fea7e946c..0000000000 --- a/plugins/updater/bzip2-1.0.3/crctable.c +++ /dev/null @@ -1,104 +0,0 @@ - -/*-------------------------------------------------------------*/ -/*--- Table for doing CRCs ---*/ -/*--- crctable.c ---*/ -/*-------------------------------------------------------------*/ - -/* ------------------------------------------------------------------ - This file is part of bzip2/libbzip2, a program and library for - lossless, block-sorting data compression. - - bzip2/libbzip2 version 1.0.6 of 6 September 2010 - Copyright (C) 1996-2010 Julian Seward - - Please read the WARNING, DISCLAIMER and PATENTS sections in the - README file. - - This program is released under the terms of the license contained - in the file LICENSE. - ------------------------------------------------------------------ */ - - -#include "bzlib_private.h" - -/*-- - I think this is an implementation of the AUTODIN-II, - Ethernet & FDDI 32-bit CRC standard. Vaguely derived - from code by Rob Warnock, in Section 51 of the - comp.compression FAQ. ---*/ - -UInt32 BZ2_crc32Table[256] = { - - /*-- Ugly, innit? --*/ - - 0x00000000L, 0x04c11db7L, 0x09823b6eL, 0x0d4326d9L, - 0x130476dcL, 0x17c56b6bL, 0x1a864db2L, 0x1e475005L, - 0x2608edb8L, 0x22c9f00fL, 0x2f8ad6d6L, 0x2b4bcb61L, - 0x350c9b64L, 0x31cd86d3L, 0x3c8ea00aL, 0x384fbdbdL, - 0x4c11db70L, 0x48d0c6c7L, 0x4593e01eL, 0x4152fda9L, - 0x5f15adacL, 0x5bd4b01bL, 0x569796c2L, 0x52568b75L, - 0x6a1936c8L, 0x6ed82b7fL, 0x639b0da6L, 0x675a1011L, - 0x791d4014L, 0x7ddc5da3L, 0x709f7b7aL, 0x745e66cdL, - 0x9823b6e0L, 0x9ce2ab57L, 0x91a18d8eL, 0x95609039L, - 0x8b27c03cL, 0x8fe6dd8bL, 0x82a5fb52L, 0x8664e6e5L, - 0xbe2b5b58L, 0xbaea46efL, 0xb7a96036L, 0xb3687d81L, - 0xad2f2d84L, 0xa9ee3033L, 0xa4ad16eaL, 0xa06c0b5dL, - 0xd4326d90L, 0xd0f37027L, 0xddb056feL, 0xd9714b49L, - 0xc7361b4cL, 0xc3f706fbL, 0xceb42022L, 0xca753d95L, - 0xf23a8028L, 0xf6fb9d9fL, 0xfbb8bb46L, 0xff79a6f1L, - 0xe13ef6f4L, 0xe5ffeb43L, 0xe8bccd9aL, 0xec7dd02dL, - 0x34867077L, 0x30476dc0L, 0x3d044b19L, 0x39c556aeL, - 0x278206abL, 0x23431b1cL, 0x2e003dc5L, 0x2ac12072L, - 0x128e9dcfL, 0x164f8078L, 0x1b0ca6a1L, 0x1fcdbb16L, - 0x018aeb13L, 0x054bf6a4L, 0x0808d07dL, 0x0cc9cdcaL, - 0x7897ab07L, 0x7c56b6b0L, 0x71159069L, 0x75d48ddeL, - 0x6b93dddbL, 0x6f52c06cL, 0x6211e6b5L, 0x66d0fb02L, - 0x5e9f46bfL, 0x5a5e5b08L, 0x571d7dd1L, 0x53dc6066L, - 0x4d9b3063L, 0x495a2dd4L, 0x44190b0dL, 0x40d816baL, - 0xaca5c697L, 0xa864db20L, 0xa527fdf9L, 0xa1e6e04eL, - 0xbfa1b04bL, 0xbb60adfcL, 0xb6238b25L, 0xb2e29692L, - 0x8aad2b2fL, 0x8e6c3698L, 0x832f1041L, 0x87ee0df6L, - 0x99a95df3L, 0x9d684044L, 0x902b669dL, 0x94ea7b2aL, - 0xe0b41de7L, 0xe4750050L, 0xe9362689L, 0xedf73b3eL, - 0xf3b06b3bL, 0xf771768cL, 0xfa325055L, 0xfef34de2L, - 0xc6bcf05fL, 0xc27dede8L, 0xcf3ecb31L, 0xcbffd686L, - 0xd5b88683L, 0xd1799b34L, 0xdc3abdedL, 0xd8fba05aL, - 0x690ce0eeL, 0x6dcdfd59L, 0x608edb80L, 0x644fc637L, - 0x7a089632L, 0x7ec98b85L, 0x738aad5cL, 0x774bb0ebL, - 0x4f040d56L, 0x4bc510e1L, 0x46863638L, 0x42472b8fL, - 0x5c007b8aL, 0x58c1663dL, 0x558240e4L, 0x51435d53L, - 0x251d3b9eL, 0x21dc2629L, 0x2c9f00f0L, 0x285e1d47L, - 0x36194d42L, 0x32d850f5L, 0x3f9b762cL, 0x3b5a6b9bL, - 0x0315d626L, 0x07d4cb91L, 0x0a97ed48L, 0x0e56f0ffL, - 0x1011a0faL, 0x14d0bd4dL, 0x19939b94L, 0x1d528623L, - 0xf12f560eL, 0xf5ee4bb9L, 0xf8ad6d60L, 0xfc6c70d7L, - 0xe22b20d2L, 0xe6ea3d65L, 0xeba91bbcL, 0xef68060bL, - 0xd727bbb6L, 0xd3e6a601L, 0xdea580d8L, 0xda649d6fL, - 0xc423cd6aL, 0xc0e2d0ddL, 0xcda1f604L, 0xc960ebb3L, - 0xbd3e8d7eL, 0xb9ff90c9L, 0xb4bcb610L, 0xb07daba7L, - 0xae3afba2L, 0xaafbe615L, 0xa7b8c0ccL, 0xa379dd7bL, - 0x9b3660c6L, 0x9ff77d71L, 0x92b45ba8L, 0x9675461fL, - 0x8832161aL, 0x8cf30badL, 0x81b02d74L, 0x857130c3L, - 0x5d8a9099L, 0x594b8d2eL, 0x5408abf7L, 0x50c9b640L, - 0x4e8ee645L, 0x4a4ffbf2L, 0x470cdd2bL, 0x43cdc09cL, - 0x7b827d21L, 0x7f436096L, 0x7200464fL, 0x76c15bf8L, - 0x68860bfdL, 0x6c47164aL, 0x61043093L, 0x65c52d24L, - 0x119b4be9L, 0x155a565eL, 0x18197087L, 0x1cd86d30L, - 0x029f3d35L, 0x065e2082L, 0x0b1d065bL, 0x0fdc1becL, - 0x3793a651L, 0x3352bbe6L, 0x3e119d3fL, 0x3ad08088L, - 0x2497d08dL, 0x2056cd3aL, 0x2d15ebe3L, 0x29d4f654L, - 0xc5a92679L, 0xc1683bceL, 0xcc2b1d17L, 0xc8ea00a0L, - 0xd6ad50a5L, 0xd26c4d12L, 0xdf2f6bcbL, 0xdbee767cL, - 0xe3a1cbc1L, 0xe760d676L, 0xea23f0afL, 0xeee2ed18L, - 0xf0a5bd1dL, 0xf464a0aaL, 0xf9278673L, 0xfde69bc4L, - 0x89b8fd09L, 0x8d79e0beL, 0x803ac667L, 0x84fbdbd0L, - 0x9abc8bd5L, 0x9e7d9662L, 0x933eb0bbL, 0x97ffad0cL, - 0xafb010b1L, 0xab710d06L, 0xa6322bdfL, 0xa2f33668L, - 0xbcb4666dL, 0xb8757bdaL, 0xb5365d03L, 0xb1f740b4L -}; - - -/*-------------------------------------------------------------*/ -/*--- end crctable.c ---*/ -/*-------------------------------------------------------------*/ diff --git a/plugins/updater/bzip2-1.0.3/decompress.c b/plugins/updater/bzip2-1.0.3/decompress.c deleted file mode 100644 index 311f5668f9..0000000000 --- a/plugins/updater/bzip2-1.0.3/decompress.c +++ /dev/null @@ -1,646 +0,0 @@ - -/*-------------------------------------------------------------*/ -/*--- Decompression machinery ---*/ -/*--- decompress.c ---*/ -/*-------------------------------------------------------------*/ - -/* ------------------------------------------------------------------ - This file is part of bzip2/libbzip2, a program and library for - lossless, block-sorting data compression. - - bzip2/libbzip2 version 1.0.6 of 6 September 2010 - Copyright (C) 1996-2010 Julian Seward - - Please read the WARNING, DISCLAIMER and PATENTS sections in the - README file. - - This program is released under the terms of the license contained - in the file LICENSE. - ------------------------------------------------------------------ */ - - -#include "bzlib_private.h" - - -/*---------------------------------------------------*/ -static -void makeMaps_d ( DState* s ) -{ - Int32 i; - s->nInUse = 0; - for (i = 0; i < 256; i++) - if (s->inUse[i]) { - s->seqToUnseq[s->nInUse] = i; - s->nInUse++; - } -} - - -/*---------------------------------------------------*/ -#define RETURN(rrr) \ - { retVal = rrr; goto save_state_and_return; }; - -#define GET_BITS(lll,vvv,nnn) \ - case lll: s->state = lll; \ - while (True) { \ - if (s->bsLive >= nnn) { \ - UInt32 v; \ - v = (s->bsBuff >> \ - (s->bsLive-nnn)) & ((1 << nnn)-1); \ - s->bsLive -= nnn; \ - vvv = v; \ - break; \ - } \ - if (s->strm->avail_in == 0) RETURN(BZ_OK); \ - s->bsBuff \ - = (s->bsBuff << 8) | \ - ((UInt32) \ - (*((UChar*)(s->strm->next_in)))); \ - s->bsLive += 8; \ - s->strm->next_in++; \ - s->strm->avail_in--; \ - s->strm->total_in_lo32++; \ - if (s->strm->total_in_lo32 == 0) \ - s->strm->total_in_hi32++; \ - } - -#define GET_UCHAR(lll,uuu) \ - GET_BITS(lll,uuu,8) - -#define GET_BIT(lll,uuu) \ - GET_BITS(lll,uuu,1) - -/*---------------------------------------------------*/ -#define GET_MTF_VAL(label1,label2,lval) \ -{ \ - if (groupPos == 0) { \ - groupNo++; \ - if (groupNo >= nSelectors) \ - RETURN(BZ_DATA_ERROR); \ - groupPos = BZ_G_SIZE; \ - gSel = s->selector[groupNo]; \ - gMinlen = s->minLens[gSel]; \ - gLimit = &(s->limit[gSel][0]); \ - gPerm = &(s->perm[gSel][0]); \ - gBase = &(s->base[gSel][0]); \ - } \ - groupPos--; \ - zn = gMinlen; \ - GET_BITS(label1, zvec, zn); \ - while (1) { \ - if (zn > 20 /* the longest code */) \ - RETURN(BZ_DATA_ERROR); \ - if (zvec <= gLimit[zn]) break; \ - zn++; \ - GET_BIT(label2, zj); \ - zvec = (zvec << 1) | zj; \ - }; \ - if (zvec - gBase[zn] < 0 \ - || zvec - gBase[zn] >= BZ_MAX_ALPHA_SIZE) \ - RETURN(BZ_DATA_ERROR); \ - lval = gPerm[zvec - gBase[zn]]; \ -} - - -/*---------------------------------------------------*/ -Int32 BZ2_decompress ( DState* s ) -{ - UChar uc; - Int32 retVal; - Int32 minLen, maxLen; - bz_stream* strm = s->strm; - - /* stuff that needs to be saved/restored */ - Int32 i; - Int32 j; - Int32 t; - Int32 alphaSize; - Int32 nGroups; - Int32 nSelectors; - Int32 EOB; - Int32 groupNo; - Int32 groupPos; - Int32 nextSym; - Int32 nblockMAX; - Int32 nblock; - Int32 es; - Int32 N; - Int32 curr; - Int32 zt; - Int32 zn; - Int32 zvec; - Int32 zj; - Int32 gSel; - Int32 gMinlen; - Int32* gLimit; - Int32* gBase; - Int32* gPerm; - - if (s->state == BZ_X_MAGIC_1) { - /*initialise the save area*/ - s->save_i = 0; - s->save_j = 0; - s->save_t = 0; - s->save_alphaSize = 0; - s->save_nGroups = 0; - s->save_nSelectors = 0; - s->save_EOB = 0; - s->save_groupNo = 0; - s->save_groupPos = 0; - s->save_nextSym = 0; - s->save_nblockMAX = 0; - s->save_nblock = 0; - s->save_es = 0; - s->save_N = 0; - s->save_curr = 0; - s->save_zt = 0; - s->save_zn = 0; - s->save_zvec = 0; - s->save_zj = 0; - s->save_gSel = 0; - s->save_gMinlen = 0; - s->save_gLimit = NULL; - s->save_gBase = NULL; - s->save_gPerm = NULL; - } - - /*restore from the save area*/ - i = s->save_i; - j = s->save_j; - t = s->save_t; - alphaSize = s->save_alphaSize; - nGroups = s->save_nGroups; - nSelectors = s->save_nSelectors; - EOB = s->save_EOB; - groupNo = s->save_groupNo; - groupPos = s->save_groupPos; - nextSym = s->save_nextSym; - nblockMAX = s->save_nblockMAX; - nblock = s->save_nblock; - es = s->save_es; - N = s->save_N; - curr = s->save_curr; - zt = s->save_zt; - zn = s->save_zn; - zvec = s->save_zvec; - zj = s->save_zj; - gSel = s->save_gSel; - gMinlen = s->save_gMinlen; - gLimit = s->save_gLimit; - gBase = s->save_gBase; - gPerm = s->save_gPerm; - - retVal = BZ_OK; - - switch (s->state) { - - GET_UCHAR(BZ_X_MAGIC_1, uc); - if (uc != BZ_HDR_B) RETURN(BZ_DATA_ERROR_MAGIC); - - GET_UCHAR(BZ_X_MAGIC_2, uc); - if (uc != BZ_HDR_Z) RETURN(BZ_DATA_ERROR_MAGIC); - - GET_UCHAR(BZ_X_MAGIC_3, uc) - if (uc != BZ_HDR_h) RETURN(BZ_DATA_ERROR_MAGIC); - - GET_BITS(BZ_X_MAGIC_4, s->blockSize100k, 8) - if (s->blockSize100k < (BZ_HDR_0 + 1) || - s->blockSize100k > (BZ_HDR_0 + 9)) RETURN(BZ_DATA_ERROR_MAGIC); - s->blockSize100k -= BZ_HDR_0; - - if (s->smallDecompress) { - s->ll16 = BZALLOC( s->blockSize100k * 100000 * sizeof(UInt16) ); - s->ll4 = BZALLOC( - ((1 + s->blockSize100k * 100000) >> 1) * sizeof(UChar) - ); - if (s->ll16 == NULL || s->ll4 == NULL) RETURN(BZ_MEM_ERROR); - } else { - s->tt = BZALLOC( s->blockSize100k * 100000 * sizeof(Int32) ); - if (s->tt == NULL) RETURN(BZ_MEM_ERROR); - } - - GET_UCHAR(BZ_X_BLKHDR_1, uc); - - if (uc == 0x17) goto endhdr_2; - if (uc != 0x31) RETURN(BZ_DATA_ERROR); - GET_UCHAR(BZ_X_BLKHDR_2, uc); - if (uc != 0x41) RETURN(BZ_DATA_ERROR); - GET_UCHAR(BZ_X_BLKHDR_3, uc); - if (uc != 0x59) RETURN(BZ_DATA_ERROR); - GET_UCHAR(BZ_X_BLKHDR_4, uc); - if (uc != 0x26) RETURN(BZ_DATA_ERROR); - GET_UCHAR(BZ_X_BLKHDR_5, uc); - if (uc != 0x53) RETURN(BZ_DATA_ERROR); - GET_UCHAR(BZ_X_BLKHDR_6, uc); - if (uc != 0x59) RETURN(BZ_DATA_ERROR); - - s->currBlockNo++; - if (s->verbosity >= 2) - VPrintf1 ( "\n [%d: huff+mtf ", s->currBlockNo ); - - s->storedBlockCRC = 0; - GET_UCHAR(BZ_X_BCRC_1, uc); - s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc); - GET_UCHAR(BZ_X_BCRC_2, uc); - s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc); - GET_UCHAR(BZ_X_BCRC_3, uc); - s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc); - GET_UCHAR(BZ_X_BCRC_4, uc); - s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc); - - GET_BITS(BZ_X_RANDBIT, s->blockRandomised, 1); - - s->origPtr = 0; - GET_UCHAR(BZ_X_ORIGPTR_1, uc); - s->origPtr = (s->origPtr << 8) | ((Int32)uc); - GET_UCHAR(BZ_X_ORIGPTR_2, uc); - s->origPtr = (s->origPtr << 8) | ((Int32)uc); - GET_UCHAR(BZ_X_ORIGPTR_3, uc); - s->origPtr = (s->origPtr << 8) | ((Int32)uc); - - if (s->origPtr < 0) - RETURN(BZ_DATA_ERROR); - if (s->origPtr > 10 + 100000*s->blockSize100k) - RETURN(BZ_DATA_ERROR); - - /*--- Receive the mapping table ---*/ - for (i = 0; i < 16; i++) { - GET_BIT(BZ_X_MAPPING_1, uc); - if (uc == 1) - s->inUse16[i] = True; else - s->inUse16[i] = False; - } - - for (i = 0; i < 256; i++) s->inUse[i] = False; - - for (i = 0; i < 16; i++) - if (s->inUse16[i]) - for (j = 0; j < 16; j++) { - GET_BIT(BZ_X_MAPPING_2, uc); - if (uc == 1) s->inUse[i * 16 + j] = True; - } - makeMaps_d ( s ); - if (s->nInUse == 0) RETURN(BZ_DATA_ERROR); - alphaSize = s->nInUse+2; - - /*--- Now the selectors ---*/ - GET_BITS(BZ_X_SELECTOR_1, nGroups, 3); - if (nGroups < 2 || nGroups > 6) RETURN(BZ_DATA_ERROR); - GET_BITS(BZ_X_SELECTOR_2, nSelectors, 15); - if (nSelectors < 1) RETURN(BZ_DATA_ERROR); - for (i = 0; i < nSelectors; i++) { - j = 0; - while (True) { - GET_BIT(BZ_X_SELECTOR_3, uc); - if (uc == 0) break; - j++; - if (j >= nGroups) RETURN(BZ_DATA_ERROR); - } - s->selectorMtf[i] = j; - } - - /*--- Undo the MTF values for the selectors. ---*/ - { - UChar pos[BZ_N_GROUPS], tmp, v; - for (v = 0; v < nGroups; v++) pos[v] = v; - - for (i = 0; i < nSelectors; i++) { - v = s->selectorMtf[i]; - tmp = pos[v]; - while (v > 0) { pos[v] = pos[v-1]; v--; } - pos[0] = tmp; - s->selector[i] = tmp; - } - } - - /*--- Now the coding tables ---*/ - for (t = 0; t < nGroups; t++) { - GET_BITS(BZ_X_CODING_1, curr, 5); - for (i = 0; i < alphaSize; i++) { - while (True) { - if (curr < 1 || curr > 20) RETURN(BZ_DATA_ERROR); - GET_BIT(BZ_X_CODING_2, uc); - if (uc == 0) break; - GET_BIT(BZ_X_CODING_3, uc); - if (uc == 0) curr++; else curr--; - } - s->len[t][i] = curr; - } - } - - /*--- Create the Huffman decoding tables ---*/ - for (t = 0; t < nGroups; t++) { - minLen = 32; - maxLen = 0; - for (i = 0; i < alphaSize; i++) { - if (s->len[t][i] > maxLen) maxLen = s->len[t][i]; - if (s->len[t][i] < minLen) minLen = s->len[t][i]; - } - BZ2_hbCreateDecodeTables ( - &(s->limit[t][0]), - &(s->base[t][0]), - &(s->perm[t][0]), - &(s->len[t][0]), - minLen, maxLen, alphaSize - ); - s->minLens[t] = minLen; - } - - /*--- Now the MTF values ---*/ - - EOB = s->nInUse+1; - nblockMAX = 100000 * s->blockSize100k; - groupNo = -1; - groupPos = 0; - - for (i = 0; i <= 255; i++) s->unzftab[i] = 0; - - /*-- MTF init --*/ - { - Int32 ii, jj, kk; - kk = MTFA_SIZE-1; - for (ii = 256 / MTFL_SIZE - 1; ii >= 0; ii--) { - for (jj = MTFL_SIZE-1; jj >= 0; jj--) { - s->mtfa[kk] = (UChar)(ii * MTFL_SIZE + jj); - kk--; - } - s->mtfbase[ii] = kk + 1; - } - } - /*-- end MTF init --*/ - - nblock = 0; - GET_MTF_VAL(BZ_X_MTF_1, BZ_X_MTF_2, nextSym); - - while (True) { - - if (nextSym == EOB) break; - - if (nextSym == BZ_RUNA || nextSym == BZ_RUNB) { - - es = -1; - N = 1; - do { - /* Check that N doesn't get too big, so that es doesn't - go negative. The maximum value that can be - RUNA/RUNB encoded is equal to the block size (post - the initial RLE), viz, 900k, so bounding N at 2 - million should guard against overflow without - rejecting any legitimate inputs. */ - if (N >= 2*1024*1024) RETURN(BZ_DATA_ERROR); - if (nextSym == BZ_RUNA) es = es + (0+1) * N; else - if (nextSym == BZ_RUNB) es = es + (1+1) * N; - N = N * 2; - GET_MTF_VAL(BZ_X_MTF_3, BZ_X_MTF_4, nextSym); - } - while (nextSym == BZ_RUNA || nextSym == BZ_RUNB); - - es++; - uc = s->seqToUnseq[ s->mtfa[s->mtfbase[0]] ]; - s->unzftab[uc] += es; - - if (s->smallDecompress) - while (es > 0) { - if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR); - s->ll16[nblock] = (UInt16)uc; - nblock++; - es--; - } - else - while (es > 0) { - if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR); - s->tt[nblock] = (UInt32)uc; - nblock++; - es--; - }; - - continue; - - } else { - - if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR); - - /*-- uc = MTF ( nextSym-1 ) --*/ - { - Int32 ii, jj, kk, pp, lno, off; - UInt32 nn; - nn = (UInt32)(nextSym - 1); - - if (nn < MTFL_SIZE) { - /* avoid general-case expense */ - pp = s->mtfbase[0]; - uc = s->mtfa[pp+nn]; - while (nn > 3) { - Int32 z = pp+nn; - s->mtfa[(z) ] = s->mtfa[(z)-1]; - s->mtfa[(z)-1] = s->mtfa[(z)-2]; - s->mtfa[(z)-2] = s->mtfa[(z)-3]; - s->mtfa[(z)-3] = s->mtfa[(z)-4]; - nn -= 4; - } - while (nn > 0) { - s->mtfa[(pp+nn)] = s->mtfa[(pp+nn)-1]; nn--; - }; - s->mtfa[pp] = uc; - } else { - /* general case */ - lno = nn / MTFL_SIZE; - off = nn % MTFL_SIZE; - pp = s->mtfbase[lno] + off; - uc = s->mtfa[pp]; - while (pp > s->mtfbase[lno]) { - s->mtfa[pp] = s->mtfa[pp-1]; pp--; - }; - s->mtfbase[lno]++; - while (lno > 0) { - s->mtfbase[lno]--; - s->mtfa[s->mtfbase[lno]] - = s->mtfa[s->mtfbase[lno-1] + MTFL_SIZE - 1]; - lno--; - } - s->mtfbase[0]--; - s->mtfa[s->mtfbase[0]] = uc; - if (s->mtfbase[0] == 0) { - kk = MTFA_SIZE-1; - for (ii = 256 / MTFL_SIZE-1; ii >= 0; ii--) { - for (jj = MTFL_SIZE-1; jj >= 0; jj--) { - s->mtfa[kk] = s->mtfa[s->mtfbase[ii] + jj]; - kk--; - } - s->mtfbase[ii] = kk + 1; - } - } - } - } - /*-- end uc = MTF ( nextSym-1 ) --*/ - - s->unzftab[s->seqToUnseq[uc]]++; - if (s->smallDecompress) - s->ll16[nblock] = (UInt16)(s->seqToUnseq[uc]); else - s->tt[nblock] = (UInt32)(s->seqToUnseq[uc]); - nblock++; - - GET_MTF_VAL(BZ_X_MTF_5, BZ_X_MTF_6, nextSym); - continue; - } - } - - /* Now we know what nblock is, we can do a better sanity - check on s->origPtr. - */ - if (s->origPtr < 0 || s->origPtr >= nblock) - RETURN(BZ_DATA_ERROR); - - /*-- Set up cftab to facilitate generation of T^(-1) --*/ - /* Check: unzftab entries in range. */ - for (i = 0; i <= 255; i++) { - if (s->unzftab[i] < 0 || s->unzftab[i] > nblock) - RETURN(BZ_DATA_ERROR); - } - /* Actually generate cftab. */ - s->cftab[0] = 0; - for (i = 1; i <= 256; i++) s->cftab[i] = s->unzftab[i-1]; - for (i = 1; i <= 256; i++) s->cftab[i] += s->cftab[i-1]; - /* Check: cftab entries in range. */ - for (i = 0; i <= 256; i++) { - if (s->cftab[i] < 0 || s->cftab[i] > nblock) { - /* s->cftab[i] can legitimately be == nblock */ - RETURN(BZ_DATA_ERROR); - } - } - /* Check: cftab entries non-descending. */ - for (i = 1; i <= 256; i++) { - if (s->cftab[i-1] > s->cftab[i]) { - RETURN(BZ_DATA_ERROR); - } - } - - s->state_out_len = 0; - s->state_out_ch = 0; - BZ_INITIALISE_CRC ( s->calculatedBlockCRC ); - s->state = BZ_X_OUTPUT; - if (s->verbosity >= 2) VPrintf0 ( "rt+rld" ); - - if (s->smallDecompress) { - - /*-- Make a copy of cftab, used in generation of T --*/ - for (i = 0; i <= 256; i++) s->cftabCopy[i] = s->cftab[i]; - - /*-- compute the T vector --*/ - for (i = 0; i < nblock; i++) { - uc = (UChar)(s->ll16[i]); - SET_LL(i, s->cftabCopy[uc]); - s->cftabCopy[uc]++; - } - - /*-- Compute T^(-1) by pointer reversal on T --*/ - i = s->origPtr; - j = GET_LL(i); - do { - Int32 tmp = GET_LL(j); - SET_LL(j, i); - i = j; - j = tmp; - } - while (i != s->origPtr); - - s->tPos = s->origPtr; - s->nblock_used = 0; - if (s->blockRandomised) { - BZ_RAND_INIT_MASK; - BZ_GET_SMALL(s->k0); s->nblock_used++; - BZ_RAND_UPD_MASK; s->k0 ^= BZ_RAND_MASK; - } else { - BZ_GET_SMALL(s->k0); s->nblock_used++; - } - - } else { - - /*-- compute the T^(-1) vector --*/ - for (i = 0; i < nblock; i++) { - uc = (UChar)(s->tt[i] & 0xff); - s->tt[s->cftab[uc]] |= (i << 8); - s->cftab[uc]++; - } - - s->tPos = s->tt[s->origPtr] >> 8; - s->nblock_used = 0; - if (s->blockRandomised) { - BZ_RAND_INIT_MASK; - BZ_GET_FAST(s->k0); s->nblock_used++; - BZ_RAND_UPD_MASK; s->k0 ^= BZ_RAND_MASK; - } else { - BZ_GET_FAST(s->k0); s->nblock_used++; - } - - } - - RETURN(BZ_OK); - - - - endhdr_2: - - GET_UCHAR(BZ_X_ENDHDR_2, uc); - if (uc != 0x72) RETURN(BZ_DATA_ERROR); - GET_UCHAR(BZ_X_ENDHDR_3, uc); - if (uc != 0x45) RETURN(BZ_DATA_ERROR); - GET_UCHAR(BZ_X_ENDHDR_4, uc); - if (uc != 0x38) RETURN(BZ_DATA_ERROR); - GET_UCHAR(BZ_X_ENDHDR_5, uc); - if (uc != 0x50) RETURN(BZ_DATA_ERROR); - GET_UCHAR(BZ_X_ENDHDR_6, uc); - if (uc != 0x90) RETURN(BZ_DATA_ERROR); - - s->storedCombinedCRC = 0; - GET_UCHAR(BZ_X_CCRC_1, uc); - s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc); - GET_UCHAR(BZ_X_CCRC_2, uc); - s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc); - GET_UCHAR(BZ_X_CCRC_3, uc); - s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc); - GET_UCHAR(BZ_X_CCRC_4, uc); - s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc); - - s->state = BZ_X_IDLE; - RETURN(BZ_STREAM_END); - - default: AssertH ( False, 4001 ); - } - - AssertH ( False, 4002 ); - - save_state_and_return: - - s->save_i = i; - s->save_j = j; - s->save_t = t; - s->save_alphaSize = alphaSize; - s->save_nGroups = nGroups; - s->save_nSelectors = nSelectors; - s->save_EOB = EOB; - s->save_groupNo = groupNo; - s->save_groupPos = groupPos; - s->save_nextSym = nextSym; - s->save_nblockMAX = nblockMAX; - s->save_nblock = nblock; - s->save_es = es; - s->save_N = N; - s->save_curr = curr; - s->save_zt = zt; - s->save_zn = zn; - s->save_zvec = zvec; - s->save_zj = zj; - s->save_gSel = gSel; - s->save_gMinlen = gMinlen; - s->save_gLimit = gLimit; - s->save_gBase = gBase; - s->save_gPerm = gPerm; - - return retVal; -} - - -/*-------------------------------------------------------------*/ -/*--- end decompress.c ---*/ -/*-------------------------------------------------------------*/ diff --git a/plugins/updater/bzip2-1.0.3/dlltest.c b/plugins/updater/bzip2-1.0.3/dlltest.c deleted file mode 100644 index 03fa14620e..0000000000 --- a/plugins/updater/bzip2-1.0.3/dlltest.c +++ /dev/null @@ -1,175 +0,0 @@ -/* - minibz2 - libbz2.dll test program. - by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp) - This file is Public Domain. Welcome any email to me. - - usage: minibz2 [-d] [-{1,2,..9}] [[srcfilename] destfilename] -*/ - -#define BZ_IMPORT -#include -#include -#include "bzlib.h" -#ifdef _WIN32 -#include -#endif - - -#ifdef _WIN32 - -#define BZ2_LIBNAME "libbz2-1.0.2.DLL" - -#include -static int BZ2DLLLoaded = 0; -static HINSTANCE BZ2DLLhLib; -int BZ2DLLLoadLibrary(void) -{ - HINSTANCE hLib; - - if(BZ2DLLLoaded==1){return 0;} - hLib=LoadLibrary(BZ2_LIBNAME); - if(hLib == NULL){ - fprintf(stderr,"Can't load %s\n",BZ2_LIBNAME); - return -1; - } - BZ2_bzlibVersion=GetProcAddress(hLib,"BZ2_bzlibVersion"); - BZ2_bzopen=GetProcAddress(hLib,"BZ2_bzopen"); - BZ2_bzdopen=GetProcAddress(hLib,"BZ2_bzdopen"); - BZ2_bzread=GetProcAddress(hLib,"BZ2_bzread"); - BZ2_bzwrite=GetProcAddress(hLib,"BZ2_bzwrite"); - BZ2_bzflush=GetProcAddress(hLib,"BZ2_bzflush"); - BZ2_bzclose=GetProcAddress(hLib,"BZ2_bzclose"); - BZ2_bzerror=GetProcAddress(hLib,"BZ2_bzerror"); - - if (!BZ2_bzlibVersion || !BZ2_bzopen || !BZ2_bzdopen - || !BZ2_bzread || !BZ2_bzwrite || !BZ2_bzflush - || !BZ2_bzclose || !BZ2_bzerror) { - fprintf(stderr,"GetProcAddress failed.\n"); - return -1; - } - BZ2DLLLoaded=1; - BZ2DLLhLib=hLib; - return 0; - -} -int BZ2DLLFreeLibrary(void) -{ - if(BZ2DLLLoaded==0){return 0;} - FreeLibrary(BZ2DLLhLib); - BZ2DLLLoaded=0; -} -#endif /* WIN32 */ - -void usage(void) -{ - puts("usage: minibz2 [-d] [-{1,2,..9}] [[srcfilename] destfilename]"); -} - -int main(int argc,char *argv[]) -{ - int decompress = 0; - int level = 9; - char *fn_r = NULL; - char *fn_w = NULL; - -#ifdef _WIN32 - if(BZ2DLLLoadLibrary()<0){ - fprintf(stderr,"Loading of %s failed. Giving up.\n", BZ2_LIBNAME); - exit(1); - } - printf("Loading of %s succeeded. Library version is %s.\n", - BZ2_LIBNAME, BZ2_bzlibVersion() ); -#endif - while(++argv,--argc){ - if(**argv =='-' || **argv=='/'){ - char *p; - - for(p=*argv+1;*p;p++){ - if(*p=='d'){ - decompress = 1; - }else if('1'<=*p && *p<='9'){ - level = *p - '0'; - }else{ - usage(); - exit(1); - } - } - }else{ - break; - } - } - if(argc>=1){ - fn_r = *argv; - argc--;argv++; - }else{ - fn_r = NULL; - } - if(argc>=1){ - fn_w = *argv; - argc--;argv++; - }else{ - fn_w = NULL; - } - { - int len; - char buff[0x1000]; - char mode[10]; - - if(decompress){ - BZFILE *BZ2fp_r = NULL; - FILE *fp_w = NULL; - - if(fn_w){ - if((fp_w = fopen(fn_w,"wb"))==NULL){ - printf("can't open [%s]\n",fn_w); - perror("reason:"); - exit(1); - } - }else{ - fp_w = stdout; - } - if((fn_r == NULL && (BZ2fp_r = BZ2_bzdopen(fileno(stdin),"rb"))==NULL) - || (fn_r != NULL && (BZ2fp_r = BZ2_bzopen(fn_r,"rb"))==NULL)){ - printf("can't bz2openstream\n"); - exit(1); - } - while((len=BZ2_bzread(BZ2fp_r,buff,0x1000))>0){ - fwrite(buff,1,len,fp_w); - } - BZ2_bzclose(BZ2fp_r); - if(fp_w != stdout) fclose(fp_w); - }else{ - BZFILE *BZ2fp_w = NULL; - FILE *fp_r = NULL; - - if(fn_r){ - if((fp_r = fopen(fn_r,"rb"))==NULL){ - printf("can't open [%s]\n",fn_r); - perror("reason:"); - exit(1); - } - }else{ - fp_r = stdin; - } - mode[0]='w'; - mode[1] = '0' + level; - mode[2] = '\0'; - - if((fn_w == NULL && (BZ2fp_w = BZ2_bzdopen(fileno(stdout),mode))==NULL) - || (fn_w !=NULL && (BZ2fp_w = BZ2_bzopen(fn_w,mode))==NULL)){ - printf("can't bz2openstream\n"); - exit(1); - } - while((len=fread(buff,1,0x1000,fp_r))>0){ - BZ2_bzwrite(BZ2fp_w,buff,len); - } - BZ2_bzclose(BZ2fp_w); - if(fp_r!=stdin)fclose(fp_r); - } - } -#ifdef _WIN32 - BZ2DLLFreeLibrary(); -#endif - return 0; -} diff --git a/plugins/updater/bzip2-1.0.3/dlltest.dsp b/plugins/updater/bzip2-1.0.3/dlltest.dsp deleted file mode 100644 index 4b1615edcd..0000000000 --- a/plugins/updater/bzip2-1.0.3/dlltest.dsp +++ /dev/null @@ -1,93 +0,0 @@ -# Microsoft Developer Studio Project File - Name="dlltest" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** •ÒW‚µ‚È‚¢‚Å‚­‚¾‚³‚¢ ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=dlltest - Win32 Debug -!MESSAGE ‚±‚ê‚Í—LŒø‚ÈÒ²¸Ì§²Ù‚Å‚Í‚ ‚è‚Ü‚¹‚ñB ‚±‚ÌÌßÛ¼Þª¸Ä‚ðËÞÙÄÞ‚·‚邽‚ß‚É‚Í NMAKE ‚ðŽg—p‚µ‚Ä‚­‚¾‚³‚¢B -!MESSAGE [Ò²¸Ì§²Ù‚Ì´¸½Îß°Ä] ºÏÝÄÞ‚ðŽg—p‚µ‚ÄŽÀs‚µ‚Ä‚­‚¾‚³‚¢ -!MESSAGE -!MESSAGE NMAKE /f "dlltest.mak". -!MESSAGE -!MESSAGE NMAKE ‚ÌŽÀsŽž‚É\¬‚ðŽw’è‚Å‚«‚Ü‚· -!MESSAGE ºÏÝÄÞ ×²Ýã‚ÅϸۂÌÝ’è‚ð’è‹`‚µ‚Ü‚·B—á: -!MESSAGE -!MESSAGE NMAKE /f "dlltest.mak" CFG="dlltest - Win32 Debug" -!MESSAGE -!MESSAGE ‘I‘ð‰Â”\‚ÈËÞÙÄÞ Ó°ÄÞ: -!MESSAGE -!MESSAGE "dlltest - Win32 Release" ("Win32 (x86) Console Application" —p) -!MESSAGE "dlltest - Win32 Debug" ("Win32 (x86) Console Application" —p) -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "dlltest - 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 "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /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 -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 /subsystem:console /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 /subsystem:console /machine:I386 /out:"minibz2.exe" - -!ELSEIF "$(CFG)" == "dlltest - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "dlltest_" -# PROP BASE Intermediate_Dir "dlltest_" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "dlltest_" -# PROP Intermediate_Dir "dlltest_" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# 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 /subsystem:console /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 /subsystem:console /debug /machine:I386 /out:"minibz2.exe" /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "dlltest - Win32 Release" -# Name "dlltest - Win32 Debug" -# Begin Source File - -SOURCE=.\bzlib.h -# End Source File -# Begin Source File - -SOURCE=.\dlltest.c -# End Source File -# End Target -# End Project diff --git a/plugins/updater/bzip2-1.0.3/entities.xml b/plugins/updater/bzip2-1.0.3/entities.xml deleted file mode 100644 index 4b28f34659..0000000000 --- a/plugins/updater/bzip2-1.0.3/entities.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/plugins/updater/bzip2-1.0.3/format.pl b/plugins/updater/bzip2-1.0.3/format.pl deleted file mode 100644 index f169fd9de2..0000000000 --- a/plugins/updater/bzip2-1.0.3/format.pl +++ /dev/null @@ -1,68 +0,0 @@ -#!/usr/bin/perl -w -# -# ------------------------------------------------------------------ -# This file is part of bzip2/libbzip2, a program and library for -# lossless, block-sorting data compression. -# -# bzip2/libbzip2 version 1.0.6 of 6 September 2010 -# Copyright (C) 1996-2010 Julian Seward -# -# Please read the WARNING, DISCLAIMER and PATENTS sections in the -# README file. -# -# This program is released under the terms of the license contained -# in the file LICENSE. -# ------------------------------------------------------------------ -# -use strict; - -# get command line values: -if ( $#ARGV !=1 ) { - die "Usage: $0 xml_infile xml_outfile\n"; -} - -my $infile = shift; -# check infile exists -die "Can't find file \"$infile\"" - unless -f $infile; -# check we can read infile -if (! -r $infile) { - die "Can't read input $infile\n"; -} -# check we can open infile -open( INFILE,"<$infile" ) or - die "Can't input $infile $!"; - -#my $outfile = 'fmt-manual.xml'; -my $outfile = shift; -#print "Infile: $infile, Outfile: $outfile\n"; -# check we can write to outfile -open( OUTFILE,">$outfile" ) or - die "Can't output $outfile $! for writing"; - -my ($prev, $curr, $str); -$prev = ''; $curr = ''; -while ( ) { - - print OUTFILE $prev; - $prev = $curr; - $curr = $_; - $str = ''; - - if ( $prev =~ /$|$/ ) { - chomp $prev; - $curr = join( '', $prev, "|<\/screen>/ ) { - chomp $prev; - $curr = join( '', $prev, "]]>", $curr ); - $prev = ''; - next; - } -} -print OUTFILE $curr; -close INFILE; -close OUTFILE; -exit; diff --git a/plugins/updater/bzip2-1.0.3/huffman.c b/plugins/updater/bzip2-1.0.3/huffman.c deleted file mode 100644 index 2283fdbc5a..0000000000 --- a/plugins/updater/bzip2-1.0.3/huffman.c +++ /dev/null @@ -1,205 +0,0 @@ - -/*-------------------------------------------------------------*/ -/*--- Huffman coding low-level stuff ---*/ -/*--- huffman.c ---*/ -/*-------------------------------------------------------------*/ - -/* ------------------------------------------------------------------ - This file is part of bzip2/libbzip2, a program and library for - lossless, block-sorting data compression. - - bzip2/libbzip2 version 1.0.6 of 6 September 2010 - Copyright (C) 1996-2010 Julian Seward - - Please read the WARNING, DISCLAIMER and PATENTS sections in the - README file. - - This program is released under the terms of the license contained - in the file LICENSE. - ------------------------------------------------------------------ */ - - -#include "bzlib_private.h" - -/*---------------------------------------------------*/ -#define WEIGHTOF(zz0) ((zz0) & 0xffffff00) -#define DEPTHOF(zz1) ((zz1) & 0x000000ff) -#define MYMAX(zz2,zz3) ((zz2) > (zz3) ? (zz2) : (zz3)) - -#define ADDWEIGHTS(zw1,zw2) \ - (WEIGHTOF(zw1)+WEIGHTOF(zw2)) | \ - (1 + MYMAX(DEPTHOF(zw1),DEPTHOF(zw2))) - -#define UPHEAP(z) \ -{ \ - Int32 zz, tmp; \ - zz = z; tmp = heap[zz]; \ - while (weight[tmp] < weight[heap[zz >> 1]]) { \ - heap[zz] = heap[zz >> 1]; \ - zz >>= 1; \ - } \ - heap[zz] = tmp; \ -} - -#define DOWNHEAP(z) \ -{ \ - Int32 zz, yy, tmp; \ - zz = z; tmp = heap[zz]; \ - while (True) { \ - yy = zz << 1; \ - if (yy > nHeap) break; \ - if (yy < nHeap && \ - weight[heap[yy+1]] < weight[heap[yy]]) \ - yy++; \ - if (weight[tmp] < weight[heap[yy]]) break; \ - heap[zz] = heap[yy]; \ - zz = yy; \ - } \ - heap[zz] = tmp; \ -} - - -/*---------------------------------------------------*/ -void BZ2_hbMakeCodeLengths ( UChar *len, - Int32 *freq, - Int32 alphaSize, - Int32 maxLen ) -{ - /*-- - Nodes and heap entries run from 1. Entry 0 - for both the heap and nodes is a sentinel. - --*/ - Int32 nNodes, nHeap, n1, n2, i, j, k; - Bool tooLong; - - Int32 heap [ BZ_MAX_ALPHA_SIZE + 2 ]; - Int32 weight [ BZ_MAX_ALPHA_SIZE * 2 ]; - Int32 parent [ BZ_MAX_ALPHA_SIZE * 2 ]; - - for (i = 0; i < alphaSize; i++) - weight[i+1] = (freq[i] == 0 ? 1 : freq[i]) << 8; - - while (True) { - - nNodes = alphaSize; - nHeap = 0; - - heap[0] = 0; - weight[0] = 0; - parent[0] = -2; - - for (i = 1; i <= alphaSize; i++) { - parent[i] = -1; - nHeap++; - heap[nHeap] = i; - UPHEAP(nHeap); - } - - AssertH( nHeap < (BZ_MAX_ALPHA_SIZE+2), 2001 ); - - while (nHeap > 1) { - n1 = heap[1]; heap[1] = heap[nHeap]; nHeap--; DOWNHEAP(1); - n2 = heap[1]; heap[1] = heap[nHeap]; nHeap--; DOWNHEAP(1); - nNodes++; - parent[n1] = parent[n2] = nNodes; - weight[nNodes] = ADDWEIGHTS(weight[n1], weight[n2]); - parent[nNodes] = -1; - nHeap++; - heap[nHeap] = nNodes; - UPHEAP(nHeap); - } - - AssertH( nNodes < (BZ_MAX_ALPHA_SIZE * 2), 2002 ); - - tooLong = False; - for (i = 1; i <= alphaSize; i++) { - j = 0; - k = i; - while (parent[k] >= 0) { k = parent[k]; j++; } - len[i-1] = j; - if (j > maxLen) tooLong = True; - } - - if (! tooLong) break; - - /* 17 Oct 04: keep-going condition for the following loop used - to be 'i < alphaSize', which missed the last element, - theoretically leading to the possibility of the compressor - looping. However, this count-scaling step is only needed if - one of the generated Huffman code words is longer than - maxLen, which up to and including version 1.0.2 was 20 bits, - which is extremely unlikely. In version 1.0.3 maxLen was - changed to 17 bits, which has minimal effect on compression - ratio, but does mean this scaling step is used from time to - time, enough to verify that it works. - - This means that bzip2-1.0.3 and later will only produce - Huffman codes with a maximum length of 17 bits. However, in - order to preserve backwards compatibility with bitstreams - produced by versions pre-1.0.3, the decompressor must still - handle lengths of up to 20. */ - - for (i = 1; i <= alphaSize; i++) { - j = weight[i] >> 8; - j = 1 + (j / 2); - weight[i] = j << 8; - } - } -} - - -/*---------------------------------------------------*/ -void BZ2_hbAssignCodes ( Int32 *code, - UChar *length, - Int32 minLen, - Int32 maxLen, - Int32 alphaSize ) -{ - Int32 n, vec, i; - - vec = 0; - for (n = minLen; n <= maxLen; n++) { - for (i = 0; i < alphaSize; i++) - if (length[i] == n) { code[i] = vec; vec++; }; - vec <<= 1; - } -} - - -/*---------------------------------------------------*/ -void BZ2_hbCreateDecodeTables ( Int32 *limit, - Int32 *base, - Int32 *perm, - UChar *length, - Int32 minLen, - Int32 maxLen, - Int32 alphaSize ) -{ - Int32 pp, i, j, vec; - - pp = 0; - for (i = minLen; i <= maxLen; i++) - for (j = 0; j < alphaSize; j++) - if (length[j] == i) { perm[pp] = j; pp++; }; - - for (i = 0; i < BZ_MAX_CODE_LEN; i++) base[i] = 0; - for (i = 0; i < alphaSize; i++) base[length[i]+1]++; - - for (i = 1; i < BZ_MAX_CODE_LEN; i++) base[i] += base[i-1]; - - for (i = 0; i < BZ_MAX_CODE_LEN; i++) limit[i] = 0; - vec = 0; - - for (i = minLen; i <= maxLen; i++) { - vec += (base[i+1] - base[i]); - limit[i] = vec-1; - vec <<= 1; - } - for (i = minLen + 1; i <= maxLen; i++) - base[i] = ((limit[i-1] + 1) << 1) - base[i]; -} - - -/*-------------------------------------------------------------*/ -/*--- end huffman.c ---*/ -/*-------------------------------------------------------------*/ diff --git a/plugins/updater/bzip2-1.0.3/libbz2.001 b/plugins/updater/bzip2-1.0.3/libbz2.001 deleted file mode 100644 index a21a20f75f..0000000000 --- a/plugins/updater/bzip2-1.0.3/libbz2.001 +++ /dev/null @@ -1,130 +0,0 @@ -# Microsoft Developer Studio Project File - Name="libbz2" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** •ÒW‚µ‚È‚¢‚Å‚­‚¾‚³‚¢ ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=libbz2 - Win32 Debug -!MESSAGE ‚±‚ê‚Í—LŒø‚ÈÒ²¸Ì§²Ù‚Å‚Í‚ ‚è‚Ü‚¹‚ñB ‚±‚ÌÌßÛ¼Þª¸Ä‚ðËÞÙÄÞ‚·‚邽‚ß‚É‚Í NMAKE ‚ðŽg—p‚µ‚Ä‚­‚¾‚³‚¢B -!MESSAGE [Ò²¸Ì§²Ù‚Ì´¸½Îß°Ä] ºÏÝÄÞ‚ðŽg—p‚µ‚ÄŽÀs‚µ‚Ä‚­‚¾‚³‚¢ -!MESSAGE -!MESSAGE NMAKE /f "libbz2.mak". -!MESSAGE -!MESSAGE NMAKE ‚ÌŽÀsŽž‚É\¬‚ðŽw’è‚Å‚«‚Ü‚· -!MESSAGE ºÏÝÄÞ ×²Ýã‚ÅϸۂÌÝ’è‚ð’è‹`‚µ‚Ü‚·B—á: -!MESSAGE -!MESSAGE NMAKE /f "libbz2.mak" CFG="libbz2 - Win32 Debug" -!MESSAGE -!MESSAGE ‘I‘ð‰Â”\‚ÈËÞÙÄÞ Ó°ÄÞ: -!MESSAGE -!MESSAGE "libbz2 - Win32 Release" ("Win32 (x86) Dynamic-Link Library" —p) -!MESSAGE "libbz2 - Win32 Debug" ("Win32 (x86) Dynamic-Link Library" —p) -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "libbz2 - 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 "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /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 /subsystem:windows /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 /subsystem:windows /dll /machine:I386 /out:"libbz2.dll" - -!ELSEIF "$(CFG)" == "libbz2 - 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 "Debug" -# PROP Intermediate_Dir "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" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /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 /subsystem:windows /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 /subsystem:windows /dll /debug /machine:I386 /out:"libbz2.dll" /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "libbz2 - Win32 Release" -# Name "libbz2 - Win32 Debug" -# Begin Source File - -SOURCE=.\blocksort.c -# End Source File -# Begin Source File - -SOURCE=.\bzlib.c -# End Source File -# Begin Source File - -SOURCE=.\bzlib.h -# End Source File -# Begin Source File - -SOURCE=.\bzlib_private.h -# End Source File -# Begin Source File - -SOURCE=.\compress.c -# End Source File -# Begin Source File - -SOURCE=.\crctable.c -# End Source File -# Begin Source File - -SOURCE=.\decompress.c -# End Source File -# Begin Source File - -SOURCE=.\huffman.c -# End Source File -# Begin Source File - -SOURCE=.\libbz2.def -# End Source File -# Begin Source File - -SOURCE=.\randtable.c -# End Source File -# End Target -# End Project diff --git a/plugins/updater/bzip2-1.0.3/libbz2.def b/plugins/updater/bzip2-1.0.3/libbz2.def deleted file mode 100644 index 2dc0dd891d..0000000000 --- a/plugins/updater/bzip2-1.0.3/libbz2.def +++ /dev/null @@ -1,27 +0,0 @@ -LIBRARY LIBBZ2 -DESCRIPTION "libbzip2: library for data compression" -EXPORTS - BZ2_bzCompressInit - BZ2_bzCompress - BZ2_bzCompressEnd - BZ2_bzDecompressInit - BZ2_bzDecompress - BZ2_bzDecompressEnd - BZ2_bzReadOpen - BZ2_bzReadClose - BZ2_bzReadGetUnused - BZ2_bzRead - BZ2_bzWriteOpen - BZ2_bzWrite - BZ2_bzWriteClose - BZ2_bzWriteClose64 - BZ2_bzBuffToBuffCompress - BZ2_bzBuffToBuffDecompress - BZ2_bzlibVersion - BZ2_bzopen - BZ2_bzdopen - BZ2_bzread - BZ2_bzwrite - BZ2_bzflush - BZ2_bzclose - BZ2_bzerror diff --git a/plugins/updater/bzip2-1.0.3/libbz2.dll b/plugins/updater/bzip2-1.0.3/libbz2.dll deleted file mode 100644 index 5452b54c8c..0000000000 Binary files a/plugins/updater/bzip2-1.0.3/libbz2.dll and /dev/null differ diff --git a/plugins/updater/bzip2-1.0.3/libbz2.dsp b/plugins/updater/bzip2-1.0.3/libbz2.dsp deleted file mode 100644 index a21a20f75f..0000000000 --- a/plugins/updater/bzip2-1.0.3/libbz2.dsp +++ /dev/null @@ -1,130 +0,0 @@ -# Microsoft Developer Studio Project File - Name="libbz2" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** •ÒW‚µ‚È‚¢‚Å‚­‚¾‚³‚¢ ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=libbz2 - Win32 Debug -!MESSAGE ‚±‚ê‚Í—LŒø‚ÈÒ²¸Ì§²Ù‚Å‚Í‚ ‚è‚Ü‚¹‚ñB ‚±‚ÌÌßÛ¼Þª¸Ä‚ðËÞÙÄÞ‚·‚邽‚ß‚É‚Í NMAKE ‚ðŽg—p‚µ‚Ä‚­‚¾‚³‚¢B -!MESSAGE [Ò²¸Ì§²Ù‚Ì´¸½Îß°Ä] ºÏÝÄÞ‚ðŽg—p‚µ‚ÄŽÀs‚µ‚Ä‚­‚¾‚³‚¢ -!MESSAGE -!MESSAGE NMAKE /f "libbz2.mak". -!MESSAGE -!MESSAGE NMAKE ‚ÌŽÀsŽž‚É\¬‚ðŽw’è‚Å‚«‚Ü‚· -!MESSAGE ºÏÝÄÞ ×²Ýã‚ÅϸۂÌÝ’è‚ð’è‹`‚µ‚Ü‚·B—á: -!MESSAGE -!MESSAGE NMAKE /f "libbz2.mak" CFG="libbz2 - Win32 Debug" -!MESSAGE -!MESSAGE ‘I‘ð‰Â”\‚ÈËÞÙÄÞ Ó°ÄÞ: -!MESSAGE -!MESSAGE "libbz2 - Win32 Release" ("Win32 (x86) Dynamic-Link Library" —p) -!MESSAGE "libbz2 - Win32 Debug" ("Win32 (x86) Dynamic-Link Library" —p) -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "libbz2 - 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 "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /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 /subsystem:windows /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 /subsystem:windows /dll /machine:I386 /out:"libbz2.dll" - -!ELSEIF "$(CFG)" == "libbz2 - 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 "Debug" -# PROP Intermediate_Dir "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" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /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 /subsystem:windows /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 /subsystem:windows /dll /debug /machine:I386 /out:"libbz2.dll" /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "libbz2 - Win32 Release" -# Name "libbz2 - Win32 Debug" -# Begin Source File - -SOURCE=.\blocksort.c -# End Source File -# Begin Source File - -SOURCE=.\bzlib.c -# End Source File -# Begin Source File - -SOURCE=.\bzlib.h -# End Source File -# Begin Source File - -SOURCE=.\bzlib_private.h -# End Source File -# Begin Source File - -SOURCE=.\compress.c -# End Source File -# Begin Source File - -SOURCE=.\crctable.c -# End Source File -# Begin Source File - -SOURCE=.\decompress.c -# End Source File -# Begin Source File - -SOURCE=.\huffman.c -# End Source File -# Begin Source File - -SOURCE=.\libbz2.def -# End Source File -# Begin Source File - -SOURCE=.\randtable.c -# End Source File -# End Target -# End Project diff --git a/plugins/updater/bzip2-1.0.3/libbz2.dsw b/plugins/updater/bzip2-1.0.3/libbz2.dsw deleted file mode 100644 index 38476efd11..0000000000 --- a/plugins/updater/bzip2-1.0.3/libbz2.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "libbz2"=".\libbz2.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/plugins/updater/bzip2-1.0.3/libbz2.ilk b/plugins/updater/bzip2-1.0.3/libbz2.ilk deleted file mode 100644 index 4172c7cfc7..0000000000 Binary files a/plugins/updater/bzip2-1.0.3/libbz2.ilk and /dev/null differ diff --git a/plugins/updater/bzip2-1.0.3/libbz2.plg b/plugins/updater/bzip2-1.0.3/libbz2.plg deleted file mode 100644 index 3fc4fea20d..0000000000 --- a/plugins/updater/bzip2-1.0.3/libbz2.plg +++ /dev/null @@ -1,95 +0,0 @@ - - -
-

Build Log

-

---------------------Configuration: libbz2 - Win32 Release-------------------- -

-

Command Lines

-Creating temporary file "C:\DOCUME~1\sje\LOCALS~1\Temp\RSP9.tmp" with contents -[ -/nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Fp"Release/libbz2.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c -"C:\Documents and Settings\sje\My Documents\MyProjects\miranda\plugins\updater\bzip2-1.0.3\blocksort.c" -"C:\Documents and Settings\sje\My Documents\MyProjects\miranda\plugins\updater\bzip2-1.0.3\bzlib.c" -"C:\Documents and Settings\sje\My Documents\MyProjects\miranda\plugins\updater\bzip2-1.0.3\compress.c" -"C:\Documents and Settings\sje\My Documents\MyProjects\miranda\plugins\updater\bzip2-1.0.3\crctable.c" -"C:\Documents and Settings\sje\My Documents\MyProjects\miranda\plugins\updater\bzip2-1.0.3\decompress.c" -"C:\Documents and Settings\sje\My Documents\MyProjects\miranda\plugins\updater\bzip2-1.0.3\huffman.c" -"C:\Documents and Settings\sje\My Documents\MyProjects\miranda\plugins\updater\bzip2-1.0.3\randtable.c" -] -Creating command line "cl.exe @C:\DOCUME~1\sje\LOCALS~1\Temp\RSP9.tmp" -Creating temporary file "C:\DOCUME~1\sje\LOCALS~1\Temp\RSPA.tmp" with contents -[ -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 /subsystem:windows /dll /incremental:no /pdb:"Release/libbz2.pdb" /machine:I386 /def:".\libbz2.def" /out:"libbz2.dll" /implib:"Release/libbz2.lib" -".\Release\blocksort.obj" -".\Release\bzlib.obj" -".\Release\compress.obj" -".\Release\crctable.obj" -".\Release\decompress.obj" -".\Release\huffman.obj" -".\Release\randtable.obj" -] -Creating command line "link.exe @C:\DOCUME~1\sje\LOCALS~1\Temp\RSPA.tmp" -

Output Window

-Compiling... -blocksort.c -bzlib.c -compress.c -crctable.c -decompress.c -huffman.c -randtable.c -Linking... - Creating library Release/libbz2.lib and object Release/libbz2.exp - - - -

Results

-libbz2.dll - 0 error(s), 0 warning(s) -

---------------------Configuration: libbz2 - Win32 Debug-------------------- -

-

Command Lines

-Creating temporary file "C:\DOCUME~1\sje\LOCALS~1\Temp\RSPE.tmp" with contents -[ -/nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /Fp"Debug/libbz2.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /c -"C:\Documents and Settings\sje\My Documents\MyProjects\miranda\plugins\updater\bzip2-1.0.3\blocksort.c" -"C:\Documents and Settings\sje\My Documents\MyProjects\miranda\plugins\updater\bzip2-1.0.3\bzlib.c" -"C:\Documents and Settings\sje\My Documents\MyProjects\miranda\plugins\updater\bzip2-1.0.3\compress.c" -"C:\Documents and Settings\sje\My Documents\MyProjects\miranda\plugins\updater\bzip2-1.0.3\crctable.c" -"C:\Documents and Settings\sje\My Documents\MyProjects\miranda\plugins\updater\bzip2-1.0.3\decompress.c" -"C:\Documents and Settings\sje\My Documents\MyProjects\miranda\plugins\updater\bzip2-1.0.3\huffman.c" -"C:\Documents and Settings\sje\My Documents\MyProjects\miranda\plugins\updater\bzip2-1.0.3\randtable.c" -] -Creating command line "cl.exe @C:\DOCUME~1\sje\LOCALS~1\Temp\RSPE.tmp" -Creating temporary file "C:\DOCUME~1\sje\LOCALS~1\Temp\RSPF.tmp" with contents -[ -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 /subsystem:windows /dll /incremental:yes /pdb:"Debug/libbz2.pdb" /debug /machine:I386 /def:".\libbz2.def" /out:"libbz2.dll" /implib:"Debug/libbz2.lib" /pdbtype:sept -".\Debug\blocksort.obj" -".\Debug\bzlib.obj" -".\Debug\compress.obj" -".\Debug\crctable.obj" -".\Debug\decompress.obj" -".\Debug\huffman.obj" -".\Debug\randtable.obj" -] -Creating command line "link.exe @C:\DOCUME~1\sje\LOCALS~1\Temp\RSPF.tmp" -

Output Window

-Compiling... -blocksort.c -bzlib.c -compress.c -crctable.c -decompress.c -huffman.c -randtable.c -Linking... - Creating library Debug/libbz2.lib and object Debug/libbz2.exp - - - -

Results

-libbz2.dll - 0 error(s), 0 warning(s) -
- - diff --git a/plugins/updater/bzip2-1.0.3/makefile.msc b/plugins/updater/bzip2-1.0.3/makefile.msc deleted file mode 100644 index 799a18a5f1..0000000000 --- a/plugins/updater/bzip2-1.0.3/makefile.msc +++ /dev/null @@ -1,63 +0,0 @@ -# Makefile for Microsoft Visual C++ 6.0 -# usage: nmake -f makefile.msc -# K.M. Syring (syring@gsf.de) -# Fixed up by JRS for bzip2-0.9.5d release. - -CC=cl -CFLAGS= -DWIN32 -MD -Ox -D_FILE_OFFSET_BITS=64 -nologo - -OBJS= blocksort.obj \ - huffman.obj \ - crctable.obj \ - randtable.obj \ - compress.obj \ - decompress.obj \ - bzlib.obj - -all: lib bzip2 test - -bzip2: lib - $(CC) $(CFLAGS) -o bzip2 bzip2.c libbz2.lib setargv.obj - $(CC) $(CFLAGS) -o bzip2recover bzip2recover.c - -lib: $(OBJS) - lib /out:libbz2.lib $(OBJS) - -test: bzip2 - type words1 - .\\bzip2 -1 < sample1.ref > sample1.rb2 - .\\bzip2 -2 < sample2.ref > sample2.rb2 - .\\bzip2 -3 < sample3.ref > sample3.rb2 - .\\bzip2 -d < sample1.bz2 > sample1.tst - .\\bzip2 -d < sample2.bz2 > sample2.tst - .\\bzip2 -ds < sample3.bz2 > sample3.tst - @echo All six of the fc's should find no differences. - @echo If fc finds an error on sample3.bz2, this could be - @echo because WinZip's 'TAR file smart CR/LF conversion' - @echo is too clever for its own good. Disable this option. - @echo The correct size for sample3.ref is 120,244. If it - @echo is 150,251, WinZip has messed it up. - fc sample1.bz2 sample1.rb2 - fc sample2.bz2 sample2.rb2 - fc sample3.bz2 sample3.rb2 - fc sample1.tst sample1.ref - fc sample2.tst sample2.ref - fc sample3.tst sample3.ref - - - -clean: - del *.obj - del libbz2.lib - del bzip2.exe - del bzip2recover.exe - del sample1.rb2 - del sample2.rb2 - del sample3.rb2 - del sample1.tst - del sample2.tst - del sample3.tst - -.c.obj: - $(CC) $(CFLAGS) -c $*.c -o $*.obj - diff --git a/plugins/updater/bzip2-1.0.3/manual.html b/plugins/updater/bzip2-1.0.3/manual.html deleted file mode 100644 index f59427f7f0..0000000000 --- a/plugins/updater/bzip2-1.0.3/manual.html +++ /dev/null @@ -1,2540 +0,0 @@ - - - -bzip2 and libbzip2, version 1.0.6 - - - -
-
-
-

-bzip2 and libbzip2, version 1.0.6

-

A program and library for data compression

-
-

-Julian Seward -

-
http://www.bzip.org
-
-

Version 1.0.6 of 6 September 2010

-
-
-

This program, bzip2, the - associated library libbzip2, and - all documentation, are copyright © 1996-2010 Julian Seward. - All rights reserved.

-

Redistribution and use in source and binary forms, with - or without modification, are permitted provided that the - following conditions are met:

-
    -
  • Redistributions of source code must retain the - above copyright notice, this list of conditions and the - following disclaimer.

  • -
  • The origin of this software must not be - misrepresented; you must not claim that you wrote the original - software. If you use this software in a product, an - acknowledgment in the product documentation would be - appreciated but is not required.

  • -
  • Altered source versions must be plainly marked - as such, and must not be misrepresented as being the original - software.

  • -
  • The name of the author may not be used to - endorse or promote products derived from this software without - specific prior written permission.

  • -
-

THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, - THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - THE POSSIBILITY OF SUCH DAMAGE.

-

PATENTS: To the best of my knowledge, - bzip2 and - libbzip2 do not use any patented - algorithms. However, I do not have the resources to carry - out a patent search. Therefore I cannot give any guarantee of - the above statement. -

-
-
-
-
- -
-

-1. Introduction

-

bzip2 compresses files -using the Burrows-Wheeler block-sorting text compression -algorithm, and Huffman coding. Compression is generally -considerably better than that achieved by more conventional -LZ77/LZ78-based compressors, and approaches the performance of -the PPM family of statistical compressors.

-

bzip2 is built on top of -libbzip2, a flexible library for -handling compressed data in the -bzip2 format. This manual -describes both how to use the program and how to work with the -library interface. Most of the manual is devoted to this -library, not the program, which is good news if your interest is -only in the program.

-
    -
  • How to use bzip2 describes how to use - bzip2; this is the only part - you need to read if you just want to know how to operate the - program.

  • -
  • Programming with libbzip2 describes the - programming interfaces in detail, and

  • -
  • Miscellanea records some - miscellaneous notes which I thought ought to be recorded - somewhere.

  • -
-
-
-

-2. How to use bzip2

- -

This chapter contains a copy of the -bzip2 man page, and nothing -else.

-
-

-2.1. NAME

-
    -
  • bzip2, - bunzip2 - a block-sorting file - compressor, v1.0.6

  • -
  • bzcat - - decompresses files to stdout

  • -
  • bzip2recover - - recovers data from damaged bzip2 files

  • -
-
-
-

-2.2. SYNOPSIS

-
    -
  • bzip2 [ - -cdfkqstvzVL123456789 ] [ filenames ... ]

  • -
  • bunzip2 [ - -fkvsVL ] [ filenames ... ]

  • -
  • bzcat [ -s ] [ - filenames ... ]

  • -
  • bzip2recover - filename

  • -
-
-
-

-2.3. DESCRIPTION

-

bzip2 compresses files -using the Burrows-Wheeler block sorting text compression -algorithm, and Huffman coding. Compression is generally -considerably better than that achieved by more conventional -LZ77/LZ78-based compressors, and approaches the performance of -the PPM family of statistical compressors.

-

The command-line options are deliberately very similar to -those of GNU gzip, but they are -not identical.

-

bzip2 expects a list of -file names to accompany the command-line flags. Each file is -replaced by a compressed version of itself, with the name -original_name.bz2. Each -compressed file has the same modification date, permissions, and, -when possible, ownership as the corresponding original, so that -these properties can be correctly restored at decompression time. -File name handling is naive in the sense that there is no -mechanism for preserving original file names, permissions, -ownerships or dates in filesystems which lack these concepts, or -have serious file name length restrictions, such as -MS-DOS.

-

bzip2 and -bunzip2 will by default not -overwrite existing files. If you want this to happen, specify -the -f flag.

-

If no file names are specified, -bzip2 compresses from standard -input to standard output. In this case, -bzip2 will decline to write -compressed output to a terminal, as this would be entirely -incomprehensible and therefore pointless.

-

bunzip2 (or -bzip2 -d) decompresses all -specified files. Files which were not created by -bzip2 will be detected and -ignored, and a warning issued. -bzip2 attempts to guess the -filename for the decompressed file from that of the compressed -file as follows:

-
    -
  • filename.bz2 - becomes - filename

  • -
  • filename.bz - becomes - filename

  • -
  • filename.tbz2 - becomes - filename.tar

  • -
  • filename.tbz - becomes - filename.tar

  • -
  • anyothername - becomes - anyothername.out

  • -
-

If the file does not end in one of the recognised endings, -.bz2, -.bz, -.tbz2 or -.tbz, -bzip2 complains that it cannot -guess the name of the original file, and uses the original name -with .out appended.

-

As with compression, supplying no filenames causes -decompression from standard input to standard output.

-

bunzip2 will correctly -decompress a file which is the concatenation of two or more -compressed files. The result is the concatenation of the -corresponding uncompressed files. Integrity testing -(-t) of concatenated compressed -files is also supported.

-

You can also compress or decompress files to the standard -output by giving the -c flag. -Multiple files may be compressed and decompressed like this. The -resulting outputs are fed sequentially to stdout. Compression of -multiple files in this manner generates a stream containing -multiple compressed file representations. Such a stream can be -decompressed correctly only by -bzip2 version 0.9.0 or later. -Earlier versions of bzip2 will -stop after decompressing the first file in the stream.

-

bzcat (or -bzip2 -dc) decompresses all -specified files to the standard output.

-

bzip2 will read arguments -from the environment variables -BZIP2 and -BZIP, in that order, and will -process them before any arguments read from the command line. -This gives a convenient way to supply default arguments.

-

Compression is always performed, even if the compressed -file is slightly larger than the original. Files of less than -about one hundred bytes tend to get larger, since the compression -mechanism has a constant overhead in the region of 50 bytes. -Random data (including the output of most file compressors) is -coded at about 8.05 bits per byte, giving an expansion of around -0.5%.

-

As a self-check for your protection, -bzip2 uses 32-bit CRCs to make -sure that the decompressed version of a file is identical to the -original. This guards against corruption of the compressed data, -and against undetected bugs in -bzip2 (hopefully very unlikely). -The chances of data corruption going undetected is microscopic, -about one chance in four billion for each file processed. Be -aware, though, that the check occurs upon decompression, so it -can only tell you that something is wrong. It can't help you -recover the original uncompressed data. You can use -bzip2recover to try to recover -data from damaged files.

-

Return values: 0 for a normal exit, 1 for environmental -problems (file not found, invalid flags, I/O errors, etc.), 2 -to indicate a corrupt compressed file, 3 for an internal -consistency error (eg, bug) which caused -bzip2 to panic.

-
-
-

-2.4. OPTIONS

-
-
-c --stdout
-

Compress or decompress to standard - output.

-
-d --decompress
-

Force decompression. - bzip2, - bunzip2 and - bzcat are really the same - program, and the decision about what actions to take is done on - the basis of which name is used. This flag overrides that - mechanism, and forces bzip2 to decompress.

-
-z --compress
-

The complement to - -d: forces compression, - regardless of the invokation name.

-
-t --test
-

Check integrity of the specified file(s), but - don't decompress them. This really performs a trial - decompression and throws away the result.

-
-f --force
-
-

Force overwrite of output files. Normally, - bzip2 will not overwrite - existing output files. Also forces - bzip2 to break hard links to - files, which it otherwise wouldn't do.

-

bzip2 normally declines - to decompress files which don't have the correct magic header - bytes. If forced (-f), - however, it will pass such files through unmodified. This is - how GNU gzip behaves.

-
-
-k --keep
-

Keep (don't delete) input files during - compression or decompression.

-
-s --small
-
-

Reduce memory usage, for compression, - decompression and testing. Files are decompressed and tested - using a modified algorithm which only requires 2.5 bytes per - block byte. This means any file can be decompressed in 2300k - of memory, albeit at about half the normal speed.

-

During compression, -s - selects a block size of 200k, which limits memory use to around - the same figure, at the expense of your compression ratio. In - short, if your machine is low on memory (8 megabytes or less), - use -s for everything. See - MEMORY MANAGEMENT below.

-
-
-q --quiet
-

Suppress non-essential warning messages. - Messages pertaining to I/O errors and other critical events - will not be suppressed.

-
-v --verbose
-

Verbose mode -- show the compression ratio for - each file processed. Further - -v's increase the verbosity - level, spewing out lots of information which is primarily of - interest for diagnostic purposes.

-
-L --license -V --version
-

Display the software version, license terms and - conditions.

-
-1 (or - --fast) to - -9 (or - -best)
-

Set the block size to 100 k, 200 k ... 900 k - when compressing. Has no effect when decompressing. See MEMORY MANAGEMENT below. The - --fast and - --best aliases are primarily - for GNU gzip compatibility. - In particular, --fast doesn't - make things significantly faster. And - --best merely selects the - default behaviour.

-
--
-

Treats all subsequent arguments as file names, - even if they start with a dash. This is so you can handle - files with names beginning with a dash, for example: - bzip2 -- - -myfilename.

-
---repetitive-fast, --repetitive-best -
-

These flags are redundant in versions 0.9.5 and - above. They provided some coarse control over the behaviour of - the sorting algorithm in earlier versions, which was sometimes - useful. 0.9.5 and above have an improved algorithm which - renders these flags irrelevant.

-
-
-
-

-2.5. MEMORY MANAGEMENT

-

bzip2 compresses large -files in blocks. The block size affects both the compression -ratio achieved, and the amount of memory needed for compression -and decompression. The flags -1 -through -9 specify the block -size to be 100,000 bytes through 900,000 bytes (the default) -respectively. At decompression time, the block size used for -compression is read from the header of the compressed file, and -bunzip2 then allocates itself -just enough memory to decompress the file. Since block sizes are -stored in compressed files, it follows that the flags --1 to --9 are irrelevant to and so -ignored during decompression.

-

Compression and decompression requirements, in bytes, can be -estimated as:

-
Compression:   400k + ( 8 x block size )
-
-Decompression: 100k + ( 4 x block size ), or
-               100k + ( 2.5 x block size )
-

Larger block sizes give rapidly diminishing marginal -returns. Most of the compression comes from the first two or -three hundred k of block size, a fact worth bearing in mind when -using bzip2 on small machines. -It is also important to appreciate that the decompression memory -requirement is set at compression time by the choice of block -size.

-

For files compressed with the default 900k block size, -bunzip2 will require about 3700 -kbytes to decompress. To support decompression of any file on a -4 megabyte machine, bunzip2 has -an option to decompress using approximately half this amount of -memory, about 2300 kbytes. Decompression speed is also halved, -so you should use this option only where necessary. The relevant -flag is -s.

-

In general, try and use the largest block size memory -constraints allow, since that maximises the compression achieved. -Compression and decompression speed are virtually unaffected by -block size.

-

Another significant point applies to files which fit in a -single block -- that means most files you'd encounter using a -large block size. The amount of real memory touched is -proportional to the size of the file, since the file is smaller -than a block. For example, compressing a file 20,000 bytes long -with the flag -9 will cause the -compressor to allocate around 7600k of memory, but only touch -400k + 20000 * 8 = 560 kbytes of it. Similarly, the decompressor -will allocate 3700k but only touch 100k + 20000 * 4 = 180 -kbytes.

-

Here is a table which summarises the maximum memory usage -for different block sizes. Also recorded is the total compressed -size for 14 files of the Calgary Text Compression Corpus -totalling 3,141,622 bytes. This column gives some feel for how -compression varies with block size. These figures tend to -understate the advantage of larger block sizes for larger files, -since the Corpus is dominated by smaller files.

-
        Compress   Decompress   Decompress   Corpus
-Flag     usage      usage       -s usage     Size
-
- -1      1200k       500k         350k      914704
- -2      2000k       900k         600k      877703
- -3      2800k      1300k         850k      860338
- -4      3600k      1700k        1100k      846899
- -5      4400k      2100k        1350k      845160
- -6      5200k      2500k        1600k      838626
- -7      6100k      2900k        1850k      834096
- -8      6800k      3300k        2100k      828642
- -9      7600k      3700k        2350k      828642
-
-
-

-2.6. RECOVERING DATA FROM DAMAGED FILES

-

bzip2 compresses files in -blocks, usually 900kbytes long. Each block is handled -independently. If a media or transmission error causes a -multi-block .bz2 file to become -damaged, it may be possible to recover data from the undamaged -blocks in the file.

-

The compressed representation of each block is delimited by -a 48-bit pattern, which makes it possible to find the block -boundaries with reasonable certainty. Each block also carries -its own 32-bit CRC, so damaged blocks can be distinguished from -undamaged ones.

-

bzip2recover is a simple -program whose purpose is to search for blocks in -.bz2 files, and write each block -out into its own .bz2 file. You -can then use bzip2 -t to test -the integrity of the resulting files, and decompress those which -are undamaged.

-

bzip2recover takes a -single argument, the name of the damaged file, and writes a -number of files rec0001file.bz2, -rec0002file.bz2, etc, containing -the extracted blocks. The output filenames are designed so that -the use of wildcards in subsequent processing -- for example, -bzip2 -dc rec*file.bz2 > -recovered_data -- lists the files in the correct -order.

-

bzip2recover should be of -most use dealing with large .bz2 -files, as these will contain many blocks. It is clearly futile -to use it on damaged single-block files, since a damaged block -cannot be recovered. If you wish to minimise any potential data -loss through media or transmission errors, you might consider -compressing with a smaller block size.

-
-
-

-2.7. PERFORMANCE NOTES

-

The sorting phase of compression gathers together similar -strings in the file. Because of this, files containing very long -runs of repeated symbols, like "aabaabaabaab ..." (repeated -several hundred times) may compress more slowly than normal. -Versions 0.9.5 and above fare much better than previous versions -in this respect. The ratio between worst-case and average-case -compression time is in the region of 10:1. For previous -versions, this figure was more like 100:1. You can use the --vvvv option to monitor progress -in great detail, if you want.

-

Decompression speed is unaffected by these -phenomena.

-

bzip2 usually allocates -several megabytes of memory to operate in, and then charges all -over it in a fairly random fashion. This means that performance, -both for compressing and decompressing, is largely determined by -the speed at which your machine can service cache misses. -Because of this, small changes to the code to reduce the miss -rate have been observed to give disproportionately large -performance improvements. I imagine -bzip2 will perform best on -machines with very large caches.

-
-
-

-2.8. CAVEATS

-

I/O error messages are not as helpful as they could be. -bzip2 tries hard to detect I/O -errors and exit cleanly, but the details of what the problem is -sometimes seem rather misleading.

-

This manual page pertains to version 1.0.6 of -bzip2. Compressed data created by -this version is entirely forwards and backwards compatible with the -previous public releases, versions 0.1pl2, 0.9.0 and 0.9.5, 1.0.0, -1.0.1, 1.0.2 and 1.0.3, but with the following exception: 0.9.0 and -above can correctly decompress multiple concatenated compressed files. -0.1pl2 cannot do this; it will stop after decompressing just the first -file in the stream.

-

bzip2recover versions -prior to 1.0.2 used 32-bit integers to represent bit positions in -compressed files, so it could not handle compressed files more -than 512 megabytes long. Versions 1.0.2 and above use 64-bit ints -on some platforms which support them (GNU supported targets, and -Windows). To establish whether or not -bzip2recover was built with such -a limitation, run it without arguments. In any event you can -build yourself an unlimited version if you can recompile it with -MaybeUInt64 set to be an -unsigned 64-bit integer.

-
-
-

-2.9. AUTHOR

-

Julian Seward, -jseward@bzip.org

-

The ideas embodied in -bzip2 are due to (at least) the -following people: Michael Burrows and David Wheeler (for the -block sorting transformation), David Wheeler (again, for the -Huffman coder), Peter Fenwick (for the structured coding model in -the original bzip, and many -refinements), and Alistair Moffat, Radford Neal and Ian Witten -(for the arithmetic coder in the original -bzip). I am much indebted for -their help, support and advice. See the manual in the source -distribution for pointers to sources of documentation. Christian -von Roques encouraged me to look for faster sorting algorithms, -so as to speed up compression. Bela Lubkin encouraged me to -improve the worst-case compression performance. -Donna Robinson XMLised the documentation. -Many people sent -patches, helped with portability problems, lent machines, gave -advice and were generally helpful.

-
-
-
-

-3.  -Programming with libbzip2 -

- -

This chapter describes the programming interface to -libbzip2.

-

For general background information, particularly about -memory use and performance aspects, you'd be well advised to read -How to use bzip2 as well.

-
-

-3.1. Top-level structure

-

libbzip2 is a flexible -library for compressing and decompressing data in the -bzip2 data format. Although -packaged as a single entity, it helps to regard the library as -three separate parts: the low level interface, and the high level -interface, and some utility functions.

-

The structure of -libbzip2's interfaces is similar -to that of Jean-loup Gailly's and Mark Adler's excellent -zlib library.

-

All externally visible symbols have names beginning -BZ2_. This is new in version -1.0. The intention is to minimise pollution of the namespaces of -library clients.

-

To use any part of the library, you need to -#include <bzlib.h> -into your sources.

-
-

-3.1.1. Low-level summary

-

This interface provides services for compressing and -decompressing data in memory. There's no provision for dealing -with files, streams or any other I/O mechanisms, just straight -memory-to-memory work. In fact, this part of the library can be -compiled without inclusion of -stdio.h, which may be helpful -for embedded applications.

-

The low-level part of the library has no global variables -and is therefore thread-safe.

-

Six routines make up the low level interface: -BZ2_bzCompressInit, -BZ2_bzCompress, and -BZ2_bzCompressEnd for -compression, and a corresponding trio -BZ2_bzDecompressInit, -BZ2_bzDecompress and -BZ2_bzDecompressEnd for -decompression. The *Init -functions allocate memory for compression/decompression and do -other initialisations, whilst the -*End functions close down -operations and release memory.

-

The real work is done by -BZ2_bzCompress and -BZ2_bzDecompress. These -compress and decompress data from a user-supplied input buffer to -a user-supplied output buffer. These buffers can be any size; -arbitrary quantities of data are handled by making repeated calls -to these functions. This is a flexible mechanism allowing a -consumer-pull style of activity, or producer-push, or a mixture -of both.

-
-
-

-3.1.2. High-level summary

-

This interface provides some handy wrappers around the -low-level interface to facilitate reading and writing -bzip2 format files -(.bz2 files). The routines -provide hooks to facilitate reading files in which the -bzip2 data stream is embedded -within some larger-scale file structure, or where there are -multiple bzip2 data streams -concatenated end-to-end.

-

For reading files, -BZ2_bzReadOpen, -BZ2_bzRead, -BZ2_bzReadClose and -BZ2_bzReadGetUnused are -supplied. For writing files, -BZ2_bzWriteOpen, -BZ2_bzWrite and -BZ2_bzWriteFinish are -available.

-

As with the low-level library, no global variables are used -so the library is per se thread-safe. However, if I/O errors -occur whilst reading or writing the underlying compressed files, -you may have to consult errno to -determine the cause of the error. In that case, you'd need a C -library which correctly supports -errno in a multithreaded -environment.

-

To make the library a little simpler and more portable, -BZ2_bzReadOpen and -BZ2_bzWriteOpen require you to -pass them file handles (FILE*s) -which have previously been opened for reading or writing -respectively. That avoids portability problems associated with -file operations and file attributes, whilst not being much of an -imposition on the programmer.

-
-
-

-3.1.3. Utility functions summary

-

For very simple needs, -BZ2_bzBuffToBuffCompress and -BZ2_bzBuffToBuffDecompress are -provided. These compress data in memory from one buffer to -another buffer in a single function call. You should assess -whether these functions fulfill your memory-to-memory -compression/decompression requirements before investing effort in -understanding the more general but more complex low-level -interface.

-

Yoshioka Tsuneo -(tsuneo@rr.iij4u.or.jp) has -contributed some functions to give better -zlib compatibility. These -functions are BZ2_bzopen, -BZ2_bzread, -BZ2_bzwrite, -BZ2_bzflush, -BZ2_bzclose, -BZ2_bzerror and -BZ2_bzlibVersion. You may find -these functions more convenient for simple file reading and -writing, than those in the high-level interface. These functions -are not (yet) officially part of the library, and are minimally -documented here. If they break, you get to keep all the pieces. -I hope to document them properly when time permits.

-

Yoshioka also contributed modifications to allow the -library to be built as a Windows DLL.

-
-
-
-

-3.2. Error handling

-

The library is designed to recover cleanly in all -situations, including the worst-case situation of decompressing -random data. I'm not 100% sure that it can always do this, so -you might want to add a signal handler to catch segmentation -violations during decompression if you are feeling especially -paranoid. I would be interested in hearing more about the -robustness of the library to corrupted compressed data.

-

Version 1.0.3 more robust in this respect than any -previous version. Investigations with Valgrind (a tool for detecting -problems with memory management) indicate -that, at least for the few files I tested, all single-bit errors -in the decompressed data are caught properly, with no -segmentation faults, no uses of uninitialised data, no out of -range reads or writes, and no infinite looping in the decompressor. -So it's certainly pretty robust, although -I wouldn't claim it to be totally bombproof.

-

The file bzlib.h contains -all definitions needed to use the library. In particular, you -should definitely not include -bzlib_private.h.

-

In bzlib.h, the various -return values are defined. The following list is not intended as -an exhaustive description of the circumstances in which a given -value may be returned -- those descriptions are given later. -Rather, it is intended to convey the rough meaning of each return -value. The first five actions are normal and not intended to -denote an error situation.

-
-
BZ_OK
-

The requested action was completed - successfully.

-
BZ_RUN_OK, BZ_FLUSH_OK, - BZ_FINISH_OK
-

In - BZ2_bzCompress, the requested - flush/finish/nothing-special action was completed - successfully.

-
BZ_STREAM_END
-

Compression of data was completed, or the - logical stream end was detected during - decompression.

-
-

The following return values indicate an error of some -kind.

-
-
BZ_CONFIG_ERROR
-

Indicates that the library has been improperly - compiled on your platform -- a major configuration error. - Specifically, it means that - sizeof(char), - sizeof(short) and - sizeof(int) are not 1, 2 and - 4 respectively, as they should be. Note that the library - should still work properly on 64-bit platforms which follow - the LP64 programming model -- that is, where - sizeof(long) and - sizeof(void*) are 8. Under - LP64, sizeof(int) is still 4, - so libbzip2, which doesn't - use the long type, is - OK.

-
BZ_SEQUENCE_ERROR
-

When using the library, it is important to call - the functions in the correct sequence and with data structures - (buffers etc) in the correct states. - libbzip2 checks as much as it - can to ensure this is happening, and returns - BZ_SEQUENCE_ERROR if not. - Code which complies precisely with the function semantics, as - detailed below, should never receive this value; such an event - denotes buggy code which you should - investigate.

-
BZ_PARAM_ERROR
-

Returned when a parameter to a function call is - out of range or otherwise manifestly incorrect. As with - BZ_SEQUENCE_ERROR, this - denotes a bug in the client code. The distinction between - BZ_PARAM_ERROR and - BZ_SEQUENCE_ERROR is a bit - hazy, but still worth making.

-
BZ_MEM_ERROR
-

Returned when a request to allocate memory - failed. Note that the quantity of memory needed to decompress - a stream cannot be determined until the stream's header has - been read. So - BZ2_bzDecompress and - BZ2_bzRead may return - BZ_MEM_ERROR even though some - of the compressed data has been read. The same is not true - for compression; once - BZ2_bzCompressInit or - BZ2_bzWriteOpen have - successfully completed, - BZ_MEM_ERROR cannot - occur.

-
BZ_DATA_ERROR
-

Returned when a data integrity error is - detected during decompression. Most importantly, this means - when stored and computed CRCs for the data do not match. This - value is also returned upon detection of any other anomaly in - the compressed data.

-
BZ_DATA_ERROR_MAGIC
-

As a special case of - BZ_DATA_ERROR, it is - sometimes useful to know when the compressed stream does not - start with the correct magic bytes ('B' 'Z' - 'h').

-
BZ_IO_ERROR
-

Returned by - BZ2_bzRead and - BZ2_bzWrite when there is an - error reading or writing in the compressed file, and by - BZ2_bzReadOpen and - BZ2_bzWriteOpen for attempts - to use a file for which the error indicator (viz, - ferror(f)) is set. On - receipt of BZ_IO_ERROR, the - caller should consult errno - and/or perror to acquire - operating-system specific information about the - problem.

-
BZ_UNEXPECTED_EOF
-

Returned by - BZ2_bzRead when the - compressed file finishes before the logical end of stream is - detected.

-
BZ_OUTBUFF_FULL
-

Returned by - BZ2_bzBuffToBuffCompress and - BZ2_bzBuffToBuffDecompress to - indicate that the output data will not fit into the output - buffer provided.

-
-
-
-

-3.3. Low-level interface

-
-

-3.3.1. BZ2_bzCompressInit

-
typedef struct {
-  char *next_in;
-  unsigned int avail_in;
-  unsigned int total_in_lo32;
-  unsigned int total_in_hi32;
-
-  char *next_out;
-  unsigned int avail_out;
-  unsigned int total_out_lo32;
-  unsigned int total_out_hi32;
-
-  void *state;
-
-  void *(*bzalloc)(void *,int,int);
-  void (*bzfree)(void *,void *);
-  void *opaque;
-} bz_stream;
-
-int BZ2_bzCompressInit ( bz_stream *strm, 
-                         int blockSize100k, 
-                         int verbosity,
-                         int workFactor );
-

Prepares for compression. The -bz_stream structure holds all -data pertaining to the compression activity. A -bz_stream structure should be -allocated and initialised prior to the call. The fields of -bz_stream comprise the entirety -of the user-visible data. state -is a pointer to the private data structures required for -compression.

-

Custom memory allocators are supported, via fields -bzalloc, -bzfree, and -opaque. The value -opaque is passed to as the first -argument to all calls to bzalloc -and bzfree, but is otherwise -ignored by the library. The call bzalloc ( -opaque, n, m ) is expected to return a pointer -p to n * -m bytes of memory, and bzfree ( -opaque, p ) should free that memory.

-

If you don't want to use a custom memory allocator, set -bzalloc, -bzfree and -opaque to -NULL, and the library will then -use the standard malloc / -free routines.

-

Before calling -BZ2_bzCompressInit, fields -bzalloc, -bzfree and -opaque should be filled -appropriately, as just described. Upon return, the internal -state will have been allocated and initialised, and -total_in_lo32, -total_in_hi32, -total_out_lo32 and -total_out_hi32 will have been -set to zero. These four fields are used by the library to inform -the caller of the total amount of data passed into and out of the -library, respectively. You should not try to change them. As of -version 1.0, 64-bit counts are maintained, even on 32-bit -platforms, using the _hi32 -fields to store the upper 32 bits of the count. So, for example, -the total amount of data in is (total_in_hi32 -<< 32) + total_in_lo32.

-

Parameter blockSize100k -specifies the block size to be used for compression. It should -be a value between 1 and 9 inclusive, and the actual block size -used is 100000 x this figure. 9 gives the best compression but -takes most memory.

-

Parameter verbosity should -be set to a number between 0 and 4 inclusive. 0 is silent, and -greater numbers give increasingly verbose monitoring/debugging -output. If the library has been compiled with --DBZ_NO_STDIO, no such output -will appear for any verbosity setting.

-

Parameter workFactor -controls how the compression phase behaves when presented with -worst case, highly repetitive, input data. If compression runs -into difficulties caused by repetitive data, the library switches -from the standard sorting algorithm to a fallback algorithm. The -fallback is slower than the standard algorithm by perhaps a -factor of three, but always behaves reasonably, no matter how bad -the input.

-

Lower values of workFactor -reduce the amount of effort the standard algorithm will expend -before resorting to the fallback. You should set this parameter -carefully; too low, and many inputs will be handled by the -fallback algorithm and so compress rather slowly, too high, and -your average-to-worst case compression times can become very -large. The default value of 30 gives reasonable behaviour over a -wide range of circumstances.

-

Allowable values range from 0 to 250 inclusive. 0 is a -special case, equivalent to using the default value of 30.

-

Note that the compressed output generated is the same -regardless of whether or not the fallback algorithm is -used.

-

Be aware also that this parameter may disappear entirely in -future versions of the library. In principle it should be -possible to devise a good way to automatically choose which -algorithm to use. Such a mechanism would render the parameter -obsolete.

-

Possible return values:

-
BZ_CONFIG_ERROR
-  if the library has been mis-compiled
-BZ_PARAM_ERROR
-  if strm is NULL 
-  or blockSize < 1 or blockSize > 9
-  or verbosity < 0 or verbosity > 4
-  or workFactor < 0 or workFactor > 250
-BZ_MEM_ERROR 
-  if not enough memory is available
-BZ_OK 
-  otherwise
-

Allowable next actions:

-
BZ2_bzCompress
-  if BZ_OK is returned
-  no specific action needed in case of error
-
-
-

-3.3.2. BZ2_bzCompress

-
int BZ2_bzCompress ( bz_stream *strm, int action );
-

Provides more input and/or output buffer space for the -library. The caller maintains input and output buffers, and -calls BZ2_bzCompress to transfer -data between them.

-

Before each call to -BZ2_bzCompress, -next_in should point at the data -to be compressed, and avail_in -should indicate how many bytes the library may read. -BZ2_bzCompress updates -next_in, -avail_in and -total_in to reflect the number -of bytes it has read.

-

Similarly, next_out should -point to a buffer in which the compressed data is to be placed, -with avail_out indicating how -much output space is available. -BZ2_bzCompress updates -next_out, -avail_out and -total_out to reflect the number -of bytes output.

-

You may provide and remove as little or as much data as you -like on each call of -BZ2_bzCompress. In the limit, -it is acceptable to supply and remove data one byte at a time, -although this would be terribly inefficient. You should always -ensure that at least one byte of output space is available at -each call.

-

A second purpose of -BZ2_bzCompress is to request a -change of mode of the compressed stream.

-

Conceptually, a compressed stream can be in one of four -states: IDLE, RUNNING, FLUSHING and FINISHING. Before -initialisation -(BZ2_bzCompressInit) and after -termination (BZ2_bzCompressEnd), -a stream is regarded as IDLE.

-

Upon initialisation -(BZ2_bzCompressInit), the stream -is placed in the RUNNING state. Subsequent calls to -BZ2_bzCompress should pass -BZ_RUN as the requested action; -other actions are illegal and will result in -BZ_SEQUENCE_ERROR.

-

At some point, the calling program will have provided all -the input data it wants to. It will then want to finish up -- in -effect, asking the library to process any data it might have -buffered internally. In this state, -BZ2_bzCompress will no longer -attempt to read data from -next_in, but it will want to -write data to next_out. Because -the output buffer supplied by the user can be arbitrarily small, -the finishing-up operation cannot necessarily be done with a -single call of -BZ2_bzCompress.

-

Instead, the calling program passes -BZ_FINISH as an action to -BZ2_bzCompress. This changes -the stream's state to FINISHING. Any remaining input (ie, -next_in[0 .. avail_in-1]) is -compressed and transferred to the output buffer. To do this, -BZ2_bzCompress must be called -repeatedly until all the output has been consumed. At that -point, BZ2_bzCompress returns -BZ_STREAM_END, and the stream's -state is set back to IDLE. -BZ2_bzCompressEnd should then be -called.

-

Just to make sure the calling program does not cheat, the -library makes a note of avail_in -at the time of the first call to -BZ2_bzCompress which has -BZ_FINISH as an action (ie, at -the time the program has announced its intention to not supply -any more input). By comparing this value with that of -avail_in over subsequent calls -to BZ2_bzCompress, the library -can detect any attempts to slip in more data to compress. Any -calls for which this is detected will return -BZ_SEQUENCE_ERROR. This -indicates a programming mistake which should be corrected.

-

Instead of asking to finish, the calling program may ask -BZ2_bzCompress to take all the -remaining input, compress it and terminate the current -(Burrows-Wheeler) compression block. This could be useful for -error control purposes. The mechanism is analogous to that for -finishing: call BZ2_bzCompress -with an action of BZ_FLUSH, -remove output data, and persist with the -BZ_FLUSH action until the value -BZ_RUN is returned. As with -finishing, BZ2_bzCompress -detects any attempt to provide more input data once the flush has -begun.

-

Once the flush is complete, the stream returns to the -normal RUNNING state.

-

This all sounds pretty complex, but isn't really. Here's a -table which shows which actions are allowable in each state, what -action will be taken, what the next state is, and what the -non-error return values are. Note that you can't explicitly ask -what state the stream is in, but nor do you need to -- it can be -inferred from the values returned by -BZ2_bzCompress.

-
IDLE/any
-  Illegal.  IDLE state only exists after BZ2_bzCompressEnd or
-  before BZ2_bzCompressInit.
-  Return value = BZ_SEQUENCE_ERROR
-
-RUNNING/BZ_RUN
-  Compress from next_in to next_out as much as possible.
-  Next state = RUNNING
-  Return value = BZ_RUN_OK
-
-RUNNING/BZ_FLUSH
-  Remember current value of next_in. Compress from next_in
-  to next_out as much as possible, but do not accept any more input.
-  Next state = FLUSHING
-  Return value = BZ_FLUSH_OK
-
-RUNNING/BZ_FINISH
-  Remember current value of next_in. Compress from next_in
-  to next_out as much as possible, but do not accept any more input.
-  Next state = FINISHING
-  Return value = BZ_FINISH_OK
-
-FLUSHING/BZ_FLUSH
-  Compress from next_in to next_out as much as possible, 
-  but do not accept any more input.
-  If all the existing input has been used up and all compressed
-  output has been removed
-    Next state = RUNNING; Return value = BZ_RUN_OK
-  else
-    Next state = FLUSHING; Return value = BZ_FLUSH_OK
-
-FLUSHING/other     
-  Illegal.
-  Return value = BZ_SEQUENCE_ERROR
-
-FINISHING/BZ_FINISH
-  Compress from next_in to next_out as much as possible,
-  but to not accept any more input.  
-  If all the existing input has been used up and all compressed
-  output has been removed
-    Next state = IDLE; Return value = BZ_STREAM_END
-  else
-    Next state = FINISHING; Return value = BZ_FINISH_OK
-
-FINISHING/other
-  Illegal.
-  Return value = BZ_SEQUENCE_ERROR
-

That still looks complicated? Well, fair enough. The -usual sequence of calls for compressing a load of data is:

-
    -
  1. Get started with - BZ2_bzCompressInit.

  2. -
  3. Shovel data in and shlurp out its compressed form - using zero or more calls of - BZ2_bzCompress with action = - BZ_RUN.

  4. -
  5. Finish up. Repeatedly call - BZ2_bzCompress with action = - BZ_FINISH, copying out the - compressed output, until - BZ_STREAM_END is - returned.

  6. -
  7. Close up and go home. Call - BZ2_bzCompressEnd.

  8. -
-

If the data you want to compress fits into your input -buffer all at once, you can skip the calls of -BZ2_bzCompress ( ..., BZ_RUN ) -and just do the BZ2_bzCompress ( ..., BZ_FINISH -) calls.

-

All required memory is allocated by -BZ2_bzCompressInit. The -compression library can accept any data at all (obviously). So -you shouldn't get any error return values from the -BZ2_bzCompress calls. If you -do, they will be -BZ_SEQUENCE_ERROR, and indicate -a bug in your programming.

-

Trivial other possible return values:

-
BZ_PARAM_ERROR
-  if strm is NULL, or strm->s is NULL
-
-
-

-3.3.3. BZ2_bzCompressEnd

-
int BZ2_bzCompressEnd ( bz_stream *strm );
-

Releases all memory associated with a compression -stream.

-

Possible return values:

-
BZ_PARAM_ERROR  if strm is NULL or strm->s is NULL
-BZ_OK           otherwise
-
-
-

-3.3.4. BZ2_bzDecompressInit

-
int BZ2_bzDecompressInit ( bz_stream *strm, int verbosity, int small );
-

Prepares for decompression. As with -BZ2_bzCompressInit, a -bz_stream record should be -allocated and initialised before the call. Fields -bzalloc, -bzfree and -opaque should be set if a custom -memory allocator is required, or made -NULL for the normal -malloc / -free routines. Upon return, the -internal state will have been initialised, and -total_in and -total_out will be zero.

-

For the meaning of parameter -verbosity, see -BZ2_bzCompressInit.

-

If small is nonzero, the -library will use an alternative decompression algorithm which -uses less memory but at the cost of decompressing more slowly -(roughly speaking, half the speed, but the maximum memory -requirement drops to around 2300k). See How to use bzip2 -for more information on memory management.

-

Note that the amount of memory needed to decompress a -stream cannot be determined until the stream's header has been -read, so even if -BZ2_bzDecompressInit succeeds, a -subsequent BZ2_bzDecompress -could fail with -BZ_MEM_ERROR.

-

Possible return values:

-
BZ_CONFIG_ERROR
-  if the library has been mis-compiled
-BZ_PARAM_ERROR
-  if ( small != 0 && small != 1 )
-  or (verbosity <; 0 || verbosity > 4)
-BZ_MEM_ERROR
-  if insufficient memory is available
-

Allowable next actions:

-
BZ2_bzDecompress
-  if BZ_OK was returned
-  no specific action required in case of error
-
-
-

-3.3.5. BZ2_bzDecompress

-
int BZ2_bzDecompress ( bz_stream *strm );
-

Provides more input and/out output buffer space for the -library. The caller maintains input and output buffers, and uses -BZ2_bzDecompress to transfer -data between them.

-

Before each call to -BZ2_bzDecompress, -next_in should point at the -compressed data, and avail_in -should indicate how many bytes the library may read. -BZ2_bzDecompress updates -next_in, -avail_in and -total_in to reflect the number -of bytes it has read.

-

Similarly, next_out should -point to a buffer in which the uncompressed output is to be -placed, with avail_out -indicating how much output space is available. -BZ2_bzCompress updates -next_out, -avail_out and -total_out to reflect the number -of bytes output.

-

You may provide and remove as little or as much data as you -like on each call of -BZ2_bzDecompress. In the limit, -it is acceptable to supply and remove data one byte at a time, -although this would be terribly inefficient. You should always -ensure that at least one byte of output space is available at -each call.

-

Use of BZ2_bzDecompress is -simpler than -BZ2_bzCompress.

-

You should provide input and remove output as described -above, and repeatedly call -BZ2_bzDecompress until -BZ_STREAM_END is returned. -Appearance of BZ_STREAM_END -denotes that BZ2_bzDecompress -has detected the logical end of the compressed stream. -BZ2_bzDecompress will not -produce BZ_STREAM_END until all -output data has been placed into the output buffer, so once -BZ_STREAM_END appears, you are -guaranteed to have available all the decompressed output, and -BZ2_bzDecompressEnd can safely -be called.

-

If case of an error return value, you should call -BZ2_bzDecompressEnd to clean up -and release memory.

-

Possible return values:

-
BZ_PARAM_ERROR
-  if strm is NULL or strm->s is NULL
-  or strm->avail_out < 1
-BZ_DATA_ERROR
-  if a data integrity error is detected in the compressed stream
-BZ_DATA_ERROR_MAGIC
-  if the compressed stream doesn't begin with the right magic bytes
-BZ_MEM_ERROR
-  if there wasn't enough memory available
-BZ_STREAM_END
-  if the logical end of the data stream was detected and all
-  output in has been consumed, eg s-->avail_out > 0
-BZ_OK
-  otherwise
-

Allowable next actions:

-
BZ2_bzDecompress
-  if BZ_OK was returned
-BZ2_bzDecompressEnd
-  otherwise
-
-
-

-3.3.6. BZ2_bzDecompressEnd

-
int BZ2_bzDecompressEnd ( bz_stream *strm );
-

Releases all memory associated with a decompression -stream.

-

Possible return values:

-
BZ_PARAM_ERROR
-  if strm is NULL or strm->s is NULL
-BZ_OK
-  otherwise
-

Allowable next actions:

-
  None.
-
-
-
-

-3.4. High-level interface

-

This interface provides functions for reading and writing -bzip2 format files. First, some -general points.

-
    -
  • All of the functions take an - int* first argument, - bzerror. After each call, - bzerror should be consulted - first to determine the outcome of the call. If - bzerror is - BZ_OK, the call completed - successfully, and only then should the return value of the - function (if any) be consulted. If - bzerror is - BZ_IO_ERROR, there was an - error reading/writing the underlying compressed file, and you - should then consult errno / - perror to determine the cause - of the difficulty. bzerror - may also be set to various other values; precise details are - given on a per-function basis below.

  • -
  • If bzerror indicates - an error (ie, anything except - BZ_OK and - BZ_STREAM_END), you should - immediately call - BZ2_bzReadClose (or - BZ2_bzWriteClose, depending on - whether you are attempting to read or to write) to free up all - resources associated with the stream. Once an error has been - indicated, behaviour of all calls except - BZ2_bzReadClose - (BZ2_bzWriteClose) is - undefined. The implication is that (1) - bzerror should be checked - after each call, and (2) if - bzerror indicates an error, - BZ2_bzReadClose - (BZ2_bzWriteClose) should then - be called to clean up.

  • -
  • The FILE* arguments - passed to BZ2_bzReadOpen / - BZ2_bzWriteOpen should be set - to binary mode. Most Unix systems will do this by default, but - other platforms, including Windows and Mac, will not. If you - omit this, you may encounter problems when moving code to new - platforms.

  • -
  • Memory allocation requests are handled by - malloc / - free. At present there is no - facility for user-defined memory allocators in the file I/O - functions (could easily be added, though).

  • -
-
-

-3.4.1. BZ2_bzReadOpen

-
typedef void BZFILE;
-
-BZFILE *BZ2_bzReadOpen( int *bzerror, FILE *f, 
-                        int verbosity, int small,
-                        void *unused, int nUnused );
-

Prepare to read compressed data from file handle -f. -f should refer to a file which -has been opened for reading, and for which the error indicator -(ferror(f))is not set. If -small is 1, the library will try -to decompress using less memory, at the expense of speed.

-

For reasons explained below, -BZ2_bzRead will decompress the -nUnused bytes starting at -unused, before starting to read -from the file f. At most -BZ_MAX_UNUSED bytes may be -supplied like this. If this facility is not required, you should -pass NULL and -0 for -unused and -nUnused respectively.

-

For the meaning of parameters -small and -verbosity, see -BZ2_bzDecompressInit.

-

The amount of memory needed to decompress a file cannot be -determined until the file's header has been read. So it is -possible that BZ2_bzReadOpen -returns BZ_OK but a subsequent -call of BZ2_bzRead will return -BZ_MEM_ERROR.

-

Possible assignments to -bzerror:

-
BZ_CONFIG_ERROR
-  if the library has been mis-compiled
-BZ_PARAM_ERROR
-  if f is NULL
-  or small is neither 0 nor 1
-  or ( unused == NULL && nUnused != 0 )
-  or ( unused != NULL && !(0 <= nUnused <= BZ_MAX_UNUSED) )
-BZ_IO_ERROR
-  if ferror(f) is nonzero
-BZ_MEM_ERROR
-  if insufficient memory is available
-BZ_OK
-  otherwise.
-

Possible return values:

-
Pointer to an abstract BZFILE
-  if bzerror is BZ_OK
-NULL
-  otherwise
-

Allowable next actions:

-
BZ2_bzRead
-  if bzerror is BZ_OK
-BZ2_bzClose
-  otherwise
-
-
-

-3.4.2. BZ2_bzRead

-
int BZ2_bzRead ( int *bzerror, BZFILE *b, void *buf, int len );
-

Reads up to len -(uncompressed) bytes from the compressed file -b into the buffer -buf. If the read was -successful, bzerror is set to -BZ_OK and the number of bytes -read is returned. If the logical end-of-stream was detected, -bzerror will be set to -BZ_STREAM_END, and the number of -bytes read is returned. All other -bzerror values denote an -error.

-

BZ2_bzRead will supply -len bytes, unless the logical -stream end is detected or an error occurs. Because of this, it -is possible to detect the stream end by observing when the number -of bytes returned is less than the number requested. -Nevertheless, this is regarded as inadvisable; you should instead -check bzerror after every call -and watch out for -BZ_STREAM_END.

-

Internally, BZ2_bzRead -copies data from the compressed file in chunks of size -BZ_MAX_UNUSED bytes before -decompressing it. If the file contains more bytes than strictly -needed to reach the logical end-of-stream, -BZ2_bzRead will almost certainly -read some of the trailing data before signalling -BZ_SEQUENCE_END. To collect the -read but unused data once -BZ_SEQUENCE_END has appeared, -call BZ2_bzReadGetUnused -immediately before -BZ2_bzReadClose.

-

Possible assignments to -bzerror:

-
BZ_PARAM_ERROR
-  if b is NULL or buf is NULL or len < 0
-BZ_SEQUENCE_ERROR
-  if b was opened with BZ2_bzWriteOpen
-BZ_IO_ERROR
-  if there is an error reading from the compressed file
-BZ_UNEXPECTED_EOF
-  if the compressed file ended before 
-  the logical end-of-stream was detected
-BZ_DATA_ERROR
-  if a data integrity error was detected in the compressed stream
-BZ_DATA_ERROR_MAGIC
-  if the stream does not begin with the requisite header bytes 
-  (ie, is not a bzip2 data file).  This is really 
-  a special case of BZ_DATA_ERROR.
-BZ_MEM_ERROR
-  if insufficient memory was available
-BZ_STREAM_END
-  if the logical end of stream was detected.
-BZ_OK
-  otherwise.
-

Possible return values:

-
number of bytes read
-  if bzerror is BZ_OK or BZ_STREAM_END
-undefined
-  otherwise
-

Allowable next actions:

-
collect data from buf, then BZ2_bzRead or BZ2_bzReadClose
-  if bzerror is BZ_OK
-collect data from buf, then BZ2_bzReadClose or BZ2_bzReadGetUnused
-  if bzerror is BZ_SEQUENCE_END
-BZ2_bzReadClose
-  otherwise
-
-
-

-3.4.3. BZ2_bzReadGetUnused

-
void BZ2_bzReadGetUnused( int* bzerror, BZFILE *b, 
-                          void** unused, int* nUnused );
-

Returns data which was read from the compressed file but -was not needed to get to the logical end-of-stream. -*unused is set to the address of -the data, and *nUnused to the -number of bytes. *nUnused will -be set to a value between 0 and -BZ_MAX_UNUSED inclusive.

-

This function may only be called once -BZ2_bzRead has signalled -BZ_STREAM_END but before -BZ2_bzReadClose.

-

Possible assignments to -bzerror:

-
BZ_PARAM_ERROR
-  if b is NULL
-  or unused is NULL or nUnused is NULL
-BZ_SEQUENCE_ERROR
-  if BZ_STREAM_END has not been signalled
-  or if b was opened with BZ2_bzWriteOpen
-BZ_OK
-  otherwise
-

Allowable next actions:

-
BZ2_bzReadClose
-
-
-

-3.4.4. BZ2_bzReadClose

-
void BZ2_bzReadClose ( int *bzerror, BZFILE *b );
-

Releases all memory pertaining to the compressed file -b. -BZ2_bzReadClose does not call -fclose on the underlying file -handle, so you should do that yourself if appropriate. -BZ2_bzReadClose should be called -to clean up after all error situations.

-

Possible assignments to -bzerror:

-
BZ_SEQUENCE_ERROR
-  if b was opened with BZ2_bzOpenWrite
-BZ_OK
-  otherwise
-

Allowable next actions:

-
none
-
-
-

-3.4.5. BZ2_bzWriteOpen

-
BZFILE *BZ2_bzWriteOpen( int *bzerror, FILE *f, 
-                         int blockSize100k, int verbosity,
-                         int workFactor );
-

Prepare to write compressed data to file handle -f. -f should refer to a file which -has been opened for writing, and for which the error indicator -(ferror(f))is not set.

-

For the meaning of parameters -blockSize100k, -verbosity and -workFactor, see -BZ2_bzCompressInit.

-

All required memory is allocated at this stage, so if the -call completes successfully, -BZ_MEM_ERROR cannot be signalled -by a subsequent call to -BZ2_bzWrite.

-

Possible assignments to -bzerror:

-
BZ_CONFIG_ERROR
-  if the library has been mis-compiled
-BZ_PARAM_ERROR
-  if f is NULL
-  or blockSize100k < 1 or blockSize100k > 9
-BZ_IO_ERROR
-  if ferror(f) is nonzero
-BZ_MEM_ERROR
-  if insufficient memory is available
-BZ_OK
-  otherwise
-

Possible return values:

-
Pointer to an abstract BZFILE
-  if bzerror is BZ_OK
-NULL
-  otherwise
-

Allowable next actions:

-
BZ2_bzWrite
-  if bzerror is BZ_OK
-  (you could go directly to BZ2_bzWriteClose, but this would be pretty pointless)
-BZ2_bzWriteClose
-  otherwise
-
-
-

-3.4.6. BZ2_bzWrite

-
void BZ2_bzWrite ( int *bzerror, BZFILE *b, void *buf, int len );
-

Absorbs len bytes from the -buffer buf, eventually to be -compressed and written to the file.

-

Possible assignments to -bzerror:

-
BZ_PARAM_ERROR
-  if b is NULL or buf is NULL or len < 0
-BZ_SEQUENCE_ERROR
-  if b was opened with BZ2_bzReadOpen
-BZ_IO_ERROR
-  if there is an error writing the compressed file.
-BZ_OK
-  otherwise
-
-
-

-3.4.7. BZ2_bzWriteClose

-
void BZ2_bzWriteClose( int *bzerror, BZFILE* f,
-                       int abandon,
-                       unsigned int* nbytes_in,
-                       unsigned int* nbytes_out );
-
-void BZ2_bzWriteClose64( int *bzerror, BZFILE* f,
-                         int abandon,
-                         unsigned int* nbytes_in_lo32,
-                         unsigned int* nbytes_in_hi32,
-                         unsigned int* nbytes_out_lo32,
-                         unsigned int* nbytes_out_hi32 );
-

Compresses and flushes to the compressed file all data so -far supplied by BZ2_bzWrite. -The logical end-of-stream markers are also written, so subsequent -calls to BZ2_bzWrite are -illegal. All memory associated with the compressed file -b is released. -fflush is called on the -compressed file, but it is not -fclose'd.

-

If BZ2_bzWriteClose is -called to clean up after an error, the only action is to release -the memory. The library records the error codes issued by -previous calls, so this situation will be detected automatically. -There is no attempt to complete the compression operation, nor to -fflush the compressed file. You -can force this behaviour to happen even in the case of no error, -by passing a nonzero value to -abandon.

-

If nbytes_in is non-null, -*nbytes_in will be set to be the -total volume of uncompressed data handled. Similarly, -nbytes_out will be set to the -total volume of compressed data written. For compatibility with -older versions of the library, -BZ2_bzWriteClose only yields the -lower 32 bits of these counts. Use -BZ2_bzWriteClose64 if you want -the full 64 bit counts. These two functions are otherwise -absolutely identical.

-

Possible assignments to -bzerror:

-
BZ_SEQUENCE_ERROR
-  if b was opened with BZ2_bzReadOpen
-BZ_IO_ERROR
-  if there is an error writing the compressed file
-BZ_OK
-  otherwise
-
-
-

-3.4.8. Handling embedded compressed data streams

-

The high-level library facilitates use of -bzip2 data streams which form -some part of a surrounding, larger data stream.

-
    -
  • For writing, the library takes an open file handle, - writes compressed data to it, - fflushes it but does not - fclose it. The calling - application can write its own data before and after the - compressed data stream, using that same file handle.

  • -
  • Reading is more complex, and the facilities are not as - general as they could be since generality is hard to reconcile - with efficiency. BZ2_bzRead - reads from the compressed file in blocks of size - BZ_MAX_UNUSED bytes, and in - doing so probably will overshoot the logical end of compressed - stream. To recover this data once decompression has ended, - call BZ2_bzReadGetUnused after - the last call of BZ2_bzRead - (the one returning - BZ_STREAM_END) but before - calling - BZ2_bzReadClose.

  • -
-

This mechanism makes it easy to decompress multiple -bzip2 streams placed end-to-end. -As the end of one stream, when -BZ2_bzRead returns -BZ_STREAM_END, call -BZ2_bzReadGetUnused to collect -the unused data (copy it into your own buffer somewhere). That -data forms the start of the next compressed stream. To start -uncompressing that next stream, call -BZ2_bzReadOpen again, feeding in -the unused data via the unused / -nUnused parameters. Keep doing -this until BZ_STREAM_END return -coincides with the physical end of file -(feof(f)). In this situation -BZ2_bzReadGetUnused will of -course return no data.

-

This should give some feel for how the high-level interface -can be used. If you require extra flexibility, you'll have to -bite the bullet and get to grips with the low-level -interface.

-
-
-

-3.4.9. Standard file-reading/writing code

-

Here's how you'd write data to a compressed file:

-
FILE*   f;
-BZFILE* b;
-int     nBuf;
-char    buf[ /* whatever size you like */ ];
-int     bzerror;
-int     nWritten;
-
-f = fopen ( "myfile.bz2", "w" );
-if ( !f ) {
- /* handle error */
-}
-b = BZ2_bzWriteOpen( &bzerror, f, 9 );
-if (bzerror != BZ_OK) {
- BZ2_bzWriteClose ( b );
- /* handle error */
-}
-
-while ( /* condition */ ) {
- /* get data to write into buf, and set nBuf appropriately */
- nWritten = BZ2_bzWrite ( &bzerror, b, buf, nBuf );
- if (bzerror == BZ_IO_ERROR) { 
-   BZ2_bzWriteClose ( &bzerror, b );
-   /* handle error */
- }
-}
-
-BZ2_bzWriteClose( &bzerror, b );
-if (bzerror == BZ_IO_ERROR) {
- /* handle error */
-}
-

And to read from a compressed file:

-
FILE*   f;
-BZFILE* b;
-int     nBuf;
-char    buf[ /* whatever size you like */ ];
-int     bzerror;
-int     nWritten;
-
-f = fopen ( "myfile.bz2", "r" );
-if ( !f ) {
-  /* handle error */
-}
-b = BZ2_bzReadOpen ( &bzerror, f, 0, NULL, 0 );
-if ( bzerror != BZ_OK ) {
-  BZ2_bzReadClose ( &bzerror, b );
-  /* handle error */
-}
-
-bzerror = BZ_OK;
-while ( bzerror == BZ_OK && /* arbitrary other conditions */) {
-  nBuf = BZ2_bzRead ( &bzerror, b, buf, /* size of buf */ );
-  if ( bzerror == BZ_OK ) {
-    /* do something with buf[0 .. nBuf-1] */
-  }
-}
-if ( bzerror != BZ_STREAM_END ) {
-   BZ2_bzReadClose ( &bzerror, b );
-   /* handle error */
-} else {
-   BZ2_bzReadClose ( &bzerror, b );
-}
-
-
-
-

-3.5. Utility functions

-
-

-3.5.1. BZ2_bzBuffToBuffCompress

-
int BZ2_bzBuffToBuffCompress( char*         dest,
-                              unsigned int* destLen,
-                              char*         source,
-                              unsigned int  sourceLen,
-                              int           blockSize100k,
-                              int           verbosity,
-                              int           workFactor );
-

Attempts to compress the data in source[0 -.. sourceLen-1] into the destination buffer, -dest[0 .. *destLen-1]. If the -destination buffer is big enough, -*destLen is set to the size of -the compressed data, and BZ_OK -is returned. If the compressed data won't fit, -*destLen is unchanged, and -BZ_OUTBUFF_FULL is -returned.

-

Compression in this manner is a one-shot event, done with a -single call to this function. The resulting compressed data is a -complete bzip2 format data -stream. There is no mechanism for making additional calls to -provide extra input data. If you want that kind of mechanism, -use the low-level interface.

-

For the meaning of parameters -blockSize100k, -verbosity and -workFactor, see -BZ2_bzCompressInit.

-

To guarantee that the compressed data will fit in its -buffer, allocate an output buffer of size 1% larger than the -uncompressed data, plus six hundred extra bytes.

-

BZ2_bzBuffToBuffDecompress -will not write data at or beyond -dest[*destLen], even in case of -buffer overflow.

-

Possible return values:

-
BZ_CONFIG_ERROR
-  if the library has been mis-compiled
-BZ_PARAM_ERROR
-  if dest is NULL or destLen is NULL
-  or blockSize100k < 1 or blockSize100k > 9
-  or verbosity < 0 or verbosity > 4
-  or workFactor < 0 or workFactor > 250
-BZ_MEM_ERROR
-  if insufficient memory is available 
-BZ_OUTBUFF_FULL
-  if the size of the compressed data exceeds *destLen
-BZ_OK
-  otherwise
-
-
-

-3.5.2. BZ2_bzBuffToBuffDecompress

-
int BZ2_bzBuffToBuffDecompress( char*         dest,
-                                unsigned int* destLen,
-                                char*         source,
-                                unsigned int  sourceLen,
-                                int           small,
-                                int           verbosity );
-

Attempts to decompress the data in source[0 -.. sourceLen-1] into the destination buffer, -dest[0 .. *destLen-1]. If the -destination buffer is big enough, -*destLen is set to the size of -the uncompressed data, and BZ_OK -is returned. If the compressed data won't fit, -*destLen is unchanged, and -BZ_OUTBUFF_FULL is -returned.

-

source is assumed to hold -a complete bzip2 format data -stream. -BZ2_bzBuffToBuffDecompress tries -to decompress the entirety of the stream into the output -buffer.

-

For the meaning of parameters -small and -verbosity, see -BZ2_bzDecompressInit.

-

Because the compression ratio of the compressed data cannot -be known in advance, there is no easy way to guarantee that the -output buffer will be big enough. You may of course make -arrangements in your code to record the size of the uncompressed -data, but such a mechanism is beyond the scope of this -library.

-

BZ2_bzBuffToBuffDecompress -will not write data at or beyond -dest[*destLen], even in case of -buffer overflow.

-

Possible return values:

-
BZ_CONFIG_ERROR
-  if the library has been mis-compiled
-BZ_PARAM_ERROR
-  if dest is NULL or destLen is NULL
-  or small != 0 && small != 1
-  or verbosity < 0 or verbosity > 4
-BZ_MEM_ERROR
-  if insufficient memory is available 
-BZ_OUTBUFF_FULL
-  if the size of the compressed data exceeds *destLen
-BZ_DATA_ERROR
-  if a data integrity error was detected in the compressed data
-BZ_DATA_ERROR_MAGIC
-  if the compressed data doesn't begin with the right magic bytes
-BZ_UNEXPECTED_EOF
-  if the compressed data ends unexpectedly
-BZ_OK
-  otherwise
-
-
-
-

-3.6. zlib compatibility functions

-

Yoshioka Tsuneo has contributed some functions to give -better zlib compatibility. -These functions are BZ2_bzopen, -BZ2_bzread, -BZ2_bzwrite, -BZ2_bzflush, -BZ2_bzclose, -BZ2_bzerror and -BZ2_bzlibVersion. These -functions are not (yet) officially part of the library. If they -break, you get to keep all the pieces. Nevertheless, I think -they work ok.

-
typedef void BZFILE;
-
-const char * BZ2_bzlibVersion ( void );
-

Returns a string indicating the library version.

-
BZFILE * BZ2_bzopen  ( const char *path, const char *mode );
-BZFILE * BZ2_bzdopen ( int        fd,    const char *mode );
-

Opens a .bz2 file for -reading or writing, using either its name or a pre-existing file -descriptor. Analogous to fopen -and fdopen.

-
int BZ2_bzread  ( BZFILE* b, void* buf, int len );
-int BZ2_bzwrite ( BZFILE* b, void* buf, int len );
-

Reads/writes data from/to a previously opened -BZFILE. Analogous to -fread and -fwrite.

-
int  BZ2_bzflush ( BZFILE* b );
-void BZ2_bzclose ( BZFILE* b );
-

Flushes/closes a BZFILE. -BZ2_bzflush doesn't actually do -anything. Analogous to fflush -and fclose.

-
const char * BZ2_bzerror ( BZFILE *b, int *errnum )
-

Returns a string describing the more recent error status of -b, and also sets -*errnum to its numerical -value.

-
-
-

-3.7. Using the library in a stdio-free environment

-
-

-3.7.1. Getting rid of stdio

-

In a deeply embedded application, you might want to use -just the memory-to-memory functions. You can do this -conveniently by compiling the library with preprocessor symbol -BZ_NO_STDIO defined. Doing this -gives you a library containing only the following eight -functions:

-

BZ2_bzCompressInit, -BZ2_bzCompress, -BZ2_bzCompressEnd -BZ2_bzDecompressInit, -BZ2_bzDecompress, -BZ2_bzDecompressEnd -BZ2_bzBuffToBuffCompress, -BZ2_bzBuffToBuffDecompress

-

When compiled like this, all functions will ignore -verbosity settings.

-
-
-

-3.7.2. Critical error handling

-

libbzip2 contains a number -of internal assertion checks which should, needless to say, never -be activated. Nevertheless, if an assertion should fail, -behaviour depends on whether or not the library was compiled with -BZ_NO_STDIO set.

-

For a normal compile, an assertion failure yields the -message:

-
-

bzip2/libbzip2: internal error number N.

-

This is a bug in bzip2/libbzip2, 1.0.6 of 6 September 2010. -Please report it to me at: jseward@bzip.org. If this happened -when you were using some program which uses libbzip2 as a -component, you should also report this bug to the author(s) -of that program. Please make an effort to report this bug; -timely and accurate bug reports eventually lead to higher -quality software. Thanks. Julian Seward, 6 September 2010. -

-
-

where N is some error code -number. If N == 1007, it also -prints some extra text advising the reader that unreliable memory -is often associated with internal error 1007. (This is a -frequently-observed-phenomenon with versions 1.0.0/1.0.1).

-

exit(3) is then -called.

-

For a stdio-free library, -assertion failures result in a call to a function declared -as:

-
extern void bz_internal_error ( int errcode );
-

The relevant code is passed as a parameter. You should -supply such a function.

-

In either case, once an assertion failure has occurred, any -bz_stream records involved can -be regarded as invalid. You should not attempt to resume normal -operation with them.

-

You may, of course, change critical error handling to suit -your needs. As I said above, critical errors indicate bugs in -the library and should not occur. All "normal" error situations -are indicated via error return codes from functions, and can be -recovered from.

-
-
-
-

-3.8. Making a Windows DLL

-

Everything related to Windows has been contributed by -Yoshioka Tsuneo -(tsuneo@rr.iij4u.or.jp), so -you should send your queries to him (but perhaps Cc: me, -jseward@bzip.org).

-

My vague understanding of what to do is: using Visual C++ -5.0, open the project file -libbz2.dsp, and build. That's -all.

-

If you can't open the project file for some reason, make a -new one, naming these files: -blocksort.c, -bzlib.c, -compress.c, -crctable.c, -decompress.c, -huffman.c, -randtable.c and -libbz2.def. You will also need -to name the header files bzlib.h -and bzlib_private.h.

-

If you don't use VC++, you may need to define the -proprocessor symbol -_WIN32.

-

Finally, dlltest.c is a -sample program using the DLL. It has a project file, -dlltest.dsp.

-

If you just want a makefile for Visual C, have a look at -makefile.msc.

-

Be aware that if you compile -bzip2 itself on Win32, you must -set BZ_UNIX to 0 and -BZ_LCCWIN32 to 1, in the file -bzip2.c, before compiling. -Otherwise the resulting binary won't work correctly.

-

I haven't tried any of this stuff myself, but it all looks -plausible.

-
-
-
-

-4. Miscellanea

- -

These are just some random thoughts of mine. Your mileage -may vary.

-
-

-4.1. Limitations of the compressed file format

-

bzip2-1.0.X, -0.9.5 and -0.9.0 use exactly the same file -format as the original version, -bzip2-0.1. This decision was -made in the interests of stability. Creating yet another -incompatible compressed file format would create further -confusion and disruption for users.

-

Nevertheless, this is not a painless decision. Development -work since the release of -bzip2-0.1 in August 1997 has -shown complexities in the file format which slow down -decompression and, in retrospect, are unnecessary. These -are:

-
    -
  • The run-length encoder, which is the first of the - compression transformations, is entirely irrelevant. The - original purpose was to protect the sorting algorithm from the - very worst case input: a string of repeated symbols. But - algorithm steps Q6a and Q6b in the original Burrows-Wheeler - technical report (SRC-124) show how repeats can be handled - without difficulty in block sorting.

  • -
  • -

    The randomisation mechanism doesn't really need to be - there. Udi Manber and Gene Myers published a suffix array - construction algorithm a few years back, which can be employed - to sort any block, no matter how repetitive, in O(N log N) - time. Subsequent work by Kunihiko Sadakane has produced a - derivative O(N (log N)^2) algorithm which usually outperforms - the Manber-Myers algorithm.

    -

    I could have changed to Sadakane's algorithm, but I find - it to be slower than bzip2's - existing algorithm for most inputs, and the randomisation - mechanism protects adequately against bad cases. I didn't - think it was a good tradeoff to make. Partly this is due to - the fact that I was not flooded with email complaints about - bzip2-0.1's performance on - repetitive data, so perhaps it isn't a problem for real - inputs.

    -

    Probably the best long-term solution, and the one I have - incorporated into 0.9.5 and above, is to use the existing - sorting algorithm initially, and fall back to a O(N (log N)^2) - algorithm if the standard algorithm gets into - difficulties.

    -
  • -
  • The compressed file format was never designed to be - handled by a library, and I have had to jump though some hoops - to produce an efficient implementation of decompression. It's - a bit hairy. Try passing - decompress.c through the C - preprocessor and you'll see what I mean. Much of this - complexity could have been avoided if the compressed size of - each block of data was recorded in the data stream.

  • -
  • An Adler-32 checksum, rather than a CRC32 checksum, - would be faster to compute.

  • -
-

It would be fair to say that the -bzip2 format was frozen before I -properly and fully understood the performance consequences of -doing so.

-

Improvements which I was able to incorporate into 0.9.0, -despite using the same file format, are:

-
    -
  • Single array implementation of the inverse BWT. This - significantly speeds up decompression, presumably because it - reduces the number of cache misses.

  • -
  • Faster inverse MTF transform for large MTF values. - The new implementation is based on the notion of sliding blocks - of values.

  • -
  • bzip2-0.9.0 now reads - and writes files with fread - and fwrite; version 0.1 used - putc and - getc. Duh! Well, you live - and learn.

  • -
-

Further ahead, it would be nice to be able to do random -access into files. This will require some careful design of -compressed file formats.

-
-
-

-4.2. Portability issues

-

After some consideration, I have decided not to use GNU -autoconf to configure 0.9.5 or -1.0.

-

autoconf, admirable and -wonderful though it is, mainly assists with portability problems -between Unix-like platforms. But -bzip2 doesn't have much in the -way of portability problems on Unix; most of the difficulties -appear when porting to the Mac, or to Microsoft's operating -systems. autoconf doesn't help -in those cases, and brings in a whole load of new -complexity.

-

Most people should be able to compile the library and -program under Unix straight out-of-the-box, so to speak, -especially if you have a version of GNU C available.

-

There are a couple of -__inline__ directives in the -code. GNU C (gcc) should be -able to handle them. If you're not using GNU C, your C compiler -shouldn't see them at all. If your compiler does, for some -reason, see them and doesn't like them, just -#define -__inline__ to be -/* */. One easy way to do this -is to compile with the flag --D__inline__=, which should be -understood by most Unix compilers.

-

If you still have difficulties, try compiling with the -macro BZ_STRICT_ANSI defined. -This should enable you to build the library in a strictly ANSI -compliant environment. Building the program itself like this is -dangerous and not supported, since you remove -bzip2's checks against -compressing directories, symbolic links, devices, and other -not-really-a-file entities. This could cause filesystem -corruption!

-

One other thing: if you create a -bzip2 binary for public distribution, -please consider linking it statically (gcc --static). This avoids all sorts of library-version -issues that others may encounter later on.

-

If you build bzip2 on -Win32, you must set BZ_UNIX to 0 -and BZ_LCCWIN32 to 1, in the -file bzip2.c, before compiling. -Otherwise the resulting binary won't work correctly.

-
-
-

-4.3. Reporting bugs

-

I tried pretty hard to make sure -bzip2 is bug free, both by -design and by testing. Hopefully you'll never need to read this -section for real.

-

Nevertheless, if bzip2 dies -with a segmentation fault, a bus error or an internal assertion -failure, it will ask you to email me a bug report. Experience from -years of feedback of bzip2 users indicates that almost all these -problems can be traced to either compiler bugs or hardware -problems.

-
    -
  • -

    Recompile the program with no optimisation, and - see if it works. And/or try a different compiler. I heard all - sorts of stories about various flavours of GNU C (and other - compilers) generating bad code for - bzip2, and I've run across two - such examples myself.

    -

    2.7.X versions of GNU C are known to generate bad code - from time to time, at high optimisation levels. If you get - problems, try using the flags - -O2 - -fomit-frame-pointer - -fno-strength-reduce. You - should specifically not use - -funroll-loops.

    -

    You may notice that the Makefile runs six tests as part - of the build process. If the program passes all of these, it's - a pretty good (but not 100%) indication that the compiler has - done its job correctly.

    -
  • -
  • -

    If bzip2 - crashes randomly, and the crashes are not repeatable, you may - have a flaky memory subsystem. - bzip2 really hammers your - memory hierarchy, and if it's a bit marginal, you may get these - problems. Ditto if your disk or I/O subsystem is slowly - failing. Yup, this really does happen.

    -

    Try using a different machine of the same type, and see - if you can repeat the problem.

    -
  • -
  • This isn't really a bug, but ... If - bzip2 tells you your file is - corrupted on decompression, and you obtained the file via FTP, - there is a possibility that you forgot to tell FTP to do a - binary mode transfer. That absolutely will cause the file to - be non-decompressible. You'll have to transfer it - again.

  • -
-

If you've incorporated -libbzip2 into your own program -and are getting problems, please, please, please, check that the -parameters you are passing in calls to the library, are correct, -and in accordance with what the documentation says is allowable. -I have tried to make the library robust against such problems, -but I'm sure I haven't succeeded.

-

Finally, if the above comments don't help, you'll have to -send me a bug report. Now, it's just amazing how many people -will send me a bug report saying something like:

-
bzip2 crashed with segmentation fault on my machine
-

and absolutely nothing else. Needless to say, a such a -report is totally, utterly, completely and -comprehensively 100% useless; a waste of your time, my time, and -net bandwidth. With no details at all, there's no way -I can possibly begin to figure out what the problem is.

-

The rules of the game are: facts, facts, facts. Don't omit -them because "oh, they won't be relevant". At the bare -minimum:

-
Machine type.  Operating system version.  
-Exact version of bzip2 (do bzip2 -V).  
-Exact version of the compiler used.  
-Flags passed to the compiler.
-

However, the most important single thing that will help me -is the file that you were trying to compress or decompress at the -time the problem happened. Without that, my ability to do -anything more than speculate about the cause, is limited.

-
-
-

-4.4. Did you get the right package?

-

bzip2 is a resource hog. -It soaks up large amounts of CPU cycles and memory. Also, it -gives very large latencies. In the worst case, you can feed many -megabytes of uncompressed data into the library before getting -any compressed output, so this probably rules out applications -requiring interactive behaviour.

-

These aren't faults of my implementation, I hope, but more -an intrinsic property of the Burrows-Wheeler transform -(unfortunately). Maybe this isn't what you want.

-

If you want a compressor and/or library which is faster, -uses less memory but gets pretty good compression, and has -minimal latency, consider Jean-loup Gailly's and Mark Adler's -work, zlib-1.2.1 and -gzip-1.2.4. Look for them at -http://www.zlib.org and -http://www.gzip.org -respectively.

-

For something faster and lighter still, you might try Markus F -X J Oberhumer's LZO real-time -compression/decompression library, at -http://www.oberhumer.com/opensource.

-
-
-

-4.5. Further Reading

-

bzip2 is not research -work, in the sense that it doesn't present any new ideas. -Rather, it's an engineering exercise based on existing -ideas.

-

Four documents describe essentially all the ideas behind -bzip2:

-

Michael Burrows and D. J. Wheeler:
-  "A block-sorting lossless data compression algorithm"
-   10th May 1994. 
-   Digital SRC Research Report 124.
-   ftp://ftp.digital.com/pub/DEC/SRC/research-reports/SRC-124.ps.gz
-   If you have trouble finding it, try searching at the
-   New Zealand Digital Library, http://www.nzdl.org.
-
-Daniel S. Hirschberg and Debra A. LeLewer
-  "Efficient Decoding of Prefix Codes"
-   Communications of the ACM, April 1990, Vol 33, Number 4.
-   You might be able to get an electronic copy of this
-   from the ACM Digital Library.
-
-David J. Wheeler
-   Program bred3.c and accompanying document bred3.ps.
-   This contains the idea behind the multi-table Huffman coding scheme.
-   ftp://ftp.cl.cam.ac.uk/users/djw3/
-
-Jon L. Bentley and Robert Sedgewick
-  "Fast Algorithms for Sorting and Searching Strings"
-   Available from Sedgewick's web page,
-   www.cs.princeton.edu/~rs
-

-

The following paper gives valuable additional insights into -the algorithm, but is not immediately the basis of any code used -in bzip2.

-

Peter Fenwick:
-   Block Sorting Text Compression
-   Proceedings of the 19th Australasian Computer Science Conference,
-     Melbourne, Australia.  Jan 31 - Feb 2, 1996.
-   ftp://ftp.cs.auckland.ac.nz/pub/peter-f/ACSC96paper.ps

-

Kunihiko Sadakane's sorting algorithm, mentioned above, is -available from:

-

http://naomi.is.s.u-tokyo.ac.jp/~sada/papers/Sada98b.ps.gz
-

-

The Manber-Myers suffix array construction algorithm is -described in a paper available from:

-

http://www.cs.arizona.edu/people/gene/PAPERS/suffix.ps
-

-

Finally, the following papers document some -investigations I made into the performance of sorting -and decompression algorithms:

-

Julian Seward
-   On the Performance of BWT Sorting Algorithms
-   Proceedings of the IEEE Data Compression Conference 2000
-     Snowbird, Utah.  28-30 March 2000.
-
-Julian Seward
-   Space-time Tradeoffs in the Inverse B-W Transform
-   Proceedings of the IEEE Data Compression Conference 2001
-     Snowbird, Utah.  27-29 March 2001.
-

-
-
-
- diff --git a/plugins/updater/bzip2-1.0.3/manual.pdf b/plugins/updater/bzip2-1.0.3/manual.pdf deleted file mode 100644 index f1c31a0ed2..0000000000 Binary files a/plugins/updater/bzip2-1.0.3/manual.pdf and /dev/null differ diff --git a/plugins/updater/bzip2-1.0.3/manual.ps b/plugins/updater/bzip2-1.0.3/manual.ps deleted file mode 100644 index cbc6f924df..0000000000 --- a/plugins/updater/bzip2-1.0.3/manual.ps +++ /dev/null @@ -1,72843 +0,0 @@ -%!PS-Adobe-3.0 -%%Creator: PassiveTeX 1.25 -%%LanguageLevel: 2 -%%DocumentSuppliedResources: (atend) -%%DocumentMedia: plain 612 792 0 () () -%%BoundingBox: 0 0 612 792 -%%Pages: 38 -%%EndComments -%%BeginDefaults -%%PageMedia: plain -%%EndDefaults -%%BeginProlog -%%BeginResource: procset xpdf 3.00 0 -%%Copyright: Copyright 1996-2004 Glyph & Cog, LLC -/xpdf 75 dict def xpdf begin -% PDF special state -/pdfDictSize 15 def -/pdfSetup { - 3 1 roll 2 array astore - /setpagedevice where { - pop 3 dict begin - /PageSize exch def - /ImagingBBox null def - { /Duplex true def } if - currentdict end setpagedevice - } { - pop pop - } ifelse -} def -/pdfStartPage { - pdfDictSize dict begin - /pdfFillCS [] def - /pdfFillXform {} def - /pdfStrokeCS [] def - /pdfStrokeXform {} def - /pdfFill [0] def - /pdfStroke [0] def - /pdfFillOP false def - /pdfStrokeOP false def - /pdfLastFill false def - /pdfLastStroke false def - /pdfTextMat [1 0 0 1 0 0] def - /pdfFontSize 0 def - /pdfCharSpacing 0 def - /pdfTextRender 0 def - /pdfTextRise 0 def - /pdfWordSpacing 0 def - /pdfHorizScaling 1 def - /pdfTextClipPath [] def -} def -/pdfEndPage { end } def -% PDF color state -/cs { /pdfFillXform exch def dup /pdfFillCS exch def - setcolorspace } def -/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def - setcolorspace } def -/sc { pdfLastFill not { pdfFillCS setcolorspace } if - dup /pdfFill exch def aload pop pdfFillXform setcolor - /pdfLastFill true def /pdfLastStroke false def } def -/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if - dup /pdfStroke exch def aload pop pdfStrokeXform setcolor - /pdfLastStroke true def /pdfLastFill false def } def -/op { /pdfFillOP exch def - pdfLastFill { pdfFillOP setoverprint } if } def -/OP { /pdfStrokeOP exch def - pdfLastStroke { pdfStrokeOP setoverprint } if } def -/fCol { - pdfLastFill not { - pdfFillCS setcolorspace - pdfFill aload pop pdfFillXform setcolor - pdfFillOP setoverprint - /pdfLastFill true def /pdfLastStroke false def - } if -} def -/sCol { - pdfLastStroke not { - pdfStrokeCS setcolorspace - pdfStroke aload pop pdfStrokeXform setcolor - pdfStrokeOP setoverprint - /pdfLastStroke true def /pdfLastFill false def - } if -} def -% build a font -/pdfMakeFont { - 4 3 roll findfont - 4 2 roll matrix scale makefont - dup length dict begin - { 1 index /FID ne { def } { pop pop } ifelse } forall - /Encoding exch def - currentdict - end - definefont pop -} def -/pdfMakeFont16 { - exch findfont - dup length dict begin - { 1 index /FID ne { def } { pop pop } ifelse } forall - /WMode exch def - currentdict - end - definefont pop -} def -% graphics state operators -/q { gsave pdfDictSize dict begin } def -/Q { - end grestore - /pdfLastFill where { - pop - pdfLastFill { - pdfFillOP setoverprint - } { - pdfStrokeOP setoverprint - } ifelse - } if -} def -/cm { concat } def -/d { setdash } def -/i { setflat } def -/j { setlinejoin } def -/J { setlinecap } def -/M { setmiterlimit } def -/w { setlinewidth } def -% path segment operators -/m { moveto } def -/l { lineto } def -/c { curveto } def -/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto - neg 0 rlineto closepath } def -/h { closepath } def -% path painting operators -/S { sCol stroke } def -/Sf { fCol stroke } def -/f { fCol fill } def -/f* { fCol eofill } def -% clipping operators -/W { clip newpath } def -/W* { eoclip newpath } def -/Ws { strokepath clip newpath } def -% text state operators -/Tc { /pdfCharSpacing exch def } def -/Tf { dup /pdfFontSize exch def - dup pdfHorizScaling mul exch matrix scale - pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put - exch findfont exch makefont setfont } def -/Tr { /pdfTextRender exch def } def -/Ts { /pdfTextRise exch def } def -/Tw { /pdfWordSpacing exch def } def -/Tz { /pdfHorizScaling exch def } def -% text positioning operators -/Td { pdfTextMat transform moveto } def -/Tm { /pdfTextMat exch def } def -% text string operators -/cshow where { - pop - /cshow2 { - dup { - pop pop - 1 string dup 0 3 index put 3 index exec - } exch cshow - pop pop - } def -}{ - /cshow2 { - currentfont /FontType get 0 eq { - 0 2 2 index length 1 sub { - 2 copy get exch 1 add 2 index exch get - 2 copy exch 256 mul add - 2 string dup 0 6 5 roll put dup 1 5 4 roll put - 3 index exec - } for - } { - dup { - 1 string dup 0 3 index put 3 index exec - } forall - } ifelse - pop pop - } def -} ifelse -/awcp { - exch { - false charpath - 5 index 5 index rmoveto - 6 index eq { 7 index 7 index rmoveto } if - } exch cshow2 - 6 {pop} repeat -} def -/Tj { - fCol - 1 index stringwidth pdfTextMat idtransform pop - sub 1 index length dup 0 ne { div } { pop pop 0 } ifelse - pdfWordSpacing pdfHorizScaling mul 0 pdfTextMat dtransform 32 - 4 3 roll pdfCharSpacing pdfHorizScaling mul add 0 - pdfTextMat dtransform - 6 5 roll Tj1 -} def -/Tj16 { - fCol - 2 index stringwidth pdfTextMat idtransform pop - sub exch div - pdfWordSpacing pdfHorizScaling mul 0 pdfTextMat dtransform 32 - 4 3 roll pdfCharSpacing pdfHorizScaling mul add 0 - pdfTextMat dtransform - 6 5 roll Tj1 -} def -/Tj16V { - fCol - 2 index stringwidth pdfTextMat idtransform exch pop - sub exch div - 0 pdfWordSpacing pdfTextMat dtransform 32 - 4 3 roll pdfCharSpacing add 0 exch - pdfTextMat dtransform - 6 5 roll Tj1 -} def -/Tj1 { - 0 pdfTextRise pdfTextMat dtransform rmoveto - currentpoint 8 2 roll - pdfTextRender 1 and 0 eq { - 6 copy awidthshow - } if - pdfTextRender 3 and dup 1 eq exch 2 eq or { - 7 index 7 index moveto - 6 copy - currentfont /FontType get 3 eq { fCol } { sCol } ifelse - false awcp currentpoint stroke moveto - } if - pdfTextRender 4 and 0 ne { - 8 6 roll moveto - false awcp - /pdfTextClipPath [ pdfTextClipPath aload pop - {/moveto cvx} - {/lineto cvx} - {/curveto cvx} - {/closepath cvx} - pathforall ] def - currentpoint newpath moveto - } { - 8 {pop} repeat - } ifelse - 0 pdfTextRise neg pdfTextMat dtransform rmoveto -} def -/TJm { pdfFontSize 0.001 mul mul neg 0 - pdfTextMat dtransform rmoveto } def -/TJmV { pdfFontSize 0.001 mul mul neg 0 exch - pdfTextMat dtransform rmoveto } def -/Tclip { pdfTextClipPath cvx exec clip newpath - /pdfTextClipPath [] def } def -/Tclip* { pdfTextClipPath cvx exec eoclip newpath - /pdfTextClipPath [] def } def -% Level 2 image operators -/pdfImBuf 100 string def -/pdfIm { - image - { currentfile pdfImBuf readline - not { pop exit } if - (%-EOD-) eq { exit } if } loop -} def -/pdfImM { - fCol imagemask - { currentfile pdfImBuf readline - not { pop exit } if - (%-EOD-) eq { exit } if } loop -} def -/pr { 2 index 2 index 3 2 roll putinterval 4 add } def -/pdfImClip { - gsave - 0 2 4 index length 1 sub { - dup 4 index exch 2 copy - get 5 index div put - 1 add 3 index exch 2 copy - get 3 index div put - } for - pop pop rectclip -} def -/pdfImClipEnd { grestore } def -% shading operators -/colordelta { - false 0 1 3 index length 1 sub { - dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt { - pop true - } if - } for - exch pop exch pop -} def -/funcCol { func n array astore } def -/funcSH { - dup 0 eq { - true - } { - dup 6 eq { - false - } { - 4 index 4 index funcCol dup - 6 index 4 index funcCol dup - 3 1 roll colordelta 3 1 roll - 5 index 5 index funcCol dup - 3 1 roll colordelta 3 1 roll - 6 index 8 index funcCol dup - 3 1 roll colordelta 3 1 roll - colordelta or or or - } ifelse - } ifelse - { - 1 add - 4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch - 6 index 6 index 4 index 4 index 4 index funcSH - 2 index 6 index 6 index 4 index 4 index funcSH - 6 index 2 index 4 index 6 index 4 index funcSH - 5 3 roll 3 2 roll funcSH pop pop - } { - pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul - funcCol sc - dup 4 index exch mat transform m - 3 index 3 index mat transform l - 1 index 3 index mat transform l - mat transform l pop pop h f* - } ifelse -} def -/axialCol { - dup 0 lt { - pop t0 - } { - dup 1 gt { - pop t1 - } { - dt mul t0 add - } ifelse - } ifelse - func n array astore -} def -/axialSH { - dup 0 eq { - true - } { - dup 8 eq { - false - } { - 2 index axialCol 2 index axialCol colordelta - } ifelse - } ifelse - { - 1 add 3 1 roll 2 copy add 0.5 mul - dup 4 3 roll exch 4 index axialSH - exch 3 2 roll axialSH - } { - pop 2 copy add 0.5 mul - axialCol sc - exch dup dx mul x0 add exch dy mul y0 add - 3 2 roll dup dx mul x0 add exch dy mul y0 add - dx abs dy abs ge { - 2 copy yMin sub dy mul dx div add yMin m - yMax sub dy mul dx div add yMax l - 2 copy yMax sub dy mul dx div add yMax l - yMin sub dy mul dx div add yMin l - h f* - } { - exch 2 copy xMin sub dx mul dy div add xMin exch m - xMax sub dx mul dy div add xMax exch l - exch 2 copy xMax sub dx mul dy div add xMax exch l - xMin sub dx mul dy div add xMin exch l - h f* - } ifelse - } ifelse -} def -/radialCol { - dup t0 lt { - pop t0 - } { - dup t1 gt { - pop t1 - } if - } ifelse - func n array astore -} def -/radialSH { - dup 0 eq { - true - } { - dup 8 eq { - false - } { - 2 index dt mul t0 add radialCol - 2 index dt mul t0 add radialCol colordelta - } ifelse - } ifelse - { - 1 add 3 1 roll 2 copy add 0.5 mul - dup 4 3 roll exch 4 index radialSH - exch 3 2 roll radialSH - } { - pop 2 copy add 0.5 mul dt mul t0 add - radialCol sc - encl { - exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - 0 360 arc h - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - 360 0 arcn h f - } { - 2 copy - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - a1 a2 arcn - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - a2 a1 arcn h - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - a1 a2 arc - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - a2 a1 arc h f - } ifelse - } ifelse -} def -end -%%EndResource -%%EndProlog -%%BeginSetup -xpdf begin -%%BeginResource: font PYRIYB+NimbusSanL-Bold -%!PS-AdobeFont-1.0: NimbusSanL-Bold 1.05 -%%CreationDate: Wed Dec 22 1999 -% Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development -% (URW)++,Copyright 1999 by (URW)++ Design & Development -% See the file COPYING (GNU General Public License) for license conditions. -% As a special exception, permission is granted to include this font -% program in a Postscript or PDF file that consists of a document that -% contains text to be displayed or printed using this font, regardless -% of the conditions or license applying to the document itself. -12 dict begin -/FontInfo 10 dict dup begin -/version (1.05) readonly def -/Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file COPYING (GNU General Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def -/Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def -/FullName (Nimbus Sans L Bold) readonly def -/FamilyName (Nimbus Sans L) readonly def -/Weight (Bold) readonly def -/ItalicAngle 0.0 def -/isFixedPitch false def -/UnderlinePosition -155 def -/UnderlineThickness 69 def -end readonly def -/FontName /PYRIYB+NimbusSanL-Bold def -/PaintType 0 def -/WMode 0 def -/FontBBox {-173 -307 1003 949} readonly def -/FontType 1 def -/FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def -/Encoding StandardEncoding def -currentdict end -currentfile eexec -d9d66f633b846a989b9974b0179fc6cc445bc2c03103c68570a7b354a4a280ae -6fbf7f9888e039ab60fcaf852eb4ce3afeb979d5ea70fde44a2ae5c8c0166c27 -bf9665eea11c7d2329c1a211dd26bb372be5822f5ea70d99eb578c7befd44cdf -045a363056e5e1cc51525ea6fc061dcebb337208eff729802376a2801424f670 -0e7e6397b28f15bc10b40012b0a3eaeb2693e8f7f627c4c9c7c6c5bff105c1e4 -1b2b9e8f09253b61177e95ea219474796072f4b363fd772dae3a9d9385cd2163 -c2c8062ef9af240bc02404e5411b401d68ee5d983d33df8a63b6da7ed443e71a -e94a32ce1db15d759113b684bdc92cb4c920e35cb677534219abcea434fba862 -2fbc8237219af7943fb467616d86b4251b350647c43c8df74289646adecf0367 -7c838d720affd234259e947e6ac432993323e8fc0b1c7609675558ae470b19fc -ba7b5ca1eff86dfe4d9ef0356f5d57d03f0b2d0f449d6165b92c78c00162b164 -648ca123b1ffa8c2bcdf125864ccc81c7d58f19374b71dcdacc3c43450bca81c -364753c7d444062a98ce202aa990c652d540b1dd09459bd4818f7675d21cd2e1 -45a0d2670c3136a6c56fed36fa640520c0a880f954cf4bea74789d14c9b7ca0a -e91f4ece020bb0d3cf1890cb79d94675c25c7ca667199195134e70ef0db9949a -416f0a0443f1191421f2323202445f5af44871eed6956d3a3de21a34e302d41b -d7eef2a4023a66862fef89ca6386a8e47ba55e6f89db590cc810feb27b68238a -205275e7573968693cfe1f8a60b5af3fc965dc05bbac5bbd6d2ef74c4f140423 -9fb13eda8457a5b26248ca5ca4d3f896b0a93b69a9045b0adc25b43df700e90b -820f28307cc6f6ff2fa4a06a8a6deb8cba4cb0d136da07593fabc1c8ba1149d9 -1c422f461a429ece40b7c90417320167d99ffa9490f9abc3101f2359bef6c6f2 -15c5585c8733ca06a9cb793d618247757063ff41c5fce1a209ea5a138777dad8 -943b73186bc17e03fb06ba658e5b3305e39078f5de984bfe093ab3d782150e2f -8545c9601bd2a531a8196e157f8f18017c0331881abf07d6c21931fcf9b81c51 -be05d2ace462ab8899e2929f0d821eddb18e9887cb7e8e3ae0beda34ccd0428a -38c4429417cebce5ef4bebf7f64eedca8769d004d2432ded2240b732481a6da7 -458cd26e4730c4aecdc1078ee3fbaf6cd275b426bbca2d0cbd42eb7b100b1c58 -f043391fc5929fca7ccb7d2188b6cec6bbdb78079e36d67129c17aef9fa72fa7 -5357dda5167e3c0ddb4f9266f3ef69c2ce9b6191ba911c1fc740549496aa76af -b86e4fddc0f31f92595f8bc0bdd3ac613b16426d722c0d27822944899572bdd7 -96d248b1adba5ec18a7f0cab096e134c36b2fcccd0b2104e43b2123936dbf7d6 -e0706616a7676da73a30a36cfe2231fba5e1fe69952a2f0ac15145c5cff411a8 -b57db37742efd6b78096d0fc69fbcdea39cb05d034f31c23b04ee90fcb4484ab -2053e8dd69a2eaf120a6bb64bd55409ab4b6a6e92d305e40974b0df80009f4d9 -8fe9e8aceddb346f8e75941c1189aeb685f4f02d20814ad6bbe3c4364bd1c64f -9c1f111790dd74d635520606a6bc978b65ccb6e8bcfd8fdbae26ea62e36d0317 -5564995f2a07393255d7c3450303f5a26b783afa95962e9438fc3b10239fc8be -7809f48340aa9a61ded2e1de62b8ece240dbd1dc8be3819ac3e9aacb6e165923 -4a264036c6017b46af959f7e574185e66a3a161eed1f99b8496a9fcfac13492d -fe3f21bf1c0c1dd432fb523701060720730e9f51b76082ef4e72d2f2ebae7a00 -ecc0e1a922d6ded5c4f0a76eef3f6e157210a3a46a4a30114f032ba029d8207a -5946b8242fc9b939559654b5c9831eab6bc2f1a8cd2779f95698f26bdfe2e421 -cccfadd7e6684364a8ce71574f2d675239e404f754237da4cb564bc7b23d7159 -5b1dd8a0b62d6bc044fe0bd2ea98458fb2188b8ab1af6438e9693ebf939c7c9e -db285c87698d8eb206cf58d89a05e74a150ae0f0f0300dc1b3bcf1f3d6b73bd4 -70e604c23d313121a4cdcfedcc834feec5b1894e5384979966f496fea5cbf1db -7f3645abc9a5e9fe04f056648f8b5882a5399fafad915207a1434b7184b48949 -43aa2c3ae059f96905277ec06fc91c4536efe679c6fa6e71167496cc0d2f297d -d07159b01a02731e578879fb16f9ffd84768207629ba38f902230a03fc844eee -f9fb458929cc8e1c988b486e9cdc3d00a84de8bf078ba4f1c73cf88a2cbb20a4 -e19a8c02d1bd767103c08b8ce14162a9cd99d167fd5cdbf53bc39fa14cab520b -2e91ef7a2952c936c9825e30e3ed350ce9ad799b27b1091a0b2f3be2208838d3 -1bcdb3aad13a1299bd93b3f1a972c04f117f05bd9e5029b6c799eb25e3e98734 -a0ca4a814d824ee4ca5383c6eb8c6c45882289cf2a52934fb7764f3556eaebba -2823e5007f83f6a3d3a6eb0f7fbc3b91320de755745ab44513deeb65d6d81c0d -838125bc1480d494b8cdecb253a230fb950df5fd1cfdf3b8b0c56aa0168b01aa -a690593f22c25e6ea9d2de70b8bb93cccde841d2b923b4a70c7cccfdc1c400e5 -d3d71cf640a201397f09e13d27faec5d041b9d904467c4c573c6fb1820a55c1a -8d0ec1f6ad502bbda597925ab353429a5bbdf3df01066e5cb3c2bf2d19e7df4c -285766c06ea868f915e051139ecfe22ac9b8466a5da38e4e2f92c01428ac9051 -4930a9e9420c49bb8dac35d2a7e9846b0c9c8db992bd5dd95fdc0c8d5bf2e7d0 -baefc4ce8fe265e57b7b6c8c91e1797db85d90eb1888170744db916ca7e353bc -4edb9fc4a1d42013ba275d3efc76259e25860a3549d104880157db843cc75fcd -5a14800ab8743fdacc4c5ff064cbf3ba6e737833850e618ad9674d0fb01918e8 -ba87eb21aab2c494c6f6ff275d1501d78a9a97d2774ef4d5fbc8032955669b04 -69e354b9984fcf4c0b890e4e8a7796d3b7b3855815f5565b13d95b139c32ee02 -4a2057235cef0b98b1c0bb84d64921dce789c2eccf58364e832cc2bef739d807 -012512769f57dfefa384083415b668285db3f6f9e5c850205dba7c66b2da0280 -f771183b302ff529a691590321a6b06dff8593a28e83a7c66008ae45b2989da0 -0455253031ed2da983e9f1ad6fbaaf85035b4715cc1525cc8d7f1a3c0ec40f9c -9eca905a50a0f4b1f5db072918617213f7863ef202c0adf926e3be1c8307b571 -2c94daf13b6a659d0f613cb319e8782a0a2781b3a61227424ff5e554eba32b55 -de5bae43483ff916e37a129c877f10f7c8c0ec1fee0fe10b3fc813d976e6e54c -8ea8aeaa179727d3335f86662bd318260fbc314986a2f97f919ccd564e001903 -eec90c13abbf988114cd330ccd7e9fde42e218a9484b565a0cd7e9c1807ada0e -e6a7f916c5a38d64dae17faae3e84822e6c63bf32148ae3dffc010920509491b -424d27fc1970abe5ac799936aac46c4a98cf4c66b3182e73df72431e53ab1f36 -460e6c6a9b2db27e38eda8972835ba64210b45dd04a778d59c5751b8478312b4 -38012796f5a8be056c8e3a9e656bfa909f7ebfb7f32fa1ae99dc291b0f002a0f -8873351e9684adbefe40d607631559c78f5688a708160ad3803db743282353bc -20098c6212dfad417f106d92527506ca0c9a8864c1eb61997dfedbbbf1d052d9 -81ea593f2a6c4a90676aec9354a6598436d1de7e15e4979344eb976a917471cf -c85e52ecf3437ebb4b6f8e9b292b7db33be0a9ead500b9353f3f367ceff8dd77 -32b67a559e56ffa3b5311fb52689c1e296c01a362a5c33bbf54b84624f2373bd -2c25e90644683376f03da577dad1fb9a9903c5ee9f531a5f9da82aadb2098e3d -15896c3c727d60ee5de0ee1cefa7e4aa3a5336ad2f1a845d16bb2ee58c50d2e8 -055e3e11272224b23c689f2e7ca0051d10ae4d4514b89483ed8d97c2a77894a5 -640d45bc86b1f66de1fd24b08034e70a443cf1c3ee17f2e7c7e11da524781c7a -75a1f69de55aad4a309e27fc8ae9b1ce1c7d52f94fc84c59f37165e35f0f721a -9d3d5c3bcead85d8150408c1387e5a348d1f0f376b3cc2d24346280af119df86 -b62f46e2ddf46f38db4aeaa456accf3f29082f73e9c5f003d77d99eea3d5156f -2043e9b573fe34694910236ef3a1ce03ffb205406f3466e028b635f3ec5173e7 -482c796060bcb0efae62308e3624c466df5b49b1dfd3445233a03cff1f58bf86 -0a2b46225d1784e91f65ecd52504c8605aaf2a5dca560db5b8ce7eb86187e6df -677c977ab4d1fec4f124324bc896ee7d669aa295897fec0b881221434fae3a4b -1a3a1f1457fca374bca91885e74543ee919b881181642cb1f6c34ff817fa8e81 -18aa5e21c994d8aa12e1fdf5d6ff6726dd3d075dcd056f046ddd86894235d7db -fc11532518f8d8695ae74dfbb769528840e8c30572ad06d6ef7b0ed471db9418 -11ea9cd32b4ba6205b5c198bd528b06092df3f50b9714fc1275aa5105a3a7422 -823d4a30d7fd19f77bb2cc4c5df23202d6a74092a710a9a855d8059031ec6ec9 -4d4fc86b37186c46a5cd183a81fc12a743c7168837953d2b5202ade986b4b00d -86e41a88fad5ba0d91c150f4a7c396a02aef1ae9b96c0cea83b3306785ab3ba5 -39c49d9f984a08a9e8c06d282af94d87606d5601296456b6a0ef4ea8c88a1fcb -96cd1b1bc0e287adfd1b9aa1a8c8a7d4a6b14ed3b04b1f0532ed5d40238ebf71 -5bd8c8b032afdccd26a940b19a1340b1e93041b2265b8534c099d14f00b82fbb -2b55d8dc64691c3e5a6dd7c0cdc1212d0c80be2f454a7d8613d0cf64ac5bcc7c -64d4166bfda12bc262de9cdfc614d7dc1bc569109bb84bf469071963e5a576db -b19f3e748799d49c30612c1d7fa918d72051db6cfba44520b5b5689c87541560 -292dd6bf1f40f6a5af97c3ff71b1fb57cb36234be973890a1a610551a724abb6 -b01bb5bd1fc5191c9f99b389b6445a99de978b0d81e4baa92e8b121a1e1b32b1 -601a34dbe6cd348e56f59a92af56caa782b3b416958a6f1bb73771f35000fb9e -a55a132f9b151bea59cafa3a1cc72f7cd60952852c53379530e0a6bd4e9545bd -f78da021349902332707106bbb5d307960ea2bd811adf35b869bb210e44a5717 -8893af229268d805262725a0904bcb5ea7c17a39552a1f26283f54ae45449943 -5270b17b9afe2e0c0729e5f10461a8ddb85efc35dc8a32bcfebfdb16a0642e5c -c69e5a25a661cfbd1f3a9386aa2433b68a356f36404f96d97fff817b42a58a62 -a5fcb5653373df412068876f541169bf642bce8458297fb6a6e936d80af2004c -e9a248e1c92fb63b3e53caadd749924c390fd9f542496cf2347a3a429cc25917 -c31fc437291fa9856a7d3b2b6a5644d82e23a14d0281ed4d8f9dd687e06f23a0 -d0e8a3dab5fe6ded172ebbcac68218092f4480c7ceabc55b059877d7e82d2846 -b4f9e82aabc56f397be2c6b67040dc71a9d1f39b1a60c33288bbae4e41457830 -f8d8c96c8dce7c01bc6efd70e021a0c2d160a61b906a3ea551b7e3fe8c1f9952 -7e9583c6b6010e0887560f1c3e19e0be82efe91f0114e726c888f580d6b514cb -a0933ccde04de0872dd0e07b1a7cede67bf9f4e73400d118a6d600e13debe6f2 -aa1d895dcc127c76ff82e579a06d8a3a323458808bad060afc953c2158d476d0 -fe0725dee6886bde038e2726886d255dec9052e9ba886a318c75b8c7a218edc5 -78783ab8dd90b738b16cfb47ef8610f428a4315c703763d6b3dda570cd0a89af -4e6c215ea5395b13a5c1f0883faa2eb2d6de918ec5fef99c21758e4b6bf72861 -b684a28787b63d3ae7f1096b1c56e4862e7f3650884d0803db03362c587e2ed7 -bf5c7f2847bebe35327f1f7fb76f3cf7e9fec9a5c057acedf6245c724a8e754b -d44e028181b75ad590b3989a7f340fd59c3b75cc4a8e28b155b5da0fbf3cc358 -375edb0992206514347924c69ab28e30c707f24199767937bd7990bc70bd5849 -5c335a752c06bdd9f0520c6d8b2f5fffce931b601151b37f1be9885e41864e31 -1ea0f33e17fb4b844425ee7de31d839ad3a8609bfc9e393079b9a7891e17b48f -2e5fed17943313afccc55826cc0144c2e7ac9784261bb40d51bbd4467103f432 -865cd4b821dd5be8fc760171b49b70141ce2042376e879013edf8180d185d988 -591f9084536cbf97816291ee77255315987422c2c2489d209d78e0a2fd3fa71c -28edfc1577db5c080e7881848222220a63605f00205c205b35d0a017013ca099 -deb71a9ffd511549c61f9ee36a63ee00b0610d1b290e073b8a067dd91bf52f9c -ab53a258ccd29d9220a659e44717f84062d39dd554294996c46e69608ca111e1 -088494c6c3c0b75cf06c2b39a08172700b35d1efd0526d78f2ca5388056b02d8 -28962b456a44b1348bc4c199c2425217cee4297873ba2018259ad02cdb518b24 -023f4ffc5fd7c2b7b022d8f61aecd1e97bf78c7d0448611c0af788af2447d5a7 -b66b496dfde8522f9dc0ff8513baf8b19b51256da57159b87df032545708fad8 -0b15a0764cb951263a5008d1a61a1b69f171a5d7449f1c1d2cba92e9ae340e13 -ee455edc278caf37e5733a34a5c1b2206833d4ec3c41db8e8c760624c6031550 -7124f71f9d18399c3df46c5023a753a08ecc991b61acb6ad781cd9c258af17ae -33a2f8c5a86b5dae8ae1061893bdbca4e76473fb073cc9c5c3389e525553a879 -16c23e3fb51d65f3cc3bf3e87f97a02eedfbb928cd37a770e7e7b5413cbfb0c1 -3281f30eac6290a85ffe8ebf68a7fe77b4a68982d010a2284051861a35230401 -234b3278bd810686b1ee0c63104adfeaeb7ec79e0a4fae757018fc05fb12db3d -81e0400f7760b46fa0ac5f9e52583f2af265843cbb2ec1d1392ee68c7410c9f5 -87351a0f3247036a01080242732f5453b54a88de2d7515b5b570d94bd2b97f2a -d3894658627178dc90029c8e7131855b422c912c9fb6141439042b1df9f3739f -063d8d054258cb1c9cc893aed8097aa06fbb7e923b3756409c61b7cff54c2c87 -51cc2f11c2b7bc0be6868584f64bbbc22a1e0ed325b6c2064cc0ef2fa8acfde8 -6fa40b544ab6d2c360b6786c29b69e80d20566e1e25cbb075f9a687b428f4ed2 -10c028936c8f5e7308d2a3984290d96e5c8df5c959a563b4be5b7ce15c24d5d2 -fd6dfeee85e0e9595f52ef13aa08f52db73e858a3932e9e913f5ba674289523d -0eaaefd670f3ba4fb5a0295816fcfc042f7141c64ce577b103558455dbd0852b -730b2acb37b3115ca4ff017602f9428879e96a621a760e7961c006801c5908c5 -f291981da07820a11aaafc3f4ae613c7cb4424b0e1b797094ddd88829d5d4eff -d8613b50b2df38eef34ad0b05a9f13dac5b3c31d44c06bcc58d737f7d239ebe3 -eee1a4f981b35641482b536ee869389888c2eb28b56a5d0864a7f451f7d362e3 -d56ef1ec01fc6eb85c40c78d791b16aedf904c7d75890bf99bfef9783fdff55d -ee19cdf9e0217133b8af29fd87ad09382b8f64a6690f4ece0ff8116d44bac576 -be9a602084c63bd4dbf56354dfe69300cfcbbb99ae3c8226d02b1bef022851fd -896d83549c594e8fa709d23465207626632319b253dbb32a74155939d9fa0631 -8aaeaf9c26c04a55e1fe935fc5d21f1d798107a625fc25cb90d2ca72c31b3eb2 -c2aef7615eeb8c7f0e7f767aa672ffc236271f98c01bf41acd72da9d108792e4 -66ed133eced633ba0fe7503aaf68ebb226ed6d0e18561eb03c9b9763680f9295 -7709b653d3940ddc7703da6c3fcd893ace04627cc6bd92b65b80cfba4d0a50c6 -d48c5239a76bdaa4319fa9f0382e5ff6bb51c5a390678ef4bcb6a56a13828f32 -fa51ba7bd7d6a11405b0873d4e96b93fc693f21bada72f9f257d89630711cca0 -c3a78e2a0e5735617e77a7a77881b37d77877df4eff9da9d465239f1f2dfb5dc -9351a5dd8216e98c15cf443250b85be6a463526d8aaed42fabc1cdc095ef9e42 -8f956a2abed2cb7fa127f49bd2b5accf7ed80cef4fe96fea42c0ed4991bbb734 -596379a991607836c6ea74bbc359ecf2eb52d015910b847534a519cfc32d5216 -9510940a9ded08ed2a83fe52ee1275b05d19666994836add094ad38cc0a3e081 -bed96e0cec2d8e17d51bbe3a63a34884da909733ab092c9ce8d8e411ca3b2831 -a022e5a3fd1abccb902647e484833b8181d1b9edcb5448098e13b5ad289c9aa5 -8e4726f0c2df0ceb089401871c26c7ddfc5d5cbeeae249871ac5604056b69e96 -3c1bf9b8ce006b701c9523b5b9b145be6f6c7b9e513973df94cc2d37694850ec -e54c80d2ce79309ce51515d2ba0d44855014654d1a999cad1a5e9dd53a34e44c -9cb32ea91176d5c3294e3064016e8554b9b6c6d2e6c03b4e655bf2a7957d95ff -01cae1dc020e577abe5775f656caf198f1073b7bfe06ea127ba3b1edf4784917 -51d41bea93204e6ad3aada6f2415a8bcd5c987b6629874253852ca417bf6a259 -27b0e7f34e0ed0f9dfbe1be2c64d805c2edf0bd62c77be4224613f2e788c56eb -0dccd0a467bb30d529610944338ea0b832d3ecedd85ad4da22ea2b47e799a1a1 -1cd56274f7dcd9a66a32d8509f3d0eb4c4a160a723a9e71f504da5549eab101c -70c73efbf1ee0805c0f8e394f94f3e6623eb2fb5896563404fe4a7f0d47e802f -698295ca19ad813ae552e8dce8d6f73a7e676308a07f230edb99902132ca5b6e -0e95558764ff3f6f854cc29b338a5e1bc14c9468b5528f5b5dc8bcce69bcd0b8 -e295f3ff96dff56779de49a1157c7d1fe777e3a94cf95e3c707d6c1fb41b279e -9abf7b4077fe611a1669c689c1d9a81c933e8075af7b5b440c24318b26a1206e -92266a64a0577abd20659d83fbc433621c7a01f74c6863d43b02651ea96fd0a1 -e1a553a05978a4fbff7d591254a5e3a2642c0eec9b4a0988e4aae449964323b7 -9bade117a3ce68969f62944d027dd0bf7ff0f73b0283c8843e9a3001bd096baa -f61833401353462890af71b05b84b2e8a8a3bce954febceeaf5c10ec704a68ff -24364e70e1749dbc2b1299887309e014f82b805c37aecf05fd413220403e48c3 -3cb49d0c265ec2511211833f8c475d7bdc3959c3378597773f02b5d41fbded8f -eb58a06037a79c3424e56d48a1cf82672026b3122e379a0012322a325bef16b1 -f95958c7b22cce273e8aaa1e8e40978abf5626000a2563577e164b89e24e4d06 -483f503454a37fac420c7945ad53a6c102f1713208c99ab6ccb0bb3e50a70b6a -38b38bce6444a7951cd669008776a1720790b0b6722be634f90120f42e3b5cdf -9007d9b8fcfeb1c2042367c5f7445e69bbc19cbea5b305b1bca2f6398211ca07 -96d5bd57d23639b1a7d7a5f50b609dff3c7622e922714dffc7dbd6b820460c67 -e8ea1c017e57fd172fa3cac1678df44f20e718542342847e33698d382ec37f60 -21b7d901ca384beec87374854e4a1372610ef8fe5c69a141b860b5a9c51af0be -8e33cd57dc6f1d2fe672e72fd0f370cef74a02fef6a0e6303b7445efa72758ff -b98b3549de42d525c166c92b652ef1e71c92b0ed3c1ba2418dd13a2d301ea894 -7b3d54d469676944a58f147851fcd8500747899ec3bd885f25e1631a3dedd10b -4eeb87c74ac62e316d2ebd3aa0ce027e91b39450ea3e30cb01baafab02ed0567 -cd83c482d6e92d7835fe387cd6c050d8f4f2f64b95fc44e1101d89e112b971e6 -61d975a98183617bc942f425b837e4e868136b17ecde0e1380ce8a52b95881da -2bf547a37f38c603e43ae53f32b5a347e4b43c0bb86d8aaf447bb5f4c983616e -be1a48c7dc636242f20e876baef484506e2888f0913d8b76b1086b60409a2a03 -e82ac9970d6c120a6621bd68250d88e95c01abb861af559132e6d9b8f5abbb66 -4152d65779019e678cc86909e31bee3d13a16d764998d94ae5df24f02fc8153d -72b41953605ca86a99bc3dd05ca620e7a28d51beddff28596ec8eb878c09c041 -74baef8d2fc52b3b0c55e95b7482dde018c706a3fb83b945d3df90cffeb1380b -09c4576040668f537083afc50a1e26d28c4d58bad52b17964871210ecb2f148c -daa07db5d3780ecd1635cc5d5dc23867a13e152872c78e20b95f11a4afb8508e -813f4c580f80546b2d5dcda546a6fa4b28a906511be9ae09f3adf926fa237825 -ac9f250d275294c5f21466af681e4e61ea6915d623c7d48837d0bbfd7f893a2c -d347cd7514ace7badbbff683aa9c6eef46d1c830afac64a9f64b95a6fba4bc48 -a33135b70cf12c2eb19c2af6a45b9be09619e4b89f47ef4b9d3d234466822c1f -3ce559a85fc52ac8aa947f981fb5fe7605a373f5484d4929932590eb79a504e5 -ec35c263a30ab3e50ca900c2488baf5f1c1c23cd42d6401bfd7b09172be16f1a -df93f41ab0b4465a4f1e2ab556078dbe76729d69434690fec8f59894a77d3b8b -bbd3a87346b6706fb127da2f6b458208befdd75d68207bc88ca1f2e36b65d170 -922071549c382790beee82ba0dfde07d7d5f58ebd02b19feeaeb6aaad59792cf -461d467665cb3a0cda48058fb5181273c8632075e2f11f8de7181373a9b73901 -a816cfde3e2029a04b1139eb306132f989f4a2e85cbebfdc52bda2e88bd8d1df -3f331602fe0fc1802abcb35b8e6dbe5bff9740a4af24077a725d17660fee662b -209db93c54baffeffbce92a9e2e696d5f56f5d7c81b29cd00a59ccaa389183b0 -ae2507f0ec1a9e224097be40e0db4c8099a96a858425c6a680365704f39a05cd -4887bf94f49e4f8efacdab96877a18272900237356ce576042dcb16e5851e1b9 -4fa0ef754cc9d84e91486d771871151a5983f158b7e05cecad73ba064c258397 -cd00cd6b8cecbb898c5d4609531d387ebf15a5c38b80efe629bedc9314736e90 -d4117c763f18dda7974d519ef1bef9824934159d0fe29edaea2173c69c56967e -ff9c37eea1e8b38eaed338699c6a3763c6353dfb2584f6da9923ab74b18cbe05 -278a5ed2936b193c75c986e8bfdcc63904a25ecb4a04e998ef8789e9c3ec618f -1fefe74fe5a23d368b563579e318bbe956f29d191748ee26bc883bec714e1f8c -88c98dc012b95385e894919f1de5afc62c9c513014d6105baf24ecaf88275909 -4d13079cccc3f103d6751b4f79b785577686abc760a6c56bf34db0f2ac3d0b82 -ee63f9e750c7790d7a3a1626d66e70d26617459a8103e08b6f14af71c017d3c4 -e5b4450986908ec345af9bfc4d650cf35f337026ae940513a9b3de95df3e16c0 -588a59a7f2f1d5e2a418410b5e2fcb4692998921834fa44f30f2117228005347 -9a3a82341434ea71f82d87e1bbcaed725ede9f6001ae4c8651da9afa36b3e6ef -07a8b311afe1bda98e3143c8e2417fc188bfd48627d9b6aae94f510054dab99c -12fa0d5d73069f48c86391d27e37265c91ab1c06ce4d4bf0af63db65e16e783f -7dc649a88967284c9d9fe861add619a3ffde0a31a5719bb456d1ab8010ccc8ec -89615ae875db7a321398ff923c088a6ab51ffe2fd21d3541474d79f07e536709 -46d1a8c65e8dd6ba6f19410b76ee7b5468462b9aadd9f8ddb68c32b08b0df0c4 -f3b909fe714f453bb1ebe914752c5eb5f68377a82e5d5b90abc19402bd589b43 -05f905efc12878733902c54391c267fd81aecb8cd692aaaac3218d34a4c1612a -5aa9844d171e6ebf94f4d8900236e8e27c5bd7460fa1e195c1077da5918afdc3 -90abc6db247885a42158c3cd36ee89d82cbf2471c6daf51120ba3f6937d537e9 -370af7ce73f3b50b742ade8264df9288120dd74094a064909c00764e9347d2f9 -a3f92bb53d8263053a3082809e04e9bc7c9f3b8a7c97c5cc1f9f886115676a18 -cc04c656aa33535e5893b8db3ba5d627f8810048b2a7a28e6d1374afd6af6980 -ace96ee05d890339773f6dbdc92f2f840b50770213bf6188dcdd1bad8d527e71 -9692ab1dfc47e7673c175a1b9841d56e2e0b30e8685b01a68ce561bfc6463a6a -d34557d05276f7befbc1fec7bd56a18bf0292cd25eae57450b3b590e60181258 -4b35e2004e7b1e27f3b26d7108a03c94dea662b7342e38f8300adbd92261809e -bee8ec971a7f2f59487c89357580f9aa8145a1825573f037a0ade5b98be24a86 -530435bcb82e17054f67fa873946c732c8840b9eaa9130bbd360ef27fe72ecfb -b421627d2d52578373ca7ef9fc6f850f4b7f22e6501378de0a9dd56f5f5815f2 -7ea81d8ee3a4f7b98e59ea1cb3159f5816fa703b18f03c5b0aafbbdcc979df41 -7258af2ed57f7da62871c0efdab55fafcbda5fbef92ce65aa0ff37b92ce6c953 -a9d92a8c6e02b8a1f9a9f0c66461c5a62097e12e9f656c87ae283e6f3b63ed10 -a6a723316b9beb28b62a55d372b9a22bdc669b51533c5690e593f2a409619b2a -d73655a40a33e83c65e66f18a40c8e77b048674fad760b9a7d86621181d498b5 -59707d36440af3e015851ce43cfad5d1d96e9274ad714ef46cac1a02974245a8 -d25d894caa256c320af31f954bf574dd95bf32e5841333063d32709b93b009fe -e680d5b2bb5f95275d118a085e98506d0272fd1b8220a2343979bb1467f9006a -1f17b2ae2941413683c3cbbaa1c0a3aa55193d46a2573f2cbb8b7adc7e74d0d0 -135dfa18405bfaeda37f3d4787a965192ca64e4462a0c701de5c361088b3319e -7b5d19a14337068661abc7c36002ff4dbe90e7b655b8e06bd70e283cad1c5d88 -de63628c638083b303ee6b038836893707f6e1121ef56292a75bd9301d987ae1 -ada2acdf61ef74f2b3dc4f87c6374254f865f6e8f6c0933c54265e9a5cc7ef62 -432baad5fa08dd485c3b1d0e75ffd5180e99df967b85861d9710ff294e93cfc3 -7ba6c006164690c10339aae9c1113cb48687672e8a2dd88ea9af6d0cae13ac05 -9b61095b999c87bc3c80748fe6722bb76818b2339223dc051a4938f435b92629 -4395dc3d2b9b3a0e370363535d960735fca855ffcba0aefe767732f7991c5977 -46fb683b9a0c11fcd6a3eb370bb56d6611e7c20dfa1d9fdb3b90ef31bf0a6aaa -d8bee6d7ceb116373e74f072d2c61b646f0da308955829be7578d1909b03c4d9 -307709be75ab3d72d0864af89bb713da0938f038ffb3459b793d06bb37d6efd5 -5d4e755f3403c32c28201fa5f979f51f3a9d4c521480e58ccf06cc60a056a5b1 -c48f27872ef36da126d580ec0520ee9d252cd27c207b6a12b27b1861ae0debbc -21e549144604b277ac8e7b4caaf5f7220d67fa9a985001488c128e1a4c9ebaa9 -de54a13cd4baedcd50653b73a6514ac47bb5411d8094854212c9219caa4e4c7c -447324ab35edc9ceeeef505fb71a2348c3be2082fba20b8ab572bf9276e84e2b -0b328828eb0c636750dc104e741c5df9caf3808a061484a23dd0aafcf5bfd1a7 -319c50d09cb55d73c87d3ab59e74e29de58723ea32cb96a0b497e2e530b54b9a -355a27d988ef4387d8260863e8beecbcc27e4b051961aeffcb8475d7da9bdec6 -42d6a55f06ae9af2450545811fc6486c6be309955c53121db95ac255263e93ef -3adb9e07e56b1133c491b550a511204ed55c8dd911e2fc0669c90fd904267f0e -79d56ddeb72895002a7f795349da2137b6eedcc300c1206dbdfdc3a52f71c86b -8141b63c3d33957c66a9e074bfa703ba2344d802028d787878f9fea87fa9ccdf -f4ed49f4daa6e6839fd64c91e60f99b8e10652bffdac46169c413a36e8105d8d -9343496c1a9b5bc33cb5e573166d4097fb4f3f5517b38f9298de2ac6d51121e2 -0eb9f07ecaf4d70c56a5280948c67e506e47fe9d3465c7cd156e5768b70f694c -57c11c80e7a4d1417c25690197d058d02216a81d7104ef27003dadb3ed10c742 -4b03f54aeba13d17f681fee3a8797754348b134d89572a2083225178a9db4466 -ababce914cf2777d3ae7effca5f4973eb2945672c0218c420173d8d2fdb8d60a -a1b40773a74f904955e7991bc973d12eb5bffc4dd0032b1a1397cb5ba3b431cf -92b76b1f7bf1f9eec8389e525553a8791692a9a9eb495822684df34bc5209953 -1b38bc4875beb62a391a8e0fdef5b0ad35190c44c782e374e3ca17b9f5e2f5b7 -c8566acd0df90ef22b50100f501a80c17a32ef4eb28da320c20ff407fa116404 -aef81d37037013406eb51aa024605e01257fd78c625bd120d4bbbed7bfd4f95f -a3c3088a0fb237d44fdf4aa0bff28254063416918e276e7b68c545def20f896e -509cdc2c31b65668200637bbfa587b547b77f81bad98ff0b70805d9c6fd17abd -f107e1d39d98d9ba1a7bcdf98ed607a3770508ada6bc25fcb63f5bb642a4e028 -bed525fcd1a9dbf1e1520c5164a53c0ddb1b3974366b8feaaf766f02a4085f57 -948854365bad4f6cf18fc871256f9ba3c60a79f3d08617f6a483fb6b50ef2dd5 -0755b2b824dad8935247fcff268b7cd152cab7e7a876b381491589f3d4c65c50 -3353d07c94786db7346cb89cf5350b585cf890fde7a891e7646e5fb912b71db0 -10e73de1100848dd1bd100d0daf43c4bef2b43440513be6281ea0359ae0be4ff -a861b07d06a311b97028daf2fcfb14eb8e8f713bca854befa5a46172dbc0dbd4 -448a8c20ce02a71d33457d4c52704733b90b005b03fe89fa90b73e747f273118 -4bc20d38fca2e51eb0d5bd5454a23e0fa6616a330d61e5a487aa516daa6ca1d7 -b8cfc260bedbfcdfd3d3d0c115359c73a67c1921df252899298bc9015a6c96dd -e70e6dee29597cc7c111a565a6877ec4efe425783478bd79ae97b5d1bac5d10f -5cf77c6c026966155264c7ff1dd30028f21bfe0b7948edb1710f30ee09747272 -81aa09b166177f5e507ce6a09a6368505a1d7b58d5aa2d63dac1b073442be702 -9b2ba6a5a6073bb8aa8c6f741e1b135a73675ef22ea810435f4b1a899d180e2e -be37106d4db6ac2c01d2d962117c4b6a62b1eafdd923d89cc830c00f4cacf98a -3e02d0863389d2dd73db37d8af50cee306da798989047e47c165d47926ec533d -5e1f5fd0d039ff2fb3e01c61509b3ddc62754cc30b7946c4a705d56f16730b99 -8a40275da604170fe8da1f8d8c5e4a393c701aa708f916fb66939adf2546097f -2ad583fd795ad2fd059e9450c6df7be3a22f36c359ddcd8de44e1106b1edeed8 -65e317c06382f6473e3d15fd731ee92b39d3a3dc42c9107ca046febf2ed214f8 -014ea9efdd078b94dfe6a53e5357dcb99a937583a89b90105349829575a5f474 -ce7519336dedef19083bf6d9312f19c78f09085db567895a10edb5a6cfbf3532 -5cec8e3db206815af7bd78c8dcde6a910eb9232eea4b9e68684be8083f335761 -916fc1f64c649fefda1b3fd499e851cdfa7ad22acd535a04986f35b62c2adf2e -74519f043c7c1864c6b3a9d5126fd87c105f123711b560531f46628f872b085d -ad00961bf770b386b416ca2c5a738ba54f7a7a2e234dd97b2918d007c135aabe -9ba541eaa0d19c216b5a6f245cd33a1666e26bcd5ece41bbd5bfb3aea9511bd7 -da27388e8b62f49f0b4db0b190c5dbb7bfdb1fec5a786bf43783cbecf09d8056 -15ce4179710883f8fe7bf4fde22e8a7b46273172e9a4751b4fdf6ec099e8d685 -32a4c9c4708902285df499de4a6b0e143d72c13b747461bda19f5e3a34f1dc8a -96dd2194b6083c75715f9f5261947ef0eb21c496effe37f407f45c5f66aadb99 -cf42aea5fab6694a64cd89daecab44bcc134280a3614f02c432b98054ff8be39 -7cb464de7b1ee896f798a90377bdd07afbc9394ba931c3fe490d11fc60506a3e -476d86bff5d3d850683942744d651355cb081b39d8d2147409a4bbf3ec699da2 -d79303ca40261fa3b6ab5b17ff331eb3d9f01896590905a2c7841d1f4b1f85a0 -b4afeb0183a61e21958ab3f541d321ac6bc81dafc5dc633cf1f4231b0e4dbc9e -bd3c -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndResource -/F116_0 /PYRIYB+NimbusSanL-Bold 1 1 -[ /.notdef/.notdef/fi/fl/.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/hyphen/period/slash - /zero/one/two/three/four/five/six/seven - /eight/nine/colon/semicolon/less/equal/greater/question - /at/A/B/C/D/E/F/G - /H/I/J/K/L/M/N/O - /P/Q/R/S/T/U/V/W - /X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore - /quoteleft/a/b/c/d/e/f/g - /h/i/j/k/l/m/n/o - /p/q/r/s/t/u/v/w - /x/y/z/braceleft/bar/braceright/asciitilde/.notdef - /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef - /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef - /.notdef/.notdef/.notdef/.notdef/.notdef/bullet/.notdef/.notdef - /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef - /.notdef/exclamdown/cent/sterling/fraction/yen/florin/section - /currency/copyright/quotedblleft/guillemotleft/guilsinglleft/guilsinglright/fi/fl - /.notdef/endash/dagger/daggerdbl/periodcentered/.notdef/paragraph/bullet - /quotesinglbase/quotedblbase/quotedblright/guillemotright/ellipsis/perthousand/.notdef/questiondown - /.notdef/grave/acute/circumflex/tilde/macron/breve/dotaccent - /dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut/ogonek/caron - /emdash/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef - /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef - /.notdef/AE/.notdef/ordfeminine/.notdef/.notdef/.notdef/.notdef - /Lslash/Oslash/OE/ordmasculine/.notdef/.notdef/.notdef/.notdef - /.notdef/ae/.notdef/.notdef/.notdef/dotlessi/.notdef/.notdef - /lslash/oslash/oe/germandbls/.notdef/.notdef/.notdef/.notdef] -pdfMakeFont -%%BeginResource: font XDVKOU+NimbusRomNo9L-Regu -%!PS-AdobeFont-1.0: NimbusRomNo9L-Regu 1.05 -%%CreationDate: Wed Dec 22 1999 -% Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development -% (URW)++,Copyright 1999 by (URW)++ Design & Development -% See the file COPYING (GNU General Public License) for license conditions. -% As a special exception, permission is granted to include this font -% program in a Postscript or PDF file that consists of a document that -% contains text to be displayed or printed using this font, regardless -% of the conditions or license applying to the document itself. -12 dict begin -/FontInfo 10 dict dup begin -/version (1.05) readonly def -/Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file COPYING (GNU General Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def -/Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def -/FullName (Nimbus Roman No9 L Regular) readonly def -/FamilyName (Nimbus Roman No9 L) readonly def -/Weight (Regular) readonly def -/ItalicAngle 0.0 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/FontName /XDVKOU+NimbusRomNo9L-Regu def -/PaintType 0 def -/WMode 0 def -/FontBBox {-168 -281 1000 924} readonly def -/FontType 1 def -/FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def -/Encoding StandardEncoding def -currentdict end -currentfile eexec -d9d66f633b846a989b9974b0179fc6cc445bc2c03103c68570a7b354a4a280ae -6fbf7f9888e039ab60fcaf852eb4ce3afeb979d5ea70fde44a2ae5c8c0166c27 -bf9665eea11c7d2329c1a211dd26bb372be5822f5ea70d99eb578c7befd44cdf -045a363056e5e1cc51525ea6fc061dcebb337208eff729802376a2801424f670 -0e7e6397b28f15bc10b40012b0a3eaeb2693e8f7f627c4c9c7c6c5bff105c1e4 -1b2b9e8f09253b61177e95ea219474796072f4b363fe05fa763773acd59cb757 -ae119355777a1bfbd6751f24f58ee0133199ed331e67ff4101e33040d6628f4b -77ee87860b8e32a4923e2c1fca43cf544a5eb1bcd649ebd836daecb23e3a986b -9bd8398e690be6b48bd6479823a435defe1156284048c4d49b5a869164485630 -3810995159568b3dcf3734b11a3f25453e0e8b40b080c9aa94e140a58d5ebb74 -7d1e083dbe00ad5498c3b19deb502dc63d69032d8d31e6778af4713c30404059 -6a862aeb8cf607fa52a9348e3fe23c1a0296ddb41642aacd6aacd2c6d905073f -98b58ebd11af774beee32533fa19871148dd6db41f3a8c499f25f37cf3955eb7 -bf5bbdbe984535820dd33f60cfe7c2b44ba6e10879b3c65948beed00a84b093e -8e4ea07e34955aebfd0ed462afc5b4b42c5b8be85ce0ab1b9cba42969bbf8a36 -e2943b1d9b20f6ef3416e226763f55a196ca0d86788a6b0ed38ec5b0124ac901 -f55f2f67306ce94aae5809b2203bbb5a8b185b66b2f8a18a456d028f62d8e17f -4cfccddc0743fb02567f0294ab77dca0b9708b262570e3097c76769bd590a09f -ad1523e3bd1ed5fd8475c0b57b95011759d1a55c70b39970dccf76069cdb9690 -68a4626bc863ae1d579604011354cd3ebd51b54a1ba9789f7678546bdef64c9c -51cb6f654c25578c3b4b7c2bbfad476423ab58c57f48b2a54c9d44ad356d106d -8186a85f8578b1735610f6767883701431f5a2503341005020b639f45810440f -f341eda457f8ad2213058a3369016452185f849ee25140060264a04eda7e04b8 -afedf6924f2da0adf944e4ee346e33735f6e78691634e18c4179f28fdb673ec1 -6a2b093eec51a4611030ffe1d4c1a1456e3ead051b01c94e5d9ee94c855cf31b -b8e544e687f2e2a99fd8865ad44eb929430ed39ac0985e4a5c382e16aa2d6ec3 -3b396fe9643124dc587fde09d3d867e9efde49c283dd44fd33b04ba4eacded81 -b3e7d3f7c09d565a6412ac30fc8e81be8821a9031850579b02cefe615c8e7c22 -61a77e73f5382e58ae160043a5defca7470ea62b90e0260faaf5a97a7254b091 -2a187ace29ac6adfa49c7d6f35cdab93ad32553137363ba2f0dcbafd40fa8ffa -7747eb9bb51dcd01291bc073331531dbdcea7db24c9a0302c9896a1c2cd0191a -d88b33d0b0352b356c93987ed9613720cf2be3b164c6a4a3360bf41c9f178831 -62fb73ae514d9c57675572e8c1f93313fbd1b05302f57bbebaa2e76feefea0b8 -9c83d511164b53b481bc920f40d59d152bb1f5674344801f0dc7e71ca5de4e24 -cc79207c66d0b692fe7c1c258be75488f2a0bfd5c81ec5bd0585986d0c5d4575 -82e9ce40b7477b87facaa826ebf147bddb1dc60788dec671c199d18dcd2ca48a -4653963ca85e8944074c501c8143685306d4f133037fea449b0d1cb4ab3bce89 -04a311f9410984d754a3509f51d89a4ef73ffa7f9f3bccd80daa0a34e0e10912 -b7897005607925758237d0bd3b92ac9669b1a1dcf19ff0864f84a993bf7cf266 -1d1b3981fbc5e4fdc3a5b70bd79bce35c6fcfc0a5aca0006433bc0c120073e96 -dd4ae86f022260fcfe119fd4655c3bf00be48c470b0d86e721afca140fe6bf31 -836d578fdae49d71676c77ebe2d09016e1ab71d7c681c8c0565cff9b73d79920 -1ee2def2f16d65647262f96082dd5c44fa3993d3bd1d10c217ea56b73b38428c -767dd9b71530c5f01be2d2611cf9644c28f3f52fd814e463358d70de7bc6bafe -cd377b48633d0107b05ad2472ad6652a1ad30c39adce69ebde3aadb1c5fcdaa6 -96fa9b3c3e63a7c4dac907e3b5cb7a3713505c5ad53c8dd8710acdb3786a919f -b356cc2695cb227540a5f235ae1ba3c6f3547ff24606651e5887fe889cd8913d -de9f3b04019ce0d724c1f6521925bd4fd8154f6f4d640ff94a0b0b027e483f9a -bd1188942cdff486f1a234fdf8adeb552b7e7e10aa577ed3d559010aea480709 -fa1f644fe5b7ca3479599a7e708dcd3ba33a6b2d640f8e39492565965e3b7c74 -bc8c48f3ea9a6048e86197146abc446788a3c83782f797cd278ee1b740627726 -3e1703246bc561faa060de93d224ed3eb1bf548892bc64806c4e9186a2b276d0 -fed43a3021b5a54530de20db8168d44e1947cce7fa1dc8f7927a591d6798c5a2 -b51185c3e74bb6ac782af6f089a4204b6379298617c8f67e38900ac231610ab9 -79400dfaf270c91679c516d2062b949a8d91bd5c8c1a0af1e7401489ad6e8101 -b9103cb5f50dc53ddcf2b32afa218289e9f1b5e29e5c5a2a0f67238558343524 -78cb11a68006685e13f8b9ae54732c180b4949f09839b935b1f7a944f1d4bd84 -a5074b583202cc4aeccb4b8e18096e258bff705476440b9864e746f18703321e -5d5e2f8ca5e2d07b195779f6a0d6a731116f1a26a484fb0d9931dfaafef53b41 -e56e00f32e3952261c0205afbb6f2afaffee7cc1fd39b2e108841f39dc8df97c -0f776adaf41423b47c551d48add01398dad167f4590dccc3106a5a4386499462 -78831779383abaae807b3b03b5dbd4b973219f2d1d19369889dd72e446ec95e1 -37017fbf85f4064f81f27cdb4f9117be248a8d5a65225edca22e833df98da456 -98a428edafa84085c323399562865aaa8286eb5dc63dad6839b597386e0558d2 -11bc45d66e0e60a86c968519b8b305d5ba7ebc2fad7cb5004559544330668c1a -7b77dc9762baafb4190dcc1aae670824824e00f023c574e1c017e33650e24fb5 -d4ad701ab8d93f0fd91867bd21299867f966e93cd621ec0332fa04a2a691ae0b -179d1dd6364166f94716b69027d8d0bcfc6622a086dbe92198e5c625699d0bbf -a9dee06d20554b4d82584108208ca24d7509c4ea30e71ec44f014f8cd97b8eeb -f1322fd5b116009584559a3b0574e24329aef35d2964756d50ee8a0fdae1be91 -19e20fb52c3437ef677f37b549851cc9bb60c04cbee8d80b6f1442cd8676b0e7 -bc4b2c4883d212135bcde4fc15eff6d20269a6f4463b12c214d99e68f113c5c6 -7c2d25384d8e7b9eb31d79e2c4607421389827e2fac887dbf08a43a5ddbc5797 -797a1fd10143a4e97ad79bd0bd7f3f1205130061a6581a4d30183e71fe80d570 -42083823e3ecdb6d6352b6bd54413a9b6bbaab94a76d12ad93ff99f9433e3ec6 -bab36ccf8168cfb64c4b15987379cc129f6c7c1761df5d7dc46e0996e5588298 -b329b023056dd59f4befb792c4e43fa095d63df49b6e25f821b999b56ae05919 -16346777c2579ecd17b5a87f1505f4686ba2aad3045cb414cc65cde98b92c76f -20a9be4a42b77e077b9c00eaa3914709c3fc1a16787e639a2c7fd9a30d9e8ffa -1d5a900dc9cfd5c319ec34570cb758bae3a342d936a30915dbd5160922aaf241 -74c014836eb17224a681c1d7cae7fe0d0627bd5af08286c59e2640cadf9e33db -6636197d955a073214899ae76156146452d063a460fdc5a82df0eafe9ad88a24 -905f7db7dc8097c0d9b0f9319aea0aaf7aaed4a85c93979445e8d1e5a9bdd3b5 -4d74320a1b797ace38376db0b2f6566432b8a90ca4fc7842b90623603f7aa2e5 -a2f0298157822d42f334b8f9f80fb04c36bfde0eb1187c1b15ad0666031c5c09 -62bab12d2476f696939130c5b59fe70b61320e4510be29e04f13236cbcc78a8f -93bd11c24fcc4b45405a13a65ea47c13be1f82075662c316b4de144f89beb6aa -cfb84f0d288c67d488faed8dbfff92be9a24bed443e9db3f1deab63ae94eecef -43ae1d68455826cb3a48c456d7e9a849a9822c77503e5b9f029fe70168831ea5 -2ec0c2c4471627fb5f2d03bdf8726bcce14a8a162bd9bb26137253ba8b581941 -e759a7ca7917d4244da33f45df6684d3dc361bda88b4a0a02e5e55a1efb0d851 -b4e418bc6a0e213172a08b7596b1fd93aaf111f2778006da546ca1db88d5db98 -4ae9658c1d31adf6ecd3180c19791c85a0ddd1547fdb800479a6dfea56ff1e11 -9b3c1dc388c0f372a44712954373ab66cc420b2cc80a92c2fa011d91c441bab2 -f54dbbea462e186e0617b2f3921f1aa33dcd2c1c5eccbcc37dc50bc29d0ffb03 -e45372aefe3b44d8584035f3bf5ad94459a65fa170516c271b722a2f08bd241b -7816ae887856fef57292179987b26bbff4cf1da6cd2bb092df2f6ae3064d61b9 -e7bed1d13e534b991610a2c067a1c107ec6b0a8dfa6f6c4c2539c8747ad33057 -f5a9d083a689e34c8ca2957263786c1f78cff0347ba42730544865be79b7c461 -7ebf003f8cec1e4b6af75689fa6f6dcc317c7f6975df451eada5382583a1d1c6 -510ca60fd85e55c6e16ed39a86dea378d6f41c00beed05ff2f9f1a2219e6838c -819e9576e4ef216802c4a913de00062e70df8d83754166a27708337ec6b8a031 -04a426a1c31371eaf807c8d638d16e6515ef0693651bc2dfc870a1a7e340d504 -be0feabf24b5bc879e75801d188856be2225a82eae90a792fb4e0d66ca0c4a64 -a5064e1c9c2fbe84b5d6578c2af56fef340a49911a0a346813fd5da9e694726e -a0dea4f42008ef28f8d6ea9f974327fe71889fe76945b30fa99c4c8c7bd3c40c -ccaa4f19c0e0e0c4cc88611829bdca334cd69463228c2f83e1467125b7eb3c9e -812c62fdaf831871ea0af75efe4c81224eff156fb21bf1a27123d020beb9e1a4 -d72626ddf4dfd474b98694e87ef0691b71a8aa4d346d03eb56e0715d8f6148fc -424cc472407f00bbff0cb49d05b0b5923821fccfc27869a85fedae1ecd60b31b -1c8e8810879809ec069ca308454613df0f673b5516598fb5b822833fe3e0c0fd -1b3684f7a66ff0f9132de78d198fb6dd459c42208ddd13ecf433d4c9901b0aaf -4c8ca7685711deb49d9a2cfa4209a0d058aa8490963164652bbd3cf858e53975 -0af2b20db08bad60ac71809271597b65071e7946d81c02d8e8eac13adf5d5249 -ac0b42f5c602e16b6199dde3666d58abec0c1485ba6ba71086c36481229891a6 -89bd1c4d67e91e5ad6d75ae80420cac489198821227c1ac94954cd0c94098773 -ef4313cd8aa49aacd7d34bec814e77f9aa794e57bd14f678a5f3d9311036fcf3 -d39a94b0b23b982214469f645fdb728751627c28359d6613978a340b2b2ba9b6 -a0304f87a77389a09a36a660cc983072063683920005b2434951a9c8ff375cb8 -17ce6c78b6991ab5a5efd7dd4e8b3171133da1cb44af59bd84724150d09f13b4 -39a1046904d4d3ec3d2a90cf5275a9527f8c3c62a0ae24a60e9e7d1765eabd75 -cdfc9a14c4043fd34ea73afa2e08cec40386f048879987699fb8123ded9709a8 -75b020943bfafac56dcbe4a2101223949b0179cf7de6b550657c91bf3116ee7c -66e23e4ff64cedac326536ca1f75ed1bc7113f0267ea7a26fd44728714e2a1a3 -13e88daf24c9a46de29e3767648e961b346ddc72a6724a0857078c9a2ed39df9 -d17c65b89136a6cc0c954e0c46e9f23900c7ce91ae71d74237ea1128637a673c -f6ea0c8286ef99801cc6d45bb780e21c5a7464d16f77b45236bb9819ed3a8c4c -7e1b15400eac8a99511e77effdceaf8af6cef034b79862eaaaaa00bd02f5667a -c1a03c0188d09fe4d1fcc0b0d3354c880b2943b9666224238db22257a3873b36 -be9a8a55e01165f4e8d3c8eb3521ed57aa834a4f88b97f2fd77b3b3c39ae4bbe -869a24a4714476b3d396eff67982ba0a8f9ac34bf7b247951c0c241a01f347f7 -84bf841495d76f9fb2ac130779145677c799a07678eb8a3ea3de9fd00430d46c -b1b3b6c392afd853df1d0bcee9a053d6fecad859bb9bad0bf186a6196b89fcb8 -44799928b4da77817a8cd1c36cf9515090cbf63f373aaf151154a769cb58704c -2c0263028c641e1ae224235cdb17d89af5398f3d1daf44254089e6b4db47475a -1fc228e0151f244b025e5c14411c8834486e483e4cb4406752788fa99336d980 -a7a6e6f1afecbd87f2c615880f3a6bc21524abd7076eaba6ea1bae0f995fee85 -f938283c60a7a1dfdfc053a8353051b18bd03129dfe6b472e73958d11467aded -ced7829ddf6e7879dced36391a1d113cb87969b0465d64b96b5360f774a98596 -1272aefdb74ea23d85c8af588ae0f6b43ec47292c880217c0ad03d87e1cc22bd -8117ee06e36394a8fa5e72cab0825bc3af8bea7256e7f8abe7fcf57a38e38df6 -b60d783d56905a5d7794904c0cb95e2aa835145062e022b159fa7247af415890 -117a2c9a99674891b134760def15804badb8d4ae414a1410886eff8d5284b042 -9586db6610fc1e7c2ff53f19060e6b43dfb0d8bf8dd94efd5105ee20ae0bddd9 -58176c666d2ccdbaa1a3b0a8cda0b452409c8cf61b9e085d9a9164b7eac06dad -f878ef8ff5e36bbd6414aa86e1d73d211175ab042ed5ff72030b44aba32b970b -917282a1d69f3005b0a110f90942ea6f9cb2d9eb57a43000c48bfc2af2b572c3 -f8387ab21c90facde17d772ed98280b44061671ea4d98e901f33b8a8bf0f97a3 -d87d0c4d81d6e29d895f50c1552fcbef2df93a75e3b0046c794d20229d7eae01 -7f230053c4c2f463020d060b8552cfd6463018b4c03275dea0ac42977b3dbe97 -3d7efc22c9ddbf499f2a2358f6287a8c9946fd16e6e998dc763b5abaa6888484 -c2430f2fb9f2b0ae84984af32ba54cb191274f7b85695f5faa3cd5eb154b0f1b -fa2a0b9ae93d591648d33b6c23e27f9a18e0b8548bf1f45158ba7c171bd1136c -d045e9dd27e4f23dbfe5b29a66695628a87949cd0d4d15cd066916eeddc6cbc6 -f0a5c77201d4cd352584ae70d1b8e4ad2d5278a472d230997c7c03d16cb5ea0d -d04df0bccfc7a277a0ec9516e10134a9ff93b3e6267c5ede4e5b848bdeb76b87 -52249e458b602c175ce8717e89da05ceb850d2538c340ef6142f0b5cf5906f99 -c271b6e5b9e614d64a7c72372835ec4a99bb39a7aecbc41d021118dd56d21326 -c818bff4de332c9c00e96755e71288117c19e3b920c23766f249b1abf4ebb173 -3f9d38f1772128cad4514c4c06fee49abf401feaf2368edf5b4f78fb13336189 -5040b953d2ec56876cc72fdf69ea7692da01a508c2ff7096e17d78e2f61a04b5 -400d9c28610aa8d48b790edb4bd5cf08646923b0d5a86178956bf7940f291242 -1c4f3bc76fd991e36e18d40f813095c5b9165700cf94403b23b2b7887458c4d4 -4a4f160ceee87c7d50fb4ddc3d4e3242d9ac170b060d472889e553c988126096 -dd343532e74b54d664d63141b1eda0e6ffd1d82ce4d084352e97f09e2e05a17d -cd8bed5a8adc08494e5ba8b57ce522758413cbe5e5d74e6d3b251a6567fbea78 -5d838a9506c98691e0ee47be4421a95e6b02e8c66aa06f9c88b0ab94a1a32660 -fa0d8a24f2d5873ac94ff8e0670b96d4eb007ab89f1c77e0f1d1be46155fa2c4 -5930779b70c9a6d559a3646af2b83590b2f1ac3a3f1c9e8d465e145c69fc07cb -5df5093b7cda7f1780def8060d7daf747491b0486e7ca427857946d2f3d0e22e -018cf12b04b2ecfe3accb88e5e52dde2d9118a1747917e6a9f211c1d210b2b15 -8f31adac46b63cc00beed35638a2e8155805bc068a00b757d6f9dca2ae540883 -11ed782d682b511c557ab8c413e95ea8b6dd3a6c12ea9716d670fe4446629890 -d14a1ff76cdb4eb9e2ff314ed9094148bb33db76e4f6bbd5b6ec76aac13c6660 -38b1790d9c6ecf2f33b6d4ece409f012d58a75a1a4ef5e580986db61edcd97c9 -7ae81fa20bd7fcb07053311dbd6f3f73077ddd3949fa6dc327ad2fc056a8b798 -53b22c193126e73803c83fc4b7bd9cdc54c2fb1f6353ebddc027d3925bd32d89 -219a778cdc38e5f9621b41a27cb8fee8ffc1a2fc48ebd25828373b9bca8742c3 -0a58b2473a33b4805383415deeed7197a840f6c39267de16ecfcafe7d585f672 -b5ff6bb9d143e8e615d349ed779b847f2b5930aa83b08792e193d64aa163a090 -586a383d4ef4bc273f162164154d9abe6e68e23078cbbbd0a357a771bbc427c2 -3b6a3f24401e31edd9fd7091e8849c8e37d83ef396dc505f8f843f4ef305c505 -53776af2c088aaaa5a5efc05258cf692b579cba82efe7dd3f3394d985a5518cf -93c258a168969d01842a624f56b4a6e50fde64083aa7cd0a8f3c0eea6e6d9a06 -d24b1f96d34d66c2fed66cf844b490b537561865299d18dbea55e025643f78d0 -2419619759dbcd65ed0ac4a2866c61f37383902b4e1665b2fd9414d348b4d41f -ebaf2a1e4bc97f5497de6237170ec27597c98e6cdbefee9c6a7b106b3b6aff2f -7dbc6ba1b2d145285029bed2766715781b230aedca4dbe0c92945bb7954d9fd6 -1702f5a981dc0c5c876c28659d744803202a5929f03db99b32f776a794afbec5 -3f03ab51fbdf52c98de52fcae577c7ef0a72cb1f4170bffa48734f1df30ac772 -9f23e8541aed00a2cb2bfa219626421f669494c472c88e288e5698541185b862 -29881c30d6b6124b276110bca39fc496691eb1c61432cf296b055401f2f63e03 -22b0f37395a0489a031945a21fba843a881730d3298008bb4c023b24b195dd5a -1e30b76210c17a06095e3222bd39ff2b7f7b6366a173a9e0cb527172e1da2308 -5eb7568000e9e9fa521f977c341e7c4cefc883522696ab5617d6f6854bcaaafe -ccb82352f821fd30f6edbab80310bfff84779899bc62743894dd9e726c6a585d -b4a2883fddf1d1ccb7dc8242c6d0f16d008d551ee9e02cddd4a21a28cb56bba4 -0bcaaaf95dc41650643302346318e7eef6bba6f4fb6eb956f99457f2d2ebf601 -65b6b1e4405501ddedc0d2cce1a9cc7ee6282a2432e88ff45ac520a8155a2b4c -4bfbef1e1a860ac2a2f2d25c1bcbd864001a54be48c3686cf72e98856e8d4e4f -2b3f382c3e3a75bef479a567bab3764282da78b388d27a6dec10e31db5088362 -d3586e219c55ec4e24bdfcd77b920f5ea332d29630559785a900d05813400556 -d1d0721754258799fb25bb59a79699f6f4e56f0e58f6748bf8091d848e4bf22b -728c913b0db74e9bae863413ba5ba04ec732d6f50d838424dd1a47b29e51aaaf -8ee4831f52722e1627bc84cbc737535206f251d92549b8e2d24bc6b3d2cd5687 -9c4bdc972846bceecb47b5ad23df0a82cc481e37d74ff3389ad3535d0d6254d6 -d8ec450fa1e3b81b7be26897b75025a64f480dada26aa777cda828ed66cd65fc -9d02717638bdb88571460a45aaf9abe1b460659f7893c1c64008192e38cef686 -8a076a626165bb53e34766580ea78b2bb63e45d6fa0ec31687bc4f243760d452 -b459dbed951640b1f5083a19705a3384af93eaf503a000e3f2384062bb52559e -1e0d8bdaf66cdacfaaf91636d01f7a76dd5424b7b620a706304cae6fc50f0dd3 -8d395cf39dc796c7ec271721e13b1dcff35f06b5bf5cbb6b2eb908714f4fdd35 -9763585e39484118b080504f1bdb293321cfd1b2913fb217c7b41d7212b1daac -1c4d770cfe91a1f649d760c132fd77024f7a0a4e8d0cfb275f5435f3dd911be1 -1db381c01a9c04645631fd9e1c871c5d2c91ac39a18d8b9dc563633d709a909d -614024729bbb2824c33c216612efe88278d6b1082e18f486631fde76aefda526 -2a194ecb406ec7315a43695256b1f7503d323c8fcce1f572ce5410edc931f97a -fe2671156d0167b444ab02691b81fa57696d07e235dda15640ce4d2a936d1dbc -a0d1f41aff8f3ca1792ac1c146021056a40ba5b30278222286a89825638edeaf -429cfba89cc85ff869cc5d51e41a8ffe937e03744732e3fab250127c9eb21d53 -48e3f6fbfa7d4abb16dac3c45e68e355e43d59c67a717495a6acdff50208c2c9 -7ecc5243915c0ba12e420d4fbc39c5332db7d681e51158af491169d7f7212fdf -47b9a9dd0af18a2c28bf94199e0480f9cd97c2ed0e79a57a02adae4b0cd3c1c8 -f91521a111933abee28bfa1ee0810db409fe8dfa17195a9a7637f180ec400844 -e497a7f9cbafb57866834f37b2937cd71cfd5a88eb86b64a01e33e9a639ee133 -89460417242cec260f151b9613f6aca727b2578770e86b45b395b951caba7afd -94c3442bd844ff531d069b8a2bc52710d341882860864884714eacfe23bc1cb9 -e4823b3c2315c09342cf097030f14fd7e663c2d030d2d71079b6d53799e5917c -9798624793a0f850b6046e7c987f7b1b01b586a83e8fea61486dcbe8b1362ba3 -a2ddf29c622fa55d54800823824af57e426b41b6aeb440da475e13240445d467 -26a6d4518ca92a6003209d30974a40872e176ec005233706148979aa159c2b7e -dcd5136921bb9116855f20b0de9f99a919854a9fb381d71265dbe5375b06ffcd -490b11631704a069a04c0cf952ea0d9c4176d5acfbc48d8a48074357b1b4a8d7 -1a9bff215c77e14d23e09393eb10015a5474701d12005e66a31aaaafcae6a030 -34e2281bec8d06f7b41e9b2dabb7783daec99bc7a3a8dd48e90d36848efdde98 -c09309fb1c506f5a1c0af132020b07afb2a9b3c457cb0f1a66684e043872b794 -534308404c4d7faeb296d9f1561cac5fac91f4b02f89b429212c58c55cb96fc8 -bd812563b864833a0f9fd69422d24eb4a4acc9cb2bebc4ff8b9d8e891a63babe -c423cda2fcb7cd52a04774b3738108a19eeb1208256540bfcea23ba55f4dce15 -e1d176c21f166ddc1c2bb79b75d40e38050c6658a23c416650a1dadd17e15584 -b382a148d2df13b0d186484217ce6e11308856598534befb42a76389263e975b -0a17b79be1c651630970b99d5956213b5da9d41d160dfdbb14de1e25f83725df -ee7b04c5f1eb6cf4914ce25d050de1e1fd701490f5e4d82dd51b28cdd8cce9e9 -e39bba025c012e85b2b1c125c45943798f8b93c791b06f159bbbe9a3ab1e0fde -320164f98cb091b751a57d86d15a0fe812f9a8de5306b3cb033c9e7eaaba9054 -54af59e9d61518b06302c9aad9a4884c222a41898ed8e340c7b0163e5152a394 -ded4c2abb46fa6e763e27b55fad2c1f9c5e4ddf0bc39fb7178f9f5c84eb6d793 -04815fb8fe12ba84b91019d3c52d36febd917e5fc58c423b5c9e09ea31bf78f1 -da64ca6686189475dbdaa3fa111c24cd98c82e2a9f4c768969ca12ab4d160b85 -7aff1f4af235f5127e7735fd8a4e1f4023de13c477e98d7190bf7b6e45b4f867 -38f0c045e958f0e2e20fef19fe492044c0c04fa16a3a0d33dcdbded65d83cc01 -38ae67b6b6c82ce18705e39c04ad8308ff32f03939586fade451f2dc110ab4dc -fb3125e09d8edeeb9c0ebf3d289f9354973ed883cc9df86e126f0cdf91d07622 -8d14814c51a72aaf37bf555a0e2e8ea5eb932165a430a9d0364247f0ef15886d -fb61e13710f14ee5ff73120542ea256894a17034c5b5d2db4089ee4ae8a5aaa2 -cedfa0b8453c045c75ccf036b34d53f810c2a219e2765e0f6b1aa7c7d78dd6ed -27df905f4874e65d79c161371032be490231487d9b877b3a2c6e8a9840e8f421 -7c2a536aa271ac2f44ee7037758b75f5eccdf5ffc7cb94cb100a8710a118e0cd -cdee5ffe9a3cb0797b1015e78da676e14b78a252fe4f86deb0bda164d4058b46 -3cbc28247564d64fca96b4e6f54499e08714982e495918059ef68b396226aaeb -e5ea86f697256fbb59abc1c752d459d585ddeec5792b769e8f1c55c79f9dccf9 -cb52f236496e84fd5e9a7e4e63d037835b976d5cbad20aa538a07fca3e44ee5e -f03e7b4acf304a825c3d1783a46fe5c046e30f75e8935fd323a022161f2636d7 -287b209d2aff608abf3074cba61563cbe724afa0f51b8e2b49023d2165aba623 -aac35969666595b7f010b911eac958005ac45a5b756a9a1b711f79f2d64067a9 -d4258ff5e7b4fb2142de1e561d8d098a11d63934a065585dafb5693d7b9a546a -ec40b879bb5b7c167e85cc4e9df665cbf0ea67d12e230d9bd922af96eb39dfb5 -e7bf1751f575552d9df1da8402ef816ba3be8f3c19b8912004e1da13463baf48 -ff7b3b33a57aed2a3e9e9f145be50f2e84900daa0b996632263af132f7e6b374 -35d91cbcf393cb46649ff8ee35a93b7e27a9bf39734b53cf410ab3f3a2fc4027 -af2c873a42c13aff732acc9bb83bf2862e7da328eecac95b7c0f0bf79744ea95 -363f54a5b19fd37f0282ffc0c1779d733f531ff661381dc983de2858e791ff20 -17a15a90500c579a5f61209d9a1f503788babb313bfb33f3ca0732c984c398db -687dd0868699e20655fa21040c952224811bceceb52c86e3666430e4fec39c47 -4462ea17dbd53ce9feb02d52615b93ffd7928c8f6d24b3be92f7731b8b087c0c -1d51c663dba72b2a6879c6f55c1de28f339676d7bb9af94fbe12af5488d4b3f5 -b529a6a3474e3f0cc46869343243748527080265184bbfb93eb971bdcb298e54 -16030d4076d4402b653b180ca984be40eebf024d2a7faf3910fa14a5545c6242 -fc6d8a9b6380cae5e75df338e07b8784bcbbd5369ad30a2c6a7ec32cf5d78219 -41b18b7aa533b522565cfa592c54a428813751b5943328dcd2c6a622ebd2ba11 -c6d2d65f03b4f419ba4375c714e62974b83a5a5c4392c26da2650e0ef90e5905 -402cbcac72fe007cdc6dd09bab715b7776e327215024acc013cc55f0a3a26859 -2a02a0a9f87370cc81e5c185db2e6090b6b2e947170a41ebd0cc6d71a264f0ca -16eb08e781695fd8d35777542ba057443ec42bf0a822c27327b1e064af38db65 -9233639f837a74efb758b74a117ec8841779afda95ef3f0f916c97936ec16bbe -f2b917a8e8e686aca6930649129fbe9dfd1f8247b34dbc586678999dbff6a12a -c51c1881425432805a253cfeb23c5ea0cdf05c62f99d34aa7f73d90272af0969 -68ab75f3f1ebb30b5ddd6233202fdae3573f67a51662367833673f7ff1344346 -446dcd3e29699b9028c7bbed09471ebc899cb3139284a914b98fabb1d50119b2 -347ed0d201cfd78dee828badc1655fa2c70191b24e20e699454570fb31850dac -38ae12ca5cdbbe2b0f22f0de8ef8b927dc6c54ecf3801e5c2544710a2e8f726d -cf297becfb7a93b4b422089200aafafb934334704c3d384379d34147f7d163af -3cb42599ea902106ca1befeae26d641d49b7a3490f09bf16b8d17c026e40a2f0 -8d727fa2aefcbe4ac82dafeef86eb672a95f413b73858600c7d9dc544694e25f -259b039558da35ba48443e6c931f6cc6ed108e765c879314e532d888a79c1b2d -460204838fb662dc90465032792f03f18ceb654a379648ba449922c9447c00d5 -08b81dddf1fd0304b2b803785ee94ae63b9700b36fcc894782782f51f397ccff -2a1734032660685070d6d5fe94636e6de386bf347f063dff5819b6b8554ea416 -59da8bb46c01807fdc883e15a200a6cedd4b95810da0a805c3d71c6467d84899 -6b88c60191c3a5e3c4dff6863ff024a5c4d4092164792a397b7d390b4306b56d -b002e6533752ab431804dcd2ec8c9cf242efc7b93dd9c3fdb21824068d3abb6a -831d89d241613946e097ce77a82f68c92da11dfcbde58e3450f2830a3a049bdf -c6e9bdff298b4800f150ad3833a612643316cb420af3db29f008ba36a2ef0181 -f64b4bdbb6334233c58e0e68876a6d2048db062b61a9cd020ed7ef071525cdb9 -3880a24eaeadf171b5c077e4de8527b5ed5b7e5005f73c09b2279ecf72e1ec79 -a3e4837d33cfd614e6d82df617f77eab048e71b51b3ba4334d8be27798576a28 -a21ed866fa75cd39ad747a1fea7a57446111ca317372060aacb159ee90e5efbc -dc5fd16b41a5e63363b41f13c0160f719ce353b913d069e4126743b420562d52 -e56b970fe3e660f4a850e8ef45f7262128f936ab5610401756ebeb0d9b5dab1c -8ef2d95e0cbe3542bfe0c6f29febf3f5a39fbd16a5c27d652c4a0c542124855f -4b53071df5537a5fd5bcf653c0578b4e324bfd7587ed10318333382ea137d90b -f0f83b4eb5d4796e42fb7053d4cd9feeb842d909cb67ba4bedf8592c876a83cf -48e4a2f7e92558e57a5cc6c3c6a4eddd68bba96359eef224fd78f909e016c5f0 -ad7740a686e566386c4f000764c8b6e97a1f3e9e98b047f75cad6b84d502c377 -846904339303da4c0436f1f67fcefa9fc0581f769b319c38d4221576b74b949e -532b99ed1cc90a2de4189b346dab2d48777ba5bd5cfc80bb15f0c8d4f478d007 -b84aff3121f7c0cc0887dc20cf195b1d964e14685acd86aabdecf09337ac26bb -b0e45caec8be479279364fb840c6ff36d164b7be25f9f811a466ce04c2ce5a77 -4ee329b9bd773657737db17709d3a6913793de0357bdea11ddd259b5bdc94e1a -bf95d33b8396ae9b26342cc1d2a2831e95939a0ef5f13443a9150f35aac5623b -cbaf6cc5d24d51225c2920e3bcee9d09ca5c60f22b07f24a26dd856f8efec9ef -b184f8a92781ea228c2f15ad9ab1da75002c9b352316a588d00af46a86b73aac -feb16d461c9cf969977681a88806c8e6330c1e9e8d428c91de717fe3908802ec -38abd40d988b018fd7a4c02a20f2f3c18d8364fb18692c310d4d1977be4108a8 -56f807519b471ded405d1e7ed6c02676970c2a1df6cdcda3b38edad9b5cee11e -5b221716f3137083d4a433e6af2eafe4760b0cf8ccbd5c15af998b5d5785a3f9 -b79a81aeaa9a6706b2dcd217ed437b23de309a360ff60ca82a8251be5671a625 -a90de4daee9941d44d8d1e3a19399f13b93d9b567b2ab2f9cf2b71058ccd9776 -3b6a3f95ea470066f36b343c0429655f8f25c89e65074a52cc6047885f4105de -2ceb8f80846530a88228b1f44c73e8cf8ff1e99d5cdcd3c91487caba9cce19ac -bee693c2479d8dc2c8799895e188155502f957b20e26619874cebe43d125f6e8 -638092ae98ef4429bf719bf6cbd17b1f1fd9a7c90bbb6b0b34614b32234a7f4b -1c259e4b10ec72d3a2e5526473e551450a11d8537cd6d3dfc472576307ad3354 -b2a9c24ae22c90aa37b1ac70352969e2aeb30d0fa894724d5e47a87e7319bb35 -7b76e95d7f665952ce39e05815e5718a7ec0d09dfb566e589c3655e87588b6b6 -95a272aba75b07eff8041298b7a1bf6fd1b10c5ce008180940df9f4235fab68d -bc3d2ab597192b0912b5d9486b5c8f6cd5238cb94a0c807f4baabe7e81f072ca -0b626d0a5cb1b8254a4ef588149c84c53d27ca3cbc729416976bf6a20bbed57c -6c0fd85c86dabd7ade406b27a8890bef705bf3c5c8a59615d858ca2707c47404 -78f55c4d6da862b50f90997989ce492d884f97482166d5ddd4eae075395d7be3 -cb0dfed4d966b2fd24c41acb6ba9f1280ca84aa8cf607bf1d2cae3c6dae6871e -c5eb10a943c84b83095fe1b7b9bc3682b5681a850001be80a48a2b1bf22790ec -f53a1ddb50e2325392f118cd56727005b947495ae8ca6e46cab765670ea03488 -39275b5711fd6b227ed1a6b66c02c9f199c8d54b46609a0804fcffcfe0cc8b65 -0f1ec83354d395ae89ef02d548088674fcbc0ac0daed78ab47e3ed00df77c01f -2d0e5967da9348fc0434d71eaf90785c3666694604f48bf2043bd54dae61ea1d -3e2da8efc1ae867ecb0e7d11093ba20786413e80c8f05dabcf474d6d9a1149b1 -be96ad65eeb5b865f4b321de61ff8904a072092910bbfce7bd5a42f10c355e73 -c0890e342af2f2f4d7fac20c846d372877c7b12776b76756a9002723d5ee71fe -5b1c0e5fbed5c354cf4b9cfb843f01b9e378e90e7a56994325c7c447e5269204 -c83b98d99dafc77ddb6a3fcfbbf430f6d0ab8a832c262f879369fd9ddd33b1df -602f5462b9f2b29360f1a1b7d7eecacc4f10f188e7e2ba08005878b1d9c3762c -ab8a29d01c0c164efe8d37328deb51567d5f17b25c11590a1078d53a36bee786 -5813fee10723c1acefe111dbc08b796895f2e1bb190f3da6accd6dc6c884eb44 -ec4d78df308ae7e774cef87ed4d6200bde349c35d7262448f165a6706c33563d -24d04d409c69924949aae19c13d07ee64910d1c29d15ac711fb56e3dd05a980f -acc11d9c08863c32a28bf94eb2c8fd1fa0ee61b939ed944b017a46b681e95cbd -0365d77433a27195df9d20a3483ec94192fec56b9af5c656bfc2924ca0c19fef -ad23207ac6d0169a15cc273d66899cc044b5efca9ef4078b9bc1e91f83842624 -c08a91c1c0d20306b1479e749386cc50fed78f22a27579fcfe943b033738bd67 -db8c4cba7f60e8ebbefeb2ceba747c757e902b70dc09622aa4ba96347b6948fb -3ed5c54ac78148b5976001bd3f0474d93f4903d15a6cd68727714ebcda244345 -d9a4b0020bde3e2c74385736f244206da78d0331de35feb4960d8fcd0ef4bb75 -5ab20087c2aa1da104d16ade37b9159caa0f8bf528b55cc005f017d6823268d9 -b13d199ce47d3c95e492ac8067fc44b42ac8be86b639770a91c75b7f7a55ff60 -0181451587fca8bea1721f4950b3322dd9c8a09cf8e4d2abef3ec038c8302e9a -3194d54745d5798e3b3844696d3c4566b179c98b7adcff4bd2a4fb402ab275f4 -30f2c77eecfb3c473d2e7102592e101c3d38f79a08021227f8f782a59d20cdf9 -c9750a8c0ac70e34d983356c313f85acb56ced4467357e07e23a62ab3fb6ed71 -9f9bf85edd20af93c1c1736b6112dfc8447b6d06ca12202f84b34f892a1a13af -4423b723c13701aa57982dbf20ed6ca129b72f79f77f1705485967980db5df42 -c662f0ed38a02b55cf048e713c0c6a1a85c900acaeaf6d045dc96bea5d45ecf2 -8ae85d1accc9b38a45d6f516078c72388e5337b9c1a2023d086e97e3affd3f64 -517df9ece75c3afd0e3dc74e2ed3b4aef8a8c032cdd70127ec4698db19c78646 -58f9dcd6b98676dede88a1efae04d182ba73475290ba87fdc71cee2737057855 -c9b151917eb5b3cde9f70db961ab5c8a10443a7aff427bae1d1e720a604c39a0 -14de8b45e528237198f086421b5938871ef89008148eac965bfcc850ed7aeae5 -ec3e8e37b9762a8a6580c791cd89c4d25fcdbe778bae071bb1e18257fefe9771 -255f977611825be7f64134c3521ebe7c549741265838ef00f0687ce14c463d97 -884893e5c967d3ca5286b52d0aaca5ada20e778a4f4c807a9cd97f0c05ed4876 -1cb09c787085e213a86b7aaf33acf64552ce5d8c3459c261447024035997ae76 -85d1d4337cd1a1def984e185779b2a0a8a3c8da6212730f96174f4c3b104d096 -3e0e395fb85f918cdd5f98c77daeb09a64169dfac253730c7da4122a7025ef19 -dec6042fc24d4565a1f8a7b37da00d170b6c4be72475544dc73b111c775e5c20 -401ad5b382559c2dde0bc3ec0e46c07e42a08de477b3c07159666bda273e29d1 -8ef5b8e6d514e510d8210e0a998508c3062ae26b504abb3613f3d1f167c87bc6 -48308196ff8fe6ca97db5fe0baadbfa22593c01bfab9640edc31410fa037bc90 -f6ca35ea8010a6b3c031b43e19c38a010e84f1c5c97b73fb3330ac18268c16bb -88648034875df43ea61c877c3278caddd457ee47509154aef00a86d801f8ddb1 -44e43f5ee5683e3ae84b7f6ba7aaa51f038607beb96ad79183364c49793ff0c6 -98c2a8fb0ac71b8f38eb7479a4995e1fbac92278b9f3528261d822db91d5d4f1 -9876784d0651ec7291f19a5437e987cd727afdcd267f983eabe8e5f3879805d1 -3f2089d9fca9d35e4fbfae0d72d7d0021c386bf7608fbfaa87d26a57933bb6ec -95739fbc3f7229a82efe4343b679165df1ed79eb650fac11cb7f1e74d6fdc9b9 -a8847a85bd24f58e2d988aea2f26eaea9d27f5892d2cdd77669b849a92f8d0d7 -5c54ed9682ba9d0c7058e04997279bdb3454d2b6a44598267a269a814aa9e1f0 -abf598a1b6c2afb75e173eb6fc2634253c04fcee9cb2a896523aad92457ef0eb -321e0a037eb6cfe349911c148473f86b5aff5b8985533a5f6d3b406ddac73d35 -23071332a8fc34a4816171b2c8a19bf458b4ce7259270785060b9d673f3c4997 -2da999ce0f2e7ebc2b2cce6de818d40f020d5e53b882f0d3754c341d5740ae72 -2868f364a2faa97e8c8143de444a9f3ae27eab6c4f7c838f3a5f8b9600d70831 -cbc2dc64ed3189f33030d0b32211b757f6682949ab889db99693f4dea2f670cf -057032d3034aaa6c3e75a0bbdc092c5f4886b169e59ad2d7f4d41cf7ad2f5882 -77914fdb7253e198a40b2186b1a9a0aa958ba9fb99f21a074825e053e562c2af -8cd8866861ae914042dc4b8b5342089b21013d519c44c28482cb8801c73de3a4 -9d6dd060294e4ccdc55f000f0ab7900b088e141fc2d8ce68cf771a068541657a -8b41e95fd2b1b452949716ad5bb0b8c2ece99d07a41f3c3ec381212baf8cca9d -801a993c8a3926b0e0d60637618f69facf70c7b3e6af9762afde0deb9e5be5a9 -105c3164b4d8372414fbee3181066f1772d21da04d0b350c806935669fd69cf9 -6073c324b8ea582638b11e58e43267c3854fa35c3deb3160d7756d66b87c8385 -92f86ab8a97bc9d6260e2723d435769d15dce8cec387318add815687ddb99d5f -1980da44a5332e5c98c59c8d6ba28a995ef8d809d783a9b2510e1c6b820c25bb -90f52ccb9fa3fdeaa661a69921794a60a591fc9157e755c28aa399f30e93d298 -9e7b35fcce14d5fe6bedab37c173d384d3f67323e702b14ea74951c5c07917af -f9f9fcc450950a8232cfc4744dd38ba79b9fc41a37205c97f44ddac6ea5d423d -7af9883610084080de39e5a71db472081595235f72c7ccea69a20cac059f2357 -b4d60e158834ad26f85fc1e9bbc948db8fe7a03c5c401ac2ed880fef8803e464 -76b00961ff910f1fcc897e1fa4f6b697a616f07aa95f5616a313ca01f39aa99e -8a5a9fcd389c99d750ccfa38bdbdd9a0376452970f91859aefebe5b55779516e -665c6f786b3d22a1cc781a729e477c5f82a65027c87b54a97d9130bd4464956d -735fa5b8f710cea51eb9bb909e89716160cdb112e44876ac49494f62b8f46e63 -c978f80f3a57d99ede832bb7bc1ae59ad0025944669343f432bfeadf8d7408f0 -50c7568da4400df96139c1d243b8634b19f2134fd13c783fe9012a58a7e7843d -55bc3b7c768579bee6f5931f1ea9caa44bd6808b12bf4550c852c1ee3cfa72b3 -5c883f0b6a4f4e5d768f93aed79bb5c70b681c3a9d604b6eecb7026c1b22e28d -c184d2fdade4c6afb6b9fe8d7495abe07547d092bdd73c5701696e6f256cda8e -1a6e58f3335e51498df75cf37a7213fa50f6d9a7a4ea4a251c3cd004b75b8805 -8c8b8efba9f66bbe5e8f321981aa2d8f5d455b47347e368686689d00fa5f996a -b6922e325bf4e72ac9cb09fd5802f365e4a15045683884b45f15175cabb62651 -3e71fdf4e7ac9b4b91772644ca8e55c530a9459719e181f9f2d211601d1bc5d0 -55731eebc2964f4add0f713c6b22abd36bd9163902a147f5172c4e054ff44ff1 -1999337a57a673028374a04b65e7e77ef2ce24a75c90fa2bb48cad9e9fa77111 -24514b9400e2cadf75e9d7f62fb7993f82cc336c77716bea4c00c931ac21e95b -04f35462cee46670514510bfa22ded3ea18bbb8b511f42c637bbd06134280404 -05d4355a5d252d9bc291c14cc81d77c491f62a54387442b9a884b3d21e0adc5e -1c120ac2c0b03a0355204eda408570d379547d40314f5c61f8c97971b91c521c -a5e86c1c321a90ae21dfbed0688e8c7287e7a35a1f0807b0a9a811a6d2d68636 -0fe12a04126f19c9b0fbed1083265ef6b2f4d463563df3b1be5b9fd0d277d53f -f4f5ee43b113f580be21183338592a57e29c025bfcbd56dad49e4b5bef14363a -db5594baba9ec550bd4cda1759277595d677a71c91925e6e1960f31a24117609 -4213750579cf163fdf9b3590951bb5e2a8f117412025f1807584ce1a4cd382f0 -9da5d7b56954f85327c0eb4ae556b79c08048b127101d2fb38f16996f1b66fbe -0040841b5578762c35849b0641d3343d8290f2aba7f075a0e2721718e08f0a85 -1fc82805f23c2cb0cd67740ce3d5bc6b97f98f8818cd39ad76ea2779c48ce48d -43302c382ec8d61904242e9a5e28527ea6a3bfcf9dce17a9d36398152c7c47ed -777c944db9ba4bec4f30a1261a0096081ceb94708ebe98e7165ebcbd768240be -d03fa2a0904086e1a4fbae8788315c7f864754e63f2399702bf2dca498b2b352 -09ce951389384a9e8ec4f01b207f61112956e9a59c0bf46677b9b1f8459b41e1 -b8323e5bb1ecde22bf2c47938e0e2f548cb02758dc7135004e448d9e689cf431 -11d2fa0a98f3e31b3882cf8689c76d276b85177cb27357bcb2ff0de3cb032166 -c58f25e0ddec5971b6a81325abcad1fc2a27cf0b20332769e80028ea27b841aa -16506f7c22dd55171341687682311e1f884ef87494bccfec13f5b0b217333376 -fb86573ee65386e19628e78f49c6cd9fbe4cfdaf21ab25e6f62a99cba323ebbf -c5eeaa523613eddbf85de5dbb9c66de1748624c271d8fdbc16bb8f9196428516 -f85e26d904878f9da7bd61848e96250c225e09dbd4f15180759e3e5da86d0dc3 -f5f4c5df81625a466d31872b9644afa35c81cd8a84a052b954bbada87c1e50c2 -c39594078c068c9b0aed83074cf941bc7afa3afbbcf3f40f34e4e3d1f133a57e -9c10799313813684dc597fe5ae551cec1f61802dd873526fde81f323b6c62530 -0a5ad9bec4131b9cc9cf26a4554d6d64bbd5c7eb59024b2526f12f3f9352dad4 -7043446118b2339223dc051a4938bc6a2c691029d693b8bd3d35fcc458f7df7d -bc2e51ea969285ad222a233e5331f99ee402eaf6d76403f6fec3114e6315a2db -23659ff88a0cf2738c290fb6ccacc2472bcaa3e0ce03f9e9d8357b89580c95f6 -f97c1ef3f0bad43253b8e97e6613f0ac04f55f2f321b5688fbe4076558738b71 -b378712d45c48ff6ec34057bb2a0aa7086c27716aed9c3e6ca6703ffdcfc451a -0471ae9d6512f0fa82155ae17e133b685717138397757d0230b62cda0ab1ee9b -b1f0bb791daad5f3789ec0f22d13b44143b63250f09ac760e86ce3219292c6f1 -ca0e77313611d8282d8f62c986fd525baf75a8ab194038359f6e0217d1a5fde7 -ec7de056f4fc6893e740dd8c9efcd629fe529d5116db5482d12bf39b0e3a40bc -bf1b3f99f627cbe937656f38909e3924b89ef1478be176320b6fb8a7c750f41b -90dfa427229c900b51d806d959be3b8b2b6e6187fb1bd406fd179dac8af5e70d -be10e747e198dd6cb67872b48585f33aec68a3ca94a22224056a32a8139cdba7 -aa07ea5cecad1d2e1054cd265d35c6b2ec0a25a0dc415955186cffd2c4b6a86c -028129fe12b4fd07dde82836ded99925994f058cf323bd1b362a86a8b4ac5aa5 -dbad763abb2613b41ae6b947fb79a7edf3ad23eb7d732727376a1fa9ee0e8d79 -3b5871fc0e4535563bccef6ce24a71b717f90590a7317652d7978bfa78a72454 -353fcf512ec5e804ff6d2984c3e905401b69246e1b040693c581e794e6d57ed2 -5dba59acdedbc4114116da97b749c4007f51addf7dc9bec79c77cfe29b6a93c2 -61e2007b01a0b8d6f95a9e6c25551a20ed592c90c7ab5071280e5d85200d776d -938df156ecd2d863f8b1848dfbe5d3a40d4b817deab66d5c191b4b05035e0009 -5f04c4cdfa26de785889829564c27377ff1f2518da932d4559017881aa68a802 -5bdaacfd2611e101ac667d3b69e7895337d522e56b4d9698c4c5f9a0e83c2386 -f084f40a75282c72b2fcc12973e5edf34e810fd247f9c0317899fe6efc833822 -8a788d33265883fcb78366ce69783b9a15e8c041e4556293f61c571bcc985d69 -b1761aca9460781c4b9f9035370dda95c777de8d35e1d7aac234987fe1a8ff45 -37888fde3267d97e27c8fb6d95088f0d207e4b8d3e3d689172b2d89b8dc28b34 -43d14646b23e3807afeaf3c83a22f45cbfe9eabdcee160ab7b1a664bb5fdba38 -4446b84b6b863c892a6ecf33f7a569d82df118582e514c11314dc73fdb04be15 -b6bc9b3be801419d90b74cdc52ac40e1342167440621fcaaeaaf9db8f78f9e20 -045d3a26e1b51f2c786b23c09cb94f9cc91df0b5236e3f54062925ce8804113b -c93c3ab041948a2027d00e112043ef82ce54365fe241a2c503fa334df6973406 -3402fc6d246a8694f436b318bd5558f69c9f182746a25aea1bf1993f61ca48b3 -b04074f8a44206716d6a6d834ed3c455e272b41810c6d70133c455f246aa7764 -a104c482caff864d86eebb2e1764735775e78850006f959de537d66dfcea3f2a -45e24e7d905439a59ab155474bb3dc63897c1dcb7e8f298366dd49b9b1e42f94 -816a3c275460375dbdf175ca420b46df137a34bb1ad7983807677f093a05b90e -81fd0ee6b6de147a9813a1a1ec0c7d859777c0b2945edf2901f883b8b54aca59 -814b951e4c97fdbf48aaff19cb9fe7c6c0de6532f656e5b1f03193b58ee693f8 -4684114fdbbc86134a483ba1be41cf4fd823a23f5a52ceab00021c2954e5c04c -865ec7222d33d82f19e09375610ff6dfcea95e0a25a1cd3d6156b63bcfa13740 -63bfe1d8a5e45659b0c924eb81cb3d4e70e59515ca1be45f66faadb5993ec547 -966f70f5d761c8731063422a510984f7b4587efe6799d2f28d90236b49ac10b6 -fbc45ecb7d91017e16e4fbf716709b37120d3586363e33d94ac92b01d1349c00 -18825eddd5cd9cccbf8c70046ca295d885209aa3fb0b6209c5298ef4843c39ed -d64dc504c278334107d322cde4a388a4a079bd303c4d5588be979eaa6cbdf8b4 -942ffd0d27b2ebe1533f1d31b3da2c7fb5c8b663391151fe897cffda8c227d45 -e292e9113ed2538712b40601f1f0c8f3d0d69ccb584abe6db54b4044034791b7 -d7a0838aa9d80c971f45486b4304f20d68b76ebc6e55bb683dc20c356176006c -b1f902f8d0be642da9f9209703c23e48235c35778221689c16d426fbd2903d19 -7fd00e071a1989e8b2ccef17d51e7d73d7189c06adcda120cd3e849c603729f8 -85006337a3a1136ca31e0e41d674620f97f0101a297a1b731b1d0348c51d72c1 -4be0366a2667999067d102d7007d510f31074799ec5cf6ee355e59bb68dd85fe -3e3f553168c337afddf1bbf895c0df509355dd9120735dec0715fac5804075fd -cd57fda443cffeb9e9d8e6f24a3daf1d9523ddbd29532a6c5a79e6b1ea1f2b1e -55e0369cff1bf0c074873ac1226354a6a74e62faf42f1a15c863c0ba21c3c399 -b9c1ddc4ff6e9bc9a3ba58581b6bf67b89b7045b9542694b9c2dc3e185a1390b -67aacd3c344d37467671f728fddce8bb08e2c6b8cd4a8abc60de087fdd560130 -3f40599da3a1d4abe2e93cffc5628e62d972f034681db1c6b07cdd0e7f9963dc -0b146051fe8140004c5cb27f0f0411027ba88646baa9d6f02931a762300a8085 -7aba1853932d380a72753ebcf4c9c24a03fedbb2dc057c6f62f31695d35a7e8d -da73ea4a610f515fb52ad509605b8deed5e44c36b7210dbafb46cf2c5ca7f42e -00571a8a157a953226cc00a87592050135386c5e7fa1c5e3c023edb0359cc26e -96762eff0ea623651b10ff61835614486760930756e59d54919f0dfe0b8fe93b -9b28c474055246750aa1679389c5204657d283981a5cb160e21c1737503ab109 -044a661a3b3d100ec7f4581bf7b67b50970078319890d5a67d133bdc07265d22 -99504698a00ed8c9747feb1e747737e19850d39c03a837f0d504f9b43c8fe9a5 -725eba04ee6cd478f8416470ed154a11484aed5822bf9979b1ebd5e56af698f3 -4b865aecd29c67ca74814b0cd0109767f6d582205574670b0182e0ec6d23675a -11e489fcd58f0965af4c2f2b891aabd05185de26ba4e0a86b4fce3ba710d9c81 -3a97ecb07ce16ba156e2627048da3a2155ae68a5063f6c2eebc0091711290605 -b540ca4ddd10838e2a64835ba38ecba8043074be230baddd628d8b253734397a -a213b0a9bee70d623dd5411eb58e25855209b3648a42e4681f90d51b13354f28 -267d48d1b8aaec412be2dc199ea3ed041bc3edaace1af401d01e56b5762f7c71 -cadaf26892f3e1f6ab0438a4ba0e3f5ad953fb15a7d821f6444efc966c67082e -47e1af0e6e0d199189a994239c9716711f9ed82f6fc2fa1f923b4e3aa45e5ad8 -c0dc71bb5481fa6a105b90a77bf4b8b9b852714cdf4fa814e9d0d89d349ba57e -dce13210f79ceb8733526aff221386f826a435af47f027d81bfd4d263b84f8a2 -a807c55d1bada31a59649717a4ed8d560d4f5b81ae7f6943c66e9b2ba9739c3b -559d49fe652de7c968c64030d91099ceacb9ac69417e8210f64eeb6dbec7ab1e -fe4a3babea0a42ed49cba2e70a6db7018ea0ff1b2b0af498dc6b5e686eecd7a2 -a6b85e07401e08b825457e99d0b5fe48ef13a14fc0ceaea7bd7748b2c7414522 -59ef4ddcd6a12d5e84ad402badb6af6b8d50738250677ac12324e4e3c5d72887 -c3f36f99c04cc898704bada948b431f543765f3112175412fdb80af9850ac5cd -19b65b018df357498fb4255439913acd686e3edd9a3bed54235ca6a3d93ac968 -6ccc1400b8ecc647ad4fb7334eb768ee32d3213b8a30ac2caae37e99ebd9e903 -b319139533fffa9289c29424a030940ab2b43df031c3f72542e7a8227d56c29c -a3b07551a0be3cc4d406d2b0db792e9e72942777388d1dcb4d48704c64a99434 -885c4f4f170294c7179dd43944d60739ba9412245f2c34699d04f9815db6db1e -b3835adbf1d8d9cba2da0d217562a25e0adeaa51bd8258b9b49f1ab66fb1e72b -d0312788da672625511e07ba68cb0eaf05485044acd338305f55c7b67e52af4c -124e54d8e3bbd2c6ec6080dd3e191416acaef07bfecc0e77acc92236749ecd88 -96577190a9e86b7ee306b613e0b19015af7bd544e26c6a3e98c51d98cbef559b -29d79e6bc3ff0966663de38b24b2449d38846e6652159ea825303122ffb55333 -a108e242a05d015a9abb0089a5b9974cffa5eef0de271c243fd9a4f5ebed3b53 -324de92d22fae131fc7676b747460fdcf199076cb5d922e2098446275946481d -681674c97c00466e79ed31008c4f83626ac2dda6b0464b589f01082e5ed3d7b3 -1caaff1052012b1da1e37f3c0049623555b7d1525f44c0824a53903b54d4da9c -083d7acf2717e26be8596a07574661a53c504866959e13dfe3547fb8c5ee9c54 -e4d16952d25f0d32c103c1b2381a3b06ab7a26262f95755e2cef7a028266ffdf -3687304ec78638f3607e1d4c76af0cea8a30bdb7afd9fed23b79acabfe622c82 -9059c90c5bc732c53d8ae7e55f6385ab5d78e0c4e0b55bb9c5867ff9a498d3d8 -dbe4f0c548de9edc0944f1119bd9a2c33d5d1c8de7c5156bccf7d4e52265464e -5e58d93fd79f40f0ad593f50bafdad06a77fbb22982b35516497305e78f50471 -746076b77160149dd7a38f2fdd678ddc2a954ed788a19ddac34ba6ecfa9f0ed2 -f7bcb5f97eb077bf90e7c3852ea49b1a64b3a1e618cc83bffeabd15abb82fcd5 -38b644942b6b9741b3eff1409c67632c6a40d77c42ee0846d8edeedf56100f28 -ce8a9fb58b4aea6fd3fa0345832062d748ede2877fbe30187b635ae95227a7ae -e15f86beee2718058ee928c73d0e6f2bfba3c144d5fcabdfdcd499f8b8db426e -0553781a197bad1798327e3bdd32060bb55c660c24f3ea4e658d4e95f69fd589 -e9b35a2153bd45fde6f56e50a7cbdf803e26103a62824b24ee929b16add5f9d3 -5817264fbd1d0b3171fff576d67bf6aecb15eb25c5bc6024d558725718ea8406 -de77df6446ce372a13fc2d96fa72f65932fc34e7caf2ea065d3c94367070ad57 -84e94fef2858bcaf7c60f999caa4d0a483fcf77bfda5ead04c77b87c69a3bda4 -9e752456a8a91e78c89e72b3d805cddf729c8d13346df0c1150a7e16f37abdf4 -07f8a69b062fa83cc8996e8857d26bb0c09d5a5182cacc745772b78b584cde14 -6f5e78de240c5f6bc995606afd03afb003e0f8f07f4f62478caf38494a162a82 -ecbcedb9ba0d4f074611e68f0cb7bbfb76bb11615cf4cf26772a57d635613fbb -9fae0485183a90656c81750e962f35cb61689ec21f11539df17b2662006e2391 -b5d31851ae55c40d408649349ae3500bd52990f1ad042a09d0f31fef1a5c7c89 -5ea1118ea0c1576b630bdba01bc628ceded0ad35e6decc10c02be1a05be5259c -f318b84f4a0d5eeef0ef8d991e029c55213d73a07306160751c8fa142d010c1b -9e85dce81b6c4638de70603f7dddf7fc3a80540151b985066926c581d21cda9e -9a2a0b9f428fca992ef1970a985b3f5fa6e80e5923db4de6ed7898c508852a47 -439a8c50e416c2b75d7b3c8046513d91af6de66ee4b6f26f6b639d492b105b1c -9049b04aeb7962405871e868f15b6e1a8e8806253672c6eba1d9447c1b453d36 -59860fc02c285f5f2d773f0e76c75d5fb2493a5c26901d9559a9f3550411039c -129fa2d0fb9f5aa4d6a11f490488a08fb3de699fe868ce02120fa973fa0ae84f -fb524eb2d7823fe52ed58ebf40ef5c7609b7b8a5e1d47cdb9f624d53d35a40fe -c7ae7c17bc941a7fe4c9c50777595a97573e3ef83582033e1851577036e02f5a -65aea4282fe5171269ab39a07939b2a71890ca4043102dfd0afcd8688996a45e -7b6a858c30e54a6f32fb19bd71adabd584ab82ebb85535e53788081e553fa09a -d97345c2ff7e6b7dda5093bb78844783002adae6217581860729e94f5455e6bf -8050a1df07128cfd83f682b4d11696a62d204a7d7be0a43a653d1cb6f58a760e -cc565ef2e33662ddd7daf376653963f1485cd1c523d9341b1131d527ddc5e166 -f49f08b1bf9344bf9f7551a2688bb258cf46775a6a31a4e38dd1114fe2e44e5b -3b56d7f3d7f44e3c9f09c6e9e098d425370daf4dc3c638581a3f34336e80e8de -9016f94e65ef7664a4ffc441c52d073d47da7b90c39aea70ee619b199ef79773 -bbf5ad46ce9dd19afdb335492d31fe45cd69650eac723a9d6d0a3c9c00eea011 -daae00acdde96c901f111c402703f7b1732e1527aabdab32fe1355348e76081b -27491e40f472c84e26568e8fe043ae3b0813137b34205d5a005eecd8003b244c -20e0fd57bdb3755e7bed94304a77ddf69a9c6ad5f286bd2e95e4f4f37b6b6004 -b9f7436171c6a17af1136c05bea345577c488112c7c8cecfe7c57f2601265076 -dc5cbfd0d2e66b8587d92d02ecf628c297f4d08c149fb2efd989e9ad7a41cdea -03b48ae9853b03768a1528cef605f9d64045b1c1de64a5e0d26ec5af66ff278d -296f02349a6344767f0b0983530d314a370687f2019ef6c778654c011206e8a7 -c47e5572f904f2946372e8ce442bef2cca4fde1ada3a06580539088c11804c76 -e66c32e076f0e3de041e9c9950dab9d79886a404c081f61d1eb5e0bb4ff05df3 -8412f34b01dac78411e4cd8c6322b956fdce30b66dbaa9e8df62f797e553b83e -e379d96df6a2b11fa7edb9ea2f1fd8ec4b89b5ddf937bf91d3b574ea667a9847 -5737f2bce293b7f9ed9ae06ec39ca2befe1d4378b707e266ee3363acba05eef4 -7a9d71f8a205bbe81569ff184de2e187735829b17680534888904fe67fdadf4b -146c1d80f3453840667908b0bd497d22c8ffbfd1400fbd57e140afe219fa8f51 -c8354af1cb982ef423f250eb9e8aebf30166780d631400ec33bd84bf71140403 -f5cd03fe38b27f08167cbe99bcaa3fbca13d734c74148a4321627b672468905e -c93b528e396a0d2a917ce042d8dfa63eb2575723962063a2487f044c365462fc -907b42eee612f0fb4e34a3fe9ea1a0f168da2cb89cccc1b5422e81f09bfa175e -3479915053e90007ad92ab92a2a0644726bf022737f3b7b0ee7579fb7731ac29 -e7e043175277ef22942a9030e0bf91a1e775f9fa3f6d86ea3b72c8ddb42a670c -68694780e5a7ab25968592d823bdc6e812d19641c1e176e26351ea5355435739 -7f0f92c33c67 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndResource -/F122_0 /XDVKOU+NimbusRomNo9L-Regu 1 1 -[ /.notdef/.notdef/fi/fl/.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/hyphen/period/slash - /zero/one/two/three/four/five/six/seven - /eight/nine/colon/semicolon/less/equal/greater/question - /at/A/B/C/D/E/F/G - /H/I/J/K/L/M/N/O - /P/Q/R/S/T/U/V/W - /X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore - /quoteleft/a/b/c/d/e/f/g - /h/i/j/k/l/m/n/o - /p/q/r/s/t/u/v/w - /x/y/z/braceleft/bar/braceright/asciitilde/.notdef - /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef - /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef - /.notdef/.notdef/.notdef/.notdef/.notdef/bullet/.notdef/.notdef - /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef - /.notdef/exclamdown/cent/sterling/fraction/yen/florin/section - /currency/copyright/quotedblleft/guillemotleft/guilsinglleft/guilsinglright/fi/fl - /.notdef/endash/dagger/daggerdbl/periodcentered/.notdef/paragraph/bullet - /quotesinglbase/quotedblbase/quotedblright/guillemotright/ellipsis/perthousand/.notdef/questiondown - /.notdef/grave/acute/circumflex/tilde/macron/breve/dotaccent - /dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut/ogonek/caron - /emdash/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef - /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef - /.notdef/AE/.notdef/ordfeminine/.notdef/.notdef/.notdef/.notdef - /Lslash/Oslash/OE/ordmasculine/.notdef/.notdef/.notdef/.notdef - /.notdef/ae/.notdef/.notdef/.notdef/dotlessi/.notdef/.notdef - /lslash/oslash/oe/germandbls/.notdef/.notdef/.notdef/.notdef] -pdfMakeFont -%%BeginResource: font QYKIKI+NimbusMonL-Regu -%!PS-AdobeFont-1.0: NimbusMonL-Regu 1.05 -%%CreationDate: Wed Dec 22 1999 -% Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development -% (URW)++,Copyright 1999 by (URW)++ Design & Development -% See the file COPYING (GNU General Public License) for license conditions. -% As a special exception, permission is granted to include this font -% program in a Postscript or PDF file that consists of a document that -% contains text to be displayed or printed using this font, regardless -% of the conditions or license applying to the document itself. -12 dict begin -/FontInfo 10 dict dup begin -/version (1.05) readonly def -/Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file COPYING (GNU General Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def -/Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def -/FullName (Nimbus Mono L Regular) readonly def -/FamilyName (Nimbus Mono L) readonly def -/Weight (Regular) readonly def -/ItalicAngle 0.0 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/FontName /QYKIKI+NimbusMonL-Regu def -/PaintType 0 def -/WMode 0 def -/FontBBox {-12 -237 650 811} readonly def -/FontType 1 def -/FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def -/Encoding StandardEncoding def -currentdict end -currentfile eexec -d9d66f633b846a989b9974b0179fc6cc445bc2c03103c68570a7b354a4a280ae -6fbf7f9888e039ab60fcaf852eb4ce3afeb979d5ea70fde44a2ae5c8c0166c27 -bf9665eea11c7d2329c1a211dd26bb372be5822f5ea70d99eb578c7befd44cdf -045a363056e5e1cc51525ea6fc061dcebb337208eff729802376a2801424f670 -0e7e6397b28f15bc10b40012b0a3eaeb2693e8f7f627c4c9c7c6c5bff105c1e4 -1b2b9e8f09253b61177e95ea219474796072f4b363fe05fa763777e13b518310 -ac032eeb94b88c7dc8741fef59c541b57b0441c6888237a2b66a182599d1517f -9ec474a9539f1632c9a5a1801fd646b529cec2b430f1cd205feff509b4092535 -29e0b7b372145ddf62052c9c08b7673d36dce58e3e78a8e4788b34e36eb543c0 -d68a36e2831e23c440c3e5f1ba2248633aec75ba8d6c9e7fc0da01af08776246 -9a8009a4f3a93241f2f34c72db3361e701c06538a631f6a8cc47b1b5df7cbf9e -9029d42fad4b90f81cdc2b4cf52c09864f657c7c357180375c0b64206515e472 -c6d71a2c5d03c5143600d0dd439998956b9896ffbcbbb77fc1b6675f1e428390 -144b29367ed224ea9e5f51cb3e349dd118422bda8b6adfe217a02320be72983f -d6fa232c9289e529552708746c4c76df4ff0c7b27fbca194c650679504c0fcaf -0c643c945a2563ed47cd8538edd441bfee93dc4160421cd9efe6cb32d81a8e1d -e1c446eb5ec2a6c855e4449731ed3da1c3ebbc3cfb6553c0f78fe88bea6edb14 -a4abb572eaea91681b7e9f6a2a08005164340dc1983f75b8abe75fc02747fc2f -0c5b31e0f9a8960410d5cc677ea77d0b1b28681ab5e6b3ac11368b1e493f594e -9d037f4fa4c47ee06351cb471af4c1966aad3e51415d70e57eb0d84ec3a655d2 -b0e3a818baebfcc472b485625414c4e20d63b9673b0a0780d8838b0b4004df79 -da0444405db6a534a7571cb1aaff7d4975ea8a578ac37044cb1395a056c7d9e1 -ccd617391a2e852a4d71101cdc3c9350e57657b376cfc7cf7e387414e4a017f9 -943ba9c3aa45e955812e6b8173acbb5e5fd0f0654868def282d134d0b4533159 -c2bf0fb6959689dde7e8e5d22618fe9c8a973a87ac0e853af5542de5b89e7b94 -44ad4496afb696be0eafc9dd7a421856b1c0baf95b5fa887669124ad3698b544 -5e82a4c5cfba4e5083784e52462f3724e7273de6e00e84a1d83b6a8c0e79afcd -1df167b97e2dd796b6826231d31fd02991e990dcf2dbbb0026f9a151c0720467 -e68e2cc0a5fce825564902efd08e2ce18896ca20df47d2df8928baa632825543 -d0f6a5c94630e63411a6adb264443eb7d0f6c3883d195661ca3a1bbaea7bcb41 -d5c18fee8453579ee23f1785112e31c6dfd8e9ecb8681b248f0ce3d77aef339f -b455f3817cf7182d1fb0c53589750be5bd6543beb9c341427d0a4107dd5d6ef6 -2197b85088749f3cafa40a6a3223d4ced495d6228b3398fbbd0d4765cad178a6 -f93c5217bd254777c20cbfbd33673c5ba58e2b021580d63c76bf196391815c05 -d05159b171c9034edbd0e861c5a26f2dd38736457fcd38003882a66a4cf8d7b1 -e2803ccfc1c9fc2abda0271c331247360b7f2cee58ad9cef1b325f62dbe2be6c -babe23a220f662247df70428c1f79c79684890324e6b7166b269b174b98ec8cf -f33b589cc3d3daf1aba6835a22aa2f59f8d386610bfe936a05794242e99cddea -8da5b4e5e56a875c49267e2d48ccae616053235b4b64ae53a573922009e8a05c -a56fe84205488200ac68b62fe4f07572392940638301363c4131ccb86462c242 -afa463e3f7f036f63e622243893261e7ef744ed489397030a6604318da3f592d -037a620fcdc10da51b8f31c816f91016d38efc65b6d463779720ebe8df03be2d -0ec52886ef9205fbfc6563ca80accfecb7c686f0212f85da5024129f01bd81b0 -bb90d58eefd17fb353ca143a4757421323238c5653a3bf9f28cabdce6ff9d946 -867a33fc9ffe0adabd3679b555a9ed3c181d3e108f776e13bb39794cb9f4edd7 -7a607e017fe054811b3ea3f5b02c95343a5eb449723c9fe7857441feab37cc93 -70c285d3d91df0a0e1bb21d022f68f0c0c8bfb311b8efd056f47c67b03b45dc9 -0bd78333d366796421469cda8df6f0095a5eee1a56621d055a5b12d6464cceee -9f5fb6a40ce44ab669786f4f0ff1f348c9d3712761a07eb8aac26c35c694e1cd -65b01b32a2319a381734864a06a349db71a2fba74ddd58010c94aeec901ddeb5 -41e0205df489d02664b4e2fa03a404c8aeeddd6d1506bfe56e2e8a6d3a83f79f -35f2d552dfff754bad59df45582e3aa87e6bd45725b2c44260e651b70af70186 -8b168e440bd70014be5c4ff89028997bde67279b107f9fec9b4b2f2dc112d811 -4dae65205429ffb3c9734df32328ede30565ad65d8a1aa620bd543286908d747 -d13cec2a2f19cafbd2ad480206f8b2b39524a2fee286cea20b22b67dde321e3e -3ed87d8f7d9b253a16c648de1c9c8cd84c4f2304510ee263083ac617954b7c9e -62f397daee458e60e6058addaa14ea573888162b6777c4b5e80c2fbfc8f75ebb -2026c01a1ea38b85c4fca949d15b9a470f36e0b697ef5dcee10c45f01230dc48 -728f50abafaa52ec5f2899b09db8b74f46ed55c8efbd3f54f6afb0691a992b15 -e1bfe3b6fcb6764227aabba94c4450183f139da7e12df63878b0aff0d07c51e5 -21a29ab9fa0482e9dcb043cf704f17bdc1fa1f79bac725d6fb01dda18a700eff -5d691d1573cb0ba677a9b1a62dc483fbbb7e4fb0ee0c87cd631f7145b710d181 -85d5bf85df1cff42d9dda4430a8f6f4b6f6c01d20055d8d9cf1d48f268e046a4 -9bc64bcbd7742d090608a1c025f39d44bad9a05ec2c7b5ea4b48959f1cab0974 -537bdbb8828a830843ecb3b6bac3589cb8a35fddf8a55fe4445ee3419ecb9dc1 -3c9a3045f5fa5264860b6e310854cfec5bf920061c6a4784d911fbd82c6b5353 -72cdc7ff3dba22cbd02303654e4d1ce6c5f03ea5719bb456d1ab804a6a9e08e1 -15d0ddbc46f2ff494f0703fcb9f6c079e5af3f4a7bb5a4546f9ef8d708732fbb -1bb4d11a942470e0a96d5c83d20343876d89fd6db3ae1fe60034cb97659382b8 -03a4c8ee4a01738285c8af5812c4de7a97b1eae85315c9497c082b28990e232d -7603a06ade5075fa217ef86ed78492c31ce4082f14a6952e0d07ca9d8e15589e -7c3f49cfde17055e8695923477b71b4c09986c62875e25576dfc3a3854c1cf5f -73004b97da00a3deef1be0aec1920342613d3e4f805eda2ac121809b02a42d3f -de9e9245943a23627ae0c1c34b5e6bb1504ceb67966e9b6f104fddff62e82b16 -cbe3d401aaff4d9b44236ef0d04b7edf16eb08b7d19862effe88b696d05008ae -ffbfd118722a55a1597604e232416c2190b36c30928f82b208006c26b85d7428 -7153fccc92a65f04229c8d7b2c27ac4294034a051b45f6ed5b0fa3e23af3b5a3 -5f996bb65cf298c4e15e98d228a719e1c968e7d5d0a75a9bc3cdf8b5c4a136cd -a6995d94f5dbe307ae1ca6beb56dfd09a6683bb1437fdcd537e43cb1633a72bc -1e72a5f98497227072d863dee990660c137064f8f73d78d9c5a40096dcff10a9 -4e3c9dff0d2bb80c429e2c135895b2b3c5be663adb1bf39e3125e4017a6050c5 -d4dac24a8149a6166cf87493f766d9706e13a4c3b443722d7ddedf777c5d0bdd -780e839b10a61dcbb8c06caf2246feccc66c6fbaaaf8270e06a4838391d7ba0a -a3d35b278235fff9a707e8da8344c078d88e8eb2b5e2f8cd8f2134d458221623 -1dd96524af97b92662292f6e1759e004e2255dbdc4e0a9fe007e550144af357a -32cd32e348fd2e60d4c10c33d032fc02ff8a897c4b4b5c35992e6caa8bc4c966 -6a520e2e98184efcb59e2d534fa34c428bb51998e68e91dc9382e28798845da1 -ae9d6e418c2e3b05373fe26901654e1e1a7849431681479cf05e0c19392ac9e0 -562794d94316670bdf9afe2d368fdc31fc2a2a98dc8f23bc236690d897e209b1 -c6048724f4ad378857640140a356919180b348fd6ceeb5da8e4b3f9dae1cda65 -fc155e10b53a271f23c65397711cedf404dc45dcfd9d3c87d57c1365cf9e6f9d -64a11df0f71f72ff52a8a4c899879f38e797867570844ce904c3104e28f1b85c -e31f5e4dc09852f5b47b4fcf2b1fb394f4a8c9cc8b807eaa9ad4d8ddd816a28d -7bdea3811e47722cb0a11f3967bfdc501f5f19f5b7f925455da271243465b55f -56030748235d6c1e8cda657c5fb7c1ef58427b148713c569d2fa172a2d32e50f -7440f4cb961d34feff587acfc3009b39005f8ef1b91c28718601d140034b4030 -05dcca93b5d4a0778cfc1a3fbf7e489221c88c27e05652d3c3aacae2cbcd9b5a -439d3687e32bdaa54a317a6f70833c88af86056dcd68e8546832e7662713ce20 -98e5bd9dcfee48545391246e794e408adbeba57fc3a3ba4e18e487abd6f26a3d -085eed9bf8e30a77c85271294eff2f8e3def17482c5455dd60fb942f85dc73ec -9f57db31ce83e7e3574e17004ebe6fd903f485e5ea88c8294ac48ed09afa41d3 -80ea17e2cd33190477a0492a51ba20be31a367e6260d0dbab050cedae7659cf5 -a67d94540d7022178ae1d4463f84630d51af81054a6b7ecf1229d9ba0a6773c8 -e3aa1a9d95416fbeea9ed901f1dab166058080d42f90499b415ad8aafd99ac0b -7220401edb7a32b298bd9b9010679a1f9369a5bbe7cbe04b2c395f1159c2a2fe -b4a85292714a8f491e29c703932acd583f6405828ca8331612f5f580c049da26 -22a27b7aef2806c427af57147beef345e56a2ad82b0fa3662a31828bab7f6b6a -abf00d5bdcf2d595ef576d7da2ea634a82458444145803d443560553a7d17313 -b67ce7fa22fe118e9e8187dae14e79860b371c83ae2ae787210a86a6fdcb95d0 -c05f1b2ac98eaf239af2469397fd8afa989eb8ba0c15412b9f90c1555cbef583 -25c0999b1b10ce4345e6e949b375a91ec348eda0b0d418ad25ae482e02cb47d9 -ec19b444406d720a45986bdf85b4181b8064872f65e7a93bde15ff80ebe555dd -8adfc28b6ab58525a6a72bbe50cde6461edd83ac9359c0042709e63ffda54a50 -a5a6e72058b498b7c494b2a7e68014bf1c354506c4dda52d7173e6530340f834 -7db62785ac8e70a8f560574249630f3f89c159f31ce437b8a86cac7f5b25ccfd -b2fc41fc8392430c296146477d501ea752cf52ec9bfbf462d12b39291f49ae74 -28485eec80df5a1fa01806b3013bda44477e671e87e82f58fab32ffc10c111cb -76e7099f297d6a67a7374e26109f751361768ef8118dca742c8f20774549a2d4 -da72d15706888cec1edbfba70bb8149b54655eba7caaa85529df4bea9ce0c633 -38837abff2597c6b75bd058dfe7091d3719efc3964d1a386b7c6b93d491b02ac -86b08ff115b548abdb68f67de3b6cd280ee1544ddf344782fe30913a21eadc6e -314f3ea2ab3d9a3783d5f9be76c4caed815af7def664098cf1a167444f31cf02 -b9229bfdd8109322df0cce8fe0405d523bd8020753f3d80f49365d5006829fed -63cb9571b219b3869dddfdc2212f0fd468aa3a8c78d06f58fc6be0753bf19eb2 -b014e28d06053e931257185ff8a46b2c443b163f9d9997cd2225a33ec6bef513 -41aeafb9f384bdb7f3c78de5d4adb511c16259b1916b29440fd8cc01dde8ccf4 -e8bf0a4dc53a1e26c020f813cab07eda515e7d395348ecbf8c64186fa5a81390 -7653da3f3143382a374b96398d14bf60fcc5f7603512bed7e8b33e7b20529244 -187795b01754b61d5aaab742be9be4532ddcbe6b88671076aa9551ffd58e4930 -1f3fa48529d85586f1e197dd896f91f0c64ce80bd48519f8c1bf9c4816622cad -d9cbbb97e7628a64f96b6816c5b0312bb98a23715c3de2a797015203e2787aa5 -ef40b3e17cac398805fe76a33819d4825f80654270445ba955779204f5e8fb5f -418edf66b627b992cd3db5f04b18b5dd3f742689b3182d41760bfe95be97e313 -ed97e32ecdc16d3d574a2ba1092408b5ad6c165a39eb148b2513bcdd01141a77 -0720028f31693360e9909897d85bcb5364188d391e34dc98d86d4909fb41a13a -cd4e43c7f943889aaf1d430714d1b0f3302432135a39b11be63f77d04780a191 -cb686729a89c7badec30d3a9b416c32350eb416fbd37104d038b0252a8b91f77 -45b543618155a76f06274dfcc284bfea8726e55ee8b47df6b4760e22c8f2020c -e0da1fbba9564cd974075c1670bbbfa32b5b1598d198a1a9b82d87a7814f5d6a -e5a97d890ae6e9307f3147d78d4fa40f5388b9759429acdb0e20d9ddc923f4cf -f2865f95a8fc0595724b0043e90091a2315ea8c071ab631ccd04c3ea77541646 -b2fae2bd69c5bb80849b85fcc583ed6bc743c7ab0e83634e9625262ca557911a -3715e19e727337fd16171908a75e44fd7f6ba76157167a214f11c228bb1f132a -b6cb965beb1aeb597276e4e1bf52614076a37eb859f9d61669257c195560586b -b567183114c9895464a71774bae8eb31e9de3c11e0011f85024f749a571a3e2f -0fa7d8ce0d53deb20fd2f10895bb8aed95ac89f8956a8c93e809536e9087cca8 -09106a42a59417359e0ec681c5905a6024bd3208fed44320b723392e3f900e90 -767a6af4c4e67b407b215422a6f409d59c309d1999f973fd9b3746d983b0bb9e -1675aa41b9f6713630710faa59328b3659f559a5e547451191d88e336863256e -d43a577b77f81bad982c3d06cbe5a12321cf45da2d300346d8534c4ed6f449e5 -14ad627693dd361913862aa14548113a553b5558f8da4f5fe5cce86ef8b6efec -00b188a5fa1ac6cf819110e6feb793411cfac4f900a379178c2d7990f8adfe06 -4d741594d2134678e7f9789fd72e87985334ce7e531f0855525b9dcac36196cd -2d75d8bbe2b02ad9b20184d54e9ac6bbcfdb0d13367e2b4b4310b9f89172d59c -385866af42d06f9477dbb56e8d3bc8ee8c129849080ced3d7b83d9dc1a32da0d -b79f6e1760b7b836e2d9a0b59dc7312a3cd10932fc771d14f0f2278479e7168f -2f4e058c0177456811b2de2b5358ef33a162bdbd4d908e3332930d0e1bfdcf35 -ebaad4210a5f80a39279c5faad2803a748d96651778d0ce97289bb70ba010d93 -60ca05073141c30ee35fb9b8d9eb3ba37cb97fe42fdeef382fd604a1cccbee9a -65716ccdb777bee502ce3b654612362291ab13fcb507ab797d697f4f32d85763 -39b9cf437eb119eba024e775fe01501a8e7982d266531a5a9316abcbaf5b9672 -8ffdd900cd9814cf82b9ee6e789309cbf1dfc11f715b1a201dda33cf7527da51 -cff0e36d2f4856808b522d5344596058508302f36554419f9654f941ca0804e6 -b38a6d596ca3fd660901d1c3553aa92bcc95703219cdb0cc8bb540c2e60ce0ad -0eaeab36ac18b3ae477967bf586ddc3a45b5949ca5fad78910e834d8c83faed8 -3cd8b0546efd2575a42e8d4e44c80f375c9d960686e6885a6cd283ad3c1f1a9e -8e0cd7ed0590ffcad9da423285a26c04960dfbde0a5315d81e5170ae081644b0 -2aee581ab984fc189b5adbfb155a52d9f7ed759091062e9d2b2c2b03c9272ebc -a0101422d252aeba66664b23a123ab5fb05da5c62e83934c10f7a9489fe6a26e -72ae45fa17dfe3c1badf296c09a375d2451b7b7ed5dfd262a7c74fa4a9a4f5d1 -f431bfd1e79decc99db3f7eddfa78dfc46a47c0881f500f8fdb96aeb4fc4dcaa -ae0f9687e6edb2519ea85fef772477c3e33ddb52900657f018ff227701992647 -c9db8e4802cb0d6976b1cb0e3dccbc573bfb38ecc9db8a95bed9c4d90c97d3b7 -0f87ecba2fc8b03a7088f1eb02875c27cbfa32efbbf38ddfa77ab23c8fb36d1b -ce1112bfc0de7f911f1b096461faf86cc41be0bf61ef31581847b1b478fe28c2 -cf6a34770e43a95e08ba67e429545a65bb9e6e18a6c4dd2a34ca9cfbdba9cfe6 -63826142391f15c543076928f9867bde8b2b1acefe68c777fbcb70707f4f91e4 -7eff73b0c3c26986d1ca582bd05873f4e40179723271d1799dc4fc5e3dd9cf77 -64e41b8aa8dfb907abf53e3a0007a714d6c941114f5beaac82c46927441e3402 -36c2fb70de002ae35627ee5119577ad7fcb9fe5deefc239aa09e6bef15aee873 -db24b3cd614565415a3077b20c1b095a5726ae475c889cd9341c93d4a1984709 -5ffa8e8ef4f31ea7dcf6375177f319a05e551a8905bb47c9f23cc5c0e5fcd8e0 -29b3072632a060e6891f2b77bc1da20cf7da33173db210baaaf8270e0315b6ff -3fd6c2207b1a429577d5d9d66a0f8268d4aaeb29681a21f7319ab813e2a1eadc -39b8eb7aec1c33cc62809a10ef560d2453ed7551f097960efb4e4708858d5729 -6307189fdfd3ab62c75a7c501fada7428e157752fcabfe629902715193acb11f -ca4aff2b0ed13442450e4f2a4873d5cc3689f7d4f7e372326e2f7093bd7df4d0 -ca957794a61a2e813e24155ee3a67c4312a06c72f84acba679e67e6c71f43027 -cdf8a21da3bb5f68e576405c1283016e541a3e9eadd67a20ff9ad7a658a8b831 -2f30c18c451f553c1149960156b201304263eff2f2549fef2e4906909c1b4904 -ced62fd9c0c973b82dd66044bfcd36e1991e0b6b84b6102258e205a458952aa9 -53832d094e6915c3a1669d4f532132424fc707dce60bf9ee9e06d4035394192d -922641adf5777d563ae7960c8cd6175dafb255747737b02c40687953c766601e -caf56e747afdc67f8163de81bec4dbd48b3712c0d24e92747d98d5d1da952de3 -eb9ccb3a132121cb1c9b2de42fe1417bea313043b5aec119bb0d1e3058a82087 -bea4d00203fefed8ac113723b1081e92ca7e91363b86eec7bb5dc2e123e41c66 -577dce271c93c667cd8665372d5d3b906070bd229489a91867551f3127591bca -b1ce86d7d9bbd5f265bebdca4c58af03023e9ba2c291d78b629ef48bdd731c45 -591edf98d4eae6290a00c331780943d1c6671ac237a2844cbb84082c06d39cd6 -b04a2e5819d27a25da749ee7c94488fff5f59eb0a3789522ea85eb999c66f359 -d1ecc77cfe14774fd76b97270e30e95bec696aef56f99123db82304bc662d8d4 -6b342e53171a512e7d435f3009de3613d91a6f32f9ec2e11bc98b09c4dc4d516 -8a2ed64ac351109e5e38a68caac84ab583421eafafee02980bf8d8fc700f1a00 -129564d5efcd4f7896130e76fbcc6c6ad66411285958e3d17c2d408960cecab4 -02c5068c43df99d4de6b9876ec4fa2128d9ddcb0f10aa89aa8935f22c9445804 -4c1b0ce6cd07c272cfaddab0719ef5cc8c597960b7eea7b4cb5a10c826bed1b8 -219d464d72a0be58ae80de6edf876c04dd2abdca41253efcefc0552989dea491 -9605795e6ecbac4ffbc39307ce1fc794d4bd78b64ae38b2750546b8613378f70 -7c5c29640874f1bc3549f9a381ec1d13ab38b1c20d59f90dbd2397a573ffc9df -525a4d4e995618a58148687c5c949e14c0879316236284a571a5a386fc94cb2c -c5f7327f9269996e2483e9c4f22a813db3ba38cd036a454d335497f53d654d6f -e28e4583febc2fe34cac50be37bb6e42b8f92f694cfd4f805c6423089bba4461 -8e36e92d90a06f749d8a1dfd93bd0645dc66cd18ee797ffc06d4938ed9fe7959 -ee2ee5daac4e5f2e15a8b4c311eff43f5ea1a13fb288ac57267b71bd0ae02964 -f1901a7b5005a834e366399eae62532648625bbc13c64c006c372491878ef7fc -645667f249fc7ba564e152012e485320fb3c5dffbfcd936a93916045e0ddf257 -992e927120370994664643e2d57678fb19f0754ec4c483a8b6ceae60d39703d9 -f309e68388cf20bc752caee575c86ba39575a07528b65400cbe9fdae6a5f307a -b199a54aaf70c5889bc64a30d5cce65c2276ed1d9fb30bcdc94a65941a2b0e76 -3940f7d243c8de8120b5b2f2995d2ec3c7be6421aa1f7a5f8b6050c17771c5f9 -d61330fb818df90f3062f9f21c23fd0a59d6ad28e023e0d3d7eb4dfbcf0c6bc9 -9fdfb74f740579c8460fa6755dfc800c5327da99e494d9e18efc6752f1e6eb31 -5e399606ddfe98339d085bf92634d2f557d2a07db440f45fc2e60732c51fc4c3 -047f9f6dfaccaea71a9b14ae1e22223987cfc33856fa6d78be0c8b4cfbd8d608 -96c0699ff248a80af31d111d3d7437427688430782e1e99858a2379852ca04de -bf7d0922b11865b5771d902dae865c3ff7aba28da86ce91a6c031a647b6d5676 -672480a7ea057dd805ade4318482e9f5c7e2592df1672342b98c8b67cf25dda2 -f69d55e28f1c35b070acca2e4c5100c18b102164f534b151375bf8e9ec27cd8e -e43a7a23cca2c5462ea92b202d9eaae4da36f8df69c38a4689b04ba3e6e6a2a7 -8b06763decd52595b21d5348e3f6fbfa775f8b88330a4f35bc3213a5ba19d277 -4fa8c256d06787e6aced43124b422d3ed2ca884c64da93933135926880b21cac -35e222c4b6076bb2b391357e0c643f04d209788fc140c7303c90a3c3faf5fccc -046d3b268154e017f1e4082819de8a5bef0c1725f008b936a243b2eb850d0900 -4560651003c30ae5fd462d8e68e4ae51d17b636bf9d45c7fe07255e470d2748e -f9720203181e528304f71c1fa2fdde7872ccfe55bb77c8a04b529cc5ff114c64 -544c4896f091965dafaa0eef5e8671d258f4303512567dfe2eacc764f0ab9a78 -206ddb0942d1dc868d52241185e7c830c57f31ca9c08453c6a8f35bfd7220a52 -3e3148beb6fca0c2d56048b7755f068220d59d4fc713056bde03b1146e8e4b37 -cb5cb8a90858920236e561fa21f179c12f7be7cb63eba15759bf0b6299ef3835 -b8d41edd37c1f1098fa2bf3cbbfe0f7a98620e7b072f5ce1c90bdb8d5f6fa9e7 -8629f3c6b4bfb047c9ac1869daf234e4a95bc0bb73f036de76595dcfa2d5e856 -22b48bec72edc8a798ae673dd434b01e89019a908f59089c9789f58b8350a43d -b00ca1fe192390daa4e85e7235492ce567dc403ae5fe8f0761274973e07ec119 -1b0ae1cb7f6f31076771d896139920861da5c58d3403a416f243f1b58cf54e94 -f3dbc9351633887e8d7ea6f88fc4a0dc6d2a471a78f98ebdc2a98613499a80fe -b166a4b803b7b4ed05ccabefb2405745f1ff28921a05a0245bfae09355910031 -180305de2f64f071a7abb75a72eff13539eecbc4cf54ff0bc87f6d72d8a742cf -5073aaf7942a137ab2f273e22391ad1d0dec9dafd58ec68553be5fc4e6c4936f -a3e67a86f4ec045cf294a1cb7f9a60ebe5178026fda700042cf5bfadac3d7ad3 -17f9bfb62ebd5946992569e9aedbdce9f3abfaecd6d8fee82559f0888d48f794 -697c54b805026ceb1d708751d88af0e5cf88332068833ceeb24223f5b5025384 -066f67ce49e586ebc4249bfb15074cb522c3626bf2571af43f0164b044b5aa66 -9d8217230edeae2453fe02f018bf8a8043cfd63d744388c12cc8430ca4157c81 -e7018b963021ef43aeb42f1f5246eedde76ad7507e65225430f2ed40877214ad -78a2e199f951e52790e30ca09c0ea8bb318756137639532e638661228e314364 -1b1d60aefb5222a3b724674ab6fbbc3445b878f99b629de47e52e36693dc4060 -9fcb048910f3d70211659cdbce05f0733af96afad264d1841b2fe33f3df5262a -92e98f7a5873f70b931a7c78863dbaacfde460906281d5ba5accd188edb2924a -bfc1c6313cf0cd29ac91d2d374734280adb1ec4b2dac9b53da1134b7ef26d10e -e05685ea4b31e5396c4281ba371b59b12516816675ef303fe4f01f1f84de922d -69edc0d18568c06d4dc79be0b9754b8f88632fc3a74fa418833aa2943c05c912 -b7b60343a7dc7a3f6f1aea9d83011afcc00619ca95cd8f97ea85176570bcb441 -e9b74ce8b100efa22290b3dc8113db1b383ec98f8367eca2844bf1742d752d29 -7cca604ed822c3f7b560300b39afe9fc8d9340735a718b09064157fd10d43dbf -96302c60195fa1d5bde0c68c4f235184898d0381849a6011239ed7d6c47814e0 -a163b82e56389248e7594fb9f4a2522ccea4eca0d36e1295b3ef67aead84cc8b -c297009eb5d21eaad7ab4176a443acadee13915c5ca44ff41ccc2bb9abb47fd9 -6461ec3d38876df77e5fa9993a300c39813f788e17320de56592806658b42a04 -dbcdaf7bd0684f445884e6f1a574467e52019ee8fc129ff3fe74fb03a5d67047 -80155de767defb2964317f6d058d5b8cc35324368469291ebb15cd320d566b96 -c5079d12493a8f84dda5005f8f3fd7038c40d1e704b4faade3ccbbdc7e90903d -fd3da3bfeb37ba41db2557640f2bbd6f3f49d9e37925007cb97f98c6e365d06d -282a433e1aa95dbef41be2facde3f5a08254a366a74b7a2f5c14898881d4be99 -aec4b0ee10022dcc55501637ef6f6570d437dc8120e63045002d7419057e5c15 -6a5539ebefa7d632d343a41df8804a6f855eaa3186b3f97fb7f79fe1377f5472 -04e186f1a97011fb950ecfbdeec1ff992b1ebc6837afbc0d9362c1712b114bb4 -4747c291759e7fee3f81b000f9ce65feaed5c16287f5e812f152ec27815bc6aa -35aaa245c882c9176baabcbb81548b5f271c42169287da48a7c6140af35f09a6 -b82abdc84b8220577cbf0ecf0d8edfd303f468ab9d6a2b89d806b3e19297eb13 -eedade8e405ae9e0e9412525f95e6a7716948fa2ac037dce19d67a156c5b813c -0af189b9b778bbfdf730c2050091018865e23d6cff0ea4fc0d26a0cc510ddf5f -456f6aa4f1c33fe7b40f5f8576b477970d6487275389ce7b2444f09e3fa5c426 -9090dc59354fba985544a261230fb1758bac67e142c4a1e71664d7f66eafd525 -22b83d1f2cbb5f97f04924e8cc4645b27331eae812266982efccbccc4ee93bed -e1e0ae7e88768e690cfaa0abba98973caff66daa632834527b26260e0a4b1655 -3994bdc9c729f2d45f72ba1c510a000b731ac3d9191e1faa5c9cbb7b94056d90 -f65df04c47abd4bc12b9ba0c1f84e4d77081d773a9dd939ba4c4b32785bbb337 -ab4df32d20ce0df7ef0374dcbf88be107e8813b5a769d530cded5649ec7de7de -0f7f373f006ce997b6f7bef0c52d49b8a62a620a37069ee851e7d23244f6a014 -4d50911d347551a63f9ea59cfe0159797af521c09bdf75e12a4a8e4c38ede4c4 -4e7a9712340d42110b7cbf4061ba2f2a5ddcf67a39eef57345975a9198fb8573 -f34b9a350845815873e4ddb7866c702ba7193fb92d21bb74d8bb4c49f2f3c7fc -3b703bcee9e7745fa637a9383786fc2729c73c29d2efa5ea274d9573265df506 -c1ddb510c9f3fdcd3a80c0ab90748651537efa2d8e0bf374472b5c7bb50b0101 -7263ffae7f90a979c3e5f3cd8a5cea478627890536251c4c16c0f63c1c822efa -66a75e01a68758fd97c5928bb2b1df6f2b74d2950015f2eacca793e7888c26ee -723e78f3cd926b1979bdf422bc83b4b51d1a0ae3ce120540e9b653728d769265 -c03c0a3cbee6240c0de90646e7ab730e5e0cf1124566bc16ec17989c1052f8e1 -84590223348e5b4510204322929d8632c4bd136c89169d45718a88babd7f2cda -62afba21cc46bb3207676b96695d911fb99bbf37b375ff4fb8be949fcc4b0481 -3776a3451fe65a47d623565160358c977d4bebce7aadea5648814b8769dfbaee -b8bc2da767da69b10daaff6a50b6a7006ab74f8bd0ec64e5681199b7f3bafeb9 -bd0ebd1a79554e8cf3e5896956d279d4d27202a4667afbc46b84c6b9873e8ef6 -9d5b0777a750a5c8ce86f3d5851cf3203e8b47edaabcc6c6256872f31ff228d5 -7b686b38b35d5dca23c755a5ab9e661630e61d1d376a46466b1f0100f66affcb -fd1d6befb5b196143998848e48119456d6f5791bf1473a2cacb9973bb80421fa -781d90e0c1e6912dcff9ff07ebe821aaff09597bdea4e71e72136c4e37946f0c -146b9d507ee79dc7a715cf4d65db2614cd87c5709112938acf9bb2e01187fc03 -5cea0fd5c2ca980adb6bbf5b9eb427971bed47970a13775be150a7a87bb2b8df -a92f8c86b98a36ab956ece9f5c562071306642d74f177ea0ebc1eadf96cda6ee -4c53703763505ff273c296a11adf59c4919f63c78f9b7c2fa998f5befc631ab5 -4dfec01d96fbd7d076357fd85f26eef6c10aaf99a7639c5111b3a13bd144bdfa -daf1fa9633b69feb2590a878ce4621251a2b860b3e1ad8d7a6ac1a896380f206 -158dbd525bde081e9e7c58f7aba0ba68a22065d3fb7638ab4b2027cfdf4dd926 -0f624b197d19691e1219f705d63781d6eac4ed8bddc3cbe2e7c735f73aabbfa8 -01081532536832bb4455483b827fa9f37d547a4d2cfc98707e5a4efe77037671 -faafb5489b64ea22fa51f2df96a89e8f986b3fa39e113be69438f1a4bb1b5d1f -33ed7ca77228938a98bf47fa54eeb2da8d81ecedec102f71c278d824c2bf5bb5 -37cde6342b1ac156946de7f6c4c12e1d639d83cbe78d8775cce11584a4edbcf4 -59c05abd0b590172401b83fe9cd49b347c01671277ea43400b1ff4212b3d02fa -cc6d384f815d7fdb652ab34d7bacca2e9b2b120de79e3532f81d778b6081d631 -32c88f10184f07abe8830a3f5efe712e7e3cac875f3b157ca3a0dd8a0417d512 -9554ac58171e09ae6ad91f69d3235be00c67d41e00b6988b7df3a07e5d65538b -6f600988178e4c98db360c5ded8f7f8b7866e6d3168a085ca9a823a347519ab3 -5f4fb80774aa4bcee175c02cbe39ea9a0ca56044f50ffb2fd637f925339d30ba -8f4f7fd7ea5a606dfd7b82ba69b4724c960a5cb49ad40f1900a0969cd912957f -345c08603ed7e8292789984bcfafc504dcfc19eadb79ee198dcb6539164db7bd -4d210c9bde5bfe4207c363af21967146511d70f7a0fd682afb045cf22a37bfaa -edf500dc18251dd086a8d2a91ceb979d2a1e9cb45a6b59afedf66174b764dfc1 -1048356c96b585d142f943ec97c62de95f9b8a8253ee0d6b2b0153c445563826 -787921b9a60417cd4075922332dfd82be6d45b581b581c24c4548ac5782f726b -0bf70d2d08493e9a96668054bccea2db3f66cfa6a4d37b36418f9fc8d8058c9f -e713810483a5e75b3f61cfc012dae494dfc2b717cc59e417e25e8c0e21f62186 -acab4158cdf47343ad8b73dc8e43dc792dd29897d8aa1fbb977e9a3dd20fd247 -d0ceb53d2fcc627179dabb49f2920cf8a1fa4d57f39da7e5ca0a94d377cbb20e -2c98445881201bebff5e33ce17d8089f552c3dea96bc70b99cdad2289a3686dc -b5aea099076ae9450c3aa43f18a3d98d711e43835c31f566866ca556b2945738 -f359ef7e7ade8e1f56bfbb0317fc2d08846163cf343c919adbe19686ab94f7b0 -7a06f3d97d5545df781e11a06b06b175fbdd1316580a66af1d94f4247f158c59 -d8e1fee6ecb6ad565e772fdcfead3898a5be123f2d0303ddda02b8e86c7baeea -70eca3cbd43509a85b853eb3286deae9e29921782ed417b13cf1e6775921b2dc -ff5b2424f98bf14408d446d0ab530d88f49d231315c6739ccd0cc8d01cfdc259 -f47bedfe7a53dd893cd5be51674e6ba162e1a8aeb2b21ad54819bd3d648318e5 -4d651933c280e81a327934ef0eebb83b795b3b384a129c16536bdb05bb2ea560 -72241eeb5f35e10fa050fc0f05fe4deb3e2e8eb52a97450c56594746d0278802 -9559abdc108ddd3431c2cea2da1886ebc7a973ef73038004fa13752c80a35ee2 -8e5772676df858dc9ff0d05c735576262b80e3e49751d78f2febd65ae4c1d0d7 -66cb53656583299d2c058bc94f272d398f72728e72368362a69f69af06a708f7 -ceac24a0846496457635fdfae466621eb4e0755230abb71bb5abe293abf7cc5f -8ea2fc15c66a5b2fc6a6d510a6730d9fb678a485616374f5c1c01b2ce834add5 -6f8dba31a95983c97af9e9ec5b8406fc67dc045c551ddf6131834edd18f79d55 -983aec1d18d5fb2209e87f1157df947772de42d04da8085d3691dc7010505c0f -a9724190d9a82611cf435b360971bdcd2e569629d98d439da052bda080ce1e33 -bfa5ebd35ef2e7dd77bd517f1cae2250b13a031c69bfe0d147919c53ad773024 -142ecb1a3ba1ab50a941fb54e63ef49edf844306f7e5d12c9090d2819dc6e450 -42936015482c7bd75693e910eaae10f04385f624083d00276d0499cf9891cecc -d31b06128a7afa49154eed960f37e7fc260e1372f1d4559062471db4f0db6faf -efd3e6e06b578e2ba8ffa1e9c3f5a787124a22e0111ae960bd85fb1d62b6ca5c -b2b3a87e3081470706237fcf936e37dc5b408d0c41299f921d810e01b5052751 -cfcc27024185194c147fe01bc1c4409c520b3e3a5c0f5514aea4cc899ca9e9ff -7834dfe5bb0b4b0b019c1e8163f294fb6ee50b05fec276b53f04160fce3defca -2c33ff34f6b1515705ecaba0aebd40a99fba99942bd8d451e1c1e489655daf7d -39437b97be715b11ff28fb291b972b143da98f5c66b2d02a47850765017bf4e9 -82e2bb732dc64b51fd4fdd3d8144d1231548dcc29bb9927280492da505dfe82a -dd17fb67b02ef0804bc82339d60dcc1c0f8789074747a805a7250f494dd1e9b9 -173110c4b3f2154e865371295ebad4e321f15826b3d3e61a400bdcd15ead2adc -2a5f00bc25e36413e46e195eab01069a35f34fe5c00f46b90d2e444c8d5e8a53 -bfaf1fa61745cec24611b2854a7ee8532b54b40ad523f955a4fa2a9c546dea87 -e6d9e2de21fc4b3b2da747fb3075a641b29f6d6cfc3ecd725f26972e31594686 -111bfe80caba23be92b04171b738c1709bad40060fb0b603d3a2ed6e7d49daa2 -627ea6916d3fc19815fbd0fcbe5d1ec8a8c7a6a7488b465973d3c1991664bf71 -003353d2b025d571348227ec1700407e16fc5bda2cae07dbe55bcd7dd0207219 -f4e61479f22c8b7aaa0ec7281e933379b5d25a6ad9ce46a1c67a488cbb315f2c -08fece286194bb86c66bfcda0fbc668b8b84c2af3e9cc85d065e17f55863529c -d1668f07dcd6e51caca4eca02811c1ffb9a4eaea01a41e8bbb12b1d23cdd10a4 -97d1a6b9ad43927837f9b12b9f703d414070ee06729c1e0f78d5f63629739f5d -95cbfaa9a695db4862149ee51c566b8f94f79ef9a3de87c0ebfd3bcdf4940bfb -314e1bcd17595f3d041b65e4e7765b60a192c4ed917b8361ba0b5fb4fce8f49c -b09412a1ae8f99d878a8fbdd375de3631a63119042e11e6d742f909fcd775784 -1f5a40a168b4da3dddc65d947ad0950a1a275fc72a923422db5fda3d54e4ed03 -a1ae04ab0f59134abf88aa65d6944affa2bd46ed8c5596062e4d32536d2c8ffd -e5cee1bf927d1affbf9dd4e214ef0f323a9f48af8ce0ef87e858edac7a6cbc3f -9ee530f7609cf023032a19298b334306ab3f5ed123b7652aaf77ef421dfa4ea2 -e1dbc68390082b50940aef52f583767e8a5d9eb33142f9883ec9dd26a4c0a446 -31e1b1e55031a9defc48060e783c7a56426e4f690aa6cd006c5a9fa76310d351 -9f8ba5c79c301bb370d30c7b3adcab60adb70e4b4cb9b9dbeac8bb08f07aba62 -3fa6c7805a38a4cf9c5b7f2ddd6dd510b174f7c63b2d5f4e391005bacb81b7e8 -5249518ce22a99e8811376e7a464e22fbdc4574ab3684b416dab3526b3bd0c75 -0acea306c0d448fc4942d2c61d44566f8a058ab93651eb319affdd9ecf2655c1 -d00500943b59360b6c75b780beaa2f1b98165ce2ea6a64aa9435ad5b4d57a089 -0fb6274b5f137ff957e2dc801dfcc8f778fec72a96b31e7457f421399dbd9dfa -c99e611405a24bdf0bdce785d6ade5a5c09ffb66f787bcc2ca4b7e0f5dad5453 -b3d87e5ba383065143952a9364df8cf4063b2f7b3ab30c263e5b92ec64c43c30 -502894c1b01fee36aac472a6e2adbb9b74129074e25e4cfa3c70e8ac2b3d645c -8f54f45ba3ed89629cb4f2f35c418ef74a194c496c4b2518429067932d57bc0f -7569bf4fcac26e621327db71e19eeb5335d8a6f25c99d6aea57bc6ca73238c6f -ea54a43c09c65c83d5319231adc05299a668372a9f77833064c460b312fd39e7 -49426fa209cb1f5d3d90c043603c8f997470de5cded5bef35daf0145f5dca5da -50de2bb8b678e6f36c53643aa97f3fb0bfb3191ef20abf0022d160732455237d -45d23239e4700ca5d7b71231d537bd032c3f2e7fee61b5e32caafd5de34b2a31 -9a4745e6e94da94286497233f66637586af51856552b0430710606bb3aefe457 -acaae21b8cdcd140b2bc4ff16705fcc80d04e0bd9b6a3207d933388b624893fc -349fce3e420690841637e1ce83247d5de15a109350c60944853a42fc3adabeeb -69e78bb11a5143fd2c465be7f72c9478a96883d1369414bcbc5b20bb60457eb5 -22e748594f23e082c29689369e48e01187efc53b3637218a36813cc4da7faa36 -9e29596f5de513074eb3a364b82e1af8a0cdcc513ec66d60f1173dd50937ee3f -dc888950c9a6b86ceebd3bf64b6319eee63db2199b824dc84e53553442b80e6a -6f29d9ed68d767c3d1ae78037e2c7835800e08a67c5be8f57571a71426c25e30 -a80439f9976ba351cc64a15249905b04742ab07e98b867d4985444e7a9096346 -8f70bfe63fe94f0a4f23257703e8793d059ffdc798ef3cf642a870aa311abca2 -c2a19fcbe68054c2bc94e2d030e8bede94db3c839e3d85302c297369903b9c9a -fc45596809d3c3f2be2c287d8b49273640d1dde3c7a4000616cb0821a01ee775 -e7e1b96c796acb7764ce16478e2c98547840df255eb133fe407b5081d808f368 -c575cc039dfd5fcc9e332e629e8565cf227079d25627dcd5e4d6a0710b486b00 -7189b9cc441a094d4be628d1990b63cbc5cb7fa127f49bd2b5ac659115bbb018 -dfb667d4154218d907abe558d4fa3ea3c753aef0e05b94772e6ddba0b88961ce -49d8d6f1d85930efde0fbd9dfa0682c5a8adb81d8d0be2fcd209238765af1977 -dcb18c4f80bbafa42b4cccb09f9da4db574398d30754f0c2870f0ff1d628dd4c -b57e3791ffd27ee4a9793f3ee5e105a917cbf9b6dc9fb7a32c752519b8334b71 -8fbdd41eb77d5e6c5438c6cb200559b914cb5b562cb914d777f889dc0af180a0 -3d2c2036358f8a105ec2a6f6313155cb96c5d792e2dd3c2fec6c56084f295047 -c1ef4ce1317930046ee382913d7df30626801fc5f6d1501fa31e643345128e7c -1f9dbd43ba580ef2bffd9af99a7a325a4e39f02f4ff5d372fd1ad895c3741914 -b1b944da9fefbe268e9a4763767718dae9d44728591c4e60845231f31ee5e929 -30f7c26c3235548323c5d14c3d7bc73033940071739c215441a9e72f2ff242f5 -5c65173ef32f00001340a53936c3f926a54e0818aa8cb28dd6fe9fd1c62ea09e -141fd00782dc1203b43dadebeb2104286082a14af250bf64ec9bc75371a9542a -2d27f971d3ff426371bfaae72a51d2aba44e859625120ccdfb350ba1c7f31413 -4669405f69b8515e23b0e305f3cfb9b0f29b410d26062bc8a1930ca753184e1e -dc97b40c9769450780c4a742ece35d726475e7d5ca91700e23cd325c7853b6c2 -b9b439ea12ea4576d7267e7e19baa00665f42d0cd312715e3b92493bb6a3a6db -54afd1f4c5e7f7bb20be232591b37778de18eecb0d6cfd30d247240b777501c8 -82b269a8959952836bf7d26713019f7677937a97354fd1106f6ee6d09f6c75d0 -296b22831ecac76882f68bb9434dfeef9d18f0d5b8ff6615dcafb348ec7a9866 -6fd749afbcf651be1ed1ca671a6013ce0c183f1ea86566dc9159cd9383b9e5ea -9900ae6c384ce3409aa4db1603fdc010083db0f0ee139b27c6090b8135799e8b -420f8f7b10e7334d53df7a0b1581485bc449776ca4b2678a490f9d0ec5207514 -de7bf64d8cf9711cbaef78b6b599d518d77b4544434b8cd95d04149e1b546204 -32b266a48da343d0704d10661485e4c11d4fd05fb727ab2db4975482edbc7c42 -b9b3af2806828da2173a304f83b9cff0ac4c5d4f553fe7276caec477bef48321 -ba153884a05e23002239cef2f5c95d8f6e99dc9554ea767409ce0108e73b76a4 -273aa49f123dfd32d27fb45f80622c7f61bc3242b8e00e6f50ea21d0b2c35f0f -10308818835feeb760d0ae64c755aae98e40eacb8f0ce744c8aa6d6b5c1d256a -0a476118f5f2d1de2bf12a0dfa68ca2a2e99f5cc0fb1aeb3e56cd8ee3221dd3d -5ad1fd57901727acb63a9aac3aef6c753f57e34aec57d0876b442066c2e324cf -b6637243db0a9cb9d2fe8e82e0dd2d513ad2b33f99bdf99b5c551cc0114da38e -392ac1ba0d3f536963f6e078a6a123f973395ae4846dbd335e30af20c3c23134 -91e2bc5987f44b6d377af7c5242e4f9ffb43517017dc7340f54460977dd8f8b5 -d1461c6707040c47de84d198d4164ddd7e7715a70abd458507fb336b824ba24c -ac0e6901295372b2863c119d0ee2fab224f7c0b56af33c8b82436ba9303cc0ee -3a809129e3c15b8c7a45538ec88fd1597406f696adc7ecdce383d3715325bcec -7563f1f4baaad70af9d24dbe272710dbff77d95c3462aec9e75a1e24e9f0f716 -2f82f1410d4b77344983fcae866279a98112d6718ff23da33bf16255c1b10736 -e8f98e8ef876d73ab139009bda89836d18dd03dfb13e332c50227032ff403ec7 -26dc8fa78d77aaef79bee7e0656275fbb6cc6aba6bec4920167380a1b07f8ede -5fa970f56f530ea2cb06be96def3b5327ff0f35d2d2152d23d712013bfb47b1f -e34f9339712f75c84d90df05f9ba2e8ab689f7804c588e5e075942b6dd11d875 -c56c016d18f48d569ff5ddcf4e323fd9fe03d5c702da6b98776601e925c73ff1 -7943756f5a4867c8d9c3f0a23280e873a891a6371c258e1cca3c4dd8be44e16c -267512e5fcf49a6db090e47da0f7a2f56804992df1c5387639b67aea74912727 -2d54a49823165ad330dd59020f1351f22d2172d018383555b8bd88bd50d5f715 -0839576ac6b14c3d651b54411167189c9b93f44e1783880a4c1b31f671988e19 -be05d3e519b72857420d6053ee7e459e98b31ee77dbe9242fb65d39e7065b67d -4c4b6619bb0a8bf1f860b98111710a61e2038d8ecf06c4f825322a66d327a631 -0bc1e8941fc36ff52d7286dfa8d2c38b76864f062457c198ee7335602cd975ec -1958a3930918b4959aeee256b98e0bbba1c370c9ea62913e9ef33ec799bcccea -de68997283d202476f1f065861c7d611478ffca395677e4152bc82e9686bc4fa -a82c0cc2a7e8b025eabf0fdc11e0564eab69bcdd8c4a05e5c249164c117ba859 -3b0d1c7293455320b0dd104b95afbfde7a03c0ec5b25f9d9ac6accc4de9ce736 -eab4c6726b23a116ff885b29258a57981be31f03ea5c5bf6db8c9ba21b831f37 -41c32223133c36127a0b3ea1d378a31002722f439564eaa70bf9c6465c3a7d03 -da8deaf66b1534bf11654562b6f4ee776d5fd7f3d288b51bb1e78808d261120b -b367cab8ac4ad2e910abe6bd80f9d421127cacdd282116a4bd376ff6999746f1 -4202272291588b6acc250700f32398d7ca3229bdad1e2244fa8d5a93af30fd0b -98f114afb0e4f4f917aa0935f735ec4d5d3293ba3c9d70af980d3fc9b9ba6db0 -ec2d4038a4c9872775c3ff227583bf4a0bb3baa3a14fa3757b01c461b2f6b1c9 -4e549e58ea596670aa747ee95f8b881391593f409cf52daeed278831aaede2f4 -b7dc53a8ea279127c7ac74bd500f97c86a513e546e05b343a3d590b7081df88a -3acc4d21a3c8bb060bd4ac8cf01971a8ba33d1e7828a5e64453028be2731bb48 -dec51bd85a6114c8dbb2f6ee87ed07af749318c90fb75a672b2b9c656c0b760c -ee4c6c462f9d6fae1d26469b37a043720fc710031abe62cf4deb987749340f27 -43a142310687a8b5822724b7b0657e7b291e803d14d2eee8b795b432a983f54e -53b17161d32c7a2d937fc8151c37866d3e25469c346b59c13930312fbbed651b -3019b9f09ef2c2a217780eebe098bb92f43e86c1062e161110d23b17b9b92682 -e32feb15891454b1c6201c375d58c4f66bb0a322fa8cdcdb2ad5556a9b6f0eea -2b3066c1c89a44adf94a7ee1cf4e15d51ae4c17052ac66df51d27e2b1cc36871 -14867d0fc33ea44338e9823c1016ee6263b1bf8365b900d2acdf2dc41b53429c -b64e9e89bf148370f62822b51bc4faf675fac2c9cf47a29f34f37628a471c4e3 -6daa47bc0b23ea7c1933d849ed2cec6eecc3ca56cc93a14a4258ce5148c0dc0c -f4f236316363140a32b91a4a7d78f7bd49e9e138b037621e52dd5e8e30062fb4 -1c537aac83e2e85b2e57cb43102568966d75c37fedd7799108a24de96670fd6a -4e5d9b9b778b6d25d0030070ba7329e482c82696e65df223e0579823f0db7323 -e7ff8a4bbe8ed37afde9a15deb7fc8521a1179e9197e2d3e6640e591c50606e9 -11815ea278b0809d5b7ed1dac77d333638b027e340fb624e9f1d6fdc40ad7cf5 -bc8b03e4cae755be841a9c72c86930024006b17f89f9d4ee22bef17b5baf4cd1 -364f889aecf94c1cce61909dd22f6d35a389136125d44a6b4c27efac337d8e46 -6d657a804eefea97ad0b436468e088a93764365d2481aa2d5e79ab437ecde035 -43f6023c3b75a1eb4c5b1685bf0eb3b9e3944a78c9aa0d410d20f7e366670095 -8f17d09d8b713ba121c46774ce83b09ce675193b845ace5496ed1ed96bd0f1bf -505353ed69f2aab2eef00169531e57f8ae498ec78d5d01aa45f4d7e2c96c486b -e14a1b21a1b61f6e73c970630692e385184d32c08036af05fe240976397d06e1 -18892245ebace16be7ad3445945b9edfd4794f190bc4bdd159813aba09f80544 -58a0c5d5b5624fe081c09dcf2b1707890dbc43def71d3222f8f853a5d169fdaa -95a33d1667b9e9bd7bf5883cdab58f17708bed530ebf7eee4acb2c9bae6b8337 -f1b4cb61b37c32cc0b3e390fdf35df5bb198a2d704ffbee24e27c4c1248f3f85 -606de45396611b4ba6ddbe1e9434e7e48273365ec73dd8df8aa378822e6f1f6f -8f35454c47ac054c77d62fddaa17b41f60997bb9f1ba5b700e7f840f1cbad1cd -e2305a92564e0f4c88bc4f3ccc6ee1175af3b2f83cbc57fcf10f0e63e7f635e7 -1e428064be1542f59407f2a18f70adb7d0eeff6baf6ed415d7a2a0237d17a726 -e84344dd77c48b43f47451142ae90d22b0e90e993715c55d0be8c808944f24d7 -d3b167f8f6f6469aba9fba2bde048298e85784ade8d96fe228ae328a0c8532b8 -1d97be36095fb1a3930417db8c50713f86e647113b607c7c93bfb424316e1aa4 -4f8543880efeb8b9be6fc7b978a4acaae9782a2721757f32173cc39142103963 -9da323208310b292114a62ff42e3cc0c986f709f986e07b9364634fad4a3be7a -8a63cb7b26036eb8515b8ae6af058874ca36054c184f2626ec2683bf21304e1b -5fde01772a0895de5ae8caa031125b614a83b949bf40681252218b10f5d4ec6c -21e8190dafab34551a3b8712b13d195ad6c934cf96b9da70302e84b34e6f8bc0 -ef3d383ccb7adb2e5d67ee464f9b2124cd034dd4ffb20962a6abd3764694e07f -4b4d244fad6fcee6167f5f44f943a02caa9b326726e949a8424496a79f5acb37 -d8c7c3b10d5fec76b568ee77b02061eec7bfc67c9e75ea1784e15ecaf2bade6b -48a80532beea72fbe2ce5062da978663984b2cfcf067ddef4de6155f60a6c34b -b469c3db6fdc40e5f79f3562cf6f8bc43ff8032692ec0f95a03263e2cd7cbfe7 -5b2f4a7c4dc6b8445dbecf16b800f43a6835ba3226b5b112cb09a18bb0161210 -4ab91a24919291406a436f4cafde0ed998da1b99718d003d3afa3729203b5999 -a87df0b91c5adda6e678039344bb36495fb1b5e5965fcfc86f6f61763d48c0d3 -7c55d221b1fded8a9a359371f8c08c778e269334c2af994b75186f3b75b7f61f -6d6d48def0aa6856962f7b9c468c795abec3b622ed16241f4c506963acf2cb36 -29ab91296d06193741f36343fe0f315877a090df94858d93c527d44670760ba5 -68b61609a3d750e4153c0f17dcd5f870b3a38b7d2272ee60a24668afc2b54084 -63664a6fff7ebdf7d2bdf9b1636b17041bb12f49ee3cda336f84c77746fb5036 -61b18775cf02fbb4c635fd09886798b09085b8cdb795bab93438ad36f4e9c23b -b30e1fcff1bab17fe49566f755ff904cbc11da5e966a545c6c7d7259ba4c729a -391ae47953a99bc4d500d68420204e23a07f6c0e137bd1a7034d670e1e9d8804 -1bc039653a023a6edcae8f73c93ddcd8a2e85396f5debed0d0565be384f21c5f -1171e37ce2443cd8ea5b20da6bab9b62ce5e8f1f485a4b3fd7fb22ba4bdd28df -f76493059c56b7a5c65209ee98f2e81ab6e25cd0a0f81cb511004e9da7fcd65a -8e73b549ee33577db68adc05e0b24e820500cd50523470eb760844155d4ffcd1 -759d5f50b803888f3bb3a616f99aad9a18a745fc6c248684c2b0df40e38234fe -1d21017d2a7a1def67c9dd2884d2239e9e1790910a8486e5cd001d2aed32e05c -bf6fd016f4e70e6af610330f47048bfc8d0a490e60b9e27cc75098a74147b30f -267ca6983b5940b8ce47d4fdbfc3a7f89f78ff4c35ec0a50228aed5907e05dd7 -ea33ef10c079981b1ab1c361d78f58f78fcbb3d9d4a569e0c8e1f86067bd61a6 -cdcc34c490078ea150b792d466b7a6a1a4ed7c46f4ca2e46800f5498820464f2 -c88c8e6ea79bac3535fe2c12f9e121a07588426e60067e13e77999939ac6e36d -9b63c024d67d2dd1a1e7172a6441a051b2e1405877aea4ad0e78cabb4cff67cb -82535954d4ba25bbffaf67dfa0d2a889592d2ba5718168b3a620ed8fcc10720f -b25da0cabd8265af47ce144b68c6058350d643d8f0746c43ace3b7445efebca4 -8d48d6f46c9154a95a4f4b8962fe1392418ab22e84ffe824554c74679bfd6662 -09b79c6d147858aa4ea978389503c1b8f0dd5ce10af89739f19a42a932c3cc14 -25882a16c505ddd2547572b93581ae8f0eea2c7725f91b8b2bddfed70ce9b39c -398a0beb2d83471822dc81039695f6fda204907ea0078d854dc4b86318921169 -c744ac7d846af8980e123b6219f8663b9fdbaa3416e6cba8ae367755309372ee -84b812650858053cd0f7f2d4e62d8905b0cd349112adac19953517ac36219044 -3cfb831fbe6e045dc567c182337d4148036e6e715a366a7e2be5bf0da704808d -7bf418275826e99d696b0c296e7b5a15f5e63f9c90c5ac093822290c8d254e7e -828104afc3ef7c5a8d8fe631f191e266434f34d9e10619a7f4b7df6566c86463 -a86f6dfff94f01f8b4c7688e999f306a65628679ab9123af6dca39e88808dfe3 -e99107b918a8dbb02b1d5ed0f6bb82d115cb36889e5aa14c9cef78bf09d3b429 -c1e3cf2ff96d289a6279d186130ec5cfcdd5a7dea4d23124f012646dca173108 -2ad555c142a587d98fca7b8308cccf3856b0901dbb3ca53082b368cd2850613b -32da388cffd23ab28d932eeff2a7388295286539aaf03746f35eb28338ad23f9 -f4fb3c91c79ab2fef1e061cdf2aa1f2a991b39fd0afa1063cd54dae5d31d2f44 -516cd6be0ee051bbb0201cc747a04d5b171d4f13686e77b9ebf9ba2236886c4a -505461037b7a5f2ee8db790e6fdfd047033354f60786c1f2c00aa6847c8fa0f6 -3ab3215c78229d47364fc91ac88f98eec9e5d96ecaf41c0aedb88dc216964a52 -54bf9f88a7bc9f5ed16fd210252dd2f8e7f54ca4b4ef4a7356023556fb69a31e -72df664882f57b786417d6955b17783e9c206fd33064f6d9a9e23ca274189782 -1c18375d12d1ee22e74713f6911c3ab08b1d7f35f00f18f5e9b669ad15d4e1ad -0831fb8edaa74fc257fcc5ab9ade88ed85a19cc22d32b2a9e2ff3830e76caa2d -15f5c1fe3fc21bd1eb96d1d35e8966ac563d1ea40d6d3d2b79a9c602bafadceb -31cc10aa90012955cef8982620ae3d6d01ce14bc184f5dcdbebf94cfb5b10c42 -d174ae261dbed22fb969fcf1bb64f2bdfe0e43ef54eacce5fb5e537e872eb1bd -d7070d3bee6768186c4bc824cb828830b8696af783d3410a62fca2b996aaafab -4ee639122e65f121b941485cfb581c57df7e0c5b7e4c912b75eb6409352ff5c0 -33b1c7e4dca272245235cd8b23a5e9452652d212fad18eaa899935b90bebf320 -3c50b223eb1caaa160a4ce8469a1311c69ba2ae787edc9ee304f32afa013a0e9 -092d80c29dde16413909f3d00f9844e86dc234442748128e96b3ee0d243ac8a8 -00d872aba50e81604e5270aa9972e57b021dbb1eac08a064d250df6acf727c6a -098c99b2074af3b4bf14913fe867707fe0f9b058e05c38205d1603925f7fe1a2 -54eaa39ce49ff00bfb494cbfeec9b738750b53feaead8bce2bfa1e20cedb5e2f -d815755c40352198c1daa5d092c700d3745eaf183bc281b86e7762985bb5f730 -baa1ffa889dbb0e2f7aee08d5abc2180466eecef7c588a1c0f78453685526911 -165bcbf5cf3e9e -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndResource -/F124_0 /QYKIKI+NimbusMonL-Regu 1 1 -[ /.notdef/.notdef/fi/fl/.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/hyphen/period/slash - /zero/one/two/three/four/five/six/seven - /eight/nine/colon/semicolon/less/equal/greater/question - /at/A/B/C/D/E/F/G - /H/I/J/K/L/M/N/O - /P/Q/R/S/T/U/V/W - /X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore - /quoteleft/a/b/c/d/e/f/g - /h/i/j/k/l/m/n/o - /p/q/r/s/t/u/v/w - /x/y/z/braceleft/bar/braceright/asciitilde/.notdef - /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef - /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef - /.notdef/.notdef/.notdef/.notdef/.notdef/bullet/.notdef/.notdef - /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef - /.notdef/exclamdown/cent/sterling/fraction/yen/florin/section - /currency/copyright/quotedblleft/guillemotleft/guilsinglleft/guilsinglright/fi/fl - /.notdef/endash/dagger/daggerdbl/periodcentered/.notdef/paragraph/bullet - /quotesinglbase/quotedblbase/quotedblright/guillemotright/ellipsis/perthousand/.notdef/questiondown - /.notdef/grave/acute/circumflex/tilde/macron/breve/dotaccent - /dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut/ogonek/caron - /emdash/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef - /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef - /.notdef/AE/.notdef/ordfeminine/.notdef/.notdef/.notdef/.notdef - /Lslash/Oslash/OE/ordmasculine/.notdef/.notdef/.notdef/.notdef - /.notdef/ae/.notdef/.notdef/.notdef/dotlessi/.notdef/.notdef - /lslash/oslash/oe/germandbls/.notdef/.notdef/.notdef/.notdef] -pdfMakeFont -%%BeginResource: font BITXNG+CMMI10 -%!PS-AdobeFont-1.0: CMMI10 003.002 -%%Title: CMMI10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMMI10. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMMI10 known{/CMMI10 findfont dup/UniqueID known{dup -/UniqueID get 5087385 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /BITXNG+CMMI10 def -/FontBBox {-32 -250 1048 750 }readonly def -/UniqueID 5087385 def -/PaintType 0 def -/FontInfo 10 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMMI10.) readonly def -/FullName (CMMI10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -/ascent 750 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 45 /arrowhookright put -dup 58 /period put -readonly def -currentdict end -currentfile eexec -d9d66f633b846ab284bcf8b0411b772de5ce3c05ef98f858322dcea45e0874c5 -45d25fe192539d9cda4baa46d9c431465e6abf4e4271f89eded7f37be4b31fb4 -7934f62d1f46e8671f6290d6fff601d4937bf71c22d60fb800a15796421e3aa7 -72c500501d8b10c0093f6467c553250f7c27b2c3d893772614a846374a85bc4e -bec0b0a89c4c161c3956ece25274b962c854e535f418279fe26d8f83e38c5c89 -974e9a224b3cbef90a9277af10e0c7cac8dc11c41dc18b814a7682e5f0248674 -11453bc81c443407af56dca20efc9fa776eb9a127b62471340eb64c5abdf2996 -f8b24ef268e4f2eb5d212894c037686094668c31ec7af91d1170dc14429872a0 -a3e68a64db9e871f03b7c73e93f77356c3996948c2deade21d6b4a87854b79da -d4c3d1e0fc754b97495bcfc684282c4d923dfeace4ec7db525bd8d76668602ba -27b09611e4452b169c29ea7d6683a2c6246c9ddcf62885d457325b389868bc54 -3ea6dc3984ba80581133330d766998ae550e2fb5e7c707a559f67b7a34fea2f3 -bebe4226da71af8b6e8d128c7ae0b3dc7c9aa4a1faef312fc9b46399b18c437a -776de1f67caf78e15d4cc76d6fa57dad7abc6d35ede0d7118e8c6f3a201f9ea9 -eabf8a848d182eba8922addbe3c488f51eac02906400a84ea0abfaf48116cdc6 -6fbc00330a76a8818cfaeb7afdeb029a204e0a70b47a05aa50153b56d2bf6736 -c7a2c50b023ed92cfff13eba974f804a346d4130ccfd5233b6d6b92a14c87bbe -2ba216bae4123911e1856975e5cf4d94e44f400f687d2d13db288e0d821451c8 -83e9928f8cbc41e0f4b99f8b29d3b11bd4ed0cbca83d81082e39a9e79cebf433 -671b1af39c3d0e1f5bbe5f1fff62ff6f5f15f0421c56a4dffac682cb07b6f257 -221fed1902e4b69d9bc2e061f2e96f5a46734f91298494a425ef6432f2b9778c -4ebbadd3483ef5447df5f008db9d91c559950ebcedb4b1316a5aae8367a80e06 -bf3162beb99c4aaa617c60be688da7627f29c1775983ef635b26306a94f0b258 -003779f8670a1398681953b785a226057f7d1270fe2dd2ea66d65e2061fbd65f -0ac51b6c347a56e9f3e86e52f3e0bf1d5f8d6540afb32a027a7c96919557692e -b739cc298ec7999b4286538edf7333cf8f8f6ba02c5e8c62929af07acbb90861 -0bcb85345f4206e3ea130512dcfbc6cefa31ef2bd1da11d3010fec57b5b232ca -706f9c44fb9cab8903be783eca66d748b3fa5b1f5d5445f6c16a9a52c88a7e2f -2bfb0be4e416ea209a9810dd6c38e47a58dc9270b2f49f9b9d482156f7dc8164 -b621b6803b6434a2a354a50fd9353a2ce3fa761423634b8f2adcd63b2b7acf15 -07588caf127a0d6b2017a451d3df77c53e6171c66236e5318d49fab9ce4b1026 -853f65d0d5f7913d88ea66b9b63cf06a4bfc8ed3246bb86cf6de255ff46d245d -109939e32dc483a0e5176b614ccb7f1adcf99854cf50317bd081131a146ea089 -8ed59e46da7b6254bdccbc660686e2eda0ad7b894cd2eb2688c0c00aca589d39 -e3caa6e0faf7eeb5df3e3f8113dae4b454a0d8c86fee52779ad3e13a0a871e9b -65b9ef0a2ff20989bae81d1cc1181679fbedb80e7d84a08774e6da58a283ba22 -3780f2717484e066fa7dc012e6d19429b08638045352d358957917123c9c73b4 -326a954f5ebce183ba1025c00c8f559dba85e07b3ed48d2fa0acafa9436d6fdf -e530ce25ac7da170db1764e77b6816343e8a128a075e7744a6f0406551f4640e -c403ea61696459d15ee040bfb53f08700c69333b1cb28142c5b9411d65fbfb1e -c7f4f50c03d122ad4b63e9e65f0a0af43efcc9fc546fd13da42a1c13b8c9cbfa -79a480d923701306249955ce1c61a680b2809d3551325a333a189db71bc83c59 -47d17b31f8ff63564919b00336285f724d22f889748564808083ddaa4eeb8632 -5d636961e1f634f3ff3def1dcd7299bb7679dbaf685e2ac1484bd9b17c5cf4d8 -59897713b51a4deba3332c2ab5c48a76357d2eaaa539a617b09f223661bcb411 -0e6559e99a7d900336a9327d4b8330ee5f56b016cebb8c07dbcc2fa736c07ecb -8930f26b429288c6fe6cee3e7792de58ea3ce248598db0c604787612bd137d80 -e4462d249b229b62142128b57a6b44515262743bb3c70ee96aa4b8c49d6b0be4 -4e19f634add30634f999f4dfb3dcff6a412a9b6067d28751aab1b20928a6e73b -cb81b0510d551f84437062e8cd403bf8c343003965e926465b288b0aa2fc85f9 -90f9a63fce188d72008aed98bcba5ff4ae850711d2664f0857ded002e3a89fa8 -75f930ddf7918d6b2f92ae26af35f50cc9d2a8f9b5d5d80981b12ddf4c59565a -aa62ec34589e5bcc3075cc6a163e45d46bb280b22158c5c04c90beb6f8a1c791 -5597b0f69be3204d876cfa54481cc86ed2fe799bc46555c6c6fffc73854104dc -9c8a6f85331fce7c5d1f20af5d99e4e61b7ab981dd4eae26951a9447d5553140 -b5862e2f39023bc7d14901eacf467a9424a6be8055d82f4b02036cd766367871 -e0a01d09790ab2777db18248482fb32a25fadb62956b93affc59b1796f78d0b6 -6aaeee9778a3b253bd98035c79b5296e173fba9e56e8824ab6191ef9062b1fc8 -1b6b6185a05b167adccc6698b1801297d766492add5b66193d024d121633d329 -25bcf1a9ae109371aaaeb64f2805bf5c2d5a218c191e9eeb4ac30a48291c7251 -f690b51d5135f6a37f5418624c7d2f3ece356b12ec18f73d5177a24ffe371635 -fc88231b3a95d72ca2555f164c503f91b5c7ca174e43aee6534df6d569efd50d -da3e950e11c6cff788e50ce5f1332ad76a2357c39d44ea38e88b24f2d37cf29e -21b7468adfcacc8ab8fe1ae9da4c933b5f7f0a6451964a4924b6ba96c359c828 -d818166d5271e813f7a34a5b18927e66d61003392c96ab36b3e2175f31faa3d3 -7e77200bbbeba91c532c053f318f3f83080bf3d641d4c5df796c2882e34c01b9 -cf74bba01f03ef559012eeece809c019ab6d40d22a16fb9054143990db45b902 -a5574f672dda96d6c18c0fb048e970e6180e6148061e22085c7aa4fdc2102fd2 -d31e84456a56057b9d3189f331cc8354b195564cfdd23579574b7c7a80d2f3e3 -97f07cdab67407a46a4264e985563dae7ad933dac054d64a7ebce65bb2beb5fe -d53360fd76a0fe706e7283550c4d5657aa9bf62ee713592d74e89998e9b0adb2 -327a9dd5f19184a500870a3c53367431b56cc4dd60bb629ae68a009fba0049eb -16d11d5f299d5a99f3d45f6510450e53740da5556335eccd43e1408b826fc535 -10c7784c44cdbf41988ab67ffdc54ea61dd05208204c8bed9c66c678e6324428 -9682cc6ea0b2dad69cdb69dc8daacfd1a98c730dc3d9bc8d83e2fa2e72de08b0 -031ef3455ba92d03acfdb7ecf50ee883a8817abd96e58f72ae050feae0d224a5 -42aa0b4c022f8a90e73ab84216f520d6ded72680471b9ed2ce317536305d7360 -810a92f4957c9aba9328b116349fdfa728e9f042b2fd2d116bbcbbb99ec6966b -a5e1f4fbbb4b1eae6d8bdd40de5fa44127e6d7c05abad3c012082c245265096d -d4445b03ad8dc08d707ecbf0aef0890b0658dc9341fd386d417ad9f5e79c0464 -be4e3b22e4997e1806d192a8be70dfbcf69715b8194347a60e80934ed09fb08e -c4df7c3b204b07ee3610c041dff7d4c76060e4be6a3a2f0b0217005ab38f80ff -fe55a6252afa361b5cd8f3b642e6e193da913ccaeae5508c2470036aad80c0c6 -e977c374852b69a8de69aea44aaad49eb7fcd420bd55a5c5cbf073e859ba9d6a -857da20a5cc2744843ea07efcaf91e992f0a44e1e520bbca097b6965c4e30c99 -03ac3ca1af1bbeeacffd7cc22e7b9763b0876cf8308ea38828a716da7f430898 -2beecd1cb81cd95ab8fe70242026f11061a70fb42445aa9246488d6d0029df17 -dea43305ac74df52e5699b6c243025786b21fd43993a8039e9e75fce2dbb7d6b -7e4cd140e7edacc20dcb473dc45eab68d8ea296baf9bb969093862d391f84073 -5e17f87847ff2e9186080feb184ff7869a5a8bee6aafe3461454dcbcd00d2c24 -61ef831a52dbb0fa736694b4a3a4d85c6d80636b316fb12be67f0887cce6df04 -80c145ea8762ef8b2c43ae71f3c32686fd5813eb49a39bc6d4980472bd5cdbb6 -c282c9ffe2fb52656f607692e1ba726417703feccfd4aeaf9c66d543ce1506b1 -a9d6b95705f67086d4f36b06a283cec841a01f1028d95d4de419d7110f091014 -f6dc905e81add1d54f95b16cddcfd0793d1cf4a85e7a35458c81197a24fe82cb -63edde30cb6b538a708fbd41f00268a772730b85bd8860054acd93fe6b8bbcb9 -cc474568d426e83f15838520a313e0ae1b60959de340398b21986f5c404c9361 -54975d52740bec0f7abfaf271a2ac1f7553b862d45d11ae585936fbb5462e2dd -bf35e4afb7bffcbd3294be3eabec4b787133c3a5e0c95f74a71dad9be990d07c -d157d7258830a3cc3de6459140afba942eef325ee072b3a53a9f281d483eac65 -e8da50ccddb3d43baff7d8c7d7a1847d6d579ce92df1b54de141ce7a73607362 -7d909e8cd9fdc373b840145f9373bc2f02979ee34688bf840f4f9245c2ab976c -ee8bde685c47606201f6611e38a49ab72428def2c85e553313af719ab4d4f5ef -e3f3430522abff76bf8bb8f56afe11008d3f989ffadccb411dd3b7e6352ea873 -3abe5dc71b3b4832ae85bdb23f6cbfb4b2631412e4fe0050a5f7f4216508a3db -ea2d74318ed82f1a2fc791623c869593dcfd6bfb2fe57bdf06e9d1946f9bcea0 -13848fcdc603e3eca5384725118970cebcc9ebc6b74df13ad395fa6efdc22463 -5380eb1b3521aa929eba30958ae2da40852196b67ee44409d323383b0c7fa1f2 -b4fff373041d9f5eeab03d6743f0a291b481dd3ff9e8ebd77a073b8d5f5d93bc -727e6566204893af892f74fc0bc3f3e83643a93747678eb998f9c91b3a0ff942 -3d3924f507f1c7eb18249b2ab73691f5fac868720ff52183091f65ac3be8cb0e -80d257c52ea8647ef747fe304598e1ce0900a4de4031e4b6a58d7869b08a56aa -710c91ccb8afab94ad10d670e767a44e0177795ddfd65c9cdc7332716deefe3f -9e2ed8a54bb6faf63b7bf5f554b934821086c09fc28fa74ea2efd410e006be6b -ebe0c464e078c14968453dc783a788a55d925d72205492c07d0dbaee4982fbed -9b32dd19ae230da5870499feeac55b09b0970ad5926375fd79b95552816be003 -90515262b5ca891babcd81bf86847cbc5850d4a056bdc528e97aded1ea6d7b76 -bd8ec34e742a9fccf19a6310004499b1cc1a920b5f3b746bd4de2d9b9dea341d -25a7a7b60546a8f9ef99190cf8ddedb21a0103414f9f28ae8673c966b12528dc -fb70ce44db4822322605982d708a0b4bef7eb08962e3f433213d7545f351e994 -970828eb443c3bb36ab0c4cab7fadfd949e5f93273141da2b6dffb41b4678647 -93cd4e53c78a63c632d4fcbad772122e86dde337d5438e5e4342a0e18be8b014 -3ddd7290d16096f2149c6c71ad28325dddbf994e651b9d4be89430b31dec3fa7 -d2703196f7f10b5e8d98f20e14151160507e53ff1f3d4bddff3f45f9e64b1b9b -9b26b32bf389a3725c243209245bd78c2f78d67033be00ebe25955a1ac718305 -b52a0260a07220a9f7410bad935538c6c7c56f902a70730c1cf90d45a5f66c6b -a762406e512bf3cc3b52918c6e9e92893279cf86af1684d9b67d1ebbe84be9d8 -4b56548323ab381ae18c9e9570453abe77ca9d9ed1164563120b939fc3acc33d -49f5e989a74ac760f0c99458295278efde92e99003c4780935d12eda68a82308 -ba444819ea9fd930c80263b57ec1b9164aa50ce386b8ef81a53a710416c6c868 -794bddb4fe463b3c59ff9fd085fc7ec37cf2abb7df09d41113f4542f72bffda6 -1fafef41c462eabcc7a3b4fbe46cac256c7af4309a617e73e7934450434e344b -5cb6ddf2e63f4523f1526ed2f79522eae16b23dd9ff4924053a0fa7c4a0b29ff -f4485c041b06147d2c94d276553f443c2980cb96ef5da49bfda4ee95bbf092ac -e2dee947d0c711c1930500b79a5424e8494df6e1798b009a3816342f4d1d7cb0 -b7bf239f3d60361ac605020591740d13ce386bca1e69a2e8063c62f9959c9fb9 -010ae39f18882b1e3b3d0d9b0447db7f7f7a3810375372702686b224896bf5e4 -cd40e308b5a6988b614d8088c296171423cab2657cfb98f462afe21e990b0c74 -4c8738d1b13097ca887ccfd3eabe4f1e29df71d0e51046957409964f9f02a33d -78b2a5bac5058bda0dd8a65fe6c53dff9310fd2b97afd24f39e586417dcc18a1 -5c0be1795e0f2c3d785f8cc1ab5505bb8fc0dfa1364f08876a42dae3383f853f -84e7e54405bb8d00911c5b8ef4794494d9bf076d57a65f2392628b61ff967c77 -29114960e00fadc36961617c61c673bd2d2e4a9d54702233c8414026e67940bd -ed16e2d3822f06068502c0966f2ff68f74d11a0b780b95f3f52bcc162a37b6ef -48cf5ff8513cf4183176734f80b9835401b3db6bd53597645873fa96488eb183 -646b577037e5717952d23cc71ee1780b3df42d9c768804fc47cf147db059b9ee -7a6399d4f4afcf2d296902f16d56d6df28ac4c9a96e357678ba901fe72ce3d2f -b10fbf263146547d455df1bc33a1dfa753251c264db8798da35943a4940962f9 -e3b8a68d2b094177154ba30af7bd201cad919c09a34536e41d6c5772873c0634 -fef84dca5f1a5d5488997e279876af1dfb3f51790a6ae085d09ea4e1947fc10b -987c2db0634c100484f4b45404119fee7a7ec81111029cff1b4cfa1a8637d4a5 -ad472b5ac0cb9f428cb1df8abfea3db8082a26cc815437ab387e7f87902398d2 -e0c6bf6c95c2381f15b61fb2c5bdb8684afbb7a6c1a01ca2286a8dff62e52a16 -3d7c748c1b2c63d2933012c5306cb7efb0b4cd733c56ba7700acc731d294f7a1 -1f2a1f8f461983f2972da8c3dbb3f9117f7a6f3583c8a5dcabb364ac0310457f -93fbca26c31482d806c6a7a4f87f4cb92e3f30b4dd2dd5e3da5360430c008237 -7165549aa416a73c62a50b707074b2b7ded2b07454574f60861cd2f0342e4f78 -24789278e711f18ef858b819a0accb67384b47145fee30b32181d66ff47aa657 -83f0cccb693ac70657bc2bf204974bb3bcbffcd6540477e7a973718754acbe68 -823672daeaf24c93263a57598ac4bc999120e367aaa4b54c643e8c8987024b07 -9b0d40fb33d55cee534e3a38a1a316276704e9a6df08553fde29e4d4526225d1 -fbda6f8cb78098e83e8a360de3c4c77e2998094f920aaba9c7587735cd2f22cb -e17c6b99a8286519242f18de4aabbe470bb8e0931ec7f5c19e1c304df56f2368 -70d154e925c4f2e5012d52a0283ea52acefa09d2a8ecc832358868bce8efba7c -492e3575c1605150a3f7d6822960f1a9975151c7b6e928fc07f73493351895b3 -5ea783de8482144ddfaf6f881d0835472a603fcd52464da80de0c380fed5cc67 -e38eea70c066dadf026e03fe00be35c6310f64aca4b991ed4bc4eb125b4c0a79 -b87109b442c0b624c340271988ca36e92157ebe00ace90fa4515b6c649b9ef36 -f82cfb4954c124878dfece799bd987ee930148967069b9e6ff5663689e5d186c -26dbdfa146c3dd3ab9c2104fa4e92423c88a0821443aa8008b11008525290207 -146118e39b4d7893fdc8c7225f4c97fa3f1cc264122afa3a87d630ef325d3778 -28ecba34700bae5038bc2a1c2e0476351d9e73cb623cf58eb35d4c518630ef2a -f8b64bed95d72bb7403e652e2dda6faad38fe8fe4319ae190f0496a1c6806cca -10efc6d15c7e19522b152476c36f9644a599da6786df08fe7981f9eaa0e8611f -880ce7444e6e72e82aefccf6ae7aa0ae68f883d9f85b8126a6c52687c0ffe6d4 -fc712eae8bcaf81dbfddd0a58717c4cea5ebc76c94567833f5549daa0cf6254c -627a1a0662537ad3b43c6f3a90d553bd6e7e841769777c502e4dd5fb8b15431a -61ad9b26cd69b5d7d2b28776074e7b7beb25da2d5b8ce39e2d982b9fb9122e6f -401cdba8684365458bd82680150de4ea9c386dc6666e613f4de18bcf4540ce5e -663a6f3de86e8ff97339085dd62fc33bdaed076740de76c1830a14618ced99f8 -07519a5526f787b5f96e8086ff187ddc36ab3b385520dd23ceb0b0a779c97537 -496cdcbd8b82bc87bd2473acc490c6a86a6e6f85496a2dabbe2c92f4394c23bb -714c0cdce7c02a397f2a66862ac165931eadc3dd374873357e315c8cd99f00b9 -20d3c62c04401d15413d4c640c2aa4caf5fa5db6eecf4ecf43478b2ed317e06f -cdbab783a6921463b346d8bf72e98a4d7fbe011cbe565cb54a7157af3fa4d5c9 -d6a36c7600f5a884595278efddf5085f74c3d7d8e9beb3be3f7f6131e8233b08 -4b16dfda9cc778dc10adda42786156d707750d12c920cc297e8f58578d5084a8 -6d68a5180a -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndResource -/F230_0 /BITXNG+CMMI10 1 1 -[ /.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/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef - /.notdef/.notdef/.notdef/.notdef/.notdef/arrowhookright/.notdef/.notdef - /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef - /.notdef/.notdef/period/.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/.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/.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/.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/.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 - /.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] -pdfMakeFont -%%BeginResource: font ZWXELK+NimbusMonL-Bold -%!PS-AdobeFont-1.0: NimbusMonL-Bold 1.05 -%%CreationDate: Wed Dec 22 1999 -% Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development -% (URW)++,Copyright 1999 by (URW)++ Design & Development -% See the file COPYING (GNU General Public License) for license conditions. -% As a special exception, permission is granted to include this font -% program in a Postscript or PDF file that consists of a document that -% contains text to be displayed or printed using this font, regardless -% of the conditions or license applying to the document itself. -12 dict begin -/FontInfo 10 dict dup begin -/version (1.05) readonly def -/Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file COPYING (GNU General Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def -/Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def -/FullName (Nimbus Mono L Bold) readonly def -/FamilyName (Nimbus Mono L) readonly def -/Weight (Bold) readonly def -/ItalicAngle 0.0 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/FontName /ZWXELK+NimbusMonL-Bold def -/PaintType 0 def -/WMode 0 def -/FontBBox {-43 -278 681 871} readonly def -/FontType 1 def -/FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def -/Encoding StandardEncoding def -currentdict end -currentfile eexec -d9d66f633b846a989b9974b0179fc6cc445bc2c03103c68570a7b354a4a280ae -6fbf7f9888e039ab60fcaf852eb4ce3afeb979d5ea70fde44a2ae5c8c0166c27 -bf9665eea11c7d2329c1a211dd26bb372be5822f5ea70d99eb578c7befd44cdf -045a363056e5e1cc51525ea6fc061dcebb337208eff729802376a2801424f670 -0e7e6397b28f15bc10b40012b0a3eaeb2693e8f7f627c4c9c7c6c5bff105c1e4 -1b2b9e8f09253b61177e95ea219474796072f4b363fe05fa7637750ee32abe88 -6f7c1368d9ce6c8e0c490dfce9b86d093c646a926013616599be4a08eeab1ef9 -4d9066aa43407ce8754ca1bb33035af23db30794e2d3368c4fa14ccccbdeaf01 -2caf3cd75f4a9430011661c1bf054a530ddc57f032ecffb56ef20be97a76074d -a40f2ab5f5ca4b83c12482c76211aebb54d996a3771a33008145b436f16e5100 -3c766da4e9fc3ac88ac60879f47b0d72099a606f615cd397a05aed4a92a6e86b -6a9685a3fce4cb303371639026c74f19dd67a353e70a7f40b4d317f830c0342a -9f2fec7a3304e4c4009e2bc3f0dcee97c8381bc7682c6d3f80d93a69ce5d74bb -b3ae9b016bca6cf044056c8ab210f7f1ab28c6b4c457d0184278951c4e2bd743 -41f9c9c8fafb9f11da77c2ce9f820e65ba3b7184d08598f9ecc956d38ffa3d71 -0ef485905434474fbb7cf4b43b193a537efe076c26a9251d45d06ff575a5b9a6 -20ec66effcfa67a9e089a1a78ab7331d3841898dd7476d70a2a97c8f6c283fae -4010a9eb770604ba65878fa2105d063a44c56e21bd4847b542af04cec1cfc7d5 -ec2b1ee2103bd35e162f2dc6d1f224925a0d7eb5b883a6eff782245605bb8fcc -1e0453694af4725205d9225ffa329bbdd4392fcccb8dac6a0e8be2059177757e -2fc359426f4e1ed2e19ca9b5311c2e77ef9f97618b0c337a906ff39926d2b0b7 -883abba6508102d9f4fb0387d88d82973b53718c98d58c9b83d2a62386b74c16 -9cb5c33dda965420dd78aa19ff23f88bd2355f93ebaca543d8b18ea36b4ee8fc -b5924e01f73a9501819be812383107d361fe8c805163a6957de6aa4af7fa6963 -e77ac8e5d39349be33448d2f6258da61aaf47917c66c7c5ae99a990b727c6c70 -20f14175225efea39202b489cb6623c51f41fe9a5f6d3be27796e51be6945774 -6cdc1ec49ed6114400f4724ecff05fe0bed476dd3d5650ce735475ff6f232456 -5918f9ed222319d2a544aa4a74be19f45cd466fcf191e7ea641ea38f9d3133f8 -872bafe19691dcdf0bce48ed6fd0e0ee9a81faa6dff8b239874ffe2072a73107 -0ffb5095f90a653a1690655a9b4287545138b8049e04eeb928256a05a73edf71 -4e0c8692f37cf1d7e3defd43b2b428f853f35bd79f3811fa7bf788d1c1cf4a61 -65b8eebc60521fac324403d3bca11817c9d15012e0be84e194435fd27361e68d -79b52b6c9a96c1a40596f048a31c49088b883ee21d9bd24b48e4d1e03e7378c0 -5b62dc00623f9c5dbe5087eb9122de23199ac72b491ff847674d6141ca7facd9 -6bdbfc373e1e1f87881fd7bc3a7d64292c55a687f3837424612103bd6be8fe2c -0b3f529ff61d27d3fe8cbb25636f48e6a41f205d04a802e50fd974cfa67f94ec -19c3ec32aa714e650af284926ec5f2e29bb880efc696d77d210536d7d1148ac9 -ea9263bc02d2ba97369f2ab531944e132484c3f2c2638b01fc97731f1b39a492 -4822b5265773a5e86a17a41e7346b7c4c48029f58450663e0d09836d75ca7f8a -d9a78eeea4f41976945501f32bb383455467d217777e642f32777bbd74cff9c7 -97041d0a982ab1c0d4999077201cc9ab52a92cf959cafd2e6790ab45f6927c7e -96f24481280a0242e823e22a4e32669bc829ef1b7ec3fa34e9cdd920b0f7e2c3 -8f138ee0922fbdd3d7bec614805aa562591c3969760019c54ede008db2c2f8af -bc66034e5810bc32c823b819eb39a15c0f25be8f2dfe5a01b90848a5adcc95de -49241dc602f4b71f8901fbb38725ee7ff097f769c017f16598b835a0b93cc6aa -c437310f1a7d586cc05048684af27ef3c09f72ac62adb2f4fe7f99d1340d27c4 -479c144afdc37e4131d8fc6479afbb1004ba15e3e5d0ee470b9811a0f51294c6 -dee3fa7431267cb6ec7a96c590ebc1cc7333a103eddc21219f392ddbea601d6d -dce7a8645953235a0ab6d46578e8e438ffc41be6b509b844b73e586131f694bf -f0ed77a7847f7c747410cbba2473f5869eda83ec8118d800f3b2a7b5ea03e16b -204962bc68ac47bcc5d29f88aee951c2452d22aa967d32c3f37a91ba88baad3d -bc74cf2c7fbf0c76faa4eb347390dd08303b439cb1f1a3363d265fec5734c81c -bf1af913f88820cc29f4a3b54c712e006e1d6bd993668999c3ad54676c71fda5 -e29df4c794a4fa812b13ad32b28bc57e05c7908b8334bd4fe842d57b04423fd0 -db3a43eb047f86eb925dfe31a012031f36d5f6099187724b0e2203ca1da764db -623d1e0a59b9fe47d7d4d67c241d297bc5a6641770f5e9f75c572675ae6e69e7 -ae37627c1e4d3ba60b95605da55c67c5f6ef7ae2049ea3d1246a0c03309ebd39 -951a398883fc919a711e8e891d914459d4296bc3a584610663af1c2ff053c137 -9f447f918ca55c5dd4a52a060d1725c26e6940371eb4fd9d254749d04ebc0f11 -06f62a30d3f714a33e4f65f4dd0b20daaa10aa02b9a6e6eeec07fd93d19f9c0a -6cd6bde1d7ccd1a973bf297fe6a8821e03a381c468b9adfde87a4b7f484a55ff -a5b83052ac23f4b3644234d935485f912cba1c84227a609b32509552ad1d7ce4 -6f564f7f9da1e131d9921befbf53cad1adfee699702cb6bc949688b30f0b4f3f -d3afc9caa04a796e5afe2aa8f8e14a7959731a74dc4b215d7ec095ebe86a3863 -ef6d7975c3d2edc2e7c2f5d2c8cfc5f6fda37368a54dc07a7026ebe9e2d290b1 -eedfe0322838aad2f5be5c299a658f47d0487584b1f9e7def39aaddd212138e0 -8a8d2479be76477e5193944353796d86aa5e2ebce0a453bae8cd9bc976a14910 -93b30d44f25a29808227330b98bb42bad91b4964f6832f2946b0ff1701853c49 -dc522636d5b7fb6ef764097a17da725c3af793585d24c91627f49e83271b7498 -cbd67abde015c94f5f24579852564ef01dc4ad98f15d522bd15fb9043b241350 -2b1f128d874c1d119798ebb0e11be341f78db622204aef7778aa81055bf4b7e8 -c455a6398d7d5dac94a5007b4f76265bc8875392b5354bd38ddc111dbb8b5b92 -15beaf72f041f17d55b49b81f3d1279bb7a5ccb1a9daaf125e79d5ad7dab0595 -9e694040bce7da09f795dd3cd508b405c6bd07cc7ee9bfe298156ff2620bc3cb -cc7b27d9618e04a2ee6e3744d7a344f6554e0baa2290b2082f996026adc420c6 -76ad5978868e062323522240a388179de4d224f19182ba7a35c3aa952844df49 -f6c532d429e5c86f89d1e697fce1b50861cca95504dd63423bf603b14459b7c6 -91bf64bed93e5ca158ed057c9bf9160f61584608ee366e3be548bf2dc46c219e -9e0acdbaaca1a5b02770bbf21dede6a80f3af65ae92a9089683dce3ec5e6ec68 -9de2dc208f7304afddf88f35e1f428dbe74e7042766346ec02e1eda87b8c246f -89a0eb22d1c6fdb17142af0c8c0b565ab6db819d2ae2bb3bad7c7778c53b2686 -72191116278357d8659bcc81753c2906eac08fc3fb966aa5ded522da2a5edf40 -9a3eeb5735617e77a7a77009cd38c2b62bcb89ab73052cce4526f4f02bbec777 -e6ca65c90ff5931dadf03da48afb8561fc2e71008fb1d1d4343512ada1b78e71 -0a10079f211faa5227eb0b30588e9e03fad6d901dca2b6bac956eb8cd2ccfad8 -80e8cb37e31fa6a8206f6a9a2a9e1cfff1205345019a0feaecde57fb0fa418c6 -f4cb83025e7180e50394f52064d8ea0383b80482e48ac91c24d10c7ddabe98b2 -13eaacad917275e916fc0803796efc1f9597f8952547d27dee1fad9ac1fa6d10 -27127514e0f2dcdf9ca30393cefc7cda027c85e53d10ce53796529fb13b079c2 -0c7402109235a0c25965b3b7d741e90e500ec2476c5dd11dfae57d6f57b218c4 -b9cce956161aff0a55a52eb58a59d7a62d90b110f9a0dd26b8c902122271a38b -7923957a15d11cf1427ce56323c7e4428d2ee1ec6b1c465be35668b0a7ac8eb8 -af1f080a993c3c74871e4b7bdb2602d07587aed96ddb05374c2aadaa24486f9a -831ba1179b2ea3602d071411f1756b58168f9ffb572d787b2ffe01bc07c04d48 -f893271ee576454a86a0c216b224e0de81d66ace456d352a5b2537eb96be26e0 -342e4165d30208448c9314ec962ac31ee36f887d0cf61a575444b31180850172 -10ce125407e77e5c63c947fa320845efd26c85ae8813a99e518d679137ae1dfa -9e9f19c49b461da073dc1be4a9d32f6ad62d05afdcdce4e33091132d471edcae -38607b7f5a17e7340b4e1a110bf7ed2bbbb9ad9b8ab909430f29f87b1db0a04f -a4a80796d144bc1875a846990df6fb3f14a1457be695a3cf1a5c16878d44be38 -107e327ec4096cd66caa90efb30bf9837ad04d995c4f9165b1ef14d394b71ff1 -281b0d67d4d3cd375c79603efa6e0830183be17f77e7d5423dbe0776fa1387d7 -df0dccfbda67f6ada4d87dc8c6325f0460690be677aa6db7e0250b5196b420d0 -cc8d66fec329d81a7584a5d001c2c3e42350eb22313f036b5ae64868fc6aeed9 -af95ec8f2aeefe4a95e69cc77f321fb7e7aeaa45b2f56d92d0956bf321ad859b -d2e2bbe984b17fe9303f13428a68d6a1959288ffb63d800c11ffb6226920324f -6517eb5373f2b8f058be35adbc7ff15a2b0a81683aea4ff11071451a49efd1cc -f15664182fc26672cf89416da86a3b8cfb45510e1ebbe11060963434bcb7581c -4816bbd63c6d79dbdca7dcf26a4217bff8060ad7955402af67fe4743997a028c -c33d49847b57712e0e23a1c5b72da33198426130a132be52890df4423fe21d4d -2625e646ce72588478bf941f1f74e875812f7d7ac9c54d0ddcd12178abf50bcf -f5131713cf9c42d0faf6cde696534896406a8a5234a8ac19bfd531ca934c35e1 -576099082701fce199811dd294cc46ca147d5a187c3737d3d128ee8d437a2afb -114183da45b49ddc768c31e35c395c3bf67a79f8b1ac292f38ab2ef721453256 -523e9dc08e80bedabece9bc9af135276c819140d7a0e966156dea6e2f7aae463 -c634c4de83feff86407b556651a455077d64b52c5ff4b80250d312dbdf83dc0e -b9ebd541aa9fbfddef1f775be0c411788b054aad44c85d8723ca7d2a6b00cca2 -4ac55e90ec48e4acc15be17b9544bb71ad967c4b8437470e4d020fc6e8677251 -92e2307b51148b2cf46fc1b7f2b149ebc1ebb02c33477b4c56e56a9f06566377 -d2de31c00d90ff5ddb509f8ed457e915c6fee8103da73b5d782bffad7f7c029e -12e1930e95fd7b7bb37c48b7cc48d99dc9aa79388c90bf6c7c0b83c7f7fc0935 -8fd5f673dcc906c7e0fa7711abe8258828289ef48a40723e39b7ec79f2d3822c -6f45a6ae0745413ce860467d7cc0aef52c680b8cf1767915d3550d9813b5bde7 -1c21b0f7b7119bb0e1eae6a7874ff0588adf14626d101b4e117c63f2e7a60627 -dc40cb9ab16032434469f390804b9039e21f1afc9380f26571e3b2c64a86c851 -74fc32a61b787769985079d60cf71131977accec6954da9032b1333396fd5450 -00e364e7e6a79bdbc9f1e842e222ca480f1f22089a38079692312519392296ef -08f00707ec53e1cf114795631e3b14687b9e351f1b7bd44d6f7d41ac91e8404d -8ae952c3c78e4a6bc9ad64ac1baeb952053c409cfad43a877a7c420006ce3e9e -0278a33cebd6d9d9737432c982165ed82c45d26f55c133162a41be27005cd6fd -e60cc41bc098314a5a1619dedc6bd9acc637f398219f9a3c543f8421ad4c4e58 -9265d23edb6cb45f2273a908ca416ad8c32c2992d9efa95d86e631ac8fad778f -ef9936c2dff4053cfb253c24c65bd20fd534d6509c0c141a358d4ad95bd9b5af -8abb5cacb94788cbf6c43bb54d52751d05a1a2e6848c33ab9b769ca9bccd8e3b -ee742c0d93ecba4c5c31c1d32a567d4213522f2a5687b014351cc01a42c14208 -69ef5852aa703ba076abcd4c6653fe6c4100bfbe047e34d4d6e9c62a6e5532e3 -f9ac9e7cac24e076546134c226f38ad0f51f8f2dd8501a001b5c0da65d9286eb -3560b947ee38fa27a502e87f8c99ffcd54b1d128096360be6c5b6f3e536c57e9 -1acffa0392e87026f5acadd1d81295d54155ac6154e247d95bad5d9ace11215a -e0ca996979f6dd8e94e7567ea17b8827ea4d5d5c9a8484ca568332bac134f993 -91505c7fbd8ba336f9c37d6dedd17261483c232995658b078fe8f1a312cf74ca -de87453964bc73a936a0ea09f74e9b0822b8336cc888f0f1f399061c342c8b18 -1d93b17a0afe2a2a69acf2f91ecbc8441db2aa35091968a0408b2abbfa35e4cc -77208f81b76a199312d8b3c3426e49e08f8359e6ceb694550f4b8fb113f2b977 -937eb20585083e72e0abd60e60ca4ac0f216b65b7a9bcbe1005c5b8bbddb702d -ca9da36f1fd416315266905f3ca5ed221be1ec496c5b16070bbe38ea094ae5ef -be93eb0eacb95603d7c36ba04f606a11ad22580b1ee5498ffae48f218108b774 -d71bde64b7de26f696d95abd3c13853aa368cd2582f2b03be9b7ac59e9bf0207 -df0ad55054c594811c5e89277d3804d058e1fa5419b15d11605066742d284108 -7411f111e7375c6710060d26e0b60f6aa8387f348cf2bcc5762c16ef320e24c1 -755f88376f5f2ec00b4121861518c97145a7105bd0d571454c177da407fbfbc3 -4a93ee4852b09cb436f682f9f84da4d61ecf72f8f801a548a9304f19163d6bb8 -12f5de6e1f2b4ccc494015627416d54877ee71221b95fe357bf67271242a8f17 -a4eb4be3b7a649c234524b2554a8fd24210b7acefdecb2198265167b8bb28593 -07ed7a654e9a6e2119e6dd14fb33faa084c71e930b8035952b87fe8b4a297dc0 -e4a89d17214cf1063caac03d4bdd5b4fd62bfa6897811c3494ec3018c558282c -2efa94538edde156727152eea21c6e3f88f68a0176aaee333b79e6b37344bfe2 -77292544c72d4023a3728c2e39d2841c2450465852d02503fe0a871700b470c1 -a73d8c1db644db39e9c1ce3ccbf2149625e915599ecc3091e15e0a74768ed5b1 -8271fc242e10bd83e73b4636cf874ca6e6d756e707e671d99fc43d61ce6bf80c -3a3be178d9f5d3cb32ca669cf99b70b10dad7d270d0cd85a9865d60df07fdd94 -cd -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndResource -/F440_0 /ZWXELK+NimbusMonL-Bold 1 1 -[ /.notdef/.notdef/fi/fl/.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/hyphen/period/slash - /zero/one/two/three/four/five/six/seven - /eight/nine/colon/semicolon/less/equal/greater/question - /at/A/B/C/D/E/F/G - /H/I/J/K/L/M/N/O - /P/Q/R/S/T/U/V/W - /X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore - /quoteleft/a/b/c/d/e/f/g - /h/i/j/k/l/m/n/o - /p/q/r/s/t/u/v/w - /x/y/z/braceleft/bar/braceright/asciitilde/.notdef - /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef - /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef - /.notdef/.notdef/.notdef/.notdef/.notdef/bullet/.notdef/.notdef - /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef - /.notdef/exclamdown/cent/sterling/fraction/yen/florin/section - /currency/copyright/quotedblleft/guillemotleft/guilsinglleft/guilsinglright/fi/fl - /.notdef/endash/dagger/daggerdbl/periodcentered/.notdef/paragraph/bullet - /quotesinglbase/quotedblbase/quotedblright/guillemotright/ellipsis/perthousand/.notdef/questiondown - /.notdef/grave/acute/circumflex/tilde/macron/breve/dotaccent - /dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut/ogonek/caron - /emdash/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef - /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef - /.notdef/AE/.notdef/ordfeminine/.notdef/.notdef/.notdef/.notdef - /Lslash/Oslash/OE/ordmasculine/.notdef/.notdef/.notdef/.notdef - /.notdef/ae/.notdef/.notdef/.notdef/dotlessi/.notdef/.notdef - /lslash/oslash/oe/germandbls/.notdef/.notdef/.notdef/.notdef] -pdfMakeFont -%%BeginResource: font FRBTTO+CMSY10 -%!PS-AdobeFont-1.0: CMSY10 003.002 -%%Title: CMSY10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMSY10. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup -/UniqueID get 5096651 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /FRBTTO+CMSY10 def -/FontBBox {-29 -960 1116 775 }readonly def -/UniqueID 5096651 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSY10.) readonly def -/FullName (CMSY10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 32 /arrowleft put -readonly def -currentdict end -currentfile eexec -d9d66f633b846ab284bcf8b0411b772de5cd06dfe1be899059c588357426d7a0 -7b684c079a47d271426064ad18cb9750d8a986d1d67c1b2aeef8ce785cc19c81 -de96489f740045c5e342f02da1c9f9f3c167651e646f1a67cf379789e311ef91 -511d0f605b045b279357d6fc8537c233e7aee6a4fdbe73e75a39eb206d20a6f6 -1021961b748d419ebeeb028b592124e174ca595c108e12725b9875544955cffd -028b698ef742bc8c19f979e35b8e99caddddc89cc6c59733f2a24bc3af36ad86 -1319147a4a219ecb92c71915919c4ab77300264235f643a995902219a56d8626 -de036037defbd3a2c6bb91c73375b5674e43810b4f7eccb675b36f35d63d9ec2 -def21c5fe49b54f92f0d18b89289682cb097244225af6400f6ca98efaf336c9f -c304161e2006b3bedbff4dd36fa7a8f7594c02dab68c077e83335ee6d018f860 -8d9a9131325d953d6c38c7e0a34236506c1e70cb6657dafc3c9520131a251350 -49034e216ae175cb232c2ef5a3c569ab581f936ef4e8b8c8bccac287f06f24ee -1d15d2819058bd9aebc4ea91b74935f6d411562a453674b14bd76fbf5f298f9e -8fd37f529f9e0450bbbe473b5a4039d8d0228f56330fa15411d7544ce700984e -09593a854180d3100e136beea91daedaac36cca03d82b83d953880307edbd0f0 -014451ec8f10b1e30b51c2f9055e906272f02f32085e4b9fbe5a6860a74e274a -74349069b6eb90fce84259d281f037d6de9f42fe557f5f13a87e5c9f668dfb8e -f5e7f4b5ef9f5841b3885a6c8994bfd27fe35fa3cc1dbd5ac68e1c98c0d0ecc3 -bd2795e77848b5faf604f01362ca473ac72284a56cabb68f35ba43ddc6158955 -5bc6614cbcf4b80872c2cc66b6f4f90c315bf73b34e481705ee8b54eef70fbaa -71424420120f27d8853933e3ad4d8026397b040c88567f440df538120d61d0b5 -8232d66e2e006866b60ae46c3f4bda16a2eb5b248bb88a11b3fa4770f0f6c31c -dd13bab11c2f4ac77a63f703a5824638fb765033dce02f584f36c879416fbfb1 -ee7eebe75d57711b44824db906885934dfa7f386b811a2598fd5cca2585045f0 -4cfd32e35f32b90badb9a96f48957b0a311778d21914c9ea27bfbc75197cbb6f -0df8f6fa574e1f1d529a4594f2a6ed99b98fd302f4fb2694e3986c1f46ff165c -7f4c1102526831ae1e469e62f1a6adcf7d2b876c0d43f85d20a6a5dbc2280884 -1c7666d56f832b66cf189c4debed1fb37df76c3f1c632ade8822eead5e7f52ac -e65daa6d86e410d469a7844baa4fc9d28e21490b8cb2d3b2fbe718f55211fe5f -74d3573b99bfccf198c775402823aa742acca713d30b55a09c7b7ce3f5f5517d -6133e546a86c0395bef3387804ac1b07a4d27492485741a8c2ade23bb321da56 -ded0fe0d43baca1483566fb397db76ba9eec923fc2b3941f3b949cb13dcbdc3e -2c84c6e3a7abbe5c22abf9b6959a17d152ed0576524395d8a5049c5144680a19 -0ed3405f2c9ec716cb9c0fbd6b12168d62666ce74149f8505e02aab39977d99a -13a66449c9487a6b2863f7338378fb901e8ac981ec53ca555049b3667b4bcea9 -cd731a850ceecd59afbca1ed2fec76c18fcf5ba1b9fbd81eb84c254fa140eb99 -48838693123cde50278e4aa3cbdb7f7691d52cc624b4226855a74d3ff4b3eb3f -e193702ad68437760ed7173ddb5031737de3470f9340a44e92355ef033958954 -e5b33866ba86201a7951a68783b94f2984b40dac3037d3e6d2250e850984470c -a4fa92527aa313f3f366e97b87d05e114468dcf43ce4a27b9999e24295cbead6 -7dfac0c6d99e7332662743f379dee2b05fc7aed3ae405d631e3893b16e1a3771 -278319e6014b88fc346b4f3d17edfeab40d6552092a8dc6c2cdd506f458bde17 -e66b02d4992a0e370871035bda2106ecf7fab7ced8e8d35c6fbb825ed724b726 -8ce5f3f25d11386c958fe4b773b9268484c12f90e2e25e299a2154e5c480610d -f302e1aceed9d0b3e11681bd5322a13b8fe895fc755e0053890a4135f2993642 -3d11dba2766edb9954e308ad998fb1cfbc2285d1f7a9135d2f06cd2d7f7d7b88 -d1c6c9409fd3962b8b1c9a690e01fda96361ce706ec9dbe3b4d3e0d57baa0d4e -a98200ef682573f9aae9f09e2000b9d7e14ea41682e4e5ac56dae4cec783bf61 -a99a5df4e83fd52c0c02edf26274a16c939868103691ff4f8876c25fa70652e9 -ccb3399053205e0350ed215170f709c1901bf7b97236f7bcc13ba5b35a96e8bf -c6e476d81e396b0c79118e16b5489279703b1a44c9d7e320936a19ed319cd03a -f052845dacdd9b627a47433f2225827c65dda57721e8b196cd368dcba55250e8 -24e6b7b93affbdd429c9bd8e4523d8e8a56427acc3e5bf1b2db9b60cc832002f -1bc52025f18e7d87d9bf1b8cd8dc170c6dcb85af5afc1ac4a24c0e38cfc0f4d9 -8d63cbf3b5cf6f14d902ac8a9b4c48a5d4ba4bdcf4f3b69e2998f507719e2bd7 -db63597995c5cdbba59f9b010a135f4dcc8cfd602d40b30730125606fd1b27f4 -9ccfb1d0f6a97453a8c9a40f643fddb1581504132883598385c4f76b4e57b559 -c0ed46d83ce8427db396e96bb3dbc307df52ed28dad5cf5e32d82510300241fc -fdec6d84bb008cce0fe96c7c6d836fd3c8eca9341951e5ba15ad84a1799d137c -938fda761f12ef2b7e90a49f1ec49445b5638ed4b2d903924dc6ebd72fadf61d -16eb74d88503fc48659a86d95043b4e9764eeee72247367d0ca6ec0dee079f9e -5db531a1411790c08c942b7ce7b028e4b956d5f1df8a47a8ac6c37824b661b57 -147ade729f5fed3dfb47227b27aa34cb86584d20a628bf18c395b186ef197a2f -dcb3b6d97ad24cc35a847cb98944011ec6342d0ff9e13045ed70b68a1a5a53fa -b8f341c7e187ac0888b3c8e119d8b841e494b9c1bd746cbeb1ce48fda15b0054 -817873ce4da21d8550892ab4a06565a98fa666a6be00776bda87181ef8483129 -3708a88f69228dd0c3ef8224301dd8fe81b4abc3563f69bf1212897af3e738c6 -c57cbfa53e64ff6a79549a8d81c3b5566dc7e697e11971a7cc6743ca1991f391 -efd8c0ba9a01397a05bbe5548843de7f2fc4747eba91c5988605a76f1d2aed97 -398cc672cfd5498ba16f6aaf55ed4bf613786aa1ba2e092c06cdf82b6231b0d6 -b2f10cc3499b6c444cef515a033381f7b6502d6e6ff4bcf2bd273cd059bddf06 -652dec312ff80e8c9f37818c2a453523976487f1a46f8e967b5d43aa3e24fe03 -46097a6721d0882aa36fba00d3056a8ad42d4efb81edcda5cdad6ff2388fc54b -775167dd8d709c2a315e130e822ed68a889dcec2ebb10c4c56897ef4c8fffcf8 -6d0d146c61ce0d5d2514ec2e22a66090bba95fae51b7691c7f1ae470c0f6c58e -1eca070773920235792e58838f031cd2cdae29f1e61ca254a1ed00a6f664314b -9fa26bababcc8a6add7faba2081b6e307a17aa47ae1de11f7189b78feb61a957 -51e9257a84d3184ab2b9d858a41aa2c23374497930c4bea32e04d32389c55b93 -23a41d83442345d482927070af462aaba8f5b1de9876ef724fd364ce6e376e0b -a411d2036639832aaf1bec583af5bee73ec7bc9a3a2acdde4c1d6602cd8d15c3 -39922661926a3b2b1d7b15bb30870929d0da419267c3b04b2aea81584bc202db -56b6277ad95af3cc411dda29096eeef6cf0bb3d554bc9411c39990db4ccedf0e -4aebeff2e95e4469a8fd5ba6f03a733c9ddcb832c221f114de5587fa7c9b0096 -2306f9355684eb66d1558aea7150817df7fcd27c3dff8c9abbbe47c2354f7c50 -c306e8739a39f1a71e8e7de4e5932a0a1d2b677041802cb02cc13d7c6aab3235 -1143c982379bf5d50c92ef96afb597d81c107f2ee92f46a81b1bc9b9cb30a296 -74529ce1ba8a022e221c77650c681a19bf0e5080a065e4d66d70f2ee4a876fb4 -40b0b1e29681ff5ff0ea41d27f33a7e25115e9bf421e56f47e24f03945a2ba16 -906a3d0a8b5d3f20abe89d7b7705af5f0f3533f7a546ee67d3bfb3349d4299e8 -e49bec41a8ab12e1bd71b2cff0cb0f1fdfc0ded134b5078a1e87a490d0ee31ae -506618d409acf32cd653c59f36f4e3bc051ca072a4a75b91ddc17660e00cbcb5 -b1fb8d17f4bf7f78f74724ff9f1b84a5eacf2e7da1b9ce0bcc94b7a817dccfbe -46cd999463b0b19a91823d18adc1662117011f2acbbdaa2e062fe77706c48952 -38ba2840d9d98b9a7a0d63b8bd40c34e26496d979edda33e5821c86d9565f1ca -40ce6c160e57ff22d2564348e8f89d38d46b17d591053c79f89c4e750d619407 -eaa5a8bdc52ea6c6ef02744eb4a5c4886c32b210b86b41495d8729174df80f7f -b653a2e6ff5996d96eb51a828d0606998fd526a82a5e8e1dc79127fc6340000f -e218fc26b7c97c3cdfcec5a497f7be1ed11aedb012ffead9aa2b94630ead80b6 -3ca17e79276dec733c9955e9813970215fbe02a751bcdaf5e427a64e9b47b4ef -e105983e0e02c5a8cdc06a5db4126ef333583e4aa17a3fd944ed803d4ef88501 -bd626e0d1d8d7b71176259283e22d9382ae88bbec9cd6ba87933f86fe28af800 -dc2080f38948e3c20d8f4477e2b9f85da4800cbd1b9015eb64a07b459215caa5 -c38b7781d919e199112e241556e1e7681a749cf67a6b246b6b245d34ebaf1504 -f06366b8a1faaf10bb4304579640f2cbf3fb339df697701f6c51afa09351e699 -890462e1a8152f70f301b5f3a01c549371be46d138045ffed5411192bf6eeb13 -51d407ffa26d4b8e7b267a3b3cd5bf9e06816df2e35b6937cccf16b4eb9ca3f1 -272a16fd71588054016ef2743c1bd58c6bf22f083fa9326d19299ecbcf66f4b9 -afed95e1e2a2f8792328e3af6025da7baa1b10a721bc511e9c2f302673df78b9 -f466e742ab2bacd5728bef45dfef5b74d1da674f4b1c8d51a324fa24b23d141a -e082d79c3fea6440336329105d33aa1a960eead51cd500252a4d7d481cc31a99 -e9a59e3b4364a3e19805c97270bd19b031146afd9f46111a10bf886385731d74 -95ed4727f7e2435c96ba702904ad29f606fe9c5f1f9a11a229b1d528b9fa9ba5 -b50b4d4dba0ab5b3840d71c67626b6afcaf743dfe5334e00b64c5a73b3775450 -757b911673bcbacfb0f8509e8b2b2d9dada9a1558b97b146f555f85022bb4bce -86862babbcd259be6537133f30ab2895f60869641b1b9a4cb43b676b0739c112 -2859492d908c6c60aef5ee3b60d515e7e641d008483ab4aea0e159481d623193 -b5e2bb48c77bb87783c7525e59d19a190e2c0aa02446a8d4964844d9f2561a3f -70f20779d197b91450de25463dbb82c2c7c6428706f6d9f6a1474bd85068b37e -4eb45bb80449ca5fea88804308f054167aded26609e7093cd396948cfc810160 -347c6d834531d64a27bcfde1dd24607d5209060f8207da7f5ca88011e24e326b -66a261f36f754a37339d7f10eab4f276e1eabff47f4bdb577b9c4dd3de333fd7 -8f8da94df25df93a57193b1411761f908510980558e23b0584421f920989a758 -138f2e50e1493b3f9f2154a488202e0bb77316ec03f6555de4ae83923dd1588a -fe0bfd9235b4c08a8072804d743e793daf862ae381624303be7e5e0dbd74c51b -4172b1a16c27b6f8c5a695fcf3015cf4f7d89fc91c4c8102eb83a15093263774 -740f02f675477a3b4b6734daf3d18d1e3bb7752922e9b33bfadc539596c276bd -cbf0fcf5437eb33fbf4a83bb2f92462236552eb0303ee70602f42bdc4b51d384 -301922cad3abd13deb81f173e9deed83786f4a5de1d7aa21cc77fc364fdd2e7d -8b9e8074ebcb7f3511f0a256e2cba9b32bac11a5b7acadc0fc1d378ab3557382 -9aaed6a9c679e7e5cac49307549f8c4335fc477267e25506c41035cc248f8797 -8c267cb08fb5bf8a087e95dd47aae4d8389e97ea0da1af064d76e5df286a1774 -a783e3df200df1cfa26ef1ed9b5dce5dc55102cc5718854fd8911a886d0e2e8c -a38eadf009525bbe17d0986f4e3c6a23e608fe2782e7c4bc31ad13d80ec03b7d -1f0ff0855c4d7f9d63d6283ad8658fb13ff68586e3135a99341e4b88678704a9 -c5e8a4c2a9e70f13408c9c54ac9420d52761f62225c64b7c60514b7de0a2c8e3 -f27544869c93890e7df32680fdc438392efdd6a7bbe7621a7642632b7f45bf2b -3f0cc935a688266c39f458b9503ed06e67f4094946e73a3fc27494d890065355 -4fce63c60e6a32436d5ba5e0ab4f373e816b57fa6ba5a2a9bd02cb58af2783b2 -ee1da6169c0f15c23c55a7b2d74edb384c6f646adb73d70e3310873e0c99231b -1af196d1742758956415392b4537b1f04ee4060899648c387bc55df28c6db99d -2f87190bc6f1109ebbd78e15a5641a76198b590286065996f6fe1f776f7013f4 -e999219945c4509d37463f6f18cfc46a500f39e2f2ad229bc16793428a9d8cce -c5d950ee8ef43b425e518f4fa99333f9bf2a420b33b383756ebb0324b7df49c6 -0eeaff9f5f4f0665fe60d40a1f9824c0df60827d2d3915512fc4a5e54db36580 -9e3fd8c1c7c9ead2b0b5011e10ec68e4035d8aa662f0bf09fde9bbeaab5fea32 -3cd1f8cd96c62b0410ec741cc2aab05bcf9cb188194aa1fea94f40a4254d9149 -82dee90d74a6b5d876068386d55c1ab92f62e3d1c3f24d564615ca3035ffce2b -6b49e53257393e66967da9b72010d0f8c4b6f4337487b6abffbaa16aaa86a6c3 -7c22a7b4e6f4ee90d60a9fc7c95b15d34c8a689f028e591215b329d86f35376b -15dffe9323257f0748925c002cac78ce7cf473af7378eda5489e3c464b11e3e4 -87d805cded68a70bb95a36d01885006d2cded168532d575a128f0e03ce4a1827 -b7b0f7ca3da8e4dc774ee59db3616caa3a8924f84f35df50e48477c35fd08945 -308a214bde3389d0cb225ee5d1f96771fe3930b16645c6283b70223dfeca6663 -d72e9b6b4773edd543cbeb81e38a094ff9f1eb6012ca08a77092987bb8dfa849 -361743964bfd43032f77b09d6d1407abdcca53d424ae51fb1ed1434cf4a2f391 -b81678987709e0bea61d8546b8de9b05260d7e2284e445933ecd867cb63b6004 -0fc50c76fb25f81fdaaf545bed63d6065def8265028a224797551a6a8ddfab06 -84798af0747678d53a7564519116755a795f14b254642293aaa3622be7c14f86 -5dd86caf78e0273677f2e33658b24310bf444b1e4f0719c187669b286740775d -66a65699cbc25bea7f7eeb8c3146f9e91e5e0f413376ac09c7e24f9b76d2af1c -b63201760c0a7afae554b8defacb30d9dd146223f69b015b9b7a79cf92d52404 -6531acdb6bd53597645241ec6028c585407b903d0579573ebff088e43efa91af -e77940e6c5ffb955e1fa083b949cb13dc3483bc7637b96f03c79426237a96c21 -26788fbaf00540a987d4ef95082d64a104dbbd75e4ea5c00c2cd02e622987ff7 -2775eeca7c15213edb33fb30b48d17c3bca35ed5ae941829d5992d7bb74f8fb9 -b04fd6fa321052a8c2b40f78c8e8eb081f8851c508f4774267d091e2bcfd53fd -bb9e9b22d7aa6c9b62f0f67a3bb9b1984979d55c45d705c1cbea897072a86b4d -0cb7400640c26526c0a03395986cc3ca897453f7e6c4251d81ed29e82f7052c7 -f8ded9c0aa221832b5750a9845659235f82bc4d9b073a75af2271a0814b1b9a7 -f598e0e7628851b21af4f0b0536c129f6ac5f62090191a7a0776190010de80e2 -7e252e134b7a5c4e14a18a84e7fce3f71645ea072ce3655632d2113d4d176f13 -29142d814a63c756e0a43ad21a55d932d1b83ec93188d7c893220fbf5157baa0 -834ffdf5d191342a4f7afbba2e63b8f36a6394ab5926fcdfdcd8d8cf138fecea -3deb371294591899b4f6f8c8f0ea2c41356eca49df468a952f9c3ffccc8a99e1 -0d5d61732eb44e2ae7b254bab320d13990ffcdb63f3d541ed21ae022e86ddf20 -1eac6701a072aaf27664dd4e7874c4e428682c44de9d9b14c25fa8c2e8760acd -79f11c13e198602be9d9573f6f04643b80abae1cb6269e00c8ab419d49c3606b -11b1f8f46e7977789b19ee83c5bc35bfc48da6d32dd4d16c1303b0799dfe98fa -0cf8531205195af9e992dac76c6cb79ef51865e6b012f29df6d3333daae56b36 -8ede2fc26a580344fdedcdf9c61366f5887fb1e7300f7898e38de35b4dac436d -c4f79f7b365cdf9b6a32d842b6f8494b7b6c91c122af116dd8a3c3c1a35a21a9 -509f5c0c8479c5e57b2c0e175fbb4a85d3b52c927a20fd0cfdf3e2273ec8726b -58c23b0d4f56d69ec2c59d8ce896ea7dd86cea423c2f7250170a09991fdba4f2 -40a6df094cd170ee83bab69d4b8706441730cf417284c8206c646b5105d592da -9274bc54d07e141fcdcd130e51bacc353ea2e99dfae63ecfb9138e0aaa07178e -de98a4f4d365375190585c8579e73929b840667afbc659f5ba4b9f25fe55c75a -2a42fe330a4b90f3a088202806baa50fa1e99fb32973f23819fba8 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndResource -/F548_0 /FRBTTO+CMSY10 1 1 -[ /.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 - /arrowleft/.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/.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/.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/.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/.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/.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/.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] -pdfMakeFont -%%BeginResource: font AMYDOG+NimbusRomNo9L-ReguItal -%!PS-AdobeFont-1.0: NimbusRomNo9L-ReguItal 1.05 -%%CreationDate: Wed Dec 22 1999 -% Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development -% (URW)++,Copyright 1999 by (URW)++ Design & Development -% See the file COPYING (GNU General Public License) for license conditions. -% As a special exception, permission is granted to include this font -% program in a Postscript or PDF file that consists of a document that -% contains text to be displayed or printed using this font, regardless -% of the conditions or license applying to the document itself. -12 dict begin -/FontInfo 10 dict dup begin -/version (1.05) readonly def -/Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file COPYING (GNU General Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def -/Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def -/FullName (Nimbus Roman No9 L Regular Italic) readonly def -/FamilyName (Nimbus Roman No9 L) readonly def -/Weight (Regular) readonly def -/ItalicAngle -15.5 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/FontName /AMYDOG+NimbusRomNo9L-ReguItal def -/PaintType 0 def -/WMode 0 def -/FontBBox {-169 -270 1010 924} readonly def -/FontType 1 def -/FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def -/Encoding StandardEncoding def -currentdict end -currentfile eexec -d9d66f633b846a989b9974b0179fc6cc445bc2c03103c68570a7b354a4a280ae -6fbf7f9888e039ab60fcaf852eb4ce3afeb979d5ea70fde44a2ae5c8c0166c27 -bf9665eea11c7d2329c1a211dd26bb372be5822f5ea70d99eb578c7befd44cdf -045a363056e5e1cc51525ea6fc061dcebb337208eff729802376a2801424f670 -0e7e6397b28f15bc10b40012b0a3eaeb2693e8f7f627c4c9c7c6c5bff105c1e4 -1b2b9e8f09253b61177e95ea219474796072f4b363fe05fa7637750b770d7b13 -99fd7523816e22986f43b17ad2f9328028bba7f383ce5c429773b3d968b4307a -efc6f468433d2320871c85fc9a377c8146b0238e6386f2f010e4c23bf50f301c -95de2b4a559abd765880f5b3d8960d7c462f28339aec4978f261a05761583468 -b73b46da2852db1d9b0b53f6427551b6e87f1a1492a19dd774ccc6a1d0bf8d1f -afb24bc1b3a56e452791e8fb9206a2c9df1677e848a67c4dc754cd0833116c84 -25127a919ffae922f6ec724252ae53662f3eeab1dba230a6ab6ad98cf27afcb2 -6837487ece5214be13a113d27d5ec449ac017cc7f12ff7b731b6aea24462f3bf -e743debd18a99eda36d085ad3602ee939e3c2a40fb9551f4e5e904578e8df0ae -a6e10910d5205c917b45b0d0f44caa993ea6fc2e17ea43b83e62abb31717b3cf -d783d25486084caa1c642a4d9719906889510d7e60c8ba0b48b9d40222d36a01 -1aa4c8148ba57f165bb7181534df0a597bcd1df98fd644fd3e3a09a21bb018bf -637e620e494eeb843c575bdc71016214e19d0d3d030b8a9eaea88822ee97d8ba -ffbd2f522d3ac2f34927961e189b0c163c365ebb410088e95a5bd200e62bd5b5 -e846bdf4c127018a54a78bce6dc744c4c1aec0087df470d72e461c8079f1e8a5 -12794d770d391a02d428fccaaa4fc4ce3eefcf12b553d8fc59588b922565aba2 -c179b29dcecea5254dd73f388bb94a7ea4f16c0ea0278deaa11f2be56dadb4b0 -43bf781fb5151a4d2491bfa2d439082e8cf7a05cbc84393aa92f1d09af1e69f1 -692065dfb293c7d7bb552469bead4b1479ad1b75e552af4c162d37027dda9863 -5e1ff0b4c3ba9cdb41e9c292e901446d40a10906ca0c3f649f7968b4ffd2c653 -650bb2320e55fa19938e4c3775f286a05a1011cff4e4c7f353bfdd88ce318584 -799cd9350da919e462621dc3556b48bf53edce91940eab01870741f0fbbebd2b -c6a26e593fd78e7ab5d05af43231c262477a5309acf964c0fbc114419c98df24 -279612da5ae02b2db3eb07c329891aeab0da742593183a92a619912d6e53b33e -f9489dfb011045b4f20c79a7038e473f435dcc8dfed5b9071acab5a322d4e4b9 -f225eef68b8281688882693085432c16d81dbadaa3df3c2ed508a5547c4b8b18 -2cbe2aab5bfd98acf80d5927a07da8a3aa987a899e28e69a49aca9aa960b45b0 -53079246f09b1f8be89a5912784ef566497df949ac722c37b8b4c641f602217d -e1c7fcd757c04c263aa2a4a08d7e08055e5b922d850c2a898cf32baf2418e0a1 -fa6e54e2459ef6283fbcdd406b9079950669763106c9d8b16d0aac8815fe894b -e1c7af9702ca13b36325fdd90110f1b8a03ce3e7aff614a0a2b1b15a1041800b -b72ceea17cf4a939410c53d5bac0b89eeeb9e2f9cfc6bcdfd9a438c109784adf -9d2843fc809a040b9287f0c71d93f7c2b3273d39c5ed535a8e130b46d3c97f4d -e0bf14ef07eec07f1c747a6b5d294cf4d47ac12f1d9282d2de0f808a4c609e4a -0e2a68646e9583b6b9a75c95840bab3fe259ad8846a82af91f44923f25bac677 -3c8ad0a810731fafb0a95a5445b5800d0be0378909aec60f544c3e7438760b6b -feb2b9b16652caab36f65ac444ce9358670e060a90cc422043b8ea8f0b065446 -0b4ed94690003cc77027d8a3c0a06a48bccdf5d6d6770402b4f44ed2673b1329 -06d4f88bf12a3445794fc9db3f1bb4afb8d380def7dc1dc78624c748192fa321 -c96b32dc26b30e54dffe770165d1759d82a5542cfc4a772d8c2cadcd2e2fb1ca -1517ac15deb0bccf94ce83436e989adba2903489abb6b2eb9f977f3f4d690b31 -e8f6e27faa56bde2c4fd331ceb502ad286857dd67d898f8b86e13a98044f77c9 -ef13c7b14a754fd0e07c68a90940f3fe3594afe83c605102c08ccb046b807975 -e69c165c9b833f41da40d17653b80730495803061fe194ca599d53a3367ba3c2 -8db6183ae68f6564178dc0372c58a103da58de056b7b0f8795cccb1cbd4239ee -a2b6af7eeec2f7da99f12110e07d663dfbdc0645dbf9e051f91924855405f022 -13933f1c51af2ca7a39ae3204ed31d68b15f2b74914bf86548d87316170a909e -e9638b25282a209e9d8bbea3ecfa3ed46c2dba5cb3b38d8fadd66baf9417f5cb -6b3a9186e34d1710c011e3a16fe8f9dbc207edeaa72c2f7d4b7b7112bfdd1b0a -1330a7f88ee867f55c828a9154dda3c57b6e596b830b33ff636e46d8d00fb39e -cc497f82e037ae6f7975a36876d66694e3dfccdd4a5f9ee70883fde704969531 -9cf38a1bbe0c7fbea056326e41636e17d93850a1df92ee50089f30f3c4ade4d3 -07305271d998208c7ac0f998b96ab3e3e182e29b819fd861e52b04e00f9b6be0 -8f5766fa4f3557d0ccc9edf31bf84531d664fc186ae2e7f9c81fe8c4f9f1f2ae -3b9560c9df5fe69d969a0d6c120a6621bd68991fd5593f3197223c9f09613eb7 -1ae0c78d9ffad6be1e36df5885f657994ffb6eefb5e0949674c34768f001827f -12f1ba77ae821657e3e96f17de324f9355152cd28c7bc3bb93b0bd0d40d17d35 -2b303f2518e05cfdc4dfa697683ecbd6a949a2eab9cce57b8b14c53ba2265a49 -5c28d22dab35e36b5b02d2fc02738aa6fa7c4cc66c88f5bf25b2be88a4987cfd -39ca40be4ebe0174ba827e7dba9579fe52b869142fe488f9ea5cff30111d6400 -ac3cdd3e1476468fb113f2b977937e70b7214069a06007d987d0f3ade59460c4 -35361b9ee2378b0b2365178ce4fdaff19dc8e52a4eba7cea25387a2e330bea1f -dac191c9e385c837ee253220a279f05876328864c9c2248258814f7a16030c60 -5a0da56b130757b262ba58ab68340b32d30ba67ae01efd748994a6510bdfb15b -50c31f5dedaa1866ee9123cfc235591e6516e8210dc0157687a8f081c3aae846 -7481d16e8af6d8caa9c8596c801dd5948cf7361cafb8e01268eaf0cb40ae29d0 -de3bb879970e06fea94930ffce9d4a15ff822de7486a4023fb6bcf27d496e0a5 -2c73d409ed6aea6923de8e6ddcd7615d76b5af4f2be2cee210bb781fd622574e -042b2fa03ff6e45cbefae7dfb53447fc56da42938717098806352776208567e1 -f07e8372e0bd8a19332de3a09320e82dfb6ac58689a65ec1fb97808e3ecfc84c -1173378bbcabc629bb8d4f2642cfbe1bfa1a25137db295526810f349baa1e4fe -9bc755f32a1ed330171ada792e10540d41b177bffbd9b94c2c008ff74a20138b -eb2d0b23fcdc136e434d7fc5e7710559b91756ad1171ed3bae249960384eb4b8 -4ec4c71e91d872b1db3b7ee412aa9b4e66c8e5a03d5f1d98de47ab51dd77014c -2926ab5e994a095d9ee5fb336746bba506603279bfa91724f6cc868abb2ce5b2 -c145dae2b6128e6c913c8814a5a0b4134c30edc7f97908ddc6e7bb65cf8a58de -88ffab9273afe5819be1d31040559f763e95cfe230d48681d0b4103ebb92a3f8 -01177bde9bdd61e288e9c5dbd18163eac0a67899acfc1c386f8b261fabd320ab -89fe9be450e41549b3753c32e2cd3069e82101530513728dc24d8c2c25b06ae0 -91db97dcde55f701a63895445c0bcce07ccf4c82b318494f42c776d9482c8c19 -46fce4e987e770a4a7512b5276e36ec3072c6dc9812e56e11b34baaaf9bed596 -e52d1ac1768e8e0a8b20b94f320d56406f4ea3202920fe665809102ba71932b5 -51ad5c83f6f34b1e87272e8ac300761cb99c9104a20557c09df9cf7ac51625ab -05c5a60689321d8cef7eb8edd092b9feaba272a94e133aa84a9b7cded15c6824 -3f7ef11eee530323afe1153fbd6285b2302588252609824ed75c05416beae011 -98155779dec43c2e7fc92532951a1ce0dd6613afb3f9c73055f528f993a342c2 -3ea326391cb99feae1d61d95af36536b1c53d0a2c19709f7c85f07715f95a98a -cdb7722e297692fc187c000a9e64bdfb0c56852bf7ff946f932852d3931043f2 -60b7beabb6b6faf76bd8ff3f2a6fca03fb36ef04f59a9f67d26da5ddbc23bf20 -d82e99326a41155cfc7b4fedb80f69d361c31826743ec395b7aa83c10f9b5eed -80044f3c258d7e2052d2cfe08f6046189bd0022ad8e6e7890cd31848b2477ecd -095ba2ca9f4e9ad4bc8c7b2dae33d20d4cd01885c2f172052c1f8bcea593fff3 -4821540e79f626f4d7fa64c0bb4cc5485309e67071d0277a61369645ad3a4d8c -fbfb1722ef6011fa6b2095aa4e5b32746f64c16af093df2e9bc175409949d440 -795f6f2b72a69435be1621154ade8d4dfb1bfbb0e28da8f08c76cd0521ff176a -d2e7dd44916af6a1dfa3ecd6194189190b428cb56e2ef4a1bdc5d739ff1cbefc -39eac4b5934d3707bd30caf67adb3612b37056151b45e9eb73c3bde4b4350148 -23c3ea6ad5be04886842418ea1872bc169f92a890670fe0b8bdd86421400b49d -57e5ae8fdded5d706eebe573a5a172004e59b9c81fc990d2cf7036344c4335b1 -842a5c879354a84cc837d76b2babf981d4e60c857649054fc69fc59bf14aea72 -51210ac8babc95d58f4f3b497d5db3395a638fe339c5149f284b8dfd340c0b0c -1984d43b5951b7bdb82423182dce8af2baad5eb25e037c5d976b534a3459f742 -751b5ed1c5bbe4915a7b281d1b1c806c58bbf900d5ca092fe2119ce099e52872 -0e5c8231dd6d7ed8fa5d2c953bd8bdc13781119d2b31a94bf39948d4b3688e58 -8aeae48e2d66e17935058ed16528d28e50e37bbeb1d155450364517018b1b44d -bb0703befedb3681a2b609063302129628fcc24d88653589b431fb84e4ddb650 -c2f783594de613ebdad8a1324574cad1fd05a37844799928b4da778710e3a4cf -b85afd46ed46ccad840106074f69ae7c306abf4cead6c66f4fbc0fdeef002570 -25305004426efca887ed5b4f2ef6dcb912ff552089f383d270c1312811b510f4 -11622aab22c5add53e1979fa80a9ac5ab80b3255c901cda700904e4254725a18 -6925971163b35469c55ddf9d36d2e690c988678e2be17e2668807c0fee64d264 -5a8f26899ceae3abc5553bc58674333d43f27d0ead9297619e8169554512d7f2 -9984c12dd44285a3d8a75dd20ebdb5280b95471bcbe5473447fcf750c3b061ba -bf491a61adf487ccefc79cc514569978f12a7a3420ee046e1c28776c96c550e7 -fb0e2b46b3e57b2b8a6ae7d306fd0eaeb026beb5b13b8c980828f78905369fad -aa7ac9c3b91df9a4d1be00b3aea709995849ae4ece16c126b99c3d0fc0bdc084 -f8486d70022e0d5a8e50a27e9439e37d3bc175c3a3bb19914a4bded2feb81ec1 -fa7e274b027f4f4bfb331bf4fcb58fcdd1b999a775bd2a9002e846d7fe61c6d2 -e29fedf3121af6edcef90f23f54b128efad5fcc3e2236e1f9f59218994460d1a -f21eb9a2999501fc489873e9eafb986d9e9e780b4eddf332aa72697ec956f63a -4307133ed0fd2dfafe283677469b7b14b155b17a8da4a81cbce56da716149124 -bb3b20fa7a2b64b58d6eab90dbaff1d560e5e5492f17615b7308cf7670f09a04 -6115d454937c733ed45b1156c2e7d0ed43c093d6416b91533637d5d5f649bca5 -50a5ca5522b0f8362042caa30a4bc87a4a4339710e2de9b2c0c84baebedd073f -25cacf0e4c4bdba46f4c545e27d20536827ea4a4d5f5e19518fae6ba2d45b5e0 -b247f20752a795594d9ce548b5c0217ef480cc5a0be6794178fc7c017aa8a3bd -74686310f635ae6153d9e18a0514882d4ccfe9d7dae9f24b393985e8da776880 -1d9a6515ed7bfad3cabd1e13f2a9be17d42dda60f38dc5dd5412b03b938bed86 -0f9cc900eba7eb281e619edc39b5413af1e242ab56171d3a01203c76788d9024 -2f72c89b7adb10f5caf6851acd3a4369972f796d5a1a9816023f5a454dbf5bfa -5ea34c00df81a76fd79a0198e91ea01efbf7d89d78f9da5253250bb29770c4e8 -df955af85d48c33fbdff3845d6868920a3b09ceb0b7de798354e80d1f3ec05d6 -3ceeb37751ab5f9d5f7e682958235c0fb224551296108eeded2e000bf86193ad -5f290f698375727743a699633867f03f2d7801b18627f25628c0b65ace0e766e -ed22bae384ad0305bbba6a3cbb913641106259e2947e77caa437856febd8b604 -7621e8be93bf909cf3893cb2e0b4c75afabcac6ee9ebfa30dc6ba5e9bb572318 -ba844429bd3b5bec550ebf2b7a3776f11dcb71c930489a792bbad9f6a1679b6e -22a32048d0652fe2e3c1dfebce17cf97281087ed892b5d02d83a97dba1b3b221 -4f52eaa45592670902f979905281d7e92e9bbeebb909d5152f97aa49068d3b2e -8ce26b784b48936a3f8e569e5d96d8f3cf19335c7ca5f139815f26b62ef0be05 -2f436d3d7ad037451cef14021a15b0b10a07048ffd4cc4b4ca987cde5290318d -7100cdfb146fa044c694c79f3ff3ac98f1067bcdddc054cb3867af0b7e340e39 -81cc10ba0763901afa3f492590664fbddc6fe2ef568d6765579eaa5ff1501a1e -6b6b303c415557a70b4d60994b9841785a8791b51814f08ce8f0b048c690dc05 -fce223f392df0b93c030960e7a4717203c957f428fa52cf5d206eac92a7ec569 -b1353585ae6a14877eebbd8c402163bec563feab67ed764809e5205bc3f50fcb -557af616a430215a7f9915872478572a2335fa3817abd8ff113020f023c513b4 -202a3015e22d173b07d87e6d6eeeb3e0b0891c00831843c6a2613c15bfbcaf5a -8bad5d9e69a88eed3a1965e1876b223b74dedd8f16a2302c7f70ed7c8b5e60e2 -25c39cd88e4b559888007abc4f48955fe377c69b00be16bf9eec8248ebeb6808 -5a80b2f60ae03c29fa29b91f30efb4ca29bc51fb2bc09a7343d0b107ffd02a03 -b26ffb1c6b1d2b5adb3647d37bdb45420e8a115beadb142e3aeedbcc8d0ecd93 -8777fb9ee661d5db7088e3faf04e91f1865418e2723565fe2617d2d8e106a230 -a2dcb6a4502528d22457a4399cb7f9e4f788a03d6c8b5757cf59267fd86ac4f9 -21675f6da1a90156bbdfa77facf6df331491cd2cde707e509b8e5d03ba1b6781 -eacd2ac3eeabb5f5ac4d0d8f5b10676e7357557c23bd6412c625d7944302c969 -561c704f937fe5304e1704b20352a758d6237e52c4a356a08f9893743a5c20da -6a817899bb2edbadbf4234e1ece52b9b3f3e29095f0975259c931b67595f0ce0 -db8e4ccd5f6fdfdda07663d252bd05fd4ca58fa54a9fa6acceabd97f2313c59d -195cbc3bfb55f9050d5e3ec4e42f883635f18d17efb2a0ab333e09c2521705be -aa147b6717c816e57d38adfb2f4658249a3a345b337251b7537cd305c6424dbf -b204417f4c36086edaa8da348dc065aa5a7f68a0ad3e3676a7c240e76ddc8786 -96b56cd4e70c28c3009185ae13ad4e96c8522735074ad649cabf39201903e974 -12967a45b574790d727dc68222dff726fd162dbfee4964afbe6549abeead5264 -a033fb29e70f1d17fe58934bfdd5ee6defe6056ea4a0e39a39b7fc1a6da06713 -f952bc20c689bdddb94bd67997f60f31fa6239387089deee5b687455a5c06fa9 -fe941781f0d9835d8d020cc6286c2fb8ed5906eccffacadd71ee0b7c7b67d8c7 -aaa95f9cb24fd22bea989e0e0919a4ea35fac630a9090346da895bb5b6e1c1ba -ff90f1e16665998ab7612444979edefd96f1f701d13950e0ca2daa7787735fc8 -4b268e36cba6d7de0506dc5353f3d13ad666cba8f8c56e27e44b57873adee581 -fafd1f33a85b6169d4794b1d73940c134f11dfde03ccc5709f6d806cfffdb6fd -f9361520d0023ac6aa3c93b843d8cd8a652a665eb31d6b75d752e7679a9e1327 -d0adf92820acc78b0793b9f0307c776c201a408a883f99f9d2ade3960b1e62e2 -db5d6ca4115a028f87f77651c95bd71456ba087709827b05a80ff78746cd3c09 -72eec0baa7ebc8a05043e18e63517fb66e333973dfa6bc796af520e8efbae640 -a2f4b94f244d365b76fb3e229726dd7c61478dff4d616cdceaec1ad70d9cefd6 -0e9e6affa41f34b777da7174b3281acda204977bcedb3f5f9f0c5d77607237a6 -9d6780dd18cef875257fd719d237a35864498978239cc0933a9ad0fb8ac74f3d -869fab0c30e8001a2df0ada8f56de43c5e9a7dc78220720dae05f0fff948adf9 -0e8319eafa3fc8e936c9c040b1498e7eafc36f03bb4cd11a6fed37b7a8d05b1d -00b5f36799e9556526f5e5f2205dd641ee39a4bd6c8ec20a36473eadfe1a499e -88284d2fb544b7bdb637868345ae4b3dca6bc0754bad59df4558d2d608faf166 -68daeac6bfb73db431a3146628d371c2d158a1ba65c8d2d47ceec7addae77864 -042ef587a6d6c04dce664bf83492d164d2fc00c1313c220bfdd7a30dede201c5 -1e84d9573c79235a8d847d0a4c231fe009058f5848c775e343c61835c7c8e025 -44dbe77ccfff9e9c950ace49091771604234e586c1335904da22349a847ade3c -060aec69c2987eb1f3332d8b66e59be53edab3da137d59cc6efa0f579f8a1d03 -882c720c27834570c10bf892f79b30340ead8535881b11171b2040fb6637140b -e927369f803a4ff311d78d7e68f4b5f8628fdcfa2cc376442d78e6f47cb378eb -31f079902cd32d6aec688f02a7365b66797de1ea022afec2f3aae36fe01a3e5e -6cc49c79ca23dc10ed8071eea3a0f8924a0dcc610f842e4e30c1104f859ac970 -06c7490195599c65393be11269c8dd7247c96d632523256f59edeb144329b8da -b35303c922432e92394a95196dad464e35858f00e6a27320cf515b7b8af90d06 -82e89f09afb605862d14eab6a99218b3f66f11ea2f345629c402bd9aeb25e3e9 -8734a0ca4a814d824ee4ca5383c6eb8ff1458c767dd9b71530c5f01be2d2611c -f9644c28f3f52ac748749b54eb652f76630e3a62b63a3562a54144c306beddfd -557e154c7d4931bafe9a9136c3aae071b00e7204150cece0d45e10bd736b633c -8abf3817168828ba17b23c8ef8ee35119c43cd7fe068e1f016aadc734d4338d7 -8abd60567f307d6ec471f99b03cc7b5e8140dc07f726303c2185590f9f2224c1 -52bf01b038ae1e963098a309edf98ce5ba1ab235e1190ba23732e42841b2bf69 -36560701e1653df36a29c8c3254d402d0140f5ffeda15ded4728c176e3f39c35 -48b5a2be25266587b52bda256f255c940adddbfcaf37ba2500213239f12dc7e0 -0b61230190a4380917962c18effc6774f6db08b799c5966ca7133fadfd7e2b25 -75116286d1c2a40545f973870cbb5cf97691afe304ca7b586f198c426a71dfa8 -cedbe3d94bda4267b9b5ff1454ac7d54f59c5d94588bb274601cee186b9ee892 -5f359ec5bc402442bba33b2663d564461ca130d7f1405b0467027ec1e27bbec4 -8d51c674c81b66ec733c4c57410956520f9c16708aaee0d9ae34f1050f6412c7 -7a23c8c3364dad8e407319772c9b201c49b75dea4685566d9c912acdb47aece3 -f9786e47398891c07b0269e74e2eb935991c9d7a835eb88bc04eb2b195ddeb02 -38dcd1e4bb773e269ad58fa9e2f5482db94a661f065bfafee3ccc1c812e9fac3 -31fd70975e3a0c72d37207d6c90f998103a821c35734f0153950e5f72ff6a8ac -cb831f57267142dcc4079c915a4d01807fdc883e15a15b67e8cea1ef8d26e4fc -b55c69418d7a4dcef51473a037050cc43e204fc7de2392905800993bbccaf459 -3bd84187fd1c295d111867930dd068988631f5d0abb9adc48b7ca8134f8a3baf -3569f5ffbf19291022b3e13fdabbf0ddf64fef601cf97dc70ed2e4355de38f1c -0ca81966adfc95cf03e794d875025af92bbeaacd9ee58b49c3f0b67d72b13a0a -971076819781d91814c47a0a3b53f767b7630fb55df3d2706d834b127d56fc95 -b9b30ab934839b8324c9ee0147f0bbec998eb1b2939a2102c59c896b9f57c9b2 -fc138cfd94fd5c512bd83e30e8356e983cceb0de72224f78b3c8a98359e46f22 -c19ab808b70c4287397eade3b28a311244385d3d49fb80adc4f90f32366fcf42 -eaea8d05392164a48f03184563922bcbeb78376f512b9a289325a61c0c357e40 -bb3dbeebf870ec12ef096a8997bb6ec55251ad55bd881ebdda84056556380935 -b0b8eb1f74ef96bf02375a30dc53795da638252a12a2e9bc18bfd7ff5aa7a8f4 -4a6bb4a34f1c94a781a129fc975823bd16a6df7c5d75b7f6dff55ac5f82e3e2f -572f339f48024e93f0c59fb1fc95bacf7bf5fd7c683c9b159c3b5d937c3a2110 -e78889021ebbbbe76b1f984317d310ea61f7b5cdb4ed1754a35adc9c6924c3e0 -2e3b157261eea5092e0e7a914a259eea2b14192343680a18710db9f82e54c920 -369587bcdeed8f8acb72d2565ca89ea92b6b58bb861012ccab7270200ed5cef3 -9bdc58f4831161e8ce4ef5c6fc839deb8216482d906d60c1a3292de191b40c79 -85529eae01de8fadd442ec8bfa775366070a9e193138a4c6f6eca7ff554c57a0 -19346015d6ed5dfe8b9dd876a207e7247deaa1e42a41c3edccb32d47e5fa97c0 -9bf3f8324a366856d6c6df8f295da2a9164a99b6e66adf4247dd79bbf54525dd -bcf518651fd8b374cbca6ac532ed443a1c952ce148a67cc655d92b670ab76c64 -cba90089f1d252ab55d93cfd0ec1545e79b65c5337fc57e46ad6ddcf5ca56204 -867e467d3982d77c2e603fee7ec4b57bd8718e5be9203666459815b7428679b2 -134188b7c2c89f64b7426e0dde73f586a7a86a4cc4136bcd5b09b2482aaf3ea2 -6a9c99cdc852ae0a7262b57c06143f1a6528b02cdd69b9fd5edc635873997b4d -7c5644daa467783e154ad0a787e72bf5a627f712267198d9368b480a4e764627 -b268d7f1500b8e155615bf9e59bedc125774802dcbe33451e222f6a9ba24afc1 -92933742c74822f138baac4bddcfbf447dea77a4e913028db069e802014b5d57 -b0c7d6b7a727742eebb6a7c7a2231c94d63fbe66fa8030f3b378006027ceb4b2 -74d8d75d001c7b4d0225ec9cb04ca7f5e1668b44682847a8b14dda4ecd87fda2 -6b1694a2810f90537c403ff242d0accc8b73fa0088d668fb4fd50c4a0b0aafe3 -0dddc6e893c1bb127147fd1b35254e2ef659f023cd826cbf5e400dfba85f4df9 -f70b30a42df485bf5dd6c620e37c82bedef5841131716bc5eeb40aefec8c0379 -f9348a1d7ad0618a422d85300bc0f4208a5b4baf9dd1f568da943f0023eec988 -21187716ec2104282a7fed77b0c5b01e78d5d9d5d99994a9f232859ce68a62a9 -e6960f557f153d7101dd98b7836d7841d3180be3b34a99d4434af82db181de42 -e7f3fd86d86678ea86c4ea4d0af845955141ca4f9266f3ef69c2ce9b73ae1558 -9dd98a8a0802572fba00fc509918a64f1dcabd06286039e75042d53d472ae66e -38ecb6e6795e3dd12757255e786909f306fc17d14ed432f5107aac6cc50236b7 -d381ad2c4da239669d94cb276610a846e991f508a75e1a3a851be789b9a3f75b -f5d7dfde15eadd55e7710d79b5a4127b5e9f85f6bceace031aa9ad412541848d -59dd3f66886672db5d90f51fd15334eb973e64baa4181186cc3c090b2a5bbb70 -e9e1fd9420a31674e9e517b1dc0196fcb5624668785a65dfa60a0944386beda0 -66e2a3d871913d23001c0b5f22c4136fa48e6fbd636fe0bbc104cba53ecd15b7 -0034db9200070b7924ab31ea318cffc35cb44bbda45e04f64516b48bbaceed37 -56a2aaa5d5c0a2d06f71a5ca689c8c8afc991638fff960d060555d9ee7a13868 -434853e22d4d9aed6231039517aa713e67e7c08467c687a21bfb00e6c99c9b15 -51859fb8f437c77bca2b0fc97a36ee9b552645b83ddcd2ae48049085693c356c -53b214b9216d5466852340dbb92eadc60bb6225d9c08bb9f5e9f50e40dfb7c12 -2b5126c6e11393d04691831af2707bf11e0c4e887511a59442469df76bc8eb2e -d2e97d09b6b2f1b533ac64d85d454f57702af92cc88d5ddc46388d6c203ba06a -f57846d420ef1727d97d964da29018245d91f1e37e3e3f9f04e02d997b0c28fe -4c99293e87c978606c3a0c7ca1d121c60ac58fad627be407057eae2ebc2074dd -fd2bd9fb017ad048ead3d1243b7634701508034a934c81a9f63a05b7319676d7 -bb9af94fbe826f84d4149e81b46424e482c8c1c655affecb4393177d768eaa24 -a68a71e4faf578e57865b15f459315a26ddf6e39bd3d16958a3a8cbeab793eaa -533eaa3d89e78d292fe37f0c23e32abfd50b2c9fba8261331c66458340bb4cd5 -4e7a7cac3df5ca530fbffd93789357877ad2fe127377b899340416d6100e2165 -64c62ed803d484656ef5ff7587902285671f280de39228b9432ba46c3ecbdd23 -46222998ef3c528cec6da555eb72092d97664cf35ea21e31ffb70e8b8102ddf6 -0203d3dddaa7593a8dc0b1c6af796d891e80860e6bba501e4c38dd5c6b5a6f35 -a38ef0c7cd4ab7cce0e17fae913eec2572565070169cce8517c37b21699fe4d3 -58439dcec0066047253d42a74ba564d2fc7ccf34b3b4e77fbac09d950c3c134c -5671c64b9964c124d123a299d2070826fde61b7f637bf87739e7a0de70ef82af -c901821eabb31969a27596e9826dd506912d05918ddd2981d5fb153526683f83 -04bbb13678af6d8a65aaae58240688caf7a8419f7bacf078dae7495ab646fc40 -c9004cbabf4c76143e33fe49fed460a102129b9f6cdda0797e53df9b9db99890 -7dc89ecb49ee18cd7556b44b096c9337f6a5618b589c6d7c87ea0f292bb446fe -c901b120180e3b514e3e7e32e52028a30cfd6879068a68b7ef5db202f575a6f3 -52748c45a3509d747d672b446efd09b0dcab7b3f8808c011a0470eb5c9d8d632 -0f413186fdf227c7f9c45c403ef93db5fb63819de4ca368f1b9387dfb0f039e8 -2c47f56fa0d3073c901393803ae628eba7313821a01b07918efa4d901aca044e -90d0227813c537cdc2c906e44140bdcb8717e95b7597ad7c01b51b7dac732e65 -fa3870fe8865ae6dbc96b5a984e2e363c4b67a3a07fe4eb42044112ecfff74f4 -09329f03a55e1f57656f88a08e597bfccb97a2b0bc0c26db9aa5bc5f1d1bafa3 -65f32c6ae5de5f798233ed6878583d8335e8988021438e992be94f6b73608413 -b83693b45e539261664f851652bd9458e643bd60628d0acb48a0edd350749e13 -9e480bb10cfb50b4fa0e37348d2f5ebc3e3f3457128b9793ef1359076da9e92d -e3bbd59ccc0c0327867bd7895a19cb93fdcd6ef8d459ccabadb1e0bc6896b456 -b13cab755da348b349da1b485947a23d05e9bb5dfeb8300f8fef30d7f09d288f -681ee6e23d21f76f806440680e7913d323a264fd6d69d4be33527e050856f8d7 -20fcf33f81e5021271c2cefd7b1c6a2dc9e207140be0030fd866fb65e33cf5fb -8879dd70eed5e887537c45d136be8bb191bd9dc4cea400137903a12b66dcd359 -9b6c2e43306759110af0878c8f37c8daf847657c2bd68d5c3ca105b332d18d5e -03269eedc1ae92f4e45c79915981c1f32b5a39c46c358708460301ca4298bbb4 -5b91e0d45fd1de756c6885545bdf5bce1cd40bb0c92c481a629b0d8dafb6b895 -995c6777d9355af0b03720d3c7456ad60eaa5a80549bb54c0820e000eb30a3e6 -f81c1cdc55b70d902a432d13a233c63ae54f98718d6ddae3c6aabebc65760e59 -d87abb67a5171a4ec2b2377bb5a39f -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndResource -/F621_0 /AMYDOG+NimbusRomNo9L-ReguItal 1 1 -[ /.notdef/.notdef/fi/fl/.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/hyphen/period/slash - /zero/one/two/three/four/five/six/seven - /eight/nine/colon/semicolon/less/equal/greater/question - /at/A/B/C/D/E/F/G - /H/I/J/K/L/M/N/O - /P/Q/R/S/T/U/V/W - /X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore - /quoteleft/a/b/c/d/e/f/g - /h/i/j/k/l/m/n/o - /p/q/r/s/t/u/v/w - /x/y/z/braceleft/bar/braceright/asciitilde/.notdef - /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef - /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef - /.notdef/.notdef/.notdef/.notdef/.notdef/bullet/.notdef/.notdef - /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef - /.notdef/exclamdown/cent/sterling/fraction/yen/florin/section - /currency/copyright/quotedblleft/guillemotleft/guilsinglleft/guilsinglright/fi/fl - /.notdef/endash/dagger/daggerdbl/periodcentered/.notdef/paragraph/bullet - /quotesinglbase/quotedblbase/quotedblright/guillemotright/ellipsis/perthousand/.notdef/questiondown - /.notdef/grave/acute/circumflex/tilde/macron/breve/dotaccent - /dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut/ogonek/caron - /emdash/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef - /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef - /.notdef/AE/.notdef/ordfeminine/.notdef/.notdef/.notdef/.notdef - /Lslash/Oslash/OE/ordmasculine/.notdef/.notdef/.notdef/.notdef - /.notdef/ae/.notdef/.notdef/.notdef/dotlessi/.notdef/.notdef - /lslash/oslash/oe/germandbls/.notdef/.notdef/.notdef/.notdef] -pdfMakeFont -612 792 false pdfSetup -%%EndSetup -%%Page: 1 1 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -117.435 701.916 Td -/F116_0 24.7902 Tf -(bzip2) 63.3638 Tj --278 TJm -(and) 44.077 Tj --278 TJm -(libbzip2,) 99.1856 Tj --278 TJm -(ver) 37.2101 Tj -15 TJm -(sion) 50.9687 Tj --278 TJm -(1.0.6) 55.1334 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -90.493 661.631 Td -/F116_0 20.6585 Tf -(A) 14.9154 Tj --278 TJm -(pr) 20.6585 Tj -20 TJm -(ogram) 63.1324 Tj --278 TJm -(and) 36.7308 Tj --278 TJm -(librar) 51.6669 Tj --10 TJm -(y) 11.4861 Tj --278 TJm -(f) 6.8793 Tj -20 TJm -(or) 20.6585 Tj --278 TJm -(data) 42.4739 Tj --278 TJm -(compression) 128.5785 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -207.676 503.285 Td -/F116_0 11.9552 Tf -(J) 6.6471 Tj -20 TJm -(ulian) 27.9034 Tj --278 TJm -(Se) 14.6212 Tj -15 TJm -(war) 20.5988 Tj -20 TJm -(d,) 10.6282 Tj --278 TJm -(http://www) 61.103 Tj -40 TJm -(.bzip.or) 42.5127 Tj -15 TJm -(g) 7.3046 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 2 2 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -72 709.534 Td -/F116_0 14.3462 Tf -(bzip2) 36.6689 Tj --489 TJm -(and) 25.5075 Tj --488 TJm -(libbzip2,) 57.3991 Tj --542 TJm -(ver) 21.5336 Tj -15 TJm -(sion) 29.4958 Tj --488 TJm -(1.0.6:) 36.6832 Tj --766 TJm -(A) 10.358 Tj --488 TJm -(pr) 14.3462 Tj -20 TJm -(ogram) 43.842 Tj --489 TJm -(and) 25.5075 Tj --489 TJm -(librar) 35.8798 Tj --10 TJm -(y) 7.9765 Tj --488 TJm -(f) 4.7773 Tj -20 TJm -(or) 14.3462 Tj --489 TJm -(data) 29.4958 Tj -72 692.319 Td -(compression) 89.2907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 680.364 Td -/F122_0 9.9626 Tf -(by) 9.9626 Tj --250 TJm -(Julian) 23.8007 Tj --250 TJm -(Se) 9.9626 Tj -25 TJm -(w) 7.193 Tj -10 TJm -(ard) 12.7222 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 663.427 Td -(V) 7.193 Tj -111 TJm -(ersion) 24.3486 Tj --250 TJm -(1.0.6) 19.9252 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(6) 4.9813 Tj --250 TJm -(September) 42.61 Tj --250 TJm -(2010) 19.9252 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 651.472 Td -(Cop) 16.6077 Tj -10 TJm -(yright) 23.8007 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --250 TJm -(\251) 7.5716 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --250 TJm -(1996-2010) 43.1679 Tj --250 TJm -(Julian) 23.8007 Tj --250 TJm -(Se) 9.9626 Tj -25 TJm -(w) 7.193 Tj -10 TJm -(ard) 12.7222 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 633.938 Td -/F122_0 7.9701 Tf -(This) 14.1708 Tj --250 TJm -(program,) 28.9952 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -119.151 633.938 Td -/F124_0 7.9701 Tf -(bzip2) 23.9103 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -143.061 633.938 Td -/F122_0 7.9701 Tf -(,) 1.9925 Tj --250 TJm -(the) 9.7395 Tj --250 TJm -(associated) 32.7571 Tj --250 TJm -(library) 21.2483 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -216.768 633.938 Td -/F124_0 7.9701 Tf -(libbzip2) 38.2565 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -255.025 633.938 Td -/F122_0 7.9701 Tf -(,) 1.9925 Tj --250 TJm -(and) 11.5088 Tj --250 TJm -(all) 7.9701 Tj --250 TJm -(documentation,) 49.3668 Tj --250 TJm -(are) 9.7315 Tj --250 TJm -(cop) 11.5088 Tj -10 TJm -(yright) 19.0406 Tj --250 TJm -(\251) 6.0573 Tj --250 TJm -(1996-2010) 34.5344 Tj --250 TJm -(Julian) 19.0406 Tj --250 TJm -(Se) 7.9701 Tj -25 TJm -(w) 5.7544 Tj -10 TJm -(ard.) 12.1703 Tj --310 TJm -(All) 10.1858 Tj --250 TJm -(rights) 18.1559 Tj --250 TJm -(reserv) 19.471 Tj -15 TJm -(ed.) 9.5163 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 616.404 Td -(Redistrib) 29.2264 Tj -20 TJm -(ution) 16.3865 Tj --250 TJm -(and) 11.5088 Tj --250 TJm -(use) 10.6241 Tj --250 TJm -(in) 6.2007 Tj --250 TJm -(source) 20.802 Tj --250 TJm -(and) 11.5088 Tj --250 TJm -(binary) 20.3636 Tj --250 TJm -(forms,) 20.5868 Tj --250 TJm -(with) 14.1708 Tj --250 TJm -(or) 6.6391 Tj --250 TJm -(without) 24.3566 Tj --250 TJm -(modi\002cation,) 42.2894 Tj --250 TJm -(are) 9.7315 Tj --250 TJm -(permitted) 30.5494 Tj --250 TJm -(pro) 10.6241 Tj -15 TJm -(vided) 17.7096 Tj --250 TJm -(that) 11.9552 Tj --250 TJm -(the) 9.7395 Tj --250 TJm -(follo) 15.0555 Tj -25 TJm -(wing) 15.9402 Tj --250 TJm -(conditions) 33.2114 Tj --250 TJm -(are) 9.7315 Tj --250 TJm -(met:) 14.1708 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -73.993 590.899 Td -(\225) 2.7895 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --450 TJm -(Redistrib) 29.2264 Tj -20 TJm -(utions) 19.4869 Tj --250 TJm -(of) 6.6391 Tj --250 TJm -(source) 20.802 Tj --250 TJm -(code) 15.0475 Tj --250 TJm -(must) 15.5018 Tj --250 TJm -(retain) 18.1479 Tj --250 TJm -(the) 9.7395 Tj --250 TJm -(abo) 11.5088 Tj -15 TJm -(v) 3.9851 Tj -15 TJm -(e) 3.5387 Tj --250 TJm -(cop) 11.5088 Tj -10 TJm -(yright) 19.0406 Tj --250 TJm -(notice,) 21.4714 Tj --250 TJm -(this) 11.5168 Tj --250 TJm -(list) 9.7474 Tj --250 TJm -(of) 6.6391 Tj --250 TJm -(conditions) 33.2114 Tj --250 TJm -(and) 11.5088 Tj --250 TJm -(the) 9.7395 Tj --250 TJm -(follo) 15.0555 Tj -25 TJm -(wing) 15.9402 Tj --250 TJm -(disclaimer) 33.2034 Tj -55 TJm -(.) 1.9925 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -73.993 573.365 Td -(\225) 2.7895 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --450 TJm -(The) 12.3935 Tj --285 TJm -(origin) 19.0406 Tj --284 TJm -(of) 6.6391 Tj --285 TJm -(this) 11.5168 Tj --285 TJm -(softw) 17.7096 Tj -10 TJm -(are) 9.7315 Tj --284 TJm -(must) 15.5018 Tj --285 TJm -(not) 10.1858 Tj --285 TJm -(be) 7.5238 Tj --285 TJm -(misrepresente) 44.2659 Tj -1 TJm -(d;) 6.2007 Tj --303 TJm -(you) 11.9552 Tj --284 TJm -(must) 15.5018 Tj --285 TJm -(not) 10.1858 Tj --285 TJm -(claim) 17.7096 Tj --284 TJm -(that) 11.9552 Tj --285 TJm -(you) 11.9552 Tj --285 TJm -(wrote) 18.1479 Tj --284 TJm -(the) 9.7395 Tj --285 TJm -(original) 24.795 Tj --285 TJm -(softw) 17.7096 Tj -10 TJm -(are.) 11.724 Tj --828 TJm -(If) 5.3081 Tj --285 TJm -(you) 11.9552 Tj --285 TJm -(use) 10.6241 Tj --284 TJm -(this) 11.5168 Tj --285 TJm -(softw) 17.7096 Tj -10 TJm -(are) 9.7315 Tj --285 TJm -(in) 6.2007 Tj --284 TJm -(a) 3.5387 Tj -79.97 563.801 Td -(product,) 26.3412 Tj --250 TJm -(an) 7.5238 Tj --250 TJm -(ackno) 19.0326 Tj -25 TJm -(wledgment) 35.4191 Tj --250 TJm -(in) 6.2007 Tj --250 TJm -(the) 9.7395 Tj --250 TJm -(product) 24.3487 Tj --250 TJm -(documentation) 47.3743 Tj --250 TJm -(w) 5.7544 Tj -10 TJm -(ould) 14.1708 Tj --250 TJm -(be) 7.5238 Tj --250 TJm -(appreciated) 36.7342 Tj --250 TJm -(b) 3.9851 Tj -20 TJm -(ut) 6.2007 Tj --250 TJm -(is) 5.3161 Tj --250 TJm -(not) 10.1858 Tj --250 TJm -(required.) 28.5489 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -73.993 546.267 Td -(\225) 2.7895 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --450 TJm -(Altered) 23.9023 Tj --250 TJm -(source) 20.802 Tj --250 TJm -(v) 3.9851 Tj -15 TJm -(ersions) 22.5793 Tj --250 TJm -(must) 15.5018 Tj --250 TJm -(be) 7.5238 Tj --250 TJm -(plainly) 22.1409 Tj --250 TJm -(mark) 16.3786 Tj -10 TJm -(ed) 7.5238 Tj --250 TJm -(as) 6.6391 Tj --250 TJm -(such,) 16.6017 Tj --250 TJm -(and) 11.5088 Tj --250 TJm -(must) 15.5018 Tj --250 TJm -(not) 10.1858 Tj --250 TJm -(be) 7.5238 Tj --250 TJm -(misrepresented) 48.251 Tj --250 TJm -(as) 6.6391 Tj --250 TJm -(being) 17.7096 Tj --250 TJm -(the) 9.7395 Tj --250 TJm -(original) 24.795 Tj --250 TJm -(softw) 17.7096 Tj -10 TJm -(are.) 11.724 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -73.993 528.733 Td -(\225) 2.7895 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --450 TJm -(The) 12.3935 Tj --250 TJm -(name) 17.2632 Tj --250 TJm -(of) 6.6391 Tj --250 TJm -(the) 9.7395 Tj --250 TJm -(author) 20.3636 Tj --250 TJm -(may) 13.7245 Tj --250 TJm -(not) 10.1858 Tj --250 TJm -(be) 7.5238 Tj --250 TJm -(used) 14.6092 Tj --250 TJm -(to) 6.2007 Tj --250 TJm -(endorse) 24.787 Tj --250 TJm -(or) 6.6391 Tj --250 TJm -(promote) 26.5643 Tj --250 TJm -(products) 27.449 Tj --250 TJm -(deri) 12.3935 Tj -25 TJm -(v) 3.9851 Tj -15 TJm -(ed) 7.5238 Tj --250 TJm -(from) 15.4939 Tj --250 TJm -(this) 11.5168 Tj --250 TJm -(softw) 17.7096 Tj -10 TJm -(are) 9.7315 Tj --250 TJm -(without) 24.3566 Tj --250 TJm -(speci\002c) 24.3487 Tj --250 TJm -(prior) 15.4939 Tj --250 TJm -(written) 22.5793 Tj --250 TJm -(permission.) 36.9733 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 511.198 Td -(THIS) 17.7096 Tj --401 TJm -(SOFTW) 27.0107 Tj -120 TJm -(ARE) 15.9402 Tj --401 TJm -(IS) 7.0854 Tj --400 TJm -(PR) 9.7474 Tj -40 TJm -(O) 5.7544 Tj -50 TJm -(VIDED) 24.787 Tj --401 TJm -(BY) 11.0705 Tj --401 TJm -(THE) 15.4939 Tj --401 TJm -(A) 5.7544 Tj -55 TJm -(UTHOR) 27.449 Tj --401 TJm -("AS) 13.4376 Tj --401 TJm -(IS") 10.3372 Tj --401 TJm -(AND) 17.2632 Tj --400 TJm -(ANY) 17.2632 Tj --401 TJm -(EXPRESS) 34.1041 Tj --401 TJm -(OR) 11.0705 Tj --401 TJm -(IMPLIED) 32.3188 Tj --401 TJm -(W) 7.5238 Tj -120 TJm -(ARRANTIES,) 46.7128 Tj --401 TJm -(INCLUDING,) 46.2585 Tj --401 TJm -(B) 5.3161 Tj -11 TJm -(UT) 10.6241 Tj -72 501.634 Td -(NO) 11.5088 Tj -40 TJm -(T) 4.8697 Tj --304 TJm -(LIMITED) 32.7571 Tj --304 TJm -(T) 4.8697 Tj -18 TJm -(O,) 7.7469 Tj --305 TJm -(THE) 15.4939 Tj --304 TJm -(IMPLIED) 32.3188 Tj --304 TJm -(W) 7.5238 Tj -120 TJm -(ARRANTIES) 44.7202 Tj --304 TJm -(OF) 10.1858 Tj --304 TJm -(MERCHANT) 44.7202 Tj -93 TJm -(ABILITY) 31.8724 Tj --304 TJm -(AND) 17.2632 Tj --305 TJm -(FITNESS) 31.442 Tj --304 TJm -(FOR) 15.5018 Tj --304 TJm -(A) 5.7544 Tj --304 TJm -(P) 4.4314 Tj -92 TJm -(AR) 11.0705 Tj -60 TJm -(TICULAR) 34.5344 Tj --304 TJm -(PURPOSE) 34.9887 Tj --304 TJm -(ARE) 15.9402 Tj --305 TJm -(DIS) 12.8398 Tj -1 TJm -(-) 2.654 Tj -72 492.07 Td -(CLAIMED.) 38.2963 Tj --576 TJm -(IN) 8.4085 Tj --287 TJm -(NO) 11.5088 Tj --288 TJm -(EVENT) 26.118 Tj --288 TJm -(SHALL) 25.6797 Tj --288 TJm -(THE) 15.4939 Tj --287 TJm -(A) 5.7544 Tj -55 TJm -(UTHOR) 27.449 Tj --288 TJm -(BE) 10.1858 Tj --288 TJm -(LIABLE) 28.3337 Tj --288 TJm -(FOR) 15.5018 Tj --288 TJm -(ANY) 17.2632 Tj --287 TJm -(DIRECT) 28.78 Tj -74 TJm -(,) 1.9925 Tj --288 TJm -(INDIRECT) 37.1885 Tj -74 TJm -(,) 1.9925 Tj --288 TJm -(INCIDENT) 37.6268 Tj -93 TJm -(AL,) 12.6167 Tj --288 TJm -(SPECIAL,) 34.3193 Tj --288 TJm -(EXEMPLAR) 42.9509 Tj -65 TJm -(Y) 5.7544 Tj -129 TJm -(,) 1.9925 Tj -72 482.506 Td -(OR) 11.0705 Tj --299 TJm -(CONSEQ) 31.8804 Tj -10 TJm -(UENTIAL) 34.5265 Tj --300 TJm -(D) 5.7544 Tj -40 TJm -(AMA) 18.5942 Tj -40 TJm -(GES) 15.0555 Tj --299 TJm -(\(INCLUDING,) 48.9125 Tj --299 TJm -(B) 5.3161 Tj -10 TJm -(UT) 10.6241 Tj --299 TJm -(NO) 11.5088 Tj -40 TJm -(T) 4.8697 Tj --300 TJm -(LIMITED) 32.7571 Tj --299 TJm -(T) 4.8697 Tj -18 TJm -(O,) 7.7469 Tj --299 TJm -(PR) 9.7474 Tj -40 TJm -(OCUREMENT) 49.59 Tj --299 TJm -(OF) 10.1858 Tj --300 TJm -(SUBSTITUTE) 47.8206 Tj --299 TJm -(GOODS) 27.449 Tj --299 TJm -(OR) 11.0705 Tj --300 TJm -(SER) 14.6172 Tj -80 TJm -(VICES) 23.0256 Tj -1 TJm -(;) 2.2157 Tj -72 472.942 Td -(LOSS) 19.4869 Tj --360 TJm -(OF) 10.1858 Tj --360 TJm -(USE,) 17.048 Tj --360 TJm -(D) 5.7544 Tj -40 TJm -(A) 5.7544 Tj -111 TJm -(T) 4.8697 Tj -93 TJm -(A,) 7.7469 Tj --360 TJm -(OR) 11.0705 Tj --359 TJm -(PR) 9.7474 Tj -40 TJm -(OFITS;) 24.3566 Tj --360 TJm -(OR) 11.0705 Tj --360 TJm -(B) 5.3161 Tj -10 TJm -(USINESS) 32.3267 Tj --360 TJm -(INTERR) 28.78 Tj -40 TJm -(UPTION\)) 31.8724 Tj --360 TJm -(HO) 11.5088 Tj -35 TJm -(WEVER) 28.3337 Tj --360 TJm -(CA) 11.0705 Tj -55 TJm -(USED) 20.8099 Tj --359 TJm -(AND) 17.2632 Tj --360 TJm -(ON) 11.5088 Tj --360 TJm -(ANY) 17.2632 Tj --360 TJm -(THEOR) 26.5643 Tj -65 TJm -(Y) 5.7544 Tj --360 TJm -(OF) 10.1858 Tj --360 TJm -(LIABI) 21.2483 Tj -1 TJm -(LITY) 18.1479 Tj -128 TJm -(,) 1.9925 Tj -72 463.378 Td -(WHETHER) 38.9578 Tj --247 TJm -(IN) 8.4085 Tj --247 TJm -(CONTRA) 32.7651 Tj -40 TJm -(CT) 10.1858 Tj -74 TJm -(,) 1.9925 Tj --247 TJm -(STRICT) 27.457 Tj --247 TJm -(LIABILITY) 39.3962 Tj -129 TJm -(,) 1.9925 Tj --247 TJm -(O) 5.7544 Tj -1 TJm -(R) 5.3161 Tj --247 TJm -(T) 4.8697 Tj -18 TJm -(OR) 11.0705 Tj -60 TJm -(T) 4.8697 Tj --247 TJm -(\(INCLUDING) 46.92 Tj --247 TJm -(NEGLIGENCE) 50.4667 Tj --247 TJm -(OR) 11.0705 Tj --247 TJm -(O) 5.7544 Tj -40 TJm -(THER) 20.8099 Tj -55 TJm -(WISE\)) 22.133 Tj --247 TJm -(ARISING) 32.3188 Tj --247 TJm -(IN) 8.4085 Tj --247 TJm -(ANY) 17.2632 Tj --247 TJm -(W) 7.5238 Tj -120 TJm -(A) 5.7544 Tj -105 TJm -(Y) 5.7544 Tj --247 TJm -(OUT) 16.3786 Tj -72 453.814 Td -(OF) 10.1858 Tj --250 TJm -(THE) 15.4939 Tj --250 TJm -(USE) 15.0555 Tj --250 TJm -(OF) 10.1858 Tj --250 TJm -(THIS) 17.7096 Tj --250 TJm -(SOFTW) 27.0107 Tj -120 TJm -(ARE,) 17.9327 Tj --250 TJm -(EVEN) 21.2483 Tj --250 TJm -(IF) 7.0854 Tj --250 TJm -(AD) 11.5088 Tj -40 TJm -(VISED) 23.464 Tj --250 TJm -(OF) 10.1858 Tj --250 TJm -(THE) 15.4939 Tj --250 TJm -(POSSIBILITY) 47.8206 Tj --250 TJm -(OF) 10.1858 Tj --250 TJm -(SUCH) 21.2563 Tj --250 TJm -(D) 5.7544 Tj -40 TJm -(AMA) 18.5942 Tj -40 TJm -(GE.) 12.6167 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 436.279 Td -(P) 4.4314 Tj -92 TJm -(A) 5.7544 Tj -111 TJm -(TENTS:) 27.0107 Tj --296 TJm -(T) 4.8697 Tj -80 TJm -(o) 3.9851 Tj --295 TJm -(the) 9.7395 Tj --296 TJm -(best) 12.8398 Tj --295 TJm -(of) 6.6391 Tj --296 TJm -(my) 10.1858 Tj --295 TJm -(kno) 11.9552 Tj -25 TJm -(wledge,) 25.0102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -208.544 436.279 Td -/F124_0 7.9701 Tf -(bzip2) 23.9103 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -234.81 436.279 Td -/F122_0 7.9701 Tf -(and) 11.5088 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -248.674 436.279 Td -/F124_0 7.9701 Tf -(libbzip2) 38.2565 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -289.286 436.279 Td -/F122_0 7.9701 Tf -(do) 7.9701 Tj --296 TJm -(not) 10.1858 Tj --295 TJm -(use) 10.6241 Tj --296 TJm -(an) 7.5238 Tj -15 TJm -(y) 3.9851 Tj --295 TJm -(patented) 27.0027 Tj --296 TJm -(algorithms.) 36.0886 Tj --893 TJm -(Ho) 9.7395 Tj -25 TJm -(we) 9.2931 Tj -25 TJm -(v) 3.9851 Tj -15 TJm -(er) 6.1928 Tj -40 TJm -(,) 1.9925 Tj --307 TJm -(I) 2.654 Tj --295 TJm -(do) 7.9701 Tj --296 TJm -(not) 10.1858 Tj --295 TJm -(ha) 7.5238 Tj -20 TJm -(v) 3.9851 Tj -15 TJm -(e) 3.5387 Tj --296 TJm -(the) 9.7395 Tj --295 TJm -(resources) 30.0951 Tj --296 TJm -(to) 6.2007 Tj -72 426.715 Td -(carry) 16.3706 Tj --250 TJm -(out) 10.1858 Tj --250 TJm -(a) 3.5387 Tj --250 TJm -(patent) 19.4789 Tj --250 TJm -(search.) 22.3482 Tj --620 TJm -(Therefore) 31.4181 Tj --250 TJm -(I) 2.654 Tj --250 TJm -(cannot) 21.2483 Tj --250 TJm -(gi) 6.2007 Tj -25 TJm -(v) 3.9851 Tj -15 TJm -(e) 3.5387 Tj --250 TJm -(an) 7.5238 Tj -15 TJm -(y) 3.9851 Tj --250 TJm -(guarantee) 30.9798 Tj --250 TJm -(of) 6.6391 Tj --250 TJm -(the) 9.7395 Tj --250 TJm -(abo) 11.5088 Tj -15 TJm -(v) 3.9851 Tj -15 TJm -(e) 3.5387 Tj --250 TJm -(statement.) 32.5419 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 3 3 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -72 707.441 Td -/F116_0 17.2154 Tf -(T) 10.5186 Tj -80 TJm -(ab) 20.0904 Tj -10 TJm -(le) 14.3576 Tj --278 TJm -(of) 16.2513 Tj --278 TJm -(Contents) 74.5943 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 686.878 Td -/F122_0 9.9626 Tf -(1.) 7.472 Tj --310 TJm -(Introduction) 49.2551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -145.733 686.878 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -511.108 686.878 Td -/F122_0 9.9626 Tf -(1) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 674.923 Td -(2.) 7.472 Tj --310 TJm -(Ho) 12.1743 Tj -25 TJm -(w) 7.193 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(use) 13.2801 Tj --250 TJm -(bzip2) 22.1369 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -167.054 674.923 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -511.108 674.923 Td -/F122_0 9.9626 Tf -(2) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 662.968 Td -(2.1.) 14.9439 Tj --310 TJm -(N) 7.193 Tj -35 TJm -(AME) 22.1369 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -132.691 662.968 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -511.108 662.968 Td -/F122_0 9.9626 Tf -(2) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 651.013 Td -(2.2.) 14.9439 Tj --310 TJm -(SYNOPSIS) 47.0534 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -150.582 651.013 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -511.108 651.013 Td -/F122_0 9.9626 Tf -(2) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 639.058 Td -(2.3.) 14.9439 Tj --310 TJm -(DESCRIPTION) 64.7569 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -168.29 639.058 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -511.108 639.058 Td -/F122_0 9.9626 Tf -(3) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 627.103 Td -(2.4.) 14.9439 Tj --310 TJm -(OPTIONS) 42.0621 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -145.873 627.103 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -511.108 627.103 Td -/F122_0 9.9626 Tf -(4) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 615.147 Td -(2.5.) 14.9439 Tj --310 TJm -(MEMOR) 37.6387 Tj -65 TJm -(Y) 7.193 Tj --250 TJm -(MAN) 23.2427 Tj -35 TJm -(A) 7.193 Tj -40 TJm -(GEMENT) 41.5042 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -221.412 615.147 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -511.108 615.147 Td -/F122_0 9.9626 Tf -(5) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 603.192 Td -(2.6.) 14.9439 Tj --310 TJm -(RECO) 26.5703 Tj -50 TJm -(VERING) 37.6287 Tj --250 TJm -(D) 7.193 Tj -40 TJm -(A) 7.193 Tj -111 TJm -(T) 6.0871 Tj -93 TJm -(A) 7.193 Tj --250 TJm -(FR) 12.1843 Tj -40 TJm -(OM) 16.0497 Tj --250 TJm -(D) 7.193 Tj -40 TJm -(AMA) 23.2427 Tj -40 TJm -(GED) 20.4731 Tj --250 TJm -(FILES) 26.5703 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -308.464 603.192 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -511.108 603.192 Td -/F122_0 9.9626 Tf -(6) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 591.237 Td -(2.7.) 14.9439 Tj --310 TJm -(PERFORMANCE) 73.6236 Tj --250 TJm -(NO) 14.386 Tj -40 TJm -(TES) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -211.958 591.237 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -511.108 591.237 Td -/F122_0 9.9626 Tf -(6) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 579.282 Td -(2.8.) 14.9439 Tj --310 TJm -(CA) 13.8381 Tj -135 TJm -(VEA) 20.4731 Tj -111 TJm -(TS) 11.6264 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -148.799 579.282 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -511.108 579.282 Td -/F122_0 9.9626 Tf -(7) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 567.327 Td -(2.9.) 14.9439 Tj --310 TJm -(A) 7.193 Tj -55 TJm -(UTHOR) 34.3112 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -145.32 567.327 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -511.108 567.327 Td -/F122_0 9.9626 Tf -(7) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 555.372 Td -(3.) 7.472 Tj --310 TJm -(Programming) 54.7943 Tj --250 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -160.049 555.372 Td -/F124_0 9.9626 Tf -(libbzip2) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -224.856 555.372 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -511.108 555.372 Td -/F122_0 9.9626 Tf -(8) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 543.416 Td -(3.1.) 14.9439 Tj --310 TJm -(T) 6.0871 Tj -80 TJm -(op-le) 20.4731 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(el) 7.193 Tj --250 TJm -(structure) 34.8591 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -179.997 543.416 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -511.108 543.416 Td -/F122_0 9.9626 Tf -(8) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 531.461 Td -(3.1.1.) 22.4159 Tj --310 TJm -(Lo) 11.0684 Tj -25 TJm -(w-le) 17.7035 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(el) 7.193 Tj --250 TJm -(summary) 37.0808 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -192.866 531.461 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -511.108 531.461 Td -/F122_0 9.9626 Tf -(9) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 519.506 Td -(3.1.2.) 22.4159 Tj --310 TJm -(High-le) 30.4357 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(el) 7.193 Tj --250 TJm -(summary) 37.0808 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -193.822 519.506 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -511.108 519.506 Td -/F122_0 9.9626 Tf -(9) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 507.551 Td -(3.1.3.) 22.4159 Tj --310 TJm -(Utility) 26.0223 Tj --250 TJm -(functions) 37.0808 Tj --250 TJm -(summary) 37.0808 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -216.582 507.551 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -511.108 507.551 Td -/F122_0 9.9626 Tf -(9) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 495.596 Td -(3.2.) 14.9439 Tj --310 TJm -(Error) 21.0211 Tj --250 TJm -(handling) 34.8691 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -162.611 495.596 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 495.596 Td -/F122_0 9.9626 Tf -(10) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 483.64 Td -(3.3.) 14.9439 Tj --310 TJm -(Lo) 11.0684 Tj -25 TJm -(w-le) 17.7035 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(el) 7.193 Tj --250 TJm -(interf) 21.579 Tj -10 TJm -(ace) 13.2702 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -181.045 483.64 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 483.64 Td -/F122_0 9.9626 Tf -(11) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 471.685 Td -(3.3.1.) 22.4159 Tj --310 TJm -(BZ2_bzCompressInit) 85.7879 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -197.762 471.685 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 471.685 Td -/F122_0 9.9626 Tf -(11) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 459.73 Td -(3.3.2.) 22.4159 Tj --310 TJm -(BZ2_bzCompress) 71.9499 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -184.201 459.73 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 459.73 Td -/F122_0 9.9626 Tf -(13) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 447.775 Td -(3.3.3.) 22.4159 Tj --310 TJm -(BZ2_bzCompressEnd) 87.9996 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -198.868 447.775 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 447.775 Td -/F122_0 9.9626 Tf -(16) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 435.82 Td -(3.3.4.) 22.4159 Tj --310 TJm -(BZ2_bzDecompressInit) 95.1827 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -206.887 435.82 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 435.82 Td -/F122_0 9.9626 Tf -(16) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 423.865 Td -(3.3.5.) 22.4159 Tj --310 TJm -(BZ2_bzDecompress) 81.3446 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -193.326 423.865 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 423.865 Td -/F122_0 9.9626 Tf -(17) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 411.909 Td -(3.3.6.) 22.4159 Tj --310 TJm -(BZ2_bzDecompressEnd) 97.3944 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -210.207 411.909 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 411.909 Td -/F122_0 9.9626 Tf -(18) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 399.954 Td -(3.4.) 14.9439 Tj --310 TJm -(High-le) 30.4357 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(el) 7.193 Tj --250 TJm -(interf) 21.579 Tj -10 TJm -(ace) 13.2702 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -184.216 399.954 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 399.954 Td -/F122_0 9.9626 Tf -(18) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 387.999 Td -(3.4.1.) 22.4159 Tj --310 TJm -(BZ2_bzReadOpen) 74.1516 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -185.302 387.999 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 387.999 Td -/F122_0 9.9626 Tf -(19) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 376.044 Td -(3.4.2.) 22.4159 Tj --310 TJm -(BZ2_bzRead) 52.5726 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -163.443 376.044 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 376.044 Td -/F122_0 9.9626 Tf -(20) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 364.089 Td -(3.4.3.) 22.4159 Tj --310 TJm -(BZ2_bzReadGetUnused) 97.3944 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -210.207 364.089 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 364.089 Td -/F122_0 9.9626 Tf -(21) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 352.134 Td -(3.4.4.) 22.4159 Tj --310 TJm -(BZ2_bzReadClose) 75.2674 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -188.074 352.134 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 352.134 Td -/F122_0 9.9626 Tf -(22) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 340.178 Td -(3.4.5.) 22.4159 Tj --310 TJm -(BZ2_bzWriteOpen) 76.3633 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -188.622 340.178 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 340.178 Td -/F122_0 9.9626 Tf -(22) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 328.223 Td -(3.4.6.) 22.4159 Tj --310 TJm -(BZ2_bzWrite) 54.7843 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -166.763 328.223 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 328.223 Td -/F122_0 9.9626 Tf -(23) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 316.268 Td -(3.4.7.) 22.4159 Tj --310 TJm -(BZ2_bzWriteClose) 77.4791 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -189.179 316.268 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 316.268 Td -/F122_0 9.9626 Tf -(23) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 304.313 Td -(3.4.8.) 22.4159 Tj --310 TJm -(Handling) 37.0808 Tj --250 TJm -(embedded) 40.9463 Tj --250 TJm -(compressed) 47.0334 Tj --250 TJm -(data) 16.5977 Tj --250 TJm -(streams) 30.4357 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -294.601 304.313 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 304.313 Td -/F122_0 9.9626 Tf -(24) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 292.358 Td -(3.4.9.) 22.4159 Tj --310 TJm -(Standard) 35.417 Tj --250 TJm -(\002le-reading/writing) 77.4791 Tj --250 TJm -(code) 18.8094 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -247.564 292.358 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 292.358 Td -/F122_0 9.9626 Tf -(25) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 280.403 Td -(3.5.) 14.9439 Tj --310 TJm -(Utility) 26.0223 Tj --250 TJm -(functions) 37.0808 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -170.645 280.403 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 280.403 Td -/F122_0 9.9626 Tf -(26) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 268.447 Td -(3.5.1.) 22.4159 Tj --310 TJm -(BZ2_bzBuf) 47.0434 Tj -25 TJm -(fT) 9.4047 Tj -80 TJm -(oBuf) 19.9252 Tj -25 TJm -(fCompress) 43.1679 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -229.488 268.447 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 268.447 Td -/F122_0 9.9626 Tf -(26) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 256.492 Td -(3.5.2.) 22.4159 Tj --310 TJm -(BZ2_bzBuf) 47.0434 Tj -25 TJm -(fT) 9.4047 Tj -80 TJm -(oBuf) 19.9252 Tj -25 TJm -(fDecompress) 52.5627 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -238.613 256.492 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 256.492 Td -/F122_0 9.9626 Tf -(27) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 244.537 Td -(3.6.) 14.9439 Tj --310 TJm -(zlib) 14.9439 Tj --250 TJm -(compatibility) 53.1405 Tj --250 TJm -(functions) 37.0808 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -215.06 244.537 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 244.537 Td -/F122_0 9.9626 Tf -(28) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 232.582 Td -(3.7.) 14.9439 Tj --310 TJm -(Using) 23.8007 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(library) 26.5603 Tj --250 TJm -(in) 7.7509 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(stdio-free) 38.1767 Tj --250 TJm -(en) 9.4047 Tj -40 TJm -(vironment) 40.9562 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -282.092 232.582 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 232.582 Td -/F122_0 9.9626 Tf -(28) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 220.627 Td -(3.7.1.) 22.4159 Tj --310 TJm -(Getting) 29.8878 Tj --250 TJm -(rid) 11.0684 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(stdio) 19.3773 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -188.492 220.627 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 220.627 Td -/F122_0 9.9626 Tf -(29) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 208.671 Td -(3.7.2.) 22.4159 Tj --310 TJm -(Critical) 29.8878 Tj --250 TJm -(error) 19.3573 Tj --250 TJm -(handling) 34.8691 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -201.629 208.671 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 208.671 Td -/F122_0 9.9626 Tf -(29) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 196.716 Td -(3.8.) 14.9439 Tj --310 TJm -(Making) 30.9936 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(W) 9.4047 Tj -40 TJm -(indo) 17.7135 Tj -25 TJm -(ws) 11.0684 Tj --250 TJm -(DLL) 19.3673 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -203.243 196.716 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 196.716 Td -/F122_0 9.9626 Tf -(29) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 184.761 Td -(4.) 7.472 Tj --310 TJm -(Miscellanea) 48.1393 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -144.898 184.761 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 184.761 Td -/F122_0 9.9626 Tf -(31) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 172.806 Td -(4.1.) 14.9439 Tj --310 TJm -(Limitations) 45.9475 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(compressed) 47.0334 Tj --250 TJm -(\002le) 12.7322 Tj --250 TJm -(format) 26.5603 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -269.154 172.806 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 172.806 Td -/F122_0 9.9626 Tf -(31) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 160.851 Td -(4.2.) 14.9439 Tj --310 TJm -(Portability) 42.0721 Tj --250 TJm -(issues) 23.8007 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -172.03 160.851 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 160.851 Td -/F122_0 9.9626 Tf -(32) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 148.896 Td -(4.3.) 14.9439 Tj --310 TJm -(Reporting) 39.8504 Tj --250 TJm -(b) 4.9813 Tj -20 TJm -(ugs) 13.8381 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -166.115 148.896 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 148.896 Td -/F122_0 9.9626 Tf -(32) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 136.94 Td -(4.4.) 14.9439 Tj --310 TJm -(Did) 14.9439 Tj --250 TJm -(you) 14.9439 Tj --250 TJm -(get) 12.1743 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(right) 18.8194 Tj --250 TJm -(package?) 37.0609 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -229.109 136.94 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 136.94 Td -/F122_0 9.9626 Tf -(33) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 124.985 Td -(4.5.) 14.9439 Tj --310 TJm -(Further) 29.3299 Tj --250 TJm -(Reading) 33.2053 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -170.361 124.985 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 124.985 Td -/F122_0 9.9626 Tf -(34) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -536.068 50.852 Td -(iii) 8.3088 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 1 4 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -72 701.916 Td -/F116_0 24.7902 Tf -(1.) 20.675 Tj --278 TJm -(Intr) 39.937 Tj -20 TJm -(oduction) 104.6642 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 679.998 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -104.507 679.998 Td -/F122_0 9.9626 Tf -(compresses) 45.9276 Tj --263 TJm -(\002les) 16.6077 Tj --263 TJm -(using) 21.589 Tj --263 TJm -(the) 12.1743 Tj --262 TJm -(Burro) 23.2427 Tj -25 TJm -(ws-Wheeler) 48.1293 Tj --263 TJm -(block-sorting) 53.1305 Tj --263 TJm -(te) 7.193 Tj -15 TJm -(xt) 7.7509 Tj --263 TJm -(compression) 50.3609 Tj --263 TJm -(algorithm,) 41.2352 Tj --266 TJm -(and) 14.386 Tj --263 TJm -(Huf) 15.4918 Tj -25 TJm -(fman) 20.4731 Tj --263 TJm -(coding.) 29.6088 Tj -72 668.043 Td -(Compression) 52.5826 Tj --203 TJm -(is) 6.6451 Tj --204 TJm -(generally) 37.0708 Tj --203 TJm -(considerably) 50.9089 Tj --203 TJm -(better) 22.6848 Tj --204 TJm -(t) 2.7696 Tj -1 TJm -(han) 14.386 Tj --204 TJm -(that) 14.9439 Tj --203 TJm -(achie) 21.0211 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(ed) 9.4047 Tj --203 TJm -(by) 9.9626 Tj --204 TJm -(more) 20.4731 Tj --203 TJm -(con) 14.386 Tj -40 TJm -(v) 4.9813 Tj -15 TJm -(entional) 32.0995 Tj --203 TJm -(LZ77/LZ78-based) 73.0458 Tj --204 TJm -(compressors,) 52.2937 Tj -72 656.087 Td -(and) 14.386 Tj --250 TJm -(approaches) 44.8118 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(performance) 50.341 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(PPM) 19.9352 Tj --250 TJm -(f) 3.3175 Tj -10 TJm -(amily) 22.6948 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(statistical) 37.6387 Tj --250 TJm -(compressors.) 52.2937 Tj -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 634.17 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -105.074 634.17 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --320 TJm -(b) 4.9813 Tj -20 TJm -(uilt) 13.2901 Tj --319 TJm -(on) 9.9626 Tj --320 TJm -(top) 12.7322 Tj --320 TJm -(of) 8.2988 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -176.712 634.17 Td -/F124_0 9.9626 Tf -(libbzip2) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -224.533 634.17 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --337 TJm -(a) 4.4234 Tj --320 TJm -(\003e) 9.9626 Tj -15 TJm -(xible) 19.9252 Tj --320 TJm -(library) 26.5603 Tj --319 TJm -(for) 11.6164 Tj --320 TJm -(handling) 34.8691 Tj --320 TJm -(compressed) 47.0334 Tj --320 TJm -(data) 16.5977 Tj --319 TJm -(in) 7.7509 Tj --320 TJm -(the) 12.1743 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -449.816 634.17 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -482.889 634.17 Td -/F122_0 9.9626 Tf -(format.) 29.0509 Tj --1039 TJm -(This) 17.7135 Tj -72 622.214 Td -(manual) 29.3299 Tj --316 TJm -(describes) 37.0708 Tj --316 TJm -(both) 17.7135 Tj --317 TJm -(ho) 9.9626 Tj -25 TJm -(w) 7.193 Tj --316 TJm -(to) 7.7509 Tj --316 TJm -(use) 13.2801 Tj --316 TJm -(the) 12.1743 Tj --316 TJm -(program) 33.7533 Tj --316 TJm -(and) 14.386 Tj --317 TJm -(ho) 9.9626 Tj -25 TJm -(w) 7.193 Tj --316 TJm -(to) 7.7509 Tj --316 TJm -(w) 7.193 Tj -10 TJm -(ork) 13.2801 Tj --316 TJm -(with) 17.7135 Tj --316 TJm -(the) 12.1743 Tj --317 TJm -(library) 26.5603 Tj --316 TJm -(interf) 21.579 Tj -10 TJm -(ace.) 15.7608 Tj --1017 TJm -(Most) 20.4831 Tj --316 TJm -(of) 8.2988 Tj --316 TJm -(the) 12.1743 Tj --317 TJm -(manual) 29.3299 Tj --316 TJm -(is) 6.6451 Tj -72 610.259 Td -(de) 9.4047 Tj -25 TJm -(v) 4.9813 Tj -20 TJm -(oted) 17.1556 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(this) 14.396 Tj --250 TJm -(library) 26.5603 Tj -65 TJm -(,) 2.4907 Tj --250 TJm -(not) 12.7322 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(program,) 36.2439 Tj --250 TJm -(which) 24.3486 Tj --250 TJm -(is) 6.6451 Tj --250 TJm -(good) 19.9252 Tj --250 TJm -(ne) 9.4047 Tj -25 TJm -(ws) 11.0684 Tj --250 TJm -(if) 6.0871 Tj --250 TJm -(your) 18.2614 Tj --250 TJm -(interest) 29.3299 Tj --250 TJm -(is) 6.6451 Tj --250 TJm -(only) 17.7135 Tj --250 TJm -(in) 7.7509 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(program.) 36.2439 Tj -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -74.491 578.379 Td -(\225) 3.4869 Tj -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 1] sc -/DeviceRGB {} CS -[0 0 1] SC --450 TJm -(Ho) 12.1743 Tj -25 TJm -(w) 7.193 Tj --278 TJm -(to) 7.7509 Tj --278 TJm -(use) 13.2801 Tj --277 TJm -(bzip2) 22.1369 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 1] sc -/DeviceRGB {} CS -[0 0 1] SC -/DeviceRGB {} cs -[0 0 1] sc -/DeviceRGB {} CS -[0 0 1] SC --278 TJm -([2]) 11.6164 Tj -/DeviceRGB {} cs -[0 0 1] sc -/DeviceRGB {} CS -[0 0 1] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --278 TJm -(describes) 37.0708 Tj --278 TJm -(ho) 9.9626 Tj -25 TJm -(w) 7.193 Tj --278 TJm -(to) 7.7509 Tj --278 TJm -(use) 13.2801 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -256.282 578.379 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -286.17 578.379 Td -/F122_0 9.9626 Tf -(;) 2.7696 Tj --292 TJm -(this) 14.396 Tj --278 TJm -(is) 6.6451 Tj --277 TJm -(the) 12.1743 Tj --278 TJm -(only) 17.7135 Tj --278 TJm -(part) 15.4918 Tj --278 TJm -(you) 14.9439 Tj --278 TJm -(need) 18.8094 Tj --278 TJm -(to) 7.7509 Tj --277 TJm -(read) 17.1456 Tj --278 TJm -(if) 6.0871 Tj --278 TJm -(you) 14.9439 Tj --278 TJm -(just) 14.396 Tj --278 TJm -(w) 7.193 Tj -10 TJm -(ant) 12.1743 Tj --277 TJm -(to) 7.7509 Tj --278 TJm -(kno) 14.9439 Tj -25 TJm -(w) 7.193 Tj -81.963 566.424 Td -(ho) 9.9626 Tj -25 TJm -(w) 7.193 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(operate) 29.3199 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(program.) 36.2439 Tj -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -74.491 544.506 Td -(\225) 3.4869 Tj -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 1] sc -/DeviceRGB {} CS -[0 0 1] SC --450 TJm -(Programming) 54.7943 Tj --250 TJm -(with) 17.7135 Tj --250 TJm -(libbzip2) 32.6574 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 1] sc -/DeviceRGB {} CS -[0 0 1] SC -/DeviceRGB {} cs -[0 0 1] sc -/DeviceRGB {} CS -[0 0 1] SC --250 TJm -([8]) 11.6164 Tj -/DeviceRGB {} cs -[0 0 1] sc -/DeviceRGB {} CS -[0 0 1] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --250 TJm -(describes) 37.0708 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(programming) 54.2364 Tj --250 TJm -(interf) 21.579 Tj -10 TJm -(aces) 17.1456 Tj --250 TJm -(in) 7.7509 Tj --250 TJm -(detail,) 24.6275 Tj --250 TJm -(and) 14.386 Tj -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -74.491 522.588 Td -(\225) 3.4869 Tj -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 1] sc -/DeviceRGB {} CS -[0 0 1] SC --450 TJm -(Miscellanea) 48.1393 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 1] sc -/DeviceRGB {} CS -[0 0 1] SC -/DeviceRGB {} cs -[0 0 1] sc -/DeviceRGB {} CS -[0 0 1] SC --250 TJm -([31]) 16.5977 Tj -/DeviceRGB {} cs -[0 0 1] sc -/DeviceRGB {} CS -[0 0 1] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --250 TJm -(records) 29.3199 Tj --250 TJm -(some) 21.031 Tj --250 TJm -(miscellaneous) 56.4481 Tj --250 TJm -(notes) 21.031 Tj --250 TJm -(which) 24.3486 Tj --250 TJm -(I) 3.3175 Tj --250 TJm -(thought) 30.4457 Tj --250 TJm -(ought) 22.6948 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(be) 9.4047 Tj --250 TJm -(recorded) 34.8492 Tj --250 TJm -(some) 21.031 Tj -25 TJm -(where.) 26.8293 Tj -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -539.395 50.852 Td -(1) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 2 5 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -72 701.916 Td -/F116_0 24.7902 Tf -(2.) 20.675 Tj --278 TJm -(Ho) 33.0453 Tj -15 TJm -(w) 19.2868 Tj --278 TJm -(to) 23.4019 Tj --278 TJm -(use) 42.7135 Tj --278 TJm -(bzip2) 63.3638 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 656.35 Td -/F116_0 17.2154 Tf -(T) 10.5186 Tj -80 TJm -(ab) 20.0904 Tj -10 TJm -(le) 14.3576 Tj --278 TJm -(of) 16.2513 Tj --278 TJm -(Contents) 74.5943 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 635.788 Td -/F122_0 9.9626 Tf -(2.1.) 14.9439 Tj --310 TJm -(N) 7.193 Tj -35 TJm -(AME) 22.1369 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -132.691 635.788 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -511.108 635.788 Td -/F122_0 9.9626 Tf -(2) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 623.832 Td -(2.2.) 14.9439 Tj --310 TJm -(SYNOPSIS) 47.0534 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -150.582 623.832 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -511.108 623.832 Td -/F122_0 9.9626 Tf -(2) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 611.877 Td -(2.3.) 14.9439 Tj --310 TJm -(DESCRIPTION) 64.7569 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -168.29 611.877 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -511.108 611.877 Td -/F122_0 9.9626 Tf -(3) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 599.922 Td -(2.4.) 14.9439 Tj --310 TJm -(OPTIONS) 42.0621 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -145.873 599.922 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -511.108 599.922 Td -/F122_0 9.9626 Tf -(4) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 587.967 Td -(2.5.) 14.9439 Tj --310 TJm -(MEMOR) 37.6387 Tj -65 TJm -(Y) 7.193 Tj --250 TJm -(MAN) 23.2427 Tj -35 TJm -(A) 7.193 Tj -40 TJm -(GEMENT) 41.5042 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -221.412 587.967 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -511.108 587.967 Td -/F122_0 9.9626 Tf -(5) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 576.012 Td -(2.6.) 14.9439 Tj --310 TJm -(RECO) 26.5703 Tj -50 TJm -(VERING) 37.6287 Tj --250 TJm -(D) 7.193 Tj -40 TJm -(A) 7.193 Tj -111 TJm -(T) 6.0871 Tj -93 TJm -(A) 7.193 Tj --250 TJm -(FR) 12.1843 Tj -40 TJm -(OM) 16.0497 Tj --250 TJm -(D) 7.193 Tj -40 TJm -(AMA) 23.2427 Tj -40 TJm -(GED) 20.4731 Tj --250 TJm -(FILES) 26.5703 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -308.464 576.012 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -511.108 576.012 Td -/F122_0 9.9626 Tf -(6) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 564.057 Td -(2.7.) 14.9439 Tj --310 TJm -(PERFORMANCE) 73.6236 Tj --250 TJm -(NO) 14.386 Tj -40 TJm -(TES) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -211.958 564.057 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -511.108 564.057 Td -/F122_0 9.9626 Tf -(6) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 552.101 Td -(2.8.) 14.9439 Tj --310 TJm -(CA) 13.8381 Tj -135 TJm -(VEA) 20.4731 Tj -111 TJm -(TS) 11.6264 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -148.799 552.101 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -511.108 552.101 Td -/F122_0 9.9626 Tf -(7) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 540.146 Td -(2.9.) 14.9439 Tj --310 TJm -(A) 7.193 Tj -55 TJm -(UTHOR) 34.3112 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -145.32 540.146 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -511.108 540.146 Td -/F122_0 9.9626 Tf -(7) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 508.266 Td -(This) 17.7135 Tj --250 TJm -(chapter) 29.3199 Tj --250 TJm -(contains) 33.2053 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(cop) 14.386 Tj -10 TJm -(y) 4.9813 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(the) 12.1743 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -213.837 508.266 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -246.215 508.266 Td -/F122_0 9.9626 Tf -(man) 17.1556 Tj --250 TJm -(page,) 21.3 Tj --250 TJm -(and) 14.386 Tj --250 TJm -(nothing) 30.4457 Tj --250 TJm -(else.) 17.9825 Tj -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 473.513 Td -/F116_0 20.6585 Tf -(2.1.) 34.4584 Tj --278 TJm -(NAME) 60.8186 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -74.491 441.632 Td -/F122_0 9.9626 Tf -(\225) 3.4869 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -82.461 441.632 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -112.349 441.632 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -117.33 441.632 Td -/F124_0 9.9626 Tf -(bunzip2) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -161.664 441.632 Td -/F122_0 9.9626 Tf -(-) 3.3175 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(block-sorting) 53.1305 Tj --250 TJm -(\002le) 12.7322 Tj --250 TJm -(compressor) 45.9276 Tj -40 TJm -(,) 2.4907 Tj --250 TJm -(v1.0.6) 24.9065 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -74.491 419.715 Td -(\225) 3.4869 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -82.461 419.715 Td -/F124_0 9.9626 Tf -(bzcat) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -114.839 419.715 Td -/F122_0 9.9626 Tf -(-) 3.3175 Tj --250 TJm -(decompresses) 55.3323 Tj --250 TJm -(\002les) 16.6077 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(stdout) 24.3586 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -74.491 397.797 Td -(\225) 3.4869 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -82.461 397.797 Td -/F124_0 9.9626 Tf -(bzip2recover) 71.7307 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -156.682 397.797 Td -/F122_0 9.9626 Tf -(-) 3.3175 Tj --250 TJm -(reco) 17.1456 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(ers) 11.6164 Tj --250 TJm -(data) 16.5977 Tj --250 TJm -(from) 19.3673 Tj --250 TJm -(damaged) 35.965 Tj --250 TJm -(bzip2) 22.1369 Tj --250 TJm -(\002les) 16.6077 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 353.081 Td -/F116_0 20.6585 Tf -(2.2.) 34.4584 Tj --278 TJm -(SYNOPSIS) 105.6269 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -74.491 321.201 Td -/F122_0 9.9626 Tf -(\225) 3.4869 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -82.461 321.201 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -114.839 321.201 Td -/F122_0 9.9626 Tf -([) 3.3175 Tj --250 TJm -(-cdfkqstvzVL123456789) 100.164 Tj --250 TJm -(]) 3.3175 Tj --250 TJm -([) 3.3175 Tj --250 TJm -(\002lenames) 38.1866 Tj --250 TJm -(...) 7.472 Tj --620 TJm -(]) 3.3175 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -74.491 299.283 Td -(\225) 3.4869 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -82.461 299.283 Td -/F124_0 9.9626 Tf -(bunzip2) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -126.795 299.283 Td -/F122_0 9.9626 Tf -([) 3.3175 Tj --250 TJm -(-fkvsVL) 33.7533 Tj --250 TJm -(]) 3.3175 Tj --250 TJm -([) 3.3175 Tj --250 TJm -(\002lenames) 38.1866 Tj --250 TJm -(...) 7.472 Tj --620 TJm -(]) 3.3175 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -74.491 277.365 Td -(\225) 3.4869 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -82.461 277.365 Td -/F124_0 9.9626 Tf -(bzcat) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -114.839 277.365 Td -/F122_0 9.9626 Tf -([) 3.3175 Tj --250 TJm -(-s) 7.193 Tj --250 TJm -(]) 3.3175 Tj --250 TJm -([) 3.3175 Tj --250 TJm -(\002lenames) 38.1866 Tj --250 TJm -(...) 7.472 Tj --620 TJm -(]) 3.3175 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -74.491 255.447 Td -(\225) 3.4869 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -82.461 255.447 Td -/F124_0 9.9626 Tf -(bzip2recover) 71.7307 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -156.683 255.447 Td -/F122_0 9.9626 Tf -(\002lename) 34.3112 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -539.395 50.852 Td -(2) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 3 6 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -477.109 749.245 Td -/F122_0 9.9626 Tf -(Ho) 12.1743 Tj -25 TJm -(w) 7.193 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(use) 13.2801 Tj --250 TJm -(bzip2) 22.1369 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -72 704.93 Td -/F116_0 20.6585 Tf -(2.3.) 34.4584 Tj --278 TJm -(DESCRIPTION) 141.1802 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 683.012 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -104.56 683.012 Td -/F122_0 9.9626 Tf -(compresses) 45.9276 Tj --268 TJm -(\002les) 16.6077 Tj --268 TJm -(using) 21.589 Tj --268 TJm -(the) 12.1743 Tj --269 TJm -(Burro) 23.2427 Tj -25 TJm -(ws-Wheeler) 48.1293 Tj --268 TJm -(block) 22.1369 Tj --268 TJm -(sorting) 27.6761 Tj --268 TJm -(te) 7.193 Tj -15 TJm -(xt) 7.7509 Tj --268 TJm -(compression) 50.3609 Tj --268 TJm -(algorithm,) 41.2352 Tj --273 TJm -(and) 14.386 Tj --268 TJm -(Huf) 15.4918 Tj -25 TJm -(fman) 20.4731 Tj --268 TJm -(coding.) 29.6088 Tj -72 671.057 Td -(Compression) 52.5826 Tj --203 TJm -(is) 6.6451 Tj --204 TJm -(generally) 37.0708 Tj --203 TJm -(considerably) 50.9089 Tj --203 TJm -(better) 22.6848 Tj --204 TJm -(t) 2.7696 Tj -1 TJm -(han) 14.386 Tj --204 TJm -(that) 14.9439 Tj --203 TJm -(achie) 21.0211 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(ed) 9.4047 Tj --203 TJm -(by) 9.9626 Tj --204 TJm -(more) 20.4731 Tj --203 TJm -(con) 14.386 Tj -40 TJm -(v) 4.9813 Tj -15 TJm -(entional) 32.0995 Tj --203 TJm -(LZ77/LZ78-based) 73.0458 Tj --204 TJm -(compressors,) 52.2937 Tj -72 659.101 Td -(and) 14.386 Tj --250 TJm -(approaches) 44.8118 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(performance) 50.341 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(PPM) 19.9352 Tj --250 TJm -(f) 3.3175 Tj -10 TJm -(amily) 22.6948 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(statistical) 37.6387 Tj --250 TJm -(compressors.) 52.2937 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 637.184 Td -(The) 15.4918 Tj --250 TJm -(command-line) 57.5539 Tj --250 TJm -(options) 29.3399 Tj --250 TJm -(are) 12.1643 Tj --250 TJm -(deliberately) 47.0334 Tj --250 TJm -(v) 4.9813 Tj -15 TJm -(ery) 12.7222 Tj --250 TJm -(similar) 27.6761 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(those) 21.031 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(GNU) 21.579 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -364.869 637.184 Td -/F124_0 9.9626 Tf -(gzip) 23.9102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -388.779 637.184 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --250 TJm -(b) 4.9813 Tj -20 TJm -(ut) 7.7509 Tj --250 TJm -(the) 12.1743 Tj -15 TJm -(y) 4.9813 Tj --250 TJm -(are) 12.1643 Tj --250 TJm -(not) 12.7322 Tj --250 TJm -(identical.) 36.8018 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 615.266 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -105.175 615.266 Td -/F122_0 9.9626 Tf -(e) 4.4234 Tj -15 TJm -(xpects) 25.4544 Tj --330 TJm -(a) 4.4234 Tj --330 TJm -(list) 12.1843 Tj --330 TJm -(of) 8.2988 Tj --330 TJm -(\002le) 12.7322 Tj --329 TJm -(names) 25.4544 Tj --330 TJm -(to) 7.7509 Tj --330 TJm -(accompan) 40.3884 Tj -15 TJm -(y) 4.9813 Tj --330 TJm -(the) 12.1743 Tj --330 TJm -(command-line) 57.5539 Tj --330 TJm -(\003ags.) 21.31 Tj --1099 TJm -(Each) 19.9152 Tj --330 TJm -(\002le) 12.7322 Tj --330 TJm -(is) 6.6451 Tj --330 TJm -(replaced) 33.7433 Tj --330 TJm -(by) 9.9626 Tj --330 TJm -(a) 4.4234 Tj --330 TJm -(compressed) 47.0334 Tj -72 603.311 Td -(v) 4.9813 Tj -15 TJm -(ersion) 24.3486 Tj --349 TJm -(of) 8.2988 Tj --348 TJm -(itself,) 22.4159 Tj --373 TJm -(with) 17.7135 Tj --349 TJm -(the) 12.1743 Tj --349 TJm -(name) 21.579 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -204.444 603.311 Td -/F124_0 9.9626 Tf -(original_name.bz2) 101.6185 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -306.063 603.311 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj --1212 TJm -(Each) 19.9152 Tj --348 TJm -(compressed) 47.0334 Tj --349 TJm -(\002le) 12.7322 Tj --348 TJm -(has) 13.2801 Tj --349 TJm -(the) 12.1743 Tj --348 TJm -(same) 20.4731 Tj --349 TJm -(modi\002cation) 50.3709 Tj --349 TJm -(date,) 19.0883 Tj -72 591.356 Td -(permissions,) 50.092 Tj --344 TJm -(and,) 16.8766 Tj --344 TJm -(when) 21.579 Tj --325 TJm -(possible,) 35.1481 Tj --344 TJm -(o) 4.9813 Tj -25 TJm -(wnership) 36.5229 Tj --325 TJm -(as) 8.2988 Tj --325 TJm -(the) 12.1743 Tj --326 TJm -(corresponding) 56.996 Tj --325 TJm -(original,) 33.4843 Tj --344 TJm -(so) 8.8568 Tj --325 TJm -(that) 14.9439 Tj --325 TJm -(these) 20.4731 Tj --325 TJm -(properties) 39.8404 Tj --325 TJm -(can) 13.8281 Tj --326 TJm -(be) 9.4047 Tj --325 TJm -(correctly) 35.4071 Tj -72 579.4 Td -(restored) 32.0895 Tj --308 TJm -(at) 7.193 Tj --308 TJm -(decompression) 59.7656 Tj --307 TJm -(time.) 20.2042 Tj --484 TJm -(File) 15.5018 Tj --308 TJm -(name) 21.579 Tj --308 TJm -(handling) 34.8691 Tj --308 TJm -(is) 6.6451 Tj --307 TJm -(nai) 12.1743 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --308 TJm -(in) 7.7509 Tj --308 TJm -(the) 12.1743 Tj --308 TJm -(sense) 21.579 Tj --308 TJm -(that) 14.9439 Tj --308 TJm -(there) 19.9152 Tj --307 TJm -(is) 6.6451 Tj --308 TJm -(no) 9.9626 Tj --308 TJm -(mechanism) 45.3796 Tj --308 TJm -(for) 11.6164 Tj --308 TJm -(preserving) 42.0521 Tj -72 567.445 Td -(original) 30.9936 Tj --334 TJm -(\002le) 12.7322 Tj --333 TJm -(names,) 27.9451 Tj --355 TJm -(permissions,) 50.092 Tj --355 TJm -(o) 4.9813 Tj -25 TJm -(wnerships) 40.3983 Tj --333 TJm -(or) 8.2988 Tj --334 TJm -(dates) 20.4731 Tj --334 TJm -(in) 7.7509 Tj --333 TJm -(\002lesystems) 44.2838 Tj --334 TJm -(which) 24.3486 Tj --334 TJm -(lack) 16.5977 Tj --333 TJm -(these) 20.4731 Tj --334 TJm -(concepts,) 37.3498 Tj --355 TJm -(or) 8.2988 Tj --333 TJm -(ha) 9.4047 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --334 TJm -(serious) 28.224 Tj --334 TJm -(\002le) 12.7322 Tj -72 555.49 Td -(name) 21.579 Tj --250 TJm -(length) 24.9065 Tj --250 TJm -(restrictions,) 46.7644 Tj --250 TJm -(such) 18.2614 Tj --250 TJm -(as) 8.2988 Tj --250 TJm -(MS-DOS.) 40.1294 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 533.572 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -104.379 533.572 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -121.255 533.572 Td -/F124_0 9.9626 Tf -(bunzip2) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -165.589 533.572 Td -/F122_0 9.9626 Tf -(will) 15.5018 Tj --250 TJm -(by) 9.9626 Tj --250 TJm -(def) 12.7222 Tj -10 TJm -(ault) 14.9439 Tj --250 TJm -(not) 12.7322 Tj --250 TJm -(o) 4.9813 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(erwrite) 28.2141 Tj --250 TJm -(e) 4.4234 Tj -15 TJm -(xisting) 27.1282 Tj --250 TJm -(\002les.) 19.0983 Tj --620 TJm -(If) 6.6351 Tj --250 TJm -(you) 14.9439 Tj --250 TJm -(w) 7.193 Tj -10 TJm -(ant) 12.1743 Tj --250 TJm -(this) 14.396 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(happen,) 31.2626 Tj --250 TJm -(specify) 28.772 Tj --250 TJm -(the) 12.1743 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -495.977 533.572 Td -/F124_0 9.9626 Tf -(-f) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -510.423 533.572 Td -/F122_0 9.9626 Tf -(\003ag.) 17.4346 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 511.654 Td -(If) 6.6351 Tj --284 TJm -(no) 9.9626 Tj --285 TJm -(\002le) 12.7322 Tj --284 TJm -(names) 25.4544 Tj --284 TJm -(are) 12.1643 Tj --284 TJm -(speci\002ed,) 37.9077 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -193.935 511.654 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -226.655 511.654 Td -/F122_0 9.9626 Tf -(compresses) 45.9276 Tj --284 TJm -(from) 19.3673 Tj --285 TJm -(standard) 33.7533 Tj --284 TJm -(input) 20.4831 Tj --284 TJm -(to) 7.7509 Tj --284 TJm -(standard) 33.7533 Tj --285 TJm -(output.) 27.9551 Tj --825 TJm -(In) 8.2988 Tj --285 TJm -(this) 14.396 Tj --284 TJm -(case,) 19.6363 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -491.778 511.654 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -524.499 511.654 Td -/F122_0 9.9626 Tf -(will) 15.5018 Tj -72 499.699 Td -(decline) 28.772 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(write) 20.4731 Tj --250 TJm -(compressed) 47.0334 Tj --250 TJm -(output) 25.4644 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(terminal,) 35.696 Tj --250 TJm -(as) 8.2988 Tj --250 TJm -(this) 14.396 Tj --250 TJm -(w) 7.193 Tj -10 TJm -(ould) 17.7135 Tj --250 TJm -(be) 9.4047 Tj --250 TJm -(entirely) 30.4357 Tj --250 TJm -(incomprehensible) 70.8341 Tj --250 TJm -(and) 14.386 Tj --250 TJm -(therefore) 35.955 Tj --250 TJm -(pointless.) 37.9177 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 477.781 Td -/F124_0 9.9626 Tf -(bunzip2) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -116.176 477.781 Td -/F122_0 9.9626 Tf -(\(or) 11.6164 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -130.125 477.781 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj --600 TJm -(-d) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -177.946 477.781 Td -/F122_0 9.9626 Tf -(\)) 3.3175 Tj --234 TJm -(decompresses) 55.3323 Tj --234 TJm -(all) 9.9626 Tj --234 TJm -(speci\002ed) 35.417 Tj --235 TJm -(\002les.) 19.0983 Tj --609 TJm -(Files) 19.3773 Tj --234 TJm -(which) 24.3486 Tj --234 TJm -(were) 19.3573 Tj --234 TJm -(not) 12.7322 Tj --235 TJm -(created) 28.762 Tj --234 TJm -(by) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -445.012 477.781 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -477.233 477.781 Td -/F122_0 9.9626 Tf -(will) 15.5018 Tj --234 TJm -(be) 9.4047 Tj --234 TJm -(detected) 33.1954 Tj -72 465.826 Td -(and) 14.386 Tj --280 TJm -(i) 2.7696 Tj -1 TJm -(gnored,) 30.1568 Tj --287 TJm -(and) 14.386 Tj --280 TJm -(a) 4.4234 Tj --279 TJm -(w) 7.193 Tj -10 TJm -(arning) 25.4544 Tj --280 TJm -(issued.) 27.3972 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -216.033 465.826 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -248.705 465.826 Td -/F122_0 9.9626 Tf -(attempts) 33.7633 Tj --279 TJm -(to) 7.7509 Tj --280 TJm -(guess) 22.1369 Tj --279 TJm -(the) 12.1743 Tj --280 TJm -(\002lename) 34.3112 Tj --279 TJm -(for) 11.6164 Tj --280 TJm -(the) 12.1743 Tj --279 TJm -(decompressed) 56.4381 Tj --280 TJm -(\002le) 12.7322 Tj --279 TJm -(from) 19.3673 Tj --280 TJm -(that) 14.9439 Tj --279 TJm -(of) 8.2988 Tj --280 TJm -(the) 12.1743 Tj -72 453.871 Td -(compressed) 47.0334 Tj --250 TJm -(\002le) 12.7322 Tj --250 TJm -(as) 8.2988 Tj --250 TJm -(follo) 18.8194 Tj -25 TJm -(ws:) 13.8381 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -74.491 421.991 Td -(\225) 3.4869 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -82.461 421.991 Td -/F124_0 9.9626 Tf -(filename.bz2) 71.7307 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -162.66 421.991 Td -/F122_0 9.9626 Tf -(becomes) 34.8591 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -200.01 421.991 Td -/F124_0 9.9626 Tf -(filename) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -74.491 400.073 Td -/F122_0 9.9626 Tf -(\225) 3.4869 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -82.461 400.073 Td -/F124_0 9.9626 Tf -(filename.bz) 65.7532 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -156.682 400.073 Td -/F122_0 9.9626 Tf -(becomes) 34.8591 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -194.032 400.073 Td -/F124_0 9.9626 Tf -(filename) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -74.491 378.155 Td -/F122_0 9.9626 Tf -(\225) 3.4869 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -82.461 378.155 Td -/F124_0 9.9626 Tf -(filename.tbz2) 77.7083 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -162.66 378.155 Td -/F122_0 9.9626 Tf -(becomes) 34.8591 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -200.01 378.155 Td -/F124_0 9.9626 Tf -(filename.tar) 71.7307 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -74.491 356.237 Td -/F122_0 9.9626 Tf -(\225) 3.4869 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -82.461 356.237 Td -/F124_0 9.9626 Tf -(filename.tbz) 71.7307 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -162.66 356.237 Td -/F122_0 9.9626 Tf -(becomes) 34.8591 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -200.01 356.237 Td -/F124_0 9.9626 Tf -(filename.tar) 71.7307 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -74.491 334.319 Td -/F122_0 9.9626 Tf -(\225) 3.4869 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -82.461 334.319 Td -/F124_0 9.9626 Tf -(anyothername) 71.7307 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -162.66 334.319 Td -/F122_0 9.9626 Tf -(becomes) 34.8591 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -200.01 334.319 Td -/F124_0 9.9626 Tf -(anyothername.out) 95.641 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 312.402 Td -/F122_0 9.9626 Tf -(If) 6.6351 Tj --342 TJm -(the) 12.1743 Tj --342 TJm -(\002le) 12.7322 Tj --342 TJm -(does) 18.2614 Tj --342 TJm -(n) 4.9813 Tj --1 TJm -(ot) 7.7509 Tj --342 TJm -(end) 14.386 Tj --342 TJm -(in) 7.7509 Tj --342 TJm -(one) 14.386 Tj --342 TJm -(of) 8.2988 Tj --342 TJm -(the) 12.1743 Tj --342 TJm -(recognised) 43.158 Tj --342 TJm -(endings,) 33.4843 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -309.305 312.402 Td -/F124_0 9.9626 Tf -(.bz2) 23.9102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -333.215 312.402 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -339.344 312.402 Td -/F124_0 9.9626 Tf -(.bz) 17.9327 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -357.276 312.402 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -363.405 312.402 Td -/F124_0 9.9626 Tf -(.tbz2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -396.702 312.402 Td -/F122_0 9.9626 Tf -(or) 8.2988 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -408.409 312.402 Td -/F124_0 9.9626 Tf -(.tbz) 23.9102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -432.319 312.402 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -438.448 312.402 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -471.744 312.402 Td -/F122_0 9.9626 Tf -(complains) 40.9562 Tj --342 TJm -(that) 14.9439 Tj --342 TJm -(it) 5.5392 Tj -72 300.446 Td -(cannot) 26.5603 Tj --250 TJm -(guess) 22.1369 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(name) 21.579 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(original) 30.9936 Tj --250 TJm -(\002le,) 15.2229 Tj --250 TJm -(and) 14.386 Tj --250 TJm -(uses) 17.1556 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(original) 30.9936 Tj --250 TJm -(name) 21.579 Tj --250 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -370.009 300.446 Td -/F124_0 9.9626 Tf -(.out) 23.9102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -396.41 300.446 Td -/F122_0 9.9626 Tf -(appended.) 40.6673 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 278.529 Td -(As) 11.0684 Tj --250 TJm -(with) 17.7135 Tj --250 TJm -(compression,) 52.8516 Tj --250 TJm -(supplying) 39.3025 Tj --250 TJm -(no) 9.9626 Tj --250 TJm -(\002lenames) 38.1866 Tj --250 TJm -(causes) 26.0024 Tj --250 TJm -(decompression) 59.7656 Tj --250 TJm -(from) 19.3673 Tj --250 TJm -(standard) 33.7533 Tj --250 TJm -(input) 20.4831 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(standard) 33.7533 Tj --250 TJm -(output.) 27.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 256.611 Td -/F124_0 9.9626 Tf -(bunzip2) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -116.409 256.611 Td -/F122_0 9.9626 Tf -(will) 15.5018 Tj --257 TJm -(correctly) 35.4071 Tj --258 TJm -(decompress) 47.0334 Tj --257 TJm -(a) 4.4234 Tj --258 TJm -(\002le) 12.7322 Tj --257 TJm -(which) 24.3486 Tj --258 TJm -(is) 6.6451 Tj --257 TJm -(the) 12.1743 Tj --258 TJm -(concatenation) 55.3323 Tj --257 TJm -(of) 8.2988 Tj --258 TJm -(tw) 9.9626 Tj -10 TJm -(o) 4.9813 Tj --258 TJm -(or) 8.2988 Tj --257 TJm -(more) 20.4731 Tj --258 TJm -(compressed) 47.0334 Tj --257 TJm -(\002les.) 19.0983 Tj --665 TJm -(The) 15.4918 Tj --258 TJm -(result) 22.1369 Tj --257 TJm -(is) 6.6451 Tj -72 244.656 Td -(the) 12.1743 Tj --239 TJm -(concatenation) 55.3323 Tj --238 TJm -(of) 8.2988 Tj --239 TJm -(the) 12.1743 Tj --239 TJm -(corresponding) 56.996 Tj --239 TJm -(uncompressed) 56.996 Tj --238 TJm -(\002les.) 19.0983 Tj --613 TJm -(Inte) 15.4918 Tj -15 TJm -(grity) 18.8194 Tj --238 TJm -(testing) 26.5703 Tj --239 TJm -(\() 3.3175 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -382.247 244.656 Td -/F124_0 9.9626 Tf -(-t) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -394.202 244.656 Td -/F122_0 9.9626 Tf -(\)) 3.3175 Tj --239 TJm -(of) 8.2988 Tj --238 TJm -(concatenated) 52.0048 Tj --239 TJm -(compressed) 47.0334 Tj --239 TJm -(\002les) 16.6077 Tj --239 TJm -(is) 6.6451 Tj -72 232.7 Td -(also) 16.0497 Tj --250 TJm -(supported.) 41.7831 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 210.783 Td -(Y) 7.193 Tj -110 TJm -(ou) 9.9626 Tj --399 TJm -(can) 13.8281 Tj --399 TJm -(also) 16.0497 Tj --399 TJm -(compress) 37.6287 Tj --400 TJm -(or) 8.2988 Tj --399 TJm -(decompress) 47.0334 Tj --399 TJm -(\002les) 16.6077 Tj --399 TJm -(to) 7.7509 Tj --399 TJm -(the) 12.1743 Tj --399 TJm -(standard) 33.7533 Tj --399 TJm -(output) 25.4644 Tj --399 TJm -(by) 9.9626 Tj --400 TJm -(gi) 7.7509 Tj -25 TJm -(ving) 17.7135 Tj --399 TJm -(the) 12.1743 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -409.67 210.783 Td -/F124_0 9.9626 Tf -(-c) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -425.602 210.783 Td -/F122_0 9.9626 Tf -(\003ag.) 17.4346 Tj --757 TJm -(Multiple) 34.3212 Tj --400 TJm -(\002l) 8.3088 Tj -1 TJm -(es) 8.2988 Tj --400 TJm -(may) 17.1556 Tj --399 TJm -(be) 9.4047 Tj -72 198.827 Td -(compressed) 47.0334 Tj --367 TJm -(and) 14.386 Tj --367 TJm -(decompressed) 56.4381 Tj --367 TJm -(lik) 10.5205 Tj -10 TJm -(e) 4.4234 Tj --367 TJm -(this.) 16.8866 Tj --1321 TJm -(The) 15.4918 Tj --367 TJm -(resulting) 34.8691 Tj --367 TJm -(outputs) 29.3399 Tj --367 TJm -(are) 12.1643 Tj --367 TJm -(fed) 12.7222 Tj --367 TJm -(sequentially) 48.1492 Tj --366 TJm -(to) 7.7509 Tj --367 TJm -(stdout.) 26.8492 Tj --1322 TJm -(Compression) 52.5826 Tj --367 TJm -(of) 8.2988 Tj -72 186.872 Td -(multiple) 33.2153 Tj --289 TJm -(\002les) 16.6077 Tj --289 TJm -(in) 7.7509 Tj --289 TJm -(this) 14.396 Tj --289 TJm -(manner) 29.8778 Tj --288 TJm -(generates) 37.6188 Tj --289 TJm -(a) 4.4234 Tj --289 TJm -(stream) 26.5603 Tj --289 TJm -(containing) 42.0621 Tj --289 TJm -(multiple) 33.2153 Tj --289 TJm -(compressed) 47.0334 Tj --289 TJm -(\002le) 12.7322 Tj --289 TJm -(representations.) 62.8042 Tj --853 TJm -(Such) 19.9252 Tj --289 TJm -(a) 4.4234 Tj --289 TJm -(stream) 26.5603 Tj -72 174.917 Td -(can) 13.8281 Tj --391 TJm -(be) 9.4047 Tj --391 TJm -(decompressed) 56.4381 Tj --390 TJm -(correctly) 35.4071 Tj --391 TJm -(only) 17.7135 Tj --391 TJm -(by) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -238.116 174.917 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -271.898 174.917 Td -/F122_0 9.9626 Tf -(v) 4.9813 Tj -15 TJm -(ersion) 24.3486 Tj --391 TJm -(0.9.0) 19.9252 Tj --391 TJm -(or) 8.2988 Tj --390 TJm -(later) 17.7035 Tj -55 TJm -(.) 2.4907 Tj --733 TJm -(Earlier) 27.1082 Tj --391 TJm -(v) 4.9813 Tj -15 TJm -(ersions) 28.224 Tj --391 TJm -(of) 8.2988 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -448.071 174.917 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -481.852 174.917 Td -/F122_0 9.9626 Tf -(will) 15.5018 Tj --391 TJm -(stop) 16.6077 Tj --391 TJm -(after) 18.2515 Tj -72 162.962 Td -(decompressing) 59.7656 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(\002rst) 15.5018 Tj --250 TJm -(\002le) 12.7322 Tj --250 TJm -(in) 7.7509 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(stream.) 29.0509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 141.044 Td -/F124_0 9.9626 Tf -(bzcat) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -104.379 141.044 Td -/F122_0 9.9626 Tf -(\(or) 11.6164 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -118.486 141.044 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj --600 TJm -(-dc) 17.9327 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -172.284 141.044 Td -/F122_0 9.9626 Tf -(\)) 3.3175 Tj --250 TJm -(decompresses) 55.3323 Tj --250 TJm -(all) 9.9626 Tj --250 TJm -(speci\002ed) 35.417 Tj --250 TJm -(\002les) 16.6077 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(standard) 33.7533 Tj --250 TJm -(output.) 27.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 119.126 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -104.866 119.126 Td -/F122_0 9.9626 Tf -(will) 15.5018 Tj --299 TJm -(read) 17.1456 Tj --299 TJm -(ar) 7.7409 Tj -18 TJm -(guments) 33.7633 Tj --299 TJm -(from) 19.3673 Tj --299 TJm -(the) 12.1743 Tj --299 TJm -(en) 9.4047 Tj -40 TJm -(vironment) 40.9562 Tj --298 TJm -(v) 4.9813 Tj -25 TJm -(ariables) 30.9837 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -316.903 119.126 Td -/F124_0 9.9626 Tf -(BZIP2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -349.769 119.126 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -367.133 119.126 Td -/F124_0 9.9626 Tf -(BZIP) 23.9102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -391.043 119.126 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --299 TJm -(in) 7.7509 Tj --299 TJm -(that) 14.9439 Tj --299 TJm -(order) 21.0211 Tj -40 TJm -(,) 2.4907 Tj --311 TJm -(and) 14.386 Tj --299 TJm -(will) 15.5018 Tj --299 TJm -(process) 29.8778 Tj --299 TJm -(them) 19.9252 Tj -72 107.171 Td -(before) 25.4445 Tj --250 TJm -(an) 9.4047 Tj -15 TJm -(y) 4.9813 Tj --250 TJm -(ar) 7.7409 Tj -18 TJm -(guments) 33.7633 Tj --250 TJm -(read) 17.1456 Tj --250 TJm -(from) 19.3673 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(command) 39.2925 Tj --250 TJm -(line.) 17.4346 Tj --310 TJm -(This) 17.7135 Tj --250 TJm -(gi) 7.7509 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(es) 8.2988 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(con) 14.386 Tj -40 TJm -(v) 4.9813 Tj -15 TJm -(enient) 24.3486 Tj --250 TJm -(w) 7.193 Tj -10 TJm -(ay) 9.4047 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(supply) 26.5703 Tj --250 TJm -(def) 12.7222 Tj -10 TJm -(ault) 14.9439 Tj --250 TJm -(ar) 7.7409 Tj -18 TJm -(guments.) 36.2539 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 85.253 Td -(Compression) 52.5826 Tj --294 TJm -(is) 6.6451 Tj --294 TJm -(al) 7.193 Tj -10 TJm -(w) 7.193 Tj -10 TJm -(ays) 13.2801 Tj --294 TJm -(performed,) 43.9849 Tj --305 TJm -(e) 4.4234 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(en) 9.4047 Tj --294 TJm -(if) 6.0871 Tj --294 TJm -(the) 12.1743 Tj --294 TJm -(compressed) 47.0334 Tj --294 TJm -(\002le) 12.7322 Tj --293 TJm -(is) 6.6451 Tj --294 TJm -(slightly) 29.8978 Tj --294 TJm -(lar) 10.5105 Tj -18 TJm -(ger) 12.7222 Tj --294 TJm -(than) 17.1556 Tj --294 TJm -(the) 12.1743 Tj --294 TJm -(original.) 33.4843 Tj --884 TJm -(Files) 19.3773 Tj --294 TJm -(of) 8.2988 Tj --294 TJm -(less) 14.9439 Tj --294 TJm -(than) 17.1556 Tj -72 73.298 Td -(about) 22.1369 Tj --246 TJm -(one) 14.386 Tj --246 TJm -(hundred) 32.6474 Tj --245 TJm -(bytes) 21.031 Tj --246 TJm -(tend) 17.1556 Tj --246 TJm -(to) 7.7509 Tj --246 TJm -(get) 12.1743 Tj --246 TJm -(l) 2.7696 Tj -1 TJm -(ar) 7.7409 Tj -18 TJm -(ger) 12.7222 Tj -40 TJm -(,) 2.4907 Tj --247 TJm -(since) 20.4731 Tj --246 TJm -(the) 12.1743 Tj --246 TJm -(compression) 50.3609 Tj --245 TJm -(mechanism) 45.3796 Tj --246 TJm -(has) 13.2801 Tj --246 TJm -(a) 4.4234 Tj --246 TJm -(constant) 33.2053 Tj --246 TJm -(o) 4.9813 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(erhead) 26.5503 Tj --245 TJm -(in) 7.7509 Tj --246 TJm -(the) 12.1743 Tj --246 TJm -(re) 7.7409 Tj -15 TJm -(gion) 17.7135 Tj --246 TJm -(of) 8.2988 Tj -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -539.395 50.951 Td -(3) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 4 7 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -477.109 749.245 Td -/F122_0 9.9626 Tf -(Ho) 12.1743 Tj -25 TJm -(w) 7.193 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(use) 13.2801 Tj --250 TJm -(bzip2) 22.1369 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -72 710.037 Td -/F122_0 9.9626 Tf -(50) 9.9626 Tj --264 TJm -(bytes.) 23.5217 Tj --351 TJm -(Random) 33.7633 Tj --264 TJm -(dat) 12.1743 Tj -1 TJm -(a) 4.4234 Tj --264 TJm -(\(including) 40.9562 Tj --264 TJm -(the) 12.1743 Tj --264 TJm -(output) 25.4644 Tj --263 TJm -(of) 8.2988 Tj --264 TJm -(most) 19.3773 Tj --264 TJm -(\002le) 12.7322 Tj --263 TJm -(compressors\)) 53.1206 Tj --264 TJm -(is) 6.6451 Tj --264 TJm -(coded) 23.7907 Tj --263 TJm -(at) 7.193 Tj --264 TJm -(about) 22.1369 Tj --264 TJm -(8.05) 17.4346 Tj --263 TJm -(bits) 14.396 Tj --264 TJm -(per) 12.7222 Tj --264 TJm -(byte,) 19.6462 Tj --267 TJm -(gi) 7.7509 Tj -25 TJm -(ving) 17.7135 Tj --264 TJm -(an) 9.4047 Tj -72 698.082 Td -(e) 4.4234 Tj -15 TJm -(xpansion) 35.9749 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(around) 27.6661 Tj --250 TJm -(0.5%.) 23.2427 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 676.283 Td -(As) 11.0684 Tj --268 TJm -(a) 4.4234 Tj --268 TJm -(self-check) 40.9363 Tj --269 TJm -(for) 11.6164 Tj --268 TJm -(your) 18.2614 Tj --268 TJm -(protection,) 42.889 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -217.273 676.283 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -249.833 676.283 Td -/F122_0 9.9626 Tf -(uses) 17.1556 Tj --268 TJm -(32-bit) 23.8007 Tj --268 TJm -(CRCs) 23.8106 Tj --269 TJm -(to) 7.7509 Tj --268 TJm -(mak) 17.1556 Tj -10 TJm -(e) 4.4234 Tj --268 TJm -(sure) 16.5977 Tj --268 TJm -(that) 14.9439 Tj --268 TJm -(the) 12.1743 Tj --269 TJm -(decompressed) 56.4381 Tj --268 TJm -(v) 4.9813 Tj -15 TJm -(ersion) 24.3486 Tj --268 TJm -(of) 8.2988 Tj --268 TJm -(a) 4.4234 Tj --268 TJm -(\002le) 12.7322 Tj --269 TJm -(is) 6.6451 Tj -72 664.328 Td -(identical) 34.3112 Tj --200 TJm -(to) 7.7509 Tj --199 TJm -(the) 12.1743 Tj --200 TJm -(original.) 33.4843 Tj --586 TJm -(This) 17.7135 Tj --200 TJm -(guards) 26.5603 Tj --199 TJm -(ag) 9.4047 Tj -5 TJm -(ainst) 18.8194 Tj --200 TJm -(corruption) 41.5042 Tj --199 TJm -(of) 8.2988 Tj --200 TJm -(the) 12.1743 Tj --200 TJm -(compressed) 47.0334 Tj --199 TJm -(data,) 19.0883 Tj --210 TJm -(and) 14.386 Tj --199 TJm -(ag) 9.4047 Tj -5 TJm -(ainst) 18.8194 Tj --200 TJm -(undetected) 43.158 Tj --200 TJm -(b) 4.9813 Tj -20 TJm -(ugs) 13.8381 Tj --199 TJm -(in) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -510.112 664.328 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 652.373 Td -/F122_0 9.9626 Tf -(\(hopefully) 41.5042 Tj --275 TJm -(v) 4.9813 Tj -15 TJm -(ery) 12.7222 Tj --274 TJm -(unlik) 20.4831 Tj -10 TJm -(ely\).) 17.9825 Tj --384 TJm -(The) 15.4918 Tj --275 TJm -(chances) 31.5316 Tj --275 TJm -(of) 8.2988 Tj --275 TJm -(data) 16.5977 Tj --274 TJm -(corruption) 41.5042 Tj --275 TJm -(going) 22.6948 Tj --275 TJm -(undetected) 43.158 Tj --274 TJm -(is) 6.6451 Tj --275 TJm -(microscopic,) 51.1878 Tj --281 TJm -(about) 22.1369 Tj --275 TJm -(one) 14.386 Tj --274 TJm -(chance) 27.6562 Tj --275 TJm -(in) 7.7509 Tj --275 TJm -(four) 16.5977 Tj -72 640.417 Td -(billion) 26.0223 Tj --279 TJm -(for) 11.6164 Tj --279 TJm -(each) 18.2515 Tj --279 TJm -(\002le) 12.7322 Tj --280 TJm -(processed.) 41.7732 Tj --795 TJm -(Be) 11.0684 Tj --279 TJm -(a) 4.4234 Tj -15 TJm -(w) 7.193 Tj -10 TJm -(are,) 14.655 Tj --286 TJm -(though,) 30.1668 Tj --287 TJm -(that) 14.9439 Tj --279 TJm -(the) 12.1743 Tj --279 TJm -(check) 23.2328 Tj --279 TJm -(occurs) 26.0024 Tj --279 TJm -(upon) 19.9252 Tj --279 TJm -(decompression,) 62.2563 Tj --287 TJm -(so) 8.8568 Tj --279 TJm -(it) 5.5392 Tj --279 TJm -(can) 13.8281 Tj --279 TJm -(only) 17.7135 Tj --280 TJm -(tell) 12.7322 Tj --279 TJm -(you) 14.9439 Tj -72 628.462 Td -(that) 14.9439 Tj --237 TJm -(something) 41.5142 Tj --236 TJm -(is) 6.6451 Tj --237 TJm -(wrong.) 27.9451 Tj --611 TJm -(It) 6.0871 Tj --237 TJm -(can') 17.1456 Tj -18 TJm -(t) 2.7696 Tj --237 TJm -(help) 17.1556 Tj --237 TJm -(you) 14.9439 Tj --236 TJm -(reco) 17.1456 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(er) 7.7409 Tj --237 TJm -(the) 12.1743 Tj --237 TJm -(original) 30.9936 Tj --237 TJm -(uncompressed) 56.996 Tj --236 TJm -(data.) 19.0883 Tj --612 TJm -(Y) 7.193 Tj -110 TJm -(ou) 9.9626 Tj --236 TJm -(can) 13.8281 Tj --237 TJm -(use) 13.2801 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -458.159 628.462 Td -/F124_0 9.9626 Tf -(bzip2recover) 71.7307 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -532.249 628.462 Td -/F122_0 9.9626 Tf -(to) 7.7509 Tj -72 616.507 Td -(try) 11.0684 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(reco) 17.1456 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(er) 7.7409 Tj --250 TJm -(data) 16.5977 Tj --250 TJm -(from) 19.3673 Tj --250 TJm -(damaged) 35.965 Tj --250 TJm -(\002les.) 19.0983 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 594.708 Td -(Return) 27.1182 Tj --298 TJm -(v) 4.9813 Tj -25 TJm -(alues:) 23.2427 Tj --406 TJm -(0) 4.9813 Tj --298 TJm -(for) 11.6164 Tj --298 TJm -(a) 4.4234 Tj --298 TJm -(normal) 28.224 Tj --298 TJm -(e) 4.4234 Tj -15 TJm -(xit,) 13.0112 Tj --310 TJm -(1) 4.9813 Tj --298 TJm -(for) 11.6164 Tj --297 TJm -(en) 9.4047 Tj -40 TJm -(vironmental) 48.1492 Tj --298 TJm -(problems) 37.0808 Tj --298 TJm -(\(\002le) 16.0497 Tj --298 TJm -(not) 12.7322 Tj --298 TJm -(found,) 25.7334 Tj --310 TJm -(in) 7.7509 Tj -40 TJm -(v) 4.9813 Tj -25 TJm -(alid) 14.9439 Tj --298 TJm -(\003ags,) 21.31 Tj --310 TJm -(I/O) 13.2801 Tj --298 TJm -(errors,) 25.7234 Tj --310 TJm -(etc.\),) 19.9152 Tj --310 TJm -(2) 4.9813 Tj --298 TJm -(to) 7.7509 Tj -72 582.753 Td -(indicate) 31.5416 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(corrupt) 28.772 Tj --250 TJm -(compressed) 47.0334 Tj --250 TJm -(\002le,) 15.2229 Tj --250 TJm -(3) 4.9813 Tj --250 TJm -(for) 11.6164 Tj --250 TJm -(an) 9.4047 Tj --250 TJm -(internal) 30.4357 Tj --250 TJm -(consistenc) 41.5042 Tj -15 TJm -(y) 4.9813 Tj --250 TJm -(error) 19.3573 Tj --250 TJm -(\(e) 7.7409 Tj -15 TJm -(g,) 7.472 Tj --250 TJm -(b) 4.9813 Tj -20 TJm -(ug\)) 13.2801 Tj --250 TJm -(which) 24.3486 Tj --250 TJm -(caused) 27.1082 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -443.065 582.753 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -475.444 582.753 Td -/F122_0 9.9626 Tf -(to) 7.7509 Tj --250 TJm -(panic.) 24.0696 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 548.118 Td -/F116_0 20.6585 Tf -(2.4.) 34.4584 Tj --278 TJm -(OPTIONS) 92.9839 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 516.475 Td -/F124_0 9.9626 Tf -(-c) 11.9551 Tj --600 TJm -(--stdout) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 504.52 Td -/F122_0 9.9626 Tf -(Compress) 39.8504 Tj --250 TJm -(or) 8.2988 Tj --250 TJm -(decompress) 47.0334 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(standard) 33.7533 Tj --250 TJm -(output.) 27.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 478.854 Td -/F124_0 9.9626 Tf -(-d) 11.9551 Tj --600 TJm -(--decompress) 71.7307 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 466.899 Td -/F122_0 9.9626 Tf -(F) 5.5392 Tj -15 TJm -(orce) 17.1456 Tj --296 TJm -(decompression.) 62.2563 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -200.214 466.899 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -230.102 466.899 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -235.659 466.899 Td -/F124_0 9.9626 Tf -(bunzip2) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -280.454 466.899 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -297.791 466.899 Td -/F124_0 9.9626 Tf -(bzcat) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -330.631 466.899 Td -/F122_0 9.9626 Tf -(are) 12.1643 Tj --296 TJm -(really) 22.6848 Tj --296 TJm -(the) 12.1743 Tj --297 TJm -(same) 20.4731 Tj --296 TJm -(program,) 36.2439 Tj --308 TJm -(and) 14.386 Tj --296 TJm -(the) 12.1743 Tj --296 TJm -(decision) 33.2053 Tj --297 TJm -(about) 22.1369 Tj -108 454.944 Td -(what) 19.3673 Tj --303 TJm -(actions) 28.224 Tj --303 TJm -(to) 7.7509 Tj --303 TJm -(tak) 12.1743 Tj -10 TJm -(e) 4.4234 Tj --303 TJm -(is) 6.6451 Tj --303 TJm -(done) 19.3673 Tj --303 TJm -(on) 9.9626 Tj --304 TJm -(the) 12.1743 Tj --303 TJm -(basis) 19.9252 Tj --303 TJm -(of) 8.2988 Tj --303 TJm -(which) 24.3486 Tj --303 TJm -(name) 21.579 Tj --303 TJm -(is) 6.6451 Tj --303 TJm -(used.) 20.7521 Tj --939 TJm -(This) 17.7135 Tj --303 TJm -(\003ag) 14.9439 Tj --303 TJm -(o) 4.9813 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(errides) 27.1082 Tj --303 TJm -(that) 14.9439 Tj --303 TJm -(mechanism,) 47.8703 Tj --316 TJm -(and) 14.386 Tj -108 442.988 Td -(forces) 24.3386 Tj --250 TJm -(bzip2) 22.1369 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(decompress.) 49.5241 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 417.323 Td -/F124_0 9.9626 Tf -(-z) 11.9551 Tj --600 TJm -(--compress) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 405.368 Td -/F122_0 9.9626 Tf -(The) 15.4918 Tj --250 TJm -(complement) 49.2551 Tj --250 TJm -(to) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -187.969 405.368 Td -/F124_0 9.9626 Tf -(-d) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -199.924 405.368 Td -/F122_0 9.9626 Tf -(:) 2.7696 Tj --310 TJm -(forces) 24.3386 Tj --250 TJm -(compression,) 52.8516 Tj --250 TJm -(re) 7.7409 Tj -15 TJm -(g) 4.9813 Tj -5 TJm -(ardless) 27.6661 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(in) 7.7509 Tj -40 TJm -(v) 4.9813 Tj -20 TJm -(okation) 29.8878 Tj --250 TJm -(name.) 24.0696 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 379.702 Td -/F124_0 9.9626 Tf -(-t) 11.9551 Tj --600 TJm -(--test) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 367.747 Td -/F122_0 9.9626 Tf -(Check) 25.4544 Tj --270 TJm -(inte) 14.9439 Tj -15 TJm -(grity) 18.8194 Tj --271 TJm -(of) 8.2988 Tj --270 TJm -(the) 12.1743 Tj --271 TJm -(speci\002ed) 35.417 Tj --270 TJm -(\002le\(s\),) 25.7334 Tj --276 TJm -(b) 4.9813 Tj -20 TJm -(ut) 7.7509 Tj --270 TJm -(don') 18.2614 Tj -18 TJm -(t) 2.7696 Tj --270 TJm -(decompress) 47.0334 Tj --271 TJm -(them.) 22.4159 Tj --742 TJm -(This) 17.7135 Tj --271 TJm -(really) 22.6848 Tj --270 TJm -(performs) 35.965 Tj --270 TJm -(a) 4.4234 Tj --271 TJm -(trial) 16.0497 Tj --270 TJm -(decompres-) 46.4755 Tj -108 355.792 Td -(sion) 16.6077 Tj --250 TJm -(and) 14.386 Tj --250 TJm -(thro) 16.0497 Tj -25 TJm -(ws) 11.0684 Tj --250 TJm -(a) 4.4234 Tj -15 TJm -(w) 7.193 Tj -10 TJm -(ay) 9.4047 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(result.) 24.6275 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 330.126 Td -/F124_0 9.9626 Tf -(-f) 11.9551 Tj --600 TJm -(--force) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 318.171 Td -/F122_0 9.9626 Tf -(F) 5.5392 Tj -15 TJm -(orce) 17.1456 Tj --338 TJm -(o) 4.9813 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(erwrite) 28.2141 Tj --339 TJm -(of) 8.2988 Tj --338 TJm -(output) 25.4644 Tj --338 TJm -(\002les.) 19.0983 Tj --1150 TJm -(Normally) 38.1866 Tj -65 TJm -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -289.831 318.171 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -323.089 318.171 Td -/F122_0 9.9626 Tf -(will) 15.5018 Tj --338 TJm -(not) 12.7322 Tj --339 TJm -(o) 4.9813 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(erwrite) 28.2141 Tj --338 TJm -(e) 4.4234 Tj -15 TJm -(xisting) 27.1282 Tj --338 TJm -(output) 25.4644 Tj --338 TJm -(\002les.) 19.0983 Tj --1150 TJm -(Also) 18.8194 Tj --339 TJm -(forces) 24.3386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 306.215 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -140.379 306.215 Td -/F122_0 9.9626 Tf -(to) 7.7509 Tj --250 TJm -(break) 22.1269 Tj --250 TJm -(hard) 17.7035 Tj --250 TJm -(links) 19.3773 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(\002les,) 19.0983 Tj --250 TJm -(which) 24.3486 Tj --250 TJm -(it) 5.5392 Tj --250 TJm -(otherwise) 38.7346 Tj --250 TJm -(w) 7.193 Tj -10 TJm -(ouldn') 26.0123 Tj -18 TJm -(t) 2.7696 Tj --250 TJm -(do.) 12.4533 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 284.416 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -141.211 284.416 Td -/F122_0 9.9626 Tf -(normally) 35.9749 Tj --334 TJm -(declines) 32.6474 Tj --333 TJm -(to) 7.7509 Tj --334 TJm -(decompress) 47.0334 Tj --333 TJm -(\002les) 16.6077 Tj --334 TJm -(which) 24.3486 Tj --333 TJm -(don') 18.2614 Tj -18 TJm -(t) 2.7696 Tj --334 TJm -(ha) 9.4047 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --333 TJm -(the) 12.1743 Tj --334 TJm -(correct) 27.6562 Tj --333 TJm -(magic) 24.3486 Tj --334 TJm -(header) 26.5503 Tj --333 TJm -(bytes.) 23.5217 Tj --561 TJm -(If) 6.6351 Tj --334 TJm -(forced) 25.4445 Tj -108 272.461 Td -(\() 3.3175 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -111.318 272.461 Td -/F124_0 9.9626 Tf -(-f) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -123.273 272.461 Td -/F122_0 9.9626 Tf -(\),) 5.8082 Tj --250 TJm -(ho) 9.9626 Tj -25 TJm -(we) 11.6164 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(er) 7.7409 Tj -40 TJm -(,) 2.4907 Tj --250 TJm -(it) 5.5392 Tj --250 TJm -(will) 15.5018 Tj --250 TJm -(pass) 17.1556 Tj --250 TJm -(such) 18.2614 Tj --250 TJm -(\002les) 16.6077 Tj --250 TJm -(through) 30.9936 Tj --250 TJm -(unmodi\002ed.) 47.8803 Tj --310 TJm -(This) 17.7135 Tj --250 TJm -(is) 6.6451 Tj --250 TJm -(ho) 9.9626 Tj -25 TJm -(w) 7.193 Tj --250 TJm -(GNU) 21.579 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -412.585 272.461 Td -/F124_0 9.9626 Tf -(gzip) 23.9102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -438.986 272.461 Td -/F122_0 9.9626 Tf -(beha) 18.8094 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(es.) 10.7895 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 246.795 Td -/F124_0 9.9626 Tf -(-k) 11.9551 Tj --600 TJm -(--keep) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 234.84 Td -/F122_0 9.9626 Tf -(K) 7.193 Tj -25 TJm -(eep) 13.8281 Tj --250 TJm -(\(don') 21.579 Tj -18 TJm -(t) 2.7696 Tj --250 TJm -(delete\)) 27.1082 Tj --250 TJm -(input) 20.4831 Tj --250 TJm -(\002les) 16.6077 Tj --250 TJm -(during) 26.0123 Tj --250 TJm -(compression) 50.3609 Tj --250 TJm -(or) 8.2988 Tj --250 TJm -(decompression.) 62.2563 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 209.174 Td -/F124_0 9.9626 Tf -(-s) 11.9551 Tj --600 TJm -(--small) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 197.219 Td -/F122_0 9.9626 Tf -(Reduce) 29.8778 Tj --347 TJm -(memory) 33.2053 Tj --347 TJm -(usage,) 25.1755 Tj --371 TJm -(for) 11.6164 Tj --346 TJm -(compression,) 52.8516 Tj --371 TJm -(decompression) 59.7656 Tj --347 TJm -(and) 14.386 Tj --347 TJm -(testing.) 29.0609 Tj --1201 TJm -(Files) 19.3773 Tj --347 TJm -(are) 12.1643 Tj --347 TJm -(decompressed) 56.4381 Tj --346 TJm -(and) 14.386 Tj --347 TJm -(tested) 23.2427 Tj -108 185.264 Td -(using) 21.589 Tj --388 TJm -(a) 4.4234 Tj --388 TJm -(modi\002ed) 35.427 Tj --388 TJm -(algorithm) 38.7446 Tj --389 TJm -(which) 24.3486 Tj --388 TJm -(only) 17.7135 Tj --388 TJm -(requires) 32.0895 Tj --388 TJm -(2.5) 12.4533 Tj --388 TJm -(bytes) 21.031 Tj --388 TJm -(per) 12.7222 Tj --388 TJm -(block) 22.1369 Tj --389 TJm -(byte.) 19.6462 Tj --1448 TJm -(This) 17.7135 Tj --389 TJm -(means) 25.4544 Tj --388 TJm -(an) 9.4047 Tj -15 TJm -(y) 4.9813 Tj --388 TJm -(\002le) 12.7322 Tj --388 TJm -(can) 13.8281 Tj --388 TJm -(be) 9.4047 Tj -108 173.309 Td -(decompressed) 56.4381 Tj --250 TJm -(in) 7.7509 Tj --250 TJm -(2300k) 24.9065 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(memory) 33.2053 Tj -65 TJm -(,) 2.4907 Tj --250 TJm -(albeit) 22.1369 Tj --250 TJm -(at) 7.193 Tj --250 TJm -(about) 22.1369 Tj --250 TJm -(half) 15.4918 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(normal) 28.224 Tj --250 TJm -(speed.) 25.1755 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 151.51 Td -(During) 28.224 Tj --252 TJm -(compr) 25.4544 Tj -1 TJm -(ession,) 27.3972 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -194.091 151.51 Td -/F124_0 9.9626 Tf -(-s) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -208.551 151.51 Td -/F122_0 9.9626 Tf -(selects) 26.5603 Tj --252 TJm -(a) 4.4234 Tj --251 TJm -(block) 22.1369 Tj --252 TJm -(size) 15.4918 Tj --251 TJm -(of) 8.2988 Tj --252 TJm -(200k,) 22.4159 Tj --251 TJm -(which) 24.3486 Tj --252 TJm -(limits) 22.7048 Tj --251 TJm -(memory) 33.2053 Tj --252 TJm -(use) 13.2801 Tj --251 TJm -(to) 7.7509 Tj --252 TJm -(around) 27.6661 Tj --251 TJm -(the) 12.1743 Tj --252 TJm -(same) 20.4731 Tj --251 TJm -(\002gure,) 25.7334 Tj --252 TJm -(at) 7.193 Tj -108 139.554 Td -(the) 12.1743 Tj --287 TJm -(e) 4.4234 Tj -15 TJm -(xpense) 27.6661 Tj --287 TJm -(of) 8.2988 Tj --288 TJm -(your) 18.2614 Tj --287 TJm -(compression) 50.3609 Tj --287 TJm -(ratio.) 20.7521 Tj --843 TJm -(In) 8.2988 Tj --287 TJm -(short,) 22.4159 Tj --297 TJm -(if) 6.0871 Tj --287 TJm -(your) 18.2614 Tj --287 TJm -(machine) 33.7533 Tj --287 TJm -(is) 6.6451 Tj --287 TJm -(lo) 7.7509 Tj -25 TJm -(w) 7.193 Tj --287 TJm -(on) 9.9626 Tj --288 TJm -(memory) 33.2053 Tj --287 TJm -(\(8) 8.2988 Tj --287 TJm -(me) 12.1743 Tj -15 TJm -(g) 4.9813 Tj -5 TJm -(abytes) 25.4544 Tj --287 TJm -(or) 8.2988 Tj --287 TJm -(less\),) 20.7521 Tj -108 127.599 Td -(use) 13.2801 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -123.771 127.599 Td -/F124_0 9.9626 Tf -(-s) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -138.217 127.599 Td -/F122_0 9.9626 Tf -(for) 11.6164 Tj --250 TJm -(e) 4.4234 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(erything.) 35.696 Tj --620 TJm -(See) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 1] sc -/DeviceRGB {} CS -[0 0 1] SC --250 TJm -(MEMOR) 37.6387 Tj -65 TJm -(Y) 7.193 Tj --250 TJm -(MAN) 23.2427 Tj -35 TJm -(A) 7.193 Tj -40 TJm -(GEMENT) 41.5042 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 1] sc -/DeviceRGB {} CS -[0 0 1] SC -/DeviceRGB {} cs -[0 0 1] sc -/DeviceRGB {} CS -[0 0 1] SC --250 TJm -([5]) 11.6164 Tj -/DeviceRGB {} cs -[0 0 1] sc -/DeviceRGB {} CS -[0 0 1] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --250 TJm -(belo) 17.1556 Tj -25 TJm -(w) 7.193 Tj -65 TJm -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 101.933 Td -/F124_0 9.9626 Tf -(-q) 11.9551 Tj --600 TJm -(--quiet) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 89.978 Td -/F122_0 9.9626 Tf -(Suppress) 35.9749 Tj --221 TJm -(non-essential) 52.5726 Tj --220 TJm -(w) 7.193 Tj -10 TJm -(arning) 25.4544 Tj --221 TJm -(messages.) 40.1194 Tj --300 TJm -(Messages) 38.7346 Tj --221 TJm -(pertaining) 40.3983 Tj --221 TJm -(to) 7.7509 Tj --220 TJm -(I/O) 13.2801 Tj --221 TJm -(errors) 23.2328 Tj --221 TJm -(and) 14.386 Tj --220 TJm -(other) 20.4731 Tj --221 TJm -(critical) 27.6661 Tj --221 TJm -(e) 4.4234 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(ents) 16.0497 Tj --221 TJm -(wi) 9.9626 Tj -1 TJm -(ll) 5.5392 Tj --221 TJm -(not) 12.7322 Tj -108 78.023 Td -(be) 9.4047 Tj --250 TJm -(suppressed.) 46.2065 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -539.395 50.852 Td -(4) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 5 8 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -477.109 749.245 Td -/F122_0 9.9626 Tf -(Ho) 12.1743 Tj -25 TJm -(w) 7.193 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(use) 13.2801 Tj --250 TJm -(bzip2) 22.1369 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -72 710.037 Td -/F124_0 9.9626 Tf -(-v) 11.9551 Tj --600 TJm -(--verbose) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 698.082 Td -/F122_0 9.9626 Tf -(V) 7.193 Tj -111 TJm -(erbose) 26.0024 Tj --323 TJm -(mode) 22.1369 Tj --322 TJm -(--) 6.6351 Tj --323 TJm -(sho) 13.8381 Tj -25 TJm -(w) 7.193 Tj --322 TJm -(the) 12.1743 Tj --323 TJm -(compression) 50.3609 Tj --323 TJm -(ratio) 18.2614 Tj --322 TJm -(for) 11.6164 Tj --323 TJm -(each) 18.2515 Tj --322 TJm -(\002le) 12.7322 Tj --323 TJm -(processed.) 41.7732 Tj --1056 TJm -(Further) 29.3299 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -430.015 698.082 Td -/F124_0 9.9626 Tf -(-v) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -441.97 698.082 Td -/F122_0 9.9626 Tf -(') 3.3175 Tj -55 TJm -(s) 3.8755 Tj --323 TJm -(increase) 32.6375 Tj --322 TJm -(the) 12.1743 Tj --323 TJm -(v) 4.9813 Tj -15 TJm -(erbosity) 32.0995 Tj -108 686.127 Td -(le) 7.193 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(el,) 9.6836 Tj --250 TJm -(spe) 13.2801 Tj -25 TJm -(wing) 19.9252 Tj --250 TJm -(out) 12.7322 Tj --250 TJm -(lots) 14.396 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(information) 47.0434 Tj --250 TJm -(which) 24.3486 Tj --250 TJm -(is) 6.6451 Tj --250 TJm -(primarily) 37.0808 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(interest) 29.3299 Tj --250 TJm -(for) 11.6164 Tj --250 TJm -(diagnostic) 40.9562 Tj --250 TJm -(purposes.) 37.9077 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 660.224 Td -/F124_0 9.9626 Tf -(-L) 11.9551 Tj --600 TJm -(--license) 53.798 Tj --600 TJm -(-V) 11.9551 Tj --600 TJm -(--version) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 648.269 Td -/F122_0 9.9626 Tf -(Display) 30.9936 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(softw) 22.1369 Tj -10 TJm -(are) 12.1643 Tj --250 TJm -(v) 4.9813 Tj -15 TJm -(ersion,) 26.8392 Tj --250 TJm -(license) 27.6661 Tj --250 TJm -(terms) 22.1369 Tj --250 TJm -(and) 14.386 Tj --250 TJm -(conditions.) 44.0048 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 622.366 Td -/F124_0 9.9626 Tf -(-1) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -86.446 622.366 Td -/F122_0 9.9626 Tf -(\(or) 11.6164 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -100.553 622.366 Td -/F124_0 9.9626 Tf -(--fast) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -136.418 622.366 Td -/F122_0 9.9626 Tf -(\)) 3.3175 Tj --250 TJm -(to) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -152.468 622.366 Td -/F124_0 9.9626 Tf -(-9) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -166.914 622.366 Td -/F122_0 9.9626 Tf -(\(or) 11.6164 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -181.021 622.366 Td -/F124_0 9.9626 Tf -(-best) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -210.909 622.366 Td -/F122_0 9.9626 Tf -(\)) 3.3175 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 610.411 Td -(Set) 12.7322 Tj --288 TJm -(the) 12.1743 Tj --289 TJm -(block) 22.1369 Tj --288 TJm -(size) 15.4918 Tj --288 TJm -(to) 7.7509 Tj --288 TJm -(100) 14.9439 Tj --289 TJm -(k,) 7.472 Tj --298 TJm -(200) 14.9439 Tj --288 TJm -(k) 4.9813 Tj --288 TJm -(...) 7.472 Tj --850 TJm -(900) 14.9439 Tj --288 TJm -(k) 4.9813 Tj --288 TJm -(when) 21.579 Tj --289 TJm -(compressing.) 52.8516 Tj --849 TJm -(Has) 15.4918 Tj --289 TJm -(no) 9.9626 Tj --288 TJm -(ef) 7.7409 Tj -25 TJm -(fect) 14.9339 Tj --288 TJm -(when) 21.579 Tj --288 TJm -(decompressing.) 62.2563 Tj --850 TJm -(See) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 1] sc -/DeviceRGB {} CS -[0 0 1] SC -108 598.456 Td -(MEMOR) 37.6387 Tj -65 TJm -(Y) 7.193 Tj --297 TJm -(MAN) 23.2427 Tj -35 TJm -(A) 7.193 Tj -40 TJm -(GEMENT) 41.5042 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 1] sc -/DeviceRGB {} CS -[0 0 1] SC -/DeviceRGB {} cs -[0 0 1] sc -/DeviceRGB {} CS -[0 0 1] SC --297 TJm -([5]) 11.6164 Tj -/DeviceRGB {} cs -[0 0 1] sc -/DeviceRGB {} CS -[0 0 1] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --298 TJm -(belo) 17.1556 Tj -25 TJm -(w) 7.193 Tj -65 TJm -(.) 2.4907 Tj --904 TJm -(The) 15.4918 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -297.278 598.456 Td -/F124_0 9.9626 Tf -(--fast) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -336.106 598.456 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -353.454 598.456 Td -/F124_0 9.9626 Tf -(--best) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -392.281 598.456 Td -/F122_0 9.9626 Tf -(aliases) 26.5603 Tj --297 TJm -(are) 12.1643 Tj --298 TJm -(primarily) 37.0808 Tj --297 TJm -(for) 11.6164 Tj --297 TJm -(GNU) 21.579 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -516.09 598.456 Td -/F124_0 9.9626 Tf -(gzip) 23.9102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 586.501 Td -/F122_0 9.9626 Tf -(compatibility) 53.1405 Tj -65 TJm -(.) 2.4907 Tj --356 TJm -(In) 8.2988 Tj --265 TJm -(particular) 38.1767 Tj -40 TJm -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -220.423 586.501 Td -/F124_0 9.9626 Tf -(--fast) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -258.932 586.501 Td -/F122_0 9.9626 Tf -(doesn') 26.5603 Tj -18 TJm -(t) 2.7696 Tj --265 TJm -(mak) 17.1556 Tj -10 TJm -(e) 4.4234 Tj --266 TJm -(things) 24.3586 Tj --265 TJm -(signi\002cantly) 49.2651 Tj --265 TJm -(f) 3.3175 Tj -10 TJm -(aster) 18.8094 Tj -55 TJm -(.) 2.4907 Tj --712 TJm -(And) 17.1556 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -444.622 586.501 Td -/F124_0 9.9626 Tf -(--best) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -483.131 586.501 Td -/F122_0 9.9626 Tf -(merely) 27.6661 Tj --265 TJm -(selects) 26.5603 Tj -108 574.545 Td -(the) 12.1743 Tj --250 TJm -(def) 12.7222 Tj -10 TJm -(ault) 14.9439 Tj --250 TJm -(beha) 18.8094 Tj -20 TJm -(viour) 21.031 Tj -55 TJm -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 548.643 Td -/F124_0 9.9626 Tf -(--) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 536.688 Td -/F122_0 9.9626 Tf -(T) 6.0871 Tj -35 TJm -(reats) 18.8094 Tj --261 TJm -(all) 9.9626 Tj --261 TJm -(subsequent) 44.2738 Tj --260 TJm -(ar) 7.7409 Tj -18 TJm -(guments) 33.7633 Tj --261 TJm -(as) 8.2988 Tj --261 TJm -(\002le) 12.7322 Tj --261 TJm -(names,) 27.9451 Tj --263 TJm -(e) 4.4234 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(en) 9.4047 Tj --261 TJm -(if) 6.0871 Tj --261 TJm -(the) 12.1743 Tj -15 TJm -(y) 4.9813 Tj --260 TJm -(start) 17.1556 Tj --261 TJm -(with) 17.7135 Tj --261 TJm -(a) 4.4234 Tj --261 TJm -(dash.) 20.7521 Tj --685 TJm -(This) 17.7135 Tj --260 TJm -(is) 6.6451 Tj --261 TJm -(so) 8.8568 Tj --261 TJm -(you) 14.9439 Tj --261 TJm -(can) 13.8281 Tj --260 TJm -(handle) 26.5603 Tj --261 TJm -(\002les) 16.6077 Tj -108 524.732 Td -(with) 17.7135 Tj --250 TJm -(names) 25.4544 Tj --250 TJm -(be) 9.4047 Tj -15 TJm -(ginning) 30.4457 Tj --250 TJm -(with) 17.7135 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(dash,) 20.7521 Tj --250 TJm -(for) 11.6164 Tj --250 TJm -(e) 4.4234 Tj -15 TJm -(xample:) 32.0995 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -302.27 524.732 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj --600 TJm -(--) 11.9551 Tj --600 TJm -(-myfilename) 65.7532 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -421.821 524.732 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 498.83 Td -/F124_0 9.9626 Tf -(--repetitive-fast) 101.6185 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -178.6 498.83 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -188.563 498.83 Td -/F124_0 9.9626 Tf -(--repetitive-best) 101.6185 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 486.874 Td -/F122_0 9.9626 Tf -(These) 23.7907 Tj --207 TJm -(\003ags) 18.8194 Tj --206 TJm -(are) 12.1643 Tj --207 TJm -(redundant) 39.8404 Tj --207 TJm -(in) 7.7509 Tj --206 TJm -(v) 4.9813 Tj -15 TJm -(ersions) 28.224 Tj --207 TJm -(0.9.5) 19.9252 Tj --207 TJm -(and) 14.386 Tj --206 TJm -(abo) 14.386 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(e.) 6.914 Tj --591 TJm -(The) 15.4918 Tj -15 TJm -(y) 4.9813 Tj --207 TJm -(pro) 13.2801 Tj -15 TJm -(vided) 22.1369 Tj --207 TJm -(some) 21.031 Tj --207 TJm -(coa) 13.8281 Tj -1 TJm -(rse) 11.6164 Tj --207 TJm -(control) 28.224 Tj --207 TJm -(o) 4.9813 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(er) 7.7409 Tj --207 TJm -(the) 12.1743 Tj --206 TJm -(beha) 18.8094 Tj -20 TJm -(viour) 21.031 Tj -108 474.919 Td -(of) 8.2988 Tj --250 TJm -(the) 12.1743 Tj --251 TJm -(sorting) 27.6761 Tj --250 TJm -(algorithm) 38.7446 Tj --250 TJm -(in) 7.7509 Tj --251 TJm -(earlier) 25.4445 Tj --250 TJm -(v) 4.9813 Tj -15 TJm -(ersions,) 30.7147 Tj --250 TJm -(which) 24.3486 Tj --251 TJm -(w) 7.193 Tj -10 TJm -(as) 8.2988 Tj --250 TJm -(sometimes) 42.62 Tj --250 TJm -(useful.) 26.8392 Tj --622 TJm -(0.9.5) 19.9252 Tj --251 TJm -(and) 14.386 Tj --250 TJm -(abo) 14.386 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --250 TJm -(ha) 9.4047 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --251 TJm -(an) 9.4047 Tj --250 TJm -(impro) 23.8007 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(ed) 9.4047 Tj -108 462.964 Td -(algorithm) 38.7446 Tj --250 TJm -(which) 24.3486 Tj --250 TJm -(renders) 29.3199 Tj --250 TJm -(these) 20.4731 Tj --250 TJm -(\003ags) 18.8194 Tj --250 TJm -(irrele) 21.0211 Tj -25 TJm -(v) 4.9813 Tj -25 TJm -(ant.) 14.6649 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 414.264 Td -/F116_0 20.6585 Tf -(2.5.) 34.4584 Tj --278 TJm -(MEMOR) 79.184 Tj -50 TJm -(Y) 13.7792 Tj --278 TJm -(MANA) 61.9548 Tj -50 TJm -(GEMENT) 88.3771 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 392.346 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -104.454 392.346 Td -/F122_0 9.9626 Tf -(compresses) 45.9276 Tj --258 TJm -(lar) 10.5105 Tj -18 TJm -(ge) 9.4047 Tj --257 TJm -(\002les) 16.6077 Tj --258 TJm -(in) 7.7509 Tj --257 TJm -(blocks.) 28.503 Tj --666 TJm -(The) 15.4918 Tj --257 TJm -(block) 22.1369 Tj --258 TJm -(size) 15.4918 Tj --258 TJm -(af) 7.7409 Tj -25 TJm -(fects) 18.8094 Tj --257 TJm -(both) 17.7135 Tj --258 TJm -(the) 12.1743 Tj --257 TJm -(compression) 50.3609 Tj --258 TJm -(ratio) 18.2614 Tj --257 TJm -(achie) 21.0211 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(ed,) 11.8953 Tj --260 TJm -(and) 14.386 Tj --258 TJm -(the) 12.1743 Tj --257 TJm -(amount) 29.8878 Tj -72 380.391 Td -(of) 8.2988 Tj --215 TJm -(memory) 33.2053 Tj --215 TJm -(needed) 28.2141 Tj --215 TJm -(for) 11.6164 Tj --215 TJm -(compression) 50.3609 Tj --214 TJm -(and) 14.386 Tj --215 TJm -(decompression.) 62.2563 Tj --597 TJm -(The) 15.4918 Tj --215 TJm -(\003ags) 18.8194 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -337.719 380.391 Td -/F124_0 9.9626 Tf -(-1) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -351.815 380.391 Td -/F122_0 9.9626 Tf -(through) 30.9936 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -384.95 380.391 Td -/F124_0 9.9626 Tf -(-9) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -399.046 380.391 Td -/F122_0 9.9626 Tf -(specify) 28.772 Tj --215 TJm -(the) 12.1743 Tj --215 TJm -(block) 22.1369 Tj --215 TJm -(size) 15.4918 Tj --215 TJm -(to) 7.7509 Tj --214 TJm -(be) 9.4047 Tj --215 TJm -(100,000) 32.3785 Tj -72 368.435 Td -(bytes) 21.031 Tj --278 TJm -(through) 30.9936 Tj --277 TJm -(900,000) 32.3785 Tj --278 TJm -(bytes) 21.031 Tj --278 TJm -(\(the) 15.4918 Tj --277 TJm -(def) 12.7222 Tj -10 TJm -(ault\)) 18.2614 Tj --278 TJm -(respecti) 30.9837 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(ely) 12.1743 Tj -65 TJm -(.) 2.4907 Tj --786 TJm -(At) 9.9626 Tj --278 TJm -(decompression) 59.7656 Tj --278 TJm -(time,) 20.2042 Tj --284 TJm -(the) 12.1743 Tj --278 TJm -(block) 22.1369 Tj --278 TJm -(size) 15.4918 Tj --277 TJm -(used) 18.2614 Tj --278 TJm -(for) 11.6164 Tj --278 TJm -(compression) 50.3609 Tj -72 356.48 Td -(is) 6.6451 Tj --243 TJm -(read) 17.1456 Tj --242 TJm -(from) 19.3673 Tj --243 TJm -(the) 12.1743 Tj --242 TJm -(header) 26.5503 Tj --243 TJm -(of) 8.2988 Tj --242 TJm -(the) 12.1743 Tj --243 TJm -(compressed) 47.0334 Tj --242 TJm -(\002le,) 15.2229 Tj --244 TJm -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -275.174 356.48 Td -/F124_0 9.9626 Tf -(bunzip2) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -319.433 356.48 Td -/F122_0 9.9626 Tf -(then) 17.1556 Tj --243 TJm -(all) 9.9626 Tj -1 TJm -(o) 4.9813 Tj --1 TJm -(c) 4.4234 Tj -1 TJm -(ates) 15.4918 Tj --243 TJm -(itself) 19.9252 Tj --242 TJm -(just) 14.396 Tj --243 TJm -(enough) 29.3299 Tj --243 TJm -(memory) 33.2053 Tj --242 TJm -(to) 7.7509 Tj --243 TJm -(decompress) 47.0334 Tj -72 344.525 Td -(the) 12.1743 Tj --303 TJm -(\002le.) 15.2229 Tj --940 TJm -(Since) 22.1369 Tj --304 TJm -(block) 22.1369 Tj --303 TJm -(sizes) 19.3673 Tj --303 TJm -(are) 12.1643 Tj --303 TJm -(stored) 24.3486 Tj --304 TJm -(in) 7.7509 Tj --303 TJm -(compressed) 47.0334 Tj --303 TJm -(\002les,) 19.0983 Tj --317 TJm -(it) 5.5392 Tj --303 TJm -(follo) 18.8194 Tj -25 TJm -(ws) 11.0684 Tj --304 TJm -(that) 14.9439 Tj --303 TJm -(the) 12.1743 Tj --303 TJm -(\003ags) 18.8194 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -406.35 344.525 Td -/F124_0 9.9626 Tf -(-1) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -421.327 344.525 Td -/F122_0 9.9626 Tf -(to) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -432.1 344.525 Td -/F124_0 9.9626 Tf -(-9) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -447.077 344.525 Td -/F122_0 9.9626 Tf -(are) 12.1643 Tj --303 TJm -(irrele) 21.0211 Tj -25 TJm -(v) 4.9813 Tj -25 TJm -(ant) 12.1743 Tj --304 TJm -(to) 7.7509 Tj --303 TJm -(and) 14.386 Tj --303 TJm -(so) 8.8568 Tj -72 332.57 Td -(ignored) 30.4357 Tj --250 TJm -(during) 26.0123 Tj --250 TJm -(decompression.) 62.2563 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 310.652 Td -(Compression) 52.5826 Tj --250 TJm -(and) 14.386 Tj --250 TJm -(decompression) 59.7656 Tj --250 TJm -(requirements,) 54.5054 Tj --250 TJm -(in) 7.7509 Tj --250 TJm -(bytes,) 23.5217 Tj --250 TJm -(can) 13.8281 Tj --250 TJm -(be) 9.4047 Tj --250 TJm -(estimated) 38.1866 Tj --250 TJm -(as:) 11.0684 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 247.723] cm -0 0 468 59.776 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 299.131 Td -/F124_0 9.9626 Tf -(Compression:) 71.7307 Tj --1278 TJm -(400k) 23.9102 Tj --426 TJm -(+) 5.9776 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(8) 5.9776 Tj --426 TJm -(x) 5.9776 Tj --426 TJm -(block) 29.8878 Tj --426 TJm -(size) 23.9102 Tj --426 TJm -(\)) 5.9776 Tj -90 275.22 Td -(Decompression:) 83.6858 Tj --426 TJm -(100k) 23.9102 Tj --426 TJm -(+) 5.9776 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(4) 5.9776 Tj --426 TJm -(x) 5.9776 Tj --426 TJm -(block) 29.8878 Tj --426 TJm -(size) 23.9102 Tj --426 TJm -(\),) 11.9551 Tj --426 TJm -(or) 11.9551 Tj -153.66 263.265 Td -(100k) 23.9102 Tj --426 TJm -(+) 5.9776 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(2.5) 17.9327 Tj --426 TJm -(x) 5.9776 Tj --426 TJm -(block) 29.8878 Tj --426 TJm -(size) 23.9102 Tj --426 TJm -(\)) 5.9776 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 225.805 Td -/F122_0 9.9626 Tf -(Lar) 13.8281 Tj -18 TJm -(ger) 12.7222 Tj --292 TJm -(block) 22.1369 Tj --292 TJm -(sizes) 19.3673 Tj --291 TJm -(gi) 7.7509 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --292 TJm -(rapidly) 28.224 Tj --292 TJm -(diminishing) 47.6113 Tj --292 TJm -(mar) 15.4918 Tj -18 TJm -(ginal) 19.9252 Tj --291 TJm -(returns.) 30.1568 Tj --871 TJm -(Most) 20.4831 Tj --292 TJm -(of) 8.2988 Tj --291 TJm -(the) 12.1743 Tj --292 TJm -(compression) 50.3609 Tj --292 TJm -(comes) 25.4544 Tj --292 TJm -(from) 19.3673 Tj --291 TJm -(the) 12.1743 Tj --292 TJm -(\002rst) 15.5018 Tj --292 TJm -(tw) 9.9626 Tj -10 TJm -(o) 4.9813 Tj --292 TJm -(or) 8.2988 Tj -72 213.85 Td -(three) 19.9152 Tj --232 TJm -(hundred) 32.6474 Tj --232 TJm -(k) 4.9813 Tj --232 TJm -(of) 8.2988 Tj --232 TJm -(block) 22.1369 Tj --232 TJm -(size,) 17.9825 Tj --235 TJm -(a) 4.4234 Tj --232 TJm -(f) 3.3175 Tj -10 TJm -(act) 11.6164 Tj --232 TJm -(w) 7.193 Tj -10 TJm -(orth) 16.0497 Tj --232 TJm -(bearing) 29.8778 Tj --232 TJm -(in) 7.7509 Tj --232 TJm -(mind) 20.4831 Tj --232 TJm -(when) 21.579 Tj --231 TJm -(using) 21.589 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -354.025 213.85 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -386.223 213.85 Td -/F122_0 9.9626 Tf -(on) 9.9626 Tj --232 TJm -(small) 21.589 Tj --232 TJm -(machines.) 40.1194 Tj --304 TJm -(It) 6.0871 Tj --232 TJm -(is) 6.6451 Tj --232 TJm -(also) 16.0497 Tj --231 TJm -(important) 38.7446 Tj -72 201.895 Td -(to) 7.7509 Tj --250 TJm -(appreciate) 40.9363 Tj --250 TJm -(that) 14.9439 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(decompression) 59.7656 Tj --250 TJm -(memory) 33.2053 Tj --250 TJm -(requirement) 48.1393 Tj --250 TJm -(is) 6.6451 Tj --250 TJm -(set) 11.0684 Tj --250 TJm -(at) 7.193 Tj --250 TJm -(compression) 50.3609 Tj --250 TJm -(time) 17.7135 Tj --250 TJm -(by) 9.9626 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(choice) 26.0024 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(block) 22.1369 Tj --250 TJm -(size.) 17.9825 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 179.977 Td -(F) 5.5392 Tj -15 TJm -(or) 8.2988 Tj --388 TJm -(\002les) 16.6077 Tj --389 TJm -(compressed) 47.0334 Tj --388 TJm -(with) 17.7135 Tj --389 TJm -(the) 12.1743 Tj --388 TJm -(def) 12.7222 Tj -10 TJm -(ault) 14.9439 Tj --389 TJm -(900k) 19.9252 Tj --388 TJm -(block) 22.1369 Tj --389 TJm -(size,) 17.9825 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -302.002 179.977 Td -/F124_0 9.9626 Tf -(bunzip2) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -347.716 179.977 Td -/F122_0 9.9626 Tf -(will) 15.5018 Tj --388 TJm -(require) 28.2141 Tj --389 TJm -(about) 22.1369 Tj --388 TJm -(3700) 19.9252 Tj --389 TJm -(kbytes) 26.0123 Tj --388 TJm -(to) 7.7509 Tj --389 TJm -(decompress.) 49.5241 Tj -72 168.022 Td -(T) 6.0871 Tj -80 TJm -(o) 4.9813 Tj --424 TJm -(support) 29.8878 Tj --425 TJm -(decompression) 59.7656 Tj --424 TJm -(of) 8.2988 Tj --424 TJm -(an) 9.4047 Tj -15 TJm -(y) 4.9813 Tj --425 TJm -(\002l) 8.3088 Tj -1 TJm -(e) 4.4234 Tj --425 TJm -(on) 9.9626 Tj --424 TJm -(a) 4.4234 Tj --424 TJm -(4) 4.9813 Tj --425 TJm -(me) 12.1743 Tj -15 TJm -(g) 4.9813 Tj -5 TJm -(abyte) 21.579 Tj --424 TJm -(machine,) 36.2439 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -348.272 168.022 Td -/F124_0 9.9626 Tf -(bunzip2) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -394.342 168.022 Td -/F122_0 9.9626 Tf -(has) 13.2801 Tj --424 TJm -(an) 9.4047 Tj --425 TJm -(option) 25.4644 Tj --424 TJm -(to) 7.7509 Tj --424 TJm -(decompress) 47.0334 Tj --424 TJm -(using) 21.589 Tj -72 156.067 Td -(approximately) 57.5539 Tj --281 TJm -(half) 15.4918 Tj --281 TJm -(this) 14.396 Tj --280 TJm -(amount) 29.8878 Tj --281 TJm -(of) 8.2988 Tj --281 TJm -(memory) 33.2053 Tj -65 TJm -(,) 2.4907 Tj --288 TJm -(about) 22.1369 Tj --281 TJm -(2300) 19.9252 Tj --281 TJm -(kbytes.) 28.503 Tj --805 TJm -(Decompression) 61.9773 Tj --280 TJm -(speed) 22.6848 Tj --281 TJm -(is) 6.6451 Tj --281 TJm -(also) 16.0497 Tj --281 TJm -(halv) 17.1556 Tj -15 TJm -(ed,) 11.8953 Tj --288 TJm -(so) 8.8568 Tj --281 TJm -(you) 14.9439 Tj --281 TJm -(should) 26.5703 Tj -72 144.112 Td -(use) 13.2801 Tj --250 TJm -(this) 14.396 Tj --250 TJm -(option) 25.4644 Tj --250 TJm -(only) 17.7135 Tj --250 TJm -(where) 24.3386 Tj --250 TJm -(necessary) 38.7246 Tj -65 TJm -(.) 2.4907 Tj --620 TJm -(The) 15.4918 Tj --250 TJm -(rele) 14.9339 Tj -25 TJm -(v) 4.9813 Tj -25 TJm -(ant) 12.1743 Tj --250 TJm -(\003ag) 14.9439 Tj --250 TJm -(is) 6.6451 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -305.024 144.112 Td -/F124_0 9.9626 Tf -(-s) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -316.979 144.112 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 122.194 Td -(In) 8.2988 Tj --204 TJm -(general,) 31.8106 Tj --214 TJm -(try) 11.0684 Tj --204 TJm -(and) 14.386 Tj --205 TJm -(use) 13.2801 Tj --204 TJm -(the) 12.1743 Tj --204 TJm -(lar) 10.5105 Tj -18 TJm -(gest) 16.0497 Tj --205 TJm -(block) 22.1369 Tj --204 TJm -(size) 15.4918 Tj --205 TJm -(memory) 33.2053 Tj --204 TJm -(constraints) 43.1679 Tj --204 TJm -(allo) 14.9439 Tj -25 TJm -(w) 7.193 Tj -65 TJm -(,) 2.4907 Tj --214 TJm -(since) 20.4731 Tj --204 TJm -(that) 14.9439 Tj --205 TJm -(maximises) 42.62 Tj --204 TJm -(the) 12.1743 Tj --204 TJm -(compression) 50.3609 Tj --205 TJm -(achie) 21.0211 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(ed.) 11.8953 Tj -72 110.239 Td -(Compression) 52.5826 Tj --250 TJm -(and) 14.386 Tj --250 TJm -(decompression) 59.7656 Tj --250 TJm -(speed) 22.6848 Tj --250 TJm -(are) 12.1643 Tj --250 TJm -(virtually) 33.7633 Tj --250 TJm -(unaf) 17.7035 Tj -25 TJm -(fected) 24.3386 Tj --250 TJm -(by) 9.9626 Tj --250 TJm -(block) 22.1369 Tj --250 TJm -(size.) 17.9825 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 88.321 Td -(Another) 32.6474 Tj --296 TJm -(signi\002cant) 41.5142 Tj --296 TJm -(point) 20.4831 Tj --295 TJm -(applies) 28.224 Tj --296 TJm -(to) 7.7509 Tj --296 TJm -(\002les) 16.6077 Tj --296 TJm -(which) 24.3486 Tj --296 TJm -(\002t) 8.3088 Tj --296 TJm -(in) 7.7509 Tj --296 TJm -(a) 4.4234 Tj --295 TJm -(single) 23.8007 Tj --296 TJm -(block) 22.1369 Tj --296 TJm -(--) 6.6351 Tj --296 TJm -(that) 14.9439 Tj --296 TJm -(means) 25.4544 Tj --296 TJm -(most) 19.3773 Tj --295 TJm -(\002les) 16.6077 Tj --296 TJm -(you') 18.2614 Tj -50 TJm -(d) 4.9813 Tj --296 TJm -(encounter) 39.2825 Tj --296 TJm -(using) 21.589 Tj --296 TJm -(a) 4.4234 Tj -72 76.366 Td -(lar) 10.5105 Tj -18 TJm -(ge) 9.4047 Tj --290 TJm -(block) 22.1369 Tj --290 TJm -(size.) 17.9825 Tj --859 TJm -(The) 15.4918 Tj --290 TJm -(amount) 29.8878 Tj --290 TJm -(of) 8.2988 Tj --290 TJm -(real) 14.9339 Tj --290 TJm -(memory) 33.2053 Tj --289 TJm -(touched) 31.5416 Tj --290 TJm -(is) 6.6451 Tj --290 TJm -(proportional) 49.2551 Tj --290 TJm -(to) 7.7509 Tj --290 TJm -(the) 12.1743 Tj --290 TJm -(size) 15.4918 Tj --290 TJm -(of) 8.2988 Tj --290 TJm -(the) 12.1743 Tj --289 TJm -(\002le,) 15.2229 Tj --300 TJm -(since) 20.4731 Tj --290 TJm -(the) 12.1743 Tj --290 TJm -(\002le) 12.7322 Tj --290 TJm -(is) 6.6451 Tj --290 TJm -(smaller) 29.3299 Tj -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -539.395 50.951 Td -(5) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 6 9 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -477.109 749.245 Td -/F122_0 9.9626 Tf -(Ho) 12.1743 Tj -25 TJm -(w) 7.193 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(use) 13.2801 Tj --250 TJm -(bzip2) 22.1369 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -72 710.037 Td -/F122_0 9.9626 Tf -(than) 17.1556 Tj --362 TJm -(a) 4.4234 Tj --362 TJm -(block.) 24.6275 Tj --1293 TJm -(F) 5.5392 Tj -15 TJm -(or) 8.2988 Tj --362 TJm -(e) 4.4234 Tj -15 TJm -(xample,) 31.8205 Tj --390 TJm -(compressing) 50.3609 Tj --362 TJm -(a) 4.4234 Tj --362 TJm -(\002le) 12.7322 Tj --362 TJm -(20,000) 27.3972 Tj --362 TJm -(bytes) 21.031 Tj --362 TJm -(long) 17.7135 Tj --362 TJm -(with) 17.7135 Tj --362 TJm -(the) 12.1743 Tj --362 TJm -(\003ag) 14.9439 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -406.528 710.037 Td -/F124_0 9.9626 Tf -(-9) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -422.09 710.037 Td -/F122_0 9.9626 Tf -(will) 15.5018 Tj --362 TJm -(cause) 22.1269 Tj --362 TJm -(the) 12.1743 Tj --362 TJm -(compressor) 45.9276 Tj --362 TJm -(to) 7.7509 Tj -72 698.082 Td -(allocate) 30.9837 Tj --271 TJm -(around) 27.6661 Tj --272 TJm -(7600k) 24.9065 Tj --271 TJm -(of) 8.2988 Tj --272 TJm -(memory) 33.2053 Tj -65 TJm -(,) 2.4907 Tj --277 TJm -(b) 4.9813 Tj -20 TJm -(ut) 7.7509 Tj --271 TJm -(only) 17.7135 Tj --272 TJm -(touch) 22.1369 Tj --271 TJm -(400k) 19.9252 Tj --272 TJm -(+) 5.6189 Tj --271 TJm -(20000) 24.9065 Tj --272 TJm -(*) 4.9813 Tj --271 TJm -(8) 4.9813 Tj --272 TJm -(=) 5.6189 Tj --271 TJm -(560) 14.9439 Tj --272 TJm -(kbytes) 26.0123 Tj --271 TJm -(of) 8.2988 Tj --272 TJm -(it.) 8.0299 Tj --748 TJm -(Similarly) 37.0908 Tj -65 TJm -(,) 2.4907 Tj --277 TJm -(the) 12.1743 Tj --272 TJm -(decompressor) 55.3323 Tj -72 686.127 Td -(will) 15.5018 Tj --250 TJm -(allocate) 30.9837 Tj --250 TJm -(3700k) 24.9065 Tj --250 TJm -(b) 4.9813 Tj -20 TJm -(ut) 7.7509 Tj --250 TJm -(only) 17.7135 Tj --250 TJm -(touch) 22.1369 Tj --250 TJm -(100k) 19.9252 Tj --250 TJm -(+) 5.6189 Tj --250 TJm -(20000) 24.9065 Tj --250 TJm -(*) 4.9813 Tj --250 TJm -(4) 4.9813 Tj --250 TJm -(=) 5.6189 Tj --250 TJm -(180) 14.9439 Tj --250 TJm -(kbytes.) 28.503 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 664.209 Td -(Here) 19.3573 Tj --293 TJm -(is) 6.6451 Tj --294 TJm -(a) 4.4234 Tj --293 TJm -(table) 19.3673 Tj --294 TJm -(which) 24.3486 Tj --293 TJm -(summarises) 47.0434 Tj --294 TJm -(the) 12.1743 Tj --293 TJm -(maximum) 40.4083 Tj --294 TJm -(memory) 33.2053 Tj --293 TJm -(usage) 22.6848 Tj --294 TJm -(for) 11.6164 Tj --293 TJm -(dif) 11.0684 Tj -25 TJm -(ferent) 23.2328 Tj --294 TJm -(block) 22.1369 Tj --293 TJm -(sizes.) 21.8579 Tj --881 TJm -(Also) 18.8194 Tj --293 TJm -(recorded) 34.8492 Tj --294 TJm -(is) 6.6451 Tj --293 TJm -(the) 12.1743 Tj --294 TJm -(total) 17.7135 Tj -72 652.254 Td -(compressed) 47.0334 Tj --289 TJm -(size) 15.4918 Tj --289 TJm -(for) 11.6164 Tj --289 TJm -(14) 9.9626 Tj --289 TJm -(\002les) 16.6077 Tj --290 TJm -(of) 8.2988 Tj --289 TJm -(the) 12.1743 Tj --289 TJm -(Calg) 18.8194 Tj -5 TJm -(ary) 12.7222 Tj --289 TJm -(T) 6.0871 Tj -70 TJm -(e) 4.4234 Tj -15 TJm -(xt) 7.7509 Tj --289 TJm -(Compression) 52.5826 Tj --289 TJm -(Corpus) 28.782 Tj --289 TJm -(totalling) 33.2153 Tj --289 TJm -(3,141,622) 39.8504 Tj --290 TJm -(bytes.) 23.5217 Tj --854 TJm -(This) 17.7135 Tj --290 TJm -(column) 29.8878 Tj --289 TJm -(gi) 7.7509 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(es) 8.2988 Tj -72 640.299 Td -(some) 21.031 Tj --253 TJm -(feel) 14.9339 Tj --253 TJm -(for) 11.6164 Tj --253 TJm -(ho) 9.9626 Tj -25 TJm -(w) 7.193 Tj --253 TJm -(compression) 50.3609 Tj --253 TJm -(v) 4.9813 Tj -25 TJm -(aries) 18.8094 Tj --253 TJm -(with) 17.7135 Tj --253 TJm -(block) 22.1369 Tj --253 TJm -(size.) 17.9825 Tj --638 TJm -(These) 23.7907 Tj --253 TJm -(\002gures) 27.1182 Tj --253 TJm -(tend) 17.1556 Tj --254 TJm -(to) 7.7509 Tj --253 TJm -(understate) 40.9463 Tj --253 TJm -(the) 12.1743 Tj --253 TJm -(adv) 14.386 Tj -25 TJm -(antage) 26.0024 Tj --253 TJm -(of) 8.2988 Tj --253 TJm -(lar) 10.5105 Tj -18 TJm -(ger) 12.7222 Tj --253 TJm -(block) 22.1369 Tj -72 628.344 Td -(sizes) 19.3673 Tj --250 TJm -(for) 11.6164 Tj --250 TJm -(lar) 10.5105 Tj -18 TJm -(ger) 12.7222 Tj --250 TJm -(\002les,) 19.0983 Tj --250 TJm -(since) 20.4731 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(Corpus) 28.782 Tj --250 TJm -(is) 6.6451 Tj --250 TJm -(dominated) 42.0621 Tj --250 TJm -(by) 9.9626 Tj --250 TJm -(smaller) 29.3299 Tj --250 TJm -(\002les.) 19.0983 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 469.773] cm -0 0 468 155.417 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -123.952 616.822 Td -/F124_0 9.9626 Tf -(Compress) 47.8205 Tj --1278 TJm -(Decompress) 59.7756 Tj --1278 TJm -(Decompress) 59.7756 Tj --1278 TJm -(Corpus) 35.8654 Tj -90 604.867 Td -(Flag) 23.9102 Tj --2130 TJm -(usage) 29.8878 Tj --2556 TJm -(usage) 29.8878 Tj --2982 TJm -(-s) 11.9551 Tj --426 TJm -(usage) 29.8878 Tj --2130 TJm -(Size) 23.9102 Tj -94.244 580.957 Td -(-1) 11.9551 Tj --2556 TJm -(1200k) 29.8878 Tj --2982 TJm -(500k) 23.9102 Tj --3834 TJm -(350k) 23.9102 Tj --2556 TJm -(914704) 35.8654 Tj -94.244 569.001 Td -(-2) 11.9551 Tj --2556 TJm -(2000k) 29.8878 Tj --2982 TJm -(900k) 23.9102 Tj --3834 TJm -(600k) 23.9102 Tj --2556 TJm -(877703) 35.8654 Tj -94.244 557.046 Td -(-3) 11.9551 Tj --2556 TJm -(2800k) 29.8878 Tj --2556 TJm -(1300k) 29.8878 Tj --3834 TJm -(850k) 23.9102 Tj --2556 TJm -(860338) 35.8654 Tj -94.244 545.091 Td -(-4) 11.9551 Tj --2556 TJm -(3600k) 29.8878 Tj --2556 TJm -(1700k) 29.8878 Tj --3408 TJm -(1100k) 29.8878 Tj --2556 TJm -(846899) 35.8654 Tj -94.244 533.136 Td -(-5) 11.9551 Tj --2556 TJm -(4400k) 29.8878 Tj --2556 TJm -(2100k) 29.8878 Tj --3408 TJm -(1350k) 29.8878 Tj --2556 TJm -(845160) 35.8654 Tj -94.244 521.181 Td -(-6) 11.9551 Tj --2556 TJm -(5200k) 29.8878 Tj --2556 TJm -(2500k) 29.8878 Tj --3408 TJm -(1600k) 29.8878 Tj --2556 TJm -(838626) 35.8654 Tj -94.244 509.225 Td -(-7) 11.9551 Tj --2556 TJm -(6100k) 29.8878 Tj --2556 TJm -(2900k) 29.8878 Tj --3408 TJm -(1850k) 29.8878 Tj --2556 TJm -(834096) 35.8654 Tj -94.244 497.27 Td -(-8) 11.9551 Tj --2556 TJm -(6800k) 29.8878 Tj --2556 TJm -(3300k) 29.8878 Tj --3408 TJm -(2100k) 29.8878 Tj --2556 TJm -(828642) 35.8654 Tj -94.244 485.315 Td -(-9) 11.9551 Tj --2556 TJm -(7600k) 29.8878 Tj --2556 TJm -(3700k) 29.8878 Tj --3408 TJm -(2350k) 29.8878 Tj --2556 TJm -(828642) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 435.021 Td -/F116_0 20.6585 Tf -(2.6.) 34.4584 Tj --278 TJm -(RECO) 59.6824 Tj -50 TJm -(VERING) 79.2047 Tj --278 TJm -(D) 14.9154 Tj -40 TJm -(A) 14.9154 Tj -90 TJm -(T) 12.6223 Tj -90 TJm -(A) 14.9154 Tj --278 TJm -(FR) 27.5378 Tj -20 TJm -(OM) 33.2808 Tj --278 TJm -(D) 14.9154 Tj -40 TJm -(AMA) 47.0394 Tj -50 TJm -(GED) 44.767 Tj -72 410.23 Td -(FILES) 58.5462 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 388.312 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -105.138 388.312 Td -/F122_0 9.9626 Tf -(compresses) 45.9276 Tj --326 TJm -(\002les) 16.6077 Tj --326 TJm -(in) 7.7509 Tj --326 TJm -(blocks,) 28.503 Tj --346 TJm -(usually) 28.782 Tj --326 TJm -(900kbytes) 40.9562 Tj --326 TJm -(long.) 20.2042 Tj --1077 TJm -(Each) 19.9152 Tj --326 TJm -(block) 22.1369 Tj --326 TJm -(is) 6.6451 Tj --327 TJm -(handled) 31.5416 Tj --326 TJm -(independently) 56.4481 Tj -65 TJm -(.) 2.4907 Tj --1077 TJm -(If) 6.6351 Tj --326 TJm -(a) 4.4234 Tj --326 TJm -(media) 24.3486 Tj --326 TJm -(or) 8.2988 Tj -72 376.357 Td -(transmission) 50.3709 Tj --319 TJm -(error) 19.3573 Tj --318 TJm -(causes) 26.0024 Tj --319 TJm -(a) 4.4234 Tj --318 TJm -(multi-block) 46.4955 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -234.519 376.357 Td -/F124_0 9.9626 Tf -(.bz2) 23.9102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -261.603 376.357 Td -/F122_0 9.9626 Tf -(\002le) 12.7322 Tj --319 TJm -(to) 7.7509 Tj --318 TJm -(become) 30.9837 Tj --319 TJm -(damaged,) 38.4556 Tj --336 TJm -(i) 2.7696 Tj -1 TJm -(t) 2.7696 Tj --319 TJm -(may) 17.1556 Tj --319 TJm -(be) 9.4047 Tj --318 TJm -(possible) 32.6574 Tj --319 TJm -(to) 7.7509 Tj --318 TJm -(reco) 17.1456 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(er) 7.7409 Tj --319 TJm -(data) 16.5977 Tj --319 TJm -(from) 19.3673 Tj --318 TJm -(the) 12.1743 Tj -72 364.402 Td -(undamaged) 45.9276 Tj --250 TJm -(blocks) 26.0123 Tj --250 TJm -(in) 7.7509 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(\002le.) 15.2229 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 342.484 Td -(The) 15.4918 Tj --358 TJm -(compressed) 47.0334 Tj --357 TJm -(representation) 56.4381 Tj --358 TJm -(of) 8.2988 Tj --357 TJm -(each) 18.2515 Tj --358 TJm -(block) 22.1369 Tj --358 TJm -(is) 6.6451 Tj --357 TJm -(delimited) 37.6387 Tj --358 TJm -(by) 9.9626 Tj --357 TJm -(a) 4.4234 Tj --358 TJm -(48-bit) 23.8007 Tj --358 TJm -(pattern,) 30.1568 Tj --384 TJm -(which) 24.3486 Tj --358 TJm -(mak) 17.1556 Tj -10 TJm -(es) 8.2988 Tj --357 TJm -(it) 5.5392 Tj --358 TJm -(possible) 32.6574 Tj --357 TJm -(to) 7.7509 Tj --358 TJm -(\002nd) 15.5018 Tj --358 TJm -(the) 12.1743 Tj -72 330.529 Td -(block) 22.1369 Tj --286 TJm -(boundaries) 43.7159 Tj --286 TJm -(with) 17.7135 Tj --285 TJm -(reasonable) 42.6001 Tj --286 TJm -(certainty) 34.8591 Tj -65 TJm -(.) 2.4907 Tj --835 TJm -(Each) 19.9152 Tj --285 TJm -(block) 22.1369 Tj --286 TJm -(also) 16.0497 Tj --286 TJm -(carries) 26.5503 Tj --286 TJm -(its) 9.4147 Tj --285 TJm -(o) 4.9813 Tj -25 TJm -(wn) 12.1743 Tj --286 TJm -(32-bit) 23.8007 Tj --286 TJm -(CRC,) 22.4258 Tj --286 TJm -(so) 8.8568 Tj --285 TJm -(damaged) 35.965 Tj --286 TJm -(blocks) 26.0123 Tj --286 TJm -(can) 13.8281 Tj --286 TJm -(be) 9.4047 Tj -72 318.574 Td -(distinguished) 53.1405 Tj --250 TJm -(from) 19.3673 Tj --250 TJm -(undamaged) 45.9276 Tj --250 TJm -(ones.) 20.7521 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 296.656 Td -/F124_0 9.9626 Tf -(bzip2recover) 71.7307 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -146.448 296.656 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --273 TJm -(a) 4.4234 Tj --272 TJm -(simple) 26.5703 Tj --273 TJm -(program) 33.7533 Tj --273 TJm -(whose) 25.4544 Tj --272 TJm -(purpose) 31.5416 Tj --273 TJm -(is) 6.6451 Tj --273 TJm -(to) 7.7509 Tj --272 TJm -(search) 25.4445 Tj --273 TJm -(for) 11.6164 Tj --273 TJm -(blocks) 26.0123 Tj --272 TJm -(in) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -392.655 296.656 Td -/F124_0 9.9626 Tf -(.bz2) 23.9102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -419.282 296.656 Td -/F122_0 9.9626 Tf -(\002les,) 19.0983 Tj --278 TJm -(and) 14.386 Tj --273 TJm -(write) 20.4731 Tj --273 TJm -(each) 18.2515 Tj --272 TJm -(block) 22.1369 Tj --273 TJm -(out) 12.7322 Tj -72 284.701 Td -(into) 15.5018 Tj --255 TJm -(i) 2.7696 Tj -1 TJm -(ts) 6.6451 Tj --255 TJm -(o) 4.9813 Tj -25 TJm -(wn) 12.1743 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -121.429 284.701 Td -/F124_0 9.9626 Tf -(.bz2) 23.9102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -147.875 284.701 Td -/F122_0 9.9626 Tf -(\002le.) 15.2229 Tj --647 TJm -(Y) 7.193 Tj -110 TJm -(ou) 9.9626 Tj --255 TJm -(can) 13.8281 Tj --254 TJm -(then) 17.1556 Tj --255 TJm -(use) 13.2801 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -240.01 284.701 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj --600 TJm -(-t) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -290.367 284.701 Td -/F122_0 9.9626 Tf -(to) 7.7509 Tj --254 TJm -(test) 13.8381 Tj --255 TJm -(the) 12.1743 Tj --254 TJm -(inte) 14.9439 Tj -15 TJm -(grity) 18.8194 Tj --255 TJm -(of) 8.2988 Tj --254 TJm -(the) 12.1743 Tj --255 TJm -(resulting) 34.8691 Tj --254 TJm -(\002les,) 19.0983 Tj --256 TJm -(and) 14.386 Tj --255 TJm -(decompress) 47.0334 Tj --254 TJm -(those) 21.031 Tj -72 272.746 Td -(which) 24.3486 Tj --250 TJm -(are) 12.1643 Tj --250 TJm -(undamaged.) 48.4182 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 250.828 Td -/F124_0 9.9626 Tf -(bzip2recover) 71.7307 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -150.099 250.828 Td -/F122_0 9.9626 Tf -(tak) 12.1743 Tj -10 TJm -(es) 8.2988 Tj --639 TJm -(a) 4.4234 Tj --639 TJm -(single) 23.8007 Tj --639 TJm -(ar) 7.7409 Tj -18 TJm -(gument,) 32.3785 Tj --737 TJm -(the) 12.1743 Tj --639 TJm -(name) 21.579 Tj --639 TJm -(of) 8.2988 Tj --639 TJm -(the) 12.1743 Tj --639 TJm -(damaged) 35.965 Tj --639 TJm -(\002le,) 15.2229 Tj --737 TJm -(and) 14.386 Tj --639 TJm -(writes) 24.3486 Tj --639 TJm -(a) 4.4234 Tj --639 TJm -(number) 30.4357 Tj --639 TJm -(of) 8.2988 Tj --640 TJm -(\002) 5.5392 Tj -1 TJm -(les) 11.0684 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 238.873 Td -/F124_0 9.9626 Tf -(rec0001file.bz2) 89.6634 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -161.664 238.873 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -169.072 238.873 Td -/F124_0 9.9626 Tf -(rec0002file.bz2) 89.6634 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -258.736 238.873 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --494 TJm -(etc,) 14.107 Tj --493 TJm -(containing) 42.0621 Tj --445 TJm -(the) 12.1743 Tj --445 TJm -(e) 4.4234 Tj -15 TJm -(xtracted) 32.0895 Tj --445 TJm -(blocks.) 28.503 Tj --1789 TJm -(The) 15.4918 Tj --445 TJm -(output) 25.4644 Tj --445 TJm -(\002lenames) 38.1866 Tj --445 TJm -(are) 12.1643 Tj -72 226.918 Td -(designed) 35.417 Tj --337 TJm -(so) 8.8568 Tj --337 TJm -(that) 14.9439 Tj --337 TJm -(the) 12.1743 Tj --337 TJm -(use) 13.2801 Tj --337 TJm -(of) 8.2988 Tj --337 TJm -(wildc) 22.1369 Tj -1 TJm -(ards) 16.5977 Tj --337 TJm -(in) 7.7509 Tj --337 TJm -(subsequent) 44.2738 Tj --337 TJm -(processing) 42.61 Tj --337 TJm -(--) 6.6351 Tj --337 TJm -(for) 11.6164 Tj --337 TJm -(e) 4.4234 Tj -15 TJm -(xample,) 31.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -396.538 226.918 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj --600 TJm -(-dc) 17.9327 Tj --600 TJm -(rec) 17.9327 Tj -474.247 225.174 Td -(*) 5.9776 Tj -480.224 226.918 Td -(file.bz2) 47.8205 Tj --600 TJm -(>) 5.9776 Tj -72 214.962 Td -(recovered_data) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -158.177 214.962 Td -/F122_0 9.9626 Tf -(--) 6.6351 Tj --250 TJm -(lists) 16.0597 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(\002les) 16.6077 Tj --250 TJm -(in) 7.7509 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(correct) 27.6562 Tj --250 TJm -(order) 21.0211 Tj -55 TJm -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 193.045 Td -/F124_0 9.9626 Tf -(bzip2recover) 71.7307 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -145.93 193.045 Td -/F122_0 9.9626 Tf -(should) 26.5703 Tj --221 TJm -(be) 9.4047 Tj --220 TJm -(of) 8.2988 Tj --221 TJm -(most) 19.3773 Tj --221 TJm -(use) 13.2801 Tj --220 TJm -(dealing) 29.3299 Tj --221 TJm -(with) 17.7135 Tj --221 TJm -(lar) 10.5105 Tj -18 TJm -(ge) 9.4047 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -307.229 193.045 Td -/F124_0 9.9626 Tf -(.bz2) 23.9102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -333.338 193.045 Td -/F122_0 9.9626 Tf -(\002les,) 19.0983 Tj --227 TJm -(as) 8.2988 Tj --220 TJm -(these) 20.4731 Tj --221 TJm -(will) 15.5018 Tj --221 TJm -(contain) 29.3299 Tj --220 TJm -(man) 17.1556 Tj -15 TJm -(y) 4.9813 Tj --221 TJm -(blocks.) 28.503 Tj --600 TJm -(It) 6.0871 Tj --221 TJm -(is) 6.6451 Tj --221 TJm -(clearly) 27.1082 Tj -72 181.089 Td -(futile) 21.031 Tj --289 TJm -(to) 7.7509 Tj --289 TJm -(use) 13.2801 Tj --289 TJm -(it) 5.5392 Tj --289 TJm -(on) 9.9626 Tj --289 TJm -(damaged) 35.965 Tj --289 TJm -(single-block) 49.2551 Tj --290 TJm -(\002les) 16.6077 Tj -1 TJm -(,) 2.4907 Tj --299 TJm -(since) 20.4731 Tj --289 TJm -(a) 4.4234 Tj --290 TJm -(damaged) 35.965 Tj --289 TJm -(block) 22.1369 Tj --289 TJm -(cannot) 26.5603 Tj --289 TJm -(be) 9.4047 Tj --289 TJm -(reco) 17.1456 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(ered.) 19.6363 Tj --854 TJm -(If) 6.6351 Tj --289 TJm -(you) 14.9439 Tj --290 TJm -(wish) 18.8194 Tj --289 TJm -(to) 7.7509 Tj --289 TJm -(minimise) 37.0908 Tj -72 169.134 Td -(an) 9.4047 Tj -15 TJm -(y) 4.9813 Tj --320 TJm -(potential) 34.8691 Tj --320 TJm -(data) 16.5977 Tj --319 TJm -(loss) 15.5018 Tj --320 TJm -(through) 30.9936 Tj --320 TJm -(media) 24.3486 Tj --320 TJm -(or) 8.2988 Tj --319 TJm -(transmission) 50.3709 Tj --320 TJm -(errors,) 25.7234 Tj --337 TJm -(you) 14.9439 Tj --320 TJm -(might) 23.2527 Tj --320 TJm -(consider) 33.7533 Tj --320 TJm -(compressing) 50.3609 Tj --319 TJm -(with) 17.7135 Tj --320 TJm -(a) 4.4234 Tj --320 TJm -(smaller) 29.3299 Tj --320 TJm -(block) 22.1369 Tj -72 157.179 Td -(size.) 17.9825 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 122.426 Td -/F116_0 20.6585 Tf -(2.7.) 34.4584 Tj --278 TJm -(PERFORMANCE) 161.818 Tj --278 TJm -(NO) 30.9878 Tj -40 TJm -(TES) 40.1808 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 100.508 Td -/F122_0 9.9626 Tf -(The) 15.4918 Tj --305 TJm -(sorting) 27.6761 Tj --304 TJm -(phase) 22.6848 Tj --305 TJm -(of) 8.2988 Tj --304 TJm -(compression) 50.3609 Tj --305 TJm -(g) 4.9813 Tj -5 TJm -(athers) 23.7907 Tj --304 TJm -(together) 32.6474 Tj --305 TJm -(similar) 27.6761 Tj --304 TJm -(strings) 26.5703 Tj --305 TJm -(in) 7.7509 Tj --304 TJm -(the) 12.1743 Tj --305 TJm -(\002le.) 15.2229 Tj --947 TJm -(Because) 33.1954 Tj --305 TJm -(of) 8.2988 Tj --304 TJm -(this,) 16.8866 Tj --319 TJm -(\002les) 16.6077 Tj --304 TJm -(containing) 42.0621 Tj --305 TJm -(v) 4.9813 Tj -15 TJm -(ery) 12.7222 Tj -72 88.553 Td -(long) 17.7135 Tj --286 TJm -(runs) 17.1556 Tj --285 TJm -(of) 8.2988 Tj --286 TJm -(repeated) 33.7433 Tj --285 TJm -(symbols,) 35.706 Tj --295 TJm -(lik) 10.5205 Tj -10 TJm -(e) 4.4234 Tj --286 TJm -("aabaabaabaab) 59.3771 Tj --285 TJm -(...") 11.5367 Tj --571 TJm -(\(repeated) 37.0609 Tj --286 TJm -(se) 8.2988 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(eral) 14.9339 Tj --286 TJm -(hundred) 32.6474 Tj --285 TJm -(times\)) 24.9065 Tj --286 TJm -(may) 17.1556 Tj --286 TJm -(com) 17.1556 Tj -1 TJm -(press) 20.4731 Tj --286 TJm -(more) 20.4731 Tj --286 TJm -(slo) 11.6264 Tj -25 TJm -(wly) 14.9439 Tj -72 76.598 Td -(than) 17.1556 Tj --322 TJm -(normal.) 30.7147 Tj --524 TJm -(V) 7.193 Tj -111 TJm -(ersions) 28.224 Tj --322 TJm -(0.9.5) 19.9252 Tj --321 TJm -(and) 14.386 Tj --322 TJm -(abo) 14.386 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --322 TJm -(f) 3.3175 Tj -10 TJm -(are) 12.1643 Tj --321 TJm -(much) 22.1369 Tj --322 TJm -(better) 22.6848 Tj --321 TJm -(than) 17.1556 Tj --322 TJm -(pre) 12.7222 Tj -25 TJm -(vious) 21.589 Tj --321 TJm -(v) 4.9813 Tj -15 TJm -(ersions) 28.224 Tj --322 TJm -(in) 7.7509 Tj --322 TJm -(this) 14.396 Tj --321 TJm -(respect.) 30.7047 Tj --1050 TJm -(The) 15.4918 Tj --321 TJm -(ratio) 18.2614 Tj --322 TJm -(between) 33.1954 Tj -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -539.395 50.951 Td -(6) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 7 10 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -477.109 749.245 Td -/F122_0 9.9626 Tf -(Ho) 12.1743 Tj -25 TJm -(w) 7.193 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(use) 13.2801 Tj --250 TJm -(bzip2) 22.1369 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -72 710.037 Td -/F122_0 9.9626 Tf -(w) 7.193 Tj -10 TJm -(orst-case) 35.4071 Tj --289 TJm -(and) 14.386 Tj --290 TJm -(a) 4.4234 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(erage-case) 42.0322 Tj --289 TJm -(compression) 50.3609 Tj --290 TJm -(time) 17.7135 Tj --289 TJm -(is) 6.6451 Tj --290 TJm -(in) 7.7509 Tj --289 TJm -(the) 12.1743 Tj --290 TJm -(re) 7.7409 Tj -15 TJm -(gion) 17.7135 Tj --289 TJm -(of) 8.2988 Tj --289 TJm -(10:1.) 20.2042 Tj --857 TJm -(F) 5.5392 Tj -15 TJm -(or) 8.2988 Tj --290 TJm -(pre) 12.7222 Tj -25 TJm -(vious) 21.589 Tj --289 TJm -(v) 4.9813 Tj -15 TJm -(ersions,) 30.7147 Tj --299 TJm -(this) 14.396 Tj --290 TJm -(\002gure) 23.2427 Tj --289 TJm -(w) 7.193 Tj -10 TJm -(as) 8.2988 Tj --290 TJm -(more) 20.4731 Tj -72 698.082 Td -(lik) 10.5205 Tj -10 TJm -(e) 4.4234 Tj --250 TJm -(100:1.) 25.1855 Tj --620 TJm -(Y) 7.193 Tj -110 TJm -(ou) 9.9626 Tj --250 TJm -(can) 13.8281 Tj --250 TJm -(use) 13.2801 Tj --250 TJm -(the) 12.1743 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -186.002 698.082 Td -/F124_0 9.9626 Tf -(-vvvv) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -218.38 698.082 Td -/F122_0 9.9626 Tf -(option) 25.4644 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(monitor) 31.5516 Tj --250 TJm -(progress) 33.7533 Tj --250 TJm -(in) 7.7509 Tj --250 TJm -(great) 19.9152 Tj --250 TJm -(detail,) 24.6275 Tj --250 TJm -(if) 6.0871 Tj --250 TJm -(you) 14.9439 Tj --250 TJm -(w) 7.193 Tj -10 TJm -(ant.) 14.6649 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 676.164 Td -(Decompression) 61.9773 Tj --250 TJm -(speed) 22.6848 Tj --250 TJm -(is) 6.6451 Tj --250 TJm -(unaf) 17.7035 Tj -25 TJm -(fected) 24.3386 Tj --250 TJm -(by) 9.9626 Tj --250 TJm -(these) 20.4731 Tj --250 TJm -(phenomena.) 48.4182 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 654.247 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -104.863 654.247 Td -/F122_0 9.9626 Tf -(usually) 28.782 Tj --299 TJm -(allocates) 34.8591 Tj --298 TJm -(se) 8.2988 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(eral) 14.9339 Tj --299 TJm -(me) 12.1743 Tj -15 TJm -(g) 4.9813 Tj -5 TJm -(abytes) 25.4544 Tj --298 TJm -(of) 8.2988 Tj --299 TJm -(memory) 33.2053 Tj --299 TJm -(to) 7.7509 Tj --298 TJm -(operate) 29.3199 Tj --299 TJm -(in,) 10.2416 Tj --311 TJm -(and) 14.386 Tj --298 TJm -(then) 17.1556 Tj --299 TJm -(char) 17.1456 Tj -18 TJm -(ges) 13.2801 Tj --298 TJm -(all) 9.9626 Tj --299 TJm -(o) 4.9813 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(er) 7.7409 Tj --299 TJm -(it) 5.5392 Tj --298 TJm -(in) 7.7509 Tj --299 TJm -(a) 4.4234 Tj --298 TJm -(f) 3.3175 Tj -10 TJm -(airly) 18.2614 Tj --299 TJm -(random) 30.4357 Tj -72 642.291 Td -(f) 3.3175 Tj -10 TJm -(ashion.) 28.503 Tj --743 TJm -(This) 17.7135 Tj --270 TJm -(means) 25.4544 Tj --271 TJm -(that) 14.9439 Tj --270 TJm -(performance,) 52.8317 Tj --276 TJm -(both) 17.7135 Tj --270 TJm -(for) 11.6164 Tj --271 TJm -(compressing) 50.3609 Tj --270 TJm -(and) 14.386 Tj --271 TJm -(decompressing,) 62.2563 Tj --275 TJm -(is) 6.6451 Tj --271 TJm -(lar) 10.5105 Tj -18 TJm -(gely) 17.1556 Tj --270 TJm -(determined) 44.8217 Tj --271 TJm -(by) 9.9626 Tj --270 TJm -(the) 12.1743 Tj --271 TJm -(speed) 22.6848 Tj -72 630.336 Td -(at) 7.193 Tj --294 TJm -(which) 24.3486 Tj --294 TJm -(your) 18.2614 Tj --294 TJm -(machine) 33.7533 Tj --295 TJm -(ca) 8.8468 Tj -1 TJm -(n) 4.9813 Tj --295 TJm -(service) 28.2141 Tj --294 TJm -(cache) 22.6749 Tj --294 TJm -(misses.) 29.0609 Tj --442 TJm -(Because) 33.1954 Tj --294 TJm -(of) 8.2988 Tj --294 TJm -(this,) 16.8866 Tj --306 TJm -(small) 21.589 Tj --294 TJm -(changes) 32.0895 Tj --294 TJm -(to) 7.7509 Tj --294 TJm -(the) 12.1743 Tj --294 TJm -(code) 18.8094 Tj --294 TJm -(to) 7.7509 Tj --294 TJm -(reduce) 26.5503 Tj --294 TJm -(the) 12.1743 Tj --295 TJm -(miss) 18.2714 Tj --294 TJm -(rate) 14.9339 Tj -72 618.381 Td -(ha) 9.4047 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --253 TJm -(been) 18.8094 Tj --253 TJm -(observ) 26.5603 Tj -15 TJm -(ed) 9.4047 Tj --253 TJm -(to) 7.7509 Tj --253 TJm -(gi) 7.7509 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --253 TJm -(disproportionately) 73.0557 Tj --253 TJm -(lar) 10.5105 Tj -18 TJm -(ge) 9.4047 Tj --253 TJm -(performance) 50.341 Tj --253 TJm -(impro) 23.8007 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(ements.) 30.7147 Tj --639 TJm -(I) 3.3175 Tj --253 TJm -(imagine) 32.0995 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -438.909 618.381 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -471.318 618.381 Td -/F122_0 9.9626 Tf -(will) 15.5018 Tj --253 TJm -(perform) 32.0895 Tj --253 TJm -(best) 16.0497 Tj -72 606.426 Td -(on) 9.9626 Tj --250 TJm -(machines) 37.6287 Tj --250 TJm -(with) 17.7135 Tj --250 TJm -(v) 4.9813 Tj -15 TJm -(ery) 12.7222 Tj --250 TJm -(lar) 10.5105 Tj -18 TJm -(ge) 9.4047 Tj --250 TJm -(caches.) 29.041 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 571.673 Td -/F116_0 20.6585 Tf -(2.8.) 34.4584 Tj --278 TJm -(CA) 29.8309 Tj -80 TJm -(VEA) 42.4739 Tj -90 TJm -(TS) 26.4016 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 549.755 Td -/F122_0 9.9626 Tf -(I/O) 13.2801 Tj --268 TJm -(error) 19.3573 Tj --267 TJm -(messages) 37.6287 Tj --268 TJm -(are) 12.1643 Tj --268 TJm -(not) 12.7322 Tj --268 TJm -(as) 8.2988 Tj --267 TJm -(helpful) 28.224 Tj --268 TJm -(as) 8.2988 Tj --268 TJm -(the) 12.1743 Tj -15 TJm -(y) 4.9813 Tj --267 TJm -(could) 22.1369 Tj --268 TJm -(be.) 11.8953 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -293.313 549.755 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -325.868 549.755 Td -/F122_0 9.9626 Tf -(tries) 17.1556 Tj --268 TJm -(hard) 17.7035 Tj --267 TJm -(to) 7.7509 Tj --268 TJm -(detect) 23.7907 Tj --268 TJm -(I/O) 13.2801 Tj --268 TJm -(errors) 23.2328 Tj --267 TJm -(and) 14.386 Tj --268 TJm -(e) 4.4234 Tj -15 TJm -(xit) 10.5205 Tj --268 TJm -(cleanly) 28.772 Tj -65 TJm -(,) 2.4907 Tj --272 TJm -(b) 4.9813 Tj -20 TJm -(ut) 7.7509 Tj --268 TJm -(the) 12.1743 Tj -72 537.8 Td -(details) 26.0123 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(what) 19.3673 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(problem) 33.2053 Tj --250 TJm -(is) 6.6451 Tj --250 TJm -(sometimes) 42.62 Tj --250 TJm -(seem) 20.4731 Tj --250 TJm -(rather) 23.2328 Tj --250 TJm -(misleading.) 46.2165 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 515.882 Td -(This) 17.7135 Tj --280 TJm -(manual) 29.3299 Tj --279 TJm -(page) 18.8094 Tj --280 TJm -(pertains) 31.5416 Tj --280 TJm -(to) 7.7509 Tj --279 TJm -(v) 4.9813 Tj -15 TJm -(ersion) 24.3486 Tj --280 TJm -(1.0.6) 19.9252 Tj --280 TJm -(of) 8.2988 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -256.84 515.882 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -286.728 515.882 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj --798 TJm -(Compressed) 49.2551 Tj --280 TJm -(data) 16.5977 Tj --279 TJm -(created) 28.762 Tj --280 TJm -(by) 9.9626 Tj --280 TJm -(this) 14.396 Tj --279 TJm -(v) 4.9813 Tj -15 TJm -(ersion) 24.3486 Tj --280 TJm -(is) 6.6451 Tj --280 TJm -(entirely) 30.4357 Tj --279 TJm -(forw) 18.8094 Tj -10 TJm -(ards) 16.5977 Tj -72 503.927 Td -(and) 14.386 Tj --294 TJm -(backw) 26.0024 Tj -10 TJm -(ards) 16.5977 Tj --293 TJm -(compatible) 44.2738 Tj --294 TJm -(with) 17.7135 Tj --294 TJm -(the) 12.1743 Tj --293 TJm -(pre) 12.7222 Tj -25 TJm -(vious) 21.589 Tj --294 TJm -(public) 24.9065 Tj --294 TJm -(releases,) 34.0223 Tj --304 TJm -(v) 4.9813 Tj -15 TJm -(ersions) 28.224 Tj --294 TJm -(0.1pl2,) 27.6761 Tj --305 TJm -(0.9.0) 19.9252 Tj --293 TJm -(and) 14.386 Tj --294 TJm -(0.9.5,) 22.4159 Tj --305 TJm -(1.0.0,) 22.4159 Tj --304 TJm -(1.0.1,) 22.4159 Tj --305 TJm -(1.0.2) 19.9252 Tj --294 TJm -(and) 14.386 Tj -72 491.972 Td -(1.0.3,) 22.4159 Tj --263 TJm -(b) 4.9813 Tj -20 TJm -(ut) 7.7509 Tj --260 TJm -(with) 17.7135 Tj --260 TJm -(the) 12.1743 Tj --260 TJm -(follo) 18.8194 Tj -25 TJm -(wing) 19.9252 Tj --260 TJm -(e) 4.4234 Tj -15 TJm -(xception:) 37.0808 Tj --330 TJm -(0.9.0) 19.9252 Tj --260 TJm -(and) 14.386 Tj --260 TJm -(abo) 14.386 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --260 TJm -(can) 13.8281 Tj --260 TJm -(correctly) 35.4071 Tj --260 TJm -(decompress) 47.0334 Tj --260 TJm -(multiple) 33.2153 Tj --260 TJm -(concatenated) 52.0048 Tj --260 TJm -(compressed) 47.0334 Tj -72 480.017 Td -(\002les.) 19.0983 Tj --310 TJm -(0.1pl2) 25.1855 Tj --250 TJm -(cannot) 26.5603 Tj --250 TJm -(do) 9.9626 Tj --250 TJm -(this;) 17.1656 Tj --250 TJm -(it) 5.5392 Tj --250 TJm -(will) 15.5018 Tj --250 TJm -(stop) 16.6077 Tj --250 TJm -(after) 18.2515 Tj --250 TJm -(decompressing) 59.7656 Tj --250 TJm -(just) 14.396 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(\002rst) 15.5018 Tj --250 TJm -(\002le) 12.7322 Tj --250 TJm -(in) 7.7509 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(stream.) 29.0509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 458.099 Td -/F124_0 9.9626 Tf -(bzip2recover) 71.7307 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -146.174 458.099 Td -/F122_0 9.9626 Tf -(v) 4.9813 Tj -15 TJm -(ersions) 28.224 Tj --245 TJm -(prior) 19.3673 Tj --245 TJm -(to) 7.7509 Tj --245 TJm -(1.0.2) 19.9252 Tj --246 TJm -(used) 18.2614 Tj --245 TJm -(32-bit) 23.8007 Tj --245 TJm -(inte) 14.9439 Tj -15 TJm -(gers) 16.5977 Tj --245 TJm -(to) 7.7509 Tj --245 TJm -(represent) 36.5129 Tj --245 TJm -(bit) 10.5205 Tj --246 TJm -(positions) 35.9849 Tj --245 TJm -(in) 7.7509 Tj --245 TJm -(compressed) 47.0334 Tj --245 TJm -(\002les,) 19.0983 Tj --246 TJm -(so) 8.8568 Tj --245 TJm -(it) 5.5392 Tj --245 TJm -(could) 22.1369 Tj -72 446.144 Td -(not) 12.7322 Tj --384 TJm -(handle) 26.5603 Tj --383 TJm -(compressed) 47.0334 Tj --384 TJm -(\002les) 16.6077 Tj --383 TJm -(more) 20.4731 Tj --384 TJm -(than) 17.1556 Tj --383 TJm -(512) 14.9439 Tj --384 TJm -(me) 12.1743 Tj -15 TJm -(g) 4.9813 Tj -5 TJm -(abytes) 25.4544 Tj --383 TJm -(long.) 20.2042 Tj --1421 TJm -(V) 7.193 Tj -111 TJm -(ersions) 28.224 Tj --384 TJm -(1.0.2) 19.9252 Tj --383 TJm -(and) 14.386 Tj --384 TJm -(abo) 14.386 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --384 TJm -(use) 13.2801 Tj --383 TJm -(64-bit) 23.8007 Tj --384 TJm -(ints) 14.396 Tj --383 TJm -(on) 9.9626 Tj --384 TJm -(some) 21.031 Tj -72 434.189 Td -(platforms) 38.1866 Tj --245 TJm -(which) 24.3486 Tj --246 TJm -(support) 29.8878 Tj --245 TJm -(them) 19.9252 Tj --246 TJm -(\(GNU) 24.8965 Tj --245 TJm -(supported) 39.2925 Tj --245 TJm -(tar) 10.5105 Tj -18 TJm -(gets,) 18.5404 Tj --247 TJm -(and) 14.386 Tj --245 TJm -(W) 9.4047 Tj -40 TJm -(indo) 17.7135 Tj -25 TJm -(ws\).) 16.8766 Tj --309 TJm -(T) 6.0871 Tj -80 TJm -(o) 4.9813 Tj --245 TJm -(establish) 34.8691 Tj --245 TJm -(whether) 32.0895 Tj --246 TJm -(or) 8.2988 Tj --245 TJm -(not) 12.7322 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -468.269 434.189 Td -/F124_0 9.9626 Tf -(bzip2recover) 71.7307 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 422.233 Td -/F122_0 9.9626 Tf -(w) 7.193 Tj -10 TJm -(as) 8.2988 Tj --255 TJm -(b) 4.9813 Tj -20 TJm -(uilt) 13.2901 Tj --255 TJm -(with) 17.7135 Tj --255 TJm -(such) 18.2614 Tj --255 TJm -(a) 4.4234 Tj --255 TJm -(limitation,) 41.2452 Tj --256 TJm -(run) 13.2801 Tj --255 TJm -(it) 5.5392 Tj --255 TJm -(without) 30.4457 Tj --255 TJm -(ar) 7.7409 Tj -18 TJm -(guments.) 36.2539 Tj --325 TJm -(In) 8.2988 Tj --255 TJm -(an) 9.4047 Tj -15 TJm -(y) 4.9813 Tj --256 TJm -(e) 4.4234 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(ent) 12.1743 Tj --255 TJm -(you) 14.9439 Tj --255 TJm -(can) 13.8281 Tj --255 TJm -(b) 4.9813 Tj -20 TJm -(uild) 15.5018 Tj --255 TJm -(yourself) 32.6474 Tj --255 TJm -(an) 9.4047 Tj --255 TJm -(unlimited) 38.1966 Tj --255 TJm -(v) 4.9813 Tj -15 TJm -(ersion) 24.3486 Tj --255 TJm -(if) 6.0871 Tj -72 410.278 Td -(you) 14.9439 Tj --250 TJm -(can) 13.8281 Tj --250 TJm -(recompile) 39.8404 Tj --250 TJm -(it) 5.5392 Tj --250 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -176.318 410.278 Td -/F124_0 9.9626 Tf -(MaybeUInt64) 65.7532 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -244.562 410.278 Td -/F122_0 9.9626 Tf -(set) 11.0684 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(be) 9.4047 Tj --250 TJm -(an) 9.4047 Tj --250 TJm -(unsigned) 35.9749 Tj --250 TJm -(64-bit) 23.8007 Tj --250 TJm -(inte) 14.9439 Tj -15 TJm -(ger) 12.7222 Tj -55 TJm -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 375.525 Td -/F116_0 20.6585 Tf -(2.9.) 34.4584 Tj --278 TJm -(A) 14.9154 Tj -50 TJm -(UTHOR) 73.441 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 353.607 Td -/F122_0 9.9626 Tf -(Julian) 23.8007 Tj --250 TJm -(Se) 9.9626 Tj -25 TJm -(w) 7.193 Tj -10 TJm -(ard,) 15.2129 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -132.801 353.607 Td -/F124_0 9.9626 Tf -(jseward@bzip.org) 95.641 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 331.69 Td -/F122_0 9.9626 Tf -(The) 15.4918 Tj --299 TJm -(ideas) 20.4731 Tj --300 TJm -(embodied) 39.2925 Tj --299 TJm -(in) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -166.942 331.69 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -199.813 331.69 Td -/F122_0 9.9626 Tf -(are) 12.1643 Tj --299 TJm -(du) 9.9626 Tj --1 TJm -(e) 4.4234 Tj --299 TJm -(to) 7.7509 Tj --299 TJm -(\(at) 10.5105 Tj --300 TJm -(least\)) 21.579 Tj --299 TJm -(the) 12.1743 Tj --300 TJm -(follo) 18.8194 Tj -25 TJm -(wing) 19.9252 Tj --299 TJm -(people:) 29.3299 Tj --409 TJm -(Michael) 32.6474 Tj --300 TJm -(Burro) 23.2427 Tj -25 TJm -(ws) 11.0684 Tj --299 TJm -(and) 14.386 Tj --300 TJm -(Da) 11.6164 Tj -20 TJm -(vid) 12.7322 Tj --299 TJm -(Wheeler) 33.7433 Tj --299 TJm -(\(for) 14.9339 Tj -72 319.735 Td -(the) 12.1743 Tj --312 TJm -(block) 22.1369 Tj --313 TJm -(sorting) 27.6761 Tj --312 TJm -(transformation\),) 64.468 Tj --328 TJm -(Da) 11.6164 Tj -20 TJm -(vid) 12.7322 Tj --312 TJm -(Wheeler) 33.7433 Tj --313 TJm -(\(ag) 12.7222 Tj -5 TJm -(ain,) 14.6649 Tj --327 TJm -(for) 11.6164 Tj --313 TJm -(the) 12.1743 Tj --312 TJm -(Huf) 15.4918 Tj -25 TJm -(fman) 20.4731 Tj --312 TJm -(coder\),) 27.9351 Tj --328 TJm -(Peter) 20.4731 Tj --313 TJm -(Fenwick) 34.3112 Tj --312 TJm -(\(for) 14.9339 Tj --312 TJm -(the) 12.1743 Tj --313 TJm -(structured) 39.8404 Tj -72 307.779 Td -(coding) 27.1182 Tj --325 TJm -(model) 24.9065 Tj --326 TJm -(in) 7.7509 Tj --325 TJm -(the) 12.1743 Tj --326 TJm -(original) 30.9936 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -191.156 307.779 Td -/F124_0 9.9626 Tf -(bzip) 23.9102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -215.067 307.779 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --344 TJm -(and) 14.386 Tj --326 TJm -(man) 17.1556 Tj -15 TJm -(y) 4.9813 Tj --325 TJm -(re\002nements\),) 52.2937 Tj --345 TJm -(and) 14.386 Tj --325 TJm -(Alistair) 29.8878 Tj --326 TJm -(Mof) 17.1556 Tj -25 TJm -(f) 3.3175 Tj -10 TJm -(at,) 9.6836 Tj --344 TJm -(Radford) 32.6474 Tj --325 TJm -(Neal) 18.8094 Tj --326 TJm -(and) 14.386 Tj --325 TJm -(Ian) 12.7222 Tj --326 TJm -(W) 9.4047 Tj -40 TJm -(itten) 17.7135 Tj --325 TJm -(\(for) 14.9339 Tj -72 295.824 Td -(the) 12.1743 Tj --277 TJm -(arithmetic) 40.3983 Tj --277 TJm -(coder) 22.1269 Tj --277 TJm -(in) 7.7509 Tj --277 TJm -(the) 12.1743 Tj --277 TJm -(original) 30.9936 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -214.171 295.824 Td -/F124_0 9.9626 Tf -(bzip) 23.9102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -238.082 295.824 Td -/F122_0 9.9626 Tf -(\).) 5.8082 Tj --782 TJm -(I) 3.3175 Tj --277 TJm -(am) 12.1743 Tj --276 TJm -(much) 22.1369 Tj --277 TJm -(indebted) 34.3112 Tj --277 TJm -(for) 11.6164 Tj --277 TJm -(their) 18.2614 Tj --277 TJm -(help,) 19.6462 Tj --284 TJm -(support) 29.8878 Tj --277 TJm -(and) 14.386 Tj --277 TJm -(advice.) 28.493 Tj --781 TJm -(See) 14.386 Tj --277 TJm -(the) 12.1743 Tj --277 TJm -(manual) 29.3299 Tj -72 283.869 Td -(in) 7.7509 Tj --330 TJm -(the) 12.1743 Tj --330 TJm -(source) 26.0024 Tj --330 TJm -(distrib) 25.4644 Tj -20 TJm -(ution) 20.4831 Tj --330 TJm -(for) 11.6164 Tj --329 TJm -(pointers) 32.0995 Tj --330 TJm -(to) 7.7509 Tj --330 TJm -(sources) 29.8778 Tj --330 TJm -(of) 8.2988 Tj --330 TJm -(documentation.) 61.7083 Tj --1099 TJm -(Christian) 36.5329 Tj --330 TJm -(v) 4.9813 Tj -20 TJm -(on) 9.9626 Tj --330 TJm -(Roques) 29.8878 Tj --330 TJm -(encouraged) 45.9176 Tj --330 TJm -(me) 12.1743 Tj --330 TJm -(to) 7.7509 Tj --330 TJm -(look) 17.7135 Tj -72 271.914 Td -(for) 11.6164 Tj --271 TJm -(f) 3.3175 Tj -10 TJm -(aster) 18.8094 Tj --271 TJm -(sorting) 27.6761 Tj --271 TJm -(algorithms,) 45.1107 Tj --276 TJm -(so) 8.8568 Tj --272 TJm -(as) 8.2988 Tj --271 TJm -(to) 7.7509 Tj --271 TJm -(speed) 22.6848 Tj --271 TJm -(up) 9.9626 Tj --271 TJm -(compression.) 52.8516 Tj --746 TJm -(Bela) 18.2614 Tj --271 TJm -(Lubkin) 28.782 Tj --271 TJm -(encouraged) 45.9176 Tj --271 TJm -(me) 12.1743 Tj --272 TJm -(to) 7.7509 Tj --271 TJm -(impro) 23.8007 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --271 TJm -(the) 12.1743 Tj --271 TJm -(w) 7.193 Tj -10 TJm -(orst-case) 35.4071 Tj -72 259.959 Td -(compression) 50.3609 Tj --340 TJm -(performance.) 52.8317 Tj --580 TJm -(Donna) 26.5603 Tj --339 TJm -(Robinson) 38.1966 Tj --340 TJm -(XMLised) 38.1866 Tj --340 TJm -(the) 12.1743 Tj --340 TJm -(documentation.) 61.7083 Tj --580 TJm -(Man) 18.2614 Tj -15 TJm -(y) 4.9813 Tj --340 TJm -(people) 26.5603 Tj --340 TJm -(sent) 16.0497 Tj --339 TJm -(patches,) 32.3685 Tj --363 TJm -(helped) 26.5603 Tj --340 TJm -(with) 17.7135 Tj -72 248.003 Td -(portability) 41.5142 Tj --250 TJm -(problems,) 39.5714 Tj --250 TJm -(lent) 14.9439 Tj --250 TJm -(machines,) 40.1194 Tj --250 TJm -(g) 4.9813 Tj -5 TJm -(a) 4.4234 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --250 TJm -(advice) 26.0024 Tj --250 TJm -(and) 14.386 Tj --250 TJm -(were) 19.3573 Tj --250 TJm -(generally) 37.0708 Tj --250 TJm -(helpful.) 30.7147 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -539.395 50.951 Td -(7) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 8 11 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 75.786 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -72 701.916 Td -/F116_0 24.7902 Tf -(3.) 20.675 Tj --556 TJm -(Pr) 26.1785 Tj -20 TJm -(ogramming) 134.9826 Tj --278 TJm -(with) 49.5804 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -330.484 701.916 Td -/F440_0 24.7902 Tf -(libbzip2) 118.993 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 656.35 Td -/F116_0 17.2154 Tf -(T) 10.5186 Tj -80 TJm -(ab) 20.0904 Tj -10 TJm -(le) 14.3576 Tj --278 TJm -(of) 16.2513 Tj --278 TJm -(Contents) 74.5943 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 635.788 Td -/F122_0 9.9626 Tf -(3.1.) 14.9439 Tj --310 TJm -(T) 6.0871 Tj -80 TJm -(op-le) 20.4731 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(el) 7.193 Tj --250 TJm -(structure) 34.8591 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -179.997 635.788 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -511.108 635.788 Td -/F122_0 9.9626 Tf -(8) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 623.832 Td -(3.1.1.) 22.4159 Tj --310 TJm -(Lo) 11.0684 Tj -25 TJm -(w-le) 17.7035 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(el) 7.193 Tj --250 TJm -(summary) 37.0808 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -192.866 623.832 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -511.108 623.832 Td -/F122_0 9.9626 Tf -(9) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 611.877 Td -(3.1.2.) 22.4159 Tj --310 TJm -(High-le) 30.4357 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(el) 7.193 Tj --250 TJm -(summary) 37.0808 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -193.822 611.877 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -511.108 611.877 Td -/F122_0 9.9626 Tf -(9) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 599.922 Td -(3.1.3.) 22.4159 Tj --310 TJm -(Utility) 26.0223 Tj --250 TJm -(functions) 37.0808 Tj --250 TJm -(summary) 37.0808 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -216.582 599.922 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -511.108 599.922 Td -/F122_0 9.9626 Tf -(9) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 587.967 Td -(3.2.) 14.9439 Tj --310 TJm -(Error) 21.0211 Tj --250 TJm -(handling) 34.8691 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -162.611 587.967 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 587.967 Td -/F122_0 9.9626 Tf -(10) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 576.012 Td -(3.3.) 14.9439 Tj --310 TJm -(Lo) 11.0684 Tj -25 TJm -(w-le) 17.7035 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(el) 7.193 Tj --250 TJm -(interf) 21.579 Tj -10 TJm -(ace) 13.2702 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -181.045 576.012 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 576.012 Td -/F122_0 9.9626 Tf -(11) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 564.057 Td -(3.3.1.) 22.4159 Tj --310 TJm -(BZ2_bzCompressInit) 85.7879 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -197.762 564.057 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 564.057 Td -/F122_0 9.9626 Tf -(11) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 552.101 Td -(3.3.2.) 22.4159 Tj --310 TJm -(BZ2_bzCompress) 71.9499 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -184.201 552.101 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 552.101 Td -/F122_0 9.9626 Tf -(13) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 540.146 Td -(3.3.3.) 22.4159 Tj --310 TJm -(BZ2_bzCompressEnd) 87.9996 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -198.868 540.146 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 540.146 Td -/F122_0 9.9626 Tf -(16) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 528.191 Td -(3.3.4.) 22.4159 Tj --310 TJm -(BZ2_bzDecompressInit) 95.1827 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -206.887 528.191 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 528.191 Td -/F122_0 9.9626 Tf -(16) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 516.236 Td -(3.3.5.) 22.4159 Tj --310 TJm -(BZ2_bzDecompress) 81.3446 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -193.326 516.236 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 516.236 Td -/F122_0 9.9626 Tf -(17) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 504.281 Td -(3.3.6.) 22.4159 Tj --310 TJm -(BZ2_bzDecompressEnd) 97.3944 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -210.207 504.281 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 504.281 Td -/F122_0 9.9626 Tf -(18) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 492.325 Td -(3.4.) 14.9439 Tj --310 TJm -(High-le) 30.4357 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(el) 7.193 Tj --250 TJm -(interf) 21.579 Tj -10 TJm -(ace) 13.2702 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -184.216 492.325 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 492.325 Td -/F122_0 9.9626 Tf -(18) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 480.37 Td -(3.4.1.) 22.4159 Tj --310 TJm -(BZ2_bzReadOpen) 74.1516 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -185.302 480.37 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 480.37 Td -/F122_0 9.9626 Tf -(19) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 468.415 Td -(3.4.2.) 22.4159 Tj --310 TJm -(BZ2_bzRead) 52.5726 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -163.443 468.415 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 468.415 Td -/F122_0 9.9626 Tf -(20) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 456.46 Td -(3.4.3.) 22.4159 Tj --310 TJm -(BZ2_bzReadGetUnused) 97.3944 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -210.207 456.46 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 456.46 Td -/F122_0 9.9626 Tf -(21) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 444.505 Td -(3.4.4.) 22.4159 Tj --310 TJm -(BZ2_bzReadClose) 75.2674 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -188.074 444.505 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 444.505 Td -/F122_0 9.9626 Tf -(22) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 432.55 Td -(3.4.5.) 22.4159 Tj --310 TJm -(BZ2_bzWriteOpen) 76.3633 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -188.622 432.55 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 432.55 Td -/F122_0 9.9626 Tf -(22) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 420.594 Td -(3.4.6.) 22.4159 Tj --310 TJm -(BZ2_bzWrite) 54.7843 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -166.763 420.594 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 420.594 Td -/F122_0 9.9626 Tf -(23) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 408.639 Td -(3.4.7.) 22.4159 Tj --310 TJm -(BZ2_bzWriteClose) 77.4791 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -189.179 408.639 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 408.639 Td -/F122_0 9.9626 Tf -(23) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 396.684 Td -(3.4.8.) 22.4159 Tj --310 TJm -(Handling) 37.0808 Tj --250 TJm -(embedded) 40.9463 Tj --250 TJm -(compressed) 47.0334 Tj --250 TJm -(data) 16.5977 Tj --250 TJm -(streams) 30.4357 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -294.601 396.684 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 396.684 Td -/F122_0 9.9626 Tf -(24) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 384.729 Td -(3.4.9.) 22.4159 Tj --310 TJm -(Standard) 35.417 Tj --250 TJm -(\002le-reading/writing) 77.4791 Tj --250 TJm -(code) 18.8094 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -247.564 384.729 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 384.729 Td -/F122_0 9.9626 Tf -(25) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 372.774 Td -(3.5.) 14.9439 Tj --310 TJm -(Utility) 26.0223 Tj --250 TJm -(functions) 37.0808 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -170.645 372.774 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 372.774 Td -/F122_0 9.9626 Tf -(26) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 360.819 Td -(3.5.1.) 22.4159 Tj --310 TJm -(BZ2_bzBuf) 47.0434 Tj -25 TJm -(fT) 9.4047 Tj -80 TJm -(oBuf) 19.9252 Tj -25 TJm -(fCompress) 43.1679 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -229.488 360.819 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 360.819 Td -/F122_0 9.9626 Tf -(26) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 348.863 Td -(3.5.2.) 22.4159 Tj --310 TJm -(BZ2_bzBuf) 47.0434 Tj -25 TJm -(fT) 9.4047 Tj -80 TJm -(oBuf) 19.9252 Tj -25 TJm -(fDecompress) 52.5627 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -238.613 348.863 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 348.863 Td -/F122_0 9.9626 Tf -(27) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 336.908 Td -(3.6.) 14.9439 Tj --310 TJm -(zlib) 14.9439 Tj --250 TJm -(compatibility) 53.1405 Tj --250 TJm -(functions) 37.0808 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -215.06 336.908 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 336.908 Td -/F122_0 9.9626 Tf -(28) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 324.953 Td -(3.7.) 14.9439 Tj --310 TJm -(Using) 23.8007 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(library) 26.5603 Tj --250 TJm -(in) 7.7509 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(stdio-free) 38.1767 Tj --250 TJm -(en) 9.4047 Tj -40 TJm -(vironment) 40.9562 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -282.092 324.953 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 324.953 Td -/F122_0 9.9626 Tf -(28) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 312.998 Td -(3.7.1.) 22.4159 Tj --310 TJm -(Getting) 29.8878 Tj --250 TJm -(rid) 11.0684 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(stdio) 19.3773 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -188.492 312.998 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 312.998 Td -/F122_0 9.9626 Tf -(29) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 301.043 Td -(3.7.2.) 22.4159 Tj --310 TJm -(Critical) 29.8878 Tj --250 TJm -(error) 19.3573 Tj --250 TJm -(handling) 34.8691 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -201.629 301.043 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 301.043 Td -/F122_0 9.9626 Tf -(29) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 289.088 Td -(3.8.) 14.9439 Tj --310 TJm -(Making) 30.9936 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(W) 9.4047 Tj -40 TJm -(indo) 17.7135 Tj -25 TJm -(ws) 11.0684 Tj --250 TJm -(DLL) 19.3673 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -203.243 289.088 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 289.088 Td -/F122_0 9.9626 Tf -(29) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 257.207 Td -(This) 17.7135 Tj --250 TJm -(chapter) 29.3199 Tj --250 TJm -(describes) 37.0708 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(programming) 54.2364 Tj --250 TJm -(interf) 21.579 Tj -10 TJm -(ace) 13.2702 Tj --250 TJm -(to) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -282.448 257.207 Td -/F124_0 9.9626 Tf -(libbzip2) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -330.269 257.207 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 235.289 Td -(F) 5.5392 Tj -15 TJm -(or) 8.2988 Tj --273 TJm -(general) 29.3199 Tj --272 TJm -(background) 47.0334 Tj --273 TJm -(information,) 49.534 Tj --278 TJm -(particularly) 45.9276 Tj --273 TJm -(about) 22.1369 Tj --273 TJm -(memory) 33.2053 Tj --272 TJm -(use) 13.2801 Tj --273 TJm -(and) 14.386 Tj --273 TJm -(performance) 50.341 Tj --272 TJm -(aspects,) 31.2626 Tj --279 TJm -(you') 18.2614 Tj -50 TJm -(d) 4.9813 Tj --272 TJm -(be) 9.4047 Tj --273 TJm -(well) 17.1556 Tj --273 TJm -(advised) 30.4357 Tj -72 223.334 Td -(to) 7.7509 Tj --250 TJm -(read) 17.1456 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 1] sc -/DeviceRGB {} CS -[0 0 1] SC --250 TJm -(Ho) 12.1743 Tj -25 TJm -(w) 7.193 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(use) 13.2801 Tj --250 TJm -(bzip2) 22.1369 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 1] sc -/DeviceRGB {} CS -[0 0 1] SC -/DeviceRGB {} cs -[0 0 1] sc -/DeviceRGB {} CS -[0 0 1] SC --250 TJm -([2]) 11.6164 Tj -/DeviceRGB {} cs -[0 0 1] sc -/DeviceRGB {} CS -[0 0 1] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --250 TJm -(as) 8.2988 Tj --250 TJm -(well.) 19.6462 Tj -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 188.581 Td -/F116_0 20.6585 Tf -(3.1.) 34.4584 Tj --278 TJm -(T) 12.6223 Tj -80 TJm -(op-le) 49.3532 Tj -15 TJm -(vel) 28.7153 Tj --278 TJm -(structure) 89.5339 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 166.663 Td -/F124_0 9.9626 Tf -(libbzip2) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -123.608 166.663 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --380 TJm -(a) 4.4234 Tj --380 TJm -(\003e) 9.9626 Tj -15 TJm -(xible) 19.9252 Tj --381 TJm -(library) 26.5603 Tj --380 TJm -(for) 11.6164 Tj --380 TJm -(compressing) 50.3609 Tj --380 TJm -(and) 14.386 Tj --380 TJm -(decompressing) 59.7656 Tj --380 TJm -(data) 16.5977 Tj --381 TJm -(in) 7.7509 Tj --380 TJm -(the) 12.1743 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -405.291 166.663 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -438.966 166.663 Td -/F122_0 9.9626 Tf -(data) 16.5977 Tj --380 TJm -(format.) 29.0509 Tj --1401 TJm -(Although) 37.6387 Tj -72 154.708 Td -(packaged) 37.6188 Tj --285 TJm -(as) 8.2988 Tj --284 TJm -(a) 4.4234 Tj --285 TJm -(single) 23.8007 Tj --285 TJm -(entity) 22.6948 Tj -65 TJm -(,) 2.4907 Tj --293 TJm -(it) 5.5392 Tj --285 TJm -(helps) 21.031 Tj --285 TJm -(to) 7.7509 Tj --284 TJm -(re) 7.7409 Tj -15 TJm -(g) 4.9813 Tj -5 TJm -(ard) 12.7222 Tj --285 TJm -(the) 12.1743 Tj --285 TJm -(library) 26.5603 Tj --284 TJm -(as) 8.2988 Tj --285 TJm -(three) 19.9152 Tj --285 TJm -(separate) 32.6375 Tj --284 TJm -(parts:) 22.1369 Tj --380 TJm -(the) 12.1743 Tj --285 TJm -(lo) 7.7509 Tj -25 TJm -(w) 7.193 Tj --284 TJm -(le) 7.193 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(el) 7.193 Tj --285 TJm -(interf) 21.579 Tj -10 TJm -(ace,) 15.7608 Tj --293 TJm -(and) 14.386 Tj --285 TJm -(the) 12.1743 Tj --285 TJm -(high) 17.7135 Tj -72 142.753 Td -(le) 7.193 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(el) 7.193 Tj --250 TJm -(interf) 21.579 Tj -10 TJm -(ace,) 15.7608 Tj --250 TJm -(and) 14.386 Tj --250 TJm -(some) 21.031 Tj --250 TJm -(utility) 23.8106 Tj --250 TJm -(functions.) 39.5714 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 120.835 Td -(The) 15.4918 Tj --349 TJm -(structure) 34.8591 Tj --349 TJm -(of) 8.2988 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -141.082 120.835 Td -/F124_0 9.9626 Tf -(libbzip2) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -188.903 120.835 Td -/F122_0 9.9626 Tf -(') 3.3175 Tj -55 TJm -(s) 3.8755 Tj --349 TJm -(interf) 21.579 Tj -10 TJm -(aces) 17.1456 Tj --349 TJm -(is) 6.6451 Tj --349 TJm -(similar) 27.6761 Tj --349 TJm -(to) 7.7509 Tj --349 TJm -(that) 14.9439 Tj --349 TJm -(of) 8.2988 Tj --349 TJm -(Jean-loup) 38.7346 Tj --349 TJm -(Gailly') 28.224 Tj -55 TJm -(s) 3.8755 Tj --349 TJm -(and) 14.386 Tj --349 TJm -(Mark) 21.579 Tj --349 TJm -(Adler') 26.0024 Tj -55 TJm -(s) 3.8755 Tj --349 TJm -(e) 4.4234 Tj -15 TJm -(xcellent) 31.5416 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -516.09 120.835 Td -/F124_0 9.9626 Tf -(zlib) 23.9102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 108.88 Td -/F122_0 9.9626 Tf -(library) 26.5603 Tj -65 TJm -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 86.962 Td -(All) 12.7322 Tj --242 TJm -(e) 4.4234 Tj -15 TJm -(xternally) 35.417 Tj --242 TJm -(visible) 26.5703 Tj --241 TJm -(symbols) 33.2153 Tj --242 TJm -(ha) 9.4047 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --242 TJm -(names) 25.4544 Tj --242 TJm -(be) 9.4047 Tj -15 TJm -(ginning) 30.4457 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -284.687 86.962 Td -/F124_0 9.9626 Tf -(BZ2_) 23.9102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -308.597 86.962 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj --615 TJm -(This) 17.7135 Tj --241 TJm -(is) 6.6451 Tj --242 TJm -(ne) 9.4047 Tj -25 TJm -(w) 7.193 Tj --242 TJm -(in) 7.7509 Tj --242 TJm -(v) 4.9813 Tj -15 TJm -(ersion) 24.3486 Tj --242 TJm -(1.0.) 14.9439 Tj --614 TJm -(The) 15.4918 Tj --242 TJm -(intention) 35.427 Tj --242 TJm -(is) 6.6451 Tj --241 TJm -(to) 7.7509 Tj --242 TJm -(minimise) 37.0908 Tj -72 75.007 Td -(pollution) 35.9849 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(namespaces) 47.5814 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(library) 26.5603 Tj --250 TJm -(clients.) 28.503 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -541.288 50.951 Td -(8) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 9 12 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -420.96 749.245 Td -/F122_0 9.9626 Tf -(Programming) 54.7943 Tj --250 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -498.449 749.245 Td -/F124_0 9.9626 Tf -(libbzip2) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 75.786 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -72 710.037 Td -/F122_0 9.9626 Tf -(T) 6.0871 Tj -80 TJm -(o) 4.9813 Tj --250 TJm -(use) 13.2801 Tj --250 TJm -(an) 9.4047 Tj -15 TJm -(y) 4.9813 Tj --250 TJm -(part) 15.4918 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(library) 26.5603 Tj -65 TJm -(,) 2.4907 Tj --250 TJm -(you) 14.9439 Tj --250 TJm -(need) 18.8094 Tj --250 TJm -(to) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -240.567 710.037 Td -/F124_0 9.9626 Tf -(#include) 47.8205 Tj --600 TJm -() 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -350.654 710.037 Td -/F122_0 9.9626 Tf -(into) 15.5018 Tj --250 TJm -(your) 18.2614 Tj --250 TJm -(sources.) 32.3685 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 679.416 Td -/F116_0 17.2154 Tf -(3.1.1.) 43.0729 Tj --278 TJm -(Lo) 21.0372 Tj -15 TJm -(w-le) 33.484 Tj -15 TJm -(vel) 23.9294 Tj --278 TJm -(summar) 66.9679 Tj --10 TJm -(y) 9.5718 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 657.498 Td -/F122_0 9.9626 Tf -(This) 17.7135 Tj --212 TJm -(interf) 21.579 Tj -10 TJm -(ace) 13.2702 Tj --212 TJm -(pro) 13.2801 Tj -15 TJm -(vides) 21.031 Tj --212 TJm -(services) 32.0895 Tj --212 TJm -(for) 11.6164 Tj --212 TJm -(compressing) 50.3609 Tj --212 TJm -(and) 14.386 Tj --212 TJm -(decompress) 47.0334 Tj -1 TJm -(ing) 12.7322 Tj --212 TJm -(data) 16.5977 Tj --212 TJm -(in) 7.7509 Tj --212 TJm -(memory) 33.2053 Tj -65 TJm -(.) 2.4907 Tj --595 TJm -(There') 26.5503 Tj -55 TJm -(s) 3.8755 Tj --212 TJm -(no) 9.9626 Tj --212 TJm -(pro) 13.2801 Tj -15 TJm -(vision) 24.3586 Tj --212 TJm -(for) 11.6164 Tj --212 TJm -(dealing) 29.3299 Tj -72 645.543 Td -(with) 17.7135 Tj --213 TJm -(\002les,) 19.0983 Tj --220 TJm -(streams) 30.4357 Tj --213 TJm -(or) 8.2988 Tj --213 TJm -(an) 9.4047 Tj -15 TJm -(y) 4.9813 Tj --213 TJm -(other) 20.4731 Tj --213 TJm -(I/O) 13.2801 Tj --213 TJm -(mechanisms,) 51.7457 Tj --221 TJm -(just) 14.396 Tj --213 TJm -(straight) 29.8878 Tj --213 TJm -(memory-to-memory) 80.7967 Tj --213 TJm -(w) 7.193 Tj -10 TJm -(ork.) 15.7708 Tj --595 TJm -(In) 8.2988 Tj --213 TJm -(f) 3.3175 Tj -10 TJm -(act,) 14.107 Tj --221 TJm -(this) 14.396 Tj --213 TJm -(part) 15.4918 Tj --213 TJm -(of) 8.2988 Tj --213 TJm -(the) 12.1743 Tj --213 TJm -(library) 26.5603 Tj -72 633.588 Td -(can) 13.8281 Tj --250 TJm -(be) 9.4047 Tj --250 TJm -(compiled) 37.0808 Tj --250 TJm -(without) 30.4457 Tj --250 TJm -(inclusion) 36.5329 Tj --250 TJm -(of) 8.2988 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -222.534 633.588 Td -/F124_0 9.9626 Tf -(stdio.h) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -264.377 633.588 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --250 TJm -(which) 24.3486 Tj --250 TJm -(may) 17.1556 Tj --250 TJm -(be) 9.4047 Tj --250 TJm -(helpful) 28.224 Tj --250 TJm -(for) 11.6164 Tj --250 TJm -(embedded) 40.9463 Tj --250 TJm -(applications.) 50.6399 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 611.67 Td -(The) 15.4918 Tj --250 TJm -(lo) 7.7509 Tj -25 TJm -(w-le) 17.7035 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(el) 7.193 Tj --250 TJm -(part) 15.4918 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(library) 26.5603 Tj --250 TJm -(has) 13.2801 Tj --250 TJm -(no) 9.9626 Tj --250 TJm -(global) 24.9065 Tj --250 TJm -(v) 4.9813 Tj -25 TJm -(ariables) 30.9837 Tj --250 TJm -(and) 14.386 Tj --250 TJm -(is) 6.6451 Tj --250 TJm -(therefore) 35.955 Tj --250 TJm -(thread-safe.) 46.7445 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 589.752 Td -(Six) 13.2901 Tj --875 TJm -(routines) 32.0995 Tj --876 TJm -(mak) 17.1556 Tj -10 TJm -(e) 4.4234 Tj --875 TJm -(up) 9.9626 Tj --876 TJm -(the) 12.1743 Tj --875 TJm -(lo) 7.7509 Tj -25 TJm -(w) 7.193 Tj --876 TJm -(le) 7.193 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(el) 7.193 Tj --875 TJm -(interf) 21.579 Tj -10 TJm -(ace:) 16.0398 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -308.791 589.752 Td -/F124_0 9.9626 Tf -(BZ2_bzCompressInit) 107.5961 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -416.387 589.752 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -429.158 589.752 Td -/F124_0 9.9626 Tf -(BZ2_bzCompress) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -512.844 589.752 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --1032 TJm -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 577.797 Td -/F124_0 9.9626 Tf -(BZ2_bzCompressEnd) 101.6185 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -186.15 577.797 Td -/F122_0 9.9626 Tf -(for) 11.6164 Tj --1258 TJm -(compression,) 52.8516 Tj --1510 TJm -(and) 14.386 Tj --1257 TJm -(a) 4.4234 Tj --1258 TJm -(corresponding) 56.996 Tj --1258 TJm -(trio) 13.8381 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -417.958 577.797 Td -/F124_0 9.9626 Tf -(BZ2_bzDecompressInit) 119.5512 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -537.509 577.797 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 565.842 Td -/F124_0 9.9626 Tf -(BZ2_bzDecompress) 95.641 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -172.707 565.842 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -192.158 565.842 Td -/F124_0 9.9626 Tf -(BZ2_bzDecompressEnd) 113.5736 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -310.798 565.842 Td -/F122_0 9.9626 Tf -(for) 11.6164 Tj --508 TJm -(decompression.) 62.2563 Tj --2171 TJm -(The) 15.4918 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -431.918 564.099 Td -/F124_0 9.9626 Tf -(*) 5.9776 Tj -437.895 565.842 Td -(Init) 23.9102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -466.871 565.842 Td -/F122_0 9.9626 Tf -(functions) 37.0808 Tj --508 TJm -(allocate) 30.9837 Tj -72 553.887 Td -(memory) 33.2053 Tj --574 TJm -(for) 11.6164 Tj --573 TJm -(compression/decompression) 112.8962 Tj --574 TJm -(and) 14.386 Tj --574 TJm -(do) 9.9626 Tj --573 TJm -(other) 20.4731 Tj --574 TJm -(initialisations,) 56.1891 Tj --654 TJm -(whilst) 24.3586 Tj --574 TJm -(the) 12.1743 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -419.503 552.143 Td -/F124_0 9.9626 Tf -(*) 5.9776 Tj -425.48 553.887 Td -(End) 17.9327 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -449.128 553.887 Td -/F122_0 9.9626 Tf -(functions) 37.0808 Tj --574 TJm -(close) 20.4731 Tj --573 TJm -(do) 9.9626 Tj -25 TJm -(wn) 12.1743 Tj -72 541.932 Td -(operations) 41.5042 Tj --250 TJm -(and) 14.386 Tj --250 TJm -(release) 27.6562 Tj --250 TJm -(memory) 33.2053 Tj -65 TJm -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 520.014 Td -(The) 15.4918 Tj --303 TJm -(real) 14.9339 Tj --303 TJm -(w) 7.193 Tj -10 TJm -(ork) 13.2801 Tj --303 TJm -(is) 6.6451 Tj --303 TJm -(done) 19.3673 Tj --303 TJm -(by) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -176.892 520.014 Td -/F124_0 9.9626 Tf -(BZ2_bzCompress) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -263.598 520.014 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -281.003 520.014 Td -/F124_0 9.9626 Tf -(BZ2_bzDecompress) 95.641 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -376.645 520.014 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj --939 TJm -(These) 23.7907 Tj --303 TJm -(compress) 37.6287 Tj --303 TJm -(and) 14.386 Tj --303 TJm -(decompress) 47.0334 Tj --303 TJm -(data) 16.5977 Tj -72 508.059 Td -(from) 19.3673 Tj --205 TJm -(a) 4.4234 Tj --205 TJm -(user) 16.5977 Tj -20 TJm -(-supplied) 37.0808 Tj --205 TJm -(input) 20.4831 Tj --206 TJm -(b) 4.9813 Tj -20 TJm -(uf) 8.2988 Tj -25 TJm -(fer) 11.0585 Tj --205 TJm -(to) 7.7509 Tj --205 TJm -(a) 4.4234 Tj --205 TJm -(user) 16.5977 Tj -20 TJm -(-supplied) 37.0808 Tj --205 TJm -(output) 25.4644 Tj --205 TJm -(b) 4.9813 Tj -20 TJm -(uf) 8.2988 Tj -25 TJm -(fer) 11.0585 Tj -55 TJm -(.) 2.4907 Tj --591 TJm -(These) 23.7907 Tj --205 TJm -(b) 4.9813 Tj -20 TJm -(uf) 8.2988 Tj -25 TJm -(fers) 14.9339 Tj --205 TJm -(can) 13.8281 Tj --205 TJm -(be) 9.4047 Tj --205 TJm -(an) 9.4047 Tj -15 TJm -(y) 4.9813 Tj --205 TJm -(size;) 18.2614 Tj --220 TJm -(arbitrary) 34.3012 Tj --206 TJm -(quantities) 38.7446 Tj --205 TJm -(of) 8.2988 Tj -72 496.104 Td -(data) 16.5977 Tj --258 TJm -(are) 12.1643 Tj --258 TJm -(handled) 31.5416 Tj --258 TJm -(by) 9.9626 Tj --257 TJm -(making) 29.8878 Tj --258 TJm -(repeated) 33.7433 Tj --258 TJm -(calls) 18.2614 Tj --258 TJm -(to) 7.7509 Tj --258 TJm -(these) 20.4731 Tj --258 TJm -(functions.) 39.5714 Tj --667 TJm -(This) 17.7135 Tj --258 TJm -(is) 6.6451 Tj --258 TJm -(a) 4.4234 Tj --257 TJm -(\003e) 9.9626 Tj -15 TJm -(xible) 19.9252 Tj --258 TJm -(mechanism) 45.3796 Tj --258 TJm -(allo) 14.9439 Tj -25 TJm -(wing) 19.9252 Tj --258 TJm -(a) 4.4234 Tj --258 TJm -(consumer) 38.7346 Tj -20 TJm -(-pull) 18.8194 Tj -72 484.148 Td -(style) 18.8194 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(acti) 14.386 Tj -25 TJm -(vity) 15.5018 Tj -65 TJm -(,) 2.4907 Tj --250 TJm -(or) 8.2988 Tj --250 TJm -(producer) 35.4071 Tj -20 TJm -(-push,) 24.6275 Tj --250 TJm -(or) 8.2988 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(mixture) 30.9936 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(both.) 20.2042 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 453.527 Td -/F116_0 17.2154 Tf -(3.1.2.) 43.0729 Tj --278 TJm -(High-le) 58.343 Tj -15 TJm -(vel) 23.9294 Tj --278 TJm -(summar) 66.9679 Tj --10 TJm -(y) 9.5718 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 431.609 Td -/F122_0 9.9626 Tf -(This) 17.7135 Tj --284 TJm -(interf) 21.579 Tj -10 TJm -(ace) 13.2702 Tj --284 TJm -(pro) 13.2801 Tj -15 TJm -(vides) 21.031 Tj --285 TJm -(some) 21.031 Tj --284 TJm -(handy) 24.3486 Tj --284 TJm -(wrappers) 36.5129 Tj --284 TJm -(around) 27.6661 Tj --284 TJm -(the) 12.1743 Tj --284 TJm -(lo) 7.7509 Tj -25 TJm -(w-le) 17.7035 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(el) 7.193 Tj --285 TJm -(interf) 21.579 Tj -10 TJm -(ace) 13.2702 Tj --284 TJm -(to) 7.7509 Tj --284 TJm -(f) 3.3175 Tj -10 TJm -(acilitate) 31.5416 Tj --284 TJm -(reading) 29.8778 Tj --284 TJm -(and) 14.386 Tj --285 TJm -(writ) 16.0497 Tj -1 TJm -(ing) 12.7322 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -510.112 431.609 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 419.654 Td -/F122_0 9.9626 Tf -(format) 26.5603 Tj --347 TJm -(\002les) 16.6077 Tj --346 TJm -(\() 3.3175 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -125.391 419.654 Td -/F124_0 9.9626 Tf -(.bz2) 23.9102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -152.754 419.654 Td -/F122_0 9.9626 Tf -(\002les\).) 22.4159 Tj --1200 TJm -(The) 15.4918 Tj --346 TJm -(routines) 32.0995 Tj --347 TJm -(pro) 13.2801 Tj -15 TJm -(vide) 17.1556 Tj --346 TJm -(hooks) 23.8007 Tj --347 TJm -(to) 7.7509 Tj --346 TJm -(f) 3.3175 Tj -10 TJm -(acilitate) 31.5416 Tj --347 TJm -(reading) 29.8778 Tj --347 TJm -(\002les) 16.6077 Tj --346 TJm -(in) 7.7509 Tj --347 TJm -(which) 24.3486 Tj --346 TJm -(the) 12.1743 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -460.049 419.654 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -493.39 419.654 Td -/F122_0 9.9626 Tf -(data) 16.5977 Tj --347 TJm -(stream) 26.5603 Tj -72 407.699 Td -(is) 6.6451 Tj --339 TJm -(embedded) 40.9463 Tj --339 TJm -(within) 25.4644 Tj --339 TJm -(some) 21.031 Tj --339 TJm -(lar) 10.5105 Tj -18 TJm -(ger) 12.7222 Tj -20 TJm -(-scale) 23.2328 Tj --339 TJm -(\002le) 12.7322 Tj --339 TJm -(structure,) 37.3498 Tj --361 TJm -(or) 8.2988 Tj --340 TJm -(wher) 19.9152 Tj -1 TJm -(e) 4.4234 Tj --340 TJm -(there) 19.9152 Tj --339 TJm -(are) 12.1643 Tj --339 TJm -(multiple) 33.2153 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -400.941 407.699 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -434.207 407.699 Td -/F122_0 9.9626 Tf -(data) 16.5977 Tj --339 TJm -(streams) 30.4357 Tj --339 TJm -(concatenated) 52.0048 Tj -72 395.744 Td -(end-to-end.) 45.6486 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 373.826 Td -(F) 5.5392 Tj -15 TJm -(or) 8.2988 Tj --332 TJm -(reading) 29.8778 Tj --333 TJm -(\002les,) 19.0983 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -144.803 373.826 Td -/F124_0 9.9626 Tf -(BZ2_bzReadOpen) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -228.489 373.826 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -234.496 373.826 Td -/F124_0 9.9626 Tf -(BZ2_bzRead) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -294.272 373.826 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -300.279 373.826 Td -/F124_0 9.9626 Tf -(BZ2_bzReadClose) 89.6634 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -393.253 373.826 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -410.951 373.826 Td -/F124_0 9.9626 Tf -(BZ2_bzReadGetUnused) 113.5736 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -527.836 373.826 Td -/F122_0 9.9626 Tf -(are) 12.1643 Tj -72 361.871 Td -(supplied.) 36.2539 Tj --620 TJm -(F) 5.5392 Tj -15 TJm -(or) 8.2988 Tj --250 TJm -(writing) 28.782 Tj --250 TJm -(\002les,) 19.0983 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -183.471 361.871 Td -/F124_0 9.9626 Tf -(BZ2_bzWriteOpen) 89.6634 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -273.135 361.871 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -278.116 361.871 Td -/F124_0 9.9626 Tf -(BZ2_bzWrite) 65.7532 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -346.36 361.871 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -363.237 361.871 Td -/F124_0 9.9626 Tf -(BZ2_bzWriteFinish) 101.6185 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -467.346 361.871 Td -/F122_0 9.9626 Tf -(are) 12.1643 Tj --250 TJm -(a) 4.4234 Tj -20 TJm -(v) 4.9813 Tj -25 TJm -(ailable.) 29.0509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 339.953 Td -(As) 11.0684 Tj --374 TJm -(with) 17.7135 Tj --374 TJm -(the) 12.1743 Tj --375 TJm -(lo) 7.7509 Tj -25 TJm -(w-le) 17.7035 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(el) 7.193 Tj --374 TJm -(library) 26.5603 Tj -65 TJm -(,) 2.4907 Tj --405 TJm -(no) 9.9626 Tj --374 TJm -(global) 24.9065 Tj --374 TJm -(v) 4.9813 Tj -25 TJm -(ariables) 30.9837 Tj --375 TJm -(are) 12.1643 Tj --374 TJm -(used) 18.2614 Tj --374 TJm -(so) 8.8568 Tj --374 TJm -(the) 12.1743 Tj --374 TJm -(library) 26.5603 Tj --375 TJm -(is) 6.6451 Tj --374 TJm -(per) 12.7222 Tj --374 TJm -(se) 8.2988 Tj --374 TJm -(thread-safe.) 46.7445 Tj --1365 TJm -(Ho) 12.1743 Tj -25 TJm -(we) 11.6164 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(er) 7.7409 Tj -40 TJm -(,) 2.4907 Tj --406 TJm -(if) 6.0871 Tj --374 TJm -(I/O) 13.2801 Tj -72 327.998 Td -(errors) 23.2328 Tj --267 TJm -(occur) 22.1269 Tj --267 TJm -(whilst) 24.3586 Tj --267 TJm -(reading) 29.8778 Tj --267 TJm -(or) 8.2988 Tj --267 TJm -(writing) 28.782 Tj --267 TJm -(the) 12.1743 Tj --268 TJm -(underlying) 43.1679 Tj --267 TJm -(compressed) 47.0334 Tj --267 TJm -(\002les,) 19.0983 Tj --271 TJm -(you) 14.9439 Tj --267 TJm -(may) 17.1556 Tj --267 TJm -(ha) 9.4047 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --267 TJm -(to) 7.7509 Tj --267 TJm -(consult) 28.782 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -457.199 327.998 Td -/F124_0 9.9626 Tf -(errno) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -489.748 327.998 Td -/F122_0 9.9626 Tf -(to) 7.7509 Tj --267 TJm -(determine) 39.8404 Tj -72 316.043 Td -(the) 12.1743 Tj --366 TJm -(cause) 22.1269 Tj --365 TJm -(of) 8.2988 Tj --366 TJm -(the) 12.1743 Tj --365 TJm -(error) 19.3573 Tj -55 TJm -(.) 2.4907 Tj --1314 TJm -(In) 8.2988 Tj --366 TJm -(that) 14.9439 Tj --365 TJm -(case,) 19.6363 Tj --395 TJm -(you') 18.2614 Tj -50 TJm -(d) 4.9813 Tj --366 TJm -(need) 18.8094 Tj --365 TJm -(a) 4.4234 Tj --366 TJm -(C) 6.6451 Tj --365 TJm -(library) 26.5603 Tj --366 TJm -(which) 24.3486 Tj --366 TJm -(correctly) 35.4071 Tj --365 TJm -(supports) 33.7633 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -431.668 316.043 Td -/F124_0 9.9626 Tf -(errno) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -465.199 316.043 Td -/F122_0 9.9626 Tf -(in) 7.7509 Tj --366 TJm -(a) 4.4234 Tj --365 TJm -(multithreaded) 55.3422 Tj -72 304.088 Td -(en) 9.4047 Tj -40 TJm -(vironment.) 43.4469 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 282.17 Td -(T) 6.0871 Tj -80 TJm -(o) 4.9813 Tj --243 TJm -(mak) 17.1556 Tj -10 TJm -(e) 4.4234 Tj --243 TJm -(the) 12.1743 Tj --242 TJm -(library) 26.5603 Tj --243 TJm -(a) 4.4234 Tj --243 TJm -(little) 18.2714 Tj --242 TJm -(simpler) 29.8878 Tj --243 TJm -(and) 14.386 Tj --243 TJm -(more) 20.4731 Tj --243 TJm -(portable,) 35.1381 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -289.263 282.17 Td -/F124_0 9.9626 Tf -(BZ2_bzReadOpen) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -375.368 282.17 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -392.172 282.17 Td -/F124_0 9.9626 Tf -(BZ2_bzWriteOpen) 89.6634 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -484.254 282.17 Td -/F122_0 9.9626 Tf -(require) 28.2141 Tj --243 TJm -(you) 14.9439 Tj --243 TJm -(to) 7.7509 Tj -72 270.215 Td -(pass) 17.1556 Tj --247 TJm -(them) 19.9252 Tj --248 TJm -(\002le) 12.7322 Tj --247 TJm -(handles) 30.4357 Tj --247 TJm -(\() 3.3175 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -165.421 270.215 Td -/F124_0 9.9626 Tf -(FILE) 23.9102 Tj -189.331 268.471 Td -(*) 5.9776 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -195.309 270.215 Td -/F122_0 9.9626 Tf -(s\)) 7.193 Tj --247 TJm -(which) 24.3486 Tj --248 TJm -(ha) 9.4047 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --247 TJm -(pre) 12.7222 Tj -25 TJm -(viously) 29.3399 Tj --247 TJm -(been) 18.8094 Tj --248 TJm -(opened) 28.772 Tj --247 TJm -(for) 11.6164 Tj --247 TJm -(reading) 29.8778 Tj --247 TJm -(or) 8.2988 Tj --248 TJm -(writing) 28.782 Tj --247 TJm -(respecti) 30.9837 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(ely) 12.1743 Tj -65 TJm -(.) 2.4907 Tj --618 TJm -(That) 18.2614 Tj --248 TJm -(a) 4.4234 Tj -20 TJm -(v) 4.9813 Tj -20 TJm -(oids) 16.6077 Tj -72 258.259 Td -(portability) 41.5142 Tj --272 TJm -(problems) 37.0808 Tj --273 TJm -(associated) 40.9463 Tj --272 TJm -(with) 17.7135 Tj --272 TJm -(\002le) 12.7322 Tj --273 TJm -(operations) 41.5042 Tj --272 TJm -(and) 14.386 Tj --272 TJm -(\002le) 12.7322 Tj --273 TJm -(attrib) 21.031 Tj -20 TJm -(utes,) 18.5404 Tj --278 TJm -(whilst) 24.3586 Tj --272 TJm -(not) 12.7322 Tj --272 TJm -(being) 22.1369 Tj --273 TJm -(much) 22.1369 Tj --272 TJm -(of) 8.2988 Tj --273 TJm -(an) 9.4047 Tj --272 TJm -(imposition) 42.63 Tj --272 TJm -(on) 9.9626 Tj --273 TJm -(the) 12.1743 Tj -72 246.304 Td -(programmer) 49.2451 Tj -55 TJm -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 215.683 Td -/F116_0 17.2154 Tf -(3.1.3.) 43.0729 Tj --278 TJm -(Utility) 47.8244 Tj --278 TJm -(functions) 77.4693 Tj --278 TJm -(summar) 66.9679 Tj --10 TJm -(y) 9.5718 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 193.765 Td -/F122_0 9.9626 Tf -(F) 5.5392 Tj -15 TJm -(or) 8.2988 Tj --273 TJm -(v) 4.9813 Tj -15 TJm -(ery) 12.7222 Tj --273 TJm -(simple) 26.5703 Tj --273 TJm -(needs,) 25.1755 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -165.929 193.765 Td -/F124_0 9.9626 Tf -(BZ2_bzBuffToBuffCompress) 143.4614 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -312.112 193.765 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -329.219 193.765 Td -/F124_0 9.9626 Tf -(BZ2_bzBuffToBuffDecompress) 155.4166 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -487.357 193.765 Td -/F122_0 9.9626 Tf -(are) 12.1643 Tj --273 TJm -(pro) 13.2801 Tj -15 TJm -(vided.) 24.6275 Tj -72 181.81 Td -(These) 23.7907 Tj --374 TJm -(compress) 37.6287 Tj --373 TJm -(data) 16.5977 Tj --374 TJm -(in) 7.7509 Tj --373 TJm -(memory) 33.2053 Tj --374 TJm -(from) 19.3673 Tj --373 TJm -(one) 14.386 Tj --374 TJm -(b) 4.9813 Tj -20 TJm -(uf) 8.2988 Tj -25 TJm -(fer) 11.0585 Tj --373 TJm -(to) 7.7509 Tj --374 TJm -(another) 29.8778 Tj --374 TJm -(b) 4.9813 Tj -20 TJm -(uf) 8.2988 Tj -25 TJm -(fer) 11.0585 Tj --373 TJm -(in) 7.7509 Tj --374 TJm -(a) 4.4234 Tj --373 TJm -(single) 23.8007 Tj --374 TJm -(function) 33.2053 Tj --373 TJm -(call.) 16.8766 Tj --1362 TJm -(Y) 7.193 Tj -110 TJm -(ou) 9.9626 Tj --373 TJm -(should) 26.5703 Tj --374 TJm -(assess) 24.3486 Tj -72 169.855 Td -(whether) 32.0895 Tj --344 TJm -(these) 20.4731 Tj --343 TJm -(functions) 37.0808 Tj --344 TJm -(ful\002ll) 22.1469 Tj --344 TJm -(your) 18.2614 Tj --343 TJm -(memory-to-memory) 80.7967 Tj --344 TJm -(compression/decompression) 112.8962 Tj --343 TJm -(requirements) 52.0147 Tj --344 TJm -(before) 25.4445 Tj --344 TJm -(in) 7.7509 Tj -40 TJm -(v) 4.9813 Tj -15 TJm -(esting) 23.8007 Tj -72 157.9 Td -(ef) 7.7409 Tj -25 TJm -(fort) 14.386 Tj --250 TJm -(in) 7.7509 Tj --250 TJm -(understanding) 56.4481 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(more) 20.4731 Tj --250 TJm -(general) 29.3199 Tj --250 TJm -(b) 4.9813 Tj -20 TJm -(ut) 7.7509 Tj --250 TJm -(more) 20.4731 Tj --250 TJm -(comple) 29.3299 Tj -15 TJm -(x) 4.9813 Tj --250 TJm -(lo) 7.7509 Tj -25 TJm -(w-le) 17.7035 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(el) 7.193 Tj --250 TJm -(interf) 21.579 Tj -10 TJm -(ace.) 15.7608 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 135.982 Td -(Y) 7.193 Tj -110 TJm -(oshioka) 30.9936 Tj --423 TJm -(Tsuneo) 29.3299 Tj --422 TJm -(\() 3.3175 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -150.161 135.982 Td -/F124_0 9.9626 Tf -(tsuneo@rr.iij4u.or.jp) 125.5288 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -275.69 135.982 Td -/F122_0 9.9626 Tf -(\)) 3.3175 Tj --423 TJm -(has) 13.2801 Tj --422 TJm -(contrib) 28.224 Tj -20 TJm -(uted) 17.1556 Tj --423 TJm -(some) 21.031 Tj --423 TJm -(functions) 37.0808 Tj --422 TJm -(to) 7.7509 Tj --423 TJm -(gi) 7.7509 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --423 TJm -(better) 22.6848 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -476.462 135.982 Td -/F124_0 9.9626 Tf -(zlib) 23.9102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -504.583 135.982 Td -/F122_0 9.9626 Tf -(compati-) 35.417 Tj -72 124.027 Td -(bility) 21.041 Tj -65 TJm -(.) 2.4907 Tj --1446 TJm -(These) 23.7907 Tj --388 TJm -(functions) 37.0808 Tj --387 TJm -(are) 12.1643 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -193.914 124.027 Td -/F124_0 9.9626 Tf -(BZ2_bzopen) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -253.689 124.027 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -260.385 124.027 Td -/F124_0 9.9626 Tf -(BZ2_bzread) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -320.161 124.027 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -326.857 124.027 Td -/F124_0 9.9626 Tf -(BZ2_bzwrite) 65.7532 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -392.611 124.027 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -399.307 124.027 Td -/F124_0 9.9626 Tf -(BZ2_bzflush) 65.7532 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -465.06 124.027 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -471.756 124.027 Td -/F124_0 9.9626 Tf -(BZ2_bzclose) 65.7532 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -537.509 124.027 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 112.072 Td -/F124_0 9.9626 Tf -(BZ2_bzerror) 65.7532 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -140.408 112.072 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -157.449 112.072 Td -/F124_0 9.9626 Tf -(BZ2_bzlibVersion) 95.641 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -253.091 112.072 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj --719 TJm -(Y) 7.193 Tj -110 TJm -(ou) 9.9626 Tj --266 TJm -(may) 17.1556 Tj --267 TJm -(\002nd) 15.5018 Tj --266 TJm -(these) 20.4731 Tj --267 TJm -(functions) 37.0808 Tj --266 TJm -(more) 20.4731 Tj --267 TJm -(con) 14.386 Tj -40 TJm -(v) 4.9813 Tj -15 TJm -(enient) 24.3486 Tj --266 TJm -(for) 11.6164 Tj --267 TJm -(simple) 26.5703 Tj --266 TJm -(\002le) 12.7322 Tj --267 TJm -(reading) 29.8778 Tj -72 100.116 Td -(and) 14.386 Tj --270 TJm -(writ) 16.0497 Tj -1 TJm -(ing,) 15.2229 Tj --275 TJm -(than) 17.1556 Tj --269 TJm -(those) 21.031 Tj --270 TJm -(in) 7.7509 Tj --269 TJm -(the) 12.1743 Tj --270 TJm -(high-le) 28.224 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(el) 7.193 Tj --269 TJm -(interf) 21.579 Tj -10 TJm -(ace.) 15.7608 Tj --737 TJm -(These) 23.7907 Tj --270 TJm -(functions) 37.0808 Tj --269 TJm -(are) 12.1643 Tj --270 TJm -(not) 12.7322 Tj --269 TJm -(\(yet\)) 18.8094 Tj --270 TJm -(of) 8.2988 Tj -25 TJm -(\002cially) 27.6761 Tj --269 TJm -(part) 15.4918 Tj --270 TJm -(of) 8.2988 Tj --269 TJm -(the) 12.1743 Tj --270 TJm -(library) 26.5603 Tj -65 TJm -(,) 2.4907 Tj --274 TJm -(and) 14.386 Tj --270 TJm -(are) 12.1643 Tj -72 88.161 Td -(minimally) 40.9662 Tj --291 TJm -(documented) 48.6972 Tj --291 TJm -(here.) 19.6363 Tj --867 TJm -(If) 6.6351 Tj --291 TJm -(the) 12.1743 Tj -15 TJm -(y) 4.9813 Tj --291 TJm -(break,) 24.6176 Tj --301 TJm -(you) 14.9439 Tj --291 TJm -(get) 12.1743 Tj --292 TJm -(to) 7.7509 Tj --291 TJm -(k) 4.9813 Tj -10 TJm -(eep) 13.8281 Tj --291 TJm -(all) 9.9626 Tj --291 TJm -(the) 12.1743 Tj --291 TJm -(pieces.) 27.3872 Tj --433 TJm -(I) 3.3175 Tj --291 TJm -(hope) 19.3673 Tj --291 TJm -(to) 7.7509 Tj --291 TJm -(document) 39.2925 Tj --292 TJm -(them) 19.9252 Tj --291 TJm -(properly) 33.7533 Tj --291 TJm -(when) 21.579 Tj -72 76.206 Td -(time) 17.7135 Tj --250 TJm -(permits.) 32.3785 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -541.288 51.071 Td -(9) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 10 13 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -419.067 749.245 Td -/F122_0 9.9626 Tf -(Programming) 54.7943 Tj --250 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -496.556 749.245 Td -/F124_0 9.9626 Tf -(libbzip2) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -72 710.037 Td -/F122_0 9.9626 Tf -(Y) 7.193 Tj -110 TJm -(oshioka) 30.9936 Tj --250 TJm -(also) 16.0497 Tj --250 TJm -(contrib) 28.224 Tj -20 TJm -(uted) 17.1556 Tj --250 TJm -(modi\002cations) 54.2464 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(allo) 14.9439 Tj -25 TJm -(w) 7.193 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(library) 26.5603 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(be) 9.4047 Tj --250 TJm -(b) 4.9813 Tj -20 TJm -(uilt) 13.2901 Tj --250 TJm -(as) 8.2988 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(W) 9.4047 Tj -40 TJm -(indo) 17.7135 Tj -25 TJm -(ws) 11.0684 Tj --250 TJm -(DLL.) 21.8579 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 675.504 Td -/F116_0 20.6585 Tf -(3.2.) 34.4584 Tj --278 TJm -(Err) 29.8515 Tj -20 TJm -(or) 20.6585 Tj --278 TJm -(handling) 86.084 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 653.805 Td -/F122_0 9.9626 Tf -(The) 15.4918 Tj --214 TJm -(library) 26.5603 Tj --215 TJm -(is) 6.6451 Tj --214 TJm -(designed) 35.417 Tj --215 TJm -(to) 7.7509 Tj --214 TJm -(reco) 17.1456 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(er) 7.7409 Tj --215 TJm -(cleanly) 28.772 Tj --214 TJm -(in) 7.7509 Tj --215 TJm -(all) 9.9626 Tj --214 TJm -(situations,) 40.6873 Tj --222 TJm -(including) 37.6387 Tj --214 TJm -(the) 12.1743 Tj --215 TJm -(w) 7.193 Tj -10 TJm -(orst-case) 35.4071 Tj --214 TJm -(situation) 34.3212 Tj --215 TJm -(of) 8.2988 Tj --214 TJm -(decompressing) 59.7656 Tj --215 TJm -(random) 30.4357 Tj -72 641.85 Td -(data.) 19.0883 Tj --764 TJm -(I'm) 14.386 Tj --274 TJm -(not) 12.7322 Tj --275 TJm -(100%) 23.2427 Tj --274 TJm -(sure) 16.5977 Tj --274 TJm -(that) 14.9439 Tj --274 TJm -(it) 5.5392 Tj --274 TJm -(can) 13.8281 Tj --274 TJm -(al) 7.193 Tj -10 TJm -(w) 7.193 Tj -10 TJm -(ays) 13.2801 Tj --274 TJm -(do) 9.9626 Tj --274 TJm -(this,) 16.8866 Tj --280 TJm -(so) 8.8568 Tj --274 TJm -(you) 14.9439 Tj --274 TJm -(might) 23.2527 Tj --274 TJm -(w) 7.193 Tj -10 TJm -(ant) 12.1743 Tj --274 TJm -(to) 7.7509 Tj --274 TJm -(add) 14.386 Tj --274 TJm -(a) 4.4234 Tj --275 TJm -(s) 3.8755 Tj -1 TJm -(ignal) 19.9252 Tj --275 TJm -(handler) 29.8778 Tj --274 TJm -(to) 7.7509 Tj --274 TJm -(catch) 21.0211 Tj --274 TJm -(se) 8.2988 Tj -15 TJm -(gmentation) 44.8317 Tj -72 629.895 Td -(violations) 39.3025 Tj --273 TJm -(during) 26.0123 Tj --273 TJm -(decompression) 59.7656 Tj --273 TJm -(if) 6.0871 Tj --273 TJm -(you) 14.9439 Tj --273 TJm -(are) 12.1643 Tj --273 TJm -(feeling) 27.6661 Tj --274 TJm -(especiall) 34.8591 Tj -1 TJm -(y) 4.9813 Tj --274 TJm -(paranoid.) 37.3498 Tj --758 TJm -(I) 3.3175 Tj --273 TJm -(w) 7.193 Tj -10 TJm -(ould) 17.7135 Tj --273 TJm -(be) 9.4047 Tj --273 TJm -(interested) 38.7346 Tj --273 TJm -(in) 7.7509 Tj --274 TJm -(hearing) 29.8778 Tj --273 TJm -(more) 20.4731 Tj --273 TJm -(about) 22.1369 Tj -72 617.939 Td -(the) 12.1743 Tj --250 TJm -(rob) 13.2801 Tj -20 TJm -(ustness) 28.782 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(library) 26.5603 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(corrupted) 38.1767 Tj --250 TJm -(compressed) 47.0334 Tj --250 TJm -(data.) 19.0883 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 596.241 Td -(V) 7.193 Tj -111 TJm -(ersion) 24.3486 Tj --251 TJm -(1.0.3) 19.9252 Tj --251 TJm -(more) 20.4731 Tj --251 TJm -(rob) 13.2801 Tj -20 TJm -(ust) 11.6264 Tj --251 TJm -(in) 7.7509 Tj --251 TJm -(this) 14.396 Tj --251 TJm -(respect) 28.2141 Tj --252 TJm -(than) 17.1556 Tj --251 TJm -(an) 9.4047 Tj -15 TJm -(y) 4.9813 Tj --251 TJm -(pre) 12.7222 Tj -25 TJm -(vious) 21.589 Tj --251 TJm -(v) 4.9813 Tj -15 TJm -(ersion.) 26.8392 Tj --626 TJm -(In) 8.2988 Tj -40 TJm -(v) 4.9813 Tj -15 TJm -(estig) 18.8194 Tj -5 TJm -(ations) 23.8007 Tj --251 TJm -(with) 17.7135 Tj --251 TJm -(V) 7.193 Tj -111 TJm -(algrind) 28.224 Tj --251 TJm -(\(a) 7.7409 Tj --252 TJm -(tool) 15.5018 Tj --251 TJm -(for) 11.6164 Tj --251 TJm -(detecting) 36.5229 Tj -72 584.285 Td -(problems) 37.0808 Tj --422 TJm -(with) 17.7135 Tj --421 TJm -(memory) 33.2053 Tj --422 TJm -(management\)) 54.2264 Tj --421 TJm -(indicate) 31.5416 Tj --422 TJm -(that,) 17.4346 Tj --464 TJm -(at) 7.193 Tj --422 TJm -(least) 18.2614 Tj --421 TJm -(for) 11.6164 Tj --422 TJm -(the) 12.1743 Tj --422 TJm -(f) 3.3175 Tj -1 TJm -(e) 4.4234 Tj -25 TJm -(w) 7.193 Tj --422 TJm -(\002les) 16.6077 Tj --422 TJm -(I) 3.3175 Tj --421 TJm -(tested,) 25.7334 Tj --464 TJm -(all) 9.9626 Tj --422 TJm -(single-bit) 37.6387 Tj --422 TJm -(errors) 23.2328 Tj --421 TJm -(in) 7.7509 Tj --422 TJm -(the) 12.1743 Tj -72 572.33 Td -(decompressed) 56.4381 Tj --342 TJm -(data) 16.5977 Tj --341 TJm -(are) 12.1643 Tj --342 TJm -(caught) 26.5603 Tj --342 TJm -(properly) 33.7533 Tj -65 TJm -(,) 2.4907 Tj --365 TJm -(with) 17.7135 Tj --341 TJm -(no) 9.9626 Tj --342 TJm -(se) 8.2988 Tj -15 TJm -(gmentation) 44.8317 Tj --342 TJm -(f) 3.3175 Tj -10 TJm -(aults,) 21.31 Tj --365 TJm -(no) 9.9626 Tj --341 TJm -(uses) 17.1556 Tj --342 TJm -(of) 8.2988 Tj --342 TJm -(uninitialised) 49.2651 Tj --342 TJm -(data,) 19.0883 Tj --364 TJm -(no) 9.9626 Tj --342 TJm -(out) 12.7322 Tj --342 TJm -(of) 8.2988 Tj --342 TJm -(range) 22.1269 Tj -72 560.375 Td -(reads) 21.0211 Tj --261 TJm -(or) 8.2988 Tj --260 TJm -(writes,) 26.8392 Tj --263 TJm -(and) 14.386 Tj --261 TJm -(no) 9.9626 Tj --261 TJm -(in\002nit) 23.8106 Tj -1 TJm -(e) 4.4234 Tj --261 TJm -(looping) 30.4457 Tj --261 TJm -(in) 7.7509 Tj --260 TJm -(the) 12.1743 Tj --261 TJm -(decompressor) 55.3323 Tj -55 TJm -(.) 2.4907 Tj --342 TJm -(So) 10.5205 Tj --260 TJm -(it') 8.8568 Tj -55 TJm -(s) 3.8755 Tj --261 TJm -(certainly) 34.8591 Tj --260 TJm -(pretty) 23.2427 Tj --261 TJm -(rob) 13.2801 Tj -20 TJm -(ust,) 14.117 Tj --263 TJm -(although) 34.8691 Tj --261 TJm -(I) 3.3175 Tj --260 TJm -(w) 7.193 Tj -10 TJm -(ouldn') 26.0123 Tj -18 TJm -(t) 2.7696 Tj --261 TJm -(claim) 22.1369 Tj -72 548.42 Td -(it) 5.5392 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(be) 9.4047 Tj --250 TJm -(totally) 25.4644 Tj --250 TJm -(bombproof.) 46.7644 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 526.721 Td -(The) 15.4918 Tj --282 TJm -(\002le) 12.7322 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -105.84 526.721 Td -/F124_0 9.9626 Tf -(bzlib.h) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -150.491 526.721 Td -/F122_0 9.9626 Tf -(contains) 33.2053 Tj --282 TJm -(all) 9.9626 Tj --282 TJm -(de\002nitions) 42.0721 Tj --282 TJm -(needed) 28.2141 Tj --281 TJm -(to) 7.7509 Tj --282 TJm -(use) 13.2801 Tj --282 TJm -(the) 12.1743 Tj --282 TJm -(library) 26.5603 Tj -65 TJm -(.) 2.4907 Tj --811 TJm -(In) 8.2988 Tj --282 TJm -(particular) 38.1767 Tj -40 TJm -(,) 2.4907 Tj --290 TJm -(you) 14.9439 Tj --282 TJm -(should) 26.5703 Tj --281 TJm -(de\002nitely) 37.6387 Tj --282 TJm -(not) 12.7322 Tj --282 TJm -(include) 29.3299 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 514.766 Td -/F124_0 9.9626 Tf -(bzlib_private.h) 89.6634 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -161.664 514.766 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 493.067 Td -(In) 8.2988 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -82.807 493.067 Td -/F124_0 9.9626 Tf -(bzlib.h) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -124.651 493.067 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --252 TJm -(the) 12.1743 Tj --252 TJm -(v) 4.9813 Tj -25 TJm -(arious) 24.3486 Tj --252 TJm -(return) 23.7907 Tj --252 TJm -(v) 4.9813 Tj -25 TJm -(alues) 20.4731 Tj --251 TJm -(are) 12.1643 Tj --252 TJm -(de\002ned.) 31.8205 Tj --631 TJm -(The) 15.4918 Tj --252 TJm -(follo) 18.8194 Tj -25 TJm -(wing) 19.9252 Tj --252 TJm -(list) 12.1843 Tj --251 TJm -(is) 6.6451 Tj --252 TJm -(not) 12.7322 Tj --252 TJm -(intended) 34.3112 Tj --252 TJm -(as) 8.2988 Tj --251 TJm -(an) 9.4047 Tj --252 TJm -(e) 4.4234 Tj -15 TJm -(xhausti) 28.782 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --252 TJm -(description) 44.2738 Tj --252 TJm -(of) 8.2988 Tj -72 481.112 Td -(the) 12.1743 Tj --236 TJm -(circumstances) 56.4381 Tj --236 TJm -(in) 7.7509 Tj --237 TJm -(which) 24.3486 Tj --236 TJm -(a) 4.4234 Tj --236 TJm -(gi) 7.7509 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(en) 9.4047 Tj --236 TJm -(v) 4.9813 Tj -25 TJm -(alue) 16.5977 Tj --236 TJm -(may) 17.1556 Tj --237 TJm -(be) 9.4047 Tj --236 TJm -(returned) 33.1954 Tj --236 TJm -(--) 6.6351 Tj --236 TJm -(those) 21.031 Tj --236 TJm -(descriptions) 48.1492 Tj --236 TJm -(are) 12.1643 Tj --237 TJm -(gi) 7.7509 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(en) 9.4047 Tj --236 TJm -(later) 17.7035 Tj -55 TJm -(.) 2.4907 Tj --305 TJm -(Rather) 26.5603 Tj -40 TJm -(,) 2.4907 Tj --239 TJm -(it) 5.5392 Tj --236 TJm -(is) 6.6451 Tj --237 TJm -(intended) 34.3112 Tj --236 TJm -(to) 7.7509 Tj -72 469.157 Td -(con) 14.386 Tj -40 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj -15 TJm -(y) 4.9813 Tj --266 TJm -(the) 12.1743 Tj --265 TJm -(rough) 23.2427 Tj --266 TJm -(meaning) 34.3112 Tj --265 TJm -(of) 8.2988 Tj --266 TJm -(each) 18.2515 Tj --266 TJm -(return) 23.7907 Tj --265 TJm -(v) 4.9813 Tj -25 TJm -(alue.) 19.0883 Tj --714 TJm -(The) 15.4918 Tj --265 TJm -(\002rst) 15.5018 Tj --266 TJm -(\002) 5.5392 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --265 TJm -(actions) 28.224 Tj --266 TJm -(are) 12.1643 Tj --266 TJm -(normal) 28.224 Tj --265 TJm -(and) 14.386 Tj --266 TJm -(not) 12.7322 Tj --265 TJm -(intended) 34.3112 Tj --266 TJm -(to) 7.7509 Tj --266 TJm -(denote) 26.5603 Tj --265 TJm -(an) 9.4047 Tj --266 TJm -(error) 19.3573 Tj -72 457.202 Td -(situation.) 36.8118 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 425.759 Td -/F124_0 9.9626 Tf -(BZ_OK) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 413.804 Td -/F122_0 9.9626 Tf -(The) 15.4918 Tj --250 TJm -(requested) 38.1767 Tj --250 TJm -(action) 24.3486 Tj --250 TJm -(w) 7.193 Tj -10 TJm -(as) 8.2988 Tj --250 TJm -(completed) 41.5042 Tj --250 TJm -(successfully) 48.6972 Tj -65 TJm -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 388.34 Td -/F124_0 9.9626 Tf -(BZ_RUN_OK,) 59.7756 Tj --600 TJm -(BZ_FLUSH_OK,) 71.7307 Tj --600 TJm -(BZ_FINISH_OK) 71.7307 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 376.384 Td -/F122_0 9.9626 Tf -(In) 8.2988 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -118.789 376.384 Td -/F124_0 9.9626 Tf -(BZ2_bzCompress) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -202.476 376.384 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(requested) 38.1767 Tj --250 TJm -(\003ush/\002nish/nothing-special) 108.4927 Tj --250 TJm -(action) 24.3486 Tj --250 TJm -(w) 7.193 Tj -10 TJm -(as) 8.2988 Tj --250 TJm -(completed) 41.5042 Tj --250 TJm -(successfully) 48.6972 Tj -65 TJm -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 350.92 Td -/F124_0 9.9626 Tf -(BZ_STREAM_END) 77.7083 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 338.965 Td -/F122_0 9.9626 Tf -(Compression) 52.5826 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(data) 16.5977 Tj --250 TJm -(w) 7.193 Tj -10 TJm -(as) 8.2988 Tj --250 TJm -(completed,) 43.9948 Tj --250 TJm -(or) 8.2988 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(logical) 27.1182 Tj --250 TJm -(stream) 26.5603 Tj --250 TJm -(end) 14.386 Tj --250 TJm -(w) 7.193 Tj -10 TJm -(as) 8.2988 Tj --250 TJm -(detected) 33.1954 Tj --250 TJm -(during) 26.0123 Tj --250 TJm -(decompression.) 62.2563 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 303.756 Td -(The) 15.4918 Tj --250 TJm -(follo) 18.8194 Tj -25 TJm -(wing) 19.9252 Tj --250 TJm -(return) 23.7907 Tj --250 TJm -(v) 4.9813 Tj -25 TJm -(alues) 20.4731 Tj --250 TJm -(indicate) 31.5416 Tj --250 TJm -(an) 9.4047 Tj --250 TJm -(error) 19.3573 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(some) 21.031 Tj --250 TJm -(kind.) 20.2042 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 272.314 Td -/F124_0 9.9626 Tf -(BZ_CONFIG_ERROR) 89.6634 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 260.359 Td -/F122_0 9.9626 Tf -(Indicates) 35.965 Tj --386 TJm -(that) 14.9439 Tj --385 TJm -(the) 12.1743 Tj --386 TJm -(library) 26.5603 Tj --386 TJm -(has) 13.2801 Tj --386 TJm -(been) 18.8094 Tj --385 TJm -(improperly) 44.2738 Tj --386 TJm -(compiled) 37.0808 Tj --386 TJm -(on) 9.9626 Tj --386 TJm -(your) 18.2614 Tj --385 TJm -(platform) 34.3112 Tj --386 TJm -(--) 6.6351 Tj --386 TJm -(a) 4.4234 Tj --386 TJm -(major) 23.2427 Tj --385 TJm -(con\002guration) 53.1305 Tj --386 TJm -(error) 19.3573 Tj -55 TJm -(.) 2.4907 Tj -108 248.404 Td -(Speci\002cally) 47.0434 Tj -65 TJm -(,) 2.4907 Tj --481 TJm -(it) 5.5392 Tj --435 TJm -(means) 25.4544 Tj --435 TJm -(that) 14.9439 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -220.614 248.404 Td -/F124_0 9.9626 Tf -(sizeof\(char\)) 71.7307 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -292.345 248.404 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -299.628 248.404 Td -/F124_0 9.9626 Tf -(sizeof\(short\)) 77.7083 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -381.669 248.404 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -400.388 248.404 Td -/F124_0 9.9626 Tf -(sizeof\(int\)) 65.7532 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -470.474 248.404 Td -/F122_0 9.9626 Tf -(are) 12.1643 Tj --435 TJm -(not) 12.7322 Tj --435 TJm -(1,) 7.472 Tj --481 TJm -(2) 4.9813 Tj --435 TJm -(and) 14.386 Tj -108 236.448 Td -(4) 4.9813 Tj --389 TJm -(respecti) 30.9837 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(ely) 12.1743 Tj -65 TJm -(,) 2.4907 Tj --424 TJm -(as) 8.2988 Tj --390 TJm -(the) 12.1743 Tj -15 TJm -(y) 4.9813 Tj --389 TJm -(should) 26.5703 Tj --389 TJm -(be.) 11.8953 Tj --1456 TJm -(Note) 19.3673 Tj --389 TJm -(that) 14.9439 Tj --389 TJm -(the) 12.1743 Tj --389 TJm -(library) 26.5603 Tj --390 TJm -(should) 26.5703 Tj --389 TJm -(still) 14.9539 Tj --389 TJm -(w) 7.193 Tj -10 TJm -(ork) 13.2801 Tj --389 TJm -(properly) 33.7533 Tj --390 TJm -(on) 9.9626 Tj --389 TJm -(64-bit) 23.8007 Tj --389 TJm -(platforms) 38.1866 Tj -108 224.493 Td -(which) 24.3486 Tj --292 TJm -(follo) 18.8194 Tj -25 TJm -(w) 7.193 Tj --292 TJm -(the) 12.1743 Tj --292 TJm -(LP64) 21.589 Tj --292 TJm -(programming) 54.2364 Tj --293 TJm -(model) 24.9065 Tj --292 TJm -(--) 6.6351 Tj --292 TJm -(that) 14.9439 Tj --292 TJm -(is,) 9.1357 Tj --303 TJm -(where) 24.3386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -355.279 224.493 Td -/F124_0 9.9626 Tf -(sizeof\(long\)) 71.7307 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -429.92 224.493 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -447.217 224.493 Td -/F124_0 9.9626 Tf -(sizeof\(void) 65.7532 Tj -512.97 222.75 Td -(*) 5.9776 Tj -518.948 224.493 Td -(\)) 5.9776 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -527.836 224.493 Td -/F122_0 9.9626 Tf -(are) 12.1643 Tj -108 212.538 Td -(8.) 7.472 Tj --620 TJm -(Under) 24.8965 Tj --250 TJm -(LP64,) 24.0796 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -175.606 212.538 Td -/F124_0 9.9626 Tf -(sizeof\(int\)) 65.7532 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -243.85 212.538 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --250 TJm -(still) 14.9539 Tj --250 TJm -(4,) 7.472 Tj --250 TJm -(so) 8.8568 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -291.74 212.538 Td -/F124_0 9.9626 Tf -(libbzip2) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -339.561 212.538 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --250 TJm -(which) 24.3486 Tj --250 TJm -(doesn') 26.5603 Tj -18 TJm -(t) 2.7696 Tj --250 TJm -(use) 13.2801 Tj --250 TJm -(the) 12.1743 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -433.458 212.538 Td -/F124_0 9.9626 Tf -(long) 23.9102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -459.859 212.538 Td -/F122_0 9.9626 Tf -(type,) 19.6462 Tj --250 TJm -(is) 6.6451 Tj --250 TJm -(OK.) 16.8766 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 187.073 Td -/F124_0 9.9626 Tf -(BZ_SEQUENCE_ERROR) 101.6185 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 175.118 Td -/F122_0 9.9626 Tf -(When) 23.7907 Tj --291 TJm -(using) 21.589 Tj --290 TJm -(the) 12.1743 Tj --291 TJm -(library) 26.5603 Tj -65 TJm -(,) 2.4907 Tj --300 TJm -(it) 5.5392 Tj --291 TJm -(is) 6.6451 Tj --290 TJm -(important) 38.7446 Tj --291 TJm -(to) 7.7509 Tj --290 TJm -(call) 14.386 Tj --291 TJm -(the) 12.1743 Tj --290 TJm -(functions) 37.0808 Tj --291 TJm -(in) 7.7509 Tj --290 TJm -(the) 12.1743 Tj --291 TJm -(correct) 27.6562 Tj --290 TJm -(sequence) 36.5129 Tj --291 TJm -(and) 14.386 Tj --290 TJm -(with) 17.7135 Tj --291 TJm -(data) 16.5977 Tj --290 TJm -(structures) 38.7346 Tj -108 163.163 Td -(\(b) 8.2988 Tj -20 TJm -(uf) 8.2988 Tj -25 TJm -(fers) 14.9339 Tj --206 TJm -(etc\)) 14.9339 Tj --205 TJm -(in) 7.7509 Tj --206 TJm -(the) 12.1743 Tj --205 TJm -(correct) 27.6562 Tj --206 TJm -(states.) 24.6275 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -239.409 163.163 Td -/F124_0 9.9626 Tf -(libbzip2) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -289.278 163.163 Td -/F122_0 9.9626 Tf -(checks) 27.1082 Tj --206 TJm -(as) 8.2988 Tj --205 TJm -(much) 22.1369 Tj --206 TJm -(as) 8.2988 Tj --206 TJm -(it) 5.5392 Tj --205 TJm -(can) 13.8281 Tj --206 TJm -(to) 7.7509 Tj --205 TJm -(ensure) 26.0024 Tj --206 TJm -(this) 14.396 Tj --206 TJm -(is) 6.6451 Tj --205 TJm -(happening,) 43.9948 Tj --215 TJm -(and) 14.386 Tj --205 TJm -(returns) 27.6661 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 151.208 Td -/F124_0 9.9626 Tf -(BZ_SEQUENCE_ERROR) 101.6185 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -213.27 151.208 Td -/F122_0 9.9626 Tf -(if) 6.0871 Tj --367 TJm -(not.) 15.2229 Tj --659 TJm -(Code) 21.031 Tj --367 TJm -(which) 24.3486 Tj --367 TJm -(complies) 35.9749 Tj --366 TJm -(precisely) 35.965 Tj --367 TJm -(with) 17.7135 Tj --366 TJm -(the) 12.1743 Tj --367 TJm -(function) 33.2053 Tj --366 TJm -(semantics,) 41.7831 Tj --396 TJm -(as) 8.2988 Tj --367 TJm -(detailed) 31.5416 Tj -108 139.253 Td -(belo) 17.1556 Tj -25 TJm -(w) 7.193 Tj -65 TJm -(,) 2.4907 Tj --250 TJm -(should) 26.5703 Tj --250 TJm -(ne) 9.4047 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(er) 7.7409 Tj --250 TJm -(recei) 19.3573 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --250 TJm -(this) 14.396 Tj --250 TJm -(v) 4.9813 Tj -25 TJm -(alue;) 19.3673 Tj --250 TJm -(such) 18.2614 Tj --250 TJm -(an) 9.4047 Tj --250 TJm -(e) 4.4234 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(ent) 12.1743 Tj --250 TJm -(denotes) 30.4357 Tj --250 TJm -(b) 4.9813 Tj -20 TJm -(uggy) 19.9252 Tj --250 TJm -(code) 18.8094 Tj --250 TJm -(which) 24.3486 Tj --250 TJm -(you) 14.9439 Tj --250 TJm -(should) 26.5703 Tj --250 TJm -(in) 7.7509 Tj -40 TJm -(v) 4.9813 Tj -15 TJm -(estig) 18.8194 Tj -5 TJm -(ate.) 14.107 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 113.788 Td -/F124_0 9.9626 Tf -(BZ_PARAM_ERROR) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 101.833 Td -/F122_0 9.9626 Tf -(Returned) 36.5229 Tj --434 TJm -(when) 21.579 Tj --434 TJm -(a) 4.4234 Tj --434 TJm -(parameter) 39.8305 Tj --434 TJm -(to) 7.7509 Tj --434 TJm -(a) 4.4234 Tj --433 TJm -(function) 33.2053 Tj --434 TJm -(call) 14.386 Tj --434 TJm -(is) 6.6451 Tj --434 TJm -(out) 12.7322 Tj --434 TJm -(of) 8.2988 Tj --434 TJm -(range) 22.1269 Tj --434 TJm -(or) 8.2988 Tj --434 TJm -(otherwise) 38.7346 Tj --434 TJm -(manifestly) 42.0621 Tj --434 TJm -(incorrect.) 37.8977 Tj --1723 TJm -(As) 11.0684 Tj -108 89.878 Td -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -131.644 89.878 Td -/F124_0 9.9626 Tf -(BZ_SEQUENCE_ERROR) 101.6185 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -233.263 89.878 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --595 TJm -(this) 14.396 Tj --596 TJm -(denotes) 30.4357 Tj --595 TJm -(a) 4.4234 Tj --595 TJm -(b) 4.9813 Tj -20 TJm -(ug) 9.9626 Tj --596 TJm -(in) 7.7509 Tj --595 TJm -(the) 12.1743 Tj --595 TJm -(client) 22.1369 Tj --595 TJm -(code.) 21.3 Tj --2692 TJm -(The) 15.4918 Tj --596 TJm -(distinction) 42.0721 Tj --595 TJm -(between) 33.1954 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 77.923 Td -/F124_0 9.9626 Tf -(BZ_PARAM_ERROR) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -194.177 77.923 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -211.054 77.923 Td -/F124_0 9.9626 Tf -(BZ_SEQUENCE_ERROR) 101.6185 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -315.163 77.923 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(bit) 10.5205 Tj --250 TJm -(hazy) 18.8094 Tj -65 TJm -(,) 2.4907 Tj --250 TJm -(b) 4.9813 Tj -20 TJm -(ut) 7.7509 Tj --250 TJm -(still) 14.9539 Tj --250 TJm -(w) 7.193 Tj -10 TJm -(orth) 16.0497 Tj --250 TJm -(making.) 32.3785 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -534.414 50.951 Td -(10) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 11 14 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -419.067 749.245 Td -/F122_0 9.9626 Tf -(Programming) 54.7943 Tj --250 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -496.556 749.245 Td -/F124_0 9.9626 Tf -(libbzip2) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -72 710.037 Td -/F124_0 9.9626 Tf -(BZ_MEM_ERROR) 71.7307 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 698.082 Td -/F122_0 9.9626 Tf -(Returned) 36.5229 Tj --228 TJm -(when) 21.579 Tj --227 TJm -(a) 4.4234 Tj --228 TJm -(request) 28.772 Tj --227 TJm -(to) 7.7509 Tj --228 TJm -(allocate) 30.9837 Tj --228 TJm -(memory) 33.2053 Tj --227 TJm -(f) 3.3175 Tj -10 TJm -(ailed.) 21.8579 Tj --605 TJm -(Note) 19.3673 Tj --228 TJm -(that) 14.9439 Tj --228 TJm -(the) 12.1743 Tj --227 TJm -(quantity) 32.6574 Tj --228 TJm -(of) 8.2988 Tj --227 TJm -(memory) 33.2053 Tj --228 TJm -(needed) 28.2141 Tj --228 TJm -(to) 7.7509 Tj --227 TJm -(decompress) 47.0334 Tj -108 686.127 Td -(a) 4.4234 Tj --351 TJm -(stream) 26.5603 Tj --352 TJm -(cannot) 26.5603 Tj --351 TJm -(be) 9.4047 Tj --352 TJm -(determined) 44.8217 Tj --351 TJm -(until) 18.2714 Tj --352 TJm -(the) 12.1743 Tj --351 TJm -(stream') 29.8778 Tj -55 TJm -(s) 3.8755 Tj --351 TJm -(header) 26.5503 Tj --352 TJm -(has) 13.2801 Tj --351 TJm -(been) 18.8094 Tj --352 TJm -(read.) 19.6363 Tj --1228 TJm -(So) 10.5205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -426.471 686.127 Td -/F124_0 9.9626 Tf -(BZ2_bzDecompress) 95.641 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -525.614 686.127 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 674.172 Td -/F124_0 9.9626 Tf -(BZ2_bzRead) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -172.13 674.172 Td -/F122_0 9.9626 Tf -(may) 17.1556 Tj --437 TJm -(return) 23.7907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -221.784 674.172 Td -/F124_0 9.9626 Tf -(BZ_MEM_ERROR) 71.7307 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -297.867 674.172 Td -/F122_0 9.9626 Tf -(e) 4.4234 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(en) 9.4047 Tj --437 TJm -(though) 27.6761 Tj --437 TJm -(some) 21.031 Tj --437 TJm -(of) 8.2988 Tj --437 TJm -(the) 12.1743 Tj --437 TJm -(compressed) 47.0334 Tj --437 TJm -(data) 16.5977 Tj --437 TJm -(has) 13.2801 Tj --437 TJm -(been) 18.8094 Tj --437 TJm -(read.) 19.6363 Tj -108 662.217 Td -(The) 15.4918 Tj --479 TJm -(same) 20.4731 Tj --478 TJm -(is) 6.6451 Tj --479 TJm -(not) 12.7322 Tj --478 TJm -(true) 15.4918 Tj --479 TJm -(for) 11.6164 Tj --479 TJm -(compression;) 53.1305 Tj --593 TJm -(once) 18.8094 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -301.675 662.217 Td -/F124_0 9.9626 Tf -(BZ2_bzCompressInit) 107.5961 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -414.04 662.217 Td -/F122_0 9.9626 Tf -(or) 8.2988 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -427.107 662.217 Td -/F124_0 9.9626 Tf -(BZ2_bzWriteOpen) 89.6634 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -521.539 662.217 Td -/F122_0 9.9626 Tf -(ha) 9.4047 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj -108 650.261 Td -(successfully) 48.6972 Tj --250 TJm -(completed,) 43.9948 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -205.672 650.261 Td -/F124_0 9.9626 Tf -(BZ_MEM_ERROR) 71.7307 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -279.894 650.261 Td -/F122_0 9.9626 Tf -(cannot) 26.5603 Tj --250 TJm -(occur) 22.1269 Tj -55 TJm -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 624.359 Td -/F124_0 9.9626 Tf -(BZ_DATA_ERROR) 77.7083 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 612.404 Td -/F122_0 9.9626 Tf -(Returned) 36.5229 Tj --266 TJm -(when) 21.579 Tj --265 TJm -(a) 4.4234 Tj --266 TJm -(data) 16.5977 Tj --265 TJm -(inte) 14.9439 Tj -15 TJm -(grity) 18.8194 Tj --266 TJm -(error) 19.3573 Tj --266 TJm -(is) 6.6451 Tj --265 TJm -(detected) 33.1954 Tj --266 TJm -(during) 26.0123 Tj --265 TJm -(decompression.) 62.2563 Tj --714 TJm -(Most) 20.4831 Tj --266 TJm -(importantl) 41.5142 Tj -1 TJm -(y) 4.9813 Tj -64 TJm -(,) 2.4907 Tj --269 TJm -(this) 14.396 Tj --266 TJm -(means) 25.4544 Tj --265 TJm -(when) 21.579 Tj -108 600.448 Td -(stored) 24.3486 Tj --222 TJm -(and) 14.386 Tj --223 TJm -(computed) 39.2925 Tj --222 TJm -(CRCs) 23.8106 Tj --222 TJm -(for) 11.6164 Tj --222 TJm -(the) 12.1743 Tj --223 TJm -(data) 16.5977 Tj --222 TJm -(do) 9.9626 Tj --222 TJm -(not) 12.7322 Tj --222 TJm -(match.) 26.8392 Tj --602 TJm -(This) 17.7135 Tj --222 TJm -(v) 4.9813 Tj -25 TJm -(alue) 16.5977 Tj --222 TJm -(is) 6.6451 Tj --223 TJm -(also) 16.0497 Tj --222 TJm -(returned) 33.1954 Tj --222 TJm -(upon) 19.9252 Tj --222 TJm -(detection) 36.5229 Tj --223 TJm -(of) 8.2988 Tj --222 TJm -(an) 9.4047 Tj -15 TJm -(y) 4.9813 Tj --222 TJm -(other) 20.4731 Tj -108 588.493 Td -(anomaly) 34.3112 Tj --250 TJm -(in) 7.7509 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(compressed) 47.0334 Tj --250 TJm -(data.) 19.0883 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 562.59 Td -/F124_0 9.9626 Tf -(BZ_DATA_ERROR_MAGIC) 113.5736 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 550.635 Td -/F122_0 9.9626 Tf -(As) 11.0684 Tj --306 TJm -(a) 4.4234 Tj --306 TJm -(special) 27.6661 Tj --306 TJm -(case) 17.1456 Tj --307 TJm -(of) 8.2988 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -191.852 550.635 Td -/F124_0 9.9626 Tf -(BZ_DATA_ERROR) 77.7083 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -269.561 550.635 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --306 TJm -(it) 5.5392 Tj --306 TJm -(is) 6.6451 Tj --306 TJm -(sometimes) 42.62 Tj --306 TJm -(useful) 24.3486 Tj --307 TJm -(to) 7.7509 Tj --306 TJm -(kno) 14.9439 Tj -25 TJm -(w) 7.193 Tj --306 TJm -(when) 21.579 Tj --306 TJm -(the) 12.1743 Tj --306 TJm -(compressed) 47.0334 Tj --306 TJm -(stream) 26.5603 Tj --306 TJm -(does) 18.2614 Tj -108 538.68 Td -(not) 12.7322 Tj --250 TJm -(start) 17.1556 Tj --250 TJm -(with) 17.7135 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(correct) 27.6562 Tj --250 TJm -(magic) 24.3486 Tj --250 TJm -(bytes) 21.031 Tj --250 TJm -(\() 3.3175 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -261.562 538.68 Td -/F124_0 9.9626 Tf -('B') 17.9327 Tj --600 TJm -('Z') 17.9327 Tj --600 TJm -('h') 17.9327 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -327.316 538.68 Td -/F122_0 9.9626 Tf -(\).) 5.8082 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 512.777 Td -/F124_0 9.9626 Tf -(BZ_IO_ERROR) 65.7532 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 500.822 Td -/F122_0 9.9626 Tf -(Returned) 36.5229 Tj --233 TJm -(by) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -159.123 500.822 Td -/F124_0 9.9626 Tf -(BZ2_bzRead) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -221.218 500.822 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -237.922 500.822 Td -/F124_0 9.9626 Tf -(BZ2_bzWrite) 65.7532 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -305.995 500.822 Td -/F122_0 9.9626 Tf -(when) 21.579 Tj --233 TJm -(there) 19.9152 Tj --232 TJm -(is) 6.6451 Tj --233 TJm -(an) 9.4047 Tj --233 TJm -(error) 19.3573 Tj --233 TJm -(reading) 29.8778 Tj --232 TJm -(or) 8.2988 Tj --233 TJm -(writing) 28.782 Tj --233 TJm -(in) 7.7509 Tj --233 TJm -(the) 12.1743 Tj --232 TJm -(compressed) 47.0334 Tj -108 488.867 Td -(\002le,) 15.2229 Tj --384 TJm -(and) 14.386 Tj --357 TJm -(by) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -158.511 488.867 Td -/F124_0 9.9626 Tf -(BZ2_bzReadOpen) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -245.755 488.867 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -263.698 488.867 Td -/F124_0 9.9626 Tf -(BZ2_bzWriteOpen) 89.6634 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -356.92 488.867 Td -/F122_0 9.9626 Tf -(for) 11.6164 Tj --357 TJm -(attempts) 33.7633 Tj --357 TJm -(to) 7.7509 Tj --357 TJm -(use) 13.2801 Tj --357 TJm -(a) 4.4234 Tj --357 TJm -(\002le) 12.7322 Tj --357 TJm -(for) 11.6164 Tj --358 TJm -(which) 24.3486 Tj --357 TJm -(the) 12.1743 Tj --357 TJm -(error) 19.3573 Tj -108 476.912 Td -(indicator) 35.417 Tj --260 TJm -(\(viz,) 17.9825 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -166.603 476.912 Td -/F124_0 9.9626 Tf -(ferror\(f\)) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -220.401 476.912 Td -/F122_0 9.9626 Tf -(\)) 3.3175 Tj --260 TJm -(is) 6.6451 Tj --260 TJm -(set.) 13.5591 Tj --680 TJm -(On) 12.1743 Tj --259 TJm -(receipt) 27.1082 Tj --260 TJm -(of) 8.2988 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -311.223 476.912 Td -/F124_0 9.9626 Tf -(BZ_IO_ERROR) 65.7532 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -376.976 476.912 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --260 TJm -(the) 12.1743 Tj --260 TJm -(caller) 22.1269 Tj --260 TJm -(should) 26.5703 Tj --260 TJm -(consult) 28.782 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -482.068 476.912 Td -/F124_0 9.9626 Tf -(errno) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -514.546 476.912 Td -/F122_0 9.9626 Tf -(and/or) 25.4544 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 464.956 Td -/F124_0 9.9626 Tf -(perror) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -146.356 464.956 Td -/F122_0 9.9626 Tf -(to) 7.7509 Tj --250 TJm -(acquire) 29.3199 Tj --250 TJm -(operating-system) 68.6224 Tj --250 TJm -(speci\002c) 30.4357 Tj --250 TJm -(information) 47.0434 Tj --250 TJm -(about) 22.1369 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(problem.) 35.696 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 439.054 Td -/F124_0 9.9626 Tf -(BZ_UNEXPECTED_EOF) 101.6185 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 427.099 Td -/F122_0 9.9626 Tf -(Returned) 36.5229 Tj --250 TJm -(by) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -159.467 427.099 Td -/F124_0 9.9626 Tf -(BZ2_bzRead) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -221.733 427.099 Td -/F122_0 9.9626 Tf -(when) 21.579 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(compressed) 47.0334 Tj --250 TJm -(\002le) 12.7322 Tj --250 TJm -(\002nishes) 30.4457 Tj --250 TJm -(before) 25.4445 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(logical) 27.1182 Tj --250 TJm -(end) 14.386 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(stream) 26.5603 Tj --250 TJm -(is) 6.6451 Tj --250 TJm -(detected.) 35.686 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 401.196 Td -/F124_0 9.9626 Tf -(BZ_OUTBUFF_FULL) 89.6634 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -108 389.241 Td -/F122_0 9.9626 Tf -(Returned) 36.5229 Tj --258 TJm -(by) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -159.632 389.241 Td -/F124_0 9.9626 Tf -(BZ2_bzBuffToBuffCompress) 143.4614 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -305.668 389.241 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -322.627 389.241 Td -/F124_0 9.9626 Tf -(BZ2_bzBuffToBuffDecompress) 155.4166 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -480.617 389.241 Td -/F122_0 9.9626 Tf -(to) 7.7509 Tj --258 TJm -(indicate) 31.5416 Tj --259 TJm -(that) 14.9439 Tj -108 377.285 Td -(the) 12.1743 Tj --250 TJm -(output) 25.4644 Tj --250 TJm -(data) 16.5977 Tj --250 TJm -(will) 15.5018 Tj --250 TJm -(not) 12.7322 Tj --250 TJm -(\002t) 8.3088 Tj --250 TJm -(into) 15.5018 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(output) 25.4644 Tj --250 TJm -(b) 4.9813 Tj -20 TJm -(uf) 8.2988 Tj -25 TJm -(fer) 11.0585 Tj --250 TJm -(pro) 13.2801 Tj -15 TJm -(vided.) 24.6275 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 328.585 Td -/F116_0 20.6585 Tf -(3.3.) 34.4584 Tj --278 TJm -(Lo) 25.2447 Tj -15 TJm -(w-le) 40.1808 Tj -15 TJm -(vel) 28.7153 Tj --278 TJm -(interface) 86.1046 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 297.964 Td -/F116_0 17.2154 Tf -(3.3.1.) 43.0729 Tj --278 TJm -(BZ2_bzCompressInit) 171.2244 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -534.414 50.852 Td -/F122_0 9.9626 Tf -(11) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 12 15 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -419.067 749.245 Td -/F122_0 9.9626 Tf -(Programming) 54.7943 Tj --250 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -496.556 749.245 Td -/F124_0 9.9626 Tf -(libbzip2) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 445.031] cm -0 0 468 274.969 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 711.631 Td -/F124_0 9.9626 Tf -(typedef) 41.8429 Tj --426 TJm -(struct) 35.8654 Tj --426 TJm -({) 5.9776 Tj -98.488 699.676 Td -(char) 23.9102 Tj -126.642 697.933 Td -(*) 5.9776 Tj -132.62 699.676 Td -(next_in;) 47.8205 Tj -98.488 687.721 Td -(unsigned) 47.8205 Tj --426 TJm -(int) 17.9327 Tj --426 TJm -(avail_in;) 53.798 Tj -98.488 675.766 Td -(unsigned) 47.8205 Tj --426 TJm -(int) 17.9327 Tj --426 TJm -(total_in_lo32;) 83.6858 Tj -98.488 663.811 Td -(unsigned) 47.8205 Tj --426 TJm -(int) 17.9327 Tj --426 TJm -(total_in_hi32;) 83.6858 Tj -98.488 639.9 Td -(char) 23.9102 Tj -126.642 638.157 Td -(*) 5.9776 Tj -132.62 639.9 Td -(next_out;) 53.798 Tj -98.488 627.945 Td -(unsigned) 47.8205 Tj --426 TJm -(int) 17.9327 Tj --426 TJm -(avail_out;) 59.7756 Tj -98.488 615.99 Td -(unsigned) 47.8205 Tj --426 TJm -(int) 17.9327 Tj --426 TJm -(total_out_lo32;) 89.6634 Tj -98.488 604.035 Td -(unsigned) 47.8205 Tj --426 TJm -(int) 17.9327 Tj --426 TJm -(total_out_hi32;) 89.6634 Tj -98.488 580.124 Td -(void) 23.9102 Tj -126.642 578.381 Td -(*) 5.9776 Tj -132.62 580.124 Td -(state;) 35.8654 Tj -98.488 556.214 Td -(void) 23.9102 Tj -126.642 554.471 Td -(*) 5.9776 Tj -132.62 556.214 Td -(\() 5.9776 Tj -138.597 554.471 Td -(*) 5.9776 Tj -144.575 556.214 Td -(bzalloc\)\(void) 77.7083 Tj -226.528 554.471 Td -(*) 5.9776 Tj -232.505 556.214 Td -(,int,int\);) 59.7756 Tj -98.488 544.259 Td -(void) 23.9102 Tj --426 TJm -(\() 5.9776 Tj -132.62 542.515 Td -(*) 5.9776 Tj -138.597 544.259 Td -(bzfree\)\(void) 71.7307 Tj -214.572 542.515 Td -(*) 5.9776 Tj -220.55 544.259 Td -(,void) 29.8878 Tj -254.682 542.515 Td -(*) 5.9776 Tj -260.659 544.259 Td -(\);) 11.9551 Tj -98.488 532.304 Td -(void) 23.9102 Tj -126.642 530.56 Td -(*) 5.9776 Tj -132.62 532.304 Td -(opaque;) 41.8429 Tj -90 520.349 Td -(}) 5.9776 Tj --426 TJm -(bz_stream;) 59.7756 Tj -90 496.438 Td -(int) 17.9327 Tj --426 TJm -(BZ2_bzCompressInit) 107.5961 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(bz_stream) 53.798 Tj -292.281 494.695 Td -(*) 5.9776 Tj -298.259 496.438 Td -(strm,) 29.8878 Tj -196.099 484.483 Td -(int) 17.9327 Tj --426 TJm -(blockSize100k,) 83.6858 Tj -196.099 472.528 Td -(int) 17.9327 Tj --426 TJm -(verbosity,) 59.7756 Tj -196.099 460.573 Td -(int) 17.9327 Tj --426 TJm -(workFactor) 59.7756 Tj --426 TJm -(\);) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 423.113 Td -/F122_0 9.9626 Tf -(Prepares) 34.3012 Tj --356 TJm -(for) 11.6164 Tj --356 TJm -(compression.) 52.8516 Tj --1256 TJm -(The) 15.4918 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -209.41 423.113 Td -/F124_0 9.9626 Tf -(bz_stream) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -266.754 423.113 Td -/F122_0 9.9626 Tf -(structure) 34.8591 Tj --356 TJm -(holds) 21.589 Tj --356 TJm -(all) 9.9626 Tj --356 TJm -(data) 16.5977 Tj --356 TJm -(pertaining) 40.3983 Tj --356 TJm -(to) 7.7509 Tj --356 TJm -(the) 12.1743 Tj --356 TJm -(compression) 50.3609 Tj --355 TJm -(acti) 14.386 Tj -25 TJm -(vity) 15.5018 Tj -65 TJm -(.) 2.4907 Tj --1256 TJm -(A) 7.193 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 411.158 Td -/F124_0 9.9626 Tf -(bz_stream) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -128.581 411.158 Td -/F122_0 9.9626 Tf -(structure) 34.8591 Tj --279 TJm -(should) 26.5703 Tj --280 TJm -(be) 9.4047 Tj --279 TJm -(allocated) 35.965 Tj --279 TJm -(and) 14.386 Tj --280 TJm -(initialised) 39.3025 Tj --279 TJm -(prior) 19.3673 Tj --279 TJm -(to) 7.7509 Tj --279 TJm -(the) 12.1743 Tj --280 TJm -(call.) 16.8766 Tj --796 TJm -(The) 15.4918 Tj --279 TJm -(\002elds) 21.589 Tj --279 TJm -(of) 8.2988 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -431.939 411.158 Td -/F124_0 9.9626 Tf -(bz_stream) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -488.52 411.158 Td -/F122_0 9.9626 Tf -(comprise) 36.5229 Tj --279 TJm -(the) 12.1743 Tj -72 399.203 Td -(entirety) 30.4357 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(user) 16.5977 Tj -20 TJm -(-visible) 29.8878 Tj --250 TJm -(data.) 19.0883 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -204.422 399.203 Td -/F124_0 9.9626 Tf -(state) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -236.8 399.203 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(pointer) 28.224 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(pri) 11.0684 Tj -25 TJm -(v) 4.9813 Tj -25 TJm -(ate) 11.6164 Tj --250 TJm -(data) 16.5977 Tj --250 TJm -(structures) 38.7346 Tj --250 TJm -(required) 33.1954 Tj --250 TJm -(for) 11.6164 Tj --250 TJm -(compression.) 52.8516 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 377.285 Td -(Custom) 31.0036 Tj --372 TJm -(memory) 33.2053 Tj --372 TJm -(allocators) 38.7346 Tj --372 TJm -(are) 12.1643 Tj --372 TJm -(supported,) 41.7831 Tj --403 TJm -(via) 12.1743 Tj --372 TJm -(\002elds) 21.589 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -288.908 377.285 Td -/F124_0 9.9626 Tf -(bzalloc) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -330.751 377.285 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -337.253 377.285 Td -/F124_0 9.9626 Tf -(bzfree) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -373.118 377.285 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --403 TJm -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -397.714 377.285 Td -/F124_0 9.9626 Tf -(opaque) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -433.579 377.285 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj --1353 TJm -(The) 15.4918 Tj --372 TJm -(v) 4.9813 Tj -25 TJm -(alue) 16.5977 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -493.782 377.285 Td -/F124_0 9.9626 Tf -(opaque) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -533.355 377.285 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj -72 365.33 Td -(passed) 26.5603 Tj --306 TJm -(to) 7.7509 Tj --306 TJm -(as) 8.2988 Tj --306 TJm -(the) 12.1743 Tj --306 TJm -(\002rst) 15.5018 Tj --306 TJm -(ar) 7.7409 Tj -18 TJm -(gument) 29.8878 Tj --306 TJm -(to) 7.7509 Tj --306 TJm -(all) 9.9626 Tj --306 TJm -(calls) 18.2614 Tj --305 TJm -(to) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -253.941 365.33 Td -/F124_0 9.9626 Tf -(bzalloc) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -298.832 365.33 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -316.266 365.33 Td -/F124_0 9.9626 Tf -(bzfree) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -352.132 365.33 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --320 TJm -(b) 4.9813 Tj -20 TJm -(ut) 7.7509 Tj --306 TJm -(is) 6.6451 Tj --306 TJm -(otherwise) 38.7346 Tj --306 TJm -(ignored) 30.4357 Tj --306 TJm -(by) 9.9626 Tj --306 TJm -(the) 12.1743 Tj --306 TJm -(library) 26.5603 Tj -65 TJm -(.) 2.4907 Tj --955 TJm -(The) 15.4918 Tj -72 353.375 Td -(call) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -89.431 353.375 Td -/F124_0 9.9626 Tf -(bzalloc) 41.8429 Tj --600 TJm -(\() 5.9776 Tj --600 TJm -(opaque,) 41.8429 Tj --600 TJm -(n,) 11.9551 Tj --600 TJm -(m) 5.9776 Tj --600 TJm -(\)) 5.9776 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -235.938 353.375 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --306 TJm -(e) 4.4234 Tj -15 TJm -(xpected) 30.9837 Tj --305 TJm -(to) 7.7509 Tj --306 TJm -(return) 23.7907 Tj --306 TJm -(a) 4.4234 Tj --305 TJm -(pointer) 28.224 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -360.3 353.375 Td -/F124_0 9.9626 Tf -(p) 5.9776 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -369.322 353.375 Td -/F122_0 9.9626 Tf -(to) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -380.118 353.375 Td -/F124_0 9.9626 Tf -(n) 5.9776 Tj -392.073 351.631 Td -(*) 5.9776 Tj -404.029 353.375 Td -(m) 5.9776 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -413.051 353.375 Td -/F122_0 9.9626 Tf -(bytes) 21.031 Tj --306 TJm -(of) 8.2988 Tj --305 TJm -(memory) 33.2053 Tj -65 TJm -(,) 2.4907 Tj --320 TJm -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -504.135 353.375 Td -/F124_0 9.9626 Tf -(bzfree) 35.8654 Tj -72 341.42 Td -(\() 5.9776 Tj --600 TJm -(opaque,) 41.8429 Tj --600 TJm -(p) 5.9776 Tj --600 TJm -(\)) 5.9776 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -152.199 341.42 Td -/F122_0 9.9626 Tf -(should) 26.5703 Tj --250 TJm -(free) 15.4819 Tj --250 TJm -(that) 14.9439 Tj --250 TJm -(memory) 33.2053 Tj -65 TJm -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 319.502 Td -(If) 6.6351 Tj --280 TJm -(you) 14.9439 Tj --280 TJm -(don') 18.2614 Tj -18 TJm -(t) 2.7696 Tj --280 TJm -(w) 7.193 Tj -10 TJm -(ant) 12.1743 Tj --279 TJm -(to) 7.7509 Tj --280 TJm -(use) 13.2801 Tj --280 TJm -(a) 4.4234 Tj --280 TJm -(custom) 28.782 Tj --280 TJm -(memory) 33.2053 Tj --279 TJm -(allocator) 34.8591 Tj -40 TJm -(,) 2.4907 Tj --288 TJm -(set) 11.0684 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -299.9 319.502 Td -/F124_0 9.9626 Tf -(bzalloc) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -341.743 319.502 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -347.096 319.502 Td -/F124_0 9.9626 Tf -(bzfree) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -385.749 319.502 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -402.923 319.502 Td -/F124_0 9.9626 Tf -(opaque) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -441.576 319.502 Td -/F122_0 9.9626 Tf -(to) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -452.115 319.502 Td -/F124_0 9.9626 Tf -(NULL) 23.9102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -476.025 319.502 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --280 TJm -(and) 14.386 Tj --280 TJm -(the) 12.1743 Tj --280 TJm -(library) 26.5603 Tj -72 307.547 Td -(will) 15.5018 Tj --250 TJm -(then) 17.1556 Tj --250 TJm -(use) 13.2801 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(standard) 33.7533 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -176.318 307.547 Td -/F124_0 9.9626 Tf -(malloc) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -214.674 307.547 Td -/F122_0 9.9626 Tf -(/) 2.7696 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -219.934 307.547 Td -/F124_0 9.9626 Tf -(free) 23.9102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -246.335 307.547 Td -/F122_0 9.9626 Tf -(routines.) 34.5901 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 285.629 Td -(Before) 27.1082 Tj --362 TJm -(calling) 27.1182 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -133.438 285.629 Td -/F124_0 9.9626 Tf -(BZ2_bzCompressInit) 107.5961 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -241.035 285.629 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --390 TJm -(\002elds) 21.589 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -272.606 285.629 Td -/F124_0 9.9626 Tf -(bzalloc) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -314.449 285.629 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -320.825 285.629 Td -/F124_0 9.9626 Tf -(bzfree) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -360.296 285.629 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -378.289 285.629 Td -/F124_0 9.9626 Tf -(opaque) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -417.76 285.629 Td -/F122_0 9.9626 Tf -(should) 26.5703 Tj --362 TJm -(be) 9.4047 Tj --362 TJm -(\002lled) 20.4831 Tj --362 TJm -(appropriately) 53.1206 Tj -65 TJm -(,) 2.4907 Tj -72 273.674 Td -(as) 8.2988 Tj --322 TJm -(just) 14.396 Tj --323 TJm -(described.) 40.6673 Tj --1055 TJm -(Upon) 22.1369 Tj --322 TJm -(return,) 26.2813 Tj --341 TJm -(the) 12.1743 Tj --322 TJm -(internal) 30.4357 Tj --323 TJm -(state) 18.2614 Tj --322 TJm -(will) 15.5018 Tj --323 TJm -(ha) 9.4047 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --322 TJm -(been) 18.8094 Tj --323 TJm -(allocated) 35.965 Tj --322 TJm -(and) 14.386 Tj --323 TJm -(initialised,) 41.7931 Tj --340 TJm -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -459.801 273.674 Td -/F124_0 9.9626 Tf -(total_in_lo32) 77.7083 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -537.509 273.674 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 261.718 Td -/F124_0 9.9626 Tf -(total_in_hi32) 77.7083 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -149.709 261.718 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -155.006 261.718 Td -/F124_0 9.9626 Tf -(total_out_lo32) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -241.435 261.718 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -258.564 261.718 Td -/F124_0 9.9626 Tf -(total_out_hi32) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -344.994 261.718 Td -/F122_0 9.9626 Tf -(will) 15.5018 Tj --275 TJm -(ha) 9.4047 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --276 TJm -(been) 18.8094 Tj --275 TJm -(set) 11.0684 Tj --275 TJm -(to) 7.7509 Tj --276 TJm -(zero.) 19.6363 Tj --772 TJm -(These) 23.7907 Tj --275 TJm -(four) 16.5977 Tj --275 TJm -(\002elds) 21.589 Tj --276 TJm -(are) 12.1643 Tj -72 249.763 Td -(used) 18.2614 Tj --340 TJm -(by) 9.9626 Tj --339 TJm -(the) 12.1743 Tj --340 TJm -(library) 26.5603 Tj --339 TJm -(to) 7.7509 Tj --340 TJm -(inform) 27.1182 Tj --339 TJm -(the) 12.1743 Tj --340 TJm -(caller) 22.1269 Tj --339 TJm -(of) 8.2988 Tj --340 TJm -(the) 12.1743 Tj --339 TJm -(total) 17.7135 Tj --340 TJm -(amount) 29.8878 Tj --339 TJm -(of) 8.2988 Tj --340 TJm -(data) 16.5977 Tj --340 TJm -(passed) 26.5603 Tj --339 TJm -(into) 15.5018 Tj --340 TJm -(and) 14.386 Tj --339 TJm -(out) 12.7322 Tj --340 TJm -(of) 8.2988 Tj --339 TJm -(the) 12.1743 Tj --340 TJm -(library) 26.5603 Tj -65 TJm -(,) 2.4907 Tj --362 TJm -(respecti) 30.9837 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(ely) 12.1743 Tj -65 TJm -(.) 2.4907 Tj -72 237.808 Td -(Y) 7.193 Tj -110 TJm -(ou) 9.9626 Tj --376 TJm -(should) 26.5703 Tj --377 TJm -(not) 12.7322 Tj --376 TJm -(try) 11.0684 Tj --376 TJm -(to) 7.7509 Tj --377 TJm -(change) 28.2141 Tj --376 TJm -(them.) 22.4159 Tj --1378 TJm -(As) 11.0684 Tj --377 TJm -(of) 8.2988 Tj --376 TJm -(v) 4.9813 Tj -15 TJm -(ersion) 24.3486 Tj --377 TJm -(1.0,) 14.9439 Tj --408 TJm -(64-bit) 23.8007 Tj --376 TJm -(counts) 26.0123 Tj --376 TJm -(are) 12.1643 Tj --377 TJm -(maintained,) 46.7644 Tj --408 TJm -(e) 4.4234 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(en) 9.4047 Tj --376 TJm -(on) 9.9626 Tj --376 TJm -(32-bit) 23.8007 Tj --377 TJm -(platforms,) 40.6773 Tj -72 225.853 Td -(using) 21.589 Tj --371 TJm -(the) 12.1743 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -113.148 225.853 Td -/F124_0 9.9626 Tf -(_hi32) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -146.729 225.853 Td -/F122_0 9.9626 Tf -(\002elds) 21.589 Tj --371 TJm -(to) 7.7509 Tj --370 TJm -(store) 19.3673 Tj --371 TJm -(the) 12.1743 Tj --371 TJm -(upper) 22.6848 Tj --370 TJm -(32) 9.9626 Tj --371 TJm -(bits) 14.396 Tj --370 TJm -(of) 8.2988 Tj --371 TJm -(the) 12.1743 Tj --371 TJm -(count.) 24.6275 Tj --1344 TJm -(So,) 13.0112 Tj --400 TJm -(for) 11.6164 Tj --371 TJm -(e) 4.4234 Tj -15 TJm -(xample,) 31.8205 Tj --401 TJm -(the) 12.1743 Tj --371 TJm -(total) 17.7135 Tj --370 TJm -(amount) 29.8878 Tj --371 TJm -(of) 8.2988 Tj --370 TJm -(data) 16.5977 Tj --371 TJm -(in) 7.7509 Tj --371 TJm -(is) 6.6451 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 213.898 Td -/F124_0 9.9626 Tf -(\(total_in_hi32) 83.6858 Tj --600 TJm -(<<) 11.9551 Tj --600 TJm -(32\)) 17.9327 Tj --600 TJm -(+) 5.9776 Tj --600 TJm -(total_in_lo32) 77.7083 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -293.171 213.898 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 191.98 Td -(P) 5.5392 Tj -15 TJm -(arameter) 34.8492 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -115.367 191.98 Td -/F124_0 9.9626 Tf -(blockSize100k) 77.7083 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -196.205 191.98 Td -/F122_0 9.9626 Tf -(speci\002es) 34.3112 Tj --314 TJm -(the) 12.1743 Tj --314 TJm -(block) 22.1369 Tj --314 TJm -(size) 15.4918 Tj --314 TJm -(to) 7.7509 Tj --314 TJm -(be) 9.4047 Tj --314 TJm -(used) 18.2614 Tj --314 TJm -(for) 11.6164 Tj --314 TJm -(compression.) 52.8516 Tj --1004 TJm -(It) 6.0871 Tj --314 TJm -(should) 26.5703 Tj --314 TJm -(be) 9.4047 Tj --314 TJm -(a) 4.4234 Tj --315 TJm -(v) 4.9813 Tj -25 TJm -(al) 7.193 Tj -1 TJm -(u) 4.9813 Tj --1 TJm -(e) 4.4234 Tj --314 TJm -(between) 33.1954 Tj --314 TJm -(1) 4.9813 Tj -72 180.025 Td -(and) 14.386 Tj --289 TJm -(9) 4.9813 Tj --289 TJm -(inclusi) 26.5703 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(e,) 6.914 Tj --299 TJm -(and) 14.386 Tj --289 TJm -(the) 12.1743 Tj --289 TJm -(actual) 23.7907 Tj --289 TJm -(block) 22.1369 Tj --289 TJm -(size) 15.4918 Tj --289 TJm -(used) 18.2614 Tj --289 TJm -(is) 6.6451 Tj --289 TJm -(100000) 29.8878 Tj --289 TJm -(x) 4.9813 Tj --289 TJm -(this) 14.396 Tj --289 TJm -(\002gure.) 25.7334 Tj --854 TJm -(9) 4.9813 Tj --290 TJm -(gi) 7.7509 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(es) 8.2988 Tj --289 TJm -(the) 12.1743 Tj --289 TJm -(best) 16.0497 Tj --289 TJm -(compression) 50.3609 Tj --289 TJm -(b) 4.9813 Tj -20 TJm -(ut) 7.7509 Tj --289 TJm -(tak) 12.1743 Tj -10 TJm -(es) 8.2988 Tj --289 TJm -(most) 19.3773 Tj -72 168.07 Td -(memory) 33.2053 Tj -65 TJm -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 146.152 Td -(P) 5.5392 Tj -15 TJm -(arameter) 34.8492 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -115.095 146.152 Td -/F124_0 9.9626 Tf -(verbosity) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -171.75 146.152 Td -/F122_0 9.9626 Tf -(should) 26.5703 Tj --287 TJm -(be) 9.4047 Tj --286 TJm -(set) 11.0684 Tj --287 TJm -(to) 7.7509 Tj --287 TJm -(a) 4.4234 Tj --287 TJm -(number) 30.4357 Tj --286 TJm -(between) 33.1954 Tj --287 TJm -(0) 4.9813 Tj --287 TJm -(and) 14.386 Tj --287 TJm -(4) 4.9813 Tj --286 TJm -(inclusi) 26.5703 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(e.) 6.914 Tj --841 TJm -(0) 4.9813 Tj --286 TJm -(is) 6.6451 Tj --287 TJm -(silent,) 24.0796 Tj --296 TJm -(and) 14.386 Tj --287 TJm -(greater) 27.6562 Tj --287 TJm -(numbers) 34.3112 Tj --286 TJm -(gi) 7.7509 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj -72 134.197 Td -(increasingly) 48.6972 Tj --342 TJm -(v) 4.9813 Tj -15 TJm -(erbose) 26.0024 Tj --342 TJm -(monitoring/deb) 61.4394 Tj -20 TJm -(ugging) 27.6761 Tj --342 TJm -(output.) 27.9551 Tj --1173 TJm -(If) 6.6351 Tj --343 TJm -(the) 12.1743 Tj --342 TJm -(library) 26.5603 Tj --342 TJm -(has) 13.2801 Tj --342 TJm -(been) 18.8094 Tj --342 TJm -(compiled) 37.0808 Tj --342 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -446.429 134.197 Td -/F124_0 9.9626 Tf -(-DBZ_NO_STDIO) 77.7083 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -524.138 134.197 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --342 TJm -(no) 9.9626 Tj -72 122.241 Td -(such) 18.2614 Tj --250 TJm -(output) 25.4644 Tj --250 TJm -(will) 15.5018 Tj --250 TJm -(appear) 26.5503 Tj --250 TJm -(for) 11.6164 Tj --250 TJm -(an) 9.4047 Tj -15 TJm -(y) 4.9813 Tj --250 TJm -(v) 4.9813 Tj -15 TJm -(erbosity) 32.0995 Tj --250 TJm -(setting.) 29.0609 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 100.324 Td -(P) 5.5392 Tj -15 TJm -(arameter) 34.8492 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -116.619 100.324 Td -/F124_0 9.9626 Tf -(workFactor) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -180.775 100.324 Td -/F122_0 9.9626 Tf -(controls) 32.0995 Tj --440 TJm -(ho) 9.9626 Tj -25 TJm -(w) 7.193 Tj --439 TJm -(the) 12.1743 Tj --440 TJm -(compression) 50.3609 Tj --439 TJm -(phase) 22.6848 Tj --440 TJm -(beha) 18.8094 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(es) 8.2988 Tj --440 TJm -(when) 21.579 Tj --439 TJm -(presented) 38.1767 Tj --440 TJm -(with) 17.7135 Tj --440 TJm -(w) 7.193 Tj -10 TJm -(orst) 14.9439 Tj --439 TJm -(case,) 19.6363 Tj --487 TJm -(highly) 25.4644 Tj -72 88.368 Td -(repetiti) 28.224 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(e,) 6.914 Tj --433 TJm -(input) 20.4831 Tj --396 TJm -(data.) 19.0883 Tj --1496 TJm -(If) 6.6351 Tj --396 TJm -(compression) 50.3609 Tj --396 TJm -(runs) 17.1556 Tj --397 TJm -(i) 2.7696 Tj -1 TJm -(nto) 12.7322 Tj --397 TJm -(dif) 11.0684 Tj -25 TJm -(\002culties) 31.5516 Tj --396 TJm -(caused) 27.1082 Tj --396 TJm -(by) 9.9626 Tj --396 TJm -(repetiti) 28.224 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --396 TJm -(data,) 19.0883 Tj --432 TJm -(the) 12.1743 Tj --397 TJm -(library) 26.5603 Tj --396 TJm -(switches) 34.3112 Tj --396 TJm -(from) 19.3673 Tj -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -534.414 50.852 Td -(12) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 13 16 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -419.067 749.245 Td -/F122_0 9.9626 Tf -(Programming) 54.7943 Tj --250 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -496.556 749.245 Td -/F124_0 9.9626 Tf -(libbzip2) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -72 710.037 Td -/F122_0 9.9626 Tf -(the) 12.1743 Tj --255 TJm -(standard) 33.7533 Tj --254 TJm -(sorting) 27.6761 Tj --255 TJm -(algorithm) 38.7446 Tj --254 TJm -(to) 7.7509 Tj --255 TJm -(a) 4.4234 Tj --255 TJm -(f) 3.3175 Tj -10 TJm -(allback) 28.772 Tj --254 TJm -(algorithm.) 41.2352 Tj --648 TJm -(The) 15.4918 Tj --255 TJm -(f) 3.3175 Tj -10 TJm -(allback) 28.772 Tj --254 TJm -(is) 6.6451 Tj --255 TJm -(slo) 11.6264 Tj -25 TJm -(wer) 14.9339 Tj --255 TJm -(than) 17.1556 Tj --254 TJm -(the) 12.1743 Tj --255 TJm -(standard) 33.7533 Tj --254 TJm -(algorithm) 38.7446 Tj --255 TJm -(by) 9.9626 Tj --255 TJm -(perhaps) 30.9837 Tj -72 698.082 Td -(a) 4.4234 Tj --250 TJm -(f) 3.3175 Tj -10 TJm -(actor) 19.9152 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(three,) 22.4059 Tj --250 TJm -(b) 4.9813 Tj -20 TJm -(ut) 7.7509 Tj --250 TJm -(al) 7.193 Tj -10 TJm -(w) 7.193 Tj -10 TJm -(ays) 13.2801 Tj --250 TJm -(beha) 18.8094 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(es) 8.2988 Tj --250 TJm -(reasonably) 43.158 Tj -65 TJm -(,) 2.4907 Tj --250 TJm -(no) 9.9626 Tj --250 TJm -(matter) 25.4544 Tj --250 TJm -(ho) 9.9626 Tj -25 TJm -(w) 7.193 Tj --250 TJm -(bad) 14.386 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(input.) 22.9738 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 676.268 Td -(Lo) 11.0684 Tj -25 TJm -(wer) 14.9339 Tj --240 TJm -(v) 4.9813 Tj -25 TJm -(alues) 20.4731 Tj --239 TJm -(of) 8.2988 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -138.421 676.268 Td -/F124_0 9.9626 Tf -(workFactor) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -200.585 676.268 Td -/F122_0 9.9626 Tf -(reduce) 26.5503 Tj --240 TJm -(the) 12.1743 Tj --239 TJm -(amount) 29.8878 Tj --240 TJm -(of) 8.2988 Tj --240 TJm -(ef) 7.7409 Tj -25 TJm -(fort) 14.386 Tj --239 TJm -(the) 12.1743 Tj --240 TJm -(standard) 33.7533 Tj --240 TJm -(algorithm) 38.7446 Tj --240 TJm -(wi) 9.9626 Tj -1 TJm -(ll) 5.5392 Tj --240 TJm -(e) 4.4234 Tj -15 TJm -(xpend) 24.3486 Tj --240 TJm -(before) 25.4445 Tj --240 TJm -(resorting) 35.417 Tj --239 TJm -(to) 7.7509 Tj --240 TJm -(the) 12.1743 Tj -72 664.313 Td -(f) 3.3175 Tj -10 TJm -(allback.) 31.2626 Tj --618 TJm -(Y) 7.193 Tj -110 TJm -(ou) 9.9626 Tj --248 TJm -(should) 26.5703 Tj --247 TJm -(set) 11.0684 Tj --248 TJm -(this) 14.396 Tj --247 TJm -(parameter) 39.8305 Tj --248 TJm -(carefully;) 38.1767 Tj --248 TJm -(too) 12.7322 Tj --248 TJm -(lo) 7.7509 Tj -25 TJm -(w) 7.193 Tj -65 TJm -(,) 2.4907 Tj --248 TJm -(and) 14.386 Tj --247 TJm -(man) 17.1556 Tj -15 TJm -(y) 4.9813 Tj --248 TJm -(inputs) 24.3586 Tj --248 TJm -(will) 15.5018 Tj --247 TJm -(be) 9.4047 Tj --248 TJm -(handled) 31.5416 Tj --247 TJm -(by) 9.9626 Tj --248 TJm -(the) 12.1743 Tj --247 TJm -(f) 3.3175 Tj -10 TJm -(allback) 28.772 Tj --248 TJm -(algorithm) 38.7446 Tj -72 652.358 Td -(and) 14.386 Tj --308 TJm -(so) 8.8568 Tj --308 TJm -(compress) 37.6287 Tj --308 TJm -(rather) 23.2328 Tj --309 TJm -(slo) 11.6264 Tj -25 TJm -(wly) 14.9439 Tj -65 TJm -(,) 2.4907 Tj --322 TJm -(too) 12.7322 Tj --309 TJm -(high,) 20.2042 Tj --322 TJm -(and) 14.386 Tj --308 TJm -(your) 18.2614 Tj --309 TJm -(a) 4.4234 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(erage-to-w) 43.148 Tj -10 TJm -(orst) 14.9439 Tj --308 TJm -(case) 17.1456 Tj --308 TJm -(compression) 50.3609 Tj --308 TJm -(times) 21.589 Tj --308 TJm -(can) 13.8281 Tj --308 TJm -(become) 30.9837 Tj --309 TJm -(v) 4.9813 Tj -15 TJm -(ery) 12.7222 Tj --308 TJm -(lar) 10.5105 Tj -18 TJm -(ge.) 11.8953 Tj -72 640.402 Td -(The) 15.4918 Tj --250 TJm -(def) 12.7222 Tj -10 TJm -(ault) 14.9439 Tj --250 TJm -(v) 4.9813 Tj -25 TJm -(alue) 16.5977 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(30) 9.9626 Tj --250 TJm -(gi) 7.7509 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(es) 8.2988 Tj --250 TJm -(reasonable) 42.6001 Tj --250 TJm -(beha) 18.8094 Tj -20 TJm -(viour) 21.031 Tj --250 TJm -(o) 4.9813 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(er) 7.7409 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(wide) 19.3673 Tj --250 TJm -(range) 22.1269 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(circumstances.) 58.9288 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 618.588 Td -(Allo) 17.7135 Tj -25 TJm -(w) 7.193 Tj -10 TJm -(able) 16.5977 Tj --250 TJm -(v) 4.9813 Tj -25 TJm -(alues) 20.4731 Tj --250 TJm -(range) 22.1269 Tj --250 TJm -(from) 19.3673 Tj --250 TJm -(0) 4.9813 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(250) 14.9439 Tj --250 TJm -(inclusi) 26.5703 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(e.) 6.914 Tj --620 TJm -(0) 4.9813 Tj --250 TJm -(is) 6.6451 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(special) 27.6661 Tj --250 TJm -(case,) 19.6363 Tj --250 TJm -(equi) 17.1556 Tj -25 TJm -(v) 4.9813 Tj -25 TJm -(alent) 19.3673 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(using) 21.589 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(def) 12.7222 Tj -10 TJm -(ault) 14.9439 Tj --250 TJm -(v) 4.9813 Tj -25 TJm -(alue) 16.5977 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(30.) 12.4533 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 596.774 Td -(Note) 19.3673 Tj --250 TJm -(that) 14.9439 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(compressed) 47.0334 Tj --250 TJm -(output) 25.4644 Tj --250 TJm -(generated) 38.7246 Tj --250 TJm -(is) 6.6451 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(same) 20.4731 Tj --250 TJm -(re) 7.7409 Tj -15 TJm -(g) 4.9813 Tj -5 TJm -(ardless) 27.6661 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(whether) 32.0895 Tj --250 TJm -(or) 8.2988 Tj --250 TJm -(not) 12.7322 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(f) 3.3175 Tj -10 TJm -(allback) 28.772 Tj --250 TJm -(algorithm) 38.7446 Tj --250 TJm -(is) 6.6451 Tj --250 TJm -(used.) 20.7521 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 574.96 Td -(Be) 11.0684 Tj --303 TJm -(a) 4.4234 Tj -15 TJm -(w) 7.193 Tj -10 TJm -(are) 12.1643 Tj --303 TJm -(also) 16.0497 Tj --303 TJm -(that) 14.9439 Tj --303 TJm -(this) 14.396 Tj --304 TJm -(parameter) 39.8305 Tj --303 TJm -(may) 17.1556 Tj --303 TJm -(disappear) 38.1767 Tj --303 TJm -(entirely) 30.4357 Tj --303 TJm -(in) 7.7509 Tj --303 TJm -(future) 23.7907 Tj --303 TJm -(v) 4.9813 Tj -15 TJm -(ersions) 28.224 Tj --303 TJm -(of) 8.2988 Tj --303 TJm -(the) 12.1743 Tj --304 TJm -(library) 26.5603 Tj -65 TJm -(.) 2.4907 Tj --938 TJm -(In) 8.2988 Tj --303 TJm -(principle) 35.417 Tj --303 TJm -(it) 5.5392 Tj --304 TJm -(should) 26.5703 Tj --303 TJm -(be) 9.4047 Tj -72 563.005 Td -(possible) 32.6574 Tj --270 TJm -(to) 7.7509 Tj --270 TJm -(de) 9.4047 Tj -25 TJm -(vise) 16.0497 Tj --270 TJm -(a) 4.4234 Tj --270 TJm -(good) 19.9252 Tj --270 TJm -(w) 7.193 Tj -10 TJm -(ay) 9.4047 Tj --270 TJm -(to) 7.7509 Tj --271 TJm -(automat) 32.0995 Tj -1 TJm -(ically) 22.1369 Tj --271 TJm -(choose) 27.6661 Tj --270 TJm -(which) 24.3486 Tj --270 TJm -(algorithm) 38.7446 Tj --270 TJm -(to) 7.7509 Tj --270 TJm -(use.) 15.7708 Tj --740 TJm -(Such) 19.9252 Tj --270 TJm -(a) 4.4234 Tj --270 TJm -(mechanism) 45.3796 Tj --271 TJm -(w) 7.193 Tj -10 TJm -(ould) 17.7135 Tj --270 TJm -(render) 25.4445 Tj --270 TJm -(the) 12.1743 Tj -72 551.049 Td -(parameter) 39.8305 Tj --250 TJm -(obsolete.) 35.696 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 529.235 Td -(Possible) 33.2153 Tj --250 TJm -(return) 23.7907 Tj --250 TJm -(v) 4.9813 Tj -25 TJm -(alues:) 23.2427 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 384.677] cm -0 0 468 143.462 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 519.771 Td -/F124_0 9.9626 Tf -(BZ_CONFIG_ERROR) 89.6634 Tj -98.488 507.816 Td -(if) 11.9551 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(library) 41.8429 Tj --426 TJm -(has) 17.9327 Tj --426 TJm -(been) 23.9102 Tj --426 TJm -(mis-compiled) 71.7307 Tj -90 495.86 Td -(BZ_PARAM_ERROR) 83.6858 Tj -98.488 483.905 Td -(if) 11.9551 Tj --426 TJm -(strm) 23.9102 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(NULL) 23.9102 Tj -98.488 471.95 Td -(or) 11.9551 Tj --426 TJm -(blockSize) 53.798 Tj --426 TJm -(<) 5.9776 Tj --426 TJm -(1) 5.9776 Tj --426 TJm -(or) 11.9551 Tj --426 TJm -(blockSize) 53.798 Tj --426 TJm -(>) 5.9776 Tj --426 TJm -(9) 5.9776 Tj -98.488 459.995 Td -(or) 11.9551 Tj --426 TJm -(verbosity) 53.798 Tj --426 TJm -(<) 5.9776 Tj --426 TJm -(0) 5.9776 Tj --426 TJm -(or) 11.9551 Tj --426 TJm -(verbosity) 53.798 Tj --426 TJm -(>) 5.9776 Tj --426 TJm -(4) 5.9776 Tj -98.488 448.04 Td -(or) 11.9551 Tj --426 TJm -(workFactor) 59.7756 Tj --426 TJm -(<) 5.9776 Tj --426 TJm -(0) 5.9776 Tj --426 TJm -(or) 11.9551 Tj --426 TJm -(workFactor) 59.7756 Tj --426 TJm -(>) 5.9776 Tj --426 TJm -(250) 17.9327 Tj -90 436.085 Td -(BZ_MEM_ERROR) 71.7307 Tj -98.488 424.129 Td -(if) 11.9551 Tj --426 TJm -(not) 17.9327 Tj --426 TJm -(enough) 35.8654 Tj --426 TJm -(memory) 35.8654 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(available) 53.798 Tj -90 412.174 Td -(BZ_OK) 29.8878 Tj -98.488 400.219 Td -(otherwise) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 362.863 Td -/F122_0 9.9626 Tf -(Allo) 17.7135 Tj -25 TJm -(w) 7.193 Tj -10 TJm -(able) 16.5977 Tj --250 TJm -(ne) 9.4047 Tj -15 TJm -(xt) 7.7509 Tj --250 TJm -(actions:) 30.9936 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 313.947] cm -0 0 468 47.821 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 353.399 Td -/F124_0 9.9626 Tf -(BZ2_bzCompress) 83.6858 Tj -98.488 341.444 Td -(if) 11.9551 Tj --426 TJm -(BZ_OK) 29.8878 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(returned) 47.8205 Tj -98.488 329.488 Td -(no) 11.9551 Tj --426 TJm -(specific) 47.8205 Tj --426 TJm -(action) 35.8654 Tj --426 TJm -(needed) 35.8654 Tj --426 TJm -(in) 11.9551 Tj --426 TJm -(case) 23.9102 Tj --426 TJm -(of) 11.9551 Tj --426 TJm -(error) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 283.429 Td -/F116_0 17.2154 Tf -(3.3.2.) 43.0729 Tj --278 TJm -(BZ2_bzCompress) 145.4013 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 254.959] cm -0 0 468 23.91 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 270.501 Td -/F124_0 9.9626 Tf -(int) 17.9327 Tj --426 TJm -(BZ2_bzCompress) 83.6858 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(bz_stream) 53.798 Tj -268.371 268.757 Td -(*) 5.9776 Tj -274.348 270.501 Td -(strm,) 29.8878 Tj --426 TJm -(int) 17.9327 Tj --426 TJm -(action) 35.8654 Tj --426 TJm -(\);) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 233.145 Td -/F122_0 9.9626 Tf -(Pro) 13.8381 Tj -15 TJm -(vides) 21.031 Tj --222 TJm -(more) 20.4731 Tj --221 TJm -(input) 20.4831 Tj --222 TJm -(and/or) 25.4544 Tj --222 TJm -(output) 25.4644 Tj --222 TJm -(b) 4.9813 Tj -20 TJm -(uf) 8.2988 Tj -25 TJm -(fer) 11.0585 Tj --221 TJm -(space) 22.1269 Tj --222 TJm -(for) 11.6164 Tj --222 TJm -(the) 12.1743 Tj --221 TJm -(library) 26.5603 Tj -65 TJm -(.) 2.4907 Tj --601 TJm -(The) 15.4918 Tj --222 TJm -(caller) 22.1269 Tj --222 TJm -(maintains) 38.7446 Tj --222 TJm -(input) 20.4831 Tj --221 TJm -(and) 14.386 Tj --222 TJm -(output) 25.4644 Tj --222 TJm -(b) 4.9813 Tj -20 TJm -(uf) 8.2988 Tj -25 TJm -(fers,) 17.4246 Tj --227 TJm -(and) 14.386 Tj --222 TJm -(calls) 18.2614 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 221.19 Td -/F124_0 9.9626 Tf -(BZ2_bzCompress) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -158.177 221.19 Td -/F122_0 9.9626 Tf -(to) 7.7509 Tj --250 TJm -(transfer) 30.4258 Tj --250 TJm -(data) 16.5977 Tj --250 TJm -(between) 33.1954 Tj --250 TJm -(them.) 22.4159 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 199.375 Td -(Before) 27.1082 Tj --212 TJm -(each) 18.2515 Tj --213 TJm -(call) 14.386 Tj --212 TJm -(to) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -147.961 199.375 Td -/F124_0 9.9626 Tf -(BZ2_bzCompress) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -231.647 199.375 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -236.329 199.375 Td -/F124_0 9.9626 Tf -(next_in) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -280.288 199.375 Td -/F122_0 9.9626 Tf -(should) 26.5703 Tj --212 TJm -(point) 20.4831 Tj --213 TJm -(at) 7.193 Tj --212 TJm -(the) 12.1743 Tj --213 TJm -(data) 16.5977 Tj --212 TJm -(to) 7.7509 Tj --213 TJm -(be) 9.4047 Tj --212 TJm -(compressed,) 49.5241 Tj --220 TJm -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -463.493 199.375 Td -/F124_0 9.9626 Tf -(avail_in) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -513.43 199.375 Td -/F122_0 9.9626 Tf -(should) 26.5703 Tj -72 187.42 Td -(indicate) 31.5416 Tj --246 TJm -(ho) 9.9626 Tj -25 TJm -(w) 7.193 Tj --247 TJm -(m) 7.7509 Tj -1 TJm -(an) 9.4047 Tj -14 TJm -(y) 4.9813 Tj --246 TJm -(bytes) 21.031 Tj --246 TJm -(the) 12.1743 Tj --246 TJm -(library) 26.5603 Tj --247 TJm -(may) 17.1556 Tj --246 TJm -(read.) 19.6363 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -259.242 187.42 Td -/F124_0 9.9626 Tf -(BZ2_bzCompress) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -345.382 187.42 Td -/F122_0 9.9626 Tf -(updates) 30.4357 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -378.271 187.42 Td -/F124_0 9.9626 Tf -(next_in) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -420.114 187.42 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -425.066 187.42 Td -/F124_0 9.9626 Tf -(avail_in) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -475.34 187.42 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -492.179 187.42 Td -/F124_0 9.9626 Tf -(total_in) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 175.465 Td -/F122_0 9.9626 Tf -(to) 7.7509 Tj --250 TJm -(re\003ect) 24.8965 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(number) 30.4357 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(bytes) 21.031 Tj --250 TJm -(it) 5.5392 Tj --250 TJm -(has) 13.2801 Tj --250 TJm -(read.) 19.6363 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 153.651 Td -(Similarly) 37.0908 Tj -65 TJm -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -113.611 153.651 Td -/F124_0 9.9626 Tf -(next_out) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -164.072 153.651 Td -/F122_0 9.9626 Tf -(should) 26.5703 Tj --265 TJm -(point) 20.4831 Tj --265 TJm -(to) 7.7509 Tj --265 TJm -(a) 4.4234 Tj --265 TJm -(b) 4.9813 Tj -20 TJm -(uf) 8.2988 Tj -25 TJm -(fer) 11.0585 Tj --265 TJm -(in) 7.7509 Tj --265 TJm -(which) 24.3486 Tj --265 TJm -(the) 12.1743 Tj --265 TJm -(compressed) 47.0334 Tj --265 TJm -(data) 16.5977 Tj --265 TJm -(is) 6.6451 Tj --265 TJm -(to) 7.7509 Tj --265 TJm -(be) 9.4047 Tj --265 TJm -(placed,) 28.493 Tj --269 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -464.742 153.651 Td -/F124_0 9.9626 Tf -(avail_out) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -521.181 153.651 Td -/F122_0 9.9626 Tf -(indi-) 18.8194 Tj -72 141.696 Td -(cating) 24.3486 Tj --209 TJm -(ho) 9.9626 Tj -25 TJm -(w) 7.193 Tj --209 TJm -(much) 22.1369 Tj --209 TJm -(output) 25.4644 Tj --209 TJm -(space) 22.1269 Tj --209 TJm -(is) 6.6451 Tj --210 TJm -(a) 4.4234 Tj -20 TJm -(v) 4.9813 Tj -25 TJm -(ailable.) 29.0509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -243.087 141.696 Td -/F124_0 9.9626 Tf -(BZ2_bzCompress) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -328.856 141.696 Td -/F122_0 9.9626 Tf -(updates) 30.4357 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -361.375 141.696 Td -/F124_0 9.9626 Tf -(next_out) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -409.196 141.696 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -413.851 141.696 Td -/F124_0 9.9626 Tf -(avail_out) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -469.732 141.696 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -486.202 141.696 Td -/F124_0 9.9626 Tf -(total_out) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 129.74 Td -/F122_0 9.9626 Tf -(to) 7.7509 Tj --250 TJm -(re\003ect) 24.8965 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(number) 30.4357 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(bytes) 21.031 Tj --250 TJm -(output.) 27.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 107.926 Td -(Y) 7.193 Tj -110 TJm -(ou) 9.9626 Tj --272 TJm -(may) 17.1556 Tj --272 TJm -(pro) 13.2801 Tj -15 TJm -(vide) 17.1556 Tj --272 TJm -(and) 14.386 Tj --272 TJm -(remo) 20.4731 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --272 TJm -(as) 8.2988 Tj --272 TJm -(little) 18.2714 Tj --272 TJm -(or) 8.2988 Tj --272 TJm -(as) 8.2988 Tj --272 TJm -(much) 22.1369 Tj --271 TJm -(data) 16.5977 Tj --272 TJm -(as) 8.2988 Tj --272 TJm -(you) 14.9439 Tj --272 TJm -(lik) 10.5205 Tj -10 TJm -(e) 4.4234 Tj --272 TJm -(on) 9.9626 Tj --272 TJm -(each) 18.2515 Tj --272 TJm -(call) 14.386 Tj --272 TJm -(of) 8.2988 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -399.123 107.926 Td -/F124_0 9.9626 Tf -(BZ2_bzCompress) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -482.809 107.926 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj --752 TJm -(In) 8.2988 Tj --272 TJm -(the) 12.1743 Tj --272 TJm -(limit,) 21.32 Tj -72 95.971 Td -(it) 5.5392 Tj --266 TJm -(is) 6.6451 Tj --265 TJm -(acceptable) 42.0422 Tj --266 TJm -(to) 7.7509 Tj --266 TJm -(supply) 26.5703 Tj --266 TJm -(and) 14.386 Tj --265 TJm -(remo) 20.4731 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --266 TJm -(data) 16.5977 Tj --266 TJm -(one) 14.386 Tj --265 TJm -(byte) 17.1556 Tj --266 TJm -(at) 7.193 Tj --266 TJm -(a) 4.4234 Tj --266 TJm -(time,) 20.2042 Tj --269 TJm -(although) 34.8691 Tj --266 TJm -(this) 14.396 Tj --266 TJm -(w) 7.193 Tj -10 TJm -(ould) 17.7135 Tj --265 TJm -(be) 9.4047 Tj --266 TJm -(terribly) 29.3299 Tj --266 TJm -(inef) 15.4918 Tj -25 TJm -(\002cient.) 27.3972 Tj --714 TJm -(Y) 7.193 Tj -110 TJm -(ou) 9.9626 Tj --266 TJm -(should) 26.5703 Tj -72 84.016 Td -(al) 7.193 Tj -10 TJm -(w) 7.193 Tj -10 TJm -(ays) 13.2801 Tj --250 TJm -(ensure) 26.0024 Tj --250 TJm -(that) 14.9439 Tj --250 TJm -(at) 7.193 Tj --250 TJm -(least) 18.2614 Tj --250 TJm -(one) 14.386 Tj --250 TJm -(byte) 17.1556 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(output) 25.4644 Tj --250 TJm -(space) 22.1269 Tj --250 TJm -(is) 6.6451 Tj --250 TJm -(a) 4.4234 Tj -20 TJm -(v) 4.9813 Tj -25 TJm -(ailable) 26.5603 Tj --250 TJm -(at) 7.193 Tj --250 TJm -(each) 18.2515 Tj --250 TJm -(call.) 16.8766 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -534.414 50.951 Td -(13) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 14 17 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -419.067 749.245 Td -/F122_0 9.9626 Tf -(Programming) 54.7943 Tj --250 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -496.556 749.245 Td -/F124_0 9.9626 Tf -(libbzip2) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -72 710.037 Td -/F122_0 9.9626 Tf -(A) 7.193 Tj --250 TJm -(second) 27.6661 Tj --250 TJm -(purpose) 31.5416 Tj --250 TJm -(of) 8.2988 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -156.662 710.037 Td -/F124_0 9.9626 Tf -(BZ2_bzCompress) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -242.839 710.037 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(request) 28.772 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(change) 28.2141 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(mode) 22.1369 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(compressed) 47.0334 Tj --250 TJm -(stream.) 29.0509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 688.12 Td -(Conceptually) 53.1305 Tj -65 TJm -(,) 2.4907 Tj --217 TJm -(a) 4.4234 Tj --210 TJm -(compressed) 47.0334 Tj --209 TJm -(stream) 26.5603 Tj --209 TJm -(can) 13.8281 Tj --209 TJm -(be) 9.4047 Tj --210 TJm -(in) 7.7509 Tj --209 TJm -(one) 14.386 Tj --209 TJm -(of) 8.2988 Tj --209 TJm -(four) 16.5977 Tj --210 TJm -(states:) 24.9065 Tj --289 TJm -(IDLE,) 25.1755 Tj --209 TJm -(R) 6.6451 Tj -40 TJm -(UNNING,) 41.7732 Tj --210 TJm -(FLUSHING) 49.2551 Tj --209 TJm -(and) 14.386 Tj --209 TJm -(FINISHING.) 52.2937 Tj --419 TJm -(Be-) 14.386 Tj -72 676.164 Td -(fore) 16.0398 Tj --264 TJm -(initialisation) 49.823 Tj --263 TJm -(\() 3.3175 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -146.434 676.164 Td -/F124_0 9.9626 Tf -(BZ2_bzCompressInit) 107.5961 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -254.031 676.164 Td -/F122_0 9.9626 Tf -(\)) 3.3175 Tj --264 TJm -(and) 14.386 Tj --263 TJm -(after) 18.2515 Tj --264 TJm -(termination) 45.9375 Tj --264 TJm -(\() 3.3175 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -349.75 676.164 Td -/F124_0 9.9626 Tf -(BZ2_bzCompressEnd) 101.6185 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -451.369 676.164 Td -/F122_0 9.9626 Tf -(\),) 5.8082 Tj --267 TJm -(a) 4.4234 Tj --264 TJm -(stream) 26.5603 Tj --264 TJm -(is) 6.6451 Tj --263 TJm -(re) 7.7409 Tj -15 TJm -(g) 4.9813 Tj -5 TJm -(arded) 22.1269 Tj -72 664.209 Td -(as) 8.2988 Tj --250 TJm -(IDLE.) 25.1755 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 642.291 Td -(Upon) 22.1369 Tj --389 TJm -(initialisation) 49.823 Tj --390 TJm -(\() 3.3175 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -155.036 642.291 Td -/F124_0 9.9626 Tf -(BZ2_bzCompressInit) 107.5961 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -262.632 642.291 Td -/F122_0 9.9626 Tf -(\),) 5.8082 Tj --424 TJm -(the) 12.1743 Tj --390 TJm -(stream) 26.5603 Tj --389 TJm -(is) 6.6451 Tj --390 TJm -(placed) 26.0024 Tj --389 TJm -(in) 7.7509 Tj --389 TJm -(the) 12.1743 Tj --390 TJm -(R) 6.6451 Tj -40 TJm -(UNNING) 39.2825 Tj --389 TJm -(state.) 20.7521 Tj --1457 TJm -(Subsequent) 45.9375 Tj --389 TJm -(calls) 18.2614 Tj -72 630.336 Td -(to) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -83.818 630.336 Td -/F124_0 9.9626 Tf -(BZ2_bzCompress) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -171.571 630.336 Td -/F122_0 9.9626 Tf -(should) 26.5703 Tj --408 TJm -(pass) 17.1556 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -223.431 630.336 Td -/F124_0 9.9626 Tf -(BZ_RUN) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -263.362 630.336 Td -/F122_0 9.9626 Tf -(as) 8.2988 Tj --408 TJm -(the) 12.1743 Tj --409 TJm -(request) 28.772 Tj -1 TJm -(ed) 9.4047 Tj --409 TJm -(action;) 27.1182 Tj --487 TJm -(other) 20.4731 Tj --408 TJm -(actions) 28.224 Tj --409 TJm -(are) 12.1643 Tj --408 TJm -(ille) 12.7322 Tj -15 TJm -(g) 4.9813 Tj -5 TJm -(al) 7.193 Tj --408 TJm -(and) 14.386 Tj --408 TJm -(will) 15.5018 Tj --408 TJm -(result) 22.1369 Tj --409 TJm -(in) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 618.381 Td -/F124_0 9.9626 Tf -(BZ_SEQUENCE_ERROR) 101.6185 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -173.619 618.381 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 596.463 Td -(At) 9.9626 Tj --279 TJm -(some) 21.031 Tj --279 TJm -(point,) 22.9738 Tj --286 TJm -(the) 12.1743 Tj --279 TJm -(calling) 27.1182 Tj --279 TJm -(program) 33.7533 Tj --279 TJm -(will) 15.5018 Tj --279 TJm -(ha) 9.4047 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --278 TJm -(pro) 13.2801 Tj -14 TJm -(vi) 7.7509 Tj -1 TJm -(ded) 14.386 Tj --279 TJm -(all) 9.9626 Tj --279 TJm -(the) 12.1743 Tj --279 TJm -(input) 20.4831 Tj --279 TJm -(data) 16.5977 Tj --279 TJm -(it) 5.5392 Tj --279 TJm -(w) 7.193 Tj -10 TJm -(ants) 16.0497 Tj --279 TJm -(to.) 10.2416 Tj --793 TJm -(It) 6.0871 Tj --279 TJm -(will) 15.5018 Tj --279 TJm -(then) 17.1556 Tj --279 TJm -(w) 7.193 Tj -10 TJm -(ant) 12.1743 Tj --279 TJm -(to) 7.7509 Tj --279 TJm -(\002nish) 22.1469 Tj --279 TJm -(up) 9.9626 Tj --279 TJm -(--) 6.6351 Tj -72 584.508 Td -(in) 7.7509 Tj --287 TJm -(ef) 7.7409 Tj -25 TJm -(fect,) 17.4246 Tj --297 TJm -(asking) 26.0123 Tj --288 TJm -(the) 12.1743 Tj --287 TJm -(library) 26.5603 Tj --287 TJm -(to) 7.7509 Tj --288 TJm -(process) 29.8778 Tj --287 TJm -(an) 9.4047 Tj -15 TJm -(y) 4.9813 Tj --288 TJm -(data) 16.5977 Tj --287 TJm -(it) 5.5392 Tj --287 TJm -(might) 23.2527 Tj --288 TJm -(ha) 9.4047 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --287 TJm -(b) 4.9813 Tj -20 TJm -(uf) 8.2988 Tj -25 TJm -(fered) 20.4632 Tj --288 TJm -(internally) 38.1866 Tj -65 TJm -(.) 2.4907 Tj --844 TJm -(In) 8.2988 Tj --288 TJm -(this) 14.396 Tj --287 TJm -(state,) 20.7521 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -456.314 584.508 Td -/F124_0 9.9626 Tf -(BZ2_bzCompress) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 572.553 Td -/F122_0 9.9626 Tf -(will) 15.5018 Tj --258 TJm -(no) 9.9626 Tj --257 TJm -(longer) 25.4544 Tj --258 TJm -(attempt) 29.8878 Tj --258 TJm -(to) 7.7509 Tj --258 TJm -(read) 17.1456 Tj --257 TJm -(data) 16.5977 Tj --258 TJm -(from) 19.3673 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -234.208 572.553 Td -/F124_0 9.9626 Tf -(next_in) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -276.051 572.553 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --260 TJm -(b) 4.9813 Tj -20 TJm -(ut) 7.7509 Tj --257 TJm -(it) 5.5392 Tj --258 TJm -(will) 15.5018 Tj --258 TJm -(w) 7.193 Tj -10 TJm -(ant) 12.1743 Tj --257 TJm -(to) 7.7509 Tj --258 TJm -(write) 20.4731 Tj --258 TJm -(data) 16.5977 Tj --258 TJm -(to) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -407.082 572.553 Td -/F124_0 9.9626 Tf -(next_out) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -454.902 572.553 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj --666 TJm -(Because) 33.1954 Tj --258 TJm -(the) 12.1743 Tj --258 TJm -(output) 25.4644 Tj -72 560.598 Td -(b) 4.9813 Tj -20 TJm -(uf) 8.2988 Tj -25 TJm -(fer) 11.0585 Tj --228 TJm -(supplied) 33.7633 Tj --228 TJm -(by) 9.9626 Tj --229 TJm -(the) 12.1743 Tj --228 TJm -(user) 16.5977 Tj --228 TJm -(can) 13.8281 Tj --228 TJm -(be) 9.4047 Tj --228 TJm -(arbitrarily) 39.8404 Tj --229 TJm -(sma) 16.0497 Tj -1 TJm -(ll,) 8.0299 Tj --233 TJm -(the) 12.1743 Tj --228 TJm -(\002nishing-up) 48.1592 Tj --228 TJm -(operation) 37.6287 Tj --229 TJm -(cannot) 26.5603 Tj --228 TJm -(necessarily) 44.2638 Tj --228 TJm -(be) 9.4047 Tj --228 TJm -(done) 19.3673 Tj --228 TJm -(with) 17.7135 Tj --229 TJm -(a) 4.4234 Tj --228 TJm -(single) 23.8007 Tj -72 548.642 Td -(call) 14.386 Tj --250 TJm -(of) 8.2988 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -99.666 548.642 Td -/F124_0 9.9626 Tf -(BZ2_bzCompress) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -183.352 548.642 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 526.725 Td -(Instead,) 31.2626 Tj --346 TJm -(the) 12.1743 Tj --327 TJm -(calling) 27.1182 Tj --326 TJm -(program) 33.7533 Tj --327 TJm -(passes) 25.4544 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -218.231 526.725 Td -/F124_0 9.9626 Tf -(BZ_FINISH) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -275.284 526.725 Td -/F122_0 9.9626 Tf -(as) 8.2988 Tj --327 TJm -(an) 9.4047 Tj --327 TJm -(acti) 14.386 Tj -1 TJm -(on) 9.9626 Tj --327 TJm -(to) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -338.109 526.725 Td -/F124_0 9.9626 Tf -(BZ2_bzCompress) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -421.795 526.725 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj --1081 TJm -(This) 17.7135 Tj --326 TJm -(changes) 32.0895 Tj --327 TJm -(the) 12.1743 Tj --327 TJm -(stream') 29.8778 Tj -55 TJm -(s) 3.8755 Tj -72 514.77 Td -(state) 18.2614 Tj --291 TJm -(to) 7.7509 Tj --290 TJm -(FINISHING.) 52.2937 Tj --581 TJm -(An) 12.1743 Tj -15 TJm -(y) 4.9813 Tj --291 TJm -(remaining) 40.3983 Tj --290 TJm -(input) 20.4831 Tj --291 TJm -(\(ie,) 13.0012 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -264.452 514.77 Td -/F124_0 9.9626 Tf -(next_in[0) 53.798 Tj --600 TJm -(..) 11.9551 Tj --1200 TJm -(avail_in-1]) 65.7532 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -413.892 514.77 Td -/F122_0 9.9626 Tf -(\)) 3.3175 Tj --291 TJm -(is) 6.6451 Tj --290 TJm -(compressed) 47.0334 Tj --291 TJm -(and) 14.386 Tj --290 TJm -(transferred) 43.148 Tj -72 502.814 Td -(to) 7.7509 Tj --421 TJm -(the) 12.1743 Tj --421 TJm -(output) 25.4644 Tj --421 TJm -(b) 4.9813 Tj -20 TJm -(uf) 8.2988 Tj -25 TJm -(fer) 11.0585 Tj -55 TJm -(.) 2.4907 Tj --1646 TJm -(T) 6.0871 Tj -80 TJm -(o) 4.9813 Tj --421 TJm -(do) 9.9626 Tj --422 TJm -(this) 14.396 Tj -1 TJm -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -222.339 502.814 Td -/F124_0 9.9626 Tf -(BZ2_bzCompress) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -310.22 502.814 Td -/F122_0 9.9626 Tf -(must) 19.3773 Tj --421 TJm -(be) 9.4047 Tj --421 TJm -(called) 23.7907 Tj --421 TJm -(repeatedly) 41.4942 Tj --421 TJm -(until) 18.2714 Tj --421 TJm -(all) 9.9626 Tj --421 TJm -(the) 12.1743 Tj --421 TJm -(output) 25.4644 Tj --421 TJm -(has) 13.2801 Tj --421 TJm -(been) 18.8094 Tj -72 490.859 Td -(consumed.) 42.889 Tj --1397 TJm -(At) 9.9626 Tj --379 TJm -(that) 14.9439 Tj --380 TJm -(point,) 22.9738 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -188.346 490.859 Td -/F124_0 9.9626 Tf -(BZ2_bzCompress) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -275.813 490.859 Td -/F122_0 9.9626 Tf -(returns) 27.6661 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -307.259 490.859 Td -/F124_0 9.9626 Tf -(BZ_STREAM_END) 77.7083 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -384.968 490.859 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --379 TJm -(and) 14.386 Tj --380 TJm -(the) 12.1743 Tj --379 TJm -(stream') 29.8778 Tj -55 TJm -(s) 3.8755 Tj --380 TJm -(state) 18.2614 Tj --379 TJm -(is) 6.6451 Tj --380 TJm -(set) 11.0684 Tj --379 TJm -(back) 18.8094 Tj --379 TJm -(to) 7.7509 Tj -72 478.904 Td -(IDLE.) 25.1755 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -99.666 478.904 Td -/F124_0 9.9626 Tf -(BZ2_bzCompressEnd) 101.6185 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -203.776 478.904 Td -/F122_0 9.9626 Tf -(should) 26.5703 Tj --250 TJm -(then) 17.1556 Tj --250 TJm -(be) 9.4047 Tj --250 TJm -(called.) 26.2813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 456.986 Td -(Just) 15.5018 Tj --380 TJm -(to) 7.7509 Tj --380 TJm -(mak) 17.1556 Tj -10 TJm -(e) 4.4234 Tj --379 TJm -(sure) 16.5977 Tj --380 TJm -(the) 12.1743 Tj --380 TJm -(calling) 27.1182 Tj --380 TJm -(program) 33.7533 Tj --379 TJm -(does) 18.2614 Tj --380 TJm -(not) 12.7322 Tj --380 TJm -(cheat,) 23.5117 Tj --412 TJm -(the) 12.1743 Tj --380 TJm -(library) 26.5603 Tj --380 TJm -(mak) 17.1556 Tj -10 TJm -(es) 8.2988 Tj --379 TJm -(a) 4.4234 Tj --380 TJm -(note) 17.1556 Tj --380 TJm -(of) 8.2988 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -415.708 456.986 Td -/F124_0 9.9626 Tf -(avail_in) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -467.312 456.986 Td -/F122_0 9.9626 Tf -(at) 7.193 Tj --380 TJm -(the) 12.1743 Tj --380 TJm -(time) 17.7135 Tj --379 TJm -(of) 8.2988 Tj --380 TJm -(the) 12.1743 Tj -72 445.031 Td -(\002rst) 15.5018 Tj --286 TJm -(call) 14.386 Tj --286 TJm -(t) 2.7696 Tj -1 TJm -(o) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -118.179 445.031 Td -/F124_0 9.9626 Tf -(BZ2_bzCompress) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -204.713 445.031 Td -/F122_0 9.9626 Tf -(which) 24.3486 Tj --286 TJm -(has) 13.2801 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -248.035 445.031 Td -/F124_0 9.9626 Tf -(BZ_FINISH) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -304.68 445.031 Td -/F122_0 9.9626 Tf -(as) 8.2988 Tj --286 TJm -(an) 9.4047 Tj --286 TJm -(action) 24.3486 Tj --285 TJm -(\(ie,) 13.0012 Tj --295 TJm -(at) 7.193 Tj --286 TJm -(the) 12.1743 Tj --286 TJm -(time) 17.7135 Tj --285 TJm -(the) 12.1743 Tj --286 TJm -(program) 33.7533 Tj --286 TJm -(has) 13.2801 Tj --286 TJm -(announced) 43.158 Tj --285 TJm -(its) 9.4147 Tj -72 433.076 Td -(intention) 35.427 Tj --292 TJm -(to) 7.7509 Tj --292 TJm -(not) 12.7322 Tj --291 TJm -(supply) 26.5703 Tj --292 TJm -(an) 9.4047 Tj -15 TJm -(y) 4.9813 Tj --292 TJm -(more) 20.4731 Tj --292 TJm -(input\).) 26.2913 Tj --870 TJm -(By) 11.6264 Tj --292 TJm -(comparing) 42.61 Tj --292 TJm -(this) 14.396 Tj --292 TJm -(v) 4.9813 Tj -25 TJm -(alue) 16.5977 Tj --291 TJm -(with) 17.7135 Tj --292 TJm -(that) 14.9439 Tj --292 TJm -(of) 8.2988 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -392.862 433.076 Td -/F124_0 9.9626 Tf -(avail_in) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -443.589 433.076 Td -/F122_0 9.9626 Tf -(o) 4.9813 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(er) 7.7409 Tj --292 TJm -(subsequent) 44.2738 Tj --292 TJm -(calls) 18.2614 Tj --291 TJm -(to) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 421.121 Td -/F124_0 9.9626 Tf -(BZ2_bzCompress) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -155.686 421.121 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --247 TJm -(the) 12.1743 Tj --247 TJm -(library) 26.5603 Tj --246 TJm -(can) 13.8281 Tj --247 TJm -(detect) 23.7907 Tj --246 TJm -(an) 9.4047 Tj -15 TJm -(y) 4.9813 Tj --247 TJm -(attem) 22.1369 Tj -1 TJm -(p) 4.9813 Tj --1 TJm -(t) 2.7696 Tj -1 TJm -(s) 3.8755 Tj --247 TJm -(to) 7.7509 Tj --246 TJm -(slip) 14.396 Tj --247 TJm -(in) 7.7509 Tj --246 TJm -(more) 20.4731 Tj --247 TJm -(data) 16.5977 Tj --246 TJm -(to) 7.7509 Tj --247 TJm -(compress.) 40.1194 Tj --617 TJm -(An) 12.1743 Tj -15 TJm -(y) 4.9813 Tj --247 TJm -(calls) 18.2614 Tj --246 TJm -(for) 11.6164 Tj --247 TJm -(which) 24.3486 Tj --246 TJm -(this) 14.396 Tj --247 TJm -(is) 6.6451 Tj -72 409.165 Td -(detected) 33.1954 Tj --250 TJm -(will) 15.5018 Tj --250 TJm -(return) 23.7907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -151.959 409.165 Td -/F124_0 9.9626 Tf -(BZ_SEQUENCE_ERROR) 101.6185 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -253.578 409.165 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj --500 TJm -(This) 17.7135 Tj --250 TJm -(indicates) 35.417 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(programming) 54.2364 Tj --250 TJm -(mistak) 26.5703 Tj -10 TJm -(e) 4.4234 Tj --250 TJm -(which) 24.3486 Tj --250 TJm -(should) 26.5703 Tj --250 TJm -(be) 9.4047 Tj --250 TJm -(corrected.) 39.5515 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 387.248 Td -(Instead) 28.772 Tj --224 TJm -(of) 8.2988 Tj --223 TJm -(asking) 26.0123 Tj --224 TJm -(to) 7.7509 Tj --223 TJm -(\002nish,) 24.6375 Tj --229 TJm -(the) 12.1743 Tj --224 TJm -(calling) 27.1182 Tj --223 TJm -(program) 33.7533 Tj --224 TJm -(may) 17.1556 Tj --224 TJm -(ask) 13.2801 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -293.282 387.248 Td -/F124_0 9.9626 Tf -(BZ2_bzCompress) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -379.196 387.248 Td -/F122_0 9.9626 Tf -(to) 7.7509 Tj --224 TJm -(tak) 12.1743 Tj -10 TJm -(e) 4.4234 Tj --223 TJm -(all) 9.9626 Tj --224 TJm -(the) 12.1743 Tj --223 TJm -(remaining) 40.3983 Tj --224 TJm -(input,) 22.9738 Tj --229 TJm -(compress) 37.6287 Tj -72 375.293 Td -(it) 5.5392 Tj --278 TJm -(and) 14.386 Tj --278 TJm -(terminate) 37.6287 Tj --278 TJm -(the) 12.1743 Tj --278 TJm -(current) 28.2141 Tj --277 TJm -(\(Burro) 26.5603 Tj -25 TJm -(ws-Wheeler\)) 51.4469 Tj --278 TJm -(compression) 50.3609 Tj --278 TJm -(block.) 24.6275 Tj --787 TJm -(Th) 11.0684 Tj --1 TJm -(i) 2.7696 Tj -1 TJm -(s) 3.8755 Tj --278 TJm -(could) 22.1369 Tj --278 TJm -(be) 9.4047 Tj --278 TJm -(useful) 24.3486 Tj --278 TJm -(for) 11.6164 Tj --278 TJm -(error) 19.3573 Tj --278 TJm -(control) 28.224 Tj --278 TJm -(purposes.) 37.9077 Tj -72 363.337 Td -(The) 15.4918 Tj --328 TJm -(mechanism) 45.3796 Tj --328 TJm -(is) 6.6451 Tj --328 TJm -(analogous) 40.3983 Tj --328 TJm -(to) 7.7509 Tj --328 TJm -(that) 14.9439 Tj --328 TJm -(for) 11.6164 Tj --328 TJm -(\002nishing:) 37.6487 Tj --466 TJm -(call) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -297.049 363.337 Td -/F124_0 9.9626 Tf -(BZ2_bzCompress) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -384.003 363.337 Td -/F122_0 9.9626 Tf -(with) 17.7135 Tj --328 TJm -(an) 9.4047 Tj --328 TJm -(action) 24.3486 Tj --328 TJm -(of) 8.2988 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -456.841 363.337 Td -/F124_0 9.9626 Tf -(BZ_FLUSH) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -504.662 363.337 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --328 TJm -(remo) 20.4731 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj -72 351.382 Td -(output) 25.4644 Tj --445 TJm -(data,) 19.0883 Tj --494 TJm -(and) 14.386 Tj --446 TJm -(persist) 26.0123 Tj --445 TJm -(with) 17.7135 Tj --445 TJm -(the) 12.1743 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -213.94 351.382 Td -/F124_0 9.9626 Tf -(BZ_FLUSH) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -266.195 351.382 Td -/F122_0 9.9626 Tf -(action) 24.3486 Tj --445 TJm -(until) 18.2714 Tj --445 TJm -(the) 12.1743 Tj --446 TJm -(v) 4.9813 Tj -25 TJm -(alue) 16.5977 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -360.062 351.382 Td -/F124_0 9.9626 Tf -(BZ_RUN) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -400.362 351.382 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --445 TJm -(returned.) 35.686 Tj --1792 TJm -(As) 11.0684 Tj --445 TJm -(with) 17.7135 Tj --445 TJm -(\002nishing,) 37.3697 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 339.427 Td -/F124_0 9.9626 Tf -(BZ2_bzCompress) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -158.177 339.427 Td -/F122_0 9.9626 Tf -(detects) 27.6661 Tj --250 TJm -(an) 9.4047 Tj -15 TJm -(y) 4.9813 Tj --250 TJm -(attempt) 29.8878 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(pro) 13.2801 Tj -15 TJm -(vide) 17.1556 Tj --250 TJm -(more) 20.4731 Tj --250 TJm -(input) 20.4831 Tj --250 TJm -(data) 16.5977 Tj --250 TJm -(once) 18.8094 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(\003ush) 19.3773 Tj --250 TJm -(has) 13.2801 Tj --250 TJm -(be) 9.4047 Tj -15 TJm -(gun.) 17.4346 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 317.509 Td -(Once) 21.0211 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(\003ush) 19.3773 Tj --250 TJm -(is) 6.6451 Tj --250 TJm -(complete,) 39.0135 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(stream) 26.5603 Tj --250 TJm -(returns) 27.6661 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(normal) 28.224 Tj --250 TJm -(R) 6.6451 Tj -40 TJm -(UNNING) 39.2825 Tj --250 TJm -(state.) 20.7521 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 295.591 Td -(This) 17.7135 Tj --344 TJm -(all) 9.9626 Tj --343 TJm -(sounds) 27.6761 Tj --344 TJm -(pretty) 23.2427 Tj --344 TJm -(comple) 29.3299 Tj -15 TJm -(x,) 7.472 Tj --367 TJm -(b) 4.9813 Tj -20 TJm -(ut) 7.7509 Tj --344 TJm -(isn') 14.9439 Tj -18 TJm -(t) 2.7696 Tj --344 TJm -(really) 22.6848 Tj -65 TJm -(.) 2.4907 Tj --1182 TJm -(Here') 22.6749 Tj -55 TJm -(s) 3.8755 Tj --344 TJm -(a) 4.4234 Tj --344 TJm -(table) 19.3673 Tj --343 TJm -(which) 24.3486 Tj --344 TJm -(sho) 13.8381 Tj -25 TJm -(ws) 11.0684 Tj --344 TJm -(which) 24.3486 Tj --344 TJm -(actions) 28.224 Tj --343 TJm -(are) 12.1643 Tj --344 TJm -(allo) 14.9439 Tj -25 TJm -(w) 7.193 Tj -10 TJm -(able) 16.5977 Tj --344 TJm -(in) 7.7509 Tj --344 TJm -(each) 18.2515 Tj -72 283.636 Td -(state,) 20.7521 Tj --281 TJm -(what) 19.3673 Tj --274 TJm -(action) 24.3486 Tj --275 TJm -(will) 15.5018 Tj --274 TJm -(be) 9.4047 Tj --275 TJm -(tak) 12.1743 Tj -10 TJm -(en,) 11.8953 Tj --280 TJm -(what) 19.3673 Tj --275 TJm -(the) 12.1743 Tj --274 TJm -(ne) 9.4047 Tj -15 TJm -(xt) 7.7509 Tj --275 TJm -(state) 18.2614 Tj --274 TJm -(is,) 9.1357 Tj --281 TJm -(and) 14.386 Tj --274 TJm -(what) 19.3673 Tj --275 TJm -(the) 12.1743 Tj --275 TJm -(non-error) 37.6188 Tj --274 TJm -(return) 23.7907 Tj --275 TJm -(v) 4.9813 Tj -25 TJm -(alues) 20.4731 Tj --274 TJm -(are.) 14.655 Tj --767 TJm -(Note) 19.3673 Tj --275 TJm -(that) 14.9439 Tj --274 TJm -(you) 14.9439 Tj --275 TJm -(can') 17.1456 Tj -18 TJm -(t) 2.7696 Tj -72 271.681 Td -(e) 4.4234 Tj -15 TJm -(xplicitly) 33.2153 Tj --347 TJm -(ask) 13.2801 Tj --348 TJm -(what) 19.3673 Tj --347 TJm -(state) 18.2614 Tj --348 TJm -(the) 12.1743 Tj --347 TJm -(stream) 26.5603 Tj --348 TJm -(is) 6.6451 Tj --347 TJm -(in,) 10.2416 Tj --372 TJm -(b) 4.9813 Tj -20 TJm -(ut) 7.7509 Tj --347 TJm -(nor) 13.2801 Tj --348 TJm -(do) 9.9626 Tj --347 TJm -(you) 14.9439 Tj --348 TJm -(need) 18.8094 Tj --347 TJm -(to) 7.7509 Tj --348 TJm -(--) 6.6351 Tj --347 TJm -(it) 5.5392 Tj --348 TJm -(can) 13.8281 Tj --347 TJm -(be) 9.4047 Tj --347 TJm -(inferred) 31.5316 Tj --348 TJm -(from) 19.3673 Tj --347 TJm -(the) 12.1743 Tj --348 TJm -(v) 4.9813 Tj -25 TJm -(alues) 20.4731 Tj --347 TJm -(returned) 33.1954 Tj --348 TJm -(by) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 259.726 Td -/F124_0 9.9626 Tf -(BZ2_bzCompress) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -155.686 259.726 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -534.414 50.852 Td -(14) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 15 18 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -419.067 749.245 Td -/F122_0 9.9626 Tf -(Programming) 54.7943 Tj --250 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -496.556 749.245 Td -/F124_0 9.9626 Tf -(libbzip2) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 146.152] cm -0 0 468 573.848 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 711.631 Td -/F124_0 9.9626 Tf -(IDLE/any) 47.8205 Tj -98.488 699.676 Td -(Illegal.) 47.8205 Tj --852 TJm -(IDLE) 23.9102 Tj --426 TJm -(state) 29.8878 Tj --426 TJm -(only) 23.9102 Tj --426 TJm -(exists) 35.8654 Tj --426 TJm -(after) 29.8878 Tj --426 TJm -(BZ2_bzCompressEnd) 101.6185 Tj --426 TJm -(or) 11.9551 Tj -98.488 687.721 Td -(before) 35.8654 Tj --426 TJm -(BZ2_bzCompressInit.) 113.5736 Tj -98.488 675.766 Td -(Return) 35.8654 Tj --426 TJm -(value) 29.8878 Tj --426 TJm -(=) 5.9776 Tj --426 TJm -(BZ_SEQUENCE_ERROR) 101.6185 Tj -90 651.856 Td -(RUNNING/BZ_RUN) 83.6858 Tj -98.488 639.9 Td -(Compress) 47.8205 Tj --426 TJm -(from) 23.9102 Tj --426 TJm -(next_in) 41.8429 Tj --426 TJm -(to) 11.9551 Tj --426 TJm -(next_out) 47.8205 Tj --426 TJm -(as) 11.9551 Tj --426 TJm -(much) 23.9102 Tj --426 TJm -(as) 11.9551 Tj --426 TJm -(possible.) 53.798 Tj -98.488 627.945 Td -(Next) 23.9102 Tj --426 TJm -(state) 29.8878 Tj --426 TJm -(=) 5.9776 Tj --426 TJm -(RUNNING) 41.8429 Tj -98.488 615.99 Td -(Return) 35.8654 Tj --426 TJm -(value) 29.8878 Tj --426 TJm -(=) 5.9776 Tj --426 TJm -(BZ_RUN_OK) 53.798 Tj -90 592.08 Td -(RUNNING/BZ_FLUSH) 95.641 Tj -98.488 580.124 Td -(Remember) 47.8205 Tj --426 TJm -(current) 41.8429 Tj --426 TJm -(value) 29.8878 Tj --426 TJm -(of) 11.9551 Tj --426 TJm -(next_in.) 47.8205 Tj --426 TJm -(Compress) 47.8205 Tj --426 TJm -(from) 23.9102 Tj --426 TJm -(next_in) 41.8429 Tj -98.488 568.169 Td -(to) 11.9551 Tj --426 TJm -(next_out) 47.8205 Tj --426 TJm -(as) 11.9551 Tj --426 TJm -(much) 23.9102 Tj --426 TJm -(as) 11.9551 Tj --426 TJm -(possible,) 53.798 Tj --426 TJm -(but) 17.9327 Tj --426 TJm -(do) 11.9551 Tj --426 TJm -(not) 17.9327 Tj --426 TJm -(accept) 35.8654 Tj --426 TJm -(any) 17.9327 Tj --426 TJm -(more) 23.9102 Tj --426 TJm -(input.) 35.8654 Tj -98.488 556.214 Td -(Next) 23.9102 Tj --426 TJm -(state) 29.8878 Tj --426 TJm -(=) 5.9776 Tj --426 TJm -(FLUSHING) 47.8205 Tj -98.488 544.259 Td -(Return) 35.8654 Tj --426 TJm -(value) 29.8878 Tj --426 TJm -(=) 5.9776 Tj --426 TJm -(BZ_FLUSH_OK) 65.7532 Tj -90 520.349 Td -(RUNNING/BZ_FINISH) 101.6185 Tj -98.488 508.393 Td -(Remember) 47.8205 Tj --426 TJm -(current) 41.8429 Tj --426 TJm -(value) 29.8878 Tj --426 TJm -(of) 11.9551 Tj --426 TJm -(next_in.) 47.8205 Tj --426 TJm -(Compress) 47.8205 Tj --426 TJm -(from) 23.9102 Tj --426 TJm -(next_in) 41.8429 Tj -98.488 496.438 Td -(to) 11.9551 Tj --426 TJm -(next_out) 47.8205 Tj --426 TJm -(as) 11.9551 Tj --426 TJm -(much) 23.9102 Tj --426 TJm -(as) 11.9551 Tj --426 TJm -(possible,) 53.798 Tj --426 TJm -(but) 17.9327 Tj --426 TJm -(do) 11.9551 Tj --426 TJm -(not) 17.9327 Tj --426 TJm -(accept) 35.8654 Tj --426 TJm -(any) 17.9327 Tj --426 TJm -(more) 23.9102 Tj --426 TJm -(input.) 35.8654 Tj -98.488 484.483 Td -(Next) 23.9102 Tj --426 TJm -(state) 29.8878 Tj --426 TJm -(=) 5.9776 Tj --426 TJm -(FINISHING) 53.798 Tj -98.488 472.528 Td -(Return) 35.8654 Tj --426 TJm -(value) 29.8878 Tj --426 TJm -(=) 5.9776 Tj --426 TJm -(BZ_FINISH_OK) 71.7307 Tj -90 448.618 Td -(FLUSHING/BZ_FLUSH) 101.6185 Tj -98.488 436.662 Td -(Compress) 47.8205 Tj --426 TJm -(from) 23.9102 Tj --426 TJm -(next_in) 41.8429 Tj --426 TJm -(to) 11.9551 Tj --426 TJm -(next_out) 47.8205 Tj --426 TJm -(as) 11.9551 Tj --426 TJm -(much) 23.9102 Tj --426 TJm -(as) 11.9551 Tj --426 TJm -(possible,) 53.798 Tj -98.488 424.707 Td -(but) 17.9327 Tj --426 TJm -(do) 11.9551 Tj --426 TJm -(not) 17.9327 Tj --426 TJm -(accept) 35.8654 Tj --426 TJm -(any) 17.9327 Tj --426 TJm -(more) 23.9102 Tj --426 TJm -(input.) 35.8654 Tj -98.488 412.752 Td -(If) 11.9551 Tj --426 TJm -(all) 17.9327 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(existing) 47.8205 Tj --426 TJm -(input) 29.8878 Tj --426 TJm -(has) 17.9327 Tj --426 TJm -(been) 23.9102 Tj --426 TJm -(used) 23.9102 Tj --426 TJm -(up) 11.9551 Tj --426 TJm -(and) 17.9327 Tj --426 TJm -(all) 17.9327 Tj --426 TJm -(compressed) 59.7756 Tj -98.488 400.797 Td -(output) 35.8654 Tj --426 TJm -(has) 17.9327 Tj --426 TJm -(been) 23.9102 Tj --426 TJm -(removed) 41.8429 Tj -106.976 388.842 Td -(Next) 23.9102 Tj --426 TJm -(state) 29.8878 Tj --426 TJm -(=) 5.9776 Tj --426 TJm -(RUNNING;) 47.8205 Tj --426 TJm -(Return) 35.8654 Tj --426 TJm -(value) 29.8878 Tj --426 TJm -(=) 5.9776 Tj --426 TJm -(BZ_RUN_OK) 53.798 Tj -98.488 376.887 Td -(else) 23.9102 Tj -106.976 364.931 Td -(Next) 23.9102 Tj --426 TJm -(state) 29.8878 Tj --426 TJm -(=) 5.9776 Tj --426 TJm -(FLUSHING;) 53.798 Tj --426 TJm -(Return) 35.8654 Tj --426 TJm -(value) 29.8878 Tj --426 TJm -(=) 5.9776 Tj --426 TJm -(BZ_FLUSH_OK) 65.7532 Tj -90 341.021 Td -(FLUSHING/other) 83.6858 Tj -98.488 329.066 Td -(Illegal.) 47.8205 Tj -98.488 317.111 Td -(Return) 35.8654 Tj --426 TJm -(value) 29.8878 Tj --426 TJm -(=) 5.9776 Tj --426 TJm -(BZ_SEQUENCE_ERROR) 101.6185 Tj -90 293.2 Td -(FINISHING/BZ_FINISH) 113.5736 Tj -98.488 281.245 Td -(Compress) 47.8205 Tj --426 TJm -(from) 23.9102 Tj --426 TJm -(next_in) 41.8429 Tj --426 TJm -(to) 11.9551 Tj --426 TJm -(next_out) 47.8205 Tj --426 TJm -(as) 11.9551 Tj --426 TJm -(much) 23.9102 Tj --426 TJm -(as) 11.9551 Tj --426 TJm -(possible,) 53.798 Tj -98.488 269.29 Td -(but) 17.9327 Tj --426 TJm -(to) 11.9551 Tj --426 TJm -(not) 17.9327 Tj --426 TJm -(accept) 35.8654 Tj --426 TJm -(any) 17.9327 Tj --426 TJm -(more) 23.9102 Tj --426 TJm -(input.) 35.8654 Tj -98.488 257.335 Td -(If) 11.9551 Tj --426 TJm -(all) 17.9327 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(existing) 47.8205 Tj --426 TJm -(input) 29.8878 Tj --426 TJm -(has) 17.9327 Tj --426 TJm -(been) 23.9102 Tj --426 TJm -(used) 23.9102 Tj --426 TJm -(up) 11.9551 Tj --426 TJm -(and) 17.9327 Tj --426 TJm -(all) 17.9327 Tj --426 TJm -(compressed) 59.7756 Tj -98.488 245.38 Td -(output) 35.8654 Tj --426 TJm -(has) 17.9327 Tj --426 TJm -(been) 23.9102 Tj --426 TJm -(removed) 41.8429 Tj -106.976 233.424 Td -(Next) 23.9102 Tj --426 TJm -(state) 29.8878 Tj --426 TJm -(=) 5.9776 Tj --426 TJm -(IDLE;) 29.8878 Tj --426 TJm -(Return) 35.8654 Tj --426 TJm -(value) 29.8878 Tj --426 TJm -(=) 5.9776 Tj --426 TJm -(BZ_STREAM_END) 77.7083 Tj -98.488 221.469 Td -(else) 23.9102 Tj -106.976 209.514 Td -(Next) 23.9102 Tj --426 TJm -(state) 29.8878 Tj --426 TJm -(=) 5.9776 Tj --426 TJm -(FINISHING;) 59.7756 Tj --426 TJm -(Return) 35.8654 Tj --426 TJm -(value) 29.8878 Tj --426 TJm -(=) 5.9776 Tj --426 TJm -(BZ_FINISH_OK) 71.7307 Tj -90 185.604 Td -(FINISHING/other) 89.6634 Tj -98.488 173.649 Td -(Illegal.) 47.8205 Tj -98.488 161.693 Td -(Return) 35.8654 Tj --426 TJm -(value) 29.8878 Tj --426 TJm -(=) 5.9776 Tj --426 TJm -(BZ_SEQUENCE_ERROR) 101.6185 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 124.234 Td -/F122_0 9.9626 Tf -(That) 18.2614 Tj --250 TJm -(still) 14.9539 Tj --250 TJm -(looks) 21.589 Tj --250 TJm -(complicated?) 53.1206 Tj --620 TJm -(W) 9.4047 Tj -80 TJm -(ell,) 12.4533 Tj --250 TJm -(f) 3.3175 Tj -10 TJm -(air) 10.5105 Tj --250 TJm -(enough.) 31.8205 Tj --620 TJm -(The) 15.4918 Tj --250 TJm -(usual) 21.031 Tj --250 TJm -(sequence) 36.5129 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(calls) 18.2614 Tj --250 TJm -(for) 11.6164 Tj --250 TJm -(compressing) 50.3609 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(load) 17.1556 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(data) 16.5977 Tj --250 TJm -(is:) 9.4147 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -74.491 92.353 Td -(1.) 7.472 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --510 TJm -(Get) 14.386 Tj --250 TJm -(started) 26.5603 Tj --250 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -153.175 92.353 Td -/F124_0 9.9626 Tf -(BZ2_bzCompressInit) 107.5961 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -260.771 92.353 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -534.414 50.951 Td -(15) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 16 19 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -419.067 749.245 Td -/F122_0 9.9626 Tf -(Programming) 54.7943 Tj --250 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -496.556 749.245 Td -/F124_0 9.9626 Tf -(libbzip2) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -74.491 710.037 Td -/F122_0 9.9626 Tf -(2.) 7.472 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --510 TJm -(Sho) 15.5018 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(el) 7.193 Tj --267 TJm -(data) 16.5977 Tj --268 TJm -(in) 7.7509 Tj --267 TJm -(and) 14.386 Tj --268 TJm -(shlurp) 24.9065 Tj --267 TJm -(out) 12.7322 Tj --268 TJm -(its) 9.4147 Tj --267 TJm -(compressed) 47.0334 Tj --267 TJm -(form) 19.3673 Tj --268 TJm -(using) 21.589 Tj --267 TJm -(zero) 17.1456 Tj --268 TJm -(or) 8.2988 Tj --267 TJm -(more) 20.4731 Tj --268 TJm -(call) 14.386 Tj -1 TJm -(s) 3.8755 Tj --268 TJm -(of) 8.2988 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -400.64 710.037 Td -/F124_0 9.9626 Tf -(BZ2_bzCompress) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -486.991 710.037 Td -/F122_0 9.9626 Tf -(with) 17.7135 Tj --267 TJm -(action) 24.3486 Tj --268 TJm -(=) 5.6189 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -83.955 698.082 Td -/F124_0 9.9626 Tf -(BZ_RUN) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -119.821 698.082 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -74.491 676.164 Td -(3.) 7.472 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --510 TJm -(Finish) 24.9165 Tj --276 TJm -(up.) 12.4533 Tj --387 TJm -(Repeatedly) 44.8217 Tj --276 TJm -(call) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -195.722 676.164 Td -/F124_0 9.9626 Tf -(BZ2_bzCompress) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -282.156 676.164 Td -/F122_0 9.9626 Tf -(with) 17.7135 Tj --276 TJm -(action) 24.3486 Tj --276 TJm -(=) 5.6189 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -338.079 676.164 Td -/F124_0 9.9626 Tf -(BZ_FINISH) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -391.877 676.164 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --276 TJm -(cop) 14.386 Tj -10 TJm -(ying) 17.7135 Tj --276 TJm -(out) 12.7322 Tj --275 TJm -(the) 12.1743 Tj --276 TJm -(compressed) 47.0334 Tj --276 TJm -(output,) 27.9551 Tj -83.955 664.209 Td -(until) 18.2714 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -104.717 664.209 Td -/F124_0 9.9626 Tf -(BZ_STREAM_END) 77.7083 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -184.916 664.209 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --250 TJm -(returned.) 35.686 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -74.491 642.291 Td -(4.) 7.472 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --510 TJm -(Close) 22.6948 Tj --250 TJm -(up) 9.9626 Tj --250 TJm -(and) 14.386 Tj --250 TJm -(go) 9.9626 Tj --250 TJm -(home.) 24.6275 Tj --620 TJm -(Call) 16.6077 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -203.914 642.291 Td -/F124_0 9.9626 Tf -(BZ2_bzCompressEnd) 101.6185 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -305.533 642.291 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 620.374 Td -(If) 6.6351 Tj --269 TJm -(the) 12.1743 Tj --270 TJm -(data) 16.5977 Tj --269 TJm -(you) 14.9439 Tj --270 TJm -(w) 7.193 Tj -10 TJm -(ant) 12.1743 Tj --269 TJm -(to) 7.7509 Tj --270 TJm -(compress) 37.6287 Tj --269 TJm -(\002ts) 12.1843 Tj --270 TJm -(into) 15.5018 Tj --269 TJm -(your) 18.2614 Tj --270 TJm -(input) 20.4831 Tj --269 TJm -(b) 4.9813 Tj -20 TJm -(uf) 8.2988 Tj -25 TJm -(fer) 11.0585 Tj --270 TJm -(all) 9.9626 Tj --269 TJm -(at) 7.193 Tj --270 TJm -(once,) 21.3 Tj --274 TJm -(you) 14.9439 Tj --269 TJm -(can) 13.8281 Tj --270 TJm -(skip) 16.6077 Tj --269 TJm -(the) 12.1743 Tj --270 TJm -(calls) 18.2614 Tj --269 TJm -(of) 8.2988 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -456.314 620.374 Td -/F124_0 9.9626 Tf -(BZ2_bzCompress) 83.6858 Tj -72 608.418 Td -(\() 5.9776 Tj --600 TJm -(...,) 23.9102 Tj --600 TJm -(BZ_RUN) 35.8654 Tj --600 TJm -(\)) 5.9776 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -164.154 608.418 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj --250 TJm -(just) 14.396 Tj --250 TJm -(do) 9.9626 Tj --250 TJm -(the) 12.1743 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -225.036 608.418 Td -/F124_0 9.9626 Tf -(BZ2_bzCompress) 83.6858 Tj --600 TJm -(\() 5.9776 Tj --600 TJm -(...,) 23.9102 Tj --600 TJm -(BZ_FINISH) 53.798 Tj --600 TJm -(\)) 5.9776 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -424.786 608.418 Td -/F122_0 9.9626 Tf -(calls.) 20.7521 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 586.501 Td -(All) 12.7322 Tj --278 TJm -(required) 33.1954 Tj --277 TJm -(memory) 33.2053 Tj --278 TJm -(is) 6.6451 Tj --277 TJm -(allocated) 35.965 Tj --278 TJm -(by) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -220.295 586.501 Td -/F124_0 9.9626 Tf -(BZ2_bzCompressInit) 107.5961 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -327.891 586.501 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj --785 TJm -(The) 15.4918 Tj --278 TJm -(compression) 50.3609 Tj --277 TJm -(library) 26.5603 Tj --278 TJm -(can) 13.8281 Tj --277 TJm -(accept) 25.4445 Tj --278 TJm -(an) 9.4047 Tj -15 TJm -(y) 4.9813 Tj --277 TJm -(data) 16.5977 Tj --278 TJm -(at) 7.193 Tj --278 TJm -(all) 9.9626 Tj -72 574.545 Td -(\(ob) 13.2801 Tj -15 TJm -(viously\).) 35.1481 Tj --612 TJm -(So) 10.5205 Tj --238 TJm -(you) 14.9439 Tj --237 TJm -(shouldn') 34.8691 Tj -18 TJm -(t) 2.7696 Tj --238 TJm -(get) 12.1743 Tj --238 TJm -(an) 9.4047 Tj -15 TJm -(y) 4.9813 Tj --237 TJm -(error) 19.3573 Tj --238 TJm -(return) 23.7907 Tj --238 TJm -(v) 4.9813 Tj -25 TJm -(alues) 20.4731 Tj --238 TJm -(from) 19.3673 Tj --237 TJm -(the) 12.1743 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -339.287 574.545 Td -/F124_0 9.9626 Tf -(BZ2_bzCompress) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -425.342 574.545 Td -/F122_0 9.9626 Tf -(calls.) 20.7521 Tj --612 TJm -(If) 6.6351 Tj --237 TJm -(you) 14.9439 Tj --238 TJm -(do,) 12.4533 Tj --240 TJm -(the) 12.1743 Tj -15 TJm -(y) 4.9813 Tj --238 TJm -(will) 15.5018 Tj --238 TJm -(be) 9.4047 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 562.59 Td -/F124_0 9.9626 Tf -(BZ_SEQUENCE_ERROR) 101.6185 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -173.619 562.59 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --250 TJm -(and) 14.386 Tj --250 TJm -(indicate) 31.5416 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(b) 4.9813 Tj -20 TJm -(ug) 9.9626 Tj --250 TJm -(in) 7.7509 Tj --250 TJm -(your) 18.2614 Tj --250 TJm -(programming.) 56.727 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 540.672 Td -(T) 6.0871 Tj -35 TJm -(ri) 6.0871 Tj -25 TJm -(vial) 14.9439 Tj --250 TJm -(other) 20.4731 Tj --250 TJm -(possible) 32.6574 Tj --250 TJm -(return) 23.7907 Tj --250 TJm -(v) 4.9813 Tj -25 TJm -(alues:) 23.2427 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 501.654] cm -0 0 468 35.866 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 529.151 Td -/F124_0 9.9626 Tf -(BZ_PARAM_ERROR) 83.6858 Tj -98.488 517.196 Td -(if) 11.9551 Tj --426 TJm -(strm) 23.9102 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(NULL,) 29.8878 Tj --426 TJm -(or) 11.9551 Tj --426 TJm -(strm->s) 41.8429 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(NULL) 23.9102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 471.033 Td -/F116_0 17.2154 Tf -(3.3.3.) 43.0729 Tj --278 TJm -(BZ2_bzCompressEnd) 177.9212 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 442.563] cm -0 0 468 23.91 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 458.104 Td -/F124_0 9.9626 Tf -(int) 17.9327 Tj --426 TJm -(BZ2_bzCompressEnd) 101.6185 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(bz_stream) 53.798 Tj -286.303 456.361 Td -(*) 5.9776 Tj -292.281 458.104 Td -(strm) 23.9102 Tj --426 TJm -(\);) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 420.645 Td -/F122_0 9.9626 Tf -(Releases) 34.8591 Tj --250 TJm -(all) 9.9626 Tj --250 TJm -(memory) 33.2053 Tj --250 TJm -(associated) 40.9463 Tj --250 TJm -(with) 17.7135 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(compression) 50.3609 Tj --250 TJm -(stream.) 29.0509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 398.727 Td -(Possible) 33.2153 Tj --250 TJm -(return) 23.7907 Tj --250 TJm -(v) 4.9813 Tj -25 TJm -(alues:) 23.2427 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 361.766] cm -0 0 468 35.866 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 389.263 Td -/F124_0 9.9626 Tf -(BZ_PARAM_ERROR) 83.6858 Tj --852 TJm -(if) 11.9551 Tj --426 TJm -(strm) 23.9102 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(NULL) 23.9102 Tj --426 TJm -(or) 11.9551 Tj --426 TJm -(strm->s) 41.8429 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(NULL) 23.9102 Tj -90 377.307 Td -(BZ_OK) 29.8878 Tj --4686 TJm -(otherwise) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 331.145 Td -/F116_0 17.2154 Tf -(3.3.4.) 43.0729 Tj --278 TJm -(BZ2_bzDecompressInit) 190.3679 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 302.674] cm -0 0 468 23.91 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 318.216 Td -/F124_0 9.9626 Tf -(int) 17.9327 Tj --426 TJm -(BZ2_bzDecompressInit) 119.5512 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(bz_stream) 53.798 Tj -304.236 316.473 Td -(*) 5.9776 Tj -310.214 318.216 Td -(strm,) 29.8878 Tj --426 TJm -(int) 17.9327 Tj --426 TJm -(verbosity,) 59.7756 Tj --426 TJm -(int) 17.9327 Tj --426 TJm -(small) 29.8878 Tj --426 TJm -(\);) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 280.757 Td -/F122_0 9.9626 Tf -(Prepares) 34.3012 Tj --351 TJm -(for) 11.6164 Tj --351 TJm -(decompression.) 62.2563 Tj --1228 TJm -(As) 11.0684 Tj --351 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -235.177 280.757 Td -/F124_0 9.9626 Tf -(BZ2_bzCompressInit) 107.5961 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -342.773 280.757 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --377 TJm -(a) 4.4234 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -356.937 280.757 Td -/F124_0 9.9626 Tf -(bz_stream) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -414.235 280.757 Td -/F122_0 9.9626 Tf -(record) 25.4445 Tj --351 TJm -(should) 26.5703 Tj --351 TJm -(be) 9.4047 Tj --352 TJm -(allocated) 35.965 Tj --351 TJm -(and) 14.386 Tj -72 268.801 Td -(initialised) 39.3025 Tj --306 TJm -(before) 25.4445 Tj --305 TJm -(the) 12.1743 Tj --306 TJm -(call.) 16.8766 Tj --953 TJm -(Fields) 24.3586 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -211.833 268.801 Td -/F124_0 9.9626 Tf -(bzalloc) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -253.676 268.801 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -259.35 268.801 Td -/F124_0 9.9626 Tf -(bzfree) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -298.26 268.801 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -315.69 268.801 Td -/F124_0 9.9626 Tf -(opaque) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -354.6 268.801 Td -/F122_0 9.9626 Tf -(should) 26.5703 Tj --306 TJm -(be) 9.4047 Tj --305 TJm -(set) 11.0684 Tj --306 TJm -(if) 6.0871 Tj --305 TJm -(a) 4.4234 Tj --306 TJm -(custom) 28.782 Tj --305 TJm -(memory) 33.2053 Tj --306 TJm -(allocator) 34.8591 Tj --306 TJm -(is) 6.6451 Tj -72 256.846 Td -(required,) 35.686 Tj --350 TJm -(or) 8.2988 Tj --331 TJm -(made) 21.579 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -147.635 256.846 Td -/F124_0 9.9626 Tf -(NULL) 23.9102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -174.836 256.846 Td -/F122_0 9.9626 Tf -(for) 11.6164 Tj --330 TJm -(the) 12.1743 Tj --331 TJm -(normal) 28.224 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -236.722 256.846 Td -/F124_0 9.9626 Tf -(malloc) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -275.878 256.846 Td -/F122_0 9.9626 Tf -(/) 2.7696 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -281.938 256.846 Td -/F124_0 9.9626 Tf -(free) 23.9102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -309.139 256.846 Td -/F122_0 9.9626 Tf -(routines.) 34.5901 Tj --1102 TJm -(Upon) 22.1369 Tj --330 TJm -(return,) 26.2813 Tj --350 TJm -(the) 12.1743 Tj --331 TJm -(internal) 30.4357 Tj --330 TJm -(state) 18.2614 Tj --330 TJm -(will) 15.5018 Tj --330 TJm -(ha) 9.4047 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --331 TJm -(been) 18.8094 Tj -72 244.891 Td -(initialised,) 41.7931 Tj --250 TJm -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -133.16 244.891 Td -/F124_0 9.9626 Tf -(total_in) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -183.471 244.891 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -200.348 244.891 Td -/F124_0 9.9626 Tf -(total_out) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -256.637 244.891 Td -/F122_0 9.9626 Tf -(will) 15.5018 Tj --250 TJm -(be) 9.4047 Tj --250 TJm -(zero.) 19.6363 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 222.973 Td -(F) 5.5392 Tj -15 TJm -(or) 8.2988 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(meaning) 34.3112 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(parameter) 39.8305 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -192.756 222.973 Td -/F124_0 9.9626 Tf -(verbosity) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -246.554 222.973 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --250 TJm -(see) 12.7222 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -266.748 222.973 Td -/F124_0 9.9626 Tf -(BZ2_bzCompressInit) 107.5961 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -374.345 222.973 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 201.055 Td -(If) 6.6351 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -81.497 201.055 Td -/F124_0 9.9626 Tf -(small) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -114.248 201.055 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --287 TJm -(nonzero,) 34.5802 Tj --297 TJm -(the) 12.1743 Tj --287 TJm -(library) 26.5603 Tj --288 TJm -(wil) 12.7322 Tj -1 TJm -(l) 2.7696 Tj --288 TJm -(use) 13.2801 Tj --287 TJm -(an) 9.4047 Tj --287 TJm -(alternati) 32.6474 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --288 TJm -(decompression) 59.7656 Tj --287 TJm -(algorithm) 38.7446 Tj --287 TJm -(which) 24.3486 Tj --288 TJm -(uses) 17.1556 Tj --287 TJm -(less) 14.9439 Tj --287 TJm -(memory) 33.2053 Tj --287 TJm -(b) 4.9813 Tj -20 TJm -(ut) 7.7509 Tj --288 TJm -(at) 7.193 Tj --287 TJm -(the) 12.1743 Tj -72 189.1 Td -(cost) 16.0497 Tj --289 TJm -(of) 8.2988 Tj --290 TJm -(decompressing) 59.7656 Tj --289 TJm -(more) 20.4731 Tj --289 TJm -(slo) 11.6264 Tj -25 TJm -(wly) 14.9439 Tj --290 TJm -(\(roughly) 34.3112 Tj --289 TJm -(speaking,) 37.9077 Tj --299 TJm -(half) 15.4918 Tj --290 TJm -(the) 12.1743 Tj --289 TJm -(speed,) 25.1755 Tj --299 TJm -(b) 4.9813 Tj -20 TJm -(ut) 7.7509 Tj --289 TJm -(the) 12.1743 Tj --290 TJm -(maximum) 40.4083 Tj --289 TJm -(memory) 33.2053 Tj --289 TJm -(requirement) 48.1393 Tj --290 TJm -(drops) 22.1369 Tj -72 177.145 Td -(to) 7.7509 Tj --250 TJm -(around) 27.6661 Tj --250 TJm -(2300k\).) 30.7147 Tj --620 TJm -(See) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 1] sc -/DeviceRGB {} CS -[0 0 1] SC --250 TJm -(Ho) 12.1743 Tj -25 TJm -(w) 7.193 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(use) 13.2801 Tj --250 TJm -(bzip2) 22.1369 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 1] sc -/DeviceRGB {} CS -[0 0 1] SC -/DeviceRGB {} cs -[0 0 1] sc -/DeviceRGB {} CS -[0 0 1] SC --250 TJm -([2]) 11.6164 Tj -/DeviceRGB {} cs -[0 0 1] sc -/DeviceRGB {} CS -[0 0 1] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --250 TJm -(for) 11.6164 Tj --250 TJm -(more) 20.4731 Tj --250 TJm -(information) 47.0434 Tj --250 TJm -(on) 9.9626 Tj --250 TJm -(memory) 33.2053 Tj --250 TJm -(management.) 53.3995 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 155.227 Td -(Note) 19.3673 Tj --289 TJm -(that) 14.9439 Tj --290 TJm -(the) 12.1743 Tj --289 TJm -(amount) 29.8878 Tj --289 TJm -(of) 8.2988 Tj --289 TJm -(memory) 33.2053 Tj --290 TJm -(needed) 28.2141 Tj --289 TJm -(to) 7.7509 Tj --289 TJm -(decompress) 47.0334 Tj --289 TJm -(a) 4.4234 Tj --290 TJm -(stream) 26.5603 Tj --289 TJm -(cannot) 26.5603 Tj --289 TJm -(be) 9.4047 Tj --289 TJm -(determined) 44.8217 Tj --290 TJm -(until) 18.2714 Tj --289 TJm -(the) 12.1743 Tj --289 TJm -(stream') 29.8778 Tj -55 TJm -(s) 3.8755 Tj --289 TJm -(header) 26.5503 Tj --290 TJm -(has) 13.2801 Tj -72 143.272 Td -(been) 18.8094 Tj --342 TJm -(read,) 19.6363 Tj --366 TJm -(so) 8.8568 Tj --342 TJm -(e) 4.4234 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(en) 9.4047 Tj --342 TJm -(if) 6.0871 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -161.081 143.272 Td -/F124_0 9.9626 Tf -(BZ2_bzDecompressInit) 119.5512 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -284.043 143.272 Td -/F122_0 9.9626 Tf -(succeeds,) 37.8977 Tj --365 TJm -(a) 4.4234 Tj --343 TJm -(subsequent) 44.2738 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -381.098 143.272 Td -/F124_0 9.9626 Tf -(BZ2_bzDecompress) 95.641 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -480.149 143.272 Td -/F122_0 9.9626 Tf -(could) 22.1369 Tj --342 TJm -(f) 3.3175 Tj -10 TJm -(ail) 9.9626 Tj --343 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 131.317 Td -/F124_0 9.9626 Tf -(BZ_MEM_ERROR) 71.7307 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -143.731 131.317 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 109.399 Td -(Possible) 33.2153 Tj --250 TJm -(return) 23.7907 Tj --250 TJm -(v) 4.9813 Tj -25 TJm -(alues:) 23.2427 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -534.414 50.951 Td -(16) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 17 20 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -419.067 749.245 Td -/F122_0 9.9626 Tf -(Programming) 54.7943 Tj --250 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -496.556 749.245 Td -/F124_0 9.9626 Tf -(libbzip2) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 624.359] cm -0 0 468 95.641 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 711.631 Td -/F124_0 9.9626 Tf -(BZ_CONFIG_ERROR) 89.6634 Tj -98.488 699.676 Td -(if) 11.9551 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(library) 41.8429 Tj --426 TJm -(has) 17.9327 Tj --426 TJm -(been) 23.9102 Tj --426 TJm -(mis-compiled) 71.7307 Tj -90 687.721 Td -(BZ_PARAM_ERROR) 83.6858 Tj -98.488 675.766 Td -(if) 11.9551 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(small) 29.8878 Tj --426 TJm -(!=) 11.9551 Tj --426 TJm -(0) 5.9776 Tj --426 TJm -(&&) 11.9551 Tj --426 TJm -(small) 29.8878 Tj --426 TJm -(!=) 11.9551 Tj --426 TJm -(1) 5.9776 Tj --426 TJm -(\)) 5.9776 Tj -98.488 663.811 Td -(or) 11.9551 Tj --426 TJm -(\(verbosity) 59.7756 Tj --426 TJm -(<;) 11.9551 Tj --426 TJm -(0) 5.9776 Tj --426 TJm -(||) 11.9551 Tj --426 TJm -(verbosity) 53.798 Tj --426 TJm -(>) 5.9776 Tj --426 TJm -(4\)) 11.9551 Tj -90 651.856 Td -(BZ_MEM_ERROR) 71.7307 Tj -98.488 639.9 Td -(if) 11.9551 Tj --426 TJm -(insufficient) 71.7307 Tj --426 TJm -(memory) 35.8654 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(available) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 602.441 Td -/F122_0 9.9626 Tf -(Allo) 17.7135 Tj -25 TJm -(w) 7.193 Tj -10 TJm -(able) 16.5977 Tj --250 TJm -(ne) 9.4047 Tj -15 TJm -(xt) 7.7509 Tj --250 TJm -(actions:) 30.9936 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 553.524] cm -0 0 468 47.821 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 592.976 Td -/F124_0 9.9626 Tf -(BZ2_bzDecompress) 95.641 Tj -98.488 581.021 Td -(if) 11.9551 Tj --426 TJm -(BZ_OK) 29.8878 Tj --426 TJm -(was) 17.9327 Tj --426 TJm -(returned) 47.8205 Tj -98.488 569.066 Td -(no) 11.9551 Tj --426 TJm -(specific) 47.8205 Tj --426 TJm -(action) 35.8654 Tj --426 TJm -(required) 47.8205 Tj --426 TJm -(in) 11.9551 Tj --426 TJm -(case) 23.9102 Tj --426 TJm -(of) 11.9551 Tj --426 TJm -(error) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 522.903 Td -/F116_0 17.2154 Tf -(3.3.5.) 43.0729 Tj --278 TJm -(BZ2_bzDecompress) 164.5448 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 494.433] cm -0 0 468 23.91 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 509.975 Td -/F124_0 9.9626 Tf -(int) 17.9327 Tj --426 TJm -(BZ2_bzDecompress) 95.641 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(bz_stream) 53.798 Tj -280.326 508.231 Td -(*) 5.9776 Tj -286.303 509.975 Td -(strm) 23.9102 Tj --426 TJm -(\);) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 472.515 Td -/F122_0 9.9626 Tf -(Pro) 13.8381 Tj -15 TJm -(vides) 21.031 Tj --301 TJm -(more) 20.4731 Tj --302 TJm -(input) 20.4831 Tj --301 TJm -(and/out) 29.8878 Tj --302 TJm -(output) 25.4644 Tj --301 TJm -(b) 4.9813 Tj -20 TJm -(uf) 8.2988 Tj -25 TJm -(fer) 11.0585 Tj --301 TJm -(space) 22.1269 Tj --302 TJm -(for) 11.6164 Tj --301 TJm -(the) 12.1743 Tj --302 TJm -(library) 26.5603 Tj -65 TJm -(.) 2.4907 Tj --928 TJm -(The) 15.4918 Tj --301 TJm -(caller) 22.1269 Tj --302 TJm -(maintains) 38.7446 Tj --301 TJm -(input) 20.4831 Tj --302 TJm -(and) 14.386 Tj --301 TJm -(output) 25.4644 Tj --301 TJm -(b) 4.9813 Tj -20 TJm -(uf) 8.2988 Tj -25 TJm -(fers,) 17.4246 Tj --315 TJm -(and) 14.386 Tj -72 460.56 Td -(uses) 17.1556 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -91.646 460.56 Td -/F124_0 9.9626 Tf -(BZ2_bzDecompress) 95.641 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -189.778 460.56 Td -/F122_0 9.9626 Tf -(to) 7.7509 Tj --250 TJm -(transfer) 30.4258 Tj --250 TJm -(data) 16.5977 Tj --250 TJm -(between) 33.1954 Tj --250 TJm -(them.) 22.4159 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 438.642 Td -(Before) 27.1082 Tj --498 TJm -(each) 18.2515 Tj --499 TJm -(call) 14.386 Tj --498 TJm -(to) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -159.356 438.642 Td -/F124_0 9.9626 Tf -(BZ2_bzDecompress) 95.641 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -254.997 438.642 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -263.071 438.642 Td -/F124_0 9.9626 Tf -(next_in) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -309.879 438.642 Td -/F122_0 9.9626 Tf -(should) 26.5703 Tj --498 TJm -(point) 20.4831 Tj --499 TJm -(at) 7.193 Tj --498 TJm -(the) 12.1743 Tj --498 TJm -(compressed) 47.0334 Tj --499 TJm -(data,) 19.0883 Tj --560 TJm -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -492.179 438.642 Td -/F124_0 9.9626 Tf -(avail_in) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 426.687 Td -/F122_0 9.9626 Tf -(should) 26.5703 Tj --308 TJm -(indicate) 31.5416 Tj --308 TJm -(ho) 9.9626 Tj -25 TJm -(w) 7.193 Tj --309 TJm -(man) 17.1556 Tj -15 TJm -(y) 4.9813 Tj --308 TJm -(bytes) 21.031 Tj --308 TJm -(the) 12.1743 Tj --308 TJm -(library) 26.5603 Tj --308 TJm -(may) 17.1556 Tj --309 TJm -(read.) 19.6363 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -294.955 426.687 Td -/F124_0 9.9626 Tf -(BZ2_bzDecompress) 95.641 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -393.667 426.687 Td -/F122_0 9.9626 Tf -(updates) 30.4357 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -427.173 426.687 Td -/F124_0 9.9626 Tf -(next_in) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -469.016 426.687 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -474.723 426.687 Td -/F124_0 9.9626 Tf -(avail_in) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -525.614 426.687 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 414.732 Td -/F124_0 9.9626 Tf -(total_in) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -122.311 414.732 Td -/F122_0 9.9626 Tf -(to) 7.7509 Tj --250 TJm -(re\003ect) 24.8965 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(number) 30.4357 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(bytes) 21.031 Tj --250 TJm -(it) 5.5392 Tj --250 TJm -(has) 13.2801 Tj --250 TJm -(read.) 19.6363 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 392.814 Td -(Similarly) 37.0908 Tj -65 TJm -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -113.799 392.814 Td -/F124_0 9.9626 Tf -(next_out) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -164.41 392.814 Td -/F122_0 9.9626 Tf -(should) 26.5703 Tj --280 TJm -(point) 20.4831 Tj --280 TJm -(to) 7.7509 Tj --280 TJm -(a) 4.4234 Tj --280 TJm -(b) 4.9813 Tj -20 TJm -(uf) 8.2988 Tj -25 TJm -(fer) 11.0585 Tj --281 TJm -(i) 2.7696 Tj -1 TJm -(n) 4.9813 Tj --281 TJm -(which) 24.3486 Tj --280 TJm -(the) 12.1743 Tj --280 TJm -(uncompressed) 56.996 Tj --280 TJm -(output) 25.4644 Tj --280 TJm -(is) 6.6451 Tj --280 TJm -(to) 7.7509 Tj --280 TJm -(be) 9.4047 Tj --280 TJm -(placed,) 28.493 Tj --288 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -486.202 392.814 Td -/F124_0 9.9626 Tf -(avail_out) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 380.859 Td -/F122_0 9.9626 Tf -(indicating) 39.8504 Tj --525 TJm -(ho) 9.9626 Tj -25 TJm -(w) 7.193 Tj --524 TJm -(much) 22.1369 Tj --525 TJm -(output) 25.4644 Tj --524 TJm -(space) 22.1269 Tj --525 TJm -(is) 6.6451 Tj --525 TJm -(a) 4.4234 Tj -20 TJm -(v) 4.9813 Tj -25 TJm -(ailable.) 29.0509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -285.792 380.859 Td -/F124_0 9.9626 Tf -(BZ2_bzCompress) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -374.705 380.859 Td -/F122_0 9.9626 Tf -(updates) 30.4357 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -410.367 380.859 Td -/F124_0 9.9626 Tf -(next_out) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -458.188 380.859 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -466.589 380.859 Td -/F124_0 9.9626 Tf -(avail_out) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -525.614 380.859 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 368.904 Td -/F124_0 9.9626 Tf -(total_out) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -128.289 368.904 Td -/F122_0 9.9626 Tf -(to) 7.7509 Tj --250 TJm -(re\003ect) 24.8965 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(number) 30.4357 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(bytes) 21.031 Tj --250 TJm -(output.) 27.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 346.986 Td -(Y) 7.193 Tj -110 TJm -(ou) 9.9626 Tj --320 TJm -(may) 17.1556 Tj --321 TJm -(pro) 13.2801 Tj -15 TJm -(vide) 17.1556 Tj --320 TJm -(and) 14.386 Tj --321 TJm -(remo) 20.4731 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --320 TJm -(as) 8.2988 Tj --321 TJm -(little) 18.2714 Tj --320 TJm -(or) 8.2988 Tj --320 TJm -(as) 8.2988 Tj --321 TJm -(much) 22.1369 Tj --320 TJm -(data) 16.5977 Tj --321 TJm -(as) 8.2988 Tj --320 TJm -(you) 14.9439 Tj --321 TJm -(lik) 10.5205 Tj -10 TJm -(e) 4.4234 Tj --320 TJm -(on) 9.9626 Tj --320 TJm -(each) 18.2515 Tj --321 TJm -(call) 14.386 Tj --320 TJm -(of) 8.2988 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -407.816 346.986 Td -/F124_0 9.9626 Tf -(BZ2_bzDecompress) 95.641 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -503.457 346.986 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj --1043 TJm -(In) 8.2988 Tj --320 TJm -(the) 12.1743 Tj -72 335.031 Td -(limit,) 21.32 Tj --295 TJm -(it) 5.5392 Tj --286 TJm -(is) 6.6451 Tj --287 TJm -(acceptable) 42.0422 Tj --286 TJm -(to) 7.7509 Tj --286 TJm -(supply) 26.5703 Tj --286 TJm -(and) 14.386 Tj --287 TJm -(remo) 20.4731 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --286 TJm -(data) 16.5977 Tj --286 TJm -(one) 14.386 Tj --286 TJm -(byte) 17.1556 Tj --287 TJm -(at) 7.193 Tj --286 TJm -(a) 4.4234 Tj --286 TJm -(time,) 20.2042 Tj --295 TJm -(although) 34.8691 Tj --286 TJm -(this) 14.396 Tj --287 TJm -(w) 7.193 Tj -10 TJm -(ould) 17.7135 Tj --286 TJm -(be) 9.4047 Tj --286 TJm -(terribly) 29.3299 Tj --286 TJm -(inef) 15.4918 Tj -25 TJm -(\002cient.) 27.3972 Tj --838 TJm -(Y) 7.193 Tj -110 TJm -(ou) 9.9626 Tj -72 323.076 Td -(should) 26.5703 Tj --250 TJm -(al) 7.193 Tj -10 TJm -(w) 7.193 Tj -10 TJm -(ays) 13.2801 Tj --250 TJm -(ensure) 26.0024 Tj --250 TJm -(that) 14.9439 Tj --250 TJm -(at) 7.193 Tj --250 TJm -(least) 18.2614 Tj --250 TJm -(one) 14.386 Tj --250 TJm -(byte) 17.1556 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(output) 25.4644 Tj --250 TJm -(space) 22.1269 Tj --250 TJm -(is) 6.6451 Tj --250 TJm -(a) 4.4234 Tj -20 TJm -(v) 4.9813 Tj -25 TJm -(ailable) 26.5603 Tj --250 TJm -(at) 7.193 Tj --250 TJm -(each) 18.2515 Tj --250 TJm -(call.) 16.8766 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 301.158 Td -(Use) 15.4918 Tj --250 TJm -(of) 8.2988 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -100.772 301.158 Td -/F124_0 9.9626 Tf -(BZ2_bzDecompress) 95.641 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -198.904 301.158 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --250 TJm -(simpler) 29.8878 Tj --250 TJm -(than) 17.1556 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -260.064 301.158 Td -/F124_0 9.9626 Tf -(BZ2_bzCompress) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -343.75 301.158 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 279.24 Td -(Y) 7.193 Tj -110 TJm -(ou) 9.9626 Tj --346 TJm -(should) 26.5703 Tj --347 TJm -(pro) 13.2801 Tj -15 TJm -(vide) 17.1556 Tj --346 TJm -(input) 20.4831 Tj --346 TJm -(and) 14.386 Tj --346 TJm -(remo) 20.4731 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --347 TJm -(output) 25.4644 Tj --346 TJm -(as) 8.2988 Tj --346 TJm -(described) 38.1767 Tj --346 TJm -(abo) 14.386 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(e,) 6.914 Tj --371 TJm -(and) 14.386 Tj --346 TJm -(repeatedly) 41.4942 Tj --346 TJm -(call) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -422.638 279.24 Td -/F124_0 9.9626 Tf -(BZ2_bzDecompress) 95.641 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -521.729 279.24 Td -/F122_0 9.9626 Tf -(until) 18.2714 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 267.285 Td -/F124_0 9.9626 Tf -(BZ_STREAM_END) 77.7083 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -152.314 267.285 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --262 TJm -(returned.) 35.686 Tj --344 TJm -(Appearance) 47.5714 Tj --262 TJm -(of) 8.2988 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -261.767 267.285 Td -/F124_0 9.9626 Tf -(BZ_STREAM_END) 77.7083 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -342.081 267.285 Td -/F122_0 9.9626 Tf -(denotes) 30.4357 Tj --262 TJm -(that) 14.9439 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -392.672 267.285 Td -/F124_0 9.9626 Tf -(BZ2_bzDecompress) 95.641 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -490.919 267.285 Td -/F122_0 9.9626 Tf -(has) 13.2801 Tj --262 TJm -(detected) 33.1954 Tj -72 255.33 Td -(the) 12.1743 Tj --212 TJm -(logical) 27.1182 Tj --212 TJm -(end) 14.386 Tj --211 TJm -(of) 8.2988 Tj --212 TJm -(the) 12.1743 Tj --212 TJm -(compressed) 47.0334 Tj --212 TJm -(stream.) 29.0509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -237.858 255.33 Td -/F124_0 9.9626 Tf -(BZ2_bzDecompress) 95.641 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -335.609 255.33 Td -/F122_0 9.9626 Tf -(will) 15.5018 Tj --212 TJm -(not) 12.7322 Tj --212 TJm -(produce) 32.0895 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -402.263 255.33 Td -/F124_0 9.9626 Tf -(BZ_STREAM_END) 77.7083 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -482.082 255.33 Td -/F122_0 9.9626 Tf -(until) 18.2714 Tj --212 TJm -(all) 9.9626 Tj --212 TJm -(output) 25.4644 Tj -72 243.375 Td -(data) 16.5977 Tj --256 TJm -(has) 13.2801 Tj --256 TJm -(been) 18.8094 Tj --255 TJm -(placed) 26.0024 Tj --256 TJm -(into) 15.5018 Tj --256 TJm -(the) 12.1743 Tj --256 TJm -(output) 25.4644 Tj --256 TJm -(b) 4.9813 Tj -20 TJm -(uf) 8.2988 Tj -25 TJm -(fer) 11.0585 Tj -40 TJm -(,) 2.4907 Tj --257 TJm -(so) 8.8568 Tj --256 TJm -(once) 18.8094 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -278.979 243.375 Td -/F124_0 9.9626 Tf -(BZ_STREAM_END) 77.7083 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -359.236 243.375 Td -/F122_0 9.9626 Tf -(appears,) 32.9164 Tj --257 TJm -(you) 14.9439 Tj --256 TJm -(are) 12.1643 Tj --256 TJm -(guaranteed) 43.7059 Tj --256 TJm -(to) 7.7509 Tj --255 TJm -(ha) 9.4047 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --256 TJm -(a) 4.4234 Tj -20 TJm -(v) 4.9813 Tj -25 TJm -(ailable) 26.5603 Tj -72 231.419 Td -(all) 9.9626 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(decompressed) 56.4381 Tj --250 TJm -(output,) 27.9551 Tj --250 TJm -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -205.369 231.419 Td -/F124_0 9.9626 Tf -(BZ2_bzDecompressEnd) 113.5736 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -321.433 231.419 Td -/F122_0 9.9626 Tf -(can) 13.8281 Tj --250 TJm -(safely) 23.7907 Tj --250 TJm -(be) 9.4047 Tj --250 TJm -(called.) 26.2813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 209.502 Td -(If) 6.6351 Tj --250 TJm -(case) 17.1456 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(an) 9.4047 Tj --250 TJm -(error) 19.3573 Tj --250 TJm -(return) 23.7907 Tj --250 TJm -(v) 4.9813 Tj -25 TJm -(alue,) 19.0883 Tj --250 TJm -(you) 14.9439 Tj --250 TJm -(should) 26.5703 Tj --250 TJm -(call) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -261.259 209.502 Td -/F124_0 9.9626 Tf -(BZ2_bzDecompressEnd) 113.5736 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -377.323 209.502 Td -/F122_0 9.9626 Tf -(to) 7.7509 Tj --250 TJm -(clean) 21.0211 Tj --250 TJm -(up) 9.9626 Tj --250 TJm -(and) 14.386 Tj --250 TJm -(release) 27.6562 Tj --250 TJm -(memory) 33.2053 Tj -65 TJm -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 187.584 Td -(Possible) 33.2153 Tj --250 TJm -(return) 23.7907 Tj --250 TJm -(v) 4.9813 Tj -25 TJm -(alues:) 23.2427 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -534.414 50.951 Td -(17) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 18 21 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -419.067 749.245 Td -/F122_0 9.9626 Tf -(Programming) 54.7943 Tj --250 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -496.556 749.245 Td -/F124_0 9.9626 Tf -(libbzip2) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 540.672] cm -0 0 468 179.328 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 711.631 Td -/F124_0 9.9626 Tf -(BZ_PARAM_ERROR) 83.6858 Tj -98.488 699.676 Td -(if) 11.9551 Tj --426 TJm -(strm) 23.9102 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(NULL) 23.9102 Tj --426 TJm -(or) 11.9551 Tj --426 TJm -(strm->s) 41.8429 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(NULL) 23.9102 Tj -98.488 687.721 Td -(or) 11.9551 Tj --426 TJm -(strm->avail_out) 89.6634 Tj --426 TJm -(<) 5.9776 Tj --426 TJm -(1) 5.9776 Tj -90 675.766 Td -(BZ_DATA_ERROR) 77.7083 Tj -98.488 663.811 Td -(if) 11.9551 Tj --426 TJm -(a) 5.9776 Tj --426 TJm -(data) 23.9102 Tj --426 TJm -(integrity) 53.798 Tj --426 TJm -(error) 29.8878 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(detected) 47.8205 Tj --426 TJm -(in) 11.9551 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(compressed) 59.7756 Tj --426 TJm -(stream) 35.8654 Tj -90 651.856 Td -(BZ_DATA_ERROR_MAGIC) 113.5736 Tj -98.488 639.9 Td -(if) 11.9551 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(compressed) 59.7756 Tj --426 TJm -(stream) 35.8654 Tj --426 TJm -(doesn't) 41.8429 Tj --426 TJm -(begin) 29.8878 Tj --426 TJm -(with) 23.9102 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(right) 29.8878 Tj --426 TJm -(magic) 29.8878 Tj --426 TJm -(bytes) 29.8878 Tj -90 627.945 Td -(BZ_MEM_ERROR) 71.7307 Tj -98.488 615.99 Td -(if) 11.9551 Tj --426 TJm -(there) 29.8878 Tj --426 TJm -(wasn't) 35.8654 Tj --426 TJm -(enough) 35.8654 Tj --426 TJm -(memory) 35.8654 Tj --426 TJm -(available) 53.798 Tj -90 604.035 Td -(BZ_STREAM_END) 77.7083 Tj -98.488 592.08 Td -(if) 11.9551 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(logical) 41.8429 Tj --426 TJm -(end) 17.9327 Tj --426 TJm -(of) 11.9551 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(data) 23.9102 Tj --426 TJm -(stream) 35.8654 Tj --426 TJm -(was) 17.9327 Tj --426 TJm -(detected) 47.8205 Tj --426 TJm -(and) 17.9327 Tj --426 TJm -(all) 17.9327 Tj -98.488 580.124 Td -(output) 35.8654 Tj --426 TJm -(in) 11.9551 Tj --426 TJm -(has) 17.9327 Tj --426 TJm -(been) 23.9102 Tj --426 TJm -(consumed,) 53.798 Tj --426 TJm -(eg) 11.9551 Tj --426 TJm -(s-->avail_out) 77.7083 Tj --426 TJm -(>) 5.9776 Tj --426 TJm -(0) 5.9776 Tj -90 568.169 Td -(BZ_OK) 29.8878 Tj -98.488 556.214 Td -(otherwise) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 518.755 Td -/F122_0 9.9626 Tf -(Allo) 17.7135 Tj -25 TJm -(w) 7.193 Tj -10 TJm -(able) 16.5977 Tj --250 TJm -(ne) 9.4047 Tj -15 TJm -(xt) 7.7509 Tj --250 TJm -(actions:) 30.9936 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 457.883] cm -0 0 468 59.776 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 509.29 Td -/F124_0 9.9626 Tf -(BZ2_bzDecompress) 95.641 Tj -98.488 497.335 Td -(if) 11.9551 Tj --426 TJm -(BZ_OK) 29.8878 Tj --426 TJm -(was) 17.9327 Tj --426 TJm -(returned) 47.8205 Tj -90 485.38 Td -(BZ2_bzDecompressEnd) 113.5736 Tj -98.488 473.425 Td -(otherwise) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 427.262 Td -/F116_0 17.2154 Tf -(3.3.6.) 43.0729 Tj --278 TJm -(BZ2_bzDecompressEnd) 197.0647 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 398.792] cm -0 0 468 23.91 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 414.334 Td -/F124_0 9.9626 Tf -(int) 17.9327 Tj --426 TJm -(BZ2_bzDecompressEnd) 113.5736 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(bz_stream) 53.798 Tj -298.259 412.59 Td -(*) 5.9776 Tj -304.236 414.334 Td -(strm) 23.9102 Tj --426 TJm -(\);) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 376.874 Td -/F122_0 9.9626 Tf -(Releases) 34.8591 Tj --250 TJm -(all) 9.9626 Tj --250 TJm -(memory) 33.2053 Tj --250 TJm -(associated) 40.9463 Tj --250 TJm -(with) 17.7135 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(decompression) 59.7656 Tj --250 TJm -(stream.) 29.0509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 354.956 Td -(Possible) 33.2153 Tj --250 TJm -(return) 23.7907 Tj --250 TJm -(v) 4.9813 Tj -25 TJm -(alues:) 23.2427 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 294.085] cm -0 0 468 59.776 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 345.492 Td -/F124_0 9.9626 Tf -(BZ_PARAM_ERROR) 83.6858 Tj -98.488 333.537 Td -(if) 11.9551 Tj --426 TJm -(strm) 23.9102 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(NULL) 23.9102 Tj --426 TJm -(or) 11.9551 Tj --426 TJm -(strm->s) 41.8429 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(NULL) 23.9102 Tj -90 321.581 Td -(BZ_OK) 29.8878 Tj -98.488 309.626 Td -(otherwise) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 272.167 Td -/F122_0 9.9626 Tf -(Allo) 17.7135 Tj -25 TJm -(w) 7.193 Tj -10 TJm -(able) 16.5977 Tj --250 TJm -(ne) 9.4047 Tj -15 TJm -(xt) 7.7509 Tj --250 TJm -(actions:) 30.9936 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 247.161] cm -0 0 468 23.91 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -98.488 262.702 Td -/F124_0 9.9626 Tf -(None.) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 212.408 Td -/F116_0 20.6585 Tf -(3.4.) 34.4584 Tj --278 TJm -(High-le) 70.0117 Tj -15 TJm -(vel) 28.7153 Tj --278 TJm -(interface) 86.1046 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 190.49 Td -/F122_0 9.9626 Tf -(This) 17.7135 Tj --250 TJm -(interf) 21.579 Tj -10 TJm -(ace) 13.2702 Tj --250 TJm -(pro) 13.2801 Tj -15 TJm -(vides) 21.031 Tj --250 TJm -(functions) 37.0808 Tj --250 TJm -(for) 11.6164 Tj --250 TJm -(reading) 29.8778 Tj --250 TJm -(and) 14.386 Tj --250 TJm -(writing) 28.782 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -300.292 190.49 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -332.67 190.49 Td -/F122_0 9.9626 Tf -(format) 26.5603 Tj --250 TJm -(\002les.) 19.0983 Tj --620 TJm -(First,) 20.7621 Tj --250 TJm -(some) 21.031 Tj --250 TJm -(general) 29.3199 Tj --250 TJm -(points.) 26.8492 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -74.491 158.609 Td -(\225) 3.4869 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --450 TJm -(All) 12.7322 Tj --353 TJm -(of) 8.2988 Tj --352 TJm -(the) 12.1743 Tj --353 TJm -(functions) 37.0808 Tj --352 TJm -(tak) 12.1743 Tj -10 TJm -(e) 4.4234 Tj --353 TJm -(an) 9.4047 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -199.726 158.609 Td -/F124_0 9.9626 Tf -(int) 17.9327 Tj -217.658 156.866 Td -(*) 5.9776 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -227.149 158.609 Td -/F122_0 9.9626 Tf -(\002rst) 15.5018 Tj --353 TJm -(ar) 7.7409 Tj -18 TJm -(gument,) 32.3785 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -289.871 158.609 Td -/F124_0 9.9626 Tf -(bzerror) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -331.715 158.609 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj --1236 TJm -(After) 21.0211 Tj --352 TJm -(each) 18.2515 Tj --353 TJm -(call,) 16.8766 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -413.457 158.609 Td -/F124_0 9.9626 Tf -(bzerror) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -458.813 158.609 Td -/F122_0 9.9626 Tf -(should) 26.5703 Tj --353 TJm -(be) 9.4047 Tj --352 TJm -(consulted) 38.1866 Tj -81.963 146.654 Td -(\002rst) 15.5018 Tj --371 TJm -(to) 7.7509 Tj --371 TJm -(determine) 39.8404 Tj --372 TJm -(the) 12.1743 Tj --371 TJm -(outcome) 34.3112 Tj --371 TJm -(of) 8.2988 Tj --371 TJm -(the) 12.1743 Tj --372 TJm -(call.) 16.8766 Tj --1347 TJm -(If) 6.6351 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -278.539 146.654 Td -/F124_0 9.9626 Tf -(bzerror) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -324.081 146.654 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -334.424 146.654 Td -/F124_0 9.9626 Tf -(BZ_OK) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -364.312 146.654 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --371 TJm -(the) 12.1743 Tj --372 TJm -(call) 14.386 Tj --371 TJm -(completed) 41.5042 Tj --371 TJm -(successfully) 48.6972 Tj -65 TJm -(,) 2.4907 Tj --402 TJm -(and) 14.386 Tj --371 TJm -(only) 17.7135 Tj -81.963 134.699 Td -(then) 17.1556 Tj --292 TJm -(should) 26.5703 Tj --293 TJm -(the) 12.1743 Tj --292 TJm -(return) 23.7907 Tj --292 TJm -(v) 4.9813 Tj -25 TJm -(alue) 16.5977 Tj --293 TJm -(of) 8.2988 Tj --292 TJm -(the) 12.1743 Tj --292 TJm -(function) 33.2053 Tj --293 TJm -(\(if) 9.4047 Tj --292 TJm -(an) 9.4047 Tj -15 TJm -(y\)) 8.2988 Tj --292 TJm -(be) 9.4047 Tj --293 TJm -(consulted.) 40.6773 Tj --874 TJm -(If) 6.6351 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -363.994 134.699 Td -/F124_0 9.9626 Tf -(bzerror) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -408.749 134.699 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -418.307 134.699 Td -/F124_0 9.9626 Tf -(BZ_IO_ERROR) 65.7532 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -484.06 134.699 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --292 TJm -(there) 19.9152 Tj --293 TJm -(w) 7.193 Tj -10 TJm -(as) 8.2988 Tj --292 TJm -(an) 9.4047 Tj -81.963 122.744 Td -(error) 19.3573 Tj --279 TJm -(reading/writ) 48.6972 Tj -1 TJm -(ing) 12.7322 Tj --279 TJm -(the) 12.1743 Tj --279 TJm -(underlying) 43.1679 Tj --278 TJm -(compressed) 47.0334 Tj --279 TJm -(\002le,) 15.2229 Tj --285 TJm -(and) 14.386 Tj --279 TJm -(you) 14.9439 Tj --279 TJm -(should) 26.5703 Tj --278 TJm -(then) 17.1556 Tj --279 TJm -(consult) 28.782 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -412.785 122.744 Td -/F124_0 9.9626 Tf -(errno) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -445.448 122.744 Td -/F122_0 9.9626 Tf -(/) 2.7696 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -450.993 122.744 Td -/F124_0 9.9626 Tf -(perror) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -489.634 122.744 Td -/F122_0 9.9626 Tf -(to) 7.7509 Tj --279 TJm -(determine) 39.8404 Tj -81.963 110.789 Td -(the) 12.1743 Tj --376 TJm -(cause) 22.1269 Tj --376 TJm -(of) 8.2988 Tj --377 TJm -(the) 12.1743 Tj --376 TJm -(dif) 11.0684 Tj -25 TJm -(\002culty) 25.4644 Tj -65 TJm -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -203.58 110.789 Td -/F124_0 9.9626 Tf -(bzerror) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -249.171 110.789 Td -/F122_0 9.9626 Tf -(may) 17.1556 Tj --376 TJm -(also) 16.0497 Tj --376 TJm -(be) 9.4047 Tj --377 TJm -(set) 11.0684 Tj --376 TJm -(to) 7.7509 Tj --376 TJm -(v) 4.9813 Tj -25 TJm -(arious) 24.3486 Tj --376 TJm -(other) 20.4731 Tj --377 TJm -(v) 4.9813 Tj -25 TJm -(alues;) 23.2427 Tj --439 TJm -(precise) 28.2141 Tj --376 TJm -(details) 26.0123 Tj --376 TJm -(are) 12.1643 Tj --377 TJm -(gi) 7.7509 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(en) 9.4047 Tj --376 TJm -(on) 9.9626 Tj --376 TJm -(a) 4.4234 Tj -81.963 98.834 Td -(per) 12.7222 Tj -20 TJm -(-function) 36.5229 Tj --250 TJm -(basis) 19.9252 Tj --250 TJm -(belo) 17.1556 Tj -25 TJm -(w) 7.193 Tj -65 TJm -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -534.414 50.951 Td -(18) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 19 22 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -419.067 749.245 Td -/F122_0 9.9626 Tf -(Programming) 54.7943 Tj --250 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -496.556 749.245 Td -/F124_0 9.9626 Tf -(libbzip2) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -74.491 710.037 Td -/F122_0 9.9626 Tf -(\225) 3.4869 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --450 TJm -(If) 6.6351 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -91.793 710.037 Td -/F124_0 9.9626 Tf -(bzerror) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -136.332 710.037 Td -/F122_0 9.9626 Tf -(indicates) 35.417 Tj --271 TJm -(an) 9.4047 Tj --270 TJm -(error) 19.3573 Tj --271 TJm -(\(ie,) 13.0012 Tj --276 TJm -(an) 9.4047 Tj -15 TJm -(ything) 25.4644 Tj --271 TJm -(e) 4.4234 Tj -15 TJm -(xcept) 21.579 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -290.317 710.037 Td -/F124_0 9.9626 Tf -(BZ_OK) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -322.901 710.037 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -339.984 710.037 Td -/F124_0 9.9626 Tf -(BZ_STREAM_END) 77.7083 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -417.693 710.037 Td -/F122_0 9.9626 Tf -(\),) 5.8082 Tj --271 TJm -(you) 14.9439 Tj --270 TJm -(should) 26.5703 Tj --271 TJm -(immediately) 49.813 Tj --271 TJm -(call) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -81.963 698.082 Td -/F124_0 9.9626 Tf -(BZ2_bzReadClose) 89.6634 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -173.971 698.082 Td -/F122_0 9.9626 Tf -(\(or) 11.6164 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -187.932 698.082 Td -/F124_0 9.9626 Tf -(BZ2_bzWriteClose) 95.641 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -283.573 698.082 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --238 TJm -(depending) 41.5042 Tj --236 TJm -(on) 9.9626 Tj --235 TJm -(whether) 32.0895 Tj --235 TJm -(you) 14.9439 Tj --236 TJm -(are) 12.1643 Tj --235 TJm -(attempting) 42.62 Tj --235 TJm -(to) 7.7509 Tj --236 TJm -(read) 17.1456 Tj --235 TJm -(or) 8.2988 Tj --235 TJm -(to) 7.7509 Tj --236 TJm -(write\)) 23.7907 Tj --235 TJm -(to) 7.7509 Tj -81.963 686.127 Td -(free) 15.4819 Tj --309 TJm -(up) 9.9626 Tj --309 TJm -(all) 9.9626 Tj --309 TJm -(resources) 37.6188 Tj --310 TJm -(associated) 40.9463 Tj --309 TJm -(with) 17.7135 Tj --309 TJm -(the) 12.1743 Tj --309 TJm -(stream.) 29.0509 Tj --975 TJm -(Once) 21.0211 Tj --309 TJm -(an) 9.4047 Tj --310 TJm -(error) 19.3573 Tj --309 TJm -(has) 13.2801 Tj --309 TJm -(been) 18.8094 Tj --309 TJm -(indicated,) 39.0135 Tj --324 TJm -(beha) 18.8094 Tj -20 TJm -(viour) 21.031 Tj --309 TJm -(of) 8.2988 Tj --309 TJm -(all) 9.9626 Tj --310 TJm -(calls) 18.2614 Tj --309 TJm -(e) 4.4234 Tj -15 TJm -(xcept) 21.579 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -81.963 674.172 Td -/F124_0 9.9626 Tf -(BZ2_bzReadClose) 89.6634 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -175.035 674.172 Td -/F122_0 9.9626 Tf -(\() 3.3175 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -178.352 674.172 Td -/F124_0 9.9626 Tf -(BZ2_bzWriteClose) 95.641 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -273.994 674.172 Td -/F122_0 9.9626 Tf -(\)) 3.3175 Tj --342 TJm -(is) 6.6451 Tj --342 TJm -(unde\002ned.) 41.7831 Tj --1173 TJm -(The) 15.4918 Tj --342 TJm -(implication) 45.3896 Tj --342 TJm -(is) 6.6451 Tj --342 TJm -(that) 14.9439 Tj --342 TJm -(\(1\)) 11.6164 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -455.366 674.172 Td -/F124_0 9.9626 Tf -(bzerror) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -500.617 674.172 Td -/F122_0 9.9626 Tf -(should) 26.5703 Tj --342 TJm -(be) 9.4047 Tj -81.963 662.217 Td -(check) 23.2328 Tj -10 TJm -(ed) 9.4047 Tj --331 TJm -(after) 18.2515 Tj --331 TJm -(each) 18.2515 Tj --331 TJm -(call,) 16.8766 Tj --351 TJm -(and) 14.386 Tj --331 TJm -(\(2\)) 11.6164 Tj --331 TJm -(if) 6.0871 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -223.255 662.217 Td -/F124_0 9.9626 Tf -(bzerror) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -268.396 662.217 Td -/F122_0 9.9626 Tf -(indicates) 35.417 Tj --331 TJm -(an) 9.4047 Tj --331 TJm -(error) 19.3573 Tj -40 TJm -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -344.762 662.217 Td -/F124_0 9.9626 Tf -(BZ2_bzReadClose) 89.6634 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -437.724 662.217 Td -/F122_0 9.9626 Tf -(\() 3.3175 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -441.041 662.217 Td -/F124_0 9.9626 Tf -(BZ2_bzWriteClose) 95.641 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -536.682 662.217 Td -/F122_0 9.9626 Tf -(\)) 3.3175 Tj -81.963 650.261 Td -(should) 26.5703 Tj --250 TJm -(then) 17.1556 Tj --250 TJm -(be) 9.4047 Tj --250 TJm -(called) 23.7907 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(clean) 21.0211 Tj --250 TJm -(up.) 12.4533 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -74.491 628.344 Td -(\225) 3.4869 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --450 TJm -(The) 15.4918 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -100.186 628.344 Td -/F124_0 9.9626 Tf -(FILE) 23.9102 Tj -124.097 626.6 Td -(*) 5.9776 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -132.308 628.344 Td -/F122_0 9.9626 Tf -(ar) 7.7409 Tj -18 TJm -(guments) 33.7633 Tj --224 TJm -(passed) 26.5603 Tj --224 TJm -(to) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -214.645 628.344 Td -/F124_0 9.9626 Tf -(BZ2_bzReadOpen) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -300.565 628.344 Td -/F122_0 9.9626 Tf -(/) 2.7696 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -305.569 628.344 Td -/F124_0 9.9626 Tf -(BZ2_bzWriteOpen) 89.6634 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -397.466 628.344 Td -/F122_0 9.9626 Tf -(should) 26.5703 Tj --224 TJm -(be) 9.4047 Tj --224 TJm -(set) 11.0684 Tj --225 TJm -(to) 7.7509 Tj --224 TJm -(binary) 25.4544 Tj --224 TJm -(mode.) 24.6275 Tj --603 TJm -(Most) 20.4831 Tj -81.963 616.389 Td -(Unix) 19.9252 Tj --269 TJm -(systems) 31.5516 Tj --270 TJm -(will) 15.5018 Tj --269 TJm -(do) 9.9626 Tj --269 TJm -(this) 14.396 Tj --270 TJm -(by) 9.9626 Tj --269 TJm -(def) 12.7222 Tj -10 TJm -(ault,) 17.4346 Tj --274 TJm -(b) 4.9813 Tj -20 TJm -(ut) 7.7509 Tj --270 TJm -(ot) 7.7509 Tj -1 TJm -(her) 12.7222 Tj --270 TJm -(platforms,) 40.6773 Tj --274 TJm -(including) 37.6387 Tj --269 TJm -(W) 9.4047 Tj -40 TJm -(indo) 17.7135 Tj -25 TJm -(ws) 11.0684 Tj --270 TJm -(and) 14.386 Tj --269 TJm -(Mac,) 20.1942 Tj --274 TJm -(will) 15.5018 Tj --270 TJm -(not.) 15.2229 Tj --736 TJm -(If) 6.6351 Tj --269 TJm -(you) 14.9439 Tj --269 TJm -(omit) 18.2714 Tj --270 TJm -(this,) 16.8866 Tj -81.963 604.433 Td -(you) 14.9439 Tj --250 TJm -(may) 17.1556 Tj --250 TJm -(encounter) 39.2825 Tj --250 TJm -(problems) 37.0808 Tj --250 TJm -(when) 21.579 Tj --250 TJm -(mo) 12.7322 Tj -15 TJm -(ving) 17.7135 Tj --250 TJm -(code) 18.8094 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(ne) 9.4047 Tj -25 TJm -(w) 7.193 Tj --250 TJm -(platforms.) 40.6773 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -74.491 582.516 Td -(\225) 3.4869 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --450 TJm -(Memory) 34.3112 Tj --369 TJm -(allocation) 39.2925 Tj --370 TJm -(requests) 32.6474 Tj --369 TJm -(are) 12.1643 Tj --370 TJm -(handled) 31.5416 Tj --369 TJm -(by) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -264.468 582.516 Td -/F124_0 9.9626 Tf -(malloc) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -304.014 582.516 Td -/F122_0 9.9626 Tf -(/) 2.7696 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -310.465 582.516 Td -/F124_0 9.9626 Tf -(free) 23.9102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -334.376 582.516 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj --1337 TJm -(At) 9.9626 Tj --370 TJm -(present) 28.772 Tj --369 TJm -(there) 19.9152 Tj --370 TJm -(is) 6.6451 Tj --369 TJm -(no) 9.9626 Tj --370 TJm -(f) 3.3175 Tj -10 TJm -(acility) 24.9065 Tj --369 TJm -(for) 11.6164 Tj --370 TJm -(user) 16.5977 Tj -20 TJm -(-de\002ned) 32.6474 Tj -81.963 570.56 Td -(memory) 33.2053 Tj --250 TJm -(allocators) 38.7346 Tj --250 TJm -(in) 7.7509 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(\002le) 12.7322 Tj --250 TJm -(I/O) 13.2801 Tj --250 TJm -(functions) 37.0808 Tj --250 TJm -(\(could) 25.4544 Tj --250 TJm -(easily) 23.2427 Tj --250 TJm -(be) 9.4047 Tj --250 TJm -(added,) 26.2813 Tj --250 TJm -(though\).) 33.4843 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 529.977 Td -/F116_0 17.2154 Tf -(3.4.1.) 43.0729 Tj --278 TJm -(BZ2_bzReadOpen) 147.3122 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 453.686] cm -0 0 468 71.731 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 517.048 Td -/F124_0 9.9626 Tf -(typedef) 41.8429 Tj --426 TJm -(void) 23.9102 Tj --426 TJm -(BZFILE;) 41.8429 Tj -90 493.138 Td -(BZFILE) 35.8654 Tj -130.109 491.394 Td -(*) 5.9776 Tj -136.087 493.138 Td -(BZ2_bzReadOpen\() 89.6634 Tj --426 TJm -(int) 17.9327 Tj -252.171 491.394 Td -(*) 5.9776 Tj -258.149 493.138 Td -(bzerror,) 47.8205 Tj --426 TJm -(FILE) 23.9102 Tj -338.368 491.394 Td -(*) 5.9776 Tj -344.346 493.138 Td -(f,) 11.9551 Tj -191.855 481.183 Td -(int) 17.9327 Tj --426 TJm -(verbosity,) 59.7756 Tj --426 TJm -(int) 17.9327 Tj --426 TJm -(small,) 35.8654 Tj -191.855 469.228 Td -(void) 23.9102 Tj -220.01 467.484 Td -(*) 5.9776 Tj -225.987 469.228 Td -(unused,) 41.8429 Tj --426 TJm -(int) 17.9327 Tj --426 TJm -(nUnused) 41.8429 Tj --426 TJm -(\);) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 431.768 Td -/F122_0 9.9626 Tf -(Prepare) 30.4258 Tj --290 TJm -(to) 7.7509 Tj --289 TJm -(read) 17.1456 Tj --290 TJm -(compressed) 47.0334 Tj --290 TJm -(data) 16.5977 Tj --289 TJm -(from) 19.3673 Tj --290 TJm -(\002le) 12.7322 Tj --289 TJm -(handle) 26.5603 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -272.697 431.768 Td -/F124_0 9.9626 Tf -(f) 5.9776 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -278.675 431.768 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -285.439 431.768 Td -/F124_0 9.9626 Tf -(f) 5.9776 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -294.302 431.768 Td -/F122_0 9.9626 Tf -(should) 26.5703 Tj --290 TJm -(refer) 18.7994 Tj --289 TJm -(to) 7.7509 Tj --290 TJm -(a) 4.4234 Tj --290 TJm -(\002le) 12.7322 Tj --289 TJm -(which) 24.3486 Tj --290 TJm -(has) 13.2801 Tj --290 TJm -(been) 18.8094 Tj --289 TJm -(opened) 28.772 Tj --290 TJm -(for) 11.6164 Tj --289 TJm -(reading,) 32.3685 Tj --300 TJm -(and) 14.386 Tj -72 419.813 Td -(for) 11.6164 Tj --306 TJm -(which) 24.3486 Tj --305 TJm -(the) 12.1743 Tj --306 TJm -(error) 19.3573 Tj --306 TJm -(indicator) 35.417 Tj --305 TJm -(\() 3.3175 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -193.457 419.813 Td -/F124_0 9.9626 Tf -(ferror\(f\)) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -247.255 419.813 Td -/F122_0 9.9626 Tf -(\)is) 9.9626 Tj --306 TJm -(not) 12.7322 Tj --305 TJm -(set.) 13.5591 Tj --954 TJm -(If) 6.6351 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -308.784 419.813 Td -/F124_0 9.9626 Tf -(small) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -341.717 419.813 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --306 TJm -(1,) 7.472 Tj --319 TJm -(the) 12.1743 Tj --306 TJm -(library) 26.5603 Tj --306 TJm -(wil) 12.7322 Tj -1 TJm -(l) 2.7696 Tj --306 TJm -(try) 11.0684 Tj --306 TJm -(to) 7.7509 Tj --305 TJm -(decompress) 47.0334 Tj --306 TJm -(using) 21.589 Tj --306 TJm -(less) 14.9439 Tj -72 407.858 Td -(memory) 33.2053 Tj -65 TJm -(,) 2.4907 Tj --250 TJm -(at) 7.193 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(e) 4.4234 Tj -15 TJm -(xpense) 27.6661 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(speed.) 25.1755 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 385.94 Td -(F) 5.5392 Tj -15 TJm -(or) 8.2988 Tj --227 TJm -(reasons) 29.8778 Tj --227 TJm -(e) 4.4234 Tj -15 TJm -(xplained) 34.3112 Tj --228 TJm -(belo) 17.1556 Tj -25 TJm -(w) 7.193 Tj -65 TJm -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -189.193 385.94 Td -/F124_0 9.9626 Tf -(BZ2_bzRead) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -251.232 385.94 Td -/F122_0 9.9626 Tf -(will) 15.5018 Tj --227 TJm -(decompress) 47.0334 Tj --227 TJm -(the) 12.1743 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -332.732 385.94 Td -/F124_0 9.9626 Tf -(nUnused) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -376.838 385.94 Td -/F122_0 9.9626 Tf -(bytes) 21.031 Tj --227 TJm -(starting) 29.8878 Tj --227 TJm -(at) 7.193 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -441.74 385.94 Td -/F124_0 9.9626 Tf -(unused) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -477.605 385.94 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --232 TJm -(before) 25.4445 Tj --227 TJm -(starting) 29.8878 Tj -72 373.985 Td -(to) 7.7509 Tj --280 TJm -(read) 17.1456 Tj --279 TJm -(from) 19.3673 Tj --280 TJm -(the) 12.1743 Tj --279 TJm -(\002le) 12.7322 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -155.094 373.985 Td -/F124_0 9.9626 Tf -(f) 5.9776 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -161.072 373.985 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj --797 TJm -(At) 9.9626 Tj --280 TJm -(most) 19.3773 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -206.414 373.985 Td -/F124_0 9.9626 Tf -(BZ_MAX_UNUSED) 77.7083 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -286.907 373.985 Td -/F122_0 9.9626 Tf -(bytes) 21.031 Tj --280 TJm -(may) 17.1556 Tj --279 TJm -(be) 9.4047 Tj --280 TJm -(supplied) 33.7633 Tj --279 TJm -(lik) 10.5205 Tj -10 TJm -(e) 4.4234 Tj --280 TJm -(this.) 16.8866 Tj --797 TJm -(If) 6.6351 Tj --279 TJm -(this) 14.396 Tj --280 TJm -(f) 3.3175 Tj -10 TJm -(acility) 24.9065 Tj --279 TJm -(is) 6.6451 Tj --280 TJm -(not) 12.7322 Tj --279 TJm -(required,) 35.686 Tj -72 362.03 Td -(you) 14.9439 Tj --250 TJm -(should) 26.5703 Tj --250 TJm -(pass) 17.1556 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -138.141 362.03 Td -/F124_0 9.9626 Tf -(NULL) 23.9102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -164.542 362.03 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -181.419 362.03 Td -/F124_0 9.9626 Tf -(0) 5.9776 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -189.887 362.03 Td -/F122_0 9.9626 Tf -(for) 11.6164 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -203.994 362.03 Td -/F124_0 9.9626 Tf -(unused) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -242.35 362.03 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj --250 TJm -(n) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -264.208 362.03 Td -/F124_0 9.9626 Tf -(Unused) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -302.565 362.03 Td -/F122_0 9.9626 Tf -(respecti) 30.9837 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(ely) 12.1743 Tj -65 TJm -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 340.112 Td -(F) 5.5392 Tj -15 TJm -(or) 8.2988 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(meaning) 34.3112 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(parameters) 43.7059 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -196.631 340.112 Td -/F124_0 9.9626 Tf -(small) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -229.01 340.112 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -245.887 340.112 Td -/F124_0 9.9626 Tf -(verbosity) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -299.685 340.112 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --250 TJm -(see) 12.7222 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -319.879 340.112 Td -/F124_0 9.9626 Tf -(BZ2_bzDecompressInit) 119.5512 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -439.431 340.112 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 318.194 Td -(The) 15.4918 Tj --402 TJm -(amount) 29.8878 Tj --402 TJm -(of) 8.2988 Tj --402 TJm -(memory) 33.2053 Tj --402 TJm -(needed) 28.2141 Tj --402 TJm -(to) 7.7509 Tj --402 TJm -(decompress) 47.0334 Tj --402 TJm -(a) 4.4234 Tj --401 TJm -(\002le) 12.7322 Tj --402 TJm -(cannot) 26.5603 Tj --402 TJm -(be) 9.4047 Tj --402 TJm -(determined) 44.8217 Tj --402 TJm -(until) 18.2714 Tj --402 TJm -(the) 12.1743 Tj --402 TJm -(\002le') 16.0497 Tj -55 TJm -(s) 3.8755 Tj --402 TJm -(header) 26.5503 Tj --402 TJm -(has) 13.2801 Tj --402 TJm -(been) 18.8094 Tj --402 TJm -(read.) 19.6363 Tj -72 306.239 Td -(So) 10.5205 Tj --492 TJm -(it) 5.5392 Tj --491 TJm -(is) 6.6451 Tj --492 TJm -(possible) 32.6574 Tj --492 TJm -(that) 14.9439 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -166.797 306.239 Td -/F124_0 9.9626 Tf -(BZ2_bzReadOpen) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -255.381 306.239 Td -/F122_0 9.9626 Tf -(returns) 27.6661 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -287.946 306.239 Td -/F124_0 9.9626 Tf -(BZ_OK) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -322.729 306.239 Td -/F122_0 9.9626 Tf -(b) 4.9813 Tj -20 TJm -(ut) 7.7509 Tj --492 TJm -(a) 4.4234 Tj --491 TJm -(subsequent) 44.2738 Tj --492 TJm -(call) 14.386 Tj --492 TJm -(of) 8.2988 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -431.135 306.239 Td -/F124_0 9.9626 Tf -(BZ2_bzRead) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -495.81 306.239 Td -/F122_0 9.9626 Tf -(will) 15.5018 Tj --492 TJm -(return) 23.7907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 294.284 Td -/F124_0 9.9626 Tf -(BZ_MEM_ERROR) 71.7307 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -143.731 294.284 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 272.366 Td -(Possible) 33.2153 Tj --250 TJm -(assignments) 48.7072 Tj --250 TJm -(to) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -169.144 272.366 Td -/F124_0 9.9626 Tf -(bzerror) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -210.987 272.366 Td -/F122_0 9.9626 Tf -(:) 2.7696 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 101.84] cm -0 0 468 167.372 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 260.844 Td -/F124_0 9.9626 Tf -(BZ_CONFIG_ERROR) 89.6634 Tj -98.488 248.889 Td -(if) 11.9551 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(library) 41.8429 Tj --426 TJm -(has) 17.9327 Tj --426 TJm -(been) 23.9102 Tj --426 TJm -(mis-compiled) 71.7307 Tj -90 236.934 Td -(BZ_PARAM_ERROR) 83.6858 Tj -98.488 224.979 Td -(if) 11.9551 Tj --426 TJm -(f) 5.9776 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(NULL) 23.9102 Tj -98.488 213.023 Td -(or) 11.9551 Tj --426 TJm -(small) 29.8878 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(neither) 41.8429 Tj --426 TJm -(0) 5.9776 Tj --426 TJm -(nor) 17.9327 Tj --426 TJm -(1) 5.9776 Tj -98.488 201.068 Td -(or) 11.9551 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(unused) 35.8654 Tj --426 TJm -(==) 11.9551 Tj --426 TJm -(NULL) 23.9102 Tj --426 TJm -(&&) 11.9551 Tj --426 TJm -(nUnused) 41.8429 Tj --426 TJm -(!=) 11.9551 Tj --426 TJm -(0) 5.9776 Tj --426 TJm -(\)) 5.9776 Tj -98.488 189.113 Td -(or) 11.9551 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(unused) 35.8654 Tj --426 TJm -(!=) 11.9551 Tj --426 TJm -(NULL) 23.9102 Tj --426 TJm -(&&) 11.9551 Tj --426 TJm -(!\(0) 17.9327 Tj --426 TJm -(<=) 11.9551 Tj --426 TJm -(nUnused) 41.8429 Tj --426 TJm -(<=) 11.9551 Tj --426 TJm -(BZ_MAX_UNUSED\)) 83.6858 Tj --426 TJm -(\)) 5.9776 Tj -90 177.158 Td -(BZ_IO_ERROR) 65.7532 Tj -98.488 165.203 Td -(if) 11.9551 Tj --426 TJm -(ferror\(f\)) 53.798 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(nonzero) 41.8429 Tj -90 153.248 Td -(BZ_MEM_ERROR) 71.7307 Tj -98.488 141.292 Td -(if) 11.9551 Tj --426 TJm -(insufficient) 71.7307 Tj --426 TJm -(memory) 35.8654 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(available) 53.798 Tj -90 129.337 Td -(BZ_OK) 29.8878 Tj -98.488 117.382 Td -(otherwise.) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 79.922 Td -/F122_0 9.9626 Tf -(Possible) 33.2153 Tj --250 TJm -(return) 23.7907 Tj --250 TJm -(v) 4.9813 Tj -25 TJm -(alues:) 23.2427 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -534.414 51.071 Td -(19) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 20 23 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -419.067 749.245 Td -/F122_0 9.9626 Tf -(Programming) 54.7943 Tj --250 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -496.556 749.245 Td -/F124_0 9.9626 Tf -(libbzip2) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 660.224] cm -0 0 468 59.776 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 711.631 Td -/F124_0 9.9626 Tf -(Pointer) 41.8429 Tj --426 TJm -(to) 11.9551 Tj --426 TJm -(an) 11.9551 Tj --426 TJm -(abstract) 47.8205 Tj --426 TJm -(BZFILE) 35.8654 Tj -98.488 699.676 Td -(if) 11.9551 Tj --426 TJm -(bzerror) 41.8429 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(BZ_OK) 29.8878 Tj -90 687.721 Td -(NULL) 23.9102 Tj -98.488 675.766 Td -(otherwise) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 638.306 Td -/F122_0 9.9626 Tf -(Allo) 17.7135 Tj -25 TJm -(w) 7.193 Tj -10 TJm -(able) 16.5977 Tj --250 TJm -(ne) 9.4047 Tj -15 TJm -(xt) 7.7509 Tj --250 TJm -(actions:) 30.9936 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 577.435] cm -0 0 468 59.776 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 628.842 Td -/F124_0 9.9626 Tf -(BZ2_bzRead) 59.7756 Tj -98.488 616.887 Td -(if) 11.9551 Tj --426 TJm -(bzerror) 41.8429 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(BZ_OK) 29.8878 Tj -90 604.932 Td -(BZ2_bzClose) 65.7532 Tj -98.488 592.976 Td -(otherwise) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 546.814 Td -/F116_0 17.2154 Tf -(3.4.2.) 43.0729 Tj --278 TJm -(BZ2_bzRead) 103.3096 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 519.841] cm -0 0 468 23.91 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 535.383 Td -/F124_0 9.9626 Tf -(int) 17.9327 Tj --426 TJm -(BZ2_bzRead) 59.7756 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(int) 17.9327 Tj -208.595 533.639 Td -(*) 5.9776 Tj -214.572 535.383 Td -(bzerror,) 47.8205 Tj --426 TJm -(BZFILE) 35.8654 Tj -306.747 533.639 Td -(*) 5.9776 Tj -312.724 535.383 Td -(b,) 11.9551 Tj --426 TJm -(void) 23.9102 Tj -357.078 533.639 Td -(*) 5.9776 Tj -363.055 535.383 Td -(buf,) 23.9102 Tj --426 TJm -(int) 17.9327 Tj --426 TJm -(len) 17.9327 Tj --426 TJm -(\);) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 497.923 Td -/F122_0 9.9626 Tf -(Reads) 24.3486 Tj --285 TJm -(up) 9.9626 Tj --284 TJm -(to) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -122.569 497.923 Td -/F124_0 9.9626 Tf -(len) 17.9327 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -143.337 497.923 Td -/F122_0 9.9626 Tf -(\(uncompressed\)) 63.6311 Tj --285 TJm -(bytes) 21.031 Tj --284 TJm -(from) 19.3673 Tj --285 TJm -(the) 12.1743 Tj --284 TJm -(compressed) 47.0334 Tj --285 TJm -(\002le) 12.7322 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -336.319 497.923 Td -/F124_0 9.9626 Tf -(b) 5.9776 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -345.132 497.923 Td -/F122_0 9.9626 Tf -(into) 15.5018 Tj --285 TJm -(the) 12.1743 Tj --284 TJm -(b) 4.9813 Tj -20 TJm -(uf) 8.2988 Tj -25 TJm -(fer) 11.0585 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -405.205 497.923 Td -/F124_0 9.9626 Tf -(buf) 17.9327 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -423.137 497.923 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj --828 TJm -(If) 6.6351 Tj --284 TJm -(the) 12.1743 Tj --285 TJm -(read) 17.1456 Tj --285 TJm -(w) 7.193 Tj -10 TJm -(as) 8.2988 Tj --284 TJm -(successful,) 43.4369 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 485.968 Td -/F124_0 9.9626 Tf -(bzerror) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -117.36 485.968 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --353 TJm -(set) 11.0684 Tj --353 TJm -(to) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -153.374 485.968 Td -/F124_0 9.9626 Tf -(BZ_OK) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -186.778 485.968 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj --353 TJm -(the) 12.1743 Tj --353 TJm -(number) 30.4357 Tj --353 TJm -(of) 8.2988 Tj --353 TJm -(bytes) 21.031 Tj --353 TJm -(read) 17.1456 Tj --353 TJm -(is) 6.6451 Tj --353 TJm -(returned.) 35.686 Tj --1238 TJm -(If) 6.6351 Tj --353 TJm -(the) 12.1743 Tj --353 TJm -(logical) 27.1182 Tj --353 TJm -(end-of-stream) 55.8802 Tj --353 TJm -(w) 7.193 Tj -10 TJm -(as) 8.2988 Tj --353 TJm -(detected,) 35.686 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 474.013 Td -/F124_0 9.9626 Tf -(bzerror) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -116.795 474.013 Td -/F122_0 9.9626 Tf -(will) 15.5018 Tj --296 TJm -(be) 9.4047 Tj --297 TJm -(set) 11.0684 Tj --296 TJm -(to) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -172.328 474.013 Td -/F124_0 9.9626 Tf -(BZ_STREAM_END) 77.7083 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -250.037 474.013 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --296 TJm -(and) 14.386 Tj --297 TJm -(the) 12.1743 Tj --296 TJm -(number) 30.4357 Tj --296 TJm -(of) 8.2988 Tj --297 TJm -(bytes) 21.031 Tj --296 TJm -(read) 17.1456 Tj --296 TJm -(is) 6.6451 Tj --296 TJm -(returned.) 35.686 Tj --898 TJm -(All) 12.7322 Tj --297 TJm -(other) 20.4731 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -470 474.013 Td -/F124_0 9.9626 Tf -(bzerror) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -514.795 474.013 Td -/F122_0 9.9626 Tf -(v) 4.9813 Tj -25 TJm -(alues) 20.4731 Tj -72 462.058 Td -(denote) 26.5603 Tj --250 TJm -(an) 9.4047 Tj --250 TJm -(error) 19.3573 Tj -55 TJm -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 440.14 Td -/F124_0 9.9626 Tf -(BZ2_bzRead) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -134.224 440.14 Td -/F122_0 9.9626 Tf -(will) 15.5018 Tj --246 TJm -(supply) 26.5703 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -181.193 440.14 Td -/F124_0 9.9626 Tf -(len) 17.9327 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -201.575 440.14 Td -/F122_0 9.9626 Tf -(bytes,) 23.5217 Tj --247 TJm -(unless) 24.9065 Tj --245 TJm -(the) 12.1743 Tj --246 TJm -(logical) 27.1182 Tj --246 TJm -(stream) 26.5603 Tj --246 TJm -(end) 14.386 Tj --245 TJm -(is) 6.6451 Tj --246 TJm -(detected) 33.1954 Tj --246 TJm -(or) 8.2988 Tj --246 TJm -(an) 9.4047 Tj --245 TJm -(error) 19.3573 Tj --246 TJm -(occurs.) 28.493 Tj --617 TJm -(Because) 33.1954 Tj --246 TJm -(of) 8.2988 Tj --246 TJm -(this,) 16.8866 Tj --247 TJm -(it) 5.5392 Tj -72 428.185 Td -(is) 6.6451 Tj --231 TJm -(possible) 32.6574 Tj --231 TJm -(to) 7.7509 Tj --231 TJm -(detect) 23.7907 Tj --231 TJm -(the) 12.1743 Tj --231 TJm -(stream) 26.5603 Tj --231 TJm -(end) 14.386 Tj --232 TJm -(by) 9.9626 Tj --231 TJm -(observing) 39.2925 Tj --231 TJm -(when) 21.579 Tj --231 TJm -(the) 12.1743 Tj --231 TJm -(number) 30.4357 Tj --231 TJm -(of) 8.2988 Tj --231 TJm -(bytes) 21.031 Tj --231 TJm -(returned) 33.1954 Tj --231 TJm -(is) 6.6451 Tj --231 TJm -(less) 14.9439 Tj --231 TJm -(than) 17.1556 Tj --232 TJm -(the) 12.1743 Tj --231 TJm -(number) 30.4357 Tj --231 TJm -(requested.) 40.6673 Tj -72 416.23 Td -(Ne) 11.6164 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(ertheless,) 37.3498 Tj --309 TJm -(this) 14.396 Tj --297 TJm -(is) 6.6451 Tj --298 TJm -(re) 7.7409 Tj -15 TJm -(g) 4.9813 Tj -5 TJm -(arded) 22.1269 Tj --297 TJm -(as) 8.2988 Tj --297 TJm -(inadvisable;) 48.1492 Tj --321 TJm -(you) 14.9439 Tj --298 TJm -(should) 26.5703 Tj --297 TJm -(instead) 28.224 Tj --297 TJm -(check) 23.2328 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -360.631 416.23 Td -/F124_0 9.9626 Tf -(bzerror) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -405.437 416.23 Td -/F122_0 9.9626 Tf -(after) 18.2515 Tj --297 TJm -(e) 4.4234 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(ery) 12.7222 Tj --298 TJm -(call) 14.386 Tj --297 TJm -(and) 14.386 Tj --297 TJm -(w) 7.193 Tj -10 TJm -(atch) 16.5977 Tj --298 TJm -(out) 12.7322 Tj --297 TJm -(for) 11.6164 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 404.275 Td -/F124_0 9.9626 Tf -(BZ_STREAM_END) 77.7083 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -149.709 404.275 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 382.357 Td -(Internally) 38.7346 Tj -65 TJm -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -117.541 382.357 Td -/F124_0 9.9626 Tf -(BZ2_bzRead) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -181.786 382.357 Td -/F122_0 9.9626 Tf -(copies) 25.4544 Tj --449 TJm -(data) 16.5977 Tj --448 TJm -(from) 19.3673 Tj --449 TJm -(the) 12.1743 Tj --448 TJm -(compressed) 47.0334 Tj --449 TJm -(\002le) 12.7322 Tj --449 TJm -(in) 7.7509 Tj --448 TJm -(chunks) 28.224 Tj --449 TJm -(of) 8.2988 Tj --448 TJm -(size) 15.4918 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -419.602 382.357 Td -/F124_0 9.9626 Tf -(BZ_MAX_UNUSED) 77.7083 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -501.778 382.357 Td -/F122_0 9.9626 Tf -(bytes) 21.031 Tj --449 TJm -(be-) 12.7222 Tj -72 370.402 Td -(fore) 16.0398 Tj --414 TJm -(decompressing) 59.7656 Tj --414 TJm -(it.) 8.0299 Tj --1605 TJm -(If) 6.6351 Tj --415 TJm -(the) 12.1743 Tj --414 TJm -(\002le) 12.7322 Tj --414 TJm -(contains) 33.2053 Tj --414 TJm -(more) 20.4731 Tj --414 TJm -(bytes) 21.031 Tj --415 TJm -(than) 17.1556 Tj --414 TJm -(strictly) 27.6761 Tj --414 TJm -(needed) 28.2141 Tj --414 TJm -(to) 7.7509 Tj --414 TJm -(reach) 21.569 Tj --414 TJm -(the) 12.1743 Tj --415 TJm -(logical) 27.1182 Tj --414 TJm -(end-of-stream,) 58.3709 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 358.446 Td -/F124_0 9.9626 Tf -(BZ2_bzRead) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -134.749 358.446 Td -/F122_0 9.9626 Tf -(will) 15.5018 Tj --298 TJm -(almost) 26.5703 Tj --299 TJm -(certainly) 34.8591 Tj --298 TJm -(read) 17.1456 Tj --299 TJm -(some) 21.031 Tj --298 TJm -(of) 8.2988 Tj --299 TJm -(the) 12.1743 Tj --298 TJm -(trailing) 28.782 Tj --299 TJm -(data) 16.5977 Tj --298 TJm -(before) 25.4445 Tj --298 TJm -(signalling) 39.3025 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -413.162 358.446 Td -/F124_0 9.9626 Tf -(BZ_SEQUENCE_END) 89.6634 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -502.826 358.446 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj --597 TJm -(T) 6.0871 Tj -80 TJm -(o) 4.9813 Tj --298 TJm -(col-) 15.4918 Tj -72 346.491 Td -(lect) 14.386 Tj --242 TJm -(the) 12.1743 Tj --242 TJm -(read) 17.1456 Tj --243 TJm -(b) 4.9813 Tj -20 TJm -(ut) 7.7509 Tj --242 TJm -(unused) 28.224 Tj --242 TJm -(data) 16.5977 Tj --242 TJm -(once) 18.8094 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -208.759 346.491 Td -/F124_0 9.9626 Tf -(BZ_SEQUENCE_END) 89.6634 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -300.835 346.491 Td -/F122_0 9.9626 Tf -(has) 13.2801 Tj --242 TJm -(appeared,) 38.4457 Tj --244 TJm -(call) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -374.201 346.491 Td -/F124_0 9.9626 Tf -(BZ2_bzReadGetUnused) 113.5736 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -490.188 346.491 Td -/F122_0 9.9626 Tf -(immediately) 49.813 Tj -72 334.536 Td -(before) 25.4445 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -99.935 334.536 Td -/F124_0 9.9626 Tf -(BZ2_bzReadClose) 89.6634 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -189.599 334.536 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 312.618 Td -(Possible) 33.2153 Tj --250 TJm -(assignments) 48.7072 Tj --250 TJm -(to) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -169.144 312.618 Td -/F124_0 9.9626 Tf -(bzerror) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -210.987 312.618 Td -/F122_0 9.9626 Tf -(:) 2.7696 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -534.414 50.951 Td -(20) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 21 24 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -419.067 749.245 Td -/F122_0 9.9626 Tf -(Programming) 54.7943 Tj --250 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -496.556 749.245 Td -/F124_0 9.9626 Tf -(libbzip2) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 456.986] cm -0 0 468 263.014 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 711.631 Td -/F124_0 9.9626 Tf -(BZ_PARAM_ERROR) 83.6858 Tj -98.488 699.676 Td -(if) 11.9551 Tj --426 TJm -(b) 5.9776 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(NULL) 23.9102 Tj --426 TJm -(or) 11.9551 Tj --426 TJm -(buf) 17.9327 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(NULL) 23.9102 Tj --426 TJm -(or) 11.9551 Tj --426 TJm -(len) 17.9327 Tj --426 TJm -(<) 5.9776 Tj --426 TJm -(0) 5.9776 Tj -90 687.721 Td -(BZ_SEQUENCE_ERROR) 101.6185 Tj -98.488 675.766 Td -(if) 11.9551 Tj --426 TJm -(b) 5.9776 Tj --426 TJm -(was) 17.9327 Tj --426 TJm -(opened) 35.8654 Tj --426 TJm -(with) 23.9102 Tj --426 TJm -(BZ2_bzWriteOpen) 89.6634 Tj -90 663.811 Td -(BZ_IO_ERROR) 65.7532 Tj -98.488 651.856 Td -(if) 11.9551 Tj --426 TJm -(there) 29.8878 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(an) 11.9551 Tj --426 TJm -(error) 29.8878 Tj --426 TJm -(reading) 41.8429 Tj --426 TJm -(from) 23.9102 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(compressed) 59.7756 Tj --426 TJm -(file) 23.9102 Tj -90 639.9 Td -(BZ_UNEXPECTED_EOF) 101.6185 Tj -98.488 627.945 Td -(if) 11.9551 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(compressed) 59.7756 Tj --426 TJm -(file) 23.9102 Tj --426 TJm -(ended) 29.8878 Tj --426 TJm -(before) 35.8654 Tj -98.488 615.99 Td -(the) 17.9327 Tj --426 TJm -(logical) 41.8429 Tj --426 TJm -(end-of-stream) 77.7083 Tj --426 TJm -(was) 17.9327 Tj --426 TJm -(detected) 47.8205 Tj -90 604.035 Td -(BZ_DATA_ERROR) 77.7083 Tj -98.488 592.08 Td -(if) 11.9551 Tj --426 TJm -(a) 5.9776 Tj --426 TJm -(data) 23.9102 Tj --426 TJm -(integrity) 53.798 Tj --426 TJm -(error) 29.8878 Tj --426 TJm -(was) 17.9327 Tj --426 TJm -(detected) 47.8205 Tj --426 TJm -(in) 11.9551 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(compressed) 59.7756 Tj --426 TJm -(stream) 35.8654 Tj -90 580.124 Td -(BZ_DATA_ERROR_MAGIC) 113.5736 Tj -98.488 568.169 Td -(if) 11.9551 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(stream) 35.8654 Tj --426 TJm -(does) 23.9102 Tj --426 TJm -(not) 17.9327 Tj --426 TJm -(begin) 29.8878 Tj --426 TJm -(with) 23.9102 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(requisite) 53.798 Tj --426 TJm -(header) 35.8654 Tj --426 TJm -(bytes) 29.8878 Tj -98.488 556.214 Td -(\(ie,) 23.9102 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(not) 17.9327 Tj --426 TJm -(a) 5.9776 Tj --426 TJm -(bzip2) 29.8878 Tj --426 TJm -(data) 23.9102 Tj --426 TJm -(file\).) 35.8654 Tj --852 TJm -(This) 23.9102 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(really) 35.8654 Tj -98.488 544.259 Td -(a) 5.9776 Tj --426 TJm -(special) 41.8429 Tj --426 TJm -(case) 23.9102 Tj --426 TJm -(of) 11.9551 Tj --426 TJm -(BZ_DATA_ERROR.) 83.6858 Tj -90 532.304 Td -(BZ_MEM_ERROR) 71.7307 Tj -98.488 520.349 Td -(if) 11.9551 Tj --426 TJm -(insufficient) 71.7307 Tj --426 TJm -(memory) 35.8654 Tj --426 TJm -(was) 17.9327 Tj --426 TJm -(available) 53.798 Tj -90 508.393 Td -(BZ_STREAM_END) 77.7083 Tj -98.488 496.438 Td -(if) 11.9551 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(logical) 41.8429 Tj --426 TJm -(end) 17.9327 Tj --426 TJm -(of) 11.9551 Tj --426 TJm -(stream) 35.8654 Tj --426 TJm -(was) 17.9327 Tj --426 TJm -(detected.) 53.798 Tj -90 484.483 Td -(BZ_OK) 29.8878 Tj -98.488 472.528 Td -(otherwise.) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 435.068 Td -/F122_0 9.9626 Tf -(Possible) 33.2153 Tj --250 TJm -(return) 23.7907 Tj --250 TJm -(v) 4.9813 Tj -25 TJm -(alues:) 23.2427 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 374.197] cm -0 0 468 59.776 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 425.604 Td -/F124_0 9.9626 Tf -(number) 35.8654 Tj --426 TJm -(of) 11.9551 Tj --426 TJm -(bytes) 29.8878 Tj --426 TJm -(read) 23.9102 Tj -98.488 413.649 Td -(if) 11.9551 Tj --426 TJm -(bzerror) 41.8429 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(BZ_OK) 29.8878 Tj --426 TJm -(or) 11.9551 Tj --426 TJm -(BZ_STREAM_END) 77.7083 Tj -90 401.694 Td -(undefined) 53.798 Tj -98.488 389.739 Td -(otherwise) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 352.279 Td -/F122_0 9.9626 Tf -(Allo) 17.7135 Tj -25 TJm -(w) 7.193 Tj -10 TJm -(able) 16.5977 Tj --250 TJm -(ne) 9.4047 Tj -15 TJm -(xt) 7.7509 Tj --250 TJm -(actions:) 30.9936 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 267.497] cm -0 0 468 83.686 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 342.815 Td -/F124_0 9.9626 Tf -(collect) 41.8429 Tj --426 TJm -(data) 23.9102 Tj --426 TJm -(from) 23.9102 Tj --426 TJm -(buf,) 23.9102 Tj --426 TJm -(then) 23.9102 Tj --426 TJm -(BZ2_bzRead) 59.7756 Tj --426 TJm -(or) 11.9551 Tj --426 TJm -(BZ2_bzReadClose) 89.6634 Tj -98.488 330.859 Td -(if) 11.9551 Tj --426 TJm -(bzerror) 41.8429 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(BZ_OK) 29.8878 Tj -90 318.904 Td -(collect) 41.8429 Tj --426 TJm -(data) 23.9102 Tj --426 TJm -(from) 23.9102 Tj --426 TJm -(buf,) 23.9102 Tj --426 TJm -(then) 23.9102 Tj --426 TJm -(BZ2_bzReadClose) 89.6634 Tj --426 TJm -(or) 11.9551 Tj --426 TJm -(BZ2_bzReadGetUnused) 113.5736 Tj -98.488 306.949 Td -(if) 11.9551 Tj --426 TJm -(bzerror) 41.8429 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(BZ_SEQUENCE_END) 89.6634 Tj -90 294.994 Td -(BZ2_bzReadClose) 89.6634 Tj -98.488 283.039 Td -(otherwise) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 236.876 Td -/F116_0 17.2154 Tf -(3.4.3.) 43.0729 Tj --278 TJm -(BZ2_bzReadGetUn) 154.9558 Tj -10 TJm -(used) 40.1807 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 197.948] cm -0 0 468 35.866 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 225.445 Td -/F124_0 9.9626 Tf -(void) 23.9102 Tj --426 TJm -(BZ2_bzReadGetUnused\() 119.5512 Tj --426 TJm -(int) 17.9327 Tj -259.883 223.702 Td -(*) 5.9776 Tj -270.104 225.445 Td -(bzerror,) 47.8205 Tj --426 TJm -(BZFILE) 35.8654 Tj -362.278 223.702 Td -(*) 5.9776 Tj -368.256 225.445 Td -(b,) 11.9551 Tj -200.343 213.49 Td -(void) 23.9102 Tj -224.254 211.747 Td -(**) 11.9551 Tj -240.453 213.49 Td -(unused,) 41.8429 Tj --426 TJm -(int) 17.9327 Tj -304.473 211.747 Td -(*) 5.9776 Tj -314.694 213.49 Td -(nUnused) 41.8429 Tj --426 TJm -(\);) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 176.031 Td -/F122_0 9.9626 Tf -(Returns) 30.9936 Tj --435 TJm -(data) 16.5977 Tj --435 TJm -(which) 24.3486 Tj --435 TJm -(w) 7.193 Tj -10 TJm -(as) 8.2988 Tj --435 TJm -(read) 17.1456 Tj --435 TJm -(from) 19.3673 Tj --435 TJm -(the) 12.1743 Tj --435 TJm -(compressed) 47.0334 Tj --435 TJm -(\002le) 12.7322 Tj --435 TJm -(b) 4.9813 Tj -20 TJm -(ut) 7.7509 Tj --435 TJm -(w) 7.193 Tj -10 TJm -(as) 8.2988 Tj --435 TJm -(not) 12.7322 Tj --435 TJm -(needed) 28.2141 Tj --435 TJm -(to) 7.7509 Tj --435 TJm -(get) 12.1743 Tj --435 TJm -(to) 7.7509 Tj --435 TJm -(the) 12.1743 Tj --435 TJm -(logical) 27.1182 Tj --435 TJm -(end-of-stream.) 58.3709 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 162.332 Td -/F124_0 9.9626 Tf -(*) 5.9776 Tj -77.978 164.075 Td -(unused) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -117.2 164.075 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --337 TJm -(set) 11.0684 Tj --337 TJm -(to) 7.7509 Tj --337 TJm -(the) 12.1743 Tj --337 TJm -(address) 29.8778 Tj --337 TJm -(of) 8.2988 Tj --336 TJm -(the) 12.1743 Tj --337 TJm -(data,) 19.0883 Tj --359 TJm -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -269.089 162.332 Td -/F124_0 9.9626 Tf -(*) 5.9776 Tj -275.067 164.075 Td -(nUnused) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -320.267 164.075 Td -/F122_0 9.9626 Tf -(to) 7.7509 Tj --337 TJm -(the) 12.1743 Tj --337 TJm -(number) 30.4357 Tj --337 TJm -(of) 8.2988 Tj --337 TJm -(bytes.) 23.5217 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -427.247 162.332 Td -/F124_0 9.9626 Tf -(*) 5.9776 Tj -433.225 164.075 Td -(nUnused) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -478.425 164.075 Td -/F122_0 9.9626 Tf -(will) 15.5018 Tj --337 TJm -(be) 9.4047 Tj --337 TJm -(set) 11.0684 Tj --337 TJm -(to) 7.7509 Tj --337 TJm -(a) 4.4234 Tj -72 152.12 Td -(v) 4.9813 Tj -25 TJm -(alue) 16.5977 Tj --250 TJm -(between) 33.1954 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -131.506 152.12 Td -/F124_0 9.9626 Tf -(0) 5.9776 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -139.975 152.12 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -156.851 152.12 Td -/F124_0 9.9626 Tf -(BZ_MAX_UNUSED) 77.7083 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -237.05 152.12 Td -/F122_0 9.9626 Tf -(inclusi) 26.5703 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(e.) 6.914 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 130.202 Td -(This) 17.7135 Tj --882 TJm -(function) 33.2053 Tj --883 TJm -(may) 17.1556 Tj --882 TJm -(only) 17.7135 Tj --883 TJm -(be) 9.4047 Tj --882 TJm -(called) 23.7907 Tj --883 TJm -(once) 18.8094 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -271.332 130.202 Td -/F124_0 9.9626 Tf -(BZ2_bzRead) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -339.9 130.202 Td -/F122_0 9.9626 Tf -(has) 13.2801 Tj --882 TJm -(signalled) 35.9749 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -406.737 130.202 Td -/F124_0 9.9626 Tf -(BZ_STREAM_END) 77.7083 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -493.231 130.202 Td -/F122_0 9.9626 Tf -(b) 4.9813 Tj -20 TJm -(ut) 7.7509 Tj --882 TJm -(before) 25.4445 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 118.247 Td -/F124_0 9.9626 Tf -(BZ2_bzReadClose) 89.6634 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -161.664 118.247 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 96.329 Td -(Possible) 33.2153 Tj --250 TJm -(assignments) 48.7072 Tj --250 TJm -(to) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -169.144 96.329 Td -/F124_0 9.9626 Tf -(bzerror) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -210.987 96.329 Td -/F122_0 9.9626 Tf -(:) 2.7696 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -534.414 50.852 Td -(21) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 22 25 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -419.067 749.245 Td -/F122_0 9.9626 Tf -(Programming) 54.7943 Tj --250 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -496.556 749.245 Td -/F124_0 9.9626 Tf -(libbzip2) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 612.403] cm -0 0 468 107.597 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 711.631 Td -/F124_0 9.9626 Tf -(BZ_PARAM_ERROR) 83.6858 Tj -98.488 699.676 Td -(if) 11.9551 Tj --426 TJm -(b) 5.9776 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(NULL) 23.9102 Tj -98.488 687.721 Td -(or) 11.9551 Tj --426 TJm -(unused) 35.8654 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(NULL) 23.9102 Tj --426 TJm -(or) 11.9551 Tj --426 TJm -(nUnused) 41.8429 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(NULL) 23.9102 Tj -90 675.766 Td -(BZ_SEQUENCE_ERROR) 101.6185 Tj -98.488 663.811 Td -(if) 11.9551 Tj --426 TJm -(BZ_STREAM_END) 77.7083 Tj --426 TJm -(has) 17.9327 Tj --426 TJm -(not) 17.9327 Tj --426 TJm -(been) 23.9102 Tj --426 TJm -(signalled) 53.798 Tj -98.488 651.856 Td -(or) 11.9551 Tj --426 TJm -(if) 11.9551 Tj --426 TJm -(b) 5.9776 Tj --426 TJm -(was) 17.9327 Tj --426 TJm -(opened) 35.8654 Tj --426 TJm -(with) 23.9102 Tj --426 TJm -(BZ2_bzWriteOpen) 89.6634 Tj -90 639.9 Td -(BZ_OK) 29.8878 Tj -98.488 627.945 Td -(otherwise) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 590.486 Td -/F122_0 9.9626 Tf -(Allo) 17.7135 Tj -25 TJm -(w) 7.193 Tj -10 TJm -(able) 16.5977 Tj --250 TJm -(ne) 9.4047 Tj -15 TJm -(xt) 7.7509 Tj --250 TJm -(actions:) 30.9936 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 565.48] cm -0 0 468 23.91 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 581.021 Td -/F124_0 9.9626 Tf -(BZ2_bzReadClose) 89.6634 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 534.858 Td -/F116_0 17.2154 Tf -(3.4.4.) 43.0729 Tj --278 TJm -(BZ2_bzReadClose) 150.1871 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 507.886] cm -0 0 468 23.91 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 523.428 Td -/F124_0 9.9626 Tf -(void) 23.9102 Tj --426 TJm -(BZ2_bzReadClose) 89.6634 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(int) 17.9327 Tj -244.46 521.684 Td -(*) 5.9776 Tj -250.438 523.428 Td -(bzerror,) 47.8205 Tj --426 TJm -(BZFILE) 35.8654 Tj -342.612 521.684 Td -(*) 5.9776 Tj -348.59 523.428 Td -(b) 5.9776 Tj --426 TJm -(\);) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 485.968 Td -/F122_0 9.9626 Tf -(Releases) 34.8591 Tj --430 TJm -(all) 9.9626 Tj --429 TJm -(memory) 33.2053 Tj --430 TJm -(pertaining) 40.3983 Tj --429 TJm -(to) 7.7509 Tj --430 TJm -(the) 12.1743 Tj --429 TJm -(compressed) 47.0334 Tj --430 TJm -(\002le) 12.7322 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -304.352 485.968 Td -/F124_0 9.9626 Tf -(b) 5.9776 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -310.33 485.968 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -321.276 485.968 Td -/F124_0 9.9626 Tf -(BZ2_bzReadClose) 89.6634 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -415.22 485.968 Td -/F122_0 9.9626 Tf -(does) 18.2614 Tj --430 TJm -(not) 12.7322 Tj --429 TJm -(call) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -473.438 485.968 Td -/F124_0 9.9626 Tf -(fclose) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -513.583 485.968 Td -/F122_0 9.9626 Tf -(on) 9.9626 Tj --430 TJm -(the) 12.1743 Tj -72 474.013 Td -(underlying) 43.1679 Tj --264 TJm -(\002le) 12.7322 Tj --264 TJm -(handle,) 29.0509 Tj --267 TJm -(so) 8.8568 Tj --264 TJm -(you) 14.9439 Tj --264 TJm -(should) 26.5703 Tj --264 TJm -(do) 9.9626 Tj --264 TJm -(that) 14.9439 Tj --264 TJm -(yourself) 32.6474 Tj --264 TJm -(if) 6.0871 Tj --263 TJm -(appropriate.) 47.8603 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -348.653 474.013 Td -/F124_0 9.9626 Tf -(BZ2_bzReadClose) 89.6634 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -440.946 474.013 Td -/F122_0 9.9626 Tf -(should) 26.5703 Tj --264 TJm -(be) 9.4047 Tj --264 TJm -(called) 23.7907 Tj --264 TJm -(to) 7.7509 Tj --264 TJm -(clean) 21.0211 Tj -72 462.058 Td -(up) 9.9626 Tj --250 TJm -(after) 18.2515 Tj --250 TJm -(all) 9.9626 Tj --250 TJm -(error) 19.3573 Tj --250 TJm -(situations.) 40.6873 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 440.14 Td -(Possible) 33.2153 Tj --250 TJm -(assignments) 48.7072 Tj --250 TJm -(to) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -169.144 440.14 Td -/F124_0 9.9626 Tf -(bzerror) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -210.987 440.14 Td -/F122_0 9.9626 Tf -(:) 2.7696 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 377.211] cm -0 0 468 59.776 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 428.618 Td -/F124_0 9.9626 Tf -(BZ_SEQUENCE_ERROR) 101.6185 Tj -98.488 416.663 Td -(if) 11.9551 Tj --426 TJm -(b) 5.9776 Tj --426 TJm -(was) 17.9327 Tj --426 TJm -(opened) 35.8654 Tj --426 TJm -(with) 23.9102 Tj --426 TJm -(BZ2_bzOpenWrite) 89.6634 Tj -90 404.708 Td -(BZ_OK) 29.8878 Tj -98.488 392.753 Td -(otherwise) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 355.293 Td -/F122_0 9.9626 Tf -(Allo) 17.7135 Tj -25 TJm -(w) 7.193 Tj -10 TJm -(able) 16.5977 Tj --250 TJm -(ne) 9.4047 Tj -15 TJm -(xt) 7.7509 Tj --250 TJm -(actions:) 30.9936 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 330.287] cm -0 0 468 23.91 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 345.829 Td -/F124_0 9.9626 Tf -(none) 23.9102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 299.666 Td -/F116_0 17.2154 Tf -(3.4.5.) 43.0729 Tj --278 TJm -(BZ2_bzWriteOpen) 148.259 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 247.286] cm -0 0 468 47.821 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 286.738 Td -/F124_0 9.9626 Tf -(BZFILE) 35.8654 Tj -130.109 284.994 Td -(*) 5.9776 Tj -136.087 286.738 Td -(BZ2_bzWriteOpen\() 95.641 Tj --426 TJm -(int) 17.9327 Tj -258.149 284.994 Td -(*) 5.9776 Tj -264.127 286.738 Td -(bzerror,) 47.8205 Tj --426 TJm -(FILE) 23.9102 Tj -344.346 284.994 Td -(*) 5.9776 Tj -350.323 286.738 Td -(f,) 11.9551 Tj -196.099 274.783 Td -(int) 17.9327 Tj --426 TJm -(blockSize100k,) 83.6858 Tj --426 TJm -(int) 17.9327 Tj --426 TJm -(verbosity,) 59.7756 Tj -196.099 262.827 Td -(int) 17.9327 Tj --426 TJm -(workFactor) 59.7756 Tj --426 TJm -(\);) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 225.368 Td -/F122_0 9.9626 Tf -(Prepare) 30.4258 Tj --268 TJm -(to) 7.7509 Tj --269 TJm -(write) 20.4731 Tj --268 TJm -(compressed) 47.0334 Tj --269 TJm -(data) 16.5977 Tj --268 TJm -(to) 7.7509 Tj --269 TJm -(\002le) 12.7322 Tj --268 TJm -(handle) 26.5603 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -262.72 225.368 Td -/F124_0 9.9626 Tf -(f) 5.9776 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -268.698 225.368 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -274.829 225.368 Td -/F124_0 9.9626 Tf -(f) 5.9776 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -283.481 225.368 Td -/F122_0 9.9626 Tf -(should) 26.5703 Tj --268 TJm -(refer) 18.7994 Tj --269 TJm -(to) 7.7509 Tj --268 TJm -(a) 4.4234 Tj --269 TJm -(\002le) 12.7322 Tj --268 TJm -(which) 24.3486 Tj --269 TJm -(has) 13.2801 Tj --268 TJm -(been) 18.8094 Tj --269 TJm -(opened) 28.772 Tj --268 TJm -(for) 11.6164 Tj --269 TJm -(writing,) 31.2726 Tj --273 TJm -(and) 14.386 Tj --268 TJm -(for) 11.6164 Tj -72 213.413 Td -(which) 24.3486 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(error) 19.3573 Tj --250 TJm -(indicator) 35.417 Tj --250 TJm -(\() 3.3175 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -176.577 213.413 Td -/F124_0 9.9626 Tf -(ferror\(f\)) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -230.375 213.413 Td -/F122_0 9.9626 Tf -(\)is) 9.9626 Tj --250 TJm -(not) 12.7322 Tj --250 TJm -(set.) 13.5591 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 191.495 Td -(F) 5.5392 Tj -15 TJm -(or) 8.2988 Tj --223 TJm -(the) 12.1743 Tj --224 TJm -(meaning) 34.3112 Tj --223 TJm -(of) 8.2988 Tj --224 TJm -(parameters) 43.7059 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -195.306 191.495 Td -/F124_0 9.9626 Tf -(blockSize100k) 77.7083 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -273.015 191.495 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -277.784 191.495 Td -/F124_0 9.9626 Tf -(verbosity) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -333.808 191.495 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -350.42 191.495 Td -/F124_0 9.9626 Tf -(workFactor) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -410.196 191.495 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --229 TJm -(see) 12.7222 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -429.913 191.495 Td -/F124_0 9.9626 Tf -(BZ2_bzCompressInit) 107.5961 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -537.509 191.495 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 169.577 Td -(All) 12.7322 Tj --382 TJm -(required) 33.1954 Tj --382 TJm -(memory) 33.2053 Tj --382 TJm -(is) 6.6451 Tj --382 TJm -(allocated) 35.965 Tj --383 TJm -(at) 7.193 Tj --382 TJm -(this) 14.396 Tj --382 TJm -(stage,) 22.9638 Tj --415 TJm -(so) 8.8568 Tj --382 TJm -(if) 6.0871 Tj --382 TJm -(the) 12.1743 Tj --382 TJm -(call) 14.386 Tj --382 TJm -(completes) 40.3983 Tj --382 TJm -(successfully) 48.6972 Tj -65 TJm -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -424.691 169.577 Td -/F124_0 9.9626 Tf -(BZ_MEM_ERROR) 71.7307 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -500.228 169.577 Td -/F122_0 9.9626 Tf -(cannot) 26.5603 Tj --382 TJm -(be) 9.4047 Tj -72 157.622 Td -(signalled) 35.9749 Tj --250 TJm -(by) 9.9626 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(subsequent) 44.2738 Tj --250 TJm -(call) 14.386 Tj --250 TJm -(to) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -203.715 157.622 Td -/F124_0 9.9626 Tf -(BZ2_bzWrite) 65.7532 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -269.468 157.622 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 135.704 Td -(Possible) 33.2153 Tj --250 TJm -(assignments) 48.7072 Tj --250 TJm -(to) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -169.144 135.704 Td -/F124_0 9.9626 Tf -(bzerror) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -210.987 135.704 Td -/F122_0 9.9626 Tf -(:) 2.7696 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -534.414 50.852 Td -(22) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 23 26 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -419.067 749.245 Td -/F122_0 9.9626 Tf -(Programming) 54.7943 Tj --250 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -496.556 749.245 Td -/F124_0 9.9626 Tf -(libbzip2) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 576.538] cm -0 0 468 143.462 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 711.631 Td -/F124_0 9.9626 Tf -(BZ_CONFIG_ERROR) 89.6634 Tj -98.488 699.676 Td -(if) 11.9551 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(library) 41.8429 Tj --426 TJm -(has) 17.9327 Tj --426 TJm -(been) 23.9102 Tj --426 TJm -(mis-compiled) 71.7307 Tj -90 687.721 Td -(BZ_PARAM_ERROR) 83.6858 Tj -98.488 675.766 Td -(if) 11.9551 Tj --426 TJm -(f) 5.9776 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(NULL) 23.9102 Tj -98.488 663.811 Td -(or) 11.9551 Tj --426 TJm -(blockSize100k) 77.7083 Tj --426 TJm -(<) 5.9776 Tj --426 TJm -(1) 5.9776 Tj --426 TJm -(or) 11.9551 Tj --426 TJm -(blockSize100k) 77.7083 Tj --426 TJm -(>) 5.9776 Tj --426 TJm -(9) 5.9776 Tj -90 651.856 Td -(BZ_IO_ERROR) 65.7532 Tj -98.488 639.9 Td -(if) 11.9551 Tj --426 TJm -(ferror\(f\)) 53.798 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(nonzero) 41.8429 Tj -90 627.945 Td -(BZ_MEM_ERROR) 71.7307 Tj -98.488 615.99 Td -(if) 11.9551 Tj --426 TJm -(insufficient) 71.7307 Tj --426 TJm -(memory) 35.8654 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(available) 53.798 Tj -90 604.035 Td -(BZ_OK) 29.8878 Tj -98.488 592.08 Td -(otherwise) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 554.62 Td -/F122_0 9.9626 Tf -(Possible) 33.2153 Tj --250 TJm -(return) 23.7907 Tj --250 TJm -(v) 4.9813 Tj -25 TJm -(alues:) 23.2427 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 493.749] cm -0 0 468 59.776 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 545.156 Td -/F124_0 9.9626 Tf -(Pointer) 41.8429 Tj --426 TJm -(to) 11.9551 Tj --426 TJm -(an) 11.9551 Tj --426 TJm -(abstract) 47.8205 Tj --426 TJm -(BZFILE) 35.8654 Tj -98.488 533.201 Td -(if) 11.9551 Tj --426 TJm -(bzerror) 41.8429 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(BZ_OK) 29.8878 Tj -90 521.245 Td -(NULL) 23.9102 Tj -98.488 509.29 Td -(otherwise) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 471.831 Td -/F122_0 9.9626 Tf -(Allo) 17.7135 Tj -25 TJm -(w) 7.193 Tj -10 TJm -(able) 16.5977 Tj --250 TJm -(ne) 9.4047 Tj -15 TJm -(xt) 7.7509 Tj --250 TJm -(actions:) 30.9936 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 387.049] cm -0 0 468 83.686 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 462.366 Td -/F124_0 9.9626 Tf -(BZ2_bzWrite) 65.7532 Tj -98.488 450.411 Td -(if) 11.9551 Tj --426 TJm -(bzerror) 41.8429 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(BZ_OK) 29.8878 Tj -98.488 438.456 Td -(\(you) 23.9102 Tj --426 TJm -(could) 29.8878 Tj --426 TJm -(go) 11.9551 Tj --426 TJm -(directly) 47.8205 Tj --426 TJm -(to) 11.9551 Tj --426 TJm -(BZ2_bzWriteClose,) 101.6185 Tj --426 TJm -(but) 17.9327 Tj --426 TJm -(this) 23.9102 Tj --426 TJm -(would) 29.8878 Tj --426 TJm -(be) 11.9551 Tj --426 TJm -(pretty) 35.8654 Tj -485.506 434.212 Td -/F548_0 9.9626 Tf -( ) 9.9626 Tj -493.808 434.212 Td -/F230_0 9.9626 Tf -(-) 2.7676 Tj -90 426.501 Td -/F124_0 9.9626 Tf -(pointless\)) 59.7756 Tj -90 414.546 Td -(BZ2_bzWriteClose) 95.641 Tj -98.488 402.59 Td -(otherwise) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 356.428 Td -/F116_0 17.2154 Tf -(3.4.6.) 43.0729 Tj --278 TJm -(BZ2_bzWrite) 104.2565 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 329.455] cm -0 0 468 23.91 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 344.997 Td -/F124_0 9.9626 Tf -(void) 23.9102 Tj --426 TJm -(BZ2_bzWrite) 65.7532 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(int) 17.9327 Tj -220.55 343.254 Td -(*) 5.9776 Tj -226.528 344.997 Td -(bzerror,) 47.8205 Tj --426 TJm -(BZFILE) 35.8654 Tj -318.702 343.254 Td -(*) 5.9776 Tj -324.679 344.997 Td -(b,) 11.9551 Tj --426 TJm -(void) 23.9102 Tj -369.033 343.254 Td -(*) 5.9776 Tj -375.01 344.997 Td -(buf,) 23.9102 Tj --426 TJm -(int) 17.9327 Tj --426 TJm -(len) 17.9327 Tj --426 TJm -(\);) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 307.537 Td -/F122_0 9.9626 Tf -(Absorbs) 33.2053 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -107.696 307.537 Td -/F124_0 9.9626 Tf -(len) 17.9327 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -128.119 307.537 Td -/F122_0 9.9626 Tf -(bytes) 21.031 Tj --250 TJm -(from) 19.3673 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(b) 4.9813 Tj -20 TJm -(uf) 8.2988 Tj -25 TJm -(fer) 11.0585 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -214.544 307.537 Td -/F124_0 9.9626 Tf -(buf) 17.9327 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -232.477 307.537 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --250 TJm -(e) 4.4234 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(entually) 32.0995 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(be) 9.4047 Tj --250 TJm -(compressed) 47.0334 Tj --250 TJm -(and) 14.386 Tj --250 TJm -(written) 28.224 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(\002le.) 15.2229 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 285.62 Td -(Possible) 33.2153 Tj --250 TJm -(assignments) 48.7072 Tj --250 TJm -(to) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -169.144 285.62 Td -/F124_0 9.9626 Tf -(bzerror) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -210.987 285.62 Td -/F122_0 9.9626 Tf -(:) 2.7696 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 174.87] cm -0 0 468 107.597 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 274.098 Td -/F124_0 9.9626 Tf -(BZ_PARAM_ERROR) 83.6858 Tj -98.488 262.143 Td -(if) 11.9551 Tj --426 TJm -(b) 5.9776 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(NULL) 23.9102 Tj --426 TJm -(or) 11.9551 Tj --426 TJm -(buf) 17.9327 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(NULL) 23.9102 Tj --426 TJm -(or) 11.9551 Tj --426 TJm -(len) 17.9327 Tj --426 TJm -(<) 5.9776 Tj --426 TJm -(0) 5.9776 Tj -90 250.188 Td -(BZ_SEQUENCE_ERROR) 101.6185 Tj -98.488 238.232 Td -(if) 11.9551 Tj --426 TJm -(b) 5.9776 Tj --426 TJm -(was) 17.9327 Tj --426 TJm -(opened) 35.8654 Tj --426 TJm -(with) 23.9102 Tj --426 TJm -(BZ2_bzReadOpen) 83.6858 Tj -90 226.277 Td -(BZ_IO_ERROR) 65.7532 Tj -98.488 214.322 Td -(if) 11.9551 Tj --426 TJm -(there) 29.8878 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(an) 11.9551 Tj --426 TJm -(error) 29.8878 Tj --426 TJm -(writing) 41.8429 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(compressed) 59.7756 Tj --426 TJm -(file.) 29.8878 Tj -90 202.367 Td -(BZ_OK) 29.8878 Tj -98.488 190.412 Td -(otherwise) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 144.249 Td -/F116_0 17.2154 Tf -(3.4.7.) 43.0729 Tj --278 TJm -(BZ2_bzWriteClose) 151.134 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -534.414 50.951 Td -/F122_0 9.9626 Tf -(23) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 24 27 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -419.067 749.245 Td -/F122_0 9.9626 Tf -(Programming) 54.7943 Tj --250 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -496.556 749.245 Td -/F124_0 9.9626 Tf -(libbzip2) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 576.538] cm -0 0 468 143.462 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 711.631 Td -/F124_0 9.9626 Tf -(void) 23.9102 Tj --426 TJm -(BZ2_bzWriteClose\() 101.6185 Tj --426 TJm -(int) 17.9327 Tj -246.194 709.888 Td -(*) 5.9776 Tj -252.172 711.631 Td -(bzerror,) 47.8205 Tj --426 TJm -(BZFILE) 35.8654 Tj -340.102 709.888 Td -(*) 5.9776 Tj -350.323 711.631 Td -(f,) 11.9551 Tj -187.611 699.676 Td -(int) 17.9327 Tj --426 TJm -(abandon,) 47.8205 Tj -187.611 687.721 Td -(unsigned) 47.8205 Tj --426 TJm -(int) 17.9327 Tj -257.609 685.978 Td -(*) 5.9776 Tj -267.83 687.721 Td -(nbytes_in,) 59.7756 Tj -187.611 675.766 Td -(unsigned) 47.8205 Tj --426 TJm -(int) 17.9327 Tj -257.609 674.022 Td -(*) 5.9776 Tj -267.83 675.766 Td -(nbytes_out) 59.7756 Tj --426 TJm -(\);) 11.9551 Tj -90 651.856 Td -(void) 23.9102 Tj --426 TJm -(BZ2_bzWriteClose64\() 113.5736 Tj --426 TJm -(int) 17.9327 Tj -258.149 650.112 Td -(*) 5.9776 Tj -264.127 651.856 Td -(bzerror,) 47.8205 Tj --426 TJm -(BZFILE) 35.8654 Tj -352.057 650.112 Td -(*) 5.9776 Tj -362.278 651.856 Td -(f,) 11.9551 Tj -196.099 639.9 Td -(int) 17.9327 Tj --426 TJm -(abandon,) 47.8205 Tj -196.099 627.945 Td -(unsigned) 47.8205 Tj --426 TJm -(int) 17.9327 Tj -266.097 626.202 Td -(*) 5.9776 Tj -276.318 627.945 Td -(nbytes_in_lo32,) 89.6634 Tj -196.099 615.99 Td -(unsigned) 47.8205 Tj --426 TJm -(int) 17.9327 Tj -266.097 614.247 Td -(*) 5.9776 Tj -276.318 615.99 Td -(nbytes_in_hi32,) 89.6634 Tj -196.099 604.035 Td -(unsigned) 47.8205 Tj --426 TJm -(int) 17.9327 Tj -266.097 602.291 Td -(*) 5.9776 Tj -276.318 604.035 Td -(nbytes_out_lo32,) 95.641 Tj -196.099 592.08 Td -(unsigned) 47.8205 Tj --426 TJm -(int) 17.9327 Tj -266.097 590.336 Td -(*) 5.9776 Tj -276.318 592.08 Td -(nbytes_out_hi32) 89.6634 Tj --426 TJm -(\);) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 554.62 Td -/F122_0 9.9626 Tf -(Compresses) 48.1492 Tj --403 TJm -(and) 14.386 Tj --402 TJm -(\003ushes) 27.6761 Tj --403 TJm -(to) 7.7509 Tj --403 TJm -(the) 12.1743 Tj --402 TJm -(compressed) 47.0334 Tj --403 TJm -(\002le) 12.7322 Tj --402 TJm -(all) 9.9626 Tj --403 TJm -(data) 16.5977 Tj --403 TJm -(so) 8.8568 Tj --402 TJm -(f) 3.3175 Tj -10 TJm -(ar) 7.7409 Tj --403 TJm -(supplied) 33.7633 Tj --403 TJm -(by) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -384.152 554.62 Td -/F124_0 9.9626 Tf -(BZ2_bzWrite) 65.7532 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -449.906 554.62 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj --768 TJm -(The) 15.4918 Tj --403 TJm -(logical) 27.1182 Tj --402 TJm -(end-of-) 29.3199 Tj -72 542.665 Td -(stream) 26.5603 Tj --352 TJm -(mark) 20.4731 Tj -10 TJm -(ers) 11.6164 Tj --352 TJm -(are) 12.1643 Tj --353 TJm -(also) 16.0497 Tj --352 TJm -(written,) 30.7147 Tj --378 TJm -(so) 8.8568 Tj --352 TJm -(subsequent) 44.2738 Tj --352 TJm -(calls) 18.2614 Tj --352 TJm -(to) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -300.456 542.665 Td -/F124_0 9.9626 Tf -(BZ2_bzWrite) 65.7532 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -369.718 542.665 Td -/F122_0 9.9626 Tf -(are) 12.1643 Tj --352 TJm -(ille) 12.7322 Tj -15 TJm -(g) 4.9813 Tj -5 TJm -(al.) 9.6836 Tj --1234 TJm -(All) 12.7322 Tj --352 TJm -(memory) 33.2053 Tj --352 TJm -(associated) 40.9463 Tj --352 TJm -(with) 17.7135 Tj -72 530.71 Td -(the) 12.1743 Tj --250 TJm -(compressed) 47.0334 Tj --250 TJm -(\002le) 12.7322 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -151.411 530.71 Td -/F124_0 9.9626 Tf -(b) 5.9776 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -159.88 530.71 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --250 TJm -(released.) 35.1281 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -207.231 530.71 Td -/F124_0 9.9626 Tf -(fflush) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -245.587 530.71 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --250 TJm -(called) 23.7907 Tj --250 TJm -(on) 9.9626 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(compressed) 47.0334 Tj --250 TJm -(\002le,) 15.2229 Tj --250 TJm -(b) 4.9813 Tj -20 TJm -(ut) 7.7509 Tj --250 TJm -(it) 5.5392 Tj --250 TJm -(is) 6.6451 Tj --250 TJm -(not) 12.7322 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -422.771 530.71 Td -/F124_0 9.9626 Tf -(fclose) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -458.636 530.71 Td -/F122_0 9.9626 Tf -(') 3.3175 Tj -50 TJm -(d.) 7.472 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 508.792 Td -(If) 6.6351 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -81.574 508.792 Td -/F124_0 9.9626 Tf -(BZ2_bzWriteClose) 95.641 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -180.155 508.792 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --295 TJm -(called) 23.7907 Tj --295 TJm -(to) 7.7509 Tj --295 TJm -(clean) 21.0211 Tj --295 TJm -(up) 9.9626 Tj --295 TJm -(after) 18.2515 Tj --295 TJm -(an) 9.4047 Tj --295 TJm -(error) 19.3573 Tj -40 TJm -(,) 2.4907 Tj --306 TJm -(the) 12.1743 Tj --295 TJm -(only) 17.7135 Tj --295 TJm -(action) 24.3486 Tj --295 TJm -(is) 6.6451 Tj --295 TJm -(to) 7.7509 Tj --295 TJm -(release) 27.6562 Tj --295 TJm -(the) 12.1743 Tj --295 TJm -(memory) 33.2053 Tj -65 TJm -(.) 2.4907 Tj --891 TJm -(The) 15.4918 Tj --295 TJm -(library) 26.5603 Tj -72 496.837 Td -(records) 29.3199 Tj --289 TJm -(the) 12.1743 Tj --289 TJm -(error) 19.3573 Tj --289 TJm -(codes) 22.6848 Tj --289 TJm -(issued) 24.9065 Tj --289 TJm -(by) 9.9626 Tj --289 TJm -(pre) 12.7222 Tj -25 TJm -(vious) 21.589 Tj --289 TJm -(calls,) 20.7521 Tj --299 TJm -(so) 8.8568 Tj --289 TJm -(this) 14.396 Tj --289 TJm -(situation) 34.3212 Tj --289 TJm -(will) 15.5018 Tj --289 TJm -(be) 9.4047 Tj --289 TJm -(detected) 33.1954 Tj --289 TJm -(automatically) 54.2364 Tj -65 TJm -(.) 2.4907 Tj --427 TJm -(There) 23.2328 Tj --289 TJm -(is) 6.6451 Tj --289 TJm -(no) 9.9626 Tj --289 TJm -(attempt) 29.8878 Tj -72 484.882 Td -(to) 7.7509 Tj --263 TJm -(complete) 36.5229 Tj --262 TJm -(the) 12.1743 Tj --263 TJm -(compression) 50.3609 Tj --263 TJm -(operation,) 40.1194 Tj --265 TJm -(nor) 13.2801 Tj --263 TJm -(to) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -258.308 484.882 Td -/F124_0 9.9626 Tf -(fflush) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -296.79 484.882 Td -/F122_0 9.9626 Tf -(the) 12.1743 Tj --263 TJm -(compressed) 47.0334 Tj --262 TJm -(\002le.) 15.2229 Tj --696 TJm -(Y) 7.193 Tj -110 TJm -(ou) 9.9626 Tj --263 TJm -(can) 13.8281 Tj --263 TJm -(force) 20.4632 Tj --262 TJm -(this) 14.396 Tj --263 TJm -(beha) 18.8094 Tj -20 TJm -(viour) 21.031 Tj --263 TJm -(to) 7.7509 Tj --262 TJm -(happen) 28.772 Tj -72 472.926 Td -(e) 4.4234 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(en) 9.4047 Tj --250 TJm -(in) 7.7509 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(case) 17.1456 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(no) 9.9626 Tj --250 TJm -(error) 19.3573 Tj -40 TJm -(,) 2.4907 Tj --250 TJm -(by) 9.9626 Tj --250 TJm -(passing) 29.8878 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(nonzero) 32.0895 Tj --250 TJm -(v) 4.9813 Tj -25 TJm -(alue) 16.5977 Tj --250 TJm -(to) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -305.015 472.926 Td -/F124_0 9.9626 Tf -(abandon) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -346.858 472.926 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 451.009 Td -(If) 6.6351 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -80.597 451.009 Td -/F124_0 9.9626 Tf -(nbytes_in) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -136.358 451.009 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --197 TJm -(non-null,) 36.2539 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -183.287 449.265 Td -/F124_0 9.9626 Tf -(*) 5.9776 Tj -189.265 451.009 Td -(nbytes_in) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -245.025 451.009 Td -/F122_0 9.9626 Tf -(will) 15.5018 Tj --197 TJm -(be) 9.4047 Tj --197 TJm -(set) 11.0684 Tj --197 TJm -(to) 7.7509 Tj --197 TJm -(be) 9.4047 Tj --197 TJm -(the) 12.1743 Tj --197 TJm -(total) 17.7135 Tj --197 TJm -(v) 4.9813 Tj -20 TJm -(olume) 24.9065 Tj --197 TJm -(of) 8.2988 Tj --197 TJm -(uncompressed) 56.996 Tj --197 TJm -(data) 16.5977 Tj --197 TJm -(handled.) 34.0322 Tj --584 TJm -(Similarly) 37.0908 Tj -65 TJm -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 439.053 Td -/F124_0 9.9626 Tf -(nbytes_out) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -134.716 439.053 Td -/F122_0 9.9626 Tf -(will) 15.5018 Tj --295 TJm -(be) 9.4047 Tj --295 TJm -(set) 11.0684 Tj --295 TJm -(to) 7.7509 Tj --295 TJm -(the) 12.1743 Tj --295 TJm -(total) 17.7135 Tj --295 TJm -(v) 4.9813 Tj -20 TJm -(olume) 24.9065 Tj --295 TJm -(of) 8.2988 Tj --296 TJm -(compressed) 47.0334 Tj --295 TJm -(data) 16.5977 Tj --295 TJm -(written.) 30.7147 Tj --890 TJm -(F) 5.5392 Tj -15 TJm -(or) 8.2988 Tj --295 TJm -(compatibility) 53.1405 Tj --295 TJm -(with) 17.7135 Tj --295 TJm -(older) 20.4731 Tj --295 TJm -(v) 4.9813 Tj -15 TJm -(ersions) 28.224 Tj --296 TJm -(of) 8.2988 Tj -72 427.098 Td -(the) 12.1743 Tj --283 TJm -(library) 26.5603 Tj -65 TJm -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -118.294 427.098 Td -/F124_0 9.9626 Tf -(BZ2_bzWriteClose) 95.641 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -216.753 427.098 Td -/F122_0 9.9626 Tf -(only) 17.7135 Tj --283 TJm -(yields) 23.8007 Tj --283 TJm -(the) 12.1743 Tj --282 TJm -(lo) 7.7509 Tj -25 TJm -(wer) 14.9339 Tj --283 TJm -(32) 9.9626 Tj --283 TJm -(bits) 14.396 Tj --283 TJm -(of) 8.2988 Tj --283 TJm -(these) 20.4731 Tj --282 TJm -(counts.) 28.503 Tj --817 TJm -(Use) 15.4918 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -423.499 427.098 Td -/F124_0 9.9626 Tf -(BZ2_bzWriteClose64) 107.5961 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -533.913 427.098 Td -/F122_0 9.9626 Tf -(if) 6.0871 Tj -72 415.143 Td -(you) 14.9439 Tj --250 TJm -(w) 7.193 Tj -10 TJm -(ant) 12.1743 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(full) 13.8381 Tj --250 TJm -(64) 9.9626 Tj --250 TJm -(bit) 10.5205 Tj --250 TJm -(counts.) 28.503 Tj --620 TJm -(These) 23.7907 Tj --250 TJm -(tw) 9.9626 Tj -10 TJm -(o) 4.9813 Tj --250 TJm -(functions) 37.0808 Tj --250 TJm -(are) 12.1643 Tj --250 TJm -(otherwise) 38.7346 Tj --250 TJm -(absolutely) 40.9562 Tj --250 TJm -(identical.) 36.8018 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 393.225 Td -(Possible) 33.2153 Tj --250 TJm -(assignments) 48.7072 Tj --250 TJm -(to) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -169.144 393.225 Td -/F124_0 9.9626 Tf -(bzerror) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -210.987 393.225 Td -/F122_0 9.9626 Tf -(:) 2.7696 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 306.386] cm -0 0 468 83.686 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 381.704 Td -/F124_0 9.9626 Tf -(BZ_SEQUENCE_ERROR) 101.6185 Tj -98.488 369.749 Td -(if) 11.9551 Tj --426 TJm -(b) 5.9776 Tj --426 TJm -(was) 17.9327 Tj --426 TJm -(opened) 35.8654 Tj --426 TJm -(with) 23.9102 Tj --426 TJm -(BZ2_bzReadOpen) 83.6858 Tj -90 357.793 Td -(BZ_IO_ERROR) 65.7532 Tj -98.488 345.838 Td -(if) 11.9551 Tj --426 TJm -(there) 29.8878 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(an) 11.9551 Tj --426 TJm -(error) 29.8878 Tj --426 TJm -(writing) 41.8429 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(compressed) 59.7756 Tj --426 TJm -(file) 23.9102 Tj -90 333.883 Td -(BZ_OK) 29.8878 Tj -98.488 321.928 Td -(otherwise) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 275.765 Td -/F116_0 17.2154 Tf -(3.4.8.) 43.0729 Tj --278 TJm -(Handling) 73.6475 Tj --278 TJm -(embed) 55.4852 Tj -10 TJm -(ded) 30.609 Tj --278 TJm -(compressed) 101.4159 Tj --278 TJm -(data) 35.3949 Tj --278 TJm -(streams) 66.0211 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 253.847 Td -/F122_0 9.9626 Tf -(The) 15.4918 Tj --203 TJm -(high-le) 28.224 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(el) 7.193 Tj --203 TJm -(library) 26.5603 Tj --203 TJm -(f) 3.3175 Tj -10 TJm -(acilitates) 35.417 Tj --203 TJm -(use) 13.2801 Tj --203 TJm -(of) 8.2988 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -226.404 253.847 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -258.316 253.847 Td -/F122_0 9.9626 Tf -(data) 16.5977 Tj --203 TJm -(streams) 30.4357 Tj --203 TJm -(which) 24.3486 Tj --203 TJm -(form) 19.3673 Tj --203 TJm -(some) 21.031 Tj --203 TJm -(part) 15.4918 Tj --203 TJm -(of) 8.2988 Tj --203 TJm -(a) 4.4234 Tj --204 TJm -(surrounding,) 50.6399 Tj --212 TJm -(lar) 10.5105 Tj -18 TJm -(ger) 12.7222 Tj --203 TJm -(data) 16.5977 Tj --203 TJm -(stream.) 29.0509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -74.491 221.967 Td -(\225) 3.4869 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --450 TJm -(F) 5.5392 Tj -15 TJm -(or) 8.2988 Tj --264 TJm -(writing,) 31.2726 Tj --267 TJm -(the) 12.1743 Tj --264 TJm -(library) 26.5603 Tj --264 TJm -(tak) 12.1743 Tj -10 TJm -(es) 8.2988 Tj --264 TJm -(an) 9.4047 Tj --264 TJm -(open) 19.3673 Tj --264 TJm -(\002le) 12.7322 Tj --264 TJm -(handle,) 29.0509 Tj --267 TJm -(writes) 24.3486 Tj --264 TJm -(compressed) 47.0334 Tj --264 TJm -(data) 16.5977 Tj --264 TJm -(to) 7.7509 Tj --264 TJm -(it,) 8.0299 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -397.758 221.967 Td -/F124_0 9.9626 Tf -(fflush) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -433.624 221.967 Td -/F122_0 9.9626 Tf -(es) 8.2988 Tj --264 TJm -(it) 5.5392 Tj --264 TJm -(b) 4.9813 Tj -20 TJm -(ut) 7.7509 Tj --264 TJm -(does) 18.2614 Tj --264 TJm -(not) 12.7322 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -504.135 221.967 Td -/F124_0 9.9626 Tf -(fclose) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -81.963 210.012 Td -/F122_0 9.9626 Tf -(it.) 8.0299 Tj --675 TJm -(The) 15.4918 Tj --259 TJm -(calling) 27.1182 Tj --260 TJm -(a) 4.4234 Tj -1 TJm -(pp) 9.9626 Tj --1 TJm -(l) 2.7696 Tj -1 TJm -(ication) 27.1182 Tj --260 TJm -(can) 13.8281 Tj --259 TJm -(write) 20.4731 Tj --259 TJm -(its) 9.4147 Tj --259 TJm -(o) 4.9813 Tj -25 TJm -(wn) 12.1743 Tj --259 TJm -(data) 16.5977 Tj --260 TJm -(before) 25.4445 Tj --259 TJm -(and) 14.386 Tj --259 TJm -(after) 18.2515 Tj --259 TJm -(the) 12.1743 Tj --259 TJm -(compressed) 47.0334 Tj --260 TJm -(dat) 12.1743 Tj -1 TJm -(a) 4.4234 Tj --260 TJm -(stream,) 29.0509 Tj --261 TJm -(using) 21.589 Tj --259 TJm -(that) 14.9439 Tj --260 TJm -(sam) 16.0497 Tj -1 TJm -(e) 4.4234 Tj --260 TJm -(\002le) 12.7322 Tj -81.963 198.056 Td -(handle.) 29.0509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -74.491 176.139 Td -(\225) 3.4869 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --450 TJm -(Reading) 33.2053 Tj --258 TJm -(is) 6.6451 Tj --259 TJm -(more) 20.4731 Tj --258 TJm -(comple) 29.3299 Tj -15 TJm -(x,) 7.472 Tj --261 TJm -(and) 14.386 Tj --258 TJm -(the) 12.1743 Tj --258 TJm -(f) 3.3175 Tj -10 TJm -(acilities) 30.9936 Tj --259 TJm -(are) 12.1643 Tj --258 TJm -(not) 12.7322 Tj --258 TJm -(as) 8.2988 Tj --259 TJm -(general) 29.3199 Tj --258 TJm -(as) 8.2988 Tj --259 TJm -(the) 12.1743 Tj -15 TJm -(y) 4.9813 Tj --258 TJm -(could) 22.1369 Tj --258 TJm -(be) 9.4047 Tj --259 TJm -(since) 20.4731 Tj --258 TJm -(generality) 39.8404 Tj --259 TJm -(is) 6.6451 Tj --258 TJm -(hard) 17.7035 Tj --258 TJm -(to) 7.7509 Tj --259 TJm -(reconcile) 36.5129 Tj -81.963 164.183 Td -(with) 17.7135 Tj --432 TJm -(ef) 7.7409 Tj -25 TJm -(\002cienc) 26.5603 Tj -15 TJm -(y) 4.9813 Tj -65 TJm -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -161.767 164.183 Td -/F124_0 9.9626 Tf -(BZ2_bzRead) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -225.847 164.183 Td -/F122_0 9.9626 Tf -(reads) 21.0211 Tj --432 TJm -(from) 19.3673 Tj --432 TJm -(the) 12.1743 Tj --432 TJm -(compressed) 47.0334 Tj --432 TJm -(\002le) 12.7322 Tj --432 TJm -(in) 7.7509 Tj --432 TJm -(blocks) 26.0123 Tj --432 TJm -(of) 8.2988 Tj --432 TJm -(size) 15.4918 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -434.467 164.183 Td -/F124_0 9.9626 Tf -(BZ_MAX_UNUSED) 77.7083 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -516.479 164.183 Td -/F122_0 9.9626 Tf -(bytes,) 23.5217 Tj -81.963 152.228 Td -(and) 14.386 Tj --436 TJm -(in) 7.7509 Tj --435 TJm -(doing) 22.6948 Tj --436 TJm -(so) 8.8568 Tj --436 TJm -(probably) 35.417 Tj --436 TJm -(will) 15.5018 Tj --435 TJm -(o) 4.9813 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(ershoot) 29.3299 Tj --436 TJm -(the) 12.1743 Tj --436 TJm -(logical) 27.1182 Tj --435 TJm -(end) 14.386 Tj --436 TJm -(of) 8.2988 Tj --436 TJm -(compressed) 47.0334 Tj --436 TJm -(s) 3.8755 Tj -1 TJm -(tream.) 25.1755 Tj --1735 TJm -(T) 6.0871 Tj -80 TJm -(o) 4.9813 Tj --436 TJm -(reco) 17.1456 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(er) 7.7409 Tj --435 TJm -(this) 14.396 Tj --436 TJm -(data) 16.5977 Tj --436 TJm -(once) 18.8094 Tj -81.963 140.273 Td -(decompression) 59.7656 Tj --290 TJm -(has) 13.2801 Tj --289 TJm -(ended,) 26.2813 Tj --300 TJm -(call) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -207.321 140.273 Td -/F124_0 9.9626 Tf -(BZ2_bzReadGetUnused) 113.5736 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -323.782 140.273 Td -/F122_0 9.9626 Tf -(after) 18.2515 Tj --290 TJm -(the) 12.1743 Tj --289 TJm -(last) 13.8381 Tj --290 TJm -(call) 14.386 Tj --290 TJm -(of) 8.2988 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -405.164 140.273 Td -/F124_0 9.9626 Tf -(BZ2_bzRead) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -467.826 140.273 Td -/F122_0 9.9626 Tf -(\(the) 15.4918 Tj --290 TJm -(one) 14.386 Tj --290 TJm -(returning) 36.5229 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -81.963 128.318 Td -/F124_0 9.9626 Tf -(BZ_STREAM_END) 77.7083 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -159.671 128.318 Td -/F122_0 9.9626 Tf -(\)) 3.3175 Tj --250 TJm -(b) 4.9813 Tj -20 TJm -(ut) 7.7509 Tj --250 TJm -(before) 25.4445 Tj --250 TJm -(calling) 27.1182 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -238.047 128.318 Td -/F124_0 9.9626 Tf -(BZ2_bzReadClose) 89.6634 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -327.71 128.318 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -534.414 50.852 Td -(24) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 25 28 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -419.067 749.245 Td -/F122_0 9.9626 Tf -(Programming) 54.7943 Tj --250 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -496.556 749.245 Td -/F124_0 9.9626 Tf -(libbzip2) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -72 710.037 Td -/F122_0 9.9626 Tf -(This) 17.7135 Tj --271 TJm -(mechanism) 45.3796 Tj --272 TJm -(mak) 17.1556 Tj -10 TJm -(es) 8.2988 Tj --271 TJm -(it) 5.5392 Tj --271 TJm -(easy) 17.7035 Tj --271 TJm -(to) 7.7509 Tj --272 TJm -(decompress) 47.0334 Tj --271 TJm -(multiple) 33.2153 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -293.313 710.037 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -325.903 710.037 Td -/F122_0 9.9626 Tf -(streams) 30.4357 Tj --271 TJm -(placed) 26.0024 Tj --272 TJm -(end-to-end.) 45.6486 Tj --374 TJm -(As) 11.0684 Tj --271 TJm -(the) 12.1743 Tj --271 TJm -(end) 14.386 Tj --271 TJm -(of) 8.2988 Tj --272 TJm -(one) 14.386 Tj --271 TJm -(stream,) 29.0509 Tj -72 698.082 Td -(when) 21.579 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -96.195 698.082 Td -/F124_0 9.9626 Tf -(BZ2_bzRead) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -158.586 698.082 Td -/F122_0 9.9626 Tf -(returns) 27.6661 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -188.868 698.082 Td -/F124_0 9.9626 Tf -(BZ_STREAM_END) 77.7083 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -266.577 698.082 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --263 TJm -(call) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -288.685 698.082 Td -/F124_0 9.9626 Tf -(BZ2_bzReadGetUnused) 113.5736 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -404.875 698.082 Td -/F122_0 9.9626 Tf -(to) 7.7509 Tj --263 TJm -(coll) 14.9439 Tj -1 TJm -(ect) 11.6164 Tj --263 TJm -(the) 12.1743 Tj --263 TJm -(unused) 28.224 Tj --262 TJm -(data) 16.5977 Tj --263 TJm -(\(cop) 17.7035 Tj -10 TJm -(y) 4.9813 Tj --262 TJm -(it) 5.5392 Tj -72 686.127 Td -(into) 15.5018 Tj --265 TJm -(your) 18.2614 Tj --265 TJm -(o) 4.9813 Tj -25 TJm -(wn) 12.1743 Tj --265 TJm -(b) 4.9813 Tj -20 TJm -(uf) 8.2988 Tj -25 TJm -(fer) 11.0585 Tj --265 TJm -(some) 21.031 Tj -25 TJm -(where\).) 30.1468 Tj --711 TJm -(That) 18.2614 Tj --265 TJm -(data) 16.5977 Tj --265 TJm -(forms) 23.2427 Tj --265 TJm -(the) 12.1743 Tj --265 TJm -(start) 17.1556 Tj --265 TJm -(of) 8.2988 Tj --265 TJm -(the) 12.1743 Tj --265 TJm -(ne) 9.4047 Tj -15 TJm -(xt) 7.7509 Tj --265 TJm -(compressed) 47.0334 Tj --265 TJm -(stream.) 29.0509 Tj --711 TJm -(T) 6.0871 Tj -80 TJm -(o) 4.9813 Tj --265 TJm -(start) 17.1556 Tj --265 TJm -(uncompressing) 60.3235 Tj -72 674.172 Td -(that) 14.9439 Tj --246 TJm -(ne) 9.4047 Tj -15 TJm -(xt) 7.7509 Tj --246 TJm -(stream,) 29.0509 Tj --247 TJm -(call) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -157.205 674.172 Td -/F124_0 9.9626 Tf -(BZ2_bzReadOpen) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -243.344 674.172 Td -/F122_0 9.9626 Tf -(ag) 9.4047 Tj -5 TJm -(ain,) 14.6649 Tj --247 TJm -(feeding) 29.8778 Tj --246 TJm -(in) 7.7509 Tj --246 TJm -(the) 12.1743 Tj --247 TJm -(unused) 28.224 Tj --246 TJm -(data) 16.5977 Tj --246 TJm -(via) 12.1743 Tj --246 TJm -(the) 12.1743 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -405.967 674.172 Td -/F124_0 9.9626 Tf -(unused) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -444.286 674.172 Td -/F122_0 9.9626 Tf -(/) 2.7696 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -449.508 674.172 Td -/F124_0 9.9626 Tf -(nUnused) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -493.804 674.172 Td -/F122_0 9.9626 Tf -(parameters.) 46.1966 Tj -72 662.217 Td -(K) 7.193 Tj -25 TJm -(eep) 13.8281 Tj --263 TJm -(doing) 22.6948 Tj --263 TJm -(this) 14.396 Tj --264 TJm -(until) 18.2714 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -158.622 662.217 Td -/F124_0 9.9626 Tf -(BZ_STREAM_END) 77.7083 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -238.952 662.217 Td -/F122_0 9.9626 Tf -(return) 23.7907 Tj --263 TJm -(coincides) 37.6287 Tj --263 TJm -(with) 17.7135 Tj --264 TJm -(the) 12.1743 Tj --263 TJm -(ph) 9.9626 Tj -5 TJm -(ysical) 23.2427 Tj --263 TJm -(end) 14.386 Tj --263 TJm -(of) 8.2988 Tj --263 TJm -(\002le) 12.7322 Tj --263 TJm -(\() 3.3175 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -423.124 662.217 Td -/F124_0 9.9626 Tf -(feof\(f\)) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -464.968 662.217 Td -/F122_0 9.9626 Tf -(\).) 5.8082 Tj --699 TJm -(In) 8.2988 Tj --263 TJm -(this) 14.396 Tj --263 TJm -(situation) 34.3212 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 650.261 Td -/F124_0 9.9626 Tf -(BZ2_bzReadGetUnused) 113.5736 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -188.065 650.261 Td -/F122_0 9.9626 Tf -(will) 15.5018 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(course) 26.0024 Tj --250 TJm -(return) 23.7907 Tj --250 TJm -(no) 9.9626 Tj --250 TJm -(data.) 19.0883 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 628.344 Td -(This) 17.7135 Tj --240 TJm -(should) 26.5703 Tj --241 TJm -(gi) 7.7509 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --240 TJm -(some) 21.031 Tj --241 TJm -(feel) 14.9339 Tj --240 TJm -(for) 11.6164 Tj --241 TJm -(ho) 9.9626 Tj -25 TJm -(w) 7.193 Tj --240 TJm -(the) 12.1743 Tj --240 TJm -(high-le) 28.224 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(el) 7.193 Tj --241 TJm -(interf) 21.579 Tj -10 TJm -(ace) 13.2702 Tj --240 TJm -(can) 13.8281 Tj --241 TJm -(be) 9.4047 Tj --240 TJm -(used.) 20.7521 Tj --614 TJm -(If) 6.6351 Tj --240 TJm -(you) 14.9439 Tj --241 TJm -(require) 28.2141 Tj --240 TJm -(e) 4.4234 Tj -15 TJm -(xtra) 15.4918 Tj --241 TJm -(\003e) 9.9626 Tj -15 TJm -(xibi) 15.5018 Tj -1 TJm -(lity) 13.2901 Tj -65 TJm -(,) 2.4907 Tj --243 TJm -(you') 18.2614 Tj -10 TJm -(ll) 5.5392 Tj --240 TJm -(ha) 9.4047 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --241 TJm -(to) 7.7509 Tj -72 616.389 Td -(bite) 14.9439 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(b) 4.9813 Tj -20 TJm -(ullet) 17.7135 Tj --250 TJm -(and) 14.386 Tj --250 TJm -(get) 12.1743 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(grips) 19.9252 Tj --250 TJm -(with) 17.7135 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(lo) 7.7509 Tj -25 TJm -(w-le) 17.7035 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(el) 7.193 Tj --250 TJm -(interf) 21.579 Tj -10 TJm -(ace.) 15.7608 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 585.767 Td -/F116_0 17.2154 Tf -(3.4.9.) 43.0729 Tj --278 TJm -(Standar) 64.0929 Tj -20 TJm -(d) 10.5186 Tj --278 TJm -(\002le-reading/writing) 154.009 Tj --278 TJm -(code) 40.1807 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 563.85 Td -/F122_0 9.9626 Tf -(Here') 22.6749 Tj -55 TJm -(s) 3.8755 Tj --250 TJm -(ho) 9.9626 Tj -25 TJm -(w) 7.193 Tj --250 TJm -(you') 18.2614 Tj -50 TJm -(d) 4.9813 Tj --250 TJm -(write) 20.4731 Tj --250 TJm -(data) 16.5977 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(compressed) 47.0334 Tj --250 TJm -(\002le:) 15.5018 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 190.086] cm -0 0 468 370.61 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 552.328 Td -/F124_0 9.9626 Tf -(FILE) 23.9102 Tj -113.91 550.584 Td -(*) 5.9776 Tj -132.62 552.328 Td -(f;) 11.9551 Tj -90 540.373 Td -(BZFILE) 35.8654 Tj -125.866 538.629 Td -(*) 5.9776 Tj -136.087 540.373 Td -(b;) 11.9551 Tj -90 528.418 Td -(int) 17.9327 Tj --2130 TJm -(nBuf;) 29.8878 Tj -90 516.462 Td -(char) 23.9102 Tj --1704 TJm -(buf[) 23.9102 Tj --426 TJm -(/) 5.9776 Tj -165.018 514.719 Td -(*) 5.9776 Tj -175.24 516.462 Td -(whatever) 47.8205 Tj --426 TJm -(size) 23.9102 Tj --426 TJm -(you) 17.9327 Tj --426 TJm -(like) 23.9102 Tj -305.79 514.719 Td -(*) 5.9776 Tj -311.767 516.462 Td -(/) 5.9776 Tj --426 TJm -(];) 11.9551 Tj -90 504.507 Td -(int) 17.9327 Tj --2130 TJm -(bzerror;) 47.8205 Tj -90 492.552 Td -(int) 17.9327 Tj --2130 TJm -(nWritten;) 53.798 Tj -90 468.642 Td -(f) 5.9776 Tj --426 TJm -(=) 5.9776 Tj --426 TJm -(fopen) 29.8878 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -("myfile.bz2",) 77.7083 Tj --426 TJm -("w") 17.9327 Tj --426 TJm -(\);) 11.9551 Tj -90 456.687 Td -(if) 11.9551 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(!f) 11.9551 Tj --426 TJm -(\)) 5.9776 Tj --426 TJm -({) 5.9776 Tj -94.244 444.731 Td -(/) 5.9776 Tj -100.222 442.988 Td -(*) 5.9776 Tj -110.443 444.731 Td -(handle) 35.8654 Tj --426 TJm -(error) 29.8878 Tj -184.684 442.988 Td -(*) 5.9776 Tj -190.662 444.731 Td -(/) 5.9776 Tj -90 432.776 Td -(}) 5.9776 Tj -90 420.821 Td -(b) 5.9776 Tj --426 TJm -(=) 5.9776 Tj --426 TJm -(BZ2_bzWriteOpen\() 95.641 Tj --426 TJm -(&bzerror,) 53.798 Tj --426 TJm -(f,) 11.9551 Tj --426 TJm -(9) 5.9776 Tj --426 TJm -(\);) 11.9551 Tj -90 408.866 Td -(if) 11.9551 Tj --426 TJm -(\(bzerror) 47.8205 Tj --426 TJm -(!=) 11.9551 Tj --426 TJm -(BZ_OK\)) 35.8654 Tj --426 TJm -({) 5.9776 Tj -94.244 396.911 Td -(BZ2_bzWriteClose) 95.641 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(b) 5.9776 Tj --426 TJm -(\);) 11.9551 Tj -94.244 384.955 Td -(/) 5.9776 Tj -100.222 383.212 Td -(*) 5.9776 Tj -110.443 384.955 Td -(handle) 35.8654 Tj --426 TJm -(error) 29.8878 Tj -184.684 383.212 Td -(*) 5.9776 Tj -190.662 384.955 Td -(/) 5.9776 Tj -90 373 Td -(}) 5.9776 Tj -90 349.09 Td -(while) 29.8878 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(/) 5.9776 Tj -140.331 347.346 Td -(*) 5.9776 Tj -150.553 349.09 Td -(condition) 53.798 Tj -208.595 347.346 Td -(*) 5.9776 Tj -214.572 349.09 Td -(/) 5.9776 Tj --426 TJm -(\)) 5.9776 Tj --426 TJm -({) 5.9776 Tj -94.244 337.135 Td -(/) 5.9776 Tj -100.222 335.391 Td -(*) 5.9776 Tj -110.443 337.135 Td -(get) 17.9327 Tj --426 TJm -(data) 23.9102 Tj --426 TJm -(to) 11.9551 Tj --426 TJm -(write) 29.8878 Tj --426 TJm -(into) 23.9102 Tj --426 TJm -(buf,) 23.9102 Tj --426 TJm -(and) 17.9327 Tj --426 TJm -(set) 17.9327 Tj --426 TJm -(nBuf) 23.9102 Tj --426 TJm -(appropriately) 77.7083 Tj -421.874 335.391 Td -(*) 5.9776 Tj -427.852 337.135 Td -(/) 5.9776 Tj -94.244 325.18 Td -(nWritten) 47.8205 Tj --426 TJm -(=) 5.9776 Tj --426 TJm -(BZ2_bzWrite) 65.7532 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(&bzerror,) 53.798 Tj --426 TJm -(b,) 11.9551 Tj --426 TJm -(buf,) 23.9102 Tj --426 TJm -(nBuf) 23.9102 Tj --426 TJm -(\);) 11.9551 Tj -94.244 313.224 Td -(if) 11.9551 Tj --426 TJm -(\(bzerror) 47.8205 Tj --426 TJm -(==) 11.9551 Tj --426 TJm -(BZ_IO_ERROR\)) 71.7307 Tj --426 TJm -({) 5.9776 Tj -102.732 301.269 Td -(BZ2_bzWriteClose) 95.641 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(&bzerror,) 53.798 Tj --426 TJm -(b) 5.9776 Tj --426 TJm -(\);) 11.9551 Tj -102.732 289.314 Td -(/) 5.9776 Tj -108.71 287.571 Td -(*) 5.9776 Tj -118.931 289.314 Td -(handle) 35.8654 Tj --426 TJm -(error) 29.8878 Tj -193.172 287.571 Td -(*) 5.9776 Tj -199.15 289.314 Td -(/) 5.9776 Tj -94.244 277.359 Td -(}) 5.9776 Tj -90 265.404 Td -(}) 5.9776 Tj -90 241.493 Td -(BZ2_bzWriteClose\() 101.6185 Tj --426 TJm -(&bzerror,) 53.798 Tj --426 TJm -(b) 5.9776 Tj --426 TJm -(\);) 11.9551 Tj -90 229.538 Td -(if) 11.9551 Tj --426 TJm -(\(bzerror) 47.8205 Tj --426 TJm -(==) 11.9551 Tj --426 TJm -(BZ_IO_ERROR\)) 71.7307 Tj --426 TJm -({) 5.9776 Tj -94.244 217.583 Td -(/) 5.9776 Tj -100.222 215.84 Td -(*) 5.9776 Tj -110.443 217.583 Td -(handle) 35.8654 Tj --426 TJm -(error) 29.8878 Tj -184.684 215.84 Td -(*) 5.9776 Tj -190.662 217.583 Td -(/) 5.9776 Tj -90 205.628 Td -(}) 5.9776 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 168.168 Td -/F122_0 9.9626 Tf -(And) 17.1556 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(read) 17.1456 Tj --250 TJm -(from) 19.3673 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(compressed) 47.0334 Tj --250 TJm -(\002le:) 15.5018 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -534.414 50.951 Td -(25) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 26 29 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -419.067 749.245 Td -/F122_0 9.9626 Tf -(Programming) 54.7943 Tj --250 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -496.556 749.245 Td -/F124_0 9.9626 Tf -(libbzip2) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 349.39] cm -0 0 468 370.61 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 711.631 Td -/F124_0 9.9626 Tf -(FILE) 23.9102 Tj -113.91 709.888 Td -(*) 5.9776 Tj -132.62 711.631 Td -(f;) 11.9551 Tj -90 699.676 Td -(BZFILE) 35.8654 Tj -125.866 697.933 Td -(*) 5.9776 Tj -136.087 699.676 Td -(b;) 11.9551 Tj -90 687.721 Td -(int) 17.9327 Tj --2130 TJm -(nBuf;) 29.8878 Tj -90 675.766 Td -(char) 23.9102 Tj --1704 TJm -(buf[) 23.9102 Tj --426 TJm -(/) 5.9776 Tj -165.018 674.022 Td -(*) 5.9776 Tj -175.24 675.766 Td -(whatever) 47.8205 Tj --426 TJm -(size) 23.9102 Tj --426 TJm -(you) 17.9327 Tj --426 TJm -(like) 23.9102 Tj -305.79 674.022 Td -(*) 5.9776 Tj -311.767 675.766 Td -(/) 5.9776 Tj --426 TJm -(];) 11.9551 Tj -90 663.811 Td -(int) 17.9327 Tj --2130 TJm -(bzerror;) 47.8205 Tj -90 651.856 Td -(int) 17.9327 Tj --2130 TJm -(nWritten;) 53.798 Tj -90 627.945 Td -(f) 5.9776 Tj --426 TJm -(=) 5.9776 Tj --426 TJm -(fopen) 29.8878 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -("myfile.bz2",) 77.7083 Tj --426 TJm -("r") 17.9327 Tj --426 TJm -(\);) 11.9551 Tj -90 615.99 Td -(if) 11.9551 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(!f) 11.9551 Tj --426 TJm -(\)) 5.9776 Tj --426 TJm -({) 5.9776 Tj -98.488 604.035 Td -(/) 5.9776 Tj -104.466 602.291 Td -(*) 5.9776 Tj -114.687 604.035 Td -(handle) 35.8654 Tj --426 TJm -(error) 29.8878 Tj -188.928 602.291 Td -(*) 5.9776 Tj -194.906 604.035 Td -(/) 5.9776 Tj -90 592.08 Td -(}) 5.9776 Tj -90 580.125 Td -(b) 5.9776 Tj --426 TJm -(=) 5.9776 Tj --426 TJm -(BZ2_bzReadOpen) 83.6858 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(&bzerror,) 53.798 Tj --426 TJm -(f,) 11.9551 Tj --426 TJm -(0,) 11.9551 Tj --426 TJm -(NULL,) 29.8878 Tj --426 TJm -(0) 5.9776 Tj --426 TJm -(\);) 11.9551 Tj -90 568.169 Td -(if) 11.9551 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(bzerror) 41.8429 Tj --426 TJm -(!=) 11.9551 Tj --426 TJm -(BZ_OK) 29.8878 Tj --426 TJm -(\)) 5.9776 Tj --426 TJm -({) 5.9776 Tj -98.488 556.214 Td -(BZ2_bzReadClose) 89.6634 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(&bzerror,) 53.798 Tj --426 TJm -(b) 5.9776 Tj --426 TJm -(\);) 11.9551 Tj -98.488 544.259 Td -(/) 5.9776 Tj -104.466 542.516 Td -(*) 5.9776 Tj -114.687 544.259 Td -(handle) 35.8654 Tj --426 TJm -(error) 29.8878 Tj -188.928 542.516 Td -(*) 5.9776 Tj -194.906 544.259 Td -(/) 5.9776 Tj -90 532.304 Td -(}) 5.9776 Tj -90 508.393 Td -(bzerror) 41.8429 Tj --426 TJm -(=) 5.9776 Tj --426 TJm -(BZ_OK;) 35.8654 Tj -90 496.438 Td -(while) 29.8878 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(bzerror) 41.8429 Tj --426 TJm -(==) 11.9551 Tj --426 TJm -(BZ_OK) 29.8878 Tj --426 TJm -(&&) 11.9551 Tj --426 TJm -(/) 5.9776 Tj -252.948 494.695 Td -(*) 5.9776 Tj -263.17 496.438 Td -(arbitrary) 53.798 Tj --426 TJm -(other) 29.8878 Tj --426 TJm -(conditions) 59.7756 Tj -419.364 494.695 Td -(*) 5.9776 Tj -425.341 496.438 Td -(/\)) 11.9551 Tj --426 TJm -({) 5.9776 Tj -98.488 484.483 Td -(nBuf) 23.9102 Tj --426 TJm -(=) 5.9776 Tj --426 TJm -(BZ2_bzRead) 59.7756 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(&bzerror,) 53.798 Tj --426 TJm -(b,) 11.9551 Tj --426 TJm -(buf,) 23.9102 Tj --426 TJm -(/) 5.9776 Tj -319.478 482.74 Td -(*) 5.9776 Tj -329.7 484.483 Td -(size) 23.9102 Tj --426 TJm -(of) 11.9551 Tj --426 TJm -(buf) 17.9327 Tj -396.23 482.74 Td -(*) 5.9776 Tj -402.208 484.483 Td -(/) 5.9776 Tj --426 TJm -(\);) 11.9551 Tj -98.488 472.528 Td -(if) 11.9551 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(bzerror) 41.8429 Tj --426 TJm -(==) 11.9551 Tj --426 TJm -(BZ_OK) 29.8878 Tj --426 TJm -(\)) 5.9776 Tj --426 TJm -({) 5.9776 Tj -106.976 460.573 Td -(/) 5.9776 Tj -112.953 458.829 Td -(*) 5.9776 Tj -123.175 460.573 Td -(do) 11.9551 Tj --426 TJm -(something) 53.798 Tj --426 TJm -(with) 23.9102 Tj --426 TJm -(buf[0) 29.8878 Tj --426 TJm -(..) 11.9551 Tj --426 TJm -(nBuf-1]) 41.8429 Tj -321.989 458.829 Td -(*) 5.9776 Tj -327.966 460.573 Td -(/) 5.9776 Tj -98.488 448.618 Td -(}) 5.9776 Tj -90 436.662 Td -(}) 5.9776 Tj -90 424.707 Td -(if) 11.9551 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(bzerror) 41.8429 Tj --426 TJm -(!=) 11.9551 Tj --426 TJm -(BZ_STREAM_END) 77.7083 Tj --426 TJm -(\)) 5.9776 Tj --426 TJm -({) 5.9776 Tj -102.732 412.752 Td -(BZ2_bzReadClose) 89.6634 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(&bzerror,) 53.798 Tj --426 TJm -(b) 5.9776 Tj --426 TJm -(\);) 11.9551 Tj -102.732 400.797 Td -(/) 5.9776 Tj -108.71 399.053 Td -(*) 5.9776 Tj -118.931 400.797 Td -(handle) 35.8654 Tj --426 TJm -(error) 29.8878 Tj -193.172 399.053 Td -(*) 5.9776 Tj -199.15 400.797 Td -(/) 5.9776 Tj -90 388.842 Td -(}) 5.9776 Tj --426 TJm -(else) 23.9102 Tj --426 TJm -({) 5.9776 Tj -102.732 376.887 Td -(BZ2_bzReadClose) 89.6634 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(&bzerror,) 53.798 Tj --426 TJm -(b) 5.9776 Tj --426 TJm -(\);) 11.9551 Tj -90 364.931 Td -(}) 5.9776 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 314.637 Td -/F116_0 20.6585 Tf -(3.5.) 34.4584 Tj --278 TJm -(Utility) 57.3893 Tj --278 TJm -(functions) 92.9633 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 284.016 Td -/F116_0 17.2154 Tf -(3.5.1.) 43.0729 Tj --278 TJm -(BZ2_bzBuffT) 106.1502 Tj -80 TJm -(oBuffCompress) 129.1155 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 183.815] cm -0 0 468 95.641 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 271.087 Td -/F124_0 9.9626 Tf -(int) 17.9327 Tj --426 TJm -(BZ2_bzBuffToBuffCompress\() 149.439 Tj --426 TJm -(char) 23.9102 Tj -289.771 269.344 Td -(*) 5.9776 Tj -333.944 271.087 Td -(dest,) 29.8878 Tj -217.319 259.132 Td -(unsigned) 47.8205 Tj --426 TJm -(int) 17.9327 Tj -287.317 257.389 Td -(*) 5.9776 Tj -297.538 259.132 Td -(destLen,) 47.8205 Tj -217.319 247.177 Td -(char) 23.9102 Tj -241.23 245.434 Td -(*) 5.9776 Tj -285.403 247.177 Td -(source,) 41.8429 Tj -217.319 235.222 Td -(unsigned) 47.8205 Tj --426 TJm -(int) 17.9327 Tj --852 TJm -(sourceLen,) 59.7756 Tj -217.319 223.267 Td -(int) 17.9327 Tj --4686 TJm -(blockSize100k,) 83.6858 Tj -217.319 211.312 Td -(int) 17.9327 Tj --4686 TJm -(verbosity,) 59.7756 Tj -217.319 199.356 Td -(int) 17.9327 Tj --4686 TJm -(workFactor) 59.7756 Tj --426 TJm -(\);) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 161.897 Td -/F122_0 9.9626 Tf -(Attempts) 36.5329 Tj --442 TJm -(to) 7.7509 Tj --442 TJm -(compress) 37.6287 Tj --443 TJm -(the) 12.1743 Tj --442 TJm -(data) 16.5977 Tj --442 TJm -(in) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -216.87 161.897 Td -/F124_0 9.9626 Tf -(source[0) 47.8205 Tj --600 TJm -(..) 11.9551 Tj --1200 TJm -(sourceLen-1]) 71.7307 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -370.715 161.897 Td -/F122_0 9.9626 Tf -(into) 15.5018 Tj --442 TJm -(the) 12.1743 Tj --443 TJm -(dest) 16.0497 Tj -1 TJm -(ination) 27.6761 Tj --443 TJm -(b) 4.9813 Tj -20 TJm -(uf) 8.2988 Tj -25 TJm -(fer) 11.0585 Tj -40 TJm -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -486.202 161.897 Td -/F124_0 9.9626 Tf -(dest[0) 35.8654 Tj --600 TJm -(..) 11.9551 Tj -72 148.198 Td -(*) 5.9776 Tj -77.978 149.942 Td -(destLen-1]) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -137.753 149.942 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj --1393 TJm -(If) 6.6351 Tj --379 TJm -(the) 12.1743 Tj --379 TJm -(destination) 43.7259 Tj --379 TJm -(b) 4.9813 Tj -20 TJm -(uf) 8.2988 Tj -25 TJm -(fer) 11.0585 Tj --378 TJm -(is) 6.6451 Tj --379 TJm -(big) 12.7322 Tj --379 TJm -(enough,) 31.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -318.487 148.198 Td -/F124_0 9.9626 Tf -(*) 5.9776 Tj -324.464 149.942 Td -(destLen) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -370.082 149.942 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --379 TJm -(set) 11.0684 Tj --379 TJm -(to) 7.7509 Tj --378 TJm -(the) 12.1743 Tj --379 TJm -(size) 15.4918 Tj --379 TJm -(of) 8.2988 Tj --379 TJm -(the) 12.1743 Tj --379 TJm -(compressed) 47.0334 Tj --379 TJm -(data,) 19.0883 Tj -72 137.986 Td -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -89.527 137.986 Td -/F124_0 9.9626 Tf -(BZ_OK) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -122.556 137.986 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --315 TJm -(returned.) 35.686 Tj --1012 TJm -(If) 6.6351 Tj --315 TJm -(the) 12.1743 Tj --316 TJm -(compressed) 47.0334 Tj --315 TJm -(data) 16.5977 Tj --315 TJm -(w) 7.193 Tj -10 TJm -(on') 13.2801 Tj -18 TJm -(t) 2.7696 Tj --316 TJm -(\002t,) 10.7995 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -313.323 136.243 Td -/F124_0 9.9626 Tf -(*) 5.9776 Tj -319.3 137.986 Td -(destLen) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -364.285 137.986 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --315 TJm -(unchanged,) 45.6486 Tj --332 TJm -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -440.551 137.986 Td -/F124_0 9.9626 Tf -(BZ_OUTBUFF_FULL) 89.6634 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -533.355 137.986 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj -72 126.031 Td -(returned.) 35.686 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 104.113 Td -(Compression) 52.5826 Tj --297 TJm -(in) 7.7509 Tj --297 TJm -(this) 14.396 Tj --297 TJm -(manner) 29.8778 Tj --297 TJm -(is) 6.6451 Tj --297 TJm -(a) 4.4234 Tj --297 TJm -(one-shot) 34.3112 Tj --297 TJm -(e) 4.4234 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(ent,) 14.6649 Tj --309 TJm -(done) 19.3673 Tj --297 TJm -(with) 17.7135 Tj --297 TJm -(a) 4.4234 Tj --297 TJm -(single) 23.8007 Tj --297 TJm -(call) 14.386 Tj --297 TJm -(to) 7.7509 Tj --297 TJm -(this) 14.396 Tj --297 TJm -(function.) 35.696 Tj --903 TJm -(The) 15.4918 Tj --297 TJm -(resulting) 34.8691 Tj --297 TJm -(compressed) 47.0334 Tj -72 92.158 Td -(data) 16.5977 Tj --296 TJm -(is) 6.6451 Tj --296 TJm -(a) 4.4234 Tj --296 TJm -(complete) 36.5229 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -147.988 92.158 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -180.825 92.158 Td -/F122_0 9.9626 Tf -(format) 26.5603 Tj --296 TJm -(data) 16.5977 Tj --296 TJm -(stream.) 29.0509 Tj --897 TJm -(There) 23.2328 Tj --296 TJm -(is) 6.6451 Tj --296 TJm -(no) 9.9626 Tj --296 TJm -(mechanism) 45.3796 Tj --296 TJm -(for) 11.6164 Tj --296 TJm -(making) 29.8878 Tj --296 TJm -(additional) 39.8504 Tj --296 TJm -(calls) 18.2614 Tj --296 TJm -(to) 7.7509 Tj --296 TJm -(pro) 13.2801 Tj -15 TJm -(vide) 17.1556 Tj --296 TJm -(e) 4.4234 Tj -15 TJm -(xtra) 15.4918 Tj -72 80.203 Td -(input) 20.4831 Tj --250 TJm -(data.) 19.0883 Tj --620 TJm -(If) 6.6351 Tj --250 TJm -(you) 14.9439 Tj --250 TJm -(w) 7.193 Tj -10 TJm -(ant) 12.1743 Tj --250 TJm -(that) 14.9439 Tj --250 TJm -(kind) 17.7135 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(mechanism,) 47.8703 Tj --250 TJm -(use) 13.2801 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(lo) 7.7509 Tj -25 TJm -(w-le) 17.7035 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(el) 7.193 Tj --250 TJm -(interf) 21.579 Tj -10 TJm -(ace.) 15.7608 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -534.414 50.951 Td -(26) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 27 30 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -419.067 749.245 Td -/F122_0 9.9626 Tf -(Programming) 54.7943 Tj --250 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -496.556 749.245 Td -/F124_0 9.9626 Tf -(libbzip2) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -72 710.037 Td -/F122_0 9.9626 Tf -(F) 5.5392 Tj -15 TJm -(or) 8.2988 Tj --223 TJm -(the) 12.1743 Tj --224 TJm -(meaning) 34.3112 Tj --223 TJm -(of) 8.2988 Tj --224 TJm -(parameters) 43.7059 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -195.306 710.037 Td -/F124_0 9.9626 Tf -(blockSize100k) 77.7083 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -273.015 710.037 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -277.784 710.037 Td -/F124_0 9.9626 Tf -(verbosity) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -333.808 710.037 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -350.42 710.037 Td -/F124_0 9.9626 Tf -(workFactor) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -410.196 710.037 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --229 TJm -(see) 12.7222 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -429.913 710.037 Td -/F124_0 9.9626 Tf -(BZ2_bzCompressInit) 107.5961 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -537.509 710.037 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 688.12 Td -(T) 6.0871 Tj -80 TJm -(o) 4.9813 Tj --410 TJm -(guarantee) 38.7246 Tj --410 TJm -(that) 14.9439 Tj --410 TJm -(the) 12.1743 Tj --410 TJm -(compressed) 47.0334 Tj --410 TJm -(data) 16.5977 Tj --410 TJm -(will) 15.5018 Tj --410 TJm -(\002t) 8.3088 Tj --410 TJm -(in) 7.7509 Tj --410 TJm -(its) 9.4147 Tj --410 TJm -(b) 4.9813 Tj -20 TJm -(uf) 8.2988 Tj -25 TJm -(fer) 11.0585 Tj -40 TJm -(,) 2.4907 Tj --450 TJm -(allocate) 30.9837 Tj --410 TJm -(an) 9.4047 Tj --410 TJm -(output) 25.4644 Tj --410 TJm -(b) 4.9813 Tj -20 TJm -(uf) 8.2988 Tj -25 TJm -(fer) 11.0585 Tj --411 TJm -(of) 8.2988 Tj --410 TJm -(size) 15.4918 Tj --410 TJm -(1%) 13.2801 Tj --410 TJm -(lar) 10.5105 Tj -18 TJm -(ger) 12.7222 Tj --410 TJm -(than) 17.1556 Tj --410 TJm -(the) 12.1743 Tj -72 676.164 Td -(uncompressed) 56.996 Tj --250 TJm -(data,) 19.0883 Tj --250 TJm -(plus) 16.6077 Tj --250 TJm -(six) 11.6264 Tj --250 TJm -(hundred) 32.6474 Tj --250 TJm -(e) 4.4234 Tj -15 TJm -(xtra) 15.4918 Tj --250 TJm -(bytes.) 23.5217 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 654.247 Td -/F124_0 9.9626 Tf -(BZ2_bzBuffToBuffDecompress) 155.4166 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -230.553 654.247 Td -/F122_0 9.9626 Tf -(will) 15.5018 Tj --315 TJm -(not) 12.7322 Tj --315 TJm -(write) 20.4731 Tj --314 TJm -(data) 16.5977 Tj --315 TJm -(at) 7.193 Tj --315 TJm -(or) 8.2988 Tj --315 TJm -(be) 9.4047 Tj -15 TJm -(yond) 19.9252 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -362.484 654.247 Td -/F124_0 9.9626 Tf -(dest[) 29.8878 Tj -392.372 652.503 Td -(*) 5.9776 Tj -398.349 654.247 Td -(destLen]) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -446.17 654.247 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --331 TJm -(e) 4.4234 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(en) 9.4047 Tj --315 TJm -(in) 7.7509 Tj --315 TJm -(case) 17.1456 Tj --314 TJm -(of) 8.2988 Tj --315 TJm -(b) 4.9813 Tj -20 TJm -(uf) 8.2988 Tj -25 TJm -(fer) 11.0585 Tj -72 642.291 Td -(o) 4.9813 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(er\003o) 18.2614 Tj -25 TJm -(w) 7.193 Tj -65 TJm -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 620.374 Td -(Possible) 33.2153 Tj --250 TJm -(return) 23.7907 Tj --250 TJm -(v) 4.9813 Tj -25 TJm -(alues:) 23.2427 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 451.905] cm -0 0 468 167.372 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 610.909 Td -/F124_0 9.9626 Tf -(BZ_CONFIG_ERROR) 89.6634 Tj -98.488 598.954 Td -(if) 11.9551 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(library) 41.8429 Tj --426 TJm -(has) 17.9327 Tj --426 TJm -(been) 23.9102 Tj --426 TJm -(mis-compiled) 71.7307 Tj -90 586.999 Td -(BZ_PARAM_ERROR) 83.6858 Tj -98.488 575.044 Td -(if) 11.9551 Tj --426 TJm -(dest) 23.9102 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(NULL) 23.9102 Tj --426 TJm -(or) 11.9551 Tj --426 TJm -(destLen) 41.8429 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(NULL) 23.9102 Tj -98.488 563.089 Td -(or) 11.9551 Tj --426 TJm -(blockSize100k) 77.7083 Tj --426 TJm -(<) 5.9776 Tj --426 TJm -(1) 5.9776 Tj --426 TJm -(or) 11.9551 Tj --426 TJm -(blockSize100k) 77.7083 Tj --426 TJm -(>) 5.9776 Tj --426 TJm -(9) 5.9776 Tj -98.488 551.133 Td -(or) 11.9551 Tj --426 TJm -(verbosity) 53.798 Tj --426 TJm -(<) 5.9776 Tj --426 TJm -(0) 5.9776 Tj --426 TJm -(or) 11.9551 Tj --426 TJm -(verbosity) 53.798 Tj --426 TJm -(>) 5.9776 Tj --426 TJm -(4) 5.9776 Tj -98.488 539.178 Td -(or) 11.9551 Tj --426 TJm -(workFactor) 59.7756 Tj --426 TJm -(<) 5.9776 Tj --426 TJm -(0) 5.9776 Tj --426 TJm -(or) 11.9551 Tj --426 TJm -(workFactor) 59.7756 Tj --426 TJm -(>) 5.9776 Tj --426 TJm -(250) 17.9327 Tj -90 527.223 Td -(BZ_MEM_ERROR) 71.7307 Tj -98.488 515.268 Td -(if) 11.9551 Tj --426 TJm -(insufficient) 71.7307 Tj --426 TJm -(memory) 35.8654 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(available) 53.798 Tj -90 503.313 Td -(BZ_OUTBUFF_FULL) 89.6634 Tj -98.488 491.357 Td -(if) 11.9551 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(size) 23.9102 Tj --426 TJm -(of) 11.9551 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(compressed) 59.7756 Tj --426 TJm -(data) 23.9102 Tj --426 TJm -(exceeds) 41.8429 Tj -341.655 489.614 Td -(*) 5.9776 Tj -347.633 491.357 Td -(destLen) 41.8429 Tj -90 479.402 Td -(BZ_OK) 29.8878 Tj -98.488 467.447 Td -(otherwise) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 421.284 Td -/F116_0 17.2154 Tf -(3.5.2.) 43.0729 Tj --278 TJm -(BZ2_bzBuffT) 106.1502 Tj -80 TJm -(oBuffDecompress) 148.259 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 333.038] cm -0 0 468 83.686 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 408.356 Td -/F124_0 9.9626 Tf -(int) 17.9327 Tj --426 TJm -(BZ2_bzBuffToBuffDecompress\() 161.3941 Tj --426 TJm -(char) 23.9102 Tj -301.726 406.612 Td -(*) 5.9776 Tj -345.899 408.356 Td -(dest,) 29.8878 Tj -225.807 396.401 Td -(unsigned) 47.8205 Tj --426 TJm -(int) 17.9327 Tj -295.805 394.657 Td -(*) 5.9776 Tj -306.026 396.401 Td -(destLen,) 47.8205 Tj -225.807 384.446 Td -(char) 23.9102 Tj -249.717 382.702 Td -(*) 5.9776 Tj -293.891 384.446 Td -(source,) 41.8429 Tj -225.807 372.49 Td -(unsigned) 47.8205 Tj --426 TJm -(int) 17.9327 Tj --852 TJm -(sourceLen,) 59.7756 Tj -225.807 360.535 Td -(int) 17.9327 Tj --4686 TJm -(small,) 35.8654 Tj -225.807 348.58 Td -(int) 17.9327 Tj --4686 TJm -(verbosity) 53.798 Tj --426 TJm -(\);) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 311.12 Td -/F122_0 9.9626 Tf -(Attempts) 36.5329 Tj --358 TJm -(to) 7.7509 Tj --359 TJm -(decompress) 47.0334 Tj --358 TJm -(the) 12.1743 Tj --358 TJm -(data) 16.5977 Tj --359 TJm -(in) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -221.259 311.12 Td -/F124_0 9.9626 Tf -(source[0) 47.8205 Tj --600 TJm -(..) 11.9551 Tj --1200 TJm -(sourceLen-1]) 71.7307 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -374.268 311.12 Td -/F122_0 9.9626 Tf -(into) 15.5018 Tj --358 TJm -(the) 12.1743 Tj --359 TJm -(destination) 43.7259 Tj --358 TJm -(b) 4.9813 Tj -20 TJm -(uf) 8.2988 Tj -25 TJm -(fer) 11.0585 Tj -40 TJm -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -486.202 311.12 Td -/F124_0 9.9626 Tf -(dest[0) 35.8654 Tj --600 TJm -(..) 11.9551 Tj -72 297.422 Td -(*) 5.9776 Tj -77.978 299.165 Td -(destLen-1]) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -137.753 299.165 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj --1123 TJm -(If) 6.6351 Tj --334 TJm -(the) 12.1743 Tj --334 TJm -(destination) 43.7259 Tj --334 TJm -(b) 4.9813 Tj -20 TJm -(uf) 8.2988 Tj -25 TJm -(fer) 11.0585 Tj --334 TJm -(is) 6.6451 Tj --334 TJm -(big) 12.7322 Tj --334 TJm -(enough,) 31.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -312.554 297.422 Td -/F124_0 9.9626 Tf -(*) 5.9776 Tj -318.531 299.165 Td -(destLen) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -363.701 299.165 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --334 TJm -(set) 11.0684 Tj --334 TJm -(to) 7.7509 Tj --334 TJm -(the) 12.1743 Tj --334 TJm -(size) 15.4918 Tj --333 TJm -(of) 8.2988 Tj --334 TJm -(the) 12.1743 Tj --334 TJm -(uncompressed) 56.996 Tj --334 TJm -(data,) 19.0883 Tj -72 287.21 Td -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -89.527 287.21 Td -/F124_0 9.9626 Tf -(BZ_OK) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -122.556 287.21 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --315 TJm -(returned.) 35.686 Tj --1012 TJm -(If) 6.6351 Tj --315 TJm -(the) 12.1743 Tj --316 TJm -(compressed) 47.0334 Tj --315 TJm -(data) 16.5977 Tj --315 TJm -(w) 7.193 Tj -10 TJm -(on') 13.2801 Tj -18 TJm -(t) 2.7696 Tj --316 TJm -(\002t,) 10.7995 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -313.323 285.467 Td -/F124_0 9.9626 Tf -(*) 5.9776 Tj -319.3 287.21 Td -(destLen) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -364.285 287.21 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --315 TJm -(unchanged,) 45.6486 Tj --332 TJm -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -440.551 287.21 Td -/F124_0 9.9626 Tf -(BZ_OUTBUFF_FULL) 89.6634 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -533.355 287.21 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj -72 275.255 Td -(returned.) 35.686 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 253.337 Td -/F124_0 9.9626 Tf -(source) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -110.981 253.337 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --313 TJm -(assumed) 34.3112 Tj --312 TJm -(to) 7.7509 Tj --313 TJm -(hold) 17.7135 Tj --313 TJm -(a) 4.4234 Tj --313 TJm -(complete) 36.5229 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -237.04 253.337 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -270.044 253.337 Td -/F122_0 9.9626 Tf -(format) 26.5603 Tj --313 TJm -(data) 16.5977 Tj --312 TJm -(stream.) 29.0509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -353.446 253.337 Td -/F124_0 9.9626 Tf -(BZ2_bzBuffToBuffDecompress) 155.4166 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -511.978 253.337 Td -/F122_0 9.9626 Tf -(tries) 17.1556 Tj --313 TJm -(to) 7.7509 Tj -72 241.382 Td -(decompress) 47.0334 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(entirety) 30.4357 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(stream) 26.5603 Tj --250 TJm -(into) 15.5018 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(output) 25.4644 Tj --250 TJm -(b) 4.9813 Tj -20 TJm -(uf) 8.2988 Tj -25 TJm -(fer) 11.0585 Tj -55 TJm -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 219.464 Td -(F) 5.5392 Tj -15 TJm -(or) 8.2988 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(meaning) 34.3112 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(parameters) 43.7059 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -196.631 219.464 Td -/F124_0 9.9626 Tf -(small) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -229.01 219.464 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -245.887 219.464 Td -/F124_0 9.9626 Tf -(verbosity) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -299.685 219.464 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --250 TJm -(see) 12.7222 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -319.879 219.464 Td -/F124_0 9.9626 Tf -(BZ2_bzDecompressInit) 119.5512 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -439.431 219.464 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 197.546 Td -(Because) 33.1954 Tj --250 TJm -(the) 12.1743 Tj --249 TJm -(compression) 50.3609 Tj --250 TJm -(ratio) 18.2614 Tj --249 TJm -(of) 8.2988 Tj --250 TJm -(the) 12.1743 Tj --249 TJm -(compressed) 47.0334 Tj --250 TJm -(data) 16.5977 Tj --249 TJm -(cannot) 26.5603 Tj --250 TJm -(be) 9.4047 Tj --250 TJm -(kno) 14.9439 Tj -25 TJm -(wn) 12.1743 Tj --249 TJm -(in) 7.7509 Tj --250 TJm -(adv) 14.386 Tj -25 TJm -(ance,) 20.7421 Tj --249 TJm -(there) 19.9152 Tj --250 TJm -(is) 6.6451 Tj --249 TJm -(no) 9.9626 Tj --250 TJm -(easy) 17.7035 Tj --250 TJm -(w) 7.193 Tj -10 TJm -(ay) 9.4047 Tj --249 TJm -(to) 7.7509 Tj --250 TJm -(guarantee) 38.7246 Tj -72 185.591 Td -(that) 14.9439 Tj --286 TJm -(the) 12.1743 Tj --287 TJm -(output) 25.4644 Tj --286 TJm -(b) 4.9813 Tj -20 TJm -(uf) 8.2988 Tj -25 TJm -(fer) 11.0585 Tj --287 TJm -(will) 15.5018 Tj --286 TJm -(be) 9.4047 Tj --286 TJm -(big) 12.7322 Tj --287 TJm -(enough.) 31.8205 Tj --838 TJm -(Y) 7.193 Tj -110 TJm -(ou) 9.9626 Tj --287 TJm -(may) 17.1556 Tj --286 TJm -(of) 8.2988 Tj --287 TJm -(course) 26.0024 Tj --286 TJm -(mak) 17.1556 Tj -10 TJm -(e) 4.4234 Tj --286 TJm -(arrangements) 53.6685 Tj --287 TJm -(in) 7.7509 Tj --286 TJm -(your) 18.2614 Tj --287 TJm -(code) 18.8094 Tj --286 TJm -(to) 7.7509 Tj --286 TJm -(record) 25.4445 Tj --287 TJm -(the) 12.1743 Tj --286 TJm -(size) 15.4918 Tj --287 TJm -(of) 8.2988 Tj -72 173.636 Td -(the) 12.1743 Tj --250 TJm -(uncompressed) 56.996 Tj --250 TJm -(data,) 19.0883 Tj --250 TJm -(b) 4.9813 Tj -20 TJm -(ut) 7.7509 Tj --250 TJm -(such) 18.2614 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(mechanism) 45.3796 Tj --250 TJm -(is) 6.6451 Tj --250 TJm -(be) 9.4047 Tj -15 TJm -(yond) 19.9252 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(scope) 22.6848 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(this) 14.396 Tj --250 TJm -(library) 26.5603 Tj -65 TJm -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 151.718 Td -/F124_0 9.9626 Tf -(BZ2_bzBuffToBuffDecompress) 155.4166 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -230.553 151.718 Td -/F122_0 9.9626 Tf -(will) 15.5018 Tj --315 TJm -(not) 12.7322 Tj --315 TJm -(write) 20.4731 Tj --314 TJm -(data) 16.5977 Tj --315 TJm -(at) 7.193 Tj --315 TJm -(or) 8.2988 Tj --315 TJm -(be) 9.4047 Tj -15 TJm -(yond) 19.9252 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -362.484 151.718 Td -/F124_0 9.9626 Tf -(dest[) 29.8878 Tj -392.372 149.975 Td -(*) 5.9776 Tj -398.349 151.718 Td -(destLen]) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -446.17 151.718 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --331 TJm -(e) 4.4234 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(en) 9.4047 Tj --315 TJm -(in) 7.7509 Tj --315 TJm -(case) 17.1456 Tj --314 TJm -(of) 8.2988 Tj --315 TJm -(b) 4.9813 Tj -20 TJm -(uf) 8.2988 Tj -25 TJm -(fer) 11.0585 Tj -72 139.763 Td -(o) 4.9813 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(er\003o) 18.2614 Tj -25 TJm -(w) 7.193 Tj -65 TJm -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 117.845 Td -(Possible) 33.2153 Tj --250 TJm -(return) 23.7907 Tj --250 TJm -(v) 4.9813 Tj -25 TJm -(alues:) 23.2427 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -534.414 50.951 Td -(27) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 28 31 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -420.96 749.245 Td -/F122_0 9.9626 Tf -(Programming) 54.7943 Tj --250 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -498.449 749.245 Td -/F124_0 9.9626 Tf -(libbzip2) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 75.786 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 492.852] cm -0 0 468 227.148 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 711.631 Td -/F124_0 9.9626 Tf -(BZ_CONFIG_ERROR) 89.6634 Tj -98.488 699.676 Td -(if) 11.9551 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(library) 41.8429 Tj --426 TJm -(has) 17.9327 Tj --426 TJm -(been) 23.9102 Tj --426 TJm -(mis-compiled) 71.7307 Tj -90 687.721 Td -(BZ_PARAM_ERROR) 83.6858 Tj -98.488 675.766 Td -(if) 11.9551 Tj --426 TJm -(dest) 23.9102 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(NULL) 23.9102 Tj --426 TJm -(or) 11.9551 Tj --426 TJm -(destLen) 41.8429 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(NULL) 23.9102 Tj -98.488 663.811 Td -(or) 11.9551 Tj --426 TJm -(small) 29.8878 Tj --426 TJm -(!=) 11.9551 Tj --426 TJm -(0) 5.9776 Tj --426 TJm -(&&) 11.9551 Tj --426 TJm -(small) 29.8878 Tj --426 TJm -(!=) 11.9551 Tj --426 TJm -(1) 5.9776 Tj -98.488 651.856 Td -(or) 11.9551 Tj --426 TJm -(verbosity) 53.798 Tj --426 TJm -(<) 5.9776 Tj --426 TJm -(0) 5.9776 Tj --426 TJm -(or) 11.9551 Tj --426 TJm -(verbosity) 53.798 Tj --426 TJm -(>) 5.9776 Tj --426 TJm -(4) 5.9776 Tj -90 639.9 Td -(BZ_MEM_ERROR) 71.7307 Tj -98.488 627.945 Td -(if) 11.9551 Tj --426 TJm -(insufficient) 71.7307 Tj --426 TJm -(memory) 35.8654 Tj --426 TJm -(is) 11.9551 Tj --426 TJm -(available) 53.798 Tj -90 615.99 Td -(BZ_OUTBUFF_FULL) 89.6634 Tj -98.488 604.035 Td -(if) 11.9551 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(size) 23.9102 Tj --426 TJm -(of) 11.9551 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(compressed) 59.7756 Tj --426 TJm -(data) 23.9102 Tj --426 TJm -(exceeds) 41.8429 Tj -341.655 602.291 Td -(*) 5.9776 Tj -347.633 604.035 Td -(destLen) 41.8429 Tj -90 592.08 Td -(BZ_DATA_ERROR) 77.7083 Tj -98.488 580.124 Td -(if) 11.9551 Tj --426 TJm -(a) 5.9776 Tj --426 TJm -(data) 23.9102 Tj --426 TJm -(integrity) 53.798 Tj --426 TJm -(error) 29.8878 Tj --426 TJm -(was) 17.9327 Tj --426 TJm -(detected) 47.8205 Tj --426 TJm -(in) 11.9551 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(compressed) 59.7756 Tj --426 TJm -(data) 23.9102 Tj -90 568.169 Td -(BZ_DATA_ERROR_MAGIC) 113.5736 Tj -98.488 556.214 Td -(if) 11.9551 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(compressed) 59.7756 Tj --426 TJm -(data) 23.9102 Tj --426 TJm -(doesn't) 41.8429 Tj --426 TJm -(begin) 29.8878 Tj --426 TJm -(with) 23.9102 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(right) 29.8878 Tj --426 TJm -(magic) 29.8878 Tj --426 TJm -(bytes) 29.8878 Tj -90 544.259 Td -(BZ_UNEXPECTED_EOF) 101.6185 Tj -98.488 532.304 Td -(if) 11.9551 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(compressed) 59.7756 Tj --426 TJm -(data) 23.9102 Tj --426 TJm -(ends) 23.9102 Tj --426 TJm -(unexpectedly) 71.7307 Tj -90 520.349 Td -(BZ_OK) 29.8878 Tj -98.488 508.393 Td -(otherwise) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 458.099 Td -/F116_0 20.6585 Tf -(3.6.) 34.4584 Tj --278 TJm -(zlib) 34.4377 Tj --278 TJm -(compatibility) 127.4216 Tj --278 TJm -(functions) 92.9633 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 436.181 Td -/F122_0 9.9626 Tf -(Y) 7.193 Tj -110 TJm -(oshioka) 30.9936 Tj --604 TJm -(Tsuneo) 29.3299 Tj --604 TJm -(has) 13.2801 Tj --604 TJm -(contrib) 28.224 Tj -20 TJm -(uted) 17.1556 Tj --604 TJm -(some) 21.031 Tj --604 TJm -(functions) 37.0808 Tj --604 TJm -(to) 7.7509 Tj --604 TJm -(gi) 7.7509 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --604 TJm -(better) 22.6848 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -356.347 436.181 Td -/F124_0 9.9626 Tf -(zlib) 23.9102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -386.275 436.181 Td -/F122_0 9.9626 Tf -(compatibility) 53.1405 Tj -65 TJm -(.) 2.4907 Tj --1372 TJm -(These) 23.7907 Tj --604 TJm -(functions) 37.0808 Tj --604 TJm -(are) 12.1643 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 424.226 Td -/F124_0 9.9626 Tf -(BZ2_bzopen) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -131.776 424.226 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -144.283 424.226 Td -/F124_0 9.9626 Tf -(BZ2_bzread) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -204.059 424.226 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -216.567 424.226 Td -/F124_0 9.9626 Tf -(BZ2_bzwrite) 65.7532 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -282.32 424.226 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -294.827 424.226 Td -/F124_0 9.9626 Tf -(BZ2_bzflush) 65.7532 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -360.581 424.226 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -373.088 424.226 Td -/F124_0 9.9626 Tf -(BZ2_bzclose) 65.7532 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -438.842 424.226 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -451.349 424.226 Td -/F124_0 9.9626 Tf -(BZ2_bzerror) 65.7532 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -525.614 424.226 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 412.271 Td -/F124_0 9.9626 Tf -(BZ2_bzlibVersion) 95.641 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -167.641 412.271 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj --1420 TJm -(These) 23.7907 Tj --383 TJm -(functions) 37.0808 Tj --383 TJm -(are) 12.1643 Tj --383 TJm -(not) 12.7322 Tj --383 TJm -(\(yet\)) 18.8094 Tj --384 TJm -(of) 8.2988 Tj -25 TJm -(\002cially) 27.6761 Tj --383 TJm -(part) 15.4918 Tj --383 TJm -(of) 8.2988 Tj --383 TJm -(the) 12.1743 Tj --384 TJm -(library) 26.5603 Tj -65 TJm -(.) 2.4907 Tj --1419 TJm -(If) 6.6351 Tj --383 TJm -(the) 12.1743 Tj -15 TJm -(y) 4.9813 Tj --384 TJm -(break,) 24.6176 Tj --416 TJm -(you) 14.9439 Tj --383 TJm -(get) 12.1743 Tj --384 TJm -(to) 7.7509 Tj -72 400.316 Td -(k) 4.9813 Tj -10 TJm -(eep) 13.8281 Tj --250 TJm -(all) 9.9626 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(pieces.) 27.3872 Tj --620 TJm -(Ne) 11.6164 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(ertheless,) 37.3498 Tj --250 TJm -(I) 3.3175 Tj --250 TJm -(think) 20.4831 Tj --250 TJm -(the) 12.1743 Tj -15 TJm -(y) 4.9813 Tj --250 TJm -(w) 7.193 Tj -10 TJm -(ork) 13.2801 Tj --250 TJm -(ok.) 12.4533 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 349.342] cm -0 0 468 47.821 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 388.794 Td -/F124_0 9.9626 Tf -(typedef) 41.8429 Tj --426 TJm -(void) 23.9102 Tj --426 TJm -(BZFILE;) 41.8429 Tj -90 364.884 Td -(const) 29.8878 Tj --426 TJm -(char) 23.9102 Tj -152.286 363.14 Td -(*) 5.9776 Tj -162.508 364.884 Td -(BZ2_bzlibVersion) 95.641 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(void) 23.9102 Tj --426 TJm -(\);) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 327.424 Td -/F122_0 9.9626 Tf -(Returns) 30.9936 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(string) 22.6948 Tj --250 TJm -(indicating) 39.8504 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(library) 26.5603 Tj --250 TJm -(v) 4.9813 Tj -15 TJm -(ersion.) 26.8392 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 288.405] cm -0 0 468 35.866 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 315.902 Td -/F124_0 9.9626 Tf -(BZFILE) 35.8654 Tj -130.109 314.159 Td -(*) 5.9776 Tj -140.331 315.902 Td -(BZ2_bzopen) 59.7756 Tj --852 TJm -(\() 5.9776 Tj --426 TJm -(const) 29.8878 Tj --426 TJm -(char) 23.9102 Tj -281.103 314.159 Td -(*) 5.9776 Tj -287.08 315.902 Td -(path,) 29.8878 Tj --426 TJm -(const) 29.8878 Tj --426 TJm -(char) 23.9102 Tj -383.498 314.159 Td -(*) 5.9776 Tj -389.476 315.902 Td -(mode) 23.9102 Tj --426 TJm -(\);) 11.9551 Tj -90 303.947 Td -(BZFILE) 35.8654 Tj -130.109 302.204 Td -(*) 5.9776 Tj -140.331 303.947 Td -(BZ2_bzdopen) 65.7532 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(int) 17.9327 Tj --3408 TJm -(fd,) 17.9327 Tj --1704 TJm -(const) 29.8878 Tj --426 TJm -(char) 23.9102 Tj -369.629 302.204 Td -(*) 5.9776 Tj -375.607 303.947 Td -(mode) 23.9102 Tj --426 TJm -(\);) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 266.488 Td -/F122_0 9.9626 Tf -(Opens) 25.4544 Tj --243 TJm -(a) 4.4234 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -106.713 266.488 Td -/F124_0 9.9626 Tf -(.bz2) 23.9102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -133.041 266.488 Td -/F122_0 9.9626 Tf -(\002le) 12.7322 Tj --243 TJm -(for) 11.6164 Tj --242 TJm -(reading) 29.8778 Tj --243 TJm -(or) 8.2988 Tj --243 TJm -(writing,) 31.2726 Tj --244 TJm -(using) 21.589 Tj --243 TJm -(either) 22.6848 Tj --242 TJm -(its) 9.4147 Tj --243 TJm -(name) 21.579 Tj --243 TJm -(or) 8.2988 Tj --242 TJm -(a) 4.4234 Tj --243 TJm -(pre-e) 20.4632 Tj -15 TJm -(xisting) 27.1282 Tj --243 TJm -(\002le) 12.7322 Tj --242 TJm -(descriptor) 39.8404 Tj -55 TJm -(.) 2.4907 Tj --615 TJm -(Analogous) 43.1679 Tj --243 TJm -(to) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -510.112 266.488 Td -/F124_0 9.9626 Tf -(fopen) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 254.532 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -88.877 254.532 Td -/F124_0 9.9626 Tf -(fdopen) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -124.742 254.532 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 216.137] cm -0 0 468 35.866 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 243.633 Td -/F124_0 9.9626 Tf -(int) 17.9327 Tj --426 TJm -(BZ2_bzread) 59.7756 Tj --852 TJm -(\() 5.9776 Tj --426 TJm -(BZFILE) 35.8654 Tj -226.528 241.89 Td -(*) 5.9776 Tj -236.749 243.633 Td -(b,) 11.9551 Tj --426 TJm -(void) 23.9102 Tj -276.859 241.89 Td -(*) 5.9776 Tj -287.08 243.633 Td -(buf,) 23.9102 Tj --426 TJm -(int) 17.9327 Tj --426 TJm -(len) 17.9327 Tj --426 TJm -(\);) 11.9551 Tj -90 231.678 Td -(int) 17.9327 Tj --426 TJm -(BZ2_bzwrite) 65.7532 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(BZFILE) 35.8654 Tj -228.261 229.935 Td -(*) 5.9776 Tj -238.483 231.678 Td -(b,) 11.9551 Tj --426 TJm -(void) 23.9102 Tj -278.592 229.935 Td -(*) 5.9776 Tj -288.814 231.678 Td -(buf,) 23.9102 Tj --426 TJm -(int) 17.9327 Tj --426 TJm -(len) 17.9327 Tj --426 TJm -(\);) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 194.219 Td -/F122_0 9.9626 Tf -(Reads/writes) 51.4668 Tj --250 TJm -(data) 16.5977 Tj --250 TJm -(from/to) 29.8878 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(pre) 12.7222 Tj -25 TJm -(viously) 29.3399 Tj --250 TJm -(opened) 28.772 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -259.903 194.219 Td -/F124_0 9.9626 Tf -(BZFILE) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -295.769 194.219 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj --500 TJm -(Analogous) 43.1679 Tj --250 TJm -(to) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -359.141 194.219 Td -/F124_0 9.9626 Tf -(fread) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -391.519 194.219 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -408.396 194.219 Td -/F124_0 9.9626 Tf -(fwrite) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -444.261 194.219 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 155.2] cm -0 0 468 35.866 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 182.697 Td -/F124_0 9.9626 Tf -(int) 17.9327 Tj --852 TJm -(BZ2_bzflush) 65.7532 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(BZFILE) 35.8654 Tj -232.505 180.954 Td -(*) 5.9776 Tj -242.727 182.697 Td -(b) 5.9776 Tj --426 TJm -(\);) 11.9551 Tj -90 170.742 Td -(void) 23.9102 Tj --426 TJm -(BZ2_bzclose) 65.7532 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(BZFILE) 35.8654 Tj -234.239 168.998 Td -(*) 5.9776 Tj -244.46 170.742 Td -(b) 5.9776 Tj --426 TJm -(\);) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 133.282 Td -/F122_0 9.9626 Tf -(Flushes/closes) 57.5639 Tj --250 TJm -(a) 4.4234 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -138.968 133.282 Td -/F124_0 9.9626 Tf -(BZFILE) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -174.833 133.282 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -179.815 133.282 Td -/F124_0 9.9626 Tf -(BZ2_bzflush) 65.7532 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -248.059 133.282 Td -/F122_0 9.9626 Tf -(doesn') 26.5603 Tj -18 TJm -(t) 2.7696 Tj --250 TJm -(actually) 31.5416 Tj --250 TJm -(do) 9.9626 Tj --250 TJm -(an) 9.4047 Tj -15 TJm -(ything.) 27.9551 Tj --620 TJm -(Analogous) 43.1679 Tj --250 TJm -(to) 7.7509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -425.472 133.282 Td -/F124_0 9.9626 Tf -(fflush) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -463.828 133.282 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -480.705 133.282 Td -/F124_0 9.9626 Tf -(fclose) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -516.57 133.282 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 106.219] cm -0 0 468 23.91 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 121.761 Td -/F124_0 9.9626 Tf -(const) 29.8878 Tj --426 TJm -(char) 23.9102 Tj -152.286 120.017 Td -(*) 5.9776 Tj -162.508 121.761 Td -(BZ2_bzerror) 65.7532 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(BZFILE) 35.8654 Tj -282.836 120.017 Td -(*) 5.9776 Tj -288.814 121.761 Td -(b,) 11.9551 Tj --426 TJm -(int) 17.9327 Tj -327.19 120.017 Td -(*) 5.9776 Tj -333.167 121.761 Td -(errnum) 35.8654 Tj --426 TJm -(\)) 5.9776 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 84.301 Td -/F122_0 9.9626 Tf -(Returns) 30.9936 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(string) 22.6948 Tj --250 TJm -(describing) 41.5042 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(more) 20.4731 Tj --250 TJm -(recent) 24.3386 Tj --250 TJm -(error) 19.3573 Tj --250 TJm -(status) 22.6948 Tj --250 TJm -(of) 8.2988 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -303.858 84.301 Td -/F124_0 9.9626 Tf -(b) 5.9776 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -309.835 84.301 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --250 TJm -(and) 14.386 Tj --250 TJm -(also) 16.0497 Tj --250 TJm -(sets) 14.9439 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -367.668 82.558 Td -/F124_0 9.9626 Tf -(*) 5.9776 Tj -373.645 84.301 Td -(errnum) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -412.002 84.301 Td -/F122_0 9.9626 Tf -(to) 7.7509 Tj --250 TJm -(its) 9.4147 Tj --250 TJm -(numerical) 39.8404 Tj --250 TJm -(v) 4.9813 Tj -25 TJm -(alue.) 19.0883 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -536.307 50.951 Td -(28) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 29 32 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -419.067 749.245 Td -/F122_0 9.9626 Tf -(Programming) 54.7943 Tj --250 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -496.556 749.245 Td -/F124_0 9.9626 Tf -(libbzip2) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -72 704.93 Td -/F116_0 20.6585 Tf -(3.7.) 34.4584 Tj --278 TJm -(Using) 57.3893 Tj --278 TJm -(the) 30.9878 Tj --278 TJm -(librar) 51.6669 Tj --10 TJm -(y) 11.4861 Tj --278 TJm -(in) 18.3654 Tj --278 TJm -(a) 11.4861 Tj --278 TJm -(stdio-free) 94.1201 Tj -72 680.139 Td -(en) 24.1085 Tj -40 TJm -(vir) 25.2653 Tj -20 TJm -(onment) 74.5978 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 649.583 Td -/F116_0 17.2154 Tf -(3.7.1.) 43.0729 Tj --278 TJm -(Getting) 60.2539 Tj --278 TJm -(rid) 22.0013 Tj --278 TJm -(of) 16.2513 Tj --278 TJm -(stdio) 41.1276 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 627.73 Td -/F122_0 9.9626 Tf -(In) 8.2988 Tj --319 TJm -(a) 4.4234 Tj --319 TJm -(deeply) 26.5603 Tj --319 TJm -(embedded) 40.9463 Tj --319 TJm -(application,) 46.7644 Tj --336 TJm -(you) 14.9439 Tj --319 TJm -(might) 23.2527 Tj --319 TJm -(w) 7.193 Tj -10 TJm -(ant) 12.1743 Tj --319 TJm -(to) 7.7509 Tj --319 TJm -(use) 13.2801 Tj --319 TJm -(just) 14.396 Tj --319 TJm -(the) 12.1743 Tj --319 TJm -(memory-to-memory) 80.7967 Tj --319 TJm -(functions.) 39.5714 Tj --1035 TJm -(Y) 7.193 Tj -110 TJm -(ou) 9.9626 Tj --319 TJm -(can) 13.8281 Tj --319 TJm -(do) 9.9626 Tj --319 TJm -(this) 14.396 Tj -72 615.775 Td -(con) 14.386 Tj -40 TJm -(v) 4.9813 Tj -15 TJm -(eniently) 32.0995 Tj --327 TJm -(by) 9.9626 Tj --327 TJm -(compiling) 40.4083 Tj --327 TJm -(the) 12.1743 Tj --327 TJm -(library) 26.5603 Tj --327 TJm -(with) 17.7135 Tj --328 TJm -(preproces) 38.7246 Tj -1 TJm -(sor) 12.1743 Tj --328 TJm -(symbol) 29.3399 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -336.045 615.775 Td -/F124_0 9.9626 Tf -(BZ_NO_STDIO) 65.7532 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -405.057 615.775 Td -/F122_0 9.9626 Tf -(de\002ned.) 31.8205 Tj --1083 TJm -(Doing) 24.9065 Tj --327 TJm -(this) 14.396 Tj --327 TJm -(gi) 7.7509 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(es) 8.2988 Tj --327 TJm -(you) 14.9439 Tj --327 TJm -(a) 4.4234 Tj -72 603.819 Td -(library) 26.5603 Tj --250 TJm -(containing) 42.0621 Tj --250 TJm -(only) 17.7135 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(follo) 18.8194 Tj -25 TJm -(wing) 19.9252 Tj --250 TJm -(eight) 19.9252 Tj --250 TJm -(functions:) 39.8504 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 581.966 Td -/F124_0 9.9626 Tf -(BZ2_bzCompressInit) 107.5961 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -179.597 581.966 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -199.079 581.966 Td -/F124_0 9.9626 Tf -(BZ2_bzCompress) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -282.765 581.966 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -302.247 581.966 Td -/F124_0 9.9626 Tf -(BZ2_bzCompressEnd) 101.6185 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --1414 TJm -(BZ2_bzDe) 47.8205 Tj --1 TJm -(compressInit) 71.7307 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -537.509 581.966 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 570.011 Td -/F124_0 9.9626 Tf -(BZ2_bzDecompress) 95.641 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -167.641 570.011 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -172.144 570.011 Td -/F124_0 9.9626 Tf -(BZ2_bzDecompressEnd) 113.5736 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --190 TJm -(BZ2_bzBuffToBuffCompress) 143.4614 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -431.073 570.011 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -435.577 570.011 Td -/F124_0 9.9626 Tf -(BZ2_bzBuffToBuffDecompress) 155.4166 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 548.158 Td -/F122_0 9.9626 Tf -(When) 23.7907 Tj --250 TJm -(compiled) 37.0808 Tj --250 TJm -(lik) 10.5205 Tj -10 TJm -(e) 4.4234 Tj --250 TJm -(this,) 16.8866 Tj --250 TJm -(all) 9.9626 Tj --250 TJm -(functions) 37.0808 Tj --250 TJm -(will) 15.5018 Tj --250 TJm -(ignore) 25.4544 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -272.526 548.158 Td -/F124_0 9.9626 Tf -(verbosity) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -328.815 548.158 Td -/F122_0 9.9626 Tf -(settings.) 32.9364 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 517.601 Td -/F116_0 17.2154 Tf -(3.7.2.) 43.0729 Tj --278 TJm -(Critical) 58.3602 Tj --278 TJm -(err) 22.9653 Tj -20 TJm -(or) 17.2154 Tj --278 TJm -(handling) 71.7366 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 495.748 Td -/F124_0 9.9626 Tf -(libbzip2) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -124.529 495.748 Td -/F122_0 9.9626 Tf -(contains) 33.2053 Tj --473 TJm -(a) 4.4234 Tj --472 TJm -(number) 30.4357 Tj --473 TJm -(of) 8.2988 Tj --472 TJm -(internal) 30.4357 Tj --473 TJm -(assertion) 35.417 Tj --472 TJm -(checks) 27.1082 Tj --473 TJm -(which) 24.3486 Tj --472 TJm -(should,) 29.0609 Tj --529 TJm -(needless) 33.7533 Tj --472 TJm -(to) 7.7509 Tj --473 TJm -(say) 13.2801 Tj -65 TJm -(,) 2.4907 Tj --528 TJm -(ne) 9.4047 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(er) 7.7409 Tj --473 TJm -(be) 9.4047 Tj --472 TJm -(acti) 14.386 Tj -25 TJm -(v) 4.9813 Tj -25 TJm -(ated.) 19.0883 Tj -72 483.793 Td -(Ne) 11.6164 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(ertheless,) 37.3498 Tj --533 TJm -(if) 6.0871 Tj --476 TJm -(an) 9.4047 Tj --476 TJm -(assertion) 35.417 Tj --476 TJm -(should) 26.5703 Tj --476 TJm -(f) 3.3175 Tj -10 TJm -(ail,) 12.4533 Tj --532 TJm -(beha) 18.8094 Tj -20 TJm -(viour) 21.031 Tj --476 TJm -(depends) 32.6474 Tj --476 TJm -(on) 9.9626 Tj --476 TJm -(whether) 32.0895 Tj --476 TJm -(or) 8.2988 Tj --477 TJm -(not) 12.7322 Tj --476 TJm -(the) 12.1743 Tj --476 TJm -(library) 26.5603 Tj --476 TJm -(w) 7.193 Tj -10 TJm -(as) 8.2988 Tj --476 TJm -(compiled) 37.0808 Tj --476 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 471.838 Td -/F124_0 9.9626 Tf -(BZ_NO_STDIO) 65.7532 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -140.244 471.838 Td -/F122_0 9.9626 Tf -(set.) 13.5591 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 449.985 Td -(F) 5.5392 Tj -15 TJm -(or) 8.2988 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(normal) 28.224 Tj --250 TJm -(compile,) 34.5901 Tj --250 TJm -(an) 9.4047 Tj --250 TJm -(assertion) 35.417 Tj --250 TJm -(f) 3.3175 Tj -10 TJm -(ailure) 22.6848 Tj --250 TJm -(yields) 23.8007 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(message:) 36.5229 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 428.131 Td -(bzip2/libbzip2:) 60.3335 Tj --310 TJm -(internal) 30.4357 Tj --250 TJm -(error) 19.3573 Tj --250 TJm -(number) 30.4357 Tj --250 TJm -(N.) 9.6836 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 406.278 Td -(This) 17.7135 Tj --344 TJm -(is) 6.6451 Tj --344 TJm -(a) 4.4234 Tj --344 TJm -(b) 4.9813 Tj -20 TJm -(ug) 9.9626 Tj --343 TJm -(in) 7.7509 Tj --344 TJm -(bzip2/libbzip2,) 60.0546 Tj --368 TJm -(1.0.6) 19.9252 Tj --343 TJm -(of) 8.2988 Tj --344 TJm -(6) 4.9813 Tj --344 TJm -(September) 42.61 Tj --344 TJm -(2010.) 22.4159 Tj --592 TJm -(Please) 25.4544 Tj --344 TJm -(report) 23.7907 Tj --343 TJm -(it) 5.5392 Tj --344 TJm -(to) 7.7509 Tj --344 TJm -(me) 12.1743 Tj --344 TJm -(at:) 9.9626 Tj --498 TJm -(jse) 11.0684 Tj -25 TJm -(w) 7.193 Tj -10 TJm -(ard@bzip.or) 49.8429 Tj -18 TJm -(g.) 7.472 Tj --1183 TJm -(If) 6.6351 Tj --344 TJm -(this) 14.396 Tj -72 394.323 Td -(happened) 38.1767 Tj --297 TJm -(when) 21.579 Tj --298 TJm -(you) 14.9439 Tj --297 TJm -(were) 19.3573 Tj --297 TJm -(using) 21.589 Tj --297 TJm -(some) 21.031 Tj --298 TJm -(program) 33.7533 Tj --297 TJm -(which) 24.3486 Tj --297 TJm -(uses) 17.1556 Tj --297 TJm -(libbzip2) 32.6574 Tj --298 TJm -(as) 8.2988 Tj --297 TJm -(a) 4.4234 Tj --297 TJm -(component,) 46.7644 Tj --309 TJm -(you) 14.9439 Tj --298 TJm -(should) 26.5703 Tj --297 TJm -(also) 16.0497 Tj --297 TJm -(report) 23.7907 Tj --297 TJm -(this) 14.396 Tj --298 TJm -(b) 4.9813 Tj -20 TJm -(ug) 9.9626 Tj -72 382.368 Td -(to) 7.7509 Tj --264 TJm -(the) 12.1743 Tj --264 TJm -(author\(s\)) 35.965 Tj --264 TJm -(of) 8.2988 Tj --264 TJm -(that) 14.9439 Tj --264 TJm -(program.) 36.2439 Tj --703 TJm -(Please) 25.4544 Tj --264 TJm -(mak) 17.1556 Tj -10 TJm -(e) 4.4234 Tj --264 TJm -(an) 9.4047 Tj --264 TJm -(ef) 7.7409 Tj -25 TJm -(fort) 14.386 Tj --264 TJm -(to) 7.7509 Tj --264 TJm -(report) 23.7907 Tj --263 TJm -(this) 14.396 Tj --264 TJm -(b) 4.9813 Tj -20 TJm -(ug;) 12.7322 Tj --271 TJm -(timely) 25.4644 Tj --264 TJm -(and) 14.386 Tj --264 TJm -(accurate) 33.1854 Tj --264 TJm -(b) 4.9813 Tj -20 TJm -(ug) 9.9626 Tj --264 TJm -(reports) 27.6661 Tj --264 TJm -(e) 4.4234 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(entually) 32.0995 Tj -72 370.413 Td -(lead) 16.5977 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(higher) 25.4544 Tj --250 TJm -(quality) 27.6761 Tj --250 TJm -(softw) 22.1369 Tj -10 TJm -(are.) 14.655 Tj --620 TJm -(Thanks.) 31.8205 Tj --620 TJm -(Julian) 23.8007 Tj --250 TJm -(Se) 9.9626 Tj -25 TJm -(w) 7.193 Tj -10 TJm -(ard,) 15.2129 Tj --250 TJm -(6) 4.9813 Tj --250 TJm -(September) 42.61 Tj --250 TJm -(2010.) 22.4159 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 338.758 Td -(where) 24.3386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -98.831 338.758 Td -/F124_0 9.9626 Tf -(N) 5.9776 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -107.301 338.758 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --250 TJm -(some) 21.031 Tj --250 TJm -(error) 19.3573 Tj --251 TJm -(code) 18.8094 Tj --250 TJm -(number) 30.4357 Tj -55 TJm -(.) 2.4907 Tj --621 TJm -(If) 6.6351 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -230.81 338.758 Td -/F124_0 9.9626 Tf -(N) 5.9776 Tj --600 TJm -(==) 11.9551 Tj --600 TJm -(1007) 23.9102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -284.608 338.758 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --250 TJm -(it) 5.5392 Tj --250 TJm -(also) 16.0497 Tj --251 TJm -(prints) 22.6948 Tj --250 TJm -(some) 21.031 Tj --250 TJm -(e) 4.4234 Tj -15 TJm -(xtra) 15.4918 Tj --250 TJm -(te) 7.193 Tj -15 TJm -(xt) 7.7509 Tj --250 TJm -(advising) 33.7633 Tj --251 TJm -(the) 12.1743 Tj --250 TJm -(reader) 24.8866 Tj --250 TJm -(that) 14.9439 Tj --250 TJm -(unreliable) 39.8404 Tj -72 326.803 Td -(memory) 33.2053 Tj --425 TJm -(is) 6.6451 Tj --424 TJm -(often) 20.4731 Tj --425 TJm -(associated) 40.9463 Tj --425 TJm -(with) 17.7135 Tj --424 TJm -(internal) 30.4357 Tj --425 TJm -(error) 19.3573 Tj --424 TJm -(1007.) 22.4159 Tj --834 TJm -(\(This) 21.031 Tj --425 TJm -(is) 6.6451 Tj --425 TJm -(a) 4.4234 Tj --424 TJm -(frequently-observ) 70.8241 Tj -15 TJm -(ed-phenomenon) 64.189 Tj --425 TJm -(with) 17.7135 Tj --425 TJm -(v) 4.9813 Tj -15 TJm -(ersions) 28.224 Tj -72 314.848 Td -(1.0.0/1.0.1\).) 48.4282 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 292.995 Td -/F124_0 9.9626 Tf -(exit\(3\)) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -116.334 292.995 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --250 TJm -(then) 17.1556 Tj --250 TJm -(called.) 26.2813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 271.142 Td -(F) 5.5392 Tj -15 TJm -(or) 8.2988 Tj --250 TJm -(a) 4.4234 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -95.093 271.142 Td -/F124_0 9.9626 Tf -(stdio) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -124.981 271.142 Td -/F122_0 9.9626 Tf -(-free) 18.7994 Tj --250 TJm -(library) 26.5603 Tj -65 TJm -(,) 2.4907 Tj --250 TJm -(assertion) 35.417 Tj --250 TJm -(f) 3.3175 Tj -10 TJm -(ailures) 26.5603 Tj --250 TJm -(result) 22.1369 Tj --250 TJm -(in) 7.7509 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(call) 14.386 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(function) 33.2053 Tj --250 TJm -(declared) 33.7433 Tj --250 TJm -(as:) 11.0684 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 244.078] cm -0 0 468 23.91 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 259.62 Td -/F124_0 9.9626 Tf -(extern) 35.8654 Tj --426 TJm -(void) 23.9102 Tj --426 TJm -(bz_internal_error) 101.6185 Tj --426 TJm -(\() 5.9776 Tj --426 TJm -(int) 17.9327 Tj --426 TJm -(errcode) 41.8429 Tj --426 TJm -(\);) 11.9551 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 222.225 Td -/F122_0 9.9626 Tf -(The) 15.4918 Tj --250 TJm -(rele) 14.9339 Tj -25 TJm -(v) 4.9813 Tj -25 TJm -(ant) 12.1743 Tj --250 TJm -(code) 18.8094 Tj --250 TJm -(is) 6.6451 Tj --250 TJm -(passed) 26.5603 Tj --250 TJm -(as) 8.2988 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(parameter) 39.8305 Tj -55 TJm -(.) 2.4907 Tj --620 TJm -(Y) 7.193 Tj -110 TJm -(ou) 9.9626 Tj --250 TJm -(should) 26.5703 Tj --250 TJm -(supply) 26.5703 Tj --250 TJm -(such) 18.2614 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(function.) 35.696 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 200.372 Td -(In) 8.2988 Tj --294 TJm -(either) 22.6848 Tj --294 TJm -(case,) 19.6363 Tj --306 TJm -(once) 18.8094 Tj --294 TJm -(an) 9.4047 Tj --294 TJm -(assertion) 35.417 Tj --294 TJm -(f) 3.3175 Tj -10 TJm -(ailure) 22.6848 Tj --294 TJm -(has) 13.2801 Tj --295 TJm -(occurred,) 37.3398 Tj --305 TJm -(an) 9.4047 Tj -15 TJm -(y) 4.9813 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -306.541 200.372 Td -/F124_0 9.9626 Tf -(bz_stream) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -363.271 200.372 Td -/F122_0 9.9626 Tf -(records) 29.3199 Tj --294 TJm -(in) 7.7509 Tj -40 TJm -(v) 4.9813 Tj -20 TJm -(olv) 12.7322 Tj -15 TJm -(ed) 9.4047 Tj --294 TJm -(can) 13.8281 Tj --295 TJm -(be) 9.4047 Tj --294 TJm -(re) 7.7409 Tj -15 TJm -(g) 4.9813 Tj -5 TJm -(arded) 22.1269 Tj --294 TJm -(as) 8.2988 Tj --294 TJm -(in) 7.7509 Tj -40 TJm -(v) 4.9813 Tj -25 TJm -(alid.) 17.4346 Tj -72 188.417 Td -(Y) 7.193 Tj -110 TJm -(ou) 9.9626 Tj --250 TJm -(should) 26.5703 Tj --250 TJm -(not) 12.7322 Tj --250 TJm -(attempt) 29.8878 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(resume) 28.772 Tj --250 TJm -(normal) 28.224 Tj --250 TJm -(operation) 37.6287 Tj --250 TJm -(with) 17.7135 Tj --250 TJm -(them.) 22.4159 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 166.564 Td -(Y) 7.193 Tj -110 TJm -(ou) 9.9626 Tj --299 TJm -(may) 17.1556 Tj -65 TJm -(,) 2.4907 Tj --310 TJm -(of) 8.2988 Tj --299 TJm -(course,) 28.493 Tj --311 TJm -(change) 28.2141 Tj --298 TJm -(critical) 27.6661 Tj --299 TJm -(error) 19.3573 Tj --298 TJm -(handling) 34.8691 Tj --299 TJm -(to) 7.7509 Tj --298 TJm -(suit) 14.396 Tj --299 TJm -(your) 18.2614 Tj --298 TJm -(needs.) 25.1755 Tj --912 TJm -(As) 11.0684 Tj --298 TJm -(I) 3.3175 Tj --299 TJm -(said) 16.0497 Tj --298 TJm -(abo) 14.386 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(e,) 6.914 Tj --311 TJm -(critical) 27.6661 Tj --299 TJm -(errors) 23.2328 Tj --298 TJm -(indicate) 31.5416 Tj --299 TJm -(b) 4.9813 Tj -20 TJm -(ugs) 13.8381 Tj -72 154.609 Td -(in) 7.7509 Tj --263 TJm -(the) 12.1743 Tj --263 TJm -(library) 26.5603 Tj --263 TJm -(and) 14.386 Tj --263 TJm -(should) 26.5703 Tj --263 TJm -(not) 12.7322 Tj --263 TJm -(occur) 22.1269 Tj -55 TJm -(.) 2.4907 Tj --697 TJm -(All) 12.7322 Tj --263 TJm -("normal") 36.3535 Tj --263 TJm -(error) 19.3573 Tj --263 TJm -(situations) 38.1966 Tj --263 TJm -(are) 12.1643 Tj --263 TJm -(indicated) 36.5229 Tj --263 TJm -(via) 12.1743 Tj --263 TJm -(error) 19.3573 Tj --263 TJm -(return) 23.7907 Tj --263 TJm -(codes) 22.6848 Tj --263 TJm -(from) 19.3673 Tj --263 TJm -(functions,) 39.5714 Tj -72 142.653 Td -(and) 14.386 Tj --250 TJm -(can) 13.8281 Tj --250 TJm -(be) 9.4047 Tj --250 TJm -(reco) 17.1456 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(ered) 17.1456 Tj --250 TJm -(from.) 21.8579 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 107.965 Td -/F116_0 20.6585 Tf -(3.8.) 34.4584 Tj --278 TJm -(Making) 71.1685 Tj --278 TJm -(a) 11.4861 Tj --278 TJm -(Windo) 63.1117 Tj -15 TJm -(ws) 27.5584 Tj --278 TJm -(DLL) 40.1601 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 86.112 Td -/F122_0 9.9626 Tf -(Ev) 11.0684 Tj -15 TJm -(erything) 33.2053 Tj --328 TJm -(related) 27.1082 Tj --327 TJm -(to) 7.7509 Tj --328 TJm -(W) 9.4047 Tj -40 TJm -(indo) 17.7135 Tj -25 TJm -(ws) 11.0684 Tj --328 TJm -(has) 13.2801 Tj --327 TJm -(been) 18.8094 Tj --328 TJm -(contrib) 28.224 Tj -20 TJm -(uted) 17.1556 Tj --328 TJm -(by) 9.9626 Tj --327 TJm -(Y) 7.193 Tj -110 TJm -(oshioka) 30.9936 Tj --328 TJm -(Tsuneo) 29.3299 Tj --328 TJm -(\() 3.3175 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -378.139 86.112 Td -/F124_0 9.9626 Tf -(tsuneo@rr.iij4u.or.jp) 125.5288 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -503.668 86.112 Td -/F122_0 9.9626 Tf -(\),) 5.8082 Tj --347 TJm -(so) 8.8568 Tj --328 TJm -(you) 14.9439 Tj -72 74.157 Td -(should) 26.5703 Tj --250 TJm -(send) 18.2614 Tj --250 TJm -(your) 18.2614 Tj --250 TJm -(queries) 28.772 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(him) 15.5018 Tj --250 TJm -(\(b) 8.2988 Tj -20 TJm -(ut) 7.7509 Tj --250 TJm -(perhaps) 30.9837 Tj --250 TJm -(Cc:) 13.8381 Tj --310 TJm -(me,) 14.6649 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -287.958 74.157 Td -/F124_0 9.9626 Tf -(jseward@bzip.org) 95.641 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -383.6 74.157 Td -/F122_0 9.9626 Tf -(\).) 5.8082 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -534.414 51.071 Td -(29) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 30 33 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -419.067 749.245 Td -/F122_0 9.9626 Tf -(Programming) 54.7943 Tj --250 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -496.556 749.245 Td -/F124_0 9.9626 Tf -(libbzip2) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -72 710.037 Td -/F122_0 9.9626 Tf -(My) 13.8381 Tj --367 TJm -(v) 4.9813 Tj -25 TJm -(ague) 18.8094 Tj --367 TJm -(understanding) 56.4481 Tj --367 TJm -(of) 8.2988 Tj --367 TJm -(what) 19.3673 Tj --368 TJm -(to) 7.7509 Tj --367 TJm -(do) 9.9626 Tj --367 TJm -(is:) 9.4147 Tj --544 TJm -(using) 21.589 Tj --367 TJm -(V) 7.193 Tj -60 TJm -(isual) 18.8194 Tj --367 TJm -(C++) 17.8829 Tj --367 TJm -(5.0,) 14.9439 Tj --397 TJm -(open) 19.3673 Tj --367 TJm -(the) 12.1743 Tj --367 TJm -(project) 27.6661 Tj --367 TJm -(\002le) 12.7322 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -432.966 710.037 Td -/F124_0 9.9626 Tf -(libbz2.dsp) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -492.742 710.037 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --396 TJm -(and) 14.386 Tj --368 TJm -(b) 4.9813 Tj -20 TJm -(uild.) 17.9925 Tj -72 698.082 Td -(That') 21.579 Tj -55 TJm -(s) 3.8755 Tj --250 TJm -(all.) 12.4533 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 676.164 Td -(If) 6.6351 Tj --284 TJm -(you) 14.9439 Tj --284 TJm -(can') 17.1456 Tj -18 TJm -(t) 2.7696 Tj --285 TJm -(open) 19.3673 Tj --284 TJm -(the) 12.1743 Tj --284 TJm -(project) 27.6661 Tj --284 TJm -(\002le) 12.7322 Tj --284 TJm -(for) 11.6164 Tj --285 TJm -(some) 21.031 Tj --284 TJm -(reason,) 28.493 Tj --293 TJm -(mak) 17.1556 Tj -10 TJm -(e) 4.4234 Tj --284 TJm -(a) 4.4234 Tj --284 TJm -(ne) 9.4047 Tj -25 TJm -(w) 7.193 Tj --284 TJm -(one,) 16.8766 Tj --293 TJm -(naming) 29.8878 Tj --284 TJm -(these) 20.4731 Tj --284 TJm -(\002les:) 19.3773 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -424.505 676.164 Td -/F124_0 9.9626 Tf -(blocksort.c) 65.7532 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -490.259 676.164 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -495.666 676.164 Td -/F124_0 9.9626 Tf -(bzlib.c) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -537.509 676.164 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 664.209 Td -/F124_0 9.9626 Tf -(compress.c) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -131.776 664.209 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -136.436 664.209 Td -/F124_0 9.9626 Tf -(crctable.c) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -196.211 664.209 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -200.871 664.209 Td -/F124_0 9.9626 Tf -(decompress.c) 71.7307 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -272.602 664.209 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -277.262 664.209 Td -/F124_0 9.9626 Tf -(huffman.c) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -331.06 664.209 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -335.72 664.209 Td -/F124_0 9.9626 Tf -(randtable.c) 65.7532 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -403.562 664.209 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -420.037 664.209 Td -/F124_0 9.9626 Tf -(libbz2.def) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -479.812 664.209 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj --593 TJm -(Y) 7.193 Tj -110 TJm -(ou) 9.9626 Tj --210 TJm -(will) 15.5018 Tj --209 TJm -(also) 16.0497 Tj -72 652.254 Td -(need) 18.8094 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(name) 21.579 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(header) 26.5503 Tj --250 TJm -(\002les) 16.6077 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -190.415 652.254 Td -/F124_0 9.9626 Tf -(bzlib.h) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -234.749 652.254 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -251.625 652.254 Td -/F124_0 9.9626 Tf -(bzlib_private.h) 89.6634 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -341.289 652.254 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 630.336 Td -(If) 6.6351 Tj --250 TJm -(you) 14.9439 Tj --250 TJm -(don') 18.2614 Tj -18 TJm -(t) 2.7696 Tj --250 TJm -(use) 13.2801 Tj --250 TJm -(VC++,) 27.5665 Tj --250 TJm -(you) 14.9439 Tj --250 TJm -(may) 17.1556 Tj --250 TJm -(need) 18.8094 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(de\002ne) 24.3486 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(proprocessor) 51.4568 Tj --250 TJm -(symbol) 29.3399 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -363.634 630.336 Td -/F124_0 9.9626 Tf -(_WIN32) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -399.5 630.336 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 608.418 Td -(Finally) 28.234 Tj -65 TJm -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -104.568 608.418 Td -/F124_0 9.9626 Tf -(dlltest.c) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -160.856 608.418 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(sample) 28.224 Tj --250 TJm -(program) 33.7533 Tj --250 TJm -(using) 21.589 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(DLL.) 21.8579 Tj --500 TJm -(It) 6.0871 Tj --250 TJm -(has) 13.2801 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(project) 27.6661 Tj --250 TJm -(\002le,) 15.2229 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -388.58 608.418 Td -/F124_0 9.9626 Tf -(dlltest.dsp) 65.7532 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -454.334 608.418 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 586.501 Td -(If) 6.6351 Tj --250 TJm -(you) 14.9439 Tj --250 TJm -(just) 14.396 Tj --250 TJm -(w) 7.193 Tj -10 TJm -(ant) 12.1743 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(mak) 17.1556 Tj -10 TJm -(e\002le) 17.1556 Tj --250 TJm -(for) 11.6164 Tj --250 TJm -(V) 7.193 Tj -60 TJm -(isual) 18.8194 Tj --250 TJm -(C,) 9.1357 Tj --250 TJm -(ha) 9.4047 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(look) 17.7135 Tj --250 TJm -(at) 7.193 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -292.212 586.501 Td -/F124_0 9.9626 Tf -(makefile.msc) 71.7307 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -363.943 586.501 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 564.583 Td -(Be) 11.0684 Tj --291 TJm -(a) 4.4234 Tj -15 TJm -(w) 7.193 Tj -10 TJm -(are) 12.1643 Tj --291 TJm -(that) 14.9439 Tj --291 TJm -(if) 6.0871 Tj --291 TJm -(you) 14.9439 Tj --291 TJm -(compile) 32.0995 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -192.07 564.583 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -224.857 564.583 Td -/F122_0 9.9626 Tf -(itself) 19.9252 Tj --291 TJm -(on) 9.9626 Tj --291 TJm -(W) 9.4047 Tj -40 TJm -(in32,) 20.2042 Tj --301 TJm -(you) 14.9439 Tj --291 TJm -(must) 19.3773 Tj --291 TJm -(set) 11.0684 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -346.842 564.583 Td -/F124_0 9.9626 Tf -(BZ_UNIX) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -391.584 564.583 Td -/F122_0 9.9626 Tf -(to) 7.7509 Tj --291 TJm -(0) 4.9813 Tj --291 TJm -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -427.4 564.583 Td -/F124_0 9.9626 Tf -(BZ_LCCWIN32) 65.7532 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -496.052 564.583 Td -/F122_0 9.9626 Tf -(to) 7.7509 Tj --291 TJm -(1,) 7.472 Tj --301 TJm -(in) 7.7509 Tj --291 TJm -(the) 12.1743 Tj -72 552.628 Td -(\002le) 12.7322 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -87.223 552.628 Td -/F124_0 9.9626 Tf -(bzip2.c) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -129.066 552.628 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --250 TJm -(before) 25.4445 Tj --250 TJm -(compiling.) 42.899 Tj --310 TJm -(Otherwise) 40.9463 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(resulting) 34.8691 Tj --250 TJm -(binary) 25.4544 Tj --250 TJm -(w) 7.193 Tj -10 TJm -(on') 13.2801 Tj -18 TJm -(t) 2.7696 Tj --250 TJm -(w) 7.193 Tj -10 TJm -(ork) 13.2801 Tj --250 TJm -(correctly) 35.4071 Tj -65 TJm -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 530.71 Td -(I) 3.3175 Tj --250 TJm -(ha) 9.4047 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(en') 12.7222 Tj -18 TJm -(t) 2.7696 Tj --250 TJm -(tried) 18.2614 Tj --250 TJm -(an) 9.4047 Tj -15 TJm -(y) 4.9813 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(this) 14.396 Tj --250 TJm -(stuf) 14.9439 Tj -25 TJm -(f) 3.3175 Tj --250 TJm -(myself,) 29.6088 Tj --250 TJm -(b) 4.9813 Tj -20 TJm -(ut) 7.7509 Tj --250 TJm -(it) 5.5392 Tj --250 TJm -(all) 9.9626 Tj --250 TJm -(looks) 21.589 Tj --250 TJm -(plausible.) 38.4656 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -534.414 50.951 Td -(30) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 31 34 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -72 701.916 Td -/F116_0 24.7902 Tf -(4.) 20.675 Tj --278 TJm -(Miscellanea) 139.1722 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 656.35 Td -/F116_0 17.2154 Tf -(T) 10.5186 Tj -80 TJm -(ab) 20.0904 Tj -10 TJm -(le) 14.3576 Tj --278 TJm -(of) 16.2513 Tj --278 TJm -(Contents) 74.5943 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 635.788 Td -/F122_0 9.9626 Tf -(4.1.) 14.9439 Tj --310 TJm -(Limitations) 45.9475 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(compressed) 47.0334 Tj --250 TJm -(\002le) 12.7322 Tj --250 TJm -(format) 26.5603 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -269.154 635.788 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 635.788 Td -/F122_0 9.9626 Tf -(31) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 623.832 Td -(4.2.) 14.9439 Tj --310 TJm -(Portability) 42.0721 Tj --250 TJm -(issues) 23.8007 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -172.03 623.832 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 623.832 Td -/F122_0 9.9626 Tf -(32) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 611.877 Td -(4.3.) 14.9439 Tj --310 TJm -(Reporting) 39.8504 Tj --250 TJm -(b) 4.9813 Tj -20 TJm -(ugs) 13.8381 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -166.115 611.877 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 611.877 Td -/F122_0 9.9626 Tf -(32) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 599.922 Td -(4.4.) 14.9439 Tj --310 TJm -(Did) 14.9439 Tj --250 TJm -(you) 14.9439 Tj --250 TJm -(get) 12.1743 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(right) 18.8194 Tj --250 TJm -(package?) 37.0609 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -229.109 599.922 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 599.922 Td -/F122_0 9.9626 Tf -(33) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 587.967 Td -(4.5.) 14.9439 Tj --310 TJm -(Further) 29.3299 Tj --250 TJm -(Reading) 33.2053 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -170.361 587.967 Td -/F230_0 9.9626 Tf -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --166 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj --167 TJm -(:) 2.7676 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -506.127 587.967 Td -/F122_0 9.9626 Tf -(34) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 556.086 Td -(These) 23.7907 Tj --250 TJm -(are) 12.1643 Tj --250 TJm -(just) 14.396 Tj --250 TJm -(some) 21.031 Tj --250 TJm -(random) 30.4357 Tj --250 TJm -(thoughts) 34.3212 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(mine.) 22.4159 Tj --620 TJm -(Y) 7.193 Tj -110 TJm -(our) 13.2801 Tj --250 TJm -(mileage) 31.5416 Tj --250 TJm -(may) 17.1556 Tj --250 TJm -(v) 4.9813 Tj -25 TJm -(ary) 12.7222 Tj -65 TJm -(.) 2.4907 Tj -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 521.334 Td -/F116_0 20.6585 Tf -(4.1.) 34.4584 Tj --278 TJm -(Limitations) 110.1924 Tj --278 TJm -(of) 19.5016 Tj --278 TJm -(the) 30.9878 Tj --278 TJm -(compressed) 121.6992 Tj --278 TJm -(\002le) 29.8515 Tj --278 TJm -(f) 6.8793 Tj -20 TJm -(ormat) 57.3893 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 499.416 Td -/F124_0 9.9626 Tf -(bzip2-1.0.X) 65.7532 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -137.753 499.416 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -143.405 499.416 Td -/F124_0 9.9626 Tf -(0.9.5) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -176.453 499.416 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -194 499.416 Td -/F124_0 9.9626 Tf -(0.9.0) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -227.048 499.416 Td -/F122_0 9.9626 Tf -(use) 13.2801 Tj --317 TJm -(e) 4.4234 Tj -15 TJm -(xactly) 24.3486 Tj --318 TJm -(the) 12.1743 Tj --317 TJm -(same) 20.4731 Tj --317 TJm -(\002le) 12.7322 Tj --317 TJm -(format) 26.5603 Tj --317 TJm -(as) 8.2988 Tj --318 TJm -(the) 12.1743 Tj --317 TJm -(original) 30.9936 Tj --317 TJm -(v) 4.9813 Tj -15 TJm -(ersion,) 26.8392 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -455.801 499.416 Td -/F124_0 9.9626 Tf -(bzip2-0.1) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -509.599 499.416 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj --1024 TJm -(This) 17.7135 Tj -72 487.461 Td -(decision) 33.2053 Tj --222 TJm -(w) 7.193 Tj -10 TJm -(as) 8.2988 Tj --222 TJm -(made) 21.579 Tj --222 TJm -(in) 7.7509 Tj --221 TJm -(the) 12.1743 Tj --222 TJm -(interests) 33.2053 Tj --222 TJm -(of) 8.2988 Tj --222 TJm -(stability) 32.1095 Tj -65 TJm -(.) 2.4907 Tj --601 TJm -(Creating) 34.3112 Tj --222 TJm -(yet) 12.1743 Tj --222 TJm -(another) 29.8778 Tj --222 TJm -(incompatible) 52.0247 Tj --221 TJm -(compressed) 47.0334 Tj --222 TJm -(\002le) 12.7322 Tj --222 TJm -(format) 26.5603 Tj --222 TJm -(w) 7.193 Tj -10 TJm -(ould) 17.7135 Tj --222 TJm -(create) 23.7807 Tj -72 475.505 Td -(further) 27.1082 Tj --250 TJm -(confusion) 39.2925 Tj --250 TJm -(and) 14.386 Tj --250 TJm -(disruption) 40.4083 Tj --250 TJm -(for) 11.6164 Tj --250 TJm -(users.) 22.9638 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 453.588 Td -(Ne) 11.6164 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(ertheless,) 37.3498 Tj --234 TJm -(this) 14.396 Tj --229 TJm -(is) 6.6451 Tj --230 TJm -(not) 12.7322 Tj --229 TJm -(a) 4.4234 Tj --230 TJm -(painless) 32.0995 Tj --229 TJm -(decision.) 35.696 Tj --606 TJm -(De) 11.6164 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(elopment) 37.0808 Tj --230 TJm -(w) 7.193 Tj -10 TJm -(ork) 13.2801 Tj --230 TJm -(sinc) 16.0497 Tj -1 TJm -(e) 4.4234 Tj --230 TJm -(the) 12.1743 Tj --230 TJm -(release) 27.6562 Tj --229 TJm -(of) 8.2988 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -407.317 453.588 Td -/F124_0 9.9626 Tf -(bzip2-0.1) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -463.402 453.588 Td -/F122_0 9.9626 Tf -(in) 7.7509 Tj --230 TJm -(August) 28.782 Tj --229 TJm -(1997) 19.9252 Tj --230 TJm -(has) 13.2801 Tj -72 441.632 Td -(sho) 13.8381 Tj -25 TJm -(wn) 12.1743 Tj --226 TJm -(comple) 29.3299 Tj -15 TJm -(xities) 21.589 Tj --226 TJm -(in) 7.7509 Tj --225 TJm -(the) 12.1743 Tj --226 TJm -(\002le) 12.7322 Tj --226 TJm -(format) 26.5603 Tj --226 TJm -(which) 24.3486 Tj --226 TJm -(slo) 11.6264 Tj -25 TJm -(w) 7.193 Tj --225 TJm -(do) 9.9626 Tj -25 TJm -(wn) 12.1743 Tj --226 TJm -(decompression) 59.7656 Tj --226 TJm -(and,) 16.8766 Tj --231 TJm -(in) 7.7509 Tj --226 TJm -(retrospect,) 41.7732 Tj --230 TJm -(are) 12.1643 Tj --226 TJm -(unnecessary) 48.6872 Tj -65 TJm -(.) 2.4907 Tj --604 TJm -(These) 23.7907 Tj --226 TJm -(are:) 14.9339 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -74.491 409.752 Td -(\225) 3.4869 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --450 TJm -(The) 15.4918 Tj --287 TJm -(run-length) 41.5042 Tj --287 TJm -(encoder) 31.5316 Tj -40 TJm -(,) 2.4907 Tj --297 TJm -(which) 24.3486 Tj --287 TJm -(is) 6.6451 Tj --288 TJm -(the) 12.1743 Tj --287 TJm -(\002rst) 15.5018 Tj --287 TJm -(of) 8.2988 Tj --287 TJm -(the) 12.1743 Tj --288 TJm -(compression) 50.3609 Tj --287 TJm -(transformations,) 65.0259 Tj --296 TJm -(is) 6.6451 Tj --288 TJm -(entirely) 30.4357 Tj --287 TJm -(irrele) 21.0211 Tj -25 TJm -(v) 4.9813 Tj -25 TJm -(ant.) 14.6649 Tj --843 TJm -(The) 15.4918 Tj --288 TJm -(original) 30.9936 Tj -81.963 397.797 Td -(purpose) 31.5416 Tj --322 TJm -(w) 7.193 Tj -10 TJm -(as) 8.2988 Tj --322 TJm -(to) 7.7509 Tj --322 TJm -(protect) 27.6661 Tj --321 TJm -(the) 12.1743 Tj --322 TJm -(sorting) 27.6761 Tj --322 TJm -(algorithm) 38.7446 Tj --322 TJm -(from) 19.3673 Tj --322 TJm -(the) 12.1743 Tj --322 TJm -(v) 4.9813 Tj -15 TJm -(ery) 12.7222 Tj --322 TJm -(w) 7.193 Tj -10 TJm -(orst) 14.9439 Tj --321 TJm -(case) 17.1456 Tj --322 TJm -(input:) 23.2527 Tj --454 TJm -(a) 4.4234 Tj --322 TJm -(string) 22.6948 Tj --322 TJm -(of) 8.2988 Tj --322 TJm -(repeated) 33.7433 Tj --321 TJm -(symbols.) 35.706 Tj --1052 TJm -(But) 14.396 Tj -81.963 385.842 Td -(algorithm) 38.7446 Tj --229 TJm -(steps) 19.9252 Tj --230 TJm -(Q6a) 16.5977 Tj --229 TJm -(and) 14.386 Tj --230 TJm -(Q6b) 17.1556 Tj --229 TJm -(in) 7.7509 Tj --230 TJm -(t) 2.7696 Tj -1 TJm -(he) 9.4047 Tj --230 TJm -(original) 30.9936 Tj --229 TJm -(Burro) 23.2427 Tj -25 TJm -(ws-Wheeler) 48.1293 Tj --230 TJm -(technical) 35.965 Tj --229 TJm -(report) 23.7907 Tj --230 TJm -(\(SRC-124\)) 43.7259 Tj --229 TJm -(sho) 13.8381 Tj -25 TJm -(w) 7.193 Tj --229 TJm -(ho) 9.9626 Tj -25 TJm -(w) 7.193 Tj --230 TJm -(repeats) 28.2141 Tj --229 TJm -(can) 13.8281 Tj --230 TJm -(be) 9.4047 Tj -81.963 373.886 Td -(handled) 31.5416 Tj --250 TJm -(without) 30.4457 Tj --250 TJm -(dif) 11.0684 Tj -25 TJm -(\002culty) 25.4644 Tj --250 TJm -(in) 7.7509 Tj --250 TJm -(block) 22.1369 Tj --250 TJm -(sorting.) 30.1668 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -74.491 351.969 Td -(\225) 3.4869 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --450 TJm -(The) 15.4918 Tj --315 TJm -(randomisation) 57.006 Tj --314 TJm -(mechanism) 45.3796 Tj --315 TJm -(doesn') 26.5603 Tj -18 TJm -(t) 2.7696 Tj --314 TJm -(really) 22.6848 Tj --315 TJm -(need) 18.8094 Tj --315 TJm -(to) 7.7509 Tj --314 TJm -(be) 9.4047 Tj --315 TJm -(there.) 22.4059 Tj --1007 TJm -(Udi) 14.9439 Tj --315 TJm -(Manber) 30.9837 Tj --315 TJm -(and) 14.386 Tj --314 TJm -(Gene) 21.0211 Tj --315 TJm -(Myers) 25.4544 Tj --314 TJm -(published) 38.7446 Tj --315 TJm -(a) 4.4234 Tj --315 TJm -(suf) 12.1743 Tj -25 TJm -(\002x) 10.5205 Tj -81.963 340.013 Td -(array) 20.4632 Tj --266 TJm -(construction) 49.2551 Tj --266 TJm -(algorithm) 38.7446 Tj --266 TJm -(a) 4.4234 Tj --266 TJm -(fe) 7.7409 Tj -25 TJm -(w) 7.193 Tj --266 TJm -(years) 21.0211 Tj --266 TJm -(back,) 21.3 Tj --269 TJm -(which) 24.3486 Tj --266 TJm -(can) 13.8281 Tj --266 TJm -(be) 9.4047 Tj --266 TJm -(emplo) 24.9065 Tj -10 TJm -(yed) 14.386 Tj --266 TJm -(to) 7.7509 Tj --266 TJm -(sort) 14.9439 Tj --266 TJm -(an) 9.4047 Tj -15 TJm -(y) 4.9813 Tj --266 TJm -(block,) 24.6275 Tj --270 TJm -(no) 9.9626 Tj --266 TJm -(matter) 25.4544 Tj --266 TJm -(ho) 9.9626 Tj -25 TJm -(w) 7.193 Tj --266 TJm -(repetiti) 28.224 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(e,) 6.914 Tj -81.963 328.058 Td -(in) 7.7509 Tj --257 TJm -(O\(N) 17.7035 Tj --257 TJm -(log) 12.7322 Tj --257 TJm -(N\)) 10.5105 Tj --258 TJm -(time.) 20.2042 Tj --663 TJm -(Subsequent) 45.9375 Tj --257 TJm -(w) 7.193 Tj -10 TJm -(ork) 13.2801 Tj --257 TJm -(by) 9.9626 Tj --257 TJm -(K) 7.193 Tj -15 TJm -(unihik) 25.4644 Tj -10 TJm -(o) 4.9813 Tj --257 TJm -(Sadakane) 38.1767 Tj --258 TJm -(has) 13.2801 Tj --257 TJm -(produced) 37.0708 Tj --257 TJm -(a) 4.4234 Tj --257 TJm -(deri) 15.4918 Tj -25 TJm -(v) 4.9813 Tj -25 TJm -(ati) 9.9626 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --257 TJm -(O\(N) 17.7035 Tj --257 TJm -(\(log) 16.0497 Tj --258 TJm -(N\)^2\)) 23.4818 Tj --257 TJm -(algorithm) 38.7446 Tj -81.963 316.103 Td -(which) 24.3486 Tj --250 TJm -(usually) 28.782 Tj --250 TJm -(outperforms) 48.6972 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(Manber) 30.9837 Tj -20 TJm -(-Myers) 28.772 Tj --250 TJm -(algorithm.) 41.2352 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -81.963 294.185 Td -(I) 3.3175 Tj --274 TJm -(could) 22.1369 Tj --274 TJm -(ha) 9.4047 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --274 TJm -(changed) 33.1954 Tj --274 TJm -(to) 7.7509 Tj --274 TJm -(Sadakane') 41.4942 Tj -55 TJm -(s) 3.8755 Tj --274 TJm -(algorithm,) 41.2352 Tj --280 TJm -(b) 4.9813 Tj -20 TJm -(ut) 7.7509 Tj --274 TJm -(I) 3.3175 Tj --274 TJm -(\002nd) 15.5018 Tj --274 TJm -(it) 5.5392 Tj --274 TJm -(to) 7.7509 Tj --274 TJm -(be) 9.4047 Tj --274 TJm -(slo) 11.6264 Tj -25 TJm -(wer) 14.9339 Tj --274 TJm -(than) 17.1556 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -391.407 294.185 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -421.295 294.185 Td -/F122_0 9.9626 Tf -(') 3.3175 Tj -55 TJm -(s) 3.8755 Tj --274 TJm -(e) 4.4234 Tj -15 TJm -(xisting) 27.1282 Tj --274 TJm -(algorithm) 38.7446 Tj --274 TJm -(for) 11.6164 Tj --274 TJm -(most) 19.3773 Tj -81.963 282.23 Td -(inputs,) 26.8492 Tj --399 TJm -(and) 14.386 Tj --369 TJm -(the) 12.1743 Tj --369 TJm -(randomisation) 57.006 Tj --370 TJm -(me) 12.1743 Tj -1 TJm -(chanism) 33.2053 Tj --370 TJm -(protects) 31.5416 Tj --369 TJm -(adequately) 43.158 Tj --369 TJm -(ag) 9.4047 Tj -5 TJm -(ainst) 18.8194 Tj --369 TJm -(bad) 14.386 Tj --369 TJm -(cases.) 23.5117 Tj --1336 TJm -(I) 3.3175 Tj --369 TJm -(didn') 21.031 Tj -18 TJm -(t) 2.7696 Tj --369 TJm -(think) 20.4831 Tj --369 TJm -(it) 5.5392 Tj --369 TJm -(w) 7.193 Tj -10 TJm -(as) 8.2988 Tj --369 TJm -(a) 4.4234 Tj --370 TJm -(good) 19.9252 Tj -81.963 270.275 Td -(tradeof) 28.2141 Tj -25 TJm -(f) 3.3175 Tj --282 TJm -(to) 7.7509 Tj --283 TJm -(mak) 17.1556 Tj -10 TJm -(e.) 6.914 Tj --815 TJm -(P) 5.5392 Tj -15 TJm -(artly) 18.2614 Tj --282 TJm -(this) 14.396 Tj --282 TJm -(is) 6.6451 Tj --283 TJm -(due) 14.386 Tj --282 TJm -(to) 7.7509 Tj --283 TJm -(the) 12.1743 Tj --282 TJm -(f) 3.3175 Tj -10 TJm -(act) 11.6164 Tj --283 TJm -(that) 14.9439 Tj --282 TJm -(I) 3.3175 Tj --283 TJm -(w) 7.193 Tj -10 TJm -(as) 8.2988 Tj --282 TJm -(not) 12.7322 Tj --282 TJm -(\003ooded) 29.8878 Tj --283 TJm -(with) 17.7135 Tj --282 TJm -(email) 22.1369 Tj --283 TJm -(complaints) 43.7259 Tj --282 TJm -(about) 22.1369 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -479.557 270.275 Td -/F124_0 9.9626 Tf -(bzip2-0.1) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -533.355 270.275 Td -/F122_0 9.9626 Tf -(') 3.3175 Tj -55 TJm -(s) 3.8755 Tj -81.963 258.32 Td -(performance) 50.341 Tj --250 TJm -(on) 9.9626 Tj --250 TJm -(repetiti) 28.224 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --250 TJm -(data,) 19.0883 Tj --250 TJm -(so) 8.8568 Tj --250 TJm -(perhaps) 30.9837 Tj --250 TJm -(it) 5.5392 Tj --250 TJm -(isn') 14.9439 Tj -18 TJm -(t) 2.7696 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(problem) 33.2053 Tj --250 TJm -(for) 11.6164 Tj --250 TJm -(real) 14.9339 Tj --250 TJm -(inputs.) 26.8492 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -81.963 236.402 Td -(Probably) 35.9749 Tj --314 TJm -(the) 12.1743 Tj --315 TJm -(best) 16.0497 Tj --314 TJm -(long-term) 39.2925 Tj --314 TJm -(solution,) 34.6001 Tj --331 TJm -(and) 14.386 Tj --314 TJm -(the) 12.1743 Tj --314 TJm -(one) 14.386 Tj --315 TJm -(I) 3.3175 Tj --314 TJm -(ha) 9.4047 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --314 TJm -(incorporated) 50.351 Tj --315 TJm -(into) 15.5018 Tj --314 TJm -(0.9.5) 19.9252 Tj --314 TJm -(and) 14.386 Tj --315 TJm -(abo) 14.386 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(e,) 6.914 Tj --330 TJm -(is) 6.6451 Tj --315 TJm -(to) 7.7509 Tj --314 TJm -(use) 13.2801 Tj --314 TJm -(the) 12.1743 Tj --315 TJm -(e) 4.4234 Tj -15 TJm -(xisting) 27.1282 Tj -81.963 224.447 Td -(sorting) 27.6761 Tj --206 TJm -(algorithm) 38.7446 Tj --206 TJm -(initially) 31.0036 Tj -65 TJm -(,) 2.4907 Tj --215 TJm -(and) 14.386 Tj --207 TJm -(f) 3.3175 Tj -10 TJm -(all) 9.9626 Tj --206 TJm -(back) 18.8094 Tj --206 TJm -(to) 7.7509 Tj --206 TJm -(a) 4.4234 Tj --207 TJm -(O\(N) 17.7035 Tj --206 TJm -(\(log) 16.0497 Tj --206 TJm -(N\)^2\)) 23.4818 Tj --206 TJm -(algorithm) 38.7446 Tj --206 TJm -(if) 6.0871 Tj --207 TJm -(the) 12.1743 Tj --206 TJm -(standard) 33.7533 Tj --206 TJm -(algorithm) 38.7446 Tj --206 TJm -(gets) 16.0497 Tj --206 TJm -(into) 15.5018 Tj --207 TJm -(dif) 11.0684 Tj -25 TJm -(\002culties.) 34.0422 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -74.491 202.529 Td -(\225) 3.4869 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --450 TJm -(The) 15.4918 Tj --321 TJm -(compressed) 47.0334 Tj --322 TJm -(\002le) 12.7322 Tj --321 TJm -(format) 26.5603 Tj --321 TJm -(w) 7.193 Tj -10 TJm -(as) 8.2988 Tj --322 TJm -(ne) 9.4047 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(er) 7.7409 Tj --321 TJm -(designed) 35.417 Tj --321 TJm -(to) 7.7509 Tj --322 TJm -(be) 9.4047 Tj --321 TJm -(handled) 31.5416 Tj --321 TJm -(by) 9.9626 Tj --322 TJm -(a) 4.4234 Tj --321 TJm -(library) 26.5603 Tj -65 TJm -(,) 2.4907 Tj --339 TJm -(and) 14.386 Tj --322 TJm -(I) 3.3175 Tj --321 TJm -(ha) 9.4047 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --321 TJm -(had) 14.386 Tj --322 TJm -(to) 7.7509 Tj --321 TJm -(jump) 20.4831 Tj --321 TJm -(though) 27.6761 Tj --322 TJm -(some) 21.031 Tj -81.963 190.574 Td -(hoops) 23.8007 Tj --299 TJm -(t) 2.7696 Tj -1 TJm -(o) 4.9813 Tj --299 TJm -(produce) 32.0895 Tj --299 TJm -(an) 9.4047 Tj --298 TJm -(ef) 7.7409 Tj -25 TJm -(\002cient) 24.9065 Tj --299 TJm -(implementation) 62.5452 Tj --298 TJm -(of) 8.2988 Tj --299 TJm -(decompression.) 62.2563 Tj --911 TJm -(It') 9.4047 Tj -55 TJm -(s) 3.8755 Tj --298 TJm -(a) 4.4234 Tj --299 TJm -(bit) 10.5205 Tj --298 TJm -(hairy) 20.4731 Tj -65 TJm -(.) 2.4907 Tj --912 TJm -(T) 6.0871 Tj -35 TJm -(ry) 8.2988 Tj --298 TJm -(passing) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -468.269 190.574 Td -/F124_0 9.9626 Tf -(decompress.c) 71.7307 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -81.963 178.619 Td -/F122_0 9.9626 Tf -(through) 30.9936 Tj --289 TJm -(the) 12.1743 Tj --289 TJm -(C) 6.6451 Tj --289 TJm -(preprocessor) 50.8989 Tj --289 TJm -(and) 14.386 Tj --289 TJm -(you') 18.2614 Tj -10 TJm -(ll) 5.5392 Tj --289 TJm -(see) 12.7222 Tj --289 TJm -(what) 19.3673 Tj --289 TJm -(I) 3.3175 Tj --289 TJm -(mean.) 24.0696 Tj --854 TJm -(Much) 23.2427 Tj --289 TJm -(of) 8.2988 Tj --289 TJm -(this) 14.396 Tj --289 TJm -(comple) 29.3299 Tj -15 TJm -(xity) 15.5018 Tj --289 TJm -(could) 22.1369 Tj --289 TJm -(ha) 9.4047 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --289 TJm -(been) 18.8094 Tj --289 TJm -(a) 4.4234 Tj -20 TJm -(v) 4.9813 Tj -20 TJm -(oided) 22.1369 Tj --289 TJm -(if) 6.0871 Tj --289 TJm -(the) 12.1743 Tj -81.963 166.663 Td -(compressed) 47.0334 Tj --250 TJm -(size) 15.4918 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(each) 18.2515 Tj --250 TJm -(block) 22.1369 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(data) 16.5977 Tj --250 TJm -(w) 7.193 Tj -10 TJm -(as) 8.2988 Tj --250 TJm -(recorded) 34.8492 Tj --250 TJm -(in) 7.7509 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(data) 16.5977 Tj --250 TJm -(stream.) 29.0509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -74.491 144.746 Td -(\225) 3.4869 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --450 TJm -(An) 12.1743 Tj --250 TJm -(Adler) 22.6848 Tj -20 TJm -(-32) 13.2801 Tj --250 TJm -(checksum,) 42.3311 Tj --250 TJm -(rather) 23.2328 Tj --250 TJm -(than) 17.1556 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(CRC32) 29.8978 Tj --250 TJm -(checksum,) 42.3311 Tj --250 TJm -(w) 7.193 Tj -10 TJm -(ould) 17.7135 Tj --250 TJm -(be) 9.4047 Tj --250 TJm -(f) 3.3175 Tj -10 TJm -(aster) 18.8094 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(compute.) 36.8018 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 122.828 Td -(It) 6.0871 Tj --349 TJm -(w) 7.193 Tj -10 TJm -(ould) 17.7135 Tj --349 TJm -(be) 9.4047 Tj --349 TJm -(f) 3.3175 Tj -10 TJm -(air) 10.5105 Tj --348 TJm -(to) 7.7509 Tj --349 TJm -(say) 13.2801 Tj --349 TJm -(that) 14.9439 Tj --349 TJm -(the) 12.1743 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -201.979 122.828 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -235.342 122.828 Td -/F122_0 9.9626 Tf -(format) 26.5603 Tj --349 TJm -(w) 7.193 Tj -10 TJm -(as) 8.2988 Tj --349 TJm -(frozen) 25.4445 Tj --348 TJm -(before) 25.4445 Tj --349 TJm -(I) 3.3175 Tj --349 TJm -(properly) 33.7533 Tj --349 TJm -(and) 14.386 Tj --349 TJm -(fully) 18.8194 Tj --349 TJm -(understood) 44.2738 Tj --348 TJm -(the) 12.1743 Tj --349 TJm -(performance) 50.341 Tj -72 110.873 Td -(consequences) 54.7744 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(doing) 22.6948 Tj --250 TJm -(so.) 11.3474 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 88.955 Td -(Impro) 24.3486 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(ements) 28.224 Tj --250 TJm -(which) 24.3486 Tj --250 TJm -(I) 3.3175 Tj --250 TJm -(w) 7.193 Tj -10 TJm -(as) 8.2988 Tj --250 TJm -(able) 16.5977 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(incorporate) 45.3697 Tj --250 TJm -(into) 15.5018 Tj --250 TJm -(0.9.0,) 22.4159 Tj --250 TJm -(despite) 28.224 Tj --250 TJm -(using) 21.589 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(same) 20.4731 Tj --250 TJm -(\002le) 12.7322 Tj --250 TJm -(format,) 29.0509 Tj --250 TJm -(are:) 14.9339 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -534.414 50.951 Td -(31) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 32 35 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -498.728 749.245 Td -/F122_0 9.9626 Tf -(Miscellanea) 48.1393 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -74.491 710.037 Td -/F122_0 9.9626 Tf -(\225) 3.4869 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --450 TJm -(Single) 25.4644 Tj --234 TJm -(array) 20.4632 Tj --234 TJm -(implementation) 62.5452 Tj --235 TJm -(of) 8.2988 Tj --234 TJm -(the) 12.1743 Tj --234 TJm -(in) 7.7509 Tj -40 TJm -(v) 4.9813 Tj -15 TJm -(erse) 16.0398 Tj --234 TJm -(BWT) 22.1369 Tj -74 TJm -(.) 2.4907 Tj --469 TJm -(This) 17.7135 Tj --234 TJm -(signi\002cantly) 49.2651 Tj --235 TJm -(speeds) 26.5603 Tj --234 TJm -(up) 9.9626 Tj --234 TJm -(decompression,) 62.2563 Tj --237 TJm -(presumably) 46.4855 Tj --235 TJm -(because) 31.5316 Tj -81.963 698.082 Td -(it) 5.5392 Tj --250 TJm -(reduces) 30.4258 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(number) 30.4357 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(cache) 22.6749 Tj --250 TJm -(misses.) 29.0609 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -74.491 676.164 Td -(\225) 3.4869 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --450 TJm -(F) 5.5392 Tj -15 TJm -(aster) 18.8094 Tj --338 TJm -(in) 7.7509 Tj -40 TJm -(v) 4.9813 Tj -15 TJm -(erse) 16.0398 Tj --338 TJm -(MTF) 20.4831 Tj --338 TJm -(transform) 38.7346 Tj --338 TJm -(for) 11.6164 Tj --339 TJm -(lar) 10.5105 Tj -18 TJm -(ge) 9.4047 Tj --338 TJm -(MTF) 20.4831 Tj --338 TJm -(v) 4.9813 Tj -25 TJm -(alues.) 22.9638 Tj --574 TJm -(The) 15.4918 Tj --338 TJm -(ne) 9.4047 Tj -25 TJm -(w) 7.193 Tj --339 TJm -(implementation) 62.5452 Tj --338 TJm -(is) 6.6451 Tj --338 TJm -(based) 22.6848 Tj --338 TJm -(on) 9.9626 Tj --338 TJm -(the) 12.1743 Tj --338 TJm -(notion) 25.4644 Tj --339 TJm -(of) 8.2988 Tj --338 TJm -(sliding) 27.1282 Tj -81.963 664.209 Td -(blocks) 26.0123 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(v) 4.9813 Tj -25 TJm -(alues.) 22.9638 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -74.491 642.291 Td -(\225) 3.4869 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -82.461 642.291 Td -/F124_0 9.9626 Tf -(bzip2-0.9.0) 65.7532 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -151.137 642.291 Td -/F122_0 9.9626 Tf -(no) 9.9626 Tj -25 TJm -(w) 7.193 Tj --293 TJm -(reads) 21.0211 Tj --294 TJm -(and) 14.386 Tj --293 TJm -(writes) 24.3486 Tj --293 TJm -(\002les) 16.6077 Tj --294 TJm -(with) 17.7135 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -279.657 642.291 Td -/F124_0 9.9626 Tf -(fread) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -312.467 642.291 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -329.776 642.291 Td -/F124_0 9.9626 Tf -(fwrite) 35.8654 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -365.642 642.291 Td -/F122_0 9.9626 Tf -(;) 2.7696 Tj --315 TJm -(v) 4.9813 Tj -15 TJm -(ersion) 24.3486 Tj --293 TJm -(0.1) 12.4533 Tj --294 TJm -(used) 18.2614 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -440.214 642.291 Td -/F124_0 9.9626 Tf -(putc) 23.9102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -467.047 642.291 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -484.356 642.291 Td -/F124_0 9.9626 Tf -(getc) 23.9102 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -508.266 642.291 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj --880 TJm -(Duh!) 20.4731 Tj -81.963 630.336 Td -(W) 9.4047 Tj -80 TJm -(ell,) 12.4533 Tj --250 TJm -(you) 14.9439 Tj --250 TJm -(li) 5.5392 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --250 TJm -(and) 14.386 Tj --250 TJm -(learn.) 22.4059 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 608.418 Td -(Further) 29.3299 Tj --304 TJm -(ahead,) 25.7234 Tj --318 TJm -(it) 5.5392 Tj --305 TJm -(w) 7.193 Tj -10 TJm -(ould) 17.7135 Tj --304 TJm -(be) 9.4047 Tj --305 TJm -(nice) 16.5977 Tj --304 TJm -(to) 7.7509 Tj --305 TJm -(be) 9.4047 Tj --304 TJm -(able) 16.5977 Tj --304 TJm -(to) 7.7509 Tj --305 TJm -(do) 9.9626 Tj --304 TJm -(random) 30.4357 Tj --305 TJm -(access) 25.4445 Tj --304 TJm -(into) 15.5018 Tj --305 TJm -(\002les.) 19.0983 Tj --946 TJm -(This) 17.7135 Tj --305 TJm -(will) 15.5018 Tj --304 TJm -(require) 28.2141 Tj --304 TJm -(some) 21.031 Tj --305 TJm -(careful) 27.6562 Tj --304 TJm -(design) 26.0123 Tj --305 TJm -(of) 8.2988 Tj -72 596.463 Td -(compressed) 47.0334 Tj --250 TJm -(\002le) 12.7322 Tj --250 TJm -(formats.) 32.9264 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 561.71 Td -/F116_0 20.6585 Tf -(4.2.) 34.4584 Tj --278 TJm -(P) 13.7792 Tj -40 TJm -(or) 20.6585 Tj --20 TJm -(tability) 66.5823 Tj --278 TJm -(issues) 64.3099 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 539.792 Td -/F122_0 9.9626 Tf -(After) 21.0211 Tj --250 TJm -(some) 21.031 Tj --250 TJm -(consideration,) 56.1691 Tj --250 TJm -(I) 3.3175 Tj --250 TJm -(ha) 9.4047 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --250 TJm -(decided) 30.9837 Tj --250 TJm -(not) 12.7322 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(use) 13.2801 Tj --250 TJm -(GNU) 21.579 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -303.231 539.792 Td -/F124_0 9.9626 Tf -(autoconf) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -353.542 539.792 Td -/F122_0 9.9626 Tf -(to) 7.7509 Tj --250 TJm -(con\002gure) 37.6287 Tj --250 TJm -(0.9.5) 19.9252 Tj --250 TJm -(or) 8.2988 Tj --250 TJm -(1.0.) 14.9439 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 517.875 Td -/F124_0 9.9626 Tf -(autoconf) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -119.821 517.875 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --502 TJm -(admirable) 39.8404 Tj --452 TJm -(and) 14.386 Tj --452 TJm -(w) 7.193 Tj -10 TJm -(onderful) 33.7533 Tj --452 TJm -(though) 27.6761 Tj --452 TJm -(it) 5.5392 Tj --452 TJm -(is,) 9.1357 Tj --502 TJm -(mainly) 27.6761 Tj --452 TJm -(assists) 25.4644 Tj --452 TJm -(with) 17.7135 Tj --452 TJm -(portability) 41.5142 Tj --452 TJm -(problems) 37.0808 Tj --452 TJm -(between) 33.1954 Tj --452 TJm -(Unix-lik) 33.7633 Tj -10 TJm -(e) 4.4234 Tj -72 505.92 Td -(platforms.) 40.6773 Tj --1398 TJm -(But) 14.396 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -144.784 505.92 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -178.455 505.92 Td -/F122_0 9.9626 Tf -(doesn') 26.5603 Tj -18 TJm -(t) 2.7696 Tj --380 TJm -(ha) 9.4047 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --379 TJm -(much) 22.1369 Tj --380 TJm -(in) 7.7509 Tj --380 TJm -(the) 12.1743 Tj --379 TJm -(w) 7.193 Tj -10 TJm -(ay) 9.4047 Tj --380 TJm -(of) 8.2988 Tj --380 TJm -(portability) 41.5142 Tj --379 TJm -(problems) 37.0808 Tj --380 TJm -(on) 9.9626 Tj --380 TJm -(Unix;) 22.6948 Tj --444 TJm -(most) 19.3773 Tj --380 TJm -(of) 8.2988 Tj --380 TJm -(the) 12.1743 Tj --379 TJm -(dif) 11.0684 Tj -25 TJm -(\002culties) 31.5516 Tj -72 493.964 Td -(appear) 26.5503 Tj --297 TJm -(when) 21.579 Tj --296 TJm -(p) 4.9813 Tj --1 TJm -(or) 8.2988 Tj -1 TJm -(ting) 15.5018 Tj --297 TJm -(to) 7.7509 Tj --297 TJm -(the) 12.1743 Tj --297 TJm -(Mac,) 20.1942 Tj --308 TJm -(or) 8.2988 Tj --297 TJm -(to) 7.7509 Tj --297 TJm -(Microsoft') 42.61 Tj -55 TJm -(s) 3.8755 Tj --296 TJm -(operating) 37.6287 Tj --297 TJm -(systems.) 34.0422 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -361.339 493.964 Td -/F124_0 9.9626 Tf -(autoconf) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -412.116 493.964 Td -/F122_0 9.9626 Tf -(doesn') 26.5603 Tj -18 TJm -(t) 2.7696 Tj --297 TJm -(help) 17.1556 Tj --297 TJm -(in) 7.7509 Tj --296 TJm -(those) 21.031 Tj --297 TJm -(cases,) 23.5117 Tj --308 TJm -(and) 14.386 Tj -72 482.009 Td -(brings) 24.9065 Tj --250 TJm -(in) 7.7509 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(whole) 24.3486 Tj --250 TJm -(load) 17.1556 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(ne) 9.4047 Tj -25 TJm -(w) 7.193 Tj --250 TJm -(comple) 29.3299 Tj -15 TJm -(xity) 15.5018 Tj -65 TJm -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 460.091 Td -(Most) 20.4831 Tj --392 TJm -(people) 26.5603 Tj --392 TJm -(should) 26.5703 Tj --393 TJm -(be) 9.4047 Tj --392 TJm -(able) 16.5977 Tj --392 TJm -(to) 7.7509 Tj --392 TJm -(compile) 32.0995 Tj --393 TJm -(the) 12.1743 Tj --392 TJm -(library) 26.5603 Tj --392 TJm -(and) 14.386 Tj --392 TJm -(program) 33.7533 Tj --393 TJm -(under) 22.6848 Tj --392 TJm -(Unix) 19.9252 Tj --392 TJm -(straight) 29.8878 Tj --392 TJm -(out-of-the-box,) 60.5925 Tj --428 TJm -(so) 8.8568 Tj --392 TJm -(to) 7.7509 Tj --393 TJm -(speak,) 25.1755 Tj -72 448.136 Td -(especially) 39.8404 Tj --250 TJm -(if) 6.0871 Tj --250 TJm -(you) 14.9439 Tj --250 TJm -(ha) 9.4047 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(v) 4.9813 Tj -15 TJm -(ersion) 24.3486 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(GNU) 21.579 Tj --250 TJm -(C) 6.6451 Tj --250 TJm -(a) 4.4234 Tj -20 TJm -(v) 4.9813 Tj -25 TJm -(ailable.) 29.0509 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 426.218 Td -(There) 23.2328 Tj --259 TJm -(are) 12.1643 Tj --258 TJm -(a) 4.4234 Tj --259 TJm -(couple) 26.5603 Tj --258 TJm -(of) 8.2988 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -159.561 426.218 Td -/F124_0 9.9626 Tf -(__inline__) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -221.913 426.218 Td -/F122_0 9.9626 Tf -(directi) 25.4544 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(es) 8.2988 Tj --259 TJm -(in) 7.7509 Tj --258 TJm -(the) 12.1743 Tj --259 TJm -(code.) 21.3 Tj --671 TJm -(GNU) 21.579 Tj --259 TJm -(C) 6.6451 Tj --258 TJm -(\() 3.3175 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -352.587 426.218 Td -/F124_0 9.9626 Tf -(gcc) 17.9327 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -370.52 426.218 Td -/F122_0 9.9626 Tf -(\)) 3.3175 Tj --259 TJm -(should) 26.5703 Tj --258 TJm -(be) 9.4047 Tj --259 TJm -(able) 16.5977 Tj --258 TJm -(to) 7.7509 Tj --259 TJm -(handle) 26.5603 Tj --258 TJm -(them.) 22.4159 Tj --672 TJm -(If) 6.6351 Tj --259 TJm -(you') 18.2614 Tj -50 TJm -(re) 7.7409 Tj -72 414.263 Td -(not) 12.7322 Tj --279 TJm -(using) 21.589 Tj --279 TJm -(GNU) 21.579 Tj --279 TJm -(C,) 9.1357 Tj --279 TJm -(your) 18.2614 Tj --279 TJm -(C) 6.6451 Tj --279 TJm -(compiler) 35.417 Tj --279 TJm -(shouldn') 34.8691 Tj -18 TJm -(t) 2.7696 Tj --279 TJm -(see) 12.7222 Tj --279 TJm -(them) 19.9252 Tj --279 TJm -(at) 7.193 Tj --279 TJm -(all.) 12.4533 Tj --794 TJm -(If) 6.6351 Tj --279 TJm -(your) 18.2614 Tj --279 TJm -(compiler) 35.417 Tj --279 TJm -(does,) 20.7521 Tj --286 TJm -(for) 11.6164 Tj --279 TJm -(some) 21.031 Tj --279 TJm -(reason,) 28.493 Tj --287 TJm -(see) 12.7222 Tj --279 TJm -(them) 19.9252 Tj --279 TJm -(and) 14.386 Tj -72 402.308 Td -(doesn') 26.5603 Tj -18 TJm -(t) 2.7696 Tj --283 TJm -(lik) 10.5205 Tj -10 TJm -(e) 4.4234 Tj --283 TJm -(them,) 22.4159 Tj --291 TJm -(just) 14.396 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -164.167 402.308 Td -/F124_0 9.9626 Tf -(#define) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --283 TJm -(__inline__) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -271.425 402.308 Td -/F122_0 9.9626 Tf -(to) 7.7509 Tj --283 TJm -(be) 9.4047 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -294.22 402.308 Td -/F124_0 9.9626 Tf -(/) 5.9776 Tj -300.197 400.565 Td -(*) 5.9776 Tj --600 TJm -(*) 5.9776 Tj -318.13 402.308 Td -(/) 5.9776 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -324.108 402.308 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj --818 TJm -(One) 16.5977 Tj --283 TJm -(easy) 17.7035 Tj --283 TJm -(w) 7.193 Tj -10 TJm -(ay) 9.4047 Tj --283 TJm -(to) 7.7509 Tj --283 TJm -(do) 9.9626 Tj --283 TJm -(this) 14.396 Tj --283 TJm -(is) 6.6451 Tj --283 TJm -(to) 7.7509 Tj --283 TJm -(compile) 32.0995 Tj --283 TJm -(with) 17.7135 Tj --283 TJm -(the) 12.1743 Tj --283 TJm -(\003ag) 14.9439 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 390.353 Td -/F124_0 9.9626 Tf -(-D__inline__=) 77.7083 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -149.709 390.353 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --250 TJm -(which) 24.3486 Tj --250 TJm -(should) 26.5703 Tj --250 TJm -(be) 9.4047 Tj --250 TJm -(understood) 44.2738 Tj --250 TJm -(by) 9.9626 Tj --250 TJm -(most) 19.3773 Tj --250 TJm -(Unix) 19.9252 Tj --250 TJm -(compilers.) 41.7831 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 368.435 Td -(If) 6.6351 Tj --321 TJm -(you) 14.9439 Tj --321 TJm -(still) 14.9539 Tj --322 TJm -(ha) 9.4047 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --321 TJm -(dif) 11.0684 Tj -25 TJm -(\002culties,) 34.0422 Tj --339 TJm -(try) 11.0684 Tj --321 TJm -(compiling) 40.4083 Tj --321 TJm -(with) 17.7135 Tj --322 TJm -(t) 2.7696 Tj -1 TJm -(he) 9.4047 Tj --322 TJm -(macro) 24.8965 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -310.295 368.435 Td -/F124_0 9.9626 Tf -(BZ_STRICT_ANSI) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -397.181 368.435 Td -/F122_0 9.9626 Tf -(de\002ned.) 31.8205 Tj --524 TJm -(This) 17.7135 Tj --321 TJm -(should) 26.5703 Tj --321 TJm -(enable) 26.0024 Tj --321 TJm -(you) 14.9439 Tj --322 TJm -(to) 7.7509 Tj -72 356.48 Td -(b) 4.9813 Tj -20 TJm -(uild) 15.5018 Tj --321 TJm -(the) 12.1743 Tj --321 TJm -(library) 26.5603 Tj --322 TJm -(in) 7.7509 Tj --321 TJm -(a) 4.4234 Tj --321 TJm -(strictly) 27.6761 Tj --321 TJm -(ANSI) 23.2427 Tj --321 TJm -(compliant) 39.8504 Tj --322 TJm -(en) 9.4047 Tj -40 TJm -(vironment.) 43.4469 Tj --1047 TJm -(Building) 34.8791 Tj --321 TJm -(the) 12.1743 Tj --321 TJm -(program) 33.7533 Tj --322 TJm -(itself) 19.9252 Tj --321 TJm -(lik) 10.5205 Tj -10 TJm -(e) 4.4234 Tj --321 TJm -(this) 14.396 Tj --321 TJm -(is) 6.6451 Tj --321 TJm -(dangerous) 40.9463 Tj --322 TJm -(and) 14.386 Tj -72 344.525 Td -(not) 12.7322 Tj --260 TJm -(supported,) 41.7831 Tj --263 TJm -(since) 20.4731 Tj --260 TJm -(you) 14.9439 Tj --260 TJm -(remo) 20.4731 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -204.498 344.525 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -234.386 344.525 Td -/F122_0 9.9626 Tf -(') 3.3175 Tj -55 TJm -(s) 3.8755 Tj --260 TJm -(checks) 27.1082 Tj --260 TJm -(ag) 9.4047 Tj -5 TJm -(ainst) 18.8194 Tj --260 TJm -(compressing) 50.3609 Tj --261 TJm -(directories,) 44.5428 Tj --262 TJm -(symbolic) 36.5329 Tj --261 TJm -(li) 5.5392 Tj -1 TJm -(nks,) 16.3287 Tj --263 TJm -(de) 9.4047 Tj -25 TJm -(vices,) 22.9638 Tj --263 TJm -(and) 14.386 Tj --260 TJm -(other) 20.4731 Tj -72 332.57 Td -(not-really-a-\002le) 62.5253 Tj --250 TJm -(entities.) 31.2726 Tj --620 TJm -(This) 17.7135 Tj --250 TJm -(could) 22.1369 Tj --250 TJm -(cause) 22.1269 Tj --250 TJm -(\002lesystem) 40.4083 Tj --250 TJm -(corruption!) 44.8217 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 310.652 Td -(One) 16.5977 Tj --392 TJm -(other) 20.4731 Tj --391 TJm -(thing:) 23.2527 Tj --594 TJm -(if) 6.0871 Tj --391 TJm -(you) 14.9439 Tj --392 TJm -(create) 23.7807 Tj --391 TJm -(a) 4.4234 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -210.879 310.652 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -244.669 310.652 Td -/F122_0 9.9626 Tf -(binary) 25.4544 Tj --392 TJm -(for) 11.6164 Tj --391 TJm -(public) 24.9065 Tj --392 TJm -(distrib) 25.4644 Tj -20 TJm -(ution,) 22.9738 Tj --427 TJm -(please) 24.8965 Tj --392 TJm -(consider) 33.7533 Tj --391 TJm -(linking) 28.234 Tj --392 TJm -(it) 5.5392 Tj --391 TJm -(statically) 35.9749 Tj --392 TJm -(\() 3.3175 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -522.067 310.652 Td -/F124_0 9.9626 Tf -(gcc) 17.9327 Tj -72 298.697 Td -(-static) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -113.843 298.697 Td -/F122_0 9.9626 Tf -(\).) 5.8082 Tj --620 TJm -(This) 17.7135 Tj --250 TJm -(a) 4.4234 Tj -20 TJm -(v) 4.9813 Tj -20 TJm -(oids) 16.6077 Tj --250 TJm -(all) 9.9626 Tj --250 TJm -(sorts) 18.8194 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(library-v) 34.8591 Tj -15 TJm -(ersion) 24.3486 Tj --250 TJm -(issues) 23.8007 Tj --250 TJm -(that) 14.9439 Tj --250 TJm -(others) 24.3486 Tj --250 TJm -(may) 17.1556 Tj --250 TJm -(encounter) 39.2825 Tj --250 TJm -(later) 17.7035 Tj --250 TJm -(on.) 12.4533 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 276.779 Td -(If) 6.6351 Tj --296 TJm -(you) 14.9439 Tj --296 TJm -(b) 4.9813 Tj -20 TJm -(uild) 15.5018 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -122.708 276.779 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -155.545 276.779 Td -/F122_0 9.9626 Tf -(on) 9.9626 Tj --296 TJm -(W) 9.4047 Tj -40 TJm -(in32,) 20.2042 Tj --307 TJm -(you) 14.9439 Tj --296 TJm -(must) 19.3773 Tj --296 TJm -(set) 11.0684 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -254.965 276.779 Td -/F124_0 9.9626 Tf -(BZ_UNIX) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -299.756 276.779 Td -/F122_0 9.9626 Tf -(to) 7.7509 Tj --296 TJm -(0) 4.9813 Tj --296 TJm -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -335.72 276.779 Td -/F124_0 9.9626 Tf -(BZ_LCCWIN32) 65.7532 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -404.422 276.779 Td -/F122_0 9.9626 Tf -(to) 7.7509 Tj --296 TJm -(1,) 7.472 Tj --307 TJm -(in) 7.7509 Tj --296 TJm -(the) 12.1743 Tj --296 TJm -(\002le) 12.7322 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -467.159 276.779 Td -/F124_0 9.9626 Tf -(bzip2.c) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -509.002 276.779 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --307 TJm -(before) 25.4445 Tj -72 264.824 Td -(compiling.) 42.899 Tj --310 TJm -(Otherwise) 40.9463 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(resulting) 34.8691 Tj --250 TJm -(binary) 25.4544 Tj --250 TJm -(w) 7.193 Tj -10 TJm -(on') 13.2801 Tj -18 TJm -(t) 2.7696 Tj --250 TJm -(w) 7.193 Tj -10 TJm -(ork) 13.2801 Tj --250 TJm -(correctly) 35.4071 Tj -65 TJm -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 230.071 Td -/F116_0 20.6585 Tf -(4.3.) 34.4584 Tj --278 TJm -(Repor) 59.6824 Tj --20 TJm -(ting) 37.867 Tj --278 TJm -(b) 12.6223 Tj -20 TJm -(ugs) 36.7308 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 208.153 Td -/F122_0 9.9626 Tf -(I) 3.3175 Tj --228 TJm -(tried) 18.2614 Tj --228 TJm -(pretty) 23.2427 Tj --228 TJm -(hard) 17.7035 Tj --228 TJm -(to) 7.7509 Tj --228 TJm -(mak) 17.1556 Tj -10 TJm -(e) 4.4234 Tj --228 TJm -(sure) 16.5977 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -196.25 208.153 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -228.409 208.153 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --228 TJm -(b) 4.9813 Tj -20 TJm -(ug) 9.9626 Tj --228 TJm -(free,) 17.9725 Tj --232 TJm -(both) 17.7135 Tj --228 TJm -(by) 9.9626 Tj --228 TJm -(design) 26.0123 Tj --228 TJm -(and) 14.386 Tj --228 TJm -(by) 9.9626 Tj --228 TJm -(testing.) 29.0609 Tj --605 TJm -(Hopefully) 40.3983 Tj --228 TJm -(you') 18.2614 Tj -10 TJm -(ll) 5.5392 Tj --228 TJm -(ne) 9.4047 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(er) 7.7409 Tj --228 TJm -(need) 18.8094 Tj --228 TJm -(to) 7.7509 Tj --228 TJm -(read) 17.1456 Tj -72 196.198 Td -(this) 14.396 Tj --250 TJm -(section) 28.224 Tj --250 TJm -(for) 11.6164 Tj --250 TJm -(real.) 17.4246 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 174.28 Td -(Ne) 11.6164 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(ertheless,) 37.3498 Tj --313 TJm -(if) 6.0871 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -137.751 174.28 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -170.634 174.28 Td -/F122_0 9.9626 Tf -(dies) 16.0497 Tj --301 TJm -(with) 17.7135 Tj --300 TJm -(a) 4.4234 Tj --301 TJm -(se) 8.2988 Tj -15 TJm -(gmentation) 44.8317 Tj --300 TJm -(f) 3.3175 Tj -10 TJm -(ault,) 17.4346 Tj --314 TJm -(a) 4.4234 Tj --300 TJm -(b) 4.9813 Tj -20 TJm -(us) 8.8568 Tj --301 TJm -(error) 19.3573 Tj --300 TJm -(or) 8.2988 Tj --301 TJm -(an) 9.4047 Tj --301 TJm -(internal) 30.4357 Tj --300 TJm -(assertion) 35.417 Tj --301 TJm -(f) 3.3175 Tj -10 TJm -(ailure,) 25.1755 Tj --313 TJm -(it) 5.5392 Tj --301 TJm -(wil) 12.7322 Tj -1 TJm -(l) 2.7696 Tj --301 TJm -(ask) 13.2801 Tj --301 TJm -(you) 14.9439 Tj --300 TJm -(to) 7.7509 Tj -72 162.325 Td -(email) 22.1369 Tj --242 TJm -(me) 12.1743 Tj --243 TJm -(a) 4.4234 Tj --242 TJm -(b) 4.9813 Tj -20 TJm -(ug) 9.9626 Tj --243 TJm -(report.) 26.2813 Tj --615 TJm -(Experience) 44.8118 Tj --242 TJm -(from) 19.3673 Tj --243 TJm -(years) 21.0211 Tj --242 TJm -(of) 8.2988 Tj --242 TJm -(feedback) 35.955 Tj --243 TJm -(of) 8.2988 Tj --242 TJm -(bzip2) 22.1369 Tj --243 TJm -(users) 20.4731 Tj --242 TJm -(indicates) 35.417 Tj --243 TJm -(that) 14.9439 Tj --242 TJm -(almost) 26.5703 Tj --242 TJm -(all) 9.9626 Tj --243 TJm -(these) 20.4731 Tj --242 TJm -(problems) 37.0808 Tj --243 TJm -(can) 13.8281 Tj -72 150.37 Td -(be) 9.4047 Tj --250 TJm -(traced) 24.3386 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(either) 22.6848 Tj --250 TJm -(compiler) 35.417 Tj --250 TJm -(b) 4.9813 Tj -20 TJm -(ugs) 13.8381 Tj --250 TJm -(or) 8.2988 Tj --250 TJm -(hardw) 24.8965 Tj -10 TJm -(are) 12.1643 Tj --250 TJm -(problems.) 39.5714 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -534.414 50.951 Td -(32) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 33 36 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -498.728 749.245 Td -/F122_0 9.9626 Tf -(Miscellanea) 48.1393 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -74.491 710.037 Td -/F122_0 9.9626 Tf -(\225) 3.4869 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --450 TJm -(Recompile) 43.1679 Tj --322 TJm -(the) 12.1743 Tj --322 TJm -(program) 33.7533 Tj --322 TJm -(with) 17.7135 Tj --322 TJm -(no) 9.9626 Tj --322 TJm -(optimisat) 37.0908 Tj -1 TJm -(ion,) 15.2229 Tj --340 TJm -(and) 14.386 Tj --322 TJm -(see) 12.7222 Tj --322 TJm -(if) 6.0871 Tj --322 TJm -(it) 5.5392 Tj --322 TJm -(w) 7.193 Tj -10 TJm -(orks.) 19.6462 Tj --1052 TJm -(And/or) 28.224 Tj --322 TJm -(try) 11.0684 Tj --322 TJm -(a) 4.4234 Tj --321 TJm -(dif) 11.0684 Tj -25 TJm -(ferent) 23.2328 Tj --322 TJm -(compiler) 35.417 Tj -55 TJm -(.) 2.4907 Tj --1052 TJm -(I) 3.3175 Tj --322 TJm -(heard) 22.1269 Tj --322 TJm -(all) 9.9626 Tj -81.963 698.082 Td -(sorts) 18.8194 Tj --309 TJm -(of) 8.2988 Tj --310 TJm -(stories) 26.0123 Tj --310 TJm -(about) 22.1369 Tj --309 TJm -(v) 4.9813 Tj -25 TJm -(arious) 24.3486 Tj --310 TJm -(\003a) 9.9626 Tj -20 TJm -(v) 4.9813 Tj -20 TJm -(ours) 17.1556 Tj --309 TJm -(of) 8.2988 Tj --310 TJm -(GNU) 21.579 Tj --309 TJm -(C) 6.6451 Tj --310 TJm -(\(and) 17.7035 Tj --309 TJm -(other) 20.4731 Tj --310 TJm -(compilers\)) 42.61 Tj --309 TJm -(generating) 42.0521 Tj --310 TJm -(bad) 14.386 Tj --310 TJm -(code) 18.8094 Tj --309 TJm -(for) 11.6164 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -471.527 698.082 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -501.415 698.082 Td -/F122_0 9.9626 Tf -(,) 2.4907 Tj --324 TJm -(and) 14.386 Tj --310 TJm -(I') 6.6351 Tj -50 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj -81.963 686.127 Td -(run) 13.2801 Tj --250 TJm -(across) 24.8965 Tj --250 TJm -(tw) 9.9626 Tj -10 TJm -(o) 4.9813 Tj --250 TJm -(such) 18.2614 Tj --250 TJm -(e) 4.4234 Tj -15 TJm -(xamples) 33.2053 Tj --250 TJm -(myself.) 29.6088 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -81.963 664.209 Td -(2.7.X) 22.1369 Tj --299 TJm -(v) 4.9813 Tj -15 TJm -(ersions) 28.224 Tj --300 TJm -(of) 8.2988 Tj --299 TJm -(GNU) 21.579 Tj --299 TJm -(C) 6.6451 Tj --300 TJm -(are) 12.1643 Tj --299 TJm -(kno) 14.9439 Tj -25 TJm -(wn) 12.1743 Tj --300 TJm -(to) 7.7509 Tj --299 TJm -(generate) 33.7433 Tj --299 TJm -(bad) 14.386 Tj --300 TJm -(code) 18.8094 Tj --299 TJm -(from) 19.3673 Tj --299 TJm -(time) 17.7135 Tj --300 TJm -(to) 7.7509 Tj --299 TJm -(time,) 20.2042 Tj --312 TJm -(at) 7.193 Tj --299 TJm -(high) 17.7135 Tj --300 TJm -(optimisation) 49.823 Tj --299 TJm -(le) 7.193 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(els.) 13.5591 Tj --916 TJm -(If) 6.6351 Tj --300 TJm -(you) 14.9439 Tj -81.963 652.254 Td -(get) 12.1743 Tj --328 TJm -(problems,) 39.5714 Tj --348 TJm -(try) 11.0684 Tj --328 TJm -(using) 21.589 Tj --329 TJm -(the) 12.1743 Tj --328 TJm -(\003ags) 18.8194 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -217.176 652.254 Td -/F124_0 9.9626 Tf -(-O2) 17.9327 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --328 TJm -(-fomit-frame-pointer) 119.5512 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --329 TJm -(-fno-strength-reduce) 119.5512 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -480.753 652.254 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj --1090 TJm -(Y) 7.193 Tj -110 TJm -(ou) 9.9626 Tj --328 TJm -(should) 26.5703 Tj -81.963 640.299 Td -(speci\002cally) 45.3796 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -129.832 640.299 Td -/F621_0 9.9626 Tf -(not) 12.7322 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -145.055 640.299 Td -/F122_0 9.9626 Tf -(use) 13.2801 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -160.826 640.299 Td -/F124_0 9.9626 Tf -(-funroll-loops) 83.6858 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -244.512 640.299 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -81.963 618.381 Td -(Y) 7.193 Tj -110 TJm -(ou) 9.9626 Tj --240 TJm -(may) 17.1556 Tj --240 TJm -(notice) 24.3486 Tj --241 TJm -(that) 14.9439 Tj --240 TJm -(the) 12.1743 Tj --240 TJm -(Mak) 18.2614 Tj -10 TJm -(e\002le) 17.1556 Tj --240 TJm -(runs) 17.1556 Tj --240 TJm -(six) 11.6264 Tj --241 TJm -(tests) 17.7135 Tj --240 TJm -(as) 8.2988 Tj --240 TJm -(part) 15.4918 Tj --240 TJm -(of) 8.2988 Tj --240 TJm -(the) 12.1743 Tj --241 TJm -(b) 4.9813 Tj -20 TJm -(uild) 15.5018 Tj --240 TJm -(process.) 32.3685 Tj --613 TJm -(If) 6.6351 Tj --240 TJm -(the) 12.1743 Tj --241 TJm -(program) 33.7533 Tj --240 TJm -(passes) 25.4544 Tj --240 TJm -(all) 9.9626 Tj --240 TJm -(of) 8.2988 Tj --240 TJm -(these,) 22.9638 Tj --242 TJm -(it') 8.8568 Tj -55 TJm -(s) 3.8755 Tj --241 TJm -(a) 4.4234 Tj -81.963 606.426 Td -(pretty) 23.2427 Tj --250 TJm -(good) 19.9252 Tj --250 TJm -(\(b) 8.2988 Tj -20 TJm -(ut) 7.7509 Tj --250 TJm -(not) 12.7322 Tj --250 TJm -(100%\)) 26.5603 Tj --250 TJm -(indication) 39.8504 Tj --250 TJm -(that) 14.9439 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(compiler) 35.417 Tj --250 TJm -(has) 13.2801 Tj --250 TJm -(done) 19.3673 Tj --250 TJm -(its) 9.4147 Tj --250 TJm -(job) 12.7322 Tj --250 TJm -(correctly) 35.4071 Tj -65 TJm -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -74.491 584.508 Td -(\225) 3.4869 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --450 TJm -(If) 6.6351 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -91.723 584.508 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -124.239 584.508 Td -/F122_0 9.9626 Tf -(crashes) 29.3199 Tj --264 TJm -(randomly) 38.1866 Tj -65 TJm -(,) 2.4907 Tj --267 TJm -(and) 14.386 Tj --264 TJm -(the) 12.1743 Tj --263 TJm -(crashes) 29.3199 Tj --264 TJm -(are) 12.1643 Tj --264 TJm -(not) 12.7322 Tj --263 TJm -(repeatable,) 43.427 Tj --268 TJm -(you) 14.9439 Tj --263 TJm -(may) 17.1556 Tj --264 TJm -(ha) 9.4047 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --264 TJm -(a) 4.4234 Tj --264 TJm -(\003ak) 14.9439 Tj -15 TJm -(y) 4.9813 Tj --263 TJm -(memory) 33.2053 Tj --264 TJm -(subsystem.) 44.0048 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -510.112 584.508 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -81.963 572.553 Td -/F122_0 9.9626 Tf -(really) 22.6848 Tj --274 TJm -(hammers) 36.5229 Tj --274 TJm -(your) 18.2614 Tj --274 TJm -(memory) 33.2053 Tj --274 TJm -(hierarch) 32.6375 Tj -5 TJm -(y) 4.9813 Tj -65 TJm -(,) 2.4907 Tj --280 TJm -(and) 14.386 Tj --274 TJm -(if) 6.0871 Tj --274 TJm -(it') 8.8568 Tj -55 TJm -(s) 3.8755 Tj --274 TJm -(a) 4.4234 Tj --274 TJm -(bit) 10.5205 Tj --274 TJm -(mar) 15.4918 Tj -18 TJm -(ginal,) 22.4159 Tj --280 TJm -(you) 14.9439 Tj --274 TJm -(may) 17.1556 Tj --274 TJm -(get) 12.1743 Tj --274 TJm -(these) 20.4731 Tj --274 TJm -(problems.) 39.5714 Tj --764 TJm -(Ditto) 20.4831 Tj --274 TJm -(if) 6.0871 Tj --274 TJm -(your) 18.2614 Tj --274 TJm -(disk) 16.6077 Tj -81.963 560.598 Td -(or) 8.2988 Tj --250 TJm -(I/O) 13.2801 Tj --250 TJm -(subsystem) 41.5142 Tj --250 TJm -(is) 6.6451 Tj --250 TJm -(slo) 11.6264 Tj -25 TJm -(wly) 14.9439 Tj --250 TJm -(f) 3.3175 Tj -10 TJm -(ailing.) 25.1855 Tj --620 TJm -(Y) 7.193 Tj -111 TJm -(up,) 12.4533 Tj --250 TJm -(this) 14.396 Tj --250 TJm -(really) 22.6848 Tj --250 TJm -(does) 18.2614 Tj --250 TJm -(happen.) 31.2626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -81.963 538.68 Td -(T) 6.0871 Tj -35 TJm -(ry) 8.2988 Tj --250 TJm -(using) 21.589 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(dif) 11.0684 Tj -25 TJm -(ferent) 23.2328 Tj --250 TJm -(machine) 33.7533 Tj --250 TJm -(of) 8.2988 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(same) 20.4731 Tj --250 TJm -(type,) 19.6462 Tj --250 TJm -(and) 14.386 Tj --250 TJm -(see) 12.7222 Tj --250 TJm -(if) 6.0871 Tj --250 TJm -(you) 14.9439 Tj --250 TJm -(can) 13.8281 Tj --250 TJm -(repeat) 24.3386 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(problem.) 35.696 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -74.491 516.762 Td -(\225) 3.4869 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC --450 TJm -(This) 17.7135 Tj --252 TJm -(isn') 14.9439 Tj -18 TJm -(t) 2.7696 Tj --251 TJm -(really) 22.6848 Tj --252 TJm -(a) 4.4234 Tj --252 TJm -(b) 4.9813 Tj -20 TJm -(ug,) 12.4533 Tj --252 TJm -(b) 4.9813 Tj -20 TJm -(ut) 7.7509 Tj --251 TJm -(...) 7.472 Tj --315 TJm -(If) 6.6351 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -209.383 516.762 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -241.778 516.762 Td -/F122_0 9.9626 Tf -(tells) 16.6077 Tj --252 TJm -(you) 14.9439 Tj --251 TJm -(your) 18.2614 Tj --252 TJm -(\002le) 12.7322 Tj --252 TJm -(is) 6.6451 Tj --251 TJm -(corrupted) 38.1767 Tj --252 TJm -(on) 9.9626 Tj --252 TJm -(decompression,) 62.2563 Tj --252 TJm -(and) 14.386 Tj --251 TJm -(you) 14.9439 Tj --252 TJm -(obtained) 34.3112 Tj --252 TJm -(the) 12.1743 Tj --251 TJm -(\002le) 12.7322 Tj -81.963 504.807 Td -(via) 12.1743 Tj --281 TJm -(FTP) 17.1656 Tj -111 TJm -(,) 2.4907 Tj --282 TJm -(there) 19.9152 Tj --282 TJm -(is) 6.6451 Tj --281 TJm -(a) 4.4234 Tj --282 TJm -(possibility) 41.5241 Tj --281 TJm -(that) 14.9439 Tj --282 TJm -(you) 14.9439 Tj --281 TJm -(for) 11.6164 Tj -18 TJm -(got) 12.7322 Tj --282 TJm -(to) 7.7509 Tj --281 TJm -(tell) 12.7322 Tj --282 TJm -(FTP) 17.1656 Tj --281 TJm -(to) 7.7509 Tj --282 TJm -(do) 9.9626 Tj --281 TJm -(a) 4.4234 Tj --282 TJm -(binary) 25.4544 Tj --281 TJm -(mode) 22.1369 Tj --282 TJm -(transfer) 30.4258 Tj -55 TJm -(.) 2.4907 Tj --809 TJm -(That) 18.2614 Tj --282 TJm -(absolutely) 40.9562 Tj --281 TJm -(will) 15.5018 Tj --282 TJm -(cause) 22.1269 Tj -81.963 492.852 Td -(the) 12.1743 Tj --250 TJm -(\002le) 12.7322 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(be) 9.4047 Tj --250 TJm -(non-decompressible.) 82.7294 Tj --620 TJm -(Y) 7.193 Tj -110 TJm -(ou') 13.2801 Tj -10 TJm -(ll) 5.5392 Tj --250 TJm -(ha) 9.4047 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(transfer) 30.4258 Tj --250 TJm -(it) 5.5392 Tj --250 TJm -(ag) 9.4047 Tj -5 TJm -(ain.) 14.6649 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 470.934 Td -(If) 6.6351 Tj --235 TJm -(you') 18.2614 Tj -50 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --236 TJm -(inc) 12.1743 Tj -1 TJm -(o) 4.9813 Tj --1 TJm -(r) 3.3175 Tj -1 TJm -(po) 9.9626 Tj --1 TJm -(r) 3.3175 Tj -1 TJm -(ated) 16.5977 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -163.036 470.934 Td -/F124_0 9.9626 Tf -(libbzip2) 47.8205 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -213.2 470.934 Td -/F122_0 9.9626 Tf -(into) 15.5018 Tj --235 TJm -(your) 18.2614 Tj --236 TJm -(o) 4.9813 Tj -25 TJm -(wn) 12.1743 Tj --235 TJm -(program) 33.7533 Tj --235 TJm -(and) 14.386 Tj --235 TJm -(are) 12.1643 Tj --236 TJm -(gett) 14.9439 Tj -1 TJm -(ing) 12.7322 Tj --236 TJm -(problems,) 39.5714 Tj --238 TJm -(please,) 27.3872 Tj --238 TJm -(please,) 27.3872 Tj --238 TJm -(please,) 27.3872 Tj --238 TJm -(check) 23.2328 Tj --236 TJm -(that) 14.9439 Tj -72 458.979 Td -(the) 12.1743 Tj --242 TJm -(parameters) 43.7059 Tj --243 TJm -(you) 14.9439 Tj --242 TJm -(are) 12.1643 Tj --242 TJm -(passing) 29.8878 Tj --243 TJm -(in) 7.7509 Tj --242 TJm -(calls) 18.2614 Tj --242 TJm -(to) 7.7509 Tj --243 TJm -(the) 12.1743 Tj --242 TJm -(library) 26.5603 Tj -65 TJm -(,) 2.4907 Tj --244 TJm -(are) 12.1643 Tj --242 TJm -(correct,) 30.1468 Tj --244 TJm -(and) 14.386 Tj --243 TJm -(in) 7.7509 Tj --242 TJm -(accordance) 44.8018 Tj --242 TJm -(with) 17.7135 Tj --243 TJm -(what) 19.3673 Tj --242 TJm -(the) 12.1743 Tj --242 TJm -(documentation) 59.2177 Tj --243 TJm -(says) 17.1556 Tj -72 447.024 Td -(is) 6.6451 Tj --250 TJm -(allo) 14.9439 Tj -25 TJm -(w) 7.193 Tj -10 TJm -(able.) 19.0883 Tj --310 TJm -(I) 3.3175 Tj --250 TJm -(ha) 9.4047 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --250 TJm -(tried) 18.2614 Tj --250 TJm -(to) 7.7509 Tj --250 TJm -(mak) 17.1556 Tj -10 TJm -(e) 4.4234 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(library) 26.5603 Tj --250 TJm -(rob) 13.2801 Tj -20 TJm -(ust) 11.6264 Tj --250 TJm -(ag) 9.4047 Tj -5 TJm -(ainst) 18.8194 Tj --250 TJm -(such) 18.2614 Tj --250 TJm -(problems,) 39.5714 Tj --250 TJm -(b) 4.9813 Tj -20 TJm -(ut) 7.7509 Tj --250 TJm -(I'm) 14.386 Tj --250 TJm -(sure) 16.5977 Tj --250 TJm -(I) 3.3175 Tj --250 TJm -(ha) 9.4047 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(en') 12.7222 Tj -18 TJm -(t) 2.7696 Tj --250 TJm -(succeeded.) 43.427 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 425.106 Td -(Finally) 28.234 Tj -65 TJm -(,) 2.4907 Tj --324 TJm -(if) 6.0871 Tj --310 TJm -(the) 12.1743 Tj --309 TJm -(abo) 14.386 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --309 TJm -(comments) 40.9562 Tj --310 TJm -(don') 18.2614 Tj -18 TJm -(t) 2.7696 Tj --309 TJm -(help,) 19.6462 Tj --324 TJm -(you') 18.2614 Tj -10 TJm -(ll) 5.5392 Tj --310 TJm -(ha) 9.4047 Tj -20 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --309 TJm -(to) 7.7509 Tj --309 TJm -(send) 18.2614 Tj --310 TJm -(me) 12.1743 Tj --309 TJm -(a) 4.4234 Tj --309 TJm -(b) 4.9813 Tj -20 TJm -(ug) 9.9626 Tj --310 TJm -(report.) 26.2813 Tj --976 TJm -(No) 12.1743 Tj -25 TJm -(w) 7.193 Tj -65 TJm -(,) 2.4907 Tj --324 TJm -(it') 8.8568 Tj -55 TJm -(s) 3.8755 Tj --310 TJm -(just) 14.396 Tj --309 TJm -(amazing) 33.7533 Tj --309 TJm -(ho) 9.9626 Tj -25 TJm -(w) 7.193 Tj --310 TJm -(man) 17.1556 Tj -15 TJm -(y) 4.9813 Tj -72 413.151 Td -(people) 26.5603 Tj --250 TJm -(will) 15.5018 Tj --250 TJm -(send) 18.2614 Tj --250 TJm -(me) 12.1743 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(b) 4.9813 Tj -20 TJm -(ug) 9.9626 Tj --250 TJm -(report) 23.7907 Tj --250 TJm -(saying) 26.0123 Tj --250 TJm -(something) 41.5142 Tj --250 TJm -(lik) 10.5205 Tj -10 TJm -(e:) 7.193 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 386.087] cm -0 0 468 23.91 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 401.629 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj --426 TJm -(crashed) 41.8429 Tj --426 TJm -(with) 23.9102 Tj --426 TJm -(segmentation) 71.7307 Tj --426 TJm -(fault) 29.8878 Tj --426 TJm -(on) 11.9551 Tj --426 TJm -(my) 11.9551 Tj --426 TJm -(machine) 41.8429 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 364.169 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj --241 TJm -(absolutely) 40.9562 Tj --241 TJm -(nothing) 30.4457 Tj --241 TJm -(el) 7.193 Tj -1 TJm -(se.) 10.7895 Tj --614 TJm -(Needless) 35.965 Tj --241 TJm -(to) 7.7509 Tj --241 TJm -(say) 13.2801 Tj -65 TJm -(,) 2.4907 Tj --243 TJm -(a) 4.4234 Tj --241 TJm -(such) 18.2614 Tj --240 TJm -(a) 4.4234 Tj --241 TJm -(report) 23.7907 Tj --241 TJm -(is) 6.6451 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -324.681 364.169 Td -/F621_0 9.9626 Tf -(totally) 25.4644 Tj -55 TJm -(,) 2.4907 Tj --243 TJm -(utterly) 26.0123 Tj -55 TJm -(,) 2.4907 Tj --242 TJm -(completely) 43.158 Tj --241 TJm -(and) 14.9439 Tj --241 TJm -(compr) 25.4544 Tj -37 TJm -(ehensively) 41.4942 Tj --241 TJm -(100%) 23.2427 Tj -72 352.214 Td -(useless;) 31.5416 Tj --257 TJm -(a) 4.9813 Tj --255 TJm -(waste) 22.6948 Tj --255 TJm -(of) 7.7509 Tj --255 TJm -(your) 18.2614 Tj --255 TJm -(time) 17.1556 Tj -10 TJm -(,) 2.4907 Tj --256 TJm -(my) 11.6164 Tj --255 TJm -(time) 17.1556 Tj -10 TJm -(,) 2.4907 Tj --256 TJm -(and) 14.9439 Tj --255 TJm -(net) 12.1743 Tj --255 TJm -(bandwidth) 42.0721 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -302.574 352.214 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj --650 TJm -(W) 9.4047 Tj -40 TJm -(ith) 10.5205 Tj --254 TJm -(no) 9.9626 Tj --255 TJm -(details) 26.0123 Tj --255 TJm -(at) 7.193 Tj --255 TJm -(all,) 12.4533 Tj --256 TJm -(there') 23.2328 Tj -55 TJm -(s) 3.8755 Tj --255 TJm -(no) 9.9626 Tj --255 TJm -(w) 7.193 Tj -10 TJm -(ay) 9.4047 Tj --255 TJm -(I) 3.3175 Tj --255 TJm -(can) 13.8281 Tj --255 TJm -(possibly) 33.2153 Tj --255 TJm -(be) 9.4047 Tj -15 TJm -(gin) 12.7322 Tj -72 340.259 Td -(to) 7.7509 Tj --250 TJm -(\002gure) 23.2427 Tj --250 TJm -(out) 12.7322 Tj --250 TJm -(what) 19.3673 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(problem) 33.2053 Tj --250 TJm -(is.) 9.1357 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 318.341 Td -(The) 15.4918 Tj --309 TJm -(rules) 19.3673 Tj --309 TJm -(of) 8.2988 Tj --309 TJm -(the) 12.1743 Tj --310 TJm -(g) 4.9813 Tj -5 TJm -(ame) 16.5977 Tj --309 TJm -(are:) 14.9339 Tj --428 TJm -(f) 3.3175 Tj -10 TJm -(acts,) 17.9825 Tj --324 TJm -(f) 3.3175 Tj -10 TJm -(acts,) 17.9825 Tj --324 TJm -(f) 3.3175 Tj -10 TJm -(acts.) 17.9825 Tj --975 TJm -(Don') 20.4731 Tj -18 TJm -(t) 2.7696 Tj --309 TJm -(omit) 18.2714 Tj --309 TJm -(them) 19.9252 Tj --309 TJm -(because) 31.5316 Tj --309 TJm -("oh,) 16.518 Tj --324 TJm -(the) 12.1743 Tj -15 TJm -(y) 4.9813 Tj --309 TJm -(w) 7.193 Tj -10 TJm -(on') 13.2801 Tj -18 TJm -(t) 2.7696 Tj --309 TJm -(be) 9.4047 Tj --310 TJm -(rele) 14.9339 Tj -25 TJm -(v) 4.9813 Tj -25 TJm -(ant".) 18.7297 Tj --974 TJm -(At) 9.9626 Tj --310 TJm -(the) 12.1743 Tj --309 TJm -(bare) 17.1456 Tj -72 306.386 Td -(minimum:) 41.5241 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.949 0.949 0.9765] sc -/DeviceRGB {} CS -[0.949 0.949 0.9765] SC -q -[1 0 0 1 72 245.514] cm -0 0 468 59.776 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 296.922 Td -/F124_0 9.9626 Tf -(Machine) 41.8429 Tj --426 TJm -(type.) 29.8878 Tj --852 TJm -(Operating) 53.798 Tj --426 TJm -(system) 35.8654 Tj --426 TJm -(version.) 47.8205 Tj -90 284.967 Td -(Exact) 29.8878 Tj --426 TJm -(version) 41.8429 Tj --426 TJm -(of) 11.9551 Tj --426 TJm -(bzip2) 29.8878 Tj --426 TJm -(\(do) 17.9327 Tj --426 TJm -(bzip2) 29.8878 Tj --426 TJm -(-V\).) 23.9102 Tj -90 273.011 Td -(Exact) 29.8878 Tj --426 TJm -(version) 41.8429 Tj --426 TJm -(of) 11.9551 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(compiler) 47.8205 Tj --426 TJm -(used.) 29.8878 Tj -90 261.056 Td -(Flags) 29.8878 Tj --426 TJm -(passed) 35.8654 Tj --426 TJm -(to) 11.9551 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(compiler.) 53.798 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 223.597 Td -/F122_0 9.9626 Tf -(Ho) 12.1743 Tj -25 TJm -(we) 11.6164 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(er) 7.7409 Tj -40 TJm -(,) 2.4907 Tj --254 TJm -(the) 12.1743 Tj --252 TJm -(most) 19.3773 Tj --253 TJm -(important) 38.7446 Tj --253 TJm -(single) 23.8007 Tj --253 TJm -(thing) 20.4831 Tj --253 TJm -(t) 2.7696 Tj -1 TJm -(hat) 12.1743 Tj --253 TJm -(will) 15.5018 Tj --253 TJm -(help) 17.1556 Tj --253 TJm -(me) 12.1743 Tj --253 TJm -(is) 6.6451 Tj --252 TJm -(the) 12.1743 Tj --253 TJm -(\002le) 12.7322 Tj --253 TJm -(that) 14.9439 Tj --253 TJm -(you) 14.9439 Tj --253 TJm -(were) 19.3573 Tj --253 TJm -(trying) 23.8007 Tj --252 TJm -(to) 7.7509 Tj --253 TJm -(compress) 37.6287 Tj --253 TJm -(or) 8.2988 Tj --253 TJm -(decompress) 47.0334 Tj -72 211.641 Td -(at) 7.193 Tj --304 TJm -(the) 12.1743 Tj --305 TJm -(time) 17.7135 Tj --304 TJm -(the) 12.1743 Tj --304 TJm -(problem) 33.2053 Tj --305 TJm -(happened.) 40.6673 Tj --946 TJm -(W) 9.4047 Tj -40 TJm -(ithout) 23.2527 Tj --304 TJm -(that,) 17.4346 Tj --318 TJm -(my) 12.7322 Tj --305 TJm -(ability) 25.4644 Tj --304 TJm -(to) 7.7509 Tj --304 TJm -(do) 9.9626 Tj --305 TJm -(an) 9.4047 Tj -15 TJm -(ything) 25.4644 Tj --304 TJm -(more) 20.4731 Tj --304 TJm -(than) 17.1556 Tj --305 TJm -(speculate) 37.0708 Tj --304 TJm -(about) 22.1369 Tj --304 TJm -(the) 12.1743 Tj --305 TJm -(cause,) 24.6176 Tj --318 TJm -(is) 6.6451 Tj -72 199.686 Td -(limited.) 30.7247 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 164.933 Td -/F116_0 20.6585 Tf -(4.4.) 34.4584 Tj --278 TJm -(Did) 33.2808 Tj --278 TJm -(y) 11.4861 Tj -25 TJm -(ou) 25.2447 Tj --278 TJm -(g) 12.6223 Tj --10 TJm -(et) 18.3654 Tj --278 TJm -(the) 30.9878 Tj --278 TJm -(right) 45.9032 Tj --278 TJm -(pac) 35.5946 Tj -20 TJm -(ka) 22.9723 Tj -10 TJm -(g) 12.6223 Tj --10 TJm -(e?) 24.1085 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 143.016 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -104.603 143.016 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --272 TJm -(a) 4.4234 Tj --273 TJm -(resource) 33.7433 Tj --272 TJm -(hog.) 17.4346 Tj --378 TJm -(It) 6.0871 Tj --272 TJm -(soaks) 22.1369 Tj --273 TJm -(up) 9.9626 Tj --272 TJm -(lar) 10.5105 Tj -18 TJm -(ge) 9.4047 Tj --273 TJm -(amounts) 33.7633 Tj --272 TJm -(of) 8.2988 Tj --273 TJm -(CPU) 19.3773 Tj --272 TJm -(c) 4.4234 Tj -15 TJm -(ycles) 20.4731 Tj --273 TJm -(and) 14.386 Tj --272 TJm -(memory) 33.2053 Tj -65 TJm -(.) 2.4907 Tj --755 TJm -(Also,) 21.31 Tj --278 TJm -(it) 5.5392 Tj --273 TJm -(gi) 7.7509 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(es) 8.2988 Tj --272 TJm -(v) 4.9813 Tj -15 TJm -(ery) 12.7222 Tj --273 TJm -(lar) 10.5105 Tj -18 TJm -(ge) 9.4047 Tj --272 TJm -(latencies.) 37.3498 Tj -72 131.06 Td -(In) 8.2988 Tj --251 TJm -(the) 12.1743 Tj --251 TJm -(w) 7.193 Tj -10 TJm -(orst) 14.9439 Tj --251 TJm -(case,) 19.6363 Tj --251 TJm -(you) 14.9439 Tj --251 TJm -(can) 13.8281 Tj --251 TJm -(feed) 17.1456 Tj --251 TJm -(man) 17.1556 Tj -15 TJm -(y) 4.9813 Tj --251 TJm -(me) 12.1743 Tj -15 TJm -(g) 4.9813 Tj -4 TJm -(abyt) 17.1556 Tj -1 TJm -(es) 8.2988 Tj --252 TJm -(of) 8.2988 Tj --251 TJm -(uncompressed) 56.996 Tj --251 TJm -(data) 16.5977 Tj --251 TJm -(into) 15.5018 Tj --251 TJm -(the) 12.1743 Tj --251 TJm -(library) 26.5603 Tj --251 TJm -(before) 25.4445 Tj --251 TJm -(getting) 27.6761 Tj --251 TJm -(an) 9.4047 Tj -15 TJm -(y) 4.9813 Tj --251 TJm -(compressed) 47.0334 Tj -72 119.105 Td -(output,) 27.9551 Tj --250 TJm -(so) 8.8568 Tj --250 TJm -(this) 14.396 Tj --250 TJm -(probably) 35.417 Tj --250 TJm -(rules) 19.3673 Tj --250 TJm -(out) 12.7322 Tj --250 TJm -(applications) 48.1492 Tj --250 TJm -(requiring) 36.5229 Tj --250 TJm -(interacti) 32.6474 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(e) 4.4234 Tj --250 TJm -(beha) 18.8094 Tj -20 TJm -(viour) 21.031 Tj -55 TJm -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 97.187 Td -(These) 23.7907 Tj --304 TJm -(aren') 20.4632 Tj -18 TJm -(t) 2.7696 Tj --304 TJm -(f) 3.3175 Tj -10 TJm -(aults) 18.8194 Tj --304 TJm -(of) 8.2988 Tj --304 TJm -(my) 12.7322 Tj --304 TJm -(implementation,) 65.0359 Tj --317 TJm -(I) 3.3175 Tj --304 TJm -(hope,) 21.8579 Tj --318 TJm -(b) 4.9813 Tj -20 TJm -(ut) 7.7509 Tj --304 TJm -(more) 20.4731 Tj --304 TJm -(an) 9.4047 Tj --304 TJm -(intrinsic) 32.6574 Tj --304 TJm -(property) 33.7533 Tj --304 TJm -(of) 8.2988 Tj --304 TJm -(the) 12.1743 Tj --304 TJm -(Burro) 23.2427 Tj -25 TJm -(ws-Wheeler) 48.1293 Tj --304 TJm -(transform) 38.7346 Tj -72 85.232 Td -(\(unfortunately\).) 62.8042 Tj --620 TJm -(Maybe) 27.6661 Tj --250 TJm -(this) 14.396 Tj --250 TJm -(isn') 14.9439 Tj -18 TJm -(t) 2.7696 Tj --250 TJm -(what) 19.3673 Tj --250 TJm -(you) 14.9439 Tj --250 TJm -(w) 7.193 Tj -10 TJm -(ant.) 14.6649 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -534.414 50.951 Td -(33) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 34 37 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -498.728 749.245 Td -/F122_0 9.9626 Tf -(Miscellanea) 48.1393 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -72 710.037 Td -/F122_0 9.9626 Tf -(If) 6.6351 Tj --275 TJm -(you) 14.9439 Tj --274 TJm -(w) 7.193 Tj -10 TJm -(ant) 12.1743 Tj --275 TJm -(a) 4.4234 Tj --274 TJm -(compressor) 45.9276 Tj --275 TJm -(and/or) 25.4544 Tj --275 TJm -(library) 26.5603 Tj --274 TJm -(which) 24.3486 Tj --275 TJm -(is) 6.6451 Tj --274 TJm -(f) 3.3175 Tj -10 TJm -(aster) 18.8094 Tj -40 TJm -(,) 2.4907 Tj --281 TJm -(uses) 17.1556 Tj --275 TJm -(less) 14.9439 Tj --274 TJm -(memory) 33.2053 Tj --275 TJm -(b) 4.9813 Tj -20 TJm -(ut) 7.7509 Tj --275 TJm -(gets) 16.0497 Tj --274 TJm -(pretty) 23.2427 Tj --275 TJm -(good) 19.9252 Tj --274 TJm -(compression,) 52.8516 Tj --281 TJm -(and) 14.386 Tj --275 TJm -(has) 13.2801 Tj -72 698.082 Td -(minimal) 33.2153 Tj --288 TJm -(latenc) 23.7907 Tj -15 TJm -(y) 4.9813 Tj -65 TJm -(,) 2.4907 Tj --297 TJm -(consider) 33.7533 Tj --288 TJm -(Jean-loup) 38.7346 Tj --288 TJm -(Gailly') 28.224 Tj -55 TJm -(s) 3.8755 Tj --288 TJm -(and) 14.386 Tj --288 TJm -(Mark) 21.579 Tj --288 TJm -(Adl) 14.9439 Tj -1 TJm -(er') 11.0585 Tj -55 TJm -(s) 3.8755 Tj --288 TJm -(w) 7.193 Tj -10 TJm -(ork,) 15.7708 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -353.879 698.082 Td -/F124_0 9.9626 Tf -(zlib-1.2.1) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -416.523 698.082 Td -/F122_0 9.9626 Tf -(and) 14.386 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -433.777 698.082 Td -/F124_0 9.9626 Tf -(gzip-1.2.4) 59.7756 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -493.553 698.082 Td -/F122_0 9.9626 Tf -(.) 2.4907 Tj --847 TJm -(Look) 21.031 Tj --288 TJm -(for) 11.6164 Tj -72 686.127 Td -(them) 19.9252 Tj --250 TJm -(at) 7.193 Tj --250 TJm -(http://www) 45.3896 Tj -65 TJm -(.zlib) 17.4346 Tj -40 TJm -(.or) 10.7895 Tj -18 TJm -(g) 4.9813 Tj --250 TJm -(and) 14.386 Tj --250 TJm -(http://www) 45.3896 Tj -65 TJm -(.gzip.or) 30.4357 Tj -18 TJm -(g) 4.9813 Tj --250 TJm -(respecti) 30.9837 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(ely) 12.1743 Tj -65 TJm -(.) 2.4907 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 664.209 Td -(F) 5.5392 Tj -15 TJm -(or) 8.2988 Tj --582 TJm -(something) 41.5142 Tj --583 TJm -(f) 3.3175 Tj -10 TJm -(aster) 18.8094 Tj --582 TJm -(and) 14.386 Tj --582 TJm -(lighter) 26.0123 Tj --583 TJm -(still,) 17.4445 Tj --665 TJm -(you) 14.9439 Tj --582 TJm -(might) 23.2527 Tj --583 TJm -(try) 11.0684 Tj --582 TJm -(Markus) 30.4357 Tj --582 TJm -(F) 5.5392 Tj --582 TJm -(X) 7.193 Tj --582 TJm -(J) 3.8755 Tj --582 TJm -(Oberhumer') 48.6872 Tj -55 TJm -(s) 3.8755 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -437.433 664.209 Td -/F124_0 9.9626 Tf -(LZO) 17.9327 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -461.164 664.209 Td -/F122_0 9.9626 Tf -(real-time) 35.965 Tj --582 TJm -(compres-) 37.0708 Tj -72 652.254 Td -(sion/decompression) 79.1429 Tj --250 TJm -(library) 26.5603 Tj -65 TJm -(,) 2.4907 Tj --250 TJm -(at) 7.193 Tj --250 TJm -(http://www) 45.3896 Tj -65 TJm -(.oberhumer) 45.6486 Tj -55 TJm -(.com/opensource.) 70.2762 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 617.501 Td -/F116_0 20.6585 Tf -(4.5.) 34.4584 Tj --278 TJm -(Fur) 33.2808 Tj --20 TJm -(ther) 39.0239 Tj --278 TJm -(Reading) 81.4978 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 595.583 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -104.923 595.583 Td -/F122_0 9.9626 Tf -(is) 6.6451 Tj --305 TJm -(not) 12.7322 Tj --304 TJm -(research) 33.1854 Tj --305 TJm -(w) 7.193 Tj -10 TJm -(ork,) 15.7708 Tj --318 TJm -(in) 7.7509 Tj --305 TJm -(the) 12.1743 Tj --304 TJm -(sense) 21.579 Tj --305 TJm -(that) 14.9439 Tj --304 TJm -(it) 5.5392 Tj --305 TJm -(doesn') 26.5603 Tj -18 TJm -(t) 2.7696 Tj --304 TJm -(present) 28.772 Tj --305 TJm -(an) 9.4047 Tj -15 TJm -(y) 4.9813 Tj --305 TJm -(ne) 9.4047 Tj -25 TJm -(w) 7.193 Tj --304 TJm -(ideas.) 22.9638 Tj --474 TJm -(Rather) 26.5603 Tj -40 TJm -(,) 2.4907 Tj --318 TJm -(it') 8.8568 Tj -55 TJm -(s) 3.8755 Tj --305 TJm -(an) 9.4047 Tj --304 TJm -(engineering) 47.0334 Tj --305 TJm -(e) 4.4234 Tj -15 TJm -(x) 4.9813 Tj -15 TJm -(ercise) 23.2328 Tj -72 583.628 Td -(based) 22.6848 Tj --250 TJm -(on) 9.9626 Tj --250 TJm -(e) 4.4234 Tj -15 TJm -(xisting) 27.1282 Tj --250 TJm -(ideas.) 22.9638 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 561.71 Td -(F) 5.5392 Tj -15 TJm -(our) 13.2801 Tj --250 TJm -(documents) 43.1679 Tj --250 TJm -(describe) 33.1954 Tj --250 TJm -(essentially) 42.0621 Tj --250 TJm -(all) 9.9626 Tj --250 TJm -(the) 12.1743 Tj --250 TJm -(ideas) 20.4731 Tj --250 TJm -(behind) 27.1182 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -298.747 561.71 Td -/F124_0 9.9626 Tf -(bzip2) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -328.635 561.71 Td -/F122_0 9.9626 Tf -(:) 2.7696 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.9294 0.9686 0.9568] sc -/DeviceRGB {} CS -[0.9294 0.9686 0.9568] SC -q -[1 0 0 1 72 259.678] cm -0 0 468 298.879 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 550.189 Td -/F124_0 9.9626 Tf -(Michael) 41.8429 Tj --426 TJm -(Burrows) 41.8429 Tj --426 TJm -(and) 17.9327 Tj --426 TJm -(D.) 11.9551 Tj --426 TJm -(J.) 11.9551 Tj --426 TJm -(Wheeler:) 47.8205 Tj -98.488 538.234 Td -("A) 11.9551 Tj --426 TJm -(block-sorting) 77.7083 Tj --426 TJm -(lossless) 47.8205 Tj --426 TJm -(data) 23.9102 Tj --426 TJm -(compression) 65.7532 Tj --426 TJm -(algorithm") 59.7756 Tj -102.732 526.278 Td -(10th) 23.9102 Tj --426 TJm -(May) 17.9327 Tj --426 TJm -(1994.) 29.8878 Tj -102.732 514.323 Td -(Digital) 41.8429 Tj --426 TJm -(SRC) 17.9327 Tj --426 TJm -(Research) 47.8205 Tj --426 TJm -(Report) 35.8654 Tj --426 TJm -(124.) 23.9102 Tj -102.732 502.368 Td -(ftp://ftp.digital.com/pub/DEC/SRC/research-reports/SRC-124.ps.g\ -z) 382.5638 Tj -102.732 490.413 Td -(If) 11.9551 Tj --426 TJm -(you) 17.9327 Tj --426 TJm -(have) 23.9102 Tj --426 TJm -(trouble) 41.8429 Tj --426 TJm -(finding) 41.8429 Tj --426 TJm -(it,) 17.9327 Tj --426 TJm -(try) 17.9327 Tj --426 TJm -(searching) 53.798 Tj --426 TJm -(at) 11.9551 Tj --426 TJm -(the) 17.9327 Tj -102.732 478.458 Td -(New) 17.9327 Tj --426 TJm -(Zealand) 41.8429 Tj --426 TJm -(Digital) 41.8429 Tj --426 TJm -(Library,) 47.8205 Tj --426 TJm -(http://www.nzdl.org.) 119.5512 Tj -90 454.547 Td -(Daniel) 35.8654 Tj --426 TJm -(S.) 11.9551 Tj --426 TJm -(Hirschberg) 59.7756 Tj --426 TJm -(and) 17.9327 Tj --426 TJm -(Debra) 29.8878 Tj --426 TJm -(A.) 11.9551 Tj --426 TJm -(LeLewer) 41.8429 Tj -98.488 442.592 Td -("Efficient) 59.7756 Tj --426 TJm -(Decoding) 47.8205 Tj --426 TJm -(of) 11.9551 Tj --426 TJm -(Prefix) 35.8654 Tj --426 TJm -(Codes") 35.8654 Tj -102.732 430.637 Td -(Communications) 83.6858 Tj --426 TJm -(of) 11.9551 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(ACM,) 23.9102 Tj --426 TJm -(April) 29.8878 Tj --426 TJm -(1990,) 29.8878 Tj --426 TJm -(Vol) 17.9327 Tj --426 TJm -(33,) 17.9327 Tj --426 TJm -(Number) 35.8654 Tj --426 TJm -(4.) 11.9551 Tj -102.732 418.682 Td -(You) 17.9327 Tj --426 TJm -(might) 29.8878 Tj --426 TJm -(be) 11.9551 Tj --426 TJm -(able) 23.9102 Tj --426 TJm -(to) 11.9551 Tj --426 TJm -(get) 17.9327 Tj --426 TJm -(an) 11.9551 Tj --426 TJm -(electronic) 59.7756 Tj --426 TJm -(copy) 23.9102 Tj --426 TJm -(of) 11.9551 Tj --426 TJm -(this) 23.9102 Tj -102.732 406.727 Td -(from) 23.9102 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(ACM) 17.9327 Tj --426 TJm -(Digital) 41.8429 Tj --426 TJm -(Library.) 47.8205 Tj -90 382.816 Td -(David) 29.8878 Tj --426 TJm -(J.) 11.9551 Tj --426 TJm -(Wheeler) 41.8429 Tj -102.732 370.861 Td -(Program) 41.8429 Tj --426 TJm -(bred3.c) 41.8429 Tj --426 TJm -(and) 17.9327 Tj --426 TJm -(accompanying) 71.7307 Tj --426 TJm -(document) 47.8205 Tj --426 TJm -(bred3.ps.) 53.798 Tj -102.732 358.906 Td -(This) 23.9102 Tj --426 TJm -(contains) 47.8205 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(idea) 23.9102 Tj --426 TJm -(behind) 35.8654 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(multi-table) 65.7532 Tj --426 TJm -(Huffman) 41.8429 Tj --426 TJm -(coding) 35.8654 Tj --426 TJm -(scheme.) 41.8429 Tj -102.732 346.951 Td -(ftp://ftp.cl.cam.ac.uk/users/djw3/) 203.237 Tj -90 323.04 Td -(Jon) 17.9327 Tj --426 TJm -(L.) 11.9551 Tj --426 TJm -(Bentley) 41.8429 Tj --426 TJm -(and) 17.9327 Tj --426 TJm -(Robert) 35.8654 Tj --426 TJm -(Sedgewick) 53.798 Tj -98.488 311.085 Td -("Fast) 29.8878 Tj --426 TJm -(Algorithms) 59.7756 Tj --426 TJm -(for) 17.9327 Tj --426 TJm -(Sorting) 41.8429 Tj --426 TJm -(and) 17.9327 Tj --426 TJm -(Searching) 53.798 Tj --426 TJm -(Strings") 47.8205 Tj -102.732 299.13 Td -(Available) 53.798 Tj --426 TJm -(from) 23.9102 Tj --426 TJm -(Sedgewick's) 65.7532 Tj --426 TJm -(web) 17.9327 Tj --426 TJm -(page,) 29.8878 Tj -102.732 287.175 Td -(www.cs.princeton.edu/~rs) 143.4614 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 237.76 Td -/F122_0 9.9626 Tf -(The) 15.4918 Tj --239 TJm -(follo) 18.8194 Tj -25 TJm -(wing) 19.9252 Tj --238 TJm -(paper) 22.1269 Tj --239 TJm -(gi) 7.7509 Tj -25 TJm -(v) 4.9813 Tj -15 TJm -(es) 8.2988 Tj --239 TJm -(v) 4.9813 Tj -25 TJm -(aluable) 28.772 Tj --238 TJm -(additional) 39.8504 Tj --239 TJm -(insights) 31.0036 Tj --238 TJm -(into) 15.5018 Tj --239 TJm -(the) 12.1743 Tj --239 TJm -(algorithm,) 41.2352 Tj --241 TJm -(b) 4.9813 Tj -20 TJm -(ut) 7.7509 Tj --238 TJm -(is) 6.6451 Tj --239 TJm -(not) 12.7322 Tj --239 TJm -(immedia) 34.8691 Tj -1 TJm -(tely) 14.9439 Tj --239 TJm -(the) 12.1743 Tj --239 TJm -(basis) 19.9252 Tj --238 TJm -(of) 8.2988 Tj --239 TJm -(an) 9.4047 Tj -15 TJm -(y) 4.9813 Tj --239 TJm -(code) 18.8094 Tj -72 225.805 Td -(used) 18.2614 Tj --250 TJm -(in) 7.7509 Tj --250 TJm -(bzip2.) 24.6275 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.9294 0.9686 0.9568] sc -/DeviceRGB {} CS -[0.9294 0.9686 0.9568] SC -q -[1 0 0 1 72 150.921] cm -0 0 468 71.731 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 214.283 Td -/F124_0 9.9626 Tf -(Peter) 29.8878 Tj --426 TJm -(Fenwick:) 47.8205 Tj -102.732 202.328 Td -(Block) 29.8878 Tj --426 TJm -(Sorting) 41.8429 Tj --426 TJm -(Text) 23.9102 Tj --426 TJm -(Compression) 65.7532 Tj -102.732 190.373 Td -(Proceedings) 65.7532 Tj --426 TJm -(of) 11.9551 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(19th) 23.9102 Tj --426 TJm -(Australasian) 71.7307 Tj --426 TJm -(Computer) 47.8205 Tj --426 TJm -(Science) 41.8429 Tj --426 TJm -(Conference,) 65.7532 Tj -111.22 178.418 Td -(Melbourne,) 59.7756 Tj --426 TJm -(Australia.) 59.7756 Tj --852 TJm -(Jan) 17.9327 Tj --426 TJm -(31) 11.9551 Tj --426 TJm -(-) 5.9776 Tj --426 TJm -(Feb) 17.9327 Tj --426 TJm -(2,) 11.9551 Tj --426 TJm -(1996.) 29.8878 Tj -102.732 166.463 Td -(ftp://ftp.cs.auckland.ac.nz/pub/peter-f/ACSC96paper.ps) 322.7882 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 129.003 Td -/F122_0 9.9626 Tf -(K) 7.193 Tj -15 TJm -(unihik) 25.4644 Tj -10 TJm -(o) 4.9813 Tj --250 TJm -(Sadakane') 41.4942 Tj -55 TJm -(s) 3.8755 Tj --250 TJm -(sorting) 27.6761 Tj --250 TJm -(algorithm,) 41.2352 Tj --250 TJm -(mentioned) 42.0621 Tj --250 TJm -(abo) 14.386 Tj -15 TJm -(v) 4.9813 Tj -15 TJm -(e,) 6.914 Tj --250 TJm -(is) 6.6451 Tj --250 TJm -(a) 4.4234 Tj -20 TJm -(v) 4.9813 Tj -25 TJm -(ailable) 26.5603 Tj --250 TJm -(from:) 22.1369 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.9294 0.9686 0.9568] sc -/DeviceRGB {} CS -[0.9294 0.9686 0.9568] SC -q -[1 0 0 1 72 89.985] cm -0 0 468 35.866 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 117.482 Td -/F124_0 9.9626 Tf -(http://naomi.is.s.u-tokyo.ac.jp/~sada/papers/Sada98b.ps.gz) 346.6985 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -534.414 50.951 Td -/F122_0 9.9626 Tf -(34) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Page: 35 38 -%%BeginPageSetup -%%PageOrientation: Portrait -pdfStartPage -0 0 612 792 re W -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -498.728 749.245 Td -/F122_0 9.9626 Tf -(Miscellanea) 48.1393 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -q -[1 0 0 1 73.893 741.803] cm -[] 0 d -0 J -0.498 w -0 0 m -475.465 0 l -S -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -72 710.037 Td -/F122_0 9.9626 Tf -(The) 15.4918 Tj --250 TJm -(Manber) 30.9837 Tj -20 TJm -(-Myers) 28.772 Tj --250 TJm -(suf) 12.1743 Tj -25 TJm -(\002x) 10.5205 Tj --250 TJm -(array) 20.4632 Tj --250 TJm -(construction) 49.2551 Tj --250 TJm -(algorithm) 38.7446 Tj --250 TJm -(is) 6.6451 Tj --250 TJm -(described) 38.1767 Tj --250 TJm -(in) 7.7509 Tj --250 TJm -(a) 4.4234 Tj --250 TJm -(paper) 22.1269 Tj --250 TJm -(a) 4.4234 Tj -20 TJm -(v) 4.9813 Tj -25 TJm -(ailable) 26.5603 Tj --250 TJm -(from:) 22.1369 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.9294 0.9686 0.9568] sc -/DeviceRGB {} CS -[0.9294 0.9686 0.9568] SC -q -[1 0 0 1 72 671.019] cm -0 0 468 35.866 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 698.516 Td -/F124_0 9.9626 Tf -(http://www.cs.arizona.edu/people/gene/PAPERS/suffix.ps) 322.7882 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -72 649.101 Td -/F122_0 9.9626 Tf -(Finally) 28.234 Tj -65 TJm -(,) 2.4907 Tj --227 TJm -(the) 12.1743 Tj --221 TJm -(follo) 18.8194 Tj -25 TJm -(wing) 19.9252 Tj --222 TJm -(papers) 26.0024 Tj --221 TJm -(document) 39.2925 Tj --221 TJm -(some) 21.031 Tj --222 TJm -(in) 7.7509 Tj -40 TJm -(v) 4.9813 Tj -15 TJm -(estig) 18.8194 Tj -5 TJm -(ations) 23.8007 Tj --221 TJm -(I) 3.3175 Tj --221 TJm -(made) 21.579 Tj --222 TJm -(into) 15.5018 Tj --221 TJm -(the) 12.1743 Tj --221 TJm -(performance) 50.341 Tj --222 TJm -(of) 8.2988 Tj --221 TJm -(sorting) 27.6761 Tj --221 TJm -(and) 14.386 Tj --222 TJm -(decompression) 59.7656 Tj -72 637.146 Td -(algorithms:) 45.3896 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0.9294 0.9686 0.9568] sc -/DeviceRGB {} CS -[0.9294 0.9686 0.9568] SC -q -[1 0 0 1 72 502.486] cm -0 0 468 131.507 re -f -Q -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -[1 0 0 1 0 0] Tm -0 0 Td -90 625.624 Td -/F124_0 9.9626 Tf -(Julian) 35.8654 Tj --426 TJm -(Seward) 35.8654 Tj -102.732 613.669 Td -(On) 11.9551 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(Performance) 65.7532 Tj --426 TJm -(of) 11.9551 Tj --426 TJm -(BWT) 17.9327 Tj --426 TJm -(Sorting) 41.8429 Tj --426 TJm -(Algorithms) 59.7756 Tj -102.732 601.714 Td -(Proceedings) 65.7532 Tj --426 TJm -(of) 11.9551 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(IEEE) 23.9102 Tj --426 TJm -(Data) 23.9102 Tj --426 TJm -(Compression) 65.7532 Tj --426 TJm -(Conference) 59.7756 Tj --426 TJm -(2000) 23.9102 Tj -111.22 589.759 Td -(Snowbird,) 53.798 Tj --426 TJm -(Utah.) 29.8878 Tj --852 TJm -(28-30) 29.8878 Tj --426 TJm -(March) 29.8878 Tj --426 TJm -(2000.) 29.8878 Tj -90 565.848 Td -(Julian) 35.8654 Tj --426 TJm -(Seward) 35.8654 Tj -102.732 553.893 Td -(Space-time) 59.7756 Tj --426 TJm -(Tradeoffs) 53.798 Tj --426 TJm -(in) 11.9551 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(Inverse) 41.8429 Tj --426 TJm -(B-W) 17.9327 Tj --426 TJm -(Transform) 53.798 Tj -102.732 541.938 Td -(Proceedings) 65.7532 Tj --426 TJm -(of) 11.9551 Tj --426 TJm -(the) 17.9327 Tj --426 TJm -(IEEE) 23.9102 Tj --426 TJm -(Data) 23.9102 Tj --426 TJm -(Compression) 65.7532 Tj --426 TJm -(Conference) 59.7756 Tj --426 TJm -(2001) 23.9102 Tj -111.22 529.983 Td -(Snowbird,) 53.798 Tj --426 TJm -(Utah.) 29.8878 Tj --852 TJm -(27-29) 29.8878 Tj --426 TJm -(March) 29.8878 Tj --426 TJm -(2001.) 29.8878 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -534.414 50.951 Td -/F122_0 9.9626 Tf -(35) 9.9626 Tj -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceRGB {} cs -[0 0 0] sc -/DeviceRGB {} CS -[0 0 0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -Q -showpage -%%PageTrailer -pdfEndPage -%%Trailer -end -%%DocumentSuppliedResources: -%%+ font PYRIYB+NimbusSanL-Bold -%%+ font XDVKOU+NimbusRomNo9L-Regu -%%+ font QYKIKI+NimbusMonL-Regu -%%+ font BITXNG+CMMI10 -%%+ font ZWXELK+NimbusMonL-Bold -%%+ font FRBTTO+CMSY10 -%%+ font AMYDOG+NimbusRomNo9L-ReguItal -%%EOF diff --git a/plugins/updater/bzip2-1.0.3/manual.xml b/plugins/updater/bzip2-1.0.3/manual.xml deleted file mode 100644 index a7fbcb3375..0000000000 --- a/plugins/updater/bzip2-1.0.3/manual.xml +++ /dev/null @@ -1,2964 +0,0 @@ - - - %common-ents; -]> - - - - - bzip2 and libbzip2, version 1.0.6 - A program and library for data compression - - &bz-lifespan; - Julian Seward - - Version &bz-version; of &bz-date; - - - - Julian - Seward - - &bz-url; - - - - - - - This program, bzip2, the - associated library libbzip2, and - all documentation, are copyright © &bz-lifespan; Julian Seward. - All rights reserved. - - Redistribution and use in source and binary forms, with - or without modification, are permitted provided that the - following conditions are met: - - - - Redistributions of source code must retain the - above copyright notice, this list of conditions and the - following disclaimer. - - The origin of this software must not be - misrepresented; you must not claim that you wrote the original - software. If you use this software in a product, an - acknowledgment in the product documentation would be - appreciated but is not required. - - Altered source versions must be plainly marked - as such, and must not be misrepresented as being the original - software. - - The name of the author may not be used to - endorse or promote products derived from this software without - specific prior written permission. - - - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, - THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - THE POSSIBILITY OF SUCH DAMAGE. - - PATENTS: To the best of my knowledge, - bzip2 and - libbzip2 do not use any patented - algorithms. However, I do not have the resources to carry - out a patent search. Therefore I cannot give any guarantee of - the above statement. - - - - - - - - - -Introduction - -bzip2 compresses files -using the Burrows-Wheeler block-sorting text compression -algorithm, and Huffman coding. Compression is generally -considerably better than that achieved by more conventional -LZ77/LZ78-based compressors, and approaches the performance of -the PPM family of statistical compressors. - -bzip2 is built on top of -libbzip2, a flexible library for -handling compressed data in the -bzip2 format. This manual -describes both how to use the program and how to work with the -library interface. Most of the manual is devoted to this -library, not the program, which is good news if your interest is -only in the program. - - - - describes how to use - bzip2; this is the only part - you need to read if you just want to know how to operate the - program. - - describes the - programming interfaces in detail, and - - records some - miscellaneous notes which I thought ought to be recorded - somewhere. - - - - - - - -How to use bzip2 - -This chapter contains a copy of the -bzip2 man page, and nothing -else. - - -NAME - - - - bzip2, - bunzip2 - a block-sorting file - compressor, v1.0.6 - - bzcat - - decompresses files to stdout - - bzip2recover - - recovers data from damaged bzip2 files - - - - - - - -SYNOPSIS - - - - bzip2 [ - -cdfkqstvzVL123456789 ] [ filenames ... ] - - bunzip2 [ - -fkvsVL ] [ filenames ... ] - - bzcat [ -s ] [ - filenames ... ] - - bzip2recover - filename - - - - - - - -DESCRIPTION - -bzip2 compresses files -using the Burrows-Wheeler block sorting text compression -algorithm, and Huffman coding. Compression is generally -considerably better than that achieved by more conventional -LZ77/LZ78-based compressors, and approaches the performance of -the PPM family of statistical compressors. - -The command-line options are deliberately very similar to -those of GNU gzip, but they are -not identical. - -bzip2 expects a list of -file names to accompany the command-line flags. Each file is -replaced by a compressed version of itself, with the name -original_name.bz2. Each -compressed file has the same modification date, permissions, and, -when possible, ownership as the corresponding original, so that -these properties can be correctly restored at decompression time. -File name handling is naive in the sense that there is no -mechanism for preserving original file names, permissions, -ownerships or dates in filesystems which lack these concepts, or -have serious file name length restrictions, such as -MS-DOS. - -bzip2 and -bunzip2 will by default not -overwrite existing files. If you want this to happen, specify -the -f flag. - -If no file names are specified, -bzip2 compresses from standard -input to standard output. In this case, -bzip2 will decline to write -compressed output to a terminal, as this would be entirely -incomprehensible and therefore pointless. - -bunzip2 (or -bzip2 -d) decompresses all -specified files. Files which were not created by -bzip2 will be detected and -ignored, and a warning issued. -bzip2 attempts to guess the -filename for the decompressed file from that of the compressed -file as follows: - - - - filename.bz2 - becomes - filename - - filename.bz - becomes - filename - - filename.tbz2 - becomes - filename.tar - - filename.tbz - becomes - filename.tar - - anyothername - becomes - anyothername.out - - - -If the file does not end in one of the recognised endings, -.bz2, -.bz, -.tbz2 or -.tbz, -bzip2 complains that it cannot -guess the name of the original file, and uses the original name -with .out appended. - -As with compression, supplying no filenames causes -decompression from standard input to standard output. - -bunzip2 will correctly -decompress a file which is the concatenation of two or more -compressed files. The result is the concatenation of the -corresponding uncompressed files. Integrity testing -(-t) of concatenated compressed -files is also supported. - -You can also compress or decompress files to the standard -output by giving the -c flag. -Multiple files may be compressed and decompressed like this. The -resulting outputs are fed sequentially to stdout. Compression of -multiple files in this manner generates a stream containing -multiple compressed file representations. Such a stream can be -decompressed correctly only by -bzip2 version 0.9.0 or later. -Earlier versions of bzip2 will -stop after decompressing the first file in the stream. - -bzcat (or -bzip2 -dc) decompresses all -specified files to the standard output. - -bzip2 will read arguments -from the environment variables -BZIP2 and -BZIP, in that order, and will -process them before any arguments read from the command line. -This gives a convenient way to supply default arguments. - -Compression is always performed, even if the compressed -file is slightly larger than the original. Files of less than -about one hundred bytes tend to get larger, since the compression -mechanism has a constant overhead in the region of 50 bytes. -Random data (including the output of most file compressors) is -coded at about 8.05 bits per byte, giving an expansion of around -0.5%. - -As a self-check for your protection, -bzip2 uses 32-bit CRCs to make -sure that the decompressed version of a file is identical to the -original. This guards against corruption of the compressed data, -and against undetected bugs in -bzip2 (hopefully very unlikely). -The chances of data corruption going undetected is microscopic, -about one chance in four billion for each file processed. Be -aware, though, that the check occurs upon decompression, so it -can only tell you that something is wrong. It can't help you -recover the original uncompressed data. You can use -bzip2recover to try to recover -data from damaged files. - -Return values: 0 for a normal exit, 1 for environmental -problems (file not found, invalid flags, I/O errors, etc.), 2 -to indicate a corrupt compressed file, 3 for an internal -consistency error (eg, bug) which caused -bzip2 to panic. - - - - - -OPTIONS - - - - - -c --stdout - Compress or decompress to standard - output. - - - - -d --decompress - Force decompression. - bzip2, - bunzip2 and - bzcat are really the same - program, and the decision about what actions to take is done on - the basis of which name is used. This flag overrides that - mechanism, and forces bzip2 to decompress. - - - - -z --compress - The complement to - -d: forces compression, - regardless of the invokation name. - - - - -t --test - Check integrity of the specified file(s), but - don't decompress them. This really performs a trial - decompression and throws away the result. - - - - -f --force - Force overwrite of output files. Normally, - bzip2 will not overwrite - existing output files. Also forces - bzip2 to break hard links to - files, which it otherwise wouldn't do. - bzip2 normally declines - to decompress files which don't have the correct magic header - bytes. If forced (-f), - however, it will pass such files through unmodified. This is - how GNU gzip behaves. - - - - - -k --keep - Keep (don't delete) input files during - compression or decompression. - - - - -s --small - Reduce memory usage, for compression, - decompression and testing. Files are decompressed and tested - using a modified algorithm which only requires 2.5 bytes per - block byte. This means any file can be decompressed in 2300k - of memory, albeit at about half the normal speed. - During compression, -s - selects a block size of 200k, which limits memory use to around - the same figure, at the expense of your compression ratio. In - short, if your machine is low on memory (8 megabytes or less), - use -s for everything. See - below. - - - - -q --quiet - Suppress non-essential warning messages. - Messages pertaining to I/O errors and other critical events - will not be suppressed. - - - - -v --verbose - Verbose mode -- show the compression ratio for - each file processed. Further - -v's increase the verbosity - level, spewing out lots of information which is primarily of - interest for diagnostic purposes. - - - - -L --license -V --version - Display the software version, license terms and - conditions. - - - - -1 (or - --fast) to - -9 (or - -best) - Set the block size to 100 k, 200 k ... 900 k - when compressing. Has no effect when decompressing. See below. The - --fast and - --best aliases are primarily - for GNU gzip compatibility. - In particular, --fast doesn't - make things significantly faster. And - --best merely selects the - default behaviour. - - - - -- - Treats all subsequent arguments as file names, - even if they start with a dash. This is so you can handle - files with names beginning with a dash, for example: - bzip2 -- - -myfilename. - - - - --repetitive-fast - --repetitive-best - These flags are redundant in versions 0.9.5 and - above. They provided some coarse control over the behaviour of - the sorting algorithm in earlier versions, which was sometimes - useful. 0.9.5 and above have an improved algorithm which - renders these flags irrelevant. - - - - - - - - -MEMORY MANAGEMENT - -bzip2 compresses large -files in blocks. The block size affects both the compression -ratio achieved, and the amount of memory needed for compression -and decompression. The flags -1 -through -9 specify the block -size to be 100,000 bytes through 900,000 bytes (the default) -respectively. At decompression time, the block size used for -compression is read from the header of the compressed file, and -bunzip2 then allocates itself -just enough memory to decompress the file. Since block sizes are -stored in compressed files, it follows that the flags --1 to --9 are irrelevant to and so -ignored during decompression. - -Compression and decompression requirements, in bytes, can be -estimated as: - -Compression: 400k + ( 8 x block size ) - -Decompression: 100k + ( 4 x block size ), or - 100k + ( 2.5 x block size ) - - -Larger block sizes give rapidly diminishing marginal -returns. Most of the compression comes from the first two or -three hundred k of block size, a fact worth bearing in mind when -using bzip2 on small machines. -It is also important to appreciate that the decompression memory -requirement is set at compression time by the choice of block -size. - -For files compressed with the default 900k block size, -bunzip2 will require about 3700 -kbytes to decompress. To support decompression of any file on a -4 megabyte machine, bunzip2 has -an option to decompress using approximately half this amount of -memory, about 2300 kbytes. Decompression speed is also halved, -so you should use this option only where necessary. The relevant -flag is -s. - -In general, try and use the largest block size memory -constraints allow, since that maximises the compression achieved. -Compression and decompression speed are virtually unaffected by -block size. - -Another significant point applies to files which fit in a -single block -- that means most files you'd encounter using a -large block size. The amount of real memory touched is -proportional to the size of the file, since the file is smaller -than a block. For example, compressing a file 20,000 bytes long -with the flag -9 will cause the -compressor to allocate around 7600k of memory, but only touch -400k + 20000 * 8 = 560 kbytes of it. Similarly, the decompressor -will allocate 3700k but only touch 100k + 20000 * 4 = 180 -kbytes. - -Here is a table which summarises the maximum memory usage -for different block sizes. Also recorded is the total compressed -size for 14 files of the Calgary Text Compression Corpus -totalling 3,141,622 bytes. This column gives some feel for how -compression varies with block size. These figures tend to -understate the advantage of larger block sizes for larger files, -since the Corpus is dominated by smaller files. - - - Compress Decompress Decompress Corpus -Flag usage usage -s usage Size - - -1 1200k 500k 350k 914704 - -2 2000k 900k 600k 877703 - -3 2800k 1300k 850k 860338 - -4 3600k 1700k 1100k 846899 - -5 4400k 2100k 1350k 845160 - -6 5200k 2500k 1600k 838626 - -7 6100k 2900k 1850k 834096 - -8 6800k 3300k 2100k 828642 - -9 7600k 3700k 2350k 828642 - - - - - - -RECOVERING DATA FROM DAMAGED FILES - -bzip2 compresses files in -blocks, usually 900kbytes long. Each block is handled -independently. If a media or transmission error causes a -multi-block .bz2 file to become -damaged, it may be possible to recover data from the undamaged -blocks in the file. - -The compressed representation of each block is delimited by -a 48-bit pattern, which makes it possible to find the block -boundaries with reasonable certainty. Each block also carries -its own 32-bit CRC, so damaged blocks can be distinguished from -undamaged ones. - -bzip2recover is a simple -program whose purpose is to search for blocks in -.bz2 files, and write each block -out into its own .bz2 file. You -can then use bzip2 -t to test -the integrity of the resulting files, and decompress those which -are undamaged. - -bzip2recover takes a -single argument, the name of the damaged file, and writes a -number of files rec0001file.bz2, -rec0002file.bz2, etc, containing -the extracted blocks. The output filenames are designed so that -the use of wildcards in subsequent processing -- for example, -bzip2 -dc rec*file.bz2 > -recovered_data -- lists the files in the correct -order. - -bzip2recover should be of -most use dealing with large .bz2 -files, as these will contain many blocks. It is clearly futile -to use it on damaged single-block files, since a damaged block -cannot be recovered. If you wish to minimise any potential data -loss through media or transmission errors, you might consider -compressing with a smaller block size. - - - - - -PERFORMANCE NOTES - -The sorting phase of compression gathers together similar -strings in the file. Because of this, files containing very long -runs of repeated symbols, like "aabaabaabaab ..." (repeated -several hundred times) may compress more slowly than normal. -Versions 0.9.5 and above fare much better than previous versions -in this respect. The ratio between worst-case and average-case -compression time is in the region of 10:1. For previous -versions, this figure was more like 100:1. You can use the --vvvv option to monitor progress -in great detail, if you want. - -Decompression speed is unaffected by these -phenomena. - -bzip2 usually allocates -several megabytes of memory to operate in, and then charges all -over it in a fairly random fashion. This means that performance, -both for compressing and decompressing, is largely determined by -the speed at which your machine can service cache misses. -Because of this, small changes to the code to reduce the miss -rate have been observed to give disproportionately large -performance improvements. I imagine -bzip2 will perform best on -machines with very large caches. - - - - - - -CAVEATS - -I/O error messages are not as helpful as they could be. -bzip2 tries hard to detect I/O -errors and exit cleanly, but the details of what the problem is -sometimes seem rather misleading. - -This manual page pertains to version &bz-version; of -bzip2. Compressed data created by -this version is entirely forwards and backwards compatible with the -previous public releases, versions 0.1pl2, 0.9.0 and 0.9.5, 1.0.0, -1.0.1, 1.0.2 and 1.0.3, but with the following exception: 0.9.0 and -above can correctly decompress multiple concatenated compressed files. -0.1pl2 cannot do this; it will stop after decompressing just the first -file in the stream. - -bzip2recover versions -prior to 1.0.2 used 32-bit integers to represent bit positions in -compressed files, so it could not handle compressed files more -than 512 megabytes long. Versions 1.0.2 and above use 64-bit ints -on some platforms which support them (GNU supported targets, and -Windows). To establish whether or not -bzip2recover was built with such -a limitation, run it without arguments. In any event you can -build yourself an unlimited version if you can recompile it with -MaybeUInt64 set to be an -unsigned 64-bit integer. - - - - - - -AUTHOR - -Julian Seward, -&bz-email; - -The ideas embodied in -bzip2 are due to (at least) the -following people: Michael Burrows and David Wheeler (for the -block sorting transformation), David Wheeler (again, for the -Huffman coder), Peter Fenwick (for the structured coding model in -the original bzip, and many -refinements), and Alistair Moffat, Radford Neal and Ian Witten -(for the arithmetic coder in the original -bzip). I am much indebted for -their help, support and advice. See the manual in the source -distribution for pointers to sources of documentation. Christian -von Roques encouraged me to look for faster sorting algorithms, -so as to speed up compression. Bela Lubkin encouraged me to -improve the worst-case compression performance. -Donna Robinson XMLised the documentation. -Many people sent -patches, helped with portability problems, lent machines, gave -advice and were generally helpful. - - - - - - - - - -Programming with <computeroutput>libbzip2</computeroutput> - - -This chapter describes the programming interface to -libbzip2. - -For general background information, particularly about -memory use and performance aspects, you'd be well advised to read - as well. - - - -Top-level structure - -libbzip2 is a flexible -library for compressing and decompressing data in the -bzip2 data format. Although -packaged as a single entity, it helps to regard the library as -three separate parts: the low level interface, and the high level -interface, and some utility functions. - -The structure of -libbzip2's interfaces is similar -to that of Jean-loup Gailly's and Mark Adler's excellent -zlib library. - -All externally visible symbols have names beginning -BZ2_. This is new in version -1.0. The intention is to minimise pollution of the namespaces of -library clients. - -To use any part of the library, you need to -#include <bzlib.h> -into your sources. - - - - -Low-level summary - -This interface provides services for compressing and -decompressing data in memory. There's no provision for dealing -with files, streams or any other I/O mechanisms, just straight -memory-to-memory work. In fact, this part of the library can be -compiled without inclusion of -stdio.h, which may be helpful -for embedded applications. - -The low-level part of the library has no global variables -and is therefore thread-safe. - -Six routines make up the low level interface: -BZ2_bzCompressInit, -BZ2_bzCompress, and -BZ2_bzCompressEnd for -compression, and a corresponding trio -BZ2_bzDecompressInit, -BZ2_bzDecompress and -BZ2_bzDecompressEnd for -decompression. The *Init -functions allocate memory for compression/decompression and do -other initialisations, whilst the -*End functions close down -operations and release memory. - -The real work is done by -BZ2_bzCompress and -BZ2_bzDecompress. These -compress and decompress data from a user-supplied input buffer to -a user-supplied output buffer. These buffers can be any size; -arbitrary quantities of data are handled by making repeated calls -to these functions. This is a flexible mechanism allowing a -consumer-pull style of activity, or producer-push, or a mixture -of both. - - - - - -High-level summary - -This interface provides some handy wrappers around the -low-level interface to facilitate reading and writing -bzip2 format files -(.bz2 files). The routines -provide hooks to facilitate reading files in which the -bzip2 data stream is embedded -within some larger-scale file structure, or where there are -multiple bzip2 data streams -concatenated end-to-end. - -For reading files, -BZ2_bzReadOpen, -BZ2_bzRead, -BZ2_bzReadClose and -BZ2_bzReadGetUnused are -supplied. For writing files, -BZ2_bzWriteOpen, -BZ2_bzWrite and -BZ2_bzWriteFinish are -available. - -As with the low-level library, no global variables are used -so the library is per se thread-safe. However, if I/O errors -occur whilst reading or writing the underlying compressed files, -you may have to consult errno to -determine the cause of the error. In that case, you'd need a C -library which correctly supports -errno in a multithreaded -environment. - -To make the library a little simpler and more portable, -BZ2_bzReadOpen and -BZ2_bzWriteOpen require you to -pass them file handles (FILE*s) -which have previously been opened for reading or writing -respectively. That avoids portability problems associated with -file operations and file attributes, whilst not being much of an -imposition on the programmer. - - - - - -Utility functions summary - -For very simple needs, -BZ2_bzBuffToBuffCompress and -BZ2_bzBuffToBuffDecompress are -provided. These compress data in memory from one buffer to -another buffer in a single function call. You should assess -whether these functions fulfill your memory-to-memory -compression/decompression requirements before investing effort in -understanding the more general but more complex low-level -interface. - -Yoshioka Tsuneo -(tsuneo@rr.iij4u.or.jp) has -contributed some functions to give better -zlib compatibility. These -functions are BZ2_bzopen, -BZ2_bzread, -BZ2_bzwrite, -BZ2_bzflush, -BZ2_bzclose, -BZ2_bzerror and -BZ2_bzlibVersion. You may find -these functions more convenient for simple file reading and -writing, than those in the high-level interface. These functions -are not (yet) officially part of the library, and are minimally -documented here. If they break, you get to keep all the pieces. -I hope to document them properly when time permits. - -Yoshioka also contributed modifications to allow the -library to be built as a Windows DLL. - - - - - - - -Error handling - -The library is designed to recover cleanly in all -situations, including the worst-case situation of decompressing -random data. I'm not 100% sure that it can always do this, so -you might want to add a signal handler to catch segmentation -violations during decompression if you are feeling especially -paranoid. I would be interested in hearing more about the -robustness of the library to corrupted compressed data. - -Version 1.0.3 more robust in this respect than any -previous version. Investigations with Valgrind (a tool for detecting -problems with memory management) indicate -that, at least for the few files I tested, all single-bit errors -in the decompressed data are caught properly, with no -segmentation faults, no uses of uninitialised data, no out of -range reads or writes, and no infinite looping in the decompressor. -So it's certainly pretty robust, although -I wouldn't claim it to be totally bombproof. - -The file bzlib.h contains -all definitions needed to use the library. In particular, you -should definitely not include -bzlib_private.h. - -In bzlib.h, the various -return values are defined. The following list is not intended as -an exhaustive description of the circumstances in which a given -value may be returned -- those descriptions are given later. -Rather, it is intended to convey the rough meaning of each return -value. The first five actions are normal and not intended to -denote an error situation. - - - - - BZ_OK - The requested action was completed - successfully. - - - - BZ_RUN_OK, BZ_FLUSH_OK, - BZ_FINISH_OK - In - BZ2_bzCompress, the requested - flush/finish/nothing-special action was completed - successfully. - - - - BZ_STREAM_END - Compression of data was completed, or the - logical stream end was detected during - decompression. - - - - -The following return values indicate an error of some -kind. - - - - - BZ_CONFIG_ERROR - Indicates that the library has been improperly - compiled on your platform -- a major configuration error. - Specifically, it means that - sizeof(char), - sizeof(short) and - sizeof(int) are not 1, 2 and - 4 respectively, as they should be. Note that the library - should still work properly on 64-bit platforms which follow - the LP64 programming model -- that is, where - sizeof(long) and - sizeof(void*) are 8. Under - LP64, sizeof(int) is still 4, - so libbzip2, which doesn't - use the long type, is - OK. - - - - BZ_SEQUENCE_ERROR - When using the library, it is important to call - the functions in the correct sequence and with data structures - (buffers etc) in the correct states. - libbzip2 checks as much as it - can to ensure this is happening, and returns - BZ_SEQUENCE_ERROR if not. - Code which complies precisely with the function semantics, as - detailed below, should never receive this value; such an event - denotes buggy code which you should - investigate. - - - - BZ_PARAM_ERROR - Returned when a parameter to a function call is - out of range or otherwise manifestly incorrect. As with - BZ_SEQUENCE_ERROR, this - denotes a bug in the client code. The distinction between - BZ_PARAM_ERROR and - BZ_SEQUENCE_ERROR is a bit - hazy, but still worth making. - - - - BZ_MEM_ERROR - Returned when a request to allocate memory - failed. Note that the quantity of memory needed to decompress - a stream cannot be determined until the stream's header has - been read. So - BZ2_bzDecompress and - BZ2_bzRead may return - BZ_MEM_ERROR even though some - of the compressed data has been read. The same is not true - for compression; once - BZ2_bzCompressInit or - BZ2_bzWriteOpen have - successfully completed, - BZ_MEM_ERROR cannot - occur. - - - - BZ_DATA_ERROR - Returned when a data integrity error is - detected during decompression. Most importantly, this means - when stored and computed CRCs for the data do not match. This - value is also returned upon detection of any other anomaly in - the compressed data. - - - - BZ_DATA_ERROR_MAGIC - As a special case of - BZ_DATA_ERROR, it is - sometimes useful to know when the compressed stream does not - start with the correct magic bytes ('B' 'Z' - 'h'). - - - - BZ_IO_ERROR - Returned by - BZ2_bzRead and - BZ2_bzWrite when there is an - error reading or writing in the compressed file, and by - BZ2_bzReadOpen and - BZ2_bzWriteOpen for attempts - to use a file for which the error indicator (viz, - ferror(f)) is set. On - receipt of BZ_IO_ERROR, the - caller should consult errno - and/or perror to acquire - operating-system specific information about the - problem. - - - - BZ_UNEXPECTED_EOF - Returned by - BZ2_bzRead when the - compressed file finishes before the logical end of stream is - detected. - - - - BZ_OUTBUFF_FULL - Returned by - BZ2_bzBuffToBuffCompress and - BZ2_bzBuffToBuffDecompress to - indicate that the output data will not fit into the output - buffer provided. - - - - - - - - - -Low-level interface - - - -BZ2_bzCompressInit - - -typedef struct { - char *next_in; - unsigned int avail_in; - unsigned int total_in_lo32; - unsigned int total_in_hi32; - - char *next_out; - unsigned int avail_out; - unsigned int total_out_lo32; - unsigned int total_out_hi32; - - void *state; - - void *(*bzalloc)(void *,int,int); - void (*bzfree)(void *,void *); - void *opaque; -} bz_stream; - -int BZ2_bzCompressInit ( bz_stream *strm, - int blockSize100k, - int verbosity, - int workFactor ); - - -Prepares for compression. The -bz_stream structure holds all -data pertaining to the compression activity. A -bz_stream structure should be -allocated and initialised prior to the call. The fields of -bz_stream comprise the entirety -of the user-visible data. state -is a pointer to the private data structures required for -compression. - -Custom memory allocators are supported, via fields -bzalloc, -bzfree, and -opaque. The value -opaque is passed to as the first -argument to all calls to bzalloc -and bzfree, but is otherwise -ignored by the library. The call bzalloc ( -opaque, n, m ) is expected to return a pointer -p to n * -m bytes of memory, and bzfree ( -opaque, p ) should free that memory. - -If you don't want to use a custom memory allocator, set -bzalloc, -bzfree and -opaque to -NULL, and the library will then -use the standard malloc / -free routines. - -Before calling -BZ2_bzCompressInit, fields -bzalloc, -bzfree and -opaque should be filled -appropriately, as just described. Upon return, the internal -state will have been allocated and initialised, and -total_in_lo32, -total_in_hi32, -total_out_lo32 and -total_out_hi32 will have been -set to zero. These four fields are used by the library to inform -the caller of the total amount of data passed into and out of the -library, respectively. You should not try to change them. As of -version 1.0, 64-bit counts are maintained, even on 32-bit -platforms, using the _hi32 -fields to store the upper 32 bits of the count. So, for example, -the total amount of data in is (total_in_hi32 -<< 32) + total_in_lo32. - -Parameter blockSize100k -specifies the block size to be used for compression. It should -be a value between 1 and 9 inclusive, and the actual block size -used is 100000 x this figure. 9 gives the best compression but -takes most memory. - -Parameter verbosity should -be set to a number between 0 and 4 inclusive. 0 is silent, and -greater numbers give increasingly verbose monitoring/debugging -output. If the library has been compiled with --DBZ_NO_STDIO, no such output -will appear for any verbosity setting. - -Parameter workFactor -controls how the compression phase behaves when presented with -worst case, highly repetitive, input data. If compression runs -into difficulties caused by repetitive data, the library switches -from the standard sorting algorithm to a fallback algorithm. The -fallback is slower than the standard algorithm by perhaps a -factor of three, but always behaves reasonably, no matter how bad -the input. - -Lower values of workFactor -reduce the amount of effort the standard algorithm will expend -before resorting to the fallback. You should set this parameter -carefully; too low, and many inputs will be handled by the -fallback algorithm and so compress rather slowly, too high, and -your average-to-worst case compression times can become very -large. The default value of 30 gives reasonable behaviour over a -wide range of circumstances. - -Allowable values range from 0 to 250 inclusive. 0 is a -special case, equivalent to using the default value of 30. - -Note that the compressed output generated is the same -regardless of whether or not the fallback algorithm is -used. - -Be aware also that this parameter may disappear entirely in -future versions of the library. In principle it should be -possible to devise a good way to automatically choose which -algorithm to use. Such a mechanism would render the parameter -obsolete. - -Possible return values: - - -BZ_CONFIG_ERROR - if the library has been mis-compiled -BZ_PARAM_ERROR - if strm is NULL - or blockSize < 1 or blockSize > 9 - or verbosity < 0 or verbosity > 4 - or workFactor < 0 or workFactor > 250 -BZ_MEM_ERROR - if not enough memory is available -BZ_OK - otherwise - - -Allowable next actions: - - -BZ2_bzCompress - if BZ_OK is returned - no specific action needed in case of error - - - - - - -BZ2_bzCompress - - -int BZ2_bzCompress ( bz_stream *strm, int action ); - - -Provides more input and/or output buffer space for the -library. The caller maintains input and output buffers, and -calls BZ2_bzCompress to transfer -data between them. - -Before each call to -BZ2_bzCompress, -next_in should point at the data -to be compressed, and avail_in -should indicate how many bytes the library may read. -BZ2_bzCompress updates -next_in, -avail_in and -total_in to reflect the number -of bytes it has read. - -Similarly, next_out should -point to a buffer in which the compressed data is to be placed, -with avail_out indicating how -much output space is available. -BZ2_bzCompress updates -next_out, -avail_out and -total_out to reflect the number -of bytes output. - -You may provide and remove as little or as much data as you -like on each call of -BZ2_bzCompress. In the limit, -it is acceptable to supply and remove data one byte at a time, -although this would be terribly inefficient. You should always -ensure that at least one byte of output space is available at -each call. - -A second purpose of -BZ2_bzCompress is to request a -change of mode of the compressed stream. - -Conceptually, a compressed stream can be in one of four -states: IDLE, RUNNING, FLUSHING and FINISHING. Before -initialisation -(BZ2_bzCompressInit) and after -termination (BZ2_bzCompressEnd), -a stream is regarded as IDLE. - -Upon initialisation -(BZ2_bzCompressInit), the stream -is placed in the RUNNING state. Subsequent calls to -BZ2_bzCompress should pass -BZ_RUN as the requested action; -other actions are illegal and will result in -BZ_SEQUENCE_ERROR. - -At some point, the calling program will have provided all -the input data it wants to. It will then want to finish up -- in -effect, asking the library to process any data it might have -buffered internally. In this state, -BZ2_bzCompress will no longer -attempt to read data from -next_in, but it will want to -write data to next_out. Because -the output buffer supplied by the user can be arbitrarily small, -the finishing-up operation cannot necessarily be done with a -single call of -BZ2_bzCompress. - -Instead, the calling program passes -BZ_FINISH as an action to -BZ2_bzCompress. This changes -the stream's state to FINISHING. Any remaining input (ie, -next_in[0 .. avail_in-1]) is -compressed and transferred to the output buffer. To do this, -BZ2_bzCompress must be called -repeatedly until all the output has been consumed. At that -point, BZ2_bzCompress returns -BZ_STREAM_END, and the stream's -state is set back to IDLE. -BZ2_bzCompressEnd should then be -called. - -Just to make sure the calling program does not cheat, the -library makes a note of avail_in -at the time of the first call to -BZ2_bzCompress which has -BZ_FINISH as an action (ie, at -the time the program has announced its intention to not supply -any more input). By comparing this value with that of -avail_in over subsequent calls -to BZ2_bzCompress, the library -can detect any attempts to slip in more data to compress. Any -calls for which this is detected will return -BZ_SEQUENCE_ERROR. This -indicates a programming mistake which should be corrected. - -Instead of asking to finish, the calling program may ask -BZ2_bzCompress to take all the -remaining input, compress it and terminate the current -(Burrows-Wheeler) compression block. This could be useful for -error control purposes. The mechanism is analogous to that for -finishing: call BZ2_bzCompress -with an action of BZ_FLUSH, -remove output data, and persist with the -BZ_FLUSH action until the value -BZ_RUN is returned. As with -finishing, BZ2_bzCompress -detects any attempt to provide more input data once the flush has -begun. - -Once the flush is complete, the stream returns to the -normal RUNNING state. - -This all sounds pretty complex, but isn't really. Here's a -table which shows which actions are allowable in each state, what -action will be taken, what the next state is, and what the -non-error return values are. Note that you can't explicitly ask -what state the stream is in, but nor do you need to -- it can be -inferred from the values returned by -BZ2_bzCompress. - - -IDLE/any - Illegal. IDLE state only exists after BZ2_bzCompressEnd or - before BZ2_bzCompressInit. - Return value = BZ_SEQUENCE_ERROR - -RUNNING/BZ_RUN - Compress from next_in to next_out as much as possible. - Next state = RUNNING - Return value = BZ_RUN_OK - -RUNNING/BZ_FLUSH - Remember current value of next_in. Compress from next_in - to next_out as much as possible, but do not accept any more input. - Next state = FLUSHING - Return value = BZ_FLUSH_OK - -RUNNING/BZ_FINISH - Remember current value of next_in. Compress from next_in - to next_out as much as possible, but do not accept any more input. - Next state = FINISHING - Return value = BZ_FINISH_OK - -FLUSHING/BZ_FLUSH - Compress from next_in to next_out as much as possible, - but do not accept any more input. - If all the existing input has been used up and all compressed - output has been removed - Next state = RUNNING; Return value = BZ_RUN_OK - else - Next state = FLUSHING; Return value = BZ_FLUSH_OK - -FLUSHING/other - Illegal. - Return value = BZ_SEQUENCE_ERROR - -FINISHING/BZ_FINISH - Compress from next_in to next_out as much as possible, - but to not accept any more input. - If all the existing input has been used up and all compressed - output has been removed - Next state = IDLE; Return value = BZ_STREAM_END - else - Next state = FINISHING; Return value = BZ_FINISH_OK - -FINISHING/other - Illegal. - Return value = BZ_SEQUENCE_ERROR - - - -That still looks complicated? Well, fair enough. The -usual sequence of calls for compressing a load of data is: - - - - Get started with - BZ2_bzCompressInit. - - Shovel data in and shlurp out its compressed form - using zero or more calls of - BZ2_bzCompress with action = - BZ_RUN. - - Finish up. Repeatedly call - BZ2_bzCompress with action = - BZ_FINISH, copying out the - compressed output, until - BZ_STREAM_END is - returned. Close up and go home. Call - BZ2_bzCompressEnd. - - - -If the data you want to compress fits into your input -buffer all at once, you can skip the calls of -BZ2_bzCompress ( ..., BZ_RUN ) -and just do the BZ2_bzCompress ( ..., BZ_FINISH -) calls. - -All required memory is allocated by -BZ2_bzCompressInit. The -compression library can accept any data at all (obviously). So -you shouldn't get any error return values from the -BZ2_bzCompress calls. If you -do, they will be -BZ_SEQUENCE_ERROR, and indicate -a bug in your programming. - -Trivial other possible return values: - - -BZ_PARAM_ERROR - if strm is NULL, or strm->s is NULL - - - - - - -BZ2_bzCompressEnd - - -int BZ2_bzCompressEnd ( bz_stream *strm ); - - -Releases all memory associated with a compression -stream. - -Possible return values: - - -BZ_PARAM_ERROR if strm is NULL or strm->s is NULL -BZ_OK otherwise - - - - - - -BZ2_bzDecompressInit - - -int BZ2_bzDecompressInit ( bz_stream *strm, int verbosity, int small ); - - -Prepares for decompression. As with -BZ2_bzCompressInit, a -bz_stream record should be -allocated and initialised before the call. Fields -bzalloc, -bzfree and -opaque should be set if a custom -memory allocator is required, or made -NULL for the normal -malloc / -free routines. Upon return, the -internal state will have been initialised, and -total_in and -total_out will be zero. - -For the meaning of parameter -verbosity, see -BZ2_bzCompressInit. - -If small is nonzero, the -library will use an alternative decompression algorithm which -uses less memory but at the cost of decompressing more slowly -(roughly speaking, half the speed, but the maximum memory -requirement drops to around 2300k). See -for more information on memory management. - -Note that the amount of memory needed to decompress a -stream cannot be determined until the stream's header has been -read, so even if -BZ2_bzDecompressInit succeeds, a -subsequent BZ2_bzDecompress -could fail with -BZ_MEM_ERROR. - -Possible return values: - - -BZ_CONFIG_ERROR - if the library has been mis-compiled -BZ_PARAM_ERROR - if ( small != 0 && small != 1 ) - or (verbosity <; 0 || verbosity > 4) -BZ_MEM_ERROR - if insufficient memory is available - - -Allowable next actions: - - -BZ2_bzDecompress - if BZ_OK was returned - no specific action required in case of error - - - - - - -BZ2_bzDecompress - - -int BZ2_bzDecompress ( bz_stream *strm ); - - -Provides more input and/out output buffer space for the -library. The caller maintains input and output buffers, and uses -BZ2_bzDecompress to transfer -data between them. - -Before each call to -BZ2_bzDecompress, -next_in should point at the -compressed data, and avail_in -should indicate how many bytes the library may read. -BZ2_bzDecompress updates -next_in, -avail_in and -total_in to reflect the number -of bytes it has read. - -Similarly, next_out should -point to a buffer in which the uncompressed output is to be -placed, with avail_out -indicating how much output space is available. -BZ2_bzCompress updates -next_out, -avail_out and -total_out to reflect the number -of bytes output. - -You may provide and remove as little or as much data as you -like on each call of -BZ2_bzDecompress. In the limit, -it is acceptable to supply and remove data one byte at a time, -although this would be terribly inefficient. You should always -ensure that at least one byte of output space is available at -each call. - -Use of BZ2_bzDecompress is -simpler than -BZ2_bzCompress. - -You should provide input and remove output as described -above, and repeatedly call -BZ2_bzDecompress until -BZ_STREAM_END is returned. -Appearance of BZ_STREAM_END -denotes that BZ2_bzDecompress -has detected the logical end of the compressed stream. -BZ2_bzDecompress will not -produce BZ_STREAM_END until all -output data has been placed into the output buffer, so once -BZ_STREAM_END appears, you are -guaranteed to have available all the decompressed output, and -BZ2_bzDecompressEnd can safely -be called. - -If case of an error return value, you should call -BZ2_bzDecompressEnd to clean up -and release memory. - -Possible return values: - - -BZ_PARAM_ERROR - if strm is NULL or strm->s is NULL - or strm->avail_out < 1 -BZ_DATA_ERROR - if a data integrity error is detected in the compressed stream -BZ_DATA_ERROR_MAGIC - if the compressed stream doesn't begin with the right magic bytes -BZ_MEM_ERROR - if there wasn't enough memory available -BZ_STREAM_END - if the logical end of the data stream was detected and all - output in has been consumed, eg s-->avail_out > 0 -BZ_OK - otherwise - - -Allowable next actions: - - -BZ2_bzDecompress - if BZ_OK was returned -BZ2_bzDecompressEnd - otherwise - - - - - - -BZ2_bzDecompressEnd - - -int BZ2_bzDecompressEnd ( bz_stream *strm ); - - -Releases all memory associated with a decompression -stream. - -Possible return values: - - -BZ_PARAM_ERROR - if strm is NULL or strm->s is NULL -BZ_OK - otherwise - - -Allowable next actions: - - - None. - - - - - - - - -High-level interface - -This interface provides functions for reading and writing -bzip2 format files. First, some -general points. - - - - All of the functions take an - int* first argument, - bzerror. After each call, - bzerror should be consulted - first to determine the outcome of the call. If - bzerror is - BZ_OK, the call completed - successfully, and only then should the return value of the - function (if any) be consulted. If - bzerror is - BZ_IO_ERROR, there was an - error reading/writing the underlying compressed file, and you - should then consult errno / - perror to determine the cause - of the difficulty. bzerror - may also be set to various other values; precise details are - given on a per-function basis below. - - If bzerror indicates - an error (ie, anything except - BZ_OK and - BZ_STREAM_END), you should - immediately call - BZ2_bzReadClose (or - BZ2_bzWriteClose, depending on - whether you are attempting to read or to write) to free up all - resources associated with the stream. Once an error has been - indicated, behaviour of all calls except - BZ2_bzReadClose - (BZ2_bzWriteClose) is - undefined. The implication is that (1) - bzerror should be checked - after each call, and (2) if - bzerror indicates an error, - BZ2_bzReadClose - (BZ2_bzWriteClose) should then - be called to clean up. - - The FILE* arguments - passed to BZ2_bzReadOpen / - BZ2_bzWriteOpen should be set - to binary mode. Most Unix systems will do this by default, but - other platforms, including Windows and Mac, will not. If you - omit this, you may encounter problems when moving code to new - platforms. - - Memory allocation requests are handled by - malloc / - free. At present there is no - facility for user-defined memory allocators in the file I/O - functions (could easily be added, though). - - - - - - -BZ2_bzReadOpen - - -typedef void BZFILE; - -BZFILE *BZ2_bzReadOpen( int *bzerror, FILE *f, - int verbosity, int small, - void *unused, int nUnused ); - - -Prepare to read compressed data from file handle -f. -f should refer to a file which -has been opened for reading, and for which the error indicator -(ferror(f))is not set. If -small is 1, the library will try -to decompress using less memory, at the expense of speed. - -For reasons explained below, -BZ2_bzRead will decompress the -nUnused bytes starting at -unused, before starting to read -from the file f. At most -BZ_MAX_UNUSED bytes may be -supplied like this. If this facility is not required, you should -pass NULL and -0 for -unused and -nUnused respectively. - -For the meaning of parameters -small and -verbosity, see -BZ2_bzDecompressInit. - -The amount of memory needed to decompress a file cannot be -determined until the file's header has been read. So it is -possible that BZ2_bzReadOpen -returns BZ_OK but a subsequent -call of BZ2_bzRead will return -BZ_MEM_ERROR. - -Possible assignments to -bzerror: - - -BZ_CONFIG_ERROR - if the library has been mis-compiled -BZ_PARAM_ERROR - if f is NULL - or small is neither 0 nor 1 - or ( unused == NULL && nUnused != 0 ) - or ( unused != NULL && !(0 <= nUnused <= BZ_MAX_UNUSED) ) -BZ_IO_ERROR - if ferror(f) is nonzero -BZ_MEM_ERROR - if insufficient memory is available -BZ_OK - otherwise. - - -Possible return values: - - -Pointer to an abstract BZFILE - if bzerror is BZ_OK -NULL - otherwise - - -Allowable next actions: - - -BZ2_bzRead - if bzerror is BZ_OK -BZ2_bzClose - otherwise - - - - - - -BZ2_bzRead - - -int BZ2_bzRead ( int *bzerror, BZFILE *b, void *buf, int len ); - - -Reads up to len -(uncompressed) bytes from the compressed file -b into the buffer -buf. If the read was -successful, bzerror is set to -BZ_OK and the number of bytes -read is returned. If the logical end-of-stream was detected, -bzerror will be set to -BZ_STREAM_END, and the number of -bytes read is returned. All other -bzerror values denote an -error. - -BZ2_bzRead will supply -len bytes, unless the logical -stream end is detected or an error occurs. Because of this, it -is possible to detect the stream end by observing when the number -of bytes returned is less than the number requested. -Nevertheless, this is regarded as inadvisable; you should instead -check bzerror after every call -and watch out for -BZ_STREAM_END. - -Internally, BZ2_bzRead -copies data from the compressed file in chunks of size -BZ_MAX_UNUSED bytes before -decompressing it. If the file contains more bytes than strictly -needed to reach the logical end-of-stream, -BZ2_bzRead will almost certainly -read some of the trailing data before signalling -BZ_SEQUENCE_END. To collect the -read but unused data once -BZ_SEQUENCE_END has appeared, -call BZ2_bzReadGetUnused -immediately before -BZ2_bzReadClose. - -Possible assignments to -bzerror: - - -BZ_PARAM_ERROR - if b is NULL or buf is NULL or len < 0 -BZ_SEQUENCE_ERROR - if b was opened with BZ2_bzWriteOpen -BZ_IO_ERROR - if there is an error reading from the compressed file -BZ_UNEXPECTED_EOF - if the compressed file ended before - the logical end-of-stream was detected -BZ_DATA_ERROR - if a data integrity error was detected in the compressed stream -BZ_DATA_ERROR_MAGIC - if the stream does not begin with the requisite header bytes - (ie, is not a bzip2 data file). This is really - a special case of BZ_DATA_ERROR. -BZ_MEM_ERROR - if insufficient memory was available -BZ_STREAM_END - if the logical end of stream was detected. -BZ_OK - otherwise. - - -Possible return values: - - -number of bytes read - if bzerror is BZ_OK or BZ_STREAM_END -undefined - otherwise - - -Allowable next actions: - - -collect data from buf, then BZ2_bzRead or BZ2_bzReadClose - if bzerror is BZ_OK -collect data from buf, then BZ2_bzReadClose or BZ2_bzReadGetUnused - if bzerror is BZ_SEQUENCE_END -BZ2_bzReadClose - otherwise - - - - - - -BZ2_bzReadGetUnused - - -void BZ2_bzReadGetUnused( int* bzerror, BZFILE *b, - void** unused, int* nUnused ); - - -Returns data which was read from the compressed file but -was not needed to get to the logical end-of-stream. -*unused is set to the address of -the data, and *nUnused to the -number of bytes. *nUnused will -be set to a value between 0 and -BZ_MAX_UNUSED inclusive. - -This function may only be called once -BZ2_bzRead has signalled -BZ_STREAM_END but before -BZ2_bzReadClose. - -Possible assignments to -bzerror: - - -BZ_PARAM_ERROR - if b is NULL - or unused is NULL or nUnused is NULL -BZ_SEQUENCE_ERROR - if BZ_STREAM_END has not been signalled - or if b was opened with BZ2_bzWriteOpen -BZ_OK - otherwise - - -Allowable next actions: - - -BZ2_bzReadClose - - - - - - -BZ2_bzReadClose - - -void BZ2_bzReadClose ( int *bzerror, BZFILE *b ); - - -Releases all memory pertaining to the compressed file -b. -BZ2_bzReadClose does not call -fclose on the underlying file -handle, so you should do that yourself if appropriate. -BZ2_bzReadClose should be called -to clean up after all error situations. - -Possible assignments to -bzerror: - - -BZ_SEQUENCE_ERROR - if b was opened with BZ2_bzOpenWrite -BZ_OK - otherwise - - -Allowable next actions: - - -none - - - - - - -BZ2_bzWriteOpen - - -BZFILE *BZ2_bzWriteOpen( int *bzerror, FILE *f, - int blockSize100k, int verbosity, - int workFactor ); - - -Prepare to write compressed data to file handle -f. -f should refer to a file which -has been opened for writing, and for which the error indicator -(ferror(f))is not set. - -For the meaning of parameters -blockSize100k, -verbosity and -workFactor, see -BZ2_bzCompressInit. - -All required memory is allocated at this stage, so if the -call completes successfully, -BZ_MEM_ERROR cannot be signalled -by a subsequent call to -BZ2_bzWrite. - -Possible assignments to -bzerror: - - -BZ_CONFIG_ERROR - if the library has been mis-compiled -BZ_PARAM_ERROR - if f is NULL - or blockSize100k < 1 or blockSize100k > 9 -BZ_IO_ERROR - if ferror(f) is nonzero -BZ_MEM_ERROR - if insufficient memory is available -BZ_OK - otherwise - - -Possible return values: - - -Pointer to an abstract BZFILE - if bzerror is BZ_OK -NULL - otherwise - - -Allowable next actions: - - -BZ2_bzWrite - if bzerror is BZ_OK - (you could go directly to BZ2_bzWriteClose, but this would be pretty pointless) -BZ2_bzWriteClose - otherwise - - - - - - -BZ2_bzWrite - - -void BZ2_bzWrite ( int *bzerror, BZFILE *b, void *buf, int len ); - - -Absorbs len bytes from the -buffer buf, eventually to be -compressed and written to the file. - -Possible assignments to -bzerror: - - -BZ_PARAM_ERROR - if b is NULL or buf is NULL or len < 0 -BZ_SEQUENCE_ERROR - if b was opened with BZ2_bzReadOpen -BZ_IO_ERROR - if there is an error writing the compressed file. -BZ_OK - otherwise - - - - - - -BZ2_bzWriteClose - - -void BZ2_bzWriteClose( int *bzerror, BZFILE* f, - int abandon, - unsigned int* nbytes_in, - unsigned int* nbytes_out ); - -void BZ2_bzWriteClose64( int *bzerror, BZFILE* f, - int abandon, - unsigned int* nbytes_in_lo32, - unsigned int* nbytes_in_hi32, - unsigned int* nbytes_out_lo32, - unsigned int* nbytes_out_hi32 ); - - -Compresses and flushes to the compressed file all data so -far supplied by BZ2_bzWrite. -The logical end-of-stream markers are also written, so subsequent -calls to BZ2_bzWrite are -illegal. All memory associated with the compressed file -b is released. -fflush is called on the -compressed file, but it is not -fclose'd. - -If BZ2_bzWriteClose is -called to clean up after an error, the only action is to release -the memory. The library records the error codes issued by -previous calls, so this situation will be detected automatically. -There is no attempt to complete the compression operation, nor to -fflush the compressed file. You -can force this behaviour to happen even in the case of no error, -by passing a nonzero value to -abandon. - -If nbytes_in is non-null, -*nbytes_in will be set to be the -total volume of uncompressed data handled. Similarly, -nbytes_out will be set to the -total volume of compressed data written. For compatibility with -older versions of the library, -BZ2_bzWriteClose only yields the -lower 32 bits of these counts. Use -BZ2_bzWriteClose64 if you want -the full 64 bit counts. These two functions are otherwise -absolutely identical. - -Possible assignments to -bzerror: - - -BZ_SEQUENCE_ERROR - if b was opened with BZ2_bzReadOpen -BZ_IO_ERROR - if there is an error writing the compressed file -BZ_OK - otherwise - - - - - - -Handling embedded compressed data streams - -The high-level library facilitates use of -bzip2 data streams which form -some part of a surrounding, larger data stream. - - - - For writing, the library takes an open file handle, - writes compressed data to it, - fflushes it but does not - fclose it. The calling - application can write its own data before and after the - compressed data stream, using that same file handle. - - Reading is more complex, and the facilities are not as - general as they could be since generality is hard to reconcile - with efficiency. BZ2_bzRead - reads from the compressed file in blocks of size - BZ_MAX_UNUSED bytes, and in - doing so probably will overshoot the logical end of compressed - stream. To recover this data once decompression has ended, - call BZ2_bzReadGetUnused after - the last call of BZ2_bzRead - (the one returning - BZ_STREAM_END) but before - calling - BZ2_bzReadClose. - - - -This mechanism makes it easy to decompress multiple -bzip2 streams placed end-to-end. -As the end of one stream, when -BZ2_bzRead returns -BZ_STREAM_END, call -BZ2_bzReadGetUnused to collect -the unused data (copy it into your own buffer somewhere). That -data forms the start of the next compressed stream. To start -uncompressing that next stream, call -BZ2_bzReadOpen again, feeding in -the unused data via the unused / -nUnused parameters. Keep doing -this until BZ_STREAM_END return -coincides with the physical end of file -(feof(f)). In this situation -BZ2_bzReadGetUnused will of -course return no data. - -This should give some feel for how the high-level interface -can be used. If you require extra flexibility, you'll have to -bite the bullet and get to grips with the low-level -interface. - - - - - -Standard file-reading/writing code - -Here's how you'd write data to a compressed file: - - -FILE* f; -BZFILE* b; -int nBuf; -char buf[ /* whatever size you like */ ]; -int bzerror; -int nWritten; - -f = fopen ( "myfile.bz2", "w" ); -if ( !f ) { - /* handle error */ -} -b = BZ2_bzWriteOpen( &bzerror, f, 9 ); -if (bzerror != BZ_OK) { - BZ2_bzWriteClose ( b ); - /* handle error */ -} - -while ( /* condition */ ) { - /* get data to write into buf, and set nBuf appropriately */ - nWritten = BZ2_bzWrite ( &bzerror, b, buf, nBuf ); - if (bzerror == BZ_IO_ERROR) { - BZ2_bzWriteClose ( &bzerror, b ); - /* handle error */ - } -} - -BZ2_bzWriteClose( &bzerror, b ); -if (bzerror == BZ_IO_ERROR) { - /* handle error */ -} - - -And to read from a compressed file: - - -FILE* f; -BZFILE* b; -int nBuf; -char buf[ /* whatever size you like */ ]; -int bzerror; -int nWritten; - -f = fopen ( "myfile.bz2", "r" ); -if ( !f ) { - /* handle error */ -} -b = BZ2_bzReadOpen ( &bzerror, f, 0, NULL, 0 ); -if ( bzerror != BZ_OK ) { - BZ2_bzReadClose ( &bzerror, b ); - /* handle error */ -} - -bzerror = BZ_OK; -while ( bzerror == BZ_OK && /* arbitrary other conditions */) { - nBuf = BZ2_bzRead ( &bzerror, b, buf, /* size of buf */ ); - if ( bzerror == BZ_OK ) { - /* do something with buf[0 .. nBuf-1] */ - } -} -if ( bzerror != BZ_STREAM_END ) { - BZ2_bzReadClose ( &bzerror, b ); - /* handle error */ -} else { - BZ2_bzReadClose ( &bzerror, b ); -} - - - - - - - - -Utility functions - - - -BZ2_bzBuffToBuffCompress - - -int BZ2_bzBuffToBuffCompress( char* dest, - unsigned int* destLen, - char* source, - unsigned int sourceLen, - int blockSize100k, - int verbosity, - int workFactor ); - - -Attempts to compress the data in source[0 -.. sourceLen-1] into the destination buffer, -dest[0 .. *destLen-1]. If the -destination buffer is big enough, -*destLen is set to the size of -the compressed data, and BZ_OK -is returned. If the compressed data won't fit, -*destLen is unchanged, and -BZ_OUTBUFF_FULL is -returned. - -Compression in this manner is a one-shot event, done with a -single call to this function. The resulting compressed data is a -complete bzip2 format data -stream. There is no mechanism for making additional calls to -provide extra input data. If you want that kind of mechanism, -use the low-level interface. - -For the meaning of parameters -blockSize100k, -verbosity and -workFactor, see -BZ2_bzCompressInit. - -To guarantee that the compressed data will fit in its -buffer, allocate an output buffer of size 1% larger than the -uncompressed data, plus six hundred extra bytes. - -BZ2_bzBuffToBuffDecompress -will not write data at or beyond -dest[*destLen], even in case of -buffer overflow. - -Possible return values: - - -BZ_CONFIG_ERROR - if the library has been mis-compiled -BZ_PARAM_ERROR - if dest is NULL or destLen is NULL - or blockSize100k < 1 or blockSize100k > 9 - or verbosity < 0 or verbosity > 4 - or workFactor < 0 or workFactor > 250 -BZ_MEM_ERROR - if insufficient memory is available -BZ_OUTBUFF_FULL - if the size of the compressed data exceeds *destLen -BZ_OK - otherwise - - - - - - -BZ2_bzBuffToBuffDecompress - - -int BZ2_bzBuffToBuffDecompress( char* dest, - unsigned int* destLen, - char* source, - unsigned int sourceLen, - int small, - int verbosity ); - - -Attempts to decompress the data in source[0 -.. sourceLen-1] into the destination buffer, -dest[0 .. *destLen-1]. If the -destination buffer is big enough, -*destLen is set to the size of -the uncompressed data, and BZ_OK -is returned. If the compressed data won't fit, -*destLen is unchanged, and -BZ_OUTBUFF_FULL is -returned. - -source is assumed to hold -a complete bzip2 format data -stream. -BZ2_bzBuffToBuffDecompress tries -to decompress the entirety of the stream into the output -buffer. - -For the meaning of parameters -small and -verbosity, see -BZ2_bzDecompressInit. - -Because the compression ratio of the compressed data cannot -be known in advance, there is no easy way to guarantee that the -output buffer will be big enough. You may of course make -arrangements in your code to record the size of the uncompressed -data, but such a mechanism is beyond the scope of this -library. - -BZ2_bzBuffToBuffDecompress -will not write data at or beyond -dest[*destLen], even in case of -buffer overflow. - -Possible return values: - - -BZ_CONFIG_ERROR - if the library has been mis-compiled -BZ_PARAM_ERROR - if dest is NULL or destLen is NULL - or small != 0 && small != 1 - or verbosity < 0 or verbosity > 4 -BZ_MEM_ERROR - if insufficient memory is available -BZ_OUTBUFF_FULL - if the size of the compressed data exceeds *destLen -BZ_DATA_ERROR - if a data integrity error was detected in the compressed data -BZ_DATA_ERROR_MAGIC - if the compressed data doesn't begin with the right magic bytes -BZ_UNEXPECTED_EOF - if the compressed data ends unexpectedly -BZ_OK - otherwise - - - - - - - - -zlib compatibility functions - -Yoshioka Tsuneo has contributed some functions to give -better zlib compatibility. -These functions are BZ2_bzopen, -BZ2_bzread, -BZ2_bzwrite, -BZ2_bzflush, -BZ2_bzclose, -BZ2_bzerror and -BZ2_bzlibVersion. These -functions are not (yet) officially part of the library. If they -break, you get to keep all the pieces. Nevertheless, I think -they work ok. - - -typedef void BZFILE; - -const char * BZ2_bzlibVersion ( void ); - - -Returns a string indicating the library version. - - -BZFILE * BZ2_bzopen ( const char *path, const char *mode ); -BZFILE * BZ2_bzdopen ( int fd, const char *mode ); - - -Opens a .bz2 file for -reading or writing, using either its name or a pre-existing file -descriptor. Analogous to fopen -and fdopen. - - -int BZ2_bzread ( BZFILE* b, void* buf, int len ); -int BZ2_bzwrite ( BZFILE* b, void* buf, int len ); - - -Reads/writes data from/to a previously opened -BZFILE. Analogous to -fread and -fwrite. - - -int BZ2_bzflush ( BZFILE* b ); -void BZ2_bzclose ( BZFILE* b ); - - -Flushes/closes a BZFILE. -BZ2_bzflush doesn't actually do -anything. Analogous to fflush -and fclose. - - -const char * BZ2_bzerror ( BZFILE *b, int *errnum ) - - -Returns a string describing the more recent error status of -b, and also sets -*errnum to its numerical -value. - - - - - -Using the library in a stdio-free environment - - - -Getting rid of stdio - -In a deeply embedded application, you might want to use -just the memory-to-memory functions. You can do this -conveniently by compiling the library with preprocessor symbol -BZ_NO_STDIO defined. Doing this -gives you a library containing only the following eight -functions: - -BZ2_bzCompressInit, -BZ2_bzCompress, -BZ2_bzCompressEnd -BZ2_bzDecompressInit, -BZ2_bzDecompress, -BZ2_bzDecompressEnd -BZ2_bzBuffToBuffCompress, -BZ2_bzBuffToBuffDecompress - -When compiled like this, all functions will ignore -verbosity settings. - - - - - -Critical error handling - -libbzip2 contains a number -of internal assertion checks which should, needless to say, never -be activated. Nevertheless, if an assertion should fail, -behaviour depends on whether or not the library was compiled with -BZ_NO_STDIO set. - -For a normal compile, an assertion failure yields the -message: - -
-bzip2/libbzip2: internal error number N. -This is a bug in bzip2/libbzip2, &bz-version; of &bz-date;. -Please report it to me at: &bz-email;. If this happened -when you were using some program which uses libbzip2 as a -component, you should also report this bug to the author(s) -of that program. Please make an effort to report this bug; -timely and accurate bug reports eventually lead to higher -quality software. Thanks. Julian Seward, &bz-date;. -
- -where N is some error code -number. If N == 1007, it also -prints some extra text advising the reader that unreliable memory -is often associated with internal error 1007. (This is a -frequently-observed-phenomenon with versions 1.0.0/1.0.1). - -exit(3) is then -called. - -For a stdio-free library, -assertion failures result in a call to a function declared -as: - - -extern void bz_internal_error ( int errcode ); - - -The relevant code is passed as a parameter. You should -supply such a function. - -In either case, once an assertion failure has occurred, any -bz_stream records involved can -be regarded as invalid. You should not attempt to resume normal -operation with them. - -You may, of course, change critical error handling to suit -your needs. As I said above, critical errors indicate bugs in -the library and should not occur. All "normal" error situations -are indicated via error return codes from functions, and can be -recovered from. - -
- -
- - - -Making a Windows DLL - -Everything related to Windows has been contributed by -Yoshioka Tsuneo -(tsuneo@rr.iij4u.or.jp), so -you should send your queries to him (but perhaps Cc: me, -&bz-email;). - -My vague understanding of what to do is: using Visual C++ -5.0, open the project file -libbz2.dsp, and build. That's -all. - -If you can't open the project file for some reason, make a -new one, naming these files: -blocksort.c, -bzlib.c, -compress.c, -crctable.c, -decompress.c, -huffman.c, -randtable.c and -libbz2.def. You will also need -to name the header files bzlib.h -and bzlib_private.h. - -If you don't use VC++, you may need to define the -proprocessor symbol -_WIN32. - -Finally, dlltest.c is a -sample program using the DLL. It has a project file, -dlltest.dsp. - -If you just want a makefile for Visual C, have a look at -makefile.msc. - -Be aware that if you compile -bzip2 itself on Win32, you must -set BZ_UNIX to 0 and -BZ_LCCWIN32 to 1, in the file -bzip2.c, before compiling. -Otherwise the resulting binary won't work correctly. - -I haven't tried any of this stuff myself, but it all looks -plausible. - - - -
- - - - -Miscellanea - -These are just some random thoughts of mine. Your mileage -may vary. - - - -Limitations of the compressed file format - -bzip2-1.0.X, -0.9.5 and -0.9.0 use exactly the same file -format as the original version, -bzip2-0.1. This decision was -made in the interests of stability. Creating yet another -incompatible compressed file format would create further -confusion and disruption for users. - -Nevertheless, this is not a painless decision. Development -work since the release of -bzip2-0.1 in August 1997 has -shown complexities in the file format which slow down -decompression and, in retrospect, are unnecessary. These -are: - - - - The run-length encoder, which is the first of the - compression transformations, is entirely irrelevant. The - original purpose was to protect the sorting algorithm from the - very worst case input: a string of repeated symbols. But - algorithm steps Q6a and Q6b in the original Burrows-Wheeler - technical report (SRC-124) show how repeats can be handled - without difficulty in block sorting. - - The randomisation mechanism doesn't really need to be - there. Udi Manber and Gene Myers published a suffix array - construction algorithm a few years back, which can be employed - to sort any block, no matter how repetitive, in O(N log N) - time. Subsequent work by Kunihiko Sadakane has produced a - derivative O(N (log N)^2) algorithm which usually outperforms - the Manber-Myers algorithm. - - I could have changed to Sadakane's algorithm, but I find - it to be slower than bzip2's - existing algorithm for most inputs, and the randomisation - mechanism protects adequately against bad cases. I didn't - think it was a good tradeoff to make. Partly this is due to - the fact that I was not flooded with email complaints about - bzip2-0.1's performance on - repetitive data, so perhaps it isn't a problem for real - inputs. - - Probably the best long-term solution, and the one I have - incorporated into 0.9.5 and above, is to use the existing - sorting algorithm initially, and fall back to a O(N (log N)^2) - algorithm if the standard algorithm gets into - difficulties. - - The compressed file format was never designed to be - handled by a library, and I have had to jump though some hoops - to produce an efficient implementation of decompression. It's - a bit hairy. Try passing - decompress.c through the C - preprocessor and you'll see what I mean. Much of this - complexity could have been avoided if the compressed size of - each block of data was recorded in the data stream. - - An Adler-32 checksum, rather than a CRC32 checksum, - would be faster to compute. - - - -It would be fair to say that the -bzip2 format was frozen before I -properly and fully understood the performance consequences of -doing so. - -Improvements which I was able to incorporate into 0.9.0, -despite using the same file format, are: - - - - Single array implementation of the inverse BWT. This - significantly speeds up decompression, presumably because it - reduces the number of cache misses. - - Faster inverse MTF transform for large MTF values. - The new implementation is based on the notion of sliding blocks - of values. - - bzip2-0.9.0 now reads - and writes files with fread - and fwrite; version 0.1 used - putc and - getc. Duh! Well, you live - and learn. - - - -Further ahead, it would be nice to be able to do random -access into files. This will require some careful design of -compressed file formats. - - - - - -Portability issues - -After some consideration, I have decided not to use GNU -autoconf to configure 0.9.5 or -1.0. - -autoconf, admirable and -wonderful though it is, mainly assists with portability problems -between Unix-like platforms. But -bzip2 doesn't have much in the -way of portability problems on Unix; most of the difficulties -appear when porting to the Mac, or to Microsoft's operating -systems. autoconf doesn't help -in those cases, and brings in a whole load of new -complexity. - -Most people should be able to compile the library and -program under Unix straight out-of-the-box, so to speak, -especially if you have a version of GNU C available. - -There are a couple of -__inline__ directives in the -code. GNU C (gcc) should be -able to handle them. If you're not using GNU C, your C compiler -shouldn't see them at all. If your compiler does, for some -reason, see them and doesn't like them, just -#define -__inline__ to be -/* */. One easy way to do this -is to compile with the flag --D__inline__=, which should be -understood by most Unix compilers. - -If you still have difficulties, try compiling with the -macro BZ_STRICT_ANSI defined. -This should enable you to build the library in a strictly ANSI -compliant environment. Building the program itself like this is -dangerous and not supported, since you remove -bzip2's checks against -compressing directories, symbolic links, devices, and other -not-really-a-file entities. This could cause filesystem -corruption! - -One other thing: if you create a -bzip2 binary for public distribution, -please consider linking it statically (gcc --static). This avoids all sorts of library-version -issues that others may encounter later on. - -If you build bzip2 on -Win32, you must set BZ_UNIX to 0 -and BZ_LCCWIN32 to 1, in the -file bzip2.c, before compiling. -Otherwise the resulting binary won't work correctly. - - - - - -Reporting bugs - -I tried pretty hard to make sure -bzip2 is bug free, both by -design and by testing. Hopefully you'll never need to read this -section for real. - -Nevertheless, if bzip2 dies -with a segmentation fault, a bus error or an internal assertion -failure, it will ask you to email me a bug report. Experience from -years of feedback of bzip2 users indicates that almost all these -problems can be traced to either compiler bugs or hardware -problems. - - - - Recompile the program with no optimisation, and - see if it works. And/or try a different compiler. I heard all - sorts of stories about various flavours of GNU C (and other - compilers) generating bad code for - bzip2, and I've run across two - such examples myself. - - 2.7.X versions of GNU C are known to generate bad code - from time to time, at high optimisation levels. If you get - problems, try using the flags - -O2 - -fomit-frame-pointer - -fno-strength-reduce. You - should specifically not use - -funroll-loops. - - You may notice that the Makefile runs six tests as part - of the build process. If the program passes all of these, it's - a pretty good (but not 100%) indication that the compiler has - done its job correctly. - - If bzip2 - crashes randomly, and the crashes are not repeatable, you may - have a flaky memory subsystem. - bzip2 really hammers your - memory hierarchy, and if it's a bit marginal, you may get these - problems. Ditto if your disk or I/O subsystem is slowly - failing. Yup, this really does happen. - - Try using a different machine of the same type, and see - if you can repeat the problem. - - This isn't really a bug, but ... If - bzip2 tells you your file is - corrupted on decompression, and you obtained the file via FTP, - there is a possibility that you forgot to tell FTP to do a - binary mode transfer. That absolutely will cause the file to - be non-decompressible. You'll have to transfer it - again. - - - -If you've incorporated -libbzip2 into your own program -and are getting problems, please, please, please, check that the -parameters you are passing in calls to the library, are correct, -and in accordance with what the documentation says is allowable. -I have tried to make the library robust against such problems, -but I'm sure I haven't succeeded. - -Finally, if the above comments don't help, you'll have to -send me a bug report. Now, it's just amazing how many people -will send me a bug report saying something like: - - -bzip2 crashed with segmentation fault on my machine - - -and absolutely nothing else. Needless to say, a such a -report is totally, utterly, completely and -comprehensively 100% useless; a waste of your time, my time, and -net bandwidth. With no details at all, there's no way -I can possibly begin to figure out what the problem is. - -The rules of the game are: facts, facts, facts. Don't omit -them because "oh, they won't be relevant". At the bare -minimum: - - -Machine type. Operating system version. -Exact version of bzip2 (do bzip2 -V). -Exact version of the compiler used. -Flags passed to the compiler. - - -However, the most important single thing that will help me -is the file that you were trying to compress or decompress at the -time the problem happened. Without that, my ability to do -anything more than speculate about the cause, is limited. - - - - - -Did you get the right package? - -bzip2 is a resource hog. -It soaks up large amounts of CPU cycles and memory. Also, it -gives very large latencies. In the worst case, you can feed many -megabytes of uncompressed data into the library before getting -any compressed output, so this probably rules out applications -requiring interactive behaviour. - -These aren't faults of my implementation, I hope, but more -an intrinsic property of the Burrows-Wheeler transform -(unfortunately). Maybe this isn't what you want. - -If you want a compressor and/or library which is faster, -uses less memory but gets pretty good compression, and has -minimal latency, consider Jean-loup Gailly's and Mark Adler's -work, zlib-1.2.1 and -gzip-1.2.4. Look for them at -http://www.zlib.org and -http://www.gzip.org -respectively. - -For something faster and lighter still, you might try Markus F -X J Oberhumer's LZO real-time -compression/decompression library, at -http://www.oberhumer.com/opensource. - - - - - - -Further Reading - -bzip2 is not research -work, in the sense that it doesn't present any new ideas. -Rather, it's an engineering exercise based on existing -ideas. - -Four documents describe essentially all the ideas behind -bzip2: - -Michael Burrows and D. J. Wheeler: - "A block-sorting lossless data compression algorithm" - 10th May 1994. - Digital SRC Research Report 124. - ftp://ftp.digital.com/pub/DEC/SRC/research-reports/SRC-124.ps.gz - If you have trouble finding it, try searching at the - New Zealand Digital Library, http://www.nzdl.org. - -Daniel S. Hirschberg and Debra A. LeLewer - "Efficient Decoding of Prefix Codes" - Communications of the ACM, April 1990, Vol 33, Number 4. - You might be able to get an electronic copy of this - from the ACM Digital Library. - -David J. Wheeler - Program bred3.c and accompanying document bred3.ps. - This contains the idea behind the multi-table Huffman coding scheme. - ftp://ftp.cl.cam.ac.uk/users/djw3/ - -Jon L. Bentley and Robert Sedgewick - "Fast Algorithms for Sorting and Searching Strings" - Available from Sedgewick's web page, - www.cs.princeton.edu/~rs - - -The following paper gives valuable additional insights into -the algorithm, but is not immediately the basis of any code used -in bzip2. - -Peter Fenwick: - Block Sorting Text Compression - Proceedings of the 19th Australasian Computer Science Conference, - Melbourne, Australia. Jan 31 - Feb 2, 1996. - ftp://ftp.cs.auckland.ac.nz/pub/peter-f/ACSC96paper.ps - -Kunihiko Sadakane's sorting algorithm, mentioned above, is -available from: - -http://naomi.is.s.u-tokyo.ac.jp/~sada/papers/Sada98b.ps.gz - - -The Manber-Myers suffix array construction algorithm is -described in a paper available from: - -http://www.cs.arizona.edu/people/gene/PAPERS/suffix.ps - - -Finally, the following papers document some -investigations I made into the performance of sorting -and decompression algorithms: - -Julian Seward - On the Performance of BWT Sorting Algorithms - Proceedings of the IEEE Data Compression Conference 2000 - Snowbird, Utah. 28-30 March 2000. - -Julian Seward - Space-time Tradeoffs in the Inverse B-W Transform - Proceedings of the IEEE Data Compression Conference 2001 - Snowbird, Utah. 27-29 March 2001. - - - - - - -
diff --git a/plugins/updater/bzip2-1.0.3/mk251.c b/plugins/updater/bzip2-1.0.3/mk251.c deleted file mode 100644 index c9c36f6c48..0000000000 --- a/plugins/updater/bzip2-1.0.3/mk251.c +++ /dev/null @@ -1,31 +0,0 @@ - -/* Spew out a long sequence of the byte 251. When fed to bzip2 - versions 1.0.0 or 1.0.1, causes it to die with internal error - 1007 in blocksort.c. This assertion misses an extremely rare - case, which is fixed in this version (1.0.2) and above. -*/ - -/* ------------------------------------------------------------------ - This file is part of bzip2/libbzip2, a program and library for - lossless, block-sorting data compression. - - bzip2/libbzip2 version 1.0.6 of 6 September 2010 - Copyright (C) 1996-2010 Julian Seward - - Please read the WARNING, DISCLAIMER and PATENTS sections in the - README file. - - This program is released under the terms of the license contained - in the file LICENSE. - ------------------------------------------------------------------ */ - - -#include - -int main () -{ - int i; - for (i = 0; i < 48500000 ; i++) - putchar(251); - return 0; -} diff --git a/plugins/updater/bzip2-1.0.3/randtable.c b/plugins/updater/bzip2-1.0.3/randtable.c deleted file mode 100644 index 6d62459906..0000000000 --- a/plugins/updater/bzip2-1.0.3/randtable.c +++ /dev/null @@ -1,84 +0,0 @@ - -/*-------------------------------------------------------------*/ -/*--- Table for randomising repetitive blocks ---*/ -/*--- randtable.c ---*/ -/*-------------------------------------------------------------*/ - -/* ------------------------------------------------------------------ - This file is part of bzip2/libbzip2, a program and library for - lossless, block-sorting data compression. - - bzip2/libbzip2 version 1.0.6 of 6 September 2010 - Copyright (C) 1996-2010 Julian Seward - - Please read the WARNING, DISCLAIMER and PATENTS sections in the - README file. - - This program is released under the terms of the license contained - in the file LICENSE. - ------------------------------------------------------------------ */ - - -#include "bzlib_private.h" - - -/*---------------------------------------------*/ -Int32 BZ2_rNums[512] = { - 619, 720, 127, 481, 931, 816, 813, 233, 566, 247, - 985, 724, 205, 454, 863, 491, 741, 242, 949, 214, - 733, 859, 335, 708, 621, 574, 73, 654, 730, 472, - 419, 436, 278, 496, 867, 210, 399, 680, 480, 51, - 878, 465, 811, 169, 869, 675, 611, 697, 867, 561, - 862, 687, 507, 283, 482, 129, 807, 591, 733, 623, - 150, 238, 59, 379, 684, 877, 625, 169, 643, 105, - 170, 607, 520, 932, 727, 476, 693, 425, 174, 647, - 73, 122, 335, 530, 442, 853, 695, 249, 445, 515, - 909, 545, 703, 919, 874, 474, 882, 500, 594, 612, - 641, 801, 220, 162, 819, 984, 589, 513, 495, 799, - 161, 604, 958, 533, 221, 400, 386, 867, 600, 782, - 382, 596, 414, 171, 516, 375, 682, 485, 911, 276, - 98, 553, 163, 354, 666, 933, 424, 341, 533, 870, - 227, 730, 475, 186, 263, 647, 537, 686, 600, 224, - 469, 68, 770, 919, 190, 373, 294, 822, 808, 206, - 184, 943, 795, 384, 383, 461, 404, 758, 839, 887, - 715, 67, 618, 276, 204, 918, 873, 777, 604, 560, - 951, 160, 578, 722, 79, 804, 96, 409, 713, 940, - 652, 934, 970, 447, 318, 353, 859, 672, 112, 785, - 645, 863, 803, 350, 139, 93, 354, 99, 820, 908, - 609, 772, 154, 274, 580, 184, 79, 626, 630, 742, - 653, 282, 762, 623, 680, 81, 927, 626, 789, 125, - 411, 521, 938, 300, 821, 78, 343, 175, 128, 250, - 170, 774, 972, 275, 999, 639, 495, 78, 352, 126, - 857, 956, 358, 619, 580, 124, 737, 594, 701, 612, - 669, 112, 134, 694, 363, 992, 809, 743, 168, 974, - 944, 375, 748, 52, 600, 747, 642, 182, 862, 81, - 344, 805, 988, 739, 511, 655, 814, 334, 249, 515, - 897, 955, 664, 981, 649, 113, 974, 459, 893, 228, - 433, 837, 553, 268, 926, 240, 102, 654, 459, 51, - 686, 754, 806, 760, 493, 403, 415, 394, 687, 700, - 946, 670, 656, 610, 738, 392, 760, 799, 887, 653, - 978, 321, 576, 617, 626, 502, 894, 679, 243, 440, - 680, 879, 194, 572, 640, 724, 926, 56, 204, 700, - 707, 151, 457, 449, 797, 195, 791, 558, 945, 679, - 297, 59, 87, 824, 713, 663, 412, 693, 342, 606, - 134, 108, 571, 364, 631, 212, 174, 643, 304, 329, - 343, 97, 430, 751, 497, 314, 983, 374, 822, 928, - 140, 206, 73, 263, 980, 736, 876, 478, 430, 305, - 170, 514, 364, 692, 829, 82, 855, 953, 676, 246, - 369, 970, 294, 750, 807, 827, 150, 790, 288, 923, - 804, 378, 215, 828, 592, 281, 565, 555, 710, 82, - 896, 831, 547, 261, 524, 462, 293, 465, 502, 56, - 661, 821, 976, 991, 658, 869, 905, 758, 745, 193, - 768, 550, 608, 933, 378, 286, 215, 979, 792, 961, - 61, 688, 793, 644, 986, 403, 106, 366, 905, 644, - 372, 567, 466, 434, 645, 210, 389, 550, 919, 135, - 780, 773, 635, 389, 707, 100, 626, 958, 165, 504, - 920, 176, 193, 713, 857, 265, 203, 50, 668, 108, - 645, 990, 626, 197, 510, 357, 358, 850, 858, 364, - 936, 638 -}; - - -/*-------------------------------------------------------------*/ -/*--- end randtable.c ---*/ -/*-------------------------------------------------------------*/ diff --git a/plugins/updater/bzip2-1.0.3/sample1.bz2 b/plugins/updater/bzip2-1.0.3/sample1.bz2 deleted file mode 100644 index 18dea60043..0000000000 Binary files a/plugins/updater/bzip2-1.0.3/sample1.bz2 and /dev/null differ diff --git a/plugins/updater/bzip2-1.0.3/sample1.ref b/plugins/updater/bzip2-1.0.3/sample1.ref deleted file mode 100644 index a56e52b77f..0000000000 Binary files a/plugins/updater/bzip2-1.0.3/sample1.ref and /dev/null differ diff --git a/plugins/updater/bzip2-1.0.3/sample2.bz2 b/plugins/updater/bzip2-1.0.3/sample2.bz2 deleted file mode 100644 index d5a6160ba2..0000000000 Binary files a/plugins/updater/bzip2-1.0.3/sample2.bz2 and /dev/null differ diff --git a/plugins/updater/bzip2-1.0.3/sample2.ref b/plugins/updater/bzip2-1.0.3/sample2.ref deleted file mode 100644 index 34af95839a..0000000000 Binary files a/plugins/updater/bzip2-1.0.3/sample2.ref and /dev/null differ diff --git a/plugins/updater/bzip2-1.0.3/sample3.bz2 b/plugins/updater/bzip2-1.0.3/sample3.bz2 deleted file mode 100644 index d90cff9208..0000000000 Binary files a/plugins/updater/bzip2-1.0.3/sample3.bz2 and /dev/null differ diff --git a/plugins/updater/bzip2-1.0.3/sample3.ref b/plugins/updater/bzip2-1.0.3/sample3.ref deleted file mode 100644 index 775a2f68e2..0000000000 --- a/plugins/updater/bzip2-1.0.3/sample3.ref +++ /dev/null @@ -1,30007 +0,0 @@ -This file is exceedingly boring. If you find yourself -reading it, please (1) take it from me that you can safely -guess what the rest of the file says, and (2) seek professional -help. - -ps. there are no further sarcastic remarks in this file. - -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh -ugh diff --git a/plugins/updater/bzip2-1.0.3/spewG.c b/plugins/updater/bzip2-1.0.3/spewG.c deleted file mode 100644 index 14a364938d..0000000000 --- a/plugins/updater/bzip2-1.0.3/spewG.c +++ /dev/null @@ -1,54 +0,0 @@ - -/* spew out a thoroughly gigantic file designed so that bzip2 - can compress it reasonably rapidly. This is to help test - support for large files (> 2GB) in a reasonable amount of time. - I suggest you use the undocumented --exponential option to - bzip2 when compressing the resulting file; this saves a bit of - time. Note: *don't* bother with --exponential when compressing - Real Files; it'll just waste a lot of CPU time :-) - (but is otherwise harmless). -*/ - -/* ------------------------------------------------------------------ - This file is part of bzip2/libbzip2, a program and library for - lossless, block-sorting data compression. - - bzip2/libbzip2 version 1.0.6 of 6 September 2010 - Copyright (C) 1996-2010 Julian Seward - - Please read the WARNING, DISCLAIMER and PATENTS sections in the - README file. - - This program is released under the terms of the license contained - in the file LICENSE. - ------------------------------------------------------------------ */ - - -#define _FILE_OFFSET_BITS 64 - -#include -#include - -/* The number of megabytes of junk to spew out (roughly) */ -#define MEGABYTES 5000 - -#define N_BUF 1000000 -char buf[N_BUF]; - -int main ( int argc, char** argv ) -{ - int ii, kk, p; - srandom(1); - setbuffer ( stdout, buf, N_BUF ); - for (kk = 0; kk < MEGABYTES * 515; kk+=3) { - p = 25+random()%50; - for (ii = 0; ii < p; ii++) - printf ( "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" ); - for (ii = 0; ii < p-1; ii++) - printf ( "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" ); - for (ii = 0; ii < p+1; ii++) - printf ( "ccccccccccccccccccccccccccccccccccccc" ); - } - fflush(stdout); - return 0; -} diff --git a/plugins/updater/bzip2-1.0.3/unzcrash.c b/plugins/updater/bzip2-1.0.3/unzcrash.c deleted file mode 100644 index 7041da51c9..0000000000 --- a/plugins/updater/bzip2-1.0.3/unzcrash.c +++ /dev/null @@ -1,141 +0,0 @@ - -/* A test program written to test robustness to decompression of - corrupted data. Usage is - unzcrash filename - and the program will read the specified file, compress it (in memory), - and then repeatedly decompress it, each time with a different bit of - the compressed data inverted, so as to test all possible one-bit errors. - This should not cause any invalid memory accesses. If it does, - I want to know about it! - - PS. As you can see from the above description, the process is - incredibly slow. A file of size eg 5KB will cause it to run for - many hours. -*/ - -/* ------------------------------------------------------------------ - This file is part of bzip2/libbzip2, a program and library for - lossless, block-sorting data compression. - - bzip2/libbzip2 version 1.0.6 of 6 September 2010 - Copyright (C) 1996-2010 Julian Seward - - Please read the WARNING, DISCLAIMER and PATENTS sections in the - README file. - - This program is released under the terms of the license contained - in the file LICENSE. - ------------------------------------------------------------------ */ - - -#include -#include -#include "bzlib.h" - -#define M_BLOCK 1000000 - -typedef unsigned char uchar; - -#define M_BLOCK_OUT (M_BLOCK + 1000000) -uchar inbuf[M_BLOCK]; -uchar outbuf[M_BLOCK_OUT]; -uchar zbuf[M_BLOCK + 600 + (M_BLOCK / 100)]; - -int nIn, nOut, nZ; - -static char *bzerrorstrings[] = { - "OK" - ,"SEQUENCE_ERROR" - ,"PARAM_ERROR" - ,"MEM_ERROR" - ,"DATA_ERROR" - ,"DATA_ERROR_MAGIC" - ,"IO_ERROR" - ,"UNEXPECTED_EOF" - ,"OUTBUFF_FULL" - ,"???" /* for future */ - ,"???" /* for future */ - ,"???" /* for future */ - ,"???" /* for future */ - ,"???" /* for future */ - ,"???" /* for future */ -}; - -void flip_bit ( int bit ) -{ - int byteno = bit / 8; - int bitno = bit % 8; - uchar mask = 1 << bitno; - //fprintf ( stderr, "(byte %d bit %d mask %d)", - // byteno, bitno, (int)mask ); - zbuf[byteno] ^= mask; -} - -int main ( int argc, char** argv ) -{ - FILE* f; - int r; - int bit; - int i; - - if (argc != 2) { - fprintf ( stderr, "usage: unzcrash filename\n" ); - return 1; - } - - f = fopen ( argv[1], "r" ); - if (!f) { - fprintf ( stderr, "unzcrash: can't open %s\n", argv[1] ); - return 1; - } - - nIn = fread ( inbuf, 1, M_BLOCK, f ); - fprintf ( stderr, "%d bytes read\n", nIn ); - - nZ = M_BLOCK; - r = BZ2_bzBuffToBuffCompress ( - zbuf, &nZ, inbuf, nIn, 9, 0, 30 ); - - assert (r == BZ_OK); - fprintf ( stderr, "%d after compression\n", nZ ); - - for (bit = 0; bit < nZ*8; bit++) { - fprintf ( stderr, "bit %d ", bit ); - flip_bit ( bit ); - nOut = M_BLOCK_OUT; - r = BZ2_bzBuffToBuffDecompress ( - outbuf, &nOut, zbuf, nZ, 0, 0 ); - fprintf ( stderr, " %d %s ", r, bzerrorstrings[-r] ); - - if (r != BZ_OK) { - fprintf ( stderr, "\n" ); - } else { - if (nOut != nIn) { - fprintf(stderr, "nIn/nOut mismatch %d %d\n", nIn, nOut ); - return 1; - } else { - for (i = 0; i < nOut; i++) - if (inbuf[i] != outbuf[i]) { - fprintf(stderr, "mismatch at %d\n", i ); - return 1; - } - if (i == nOut) fprintf(stderr, "really ok!\n" ); - } - } - - flip_bit ( bit ); - } - -#if 0 - assert (nOut == nIn); - for (i = 0; i < nOut; i++) { - if (inbuf[i] != outbuf[i]) { - fprintf ( stderr, "difference at %d !\n", i ); - return 1; - } - } -#endif - - fprintf ( stderr, "all ok\n" ); - return 0; -} diff --git a/plugins/updater/bzip2-1.0.3/words0 b/plugins/updater/bzip2-1.0.3/words0 deleted file mode 100644 index fbf442ad6b..0000000000 --- a/plugins/updater/bzip2-1.0.3/words0 +++ /dev/null @@ -1,9 +0,0 @@ - -If compilation produces errors, or a large number of warnings, -please read README.COMPILATION.PROBLEMS -- you might be able to -adjust the flags in this Makefile to improve matters. - -Also in README.COMPILATION.PROBLEMS are some hints that may help -if your build produces an executable which is unable to correctly -handle so-called 'large files' -- files of size 2GB or more. - diff --git a/plugins/updater/bzip2-1.0.3/words1 b/plugins/updater/bzip2-1.0.3/words1 deleted file mode 100644 index 2e83de9f08..0000000000 --- a/plugins/updater/bzip2-1.0.3/words1 +++ /dev/null @@ -1,4 +0,0 @@ - -Doing 6 tests (3 compress, 3 uncompress) ... -If there's a problem, things might stop at this point. - diff --git a/plugins/updater/bzip2-1.0.3/words2 b/plugins/updater/bzip2-1.0.3/words2 deleted file mode 100644 index caddcf4226..0000000000 --- a/plugins/updater/bzip2-1.0.3/words2 +++ /dev/null @@ -1,5 +0,0 @@ - -Checking test results. If any of the four "cmp"s which follow -report any differences, something is wrong. If you can't easily -figure out what, please let me know (jseward@bzip.org). - diff --git a/plugins/updater/bzip2-1.0.3/words3 b/plugins/updater/bzip2-1.0.3/words3 deleted file mode 100644 index 6972669906..0000000000 --- a/plugins/updater/bzip2-1.0.3/words3 +++ /dev/null @@ -1,30 +0,0 @@ - -If you got this far and the 'cmp's didn't complain, it looks -like you're in business. - -To install in /usr/local/bin, /usr/local/lib, /usr/local/man and -/usr/local/include, type - - make install - -To install somewhere else, eg, /xxx/yyy/{bin,lib,man,include}, type - - make install PREFIX=/xxx/yyy - -If you are (justifiably) paranoid and want to see what 'make install' -is going to do, you can first do - - make -n install or - make -n install PREFIX=/xxx/yyy respectively. - -The -n instructs make to show the commands it would execute, but -not actually execute them. - -Instructions for use are in the preformatted manual page, in the file -bzip2.txt. For more detailed documentation, read the full manual. -It is available in Postscript form (manual.ps), PDF form (manual.pdf), -and HTML form (manual.html). - -You can also do "bzip2 --help" to see some helpful information. -"bzip2 -L" displays the software license. - diff --git a/plugins/updater/bzip2-1.0.3/xmlproc.sh b/plugins/updater/bzip2-1.0.3/xmlproc.sh deleted file mode 100644 index ca284ea9ed..0000000000 --- a/plugins/updater/bzip2-1.0.3/xmlproc.sh +++ /dev/null @@ -1,114 +0,0 @@ -#!/bin/bash -# see the README file for usage etc. -# -# ------------------------------------------------------------------ -# This file is part of bzip2/libbzip2, a program and library for -# lossless, block-sorting data compression. -# -# bzip2/libbzip2 version 1.0.6 of 6 September 2010 -# Copyright (C) 1996-2010 Julian Seward -# -# Please read the WARNING, DISCLAIMER and PATENTS sections in the -# README file. -# -# This program is released under the terms of the license contained -# in the file LICENSE. -# ---------------------------------------------------------------- - - -usage() { - echo ''; - echo 'Usage: xmlproc.sh -[option] '; - echo 'Specify a target from:'; - echo '-v verify xml file conforms to dtd'; - echo '-html output in html format (single file)'; - echo '-ps output in postscript format'; - echo '-pdf output in pdf format'; - exit; -} - -if test $# -ne 2; then - usage -fi -# assign the variable for the output type -action=$1; shift -# assign the output filename -xmlfile=$1; shift -# and check user input it correct -if !(test -f $xmlfile); then - echo "No such file: $xmlfile"; - exit; -fi -# some other stuff we will use -OUT=output -xsl_fo=bz-fo.xsl -xsl_html=bz-html.xsl - -basename=$xmlfile -basename=${basename//'.xml'/''} - -fofile="${basename}.fo" -htmlfile="${basename}.html" -pdffile="${basename}.pdf" -psfile="${basename}.ps" -xmlfmtfile="${basename}.fmt" - -# first process the xmlfile with CDATA tags -./format.pl $xmlfile $xmlfmtfile -# so the shell knows where the catalogs live -export XML_CATALOG_FILES=/etc/xml/catalog - -# post-processing tidy up -cleanup() { - echo "Cleaning up: $@" - while [ $# != 0 ] - do - arg=$1; shift; - echo " deleting $arg"; - rm $arg - done -} - -case $action in - -v) - flags='--noout --xinclude --noblanks --postvalid' - dtd='--dtdvalid http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd' - xmllint $flags $dtd $xmlfmtfile 2> $OUT - egrep 'error' $OUT - rm $OUT - ;; - - -html) - echo "Creating $htmlfile ..." - xsltproc --nonet --xinclude -o $htmlfile $xsl_html $xmlfmtfile - cleanup $xmlfmtfile - ;; - - -pdf) - echo "Creating $pdffile ..." - xsltproc --nonet --xinclude -o $fofile $xsl_fo $xmlfmtfile - pdfxmltex $fofile >$OUT $OUT $OUT $OUT $OUT $OUT $OUT $OUT $OUT next; - delete current; - } - - count = 0; - head = tail = 0; - reset(); -} - -int UpdateList::size() { - return count; -} - -void UpdateList::reset() { - it_current = head; -} - -void UpdateList::erase() { - if(it_current) { - if(head == it_current) head = head->next; - if(tail == it_current) tail = tail->prev; - - if(it_current->next) it_current->next->prev = it_current->prev; - if(it_current->prev) it_current->prev->next = it_current->next; - - delete it_current; - count--; - reset(); - } -} - -void UpdateList::next() { - if(it_current) it_current = (Node *)it_current->next; -} - -UpdateInternal *UpdateList::current() { - return (it_current ? &it_current->ui : 0); -} - -void UpdateList::push_back(UpdateInternal &update) { - if(tail) { - tail->next = new Node; - tail->next->prev = tail; - tail = tail->next; - } else { - head = tail = new Node; - } - tail->ui = update; - count++; -} - -UpdateInternal &UpdateList::back() { - return tail->ui; -} diff --git a/plugins/updater/common.h b/plugins/updater/common.h deleted file mode 100644 index b1a070f78e..0000000000 --- a/plugins/updater/common.h +++ /dev/null @@ -1,145 +0,0 @@ -#ifndef _COMMON_INC -#define _COMMON_INC - -#define _CRT_SECURE_NO_DEPRECATE - -#define MIRANDA_VER 0x0A00 - -#include - -#include -#include -#include - -#include -#include - -#include "ezxml.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "m_updater.h" -#include "m_trigger.h" -#include "m_folders.h" - -//#define TESTING // causes version to be 0.0.0.1 -//#define USE_MY_SERVER // uses URLS for scottellis.com.au test site for non-beta -#define REGISTER_BETA // register beta urls for beta site -//#define DEBUG_POPUPS // define to show some popups (restoring status, etc) -//#define _UD_LOGGING // define to log some stuff, from inside the external process, overwriting the data file -//#define DEBUG_HTTP_POPUPS // define to show popups re http -#define REGISTER_AUTO // get updater to automatically collect file listing URL's from backend xml data - -#define BETA_HOST_URL_PREFIX "http://www.scottellis.com.au/miranda_plugins" //(thanks Omniwolf for old twosx webspace, thx Koobs for hosting my domain) - -typedef enum Category {MC_PLUGINS, MC_LOCALIZATION, MC_UNKNOWN, NUM_CATEGORIES}; - -typedef struct UpdateOptions_tag { - bool enabled; // user has enabled updates for this plugin - bool use_beta; // use the beta update data - bool fixed; // use_beta flag is fixed - cannot be changed by user (e.g. szUpdateURL is null, szBetaUpdateURL is not) -} UpdateOptions; - -typedef struct UpdateInternal_tag { - Update update; - UpdateOptions update_options; - int file_id; // miranda file listing id - bool auto_register; - char *newVersion; - - Category cat; - - char *shortName; -} UpdateInternal; - -struct UpdateList : OBJLIST -{ - UpdateList() : OBJLIST(10) {} - UpdateList(const UpdateList& upd) : OBJLIST(10, compareUrl) - { - for (int i=0; iupdate.szBetaVersionURL && !p2->update.szBetaVersionURL) - return 0; - else if (!p1->update.szBetaVersionURL && p2->update.szBetaVersionURL) - return -1; - else if (p1->update.szBetaVersionURL && !p2->update.szBetaVersionURL) - return 1; - else - return _stricmp(p1->update.szBetaVersionURL, p2->update.szBetaVersionURL); - } -}; - -struct StrList : LIST -{ - StrList() : LIST(5) {} - ~StrList() - { - for (int i=0; i FilenameMap; - -#include "resource.h" - -#define MODULE "Updater" - -extern HINSTANCE hInst; -extern PLUGINLINK *pluginLink; -extern PLUGININFOEX pluginInfo; - -extern bool is_idle; - -extern HANDLE hNetlibUser, hNetlibHttp; - -int FindFileInList(const char *name); - -void* memmem (const void *buf1, size_t size1, const void *buf2, size_t size2); - -void NLog(char *msg); -void NLogF(const char *fmt, ...); - -#ifdef _UNICODE -void NLog(wchar_t *msg); -#endif - -// clist 'exit' menu item command id -#define ID_ICQ_EXIT 40001 - -// maximum number of redirects when getting xml data or download files via HTTP -#define MAX_REDIRECT_RECURSE 4 - -#ifndef MIID_UPDATER -#define MIID_UPDATER {0x4a47b19b, 0xde5a, 0x4436, { 0xab, 0x4b, 0xe1, 0xf3, 0xa0, 0x22, 0x5d, 0xe7}} -#endif - -#endif - - diff --git a/plugins/updater/conf_comp_dialog.cpp b/plugins/updater/conf_comp_dialog.cpp deleted file mode 100644 index b2ab25227a..0000000000 --- a/plugins/updater/conf_comp_dialog.cpp +++ /dev/null @@ -1,204 +0,0 @@ -#include "common.h" -#include "conf_comp_dialog.h" - -void FillFolder(TCHAR *folder_name, StrList *filenames) { - TCHAR filename[MAX_PATH], *p; - - mir_sntprintf(filename, SIZEOF(filename), _T("%s\\*.*"), folder_name); - p = _tcsrchr(filename, '\\' ) + 1; - - WIN32_FIND_DATA findData; - HANDLE hFileSearch = FindFirstFile(filename, &findData); - if (hFileSearch != INVALID_HANDLE_VALUE) - { - do { - _tcscpy(p, findData.cFileName); - - if (findData.cFileName[0] != '.') - { - if(findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { - FillFolder(filename, filenames); - } else { - filenames->insert(mir_tstrdup(filename)); - } - } - } while(FindNextFile(hFileSearch, &findData)); - FindClose(hFileSearch); - } -} - -INT_PTR CALLBACK DlgProcConfirmComponents(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { - switch ( msg ) { - case WM_INITDIALOG: - TranslateDialogDefault( hwndDlg ); - SetWindowLongPtr(hwndDlg, GWLP_USERDATA, 0); - SendMessage(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS),LVM_SETEXTENDEDLISTVIEWSTYLE, 0,LVS_EX_FULLROWSELECT | LVS_EX_CHECKBOXES); - - { - LVCOLUMN lvc; - // Initialize the LVCOLUMN structure. - // The mask specifies that the format, width, text, and - // subitem members of the structure are valid. - lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; - lvc.fmt = LVCFMT_LEFT; - - lvc.iSubItem = 0; - lvc.pszText = TranslateT("Component Name"); - lvc.cx = 180; // width of column in pixels - ListView_InsertColumn(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS), 0, &lvc); - - } - - //enumerate plugins, fill in list - { - StrList filenames; - - ListView_DeleteAllItems(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS)); - - LVITEM lvI; - - // Some code to create the list-view control. - // Initialize LVITEM members that are common to all - // items. - lvI.mask = LVIF_TEXT | LVIF_NORECOMPUTE;// | LVIF_IMAGE; - - - size_t temp_folder_name_len = _tcslen(options.temp_folder); - TCHAR *p; - - FillFolder(options.temp_folder, &filenames); - for (int i = 0; i < filenames.getCount(); ++i) - { - if(_tcslen(filenames[i]) > temp_folder_name_len) - { - p = filenames[i] + temp_folder_name_len + 1; - - lvI.iSubItem = 0; - lvI.pszText = p; - lvI.iItem = ListView_InsertItem(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS), &lvI); - - ListView_SetCheckState(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS), lvI.iItem, TRUE); - } - } - - // do this after filling list - enables 'ITEMCHANGED' below - SetWindowLongPtr(hwndDlg, GWLP_USERDATA, 1); - } - - Utils_RestoreWindowPositionNoSize(hwndDlg,0,MODULE,"ConfirmCompWindow"); - - return TRUE; - - case WM_NOTIFY: - if(((LPNMHDR) lParam)->hwndFrom == GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS)) { - switch (((LPNMHDR) lParam)->code) { - - case LVN_ITEMCHANGED: - if(GetWindowLongPtr(hwndDlg, GWLP_USERDATA)) { - NMLISTVIEW *nmlv = (NMLISTVIEW *)lParam; - - if((nmlv->uNewState ^ nmlv->uOldState) & LVIS_STATEIMAGEMASK) { - - int size = ListView_GetItemCount(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS)); - bool enableOk = false; - for(int i = 0; i < size; i++) { - if(ListView_GetCheckState(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS), i)) { - enableOk = true; - break; - } - } - HWND hwOk = GetDlgItem(hwndDlg, IDOK); - EnableWindow(hwOk, enableOk ? TRUE : FALSE); - } - } - break; - } - } - break; - case WM_COMMAND: - if ( HIWORD( wParam ) == BN_CLICKED ) { - switch( LOWORD( wParam )) { - case IDC_BTN_SELECTALL: - { - int size = ListView_GetItemCount(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS)); - bool enableOk = false; - for(int i = 0; i < size; i++) { - ListView_SetCheckState(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS), i, TRUE); - enableOk = true; - } - HWND hwOk = GetDlgItem(hwndDlg, IDOK); - EnableWindow(hwOk, enableOk ? TRUE : FALSE); - } - return TRUE; - case IDC_BTN_SELECTINV: - { - int size = ListView_GetItemCount(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS)); - bool enableOk = false, flag; - for(int i = 0; i < size; i++) { - flag = !ListView_GetCheckState(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS), i); - ListView_SetCheckState(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS), i, flag); - enableOk |= flag; - } - HWND hwOk = GetDlgItem(hwndDlg, IDOK); - EnableWindow(hwOk, enableOk ? TRUE : FALSE); - } - return TRUE; - case IDC_BTN_SELECTDLLS: - { - int size = ListView_GetItemCount(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS)); - TCHAR fname_buff[MAX_PATH]; - bool enableOk = false, flag; - for(int i = 0; i < size; i++) { - ListView_GetItemText(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS), i, 0, fname_buff, MAX_PATH); - flag = _tcsstr(fname_buff, _T(".dll")) != 0; - ListView_SetCheckState(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS), i, flag); - enableOk |= flag; - } - HWND hwOk = GetDlgItem(hwndDlg, IDOK); - EnableWindow(hwOk, enableOk ? TRUE : FALSE); - } - return TRUE; - case IDOK: - SetWindowLongPtr(hwndDlg, GWLP_USERDATA, 0); - Utils_SaveWindowPosition(hwndDlg,0,MODULE,"ConfirmCompWindow"); - - { - TCHAR fname_buff[MAX_PATH]; - _tcscpy(fname_buff, options.temp_folder); - _tcscat(fname_buff, _T("\\")); - int path_len = (int)_tcslen(fname_buff); - TCHAR *p = fname_buff + path_len; - - int size = ListView_GetItemCount(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS)); - //bool enableOk = false; - for(int i = 0; i < size; i++) { - if(!ListView_GetCheckState(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS), i)) { - // delete file - ListView_GetItemText(GetDlgItem(hwndDlg, IDC_LIST_COMPONENTS), i, 0, p, MAX_PATH - path_len); - DeleteFile(fname_buff); - - // attempt to remove parent folder, if any, in case it's now empty - TCHAR *last_slash = _tcsrchr(fname_buff, _T('\\')); - if(last_slash != p - 1) { - *last_slash = 0; - RemoveDirectory(fname_buff); - } - } - } - } - - EndDialog(hwndDlg, IDOK); - return TRUE; - case IDCANCEL: - SetWindowLongPtr(hwndDlg, GWLP_USERDATA, 0); - Utils_SaveWindowPosition(hwndDlg,0,MODULE,"ConfirmCompWindow"); - EndDialog(hwndDlg, IDCANCEL); - return TRUE; - } - } - break; - } - - return FALSE; - -} diff --git a/plugins/updater/conf_comp_dialog.h b/plugins/updater/conf_comp_dialog.h deleted file mode 100644 index 4567a6a6f0..0000000000 --- a/plugins/updater/conf_comp_dialog.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef _CONF_COMP_DIALOG_INC -#define _CONF_COMP_DIALOG_INC - -#include "options.h" - -INT_PTR CALLBACK DlgProcConfirmComponents(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); - -#endif diff --git a/plugins/updater/conf_dialog.cpp b/plugins/updater/conf_dialog.cpp deleted file mode 100644 index a284952230..0000000000 --- a/plugins/updater/conf_dialog.cpp +++ /dev/null @@ -1,289 +0,0 @@ -#include "common.h" -#include "conf_dialog.h" - -#ifndef BCM_SETSHIELD -#define BCM_SETSHIELD (0x1600 + 0x000C) -#endif - -INT_PTR CALLBACK DlgProcConfirm(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - HWND hwndList = GetDlgItem(hwndDlg, IDC_LIST_UPDATES); - - switch ( msg ) { - case WM_INITDIALOG: - TranslateDialogDefault( hwndDlg ); - SetWindowLongPtr(hwndDlg, GWLP_USERDATA, 0); - SendMessage(hwndList, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_FULLROWSELECT | LVS_EX_CHECKBOXES); - - if(options.save_zips && options.no_unzip) { - CheckDlgButton(hwndDlg, IDC_CHK_CONFALL, FALSE); - HWND hw = GetDlgItem(hwndDlg, IDC_CHK_CONFALL); - EnableWindow(hw, FALSE); - hw = GetDlgItem(hwndDlg, IDC_CHK_NOINSTALL); - EnableWindow(hw, FALSE); - CheckDlgButton(hwndDlg, IDC_CHK_NOINSTALL, TRUE); - SetWindowText(GetDlgItem(hwndDlg, IDOK), TranslateT("Download")); - } else { - if(DBGetContactSettingByte(0, "Updater", "DefaultConfAll", 0)) { - CheckDlgButton(hwndDlg, IDC_CHK_CONFALL, TRUE); - HWND hw = GetDlgItem(hwndDlg, IDC_CHK_NOINSTALL); - EnableWindow(hw, FALSE); - } else if(DBGetContactSettingByte(0, "Updater", "NoInstall", 0)) { - CheckDlgButton(hwndDlg, IDC_CHK_NOINSTALL, TRUE); - SetWindowText(GetDlgItem(hwndDlg, IDOK), TranslateT("Download")); - } - } - - { - LVCOLUMN lvc = {0}; - // Initialize the LVCOLUMN structure. - // The mask specifies that the format, width, text, and - // subitem members of the structure are valid. - lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; - lvc.fmt = LVCFMT_LEFT; - - lvc.iSubItem = 0; - lvc.pszText = TranslateT("Component Name"); - lvc.cx = 145; // width of column in pixels - ListView_InsertColumn(hwndList, 0, &lvc); - - lvc.iSubItem = 1; - lvc.pszText = TranslateT("New Version"); - lvc.cx = 80; // width of column in pixels - ListView_InsertColumn(hwndList, 1, &lvc); - - lvc.iSubItem = 2; - lvc.pszText = TranslateT("Current Version"); - lvc.cx = 90; // width of column in pixels - ListView_InsertColumn(hwndList, 2, &lvc); - - lvc.iSubItem = 3; - lvc.pszText = TranslateT("Beta"); - lvc.cx = 90; // width of column in pixels - ListView_InsertColumn(hwndList, 3, &lvc); - } - - //enumerate plugins, fill in list - { - bool one_enabled = false; - ListView_DeleteAllItems(hwndList); - - LVITEM lvI = {0}; - TCHAR *temp_str; - - // Some code to create the list-view control. - // Initialize LVITEM members that are common to all - // items. - lvI.mask = LVIF_TEXT | LVIF_PARAM | LVIF_NORECOMPUTE;// | LVIF_IMAGE; - - UpdateList &todo = *(UpdateList *)lParam; - for (int i = 0; i < todo.getCount(); ++i) - { - lvI.mask = LVIF_TEXT | LVIF_PARAM;// | LVIF_IMAGE; - lvI.iSubItem = 0; - lvI.lParam = (LPARAM)&todo[i]; - lvI.pszText = (temp_str = mir_a2t(todo[i].update.szComponentName)); - lvI.iItem = ListView_InsertItem(hwndList, &lvI); - mir_free(temp_str); - - lvI.mask = LVIF_TEXT;// | LVIF_IMAGE; - - lvI.iSubItem = 1; - //lvI.pszText = LPSTR_TEXTCALLBACK; //i->newVersion; - lvI.pszText = (temp_str = mir_a2t(((UpdateInternal *)lvI.lParam)->newVersion)); - ListView_SetItem(hwndList, &lvI); - mir_free(temp_str); - - lvI.iSubItem = 2; - //lvI.pszText = LPSTR_TEXTCALLBACK; //i->newVersion; - lvI.pszText = (temp_str = mir_a2t((char *)((UpdateInternal *)lvI.lParam)->update.pbVersion)); - ListView_SetItem(hwndList, &lvI); - mir_free(temp_str); - - lvI.iSubItem = 3; - lvI.pszText = ((UpdateInternal *)lvI.lParam)->update_options.use_beta ? - TranslateT("Yes") : TranslateT("No"); - ListView_SetItem(hwndList, &lvI); - - //MessageBox(0, todo[i].newVersion, - //"Version", MB_OK); - //todo[i].update.szComponentName, MB_OK); - - // remember whether the user has decided not to update this component with this particular new version - char stored_setting[256]; - mir_snprintf(stored_setting, 256, "DisabledVer%s", todo[i].update.szComponentName); - DBVARIANT dbv; - bool check = todo[i].update_options.enabled; - if (!DBGetContactSettingString(0, "Updater", stored_setting, &dbv)) { - if(dbv.pszVal && strcmp(dbv.pszVal, ((UpdateInternal *)lvI.lParam)->newVersion) == 0) - check = false; - else - DBDeleteContactSetting(0, "Updater", stored_setting); - DBFreeVariant(&dbv); - } - one_enabled |= check; - ListView_SetCheckState(hwndList, lvI.iItem, check); - } - - HWND hwOk = GetDlgItem(hwndDlg, IDOK); - EnableWindow(hwOk, one_enabled); - } - // do this after filling list - enables 'ITEMCHANGED' below - SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam); - - Utils_RestoreWindowPositionNoSize(hwndDlg, NULL, MODULE, "ConfirmWindow"); - if (IsAdminRequired()) - SendDlgItemMessage(hwndDlg, IDOK, BCM_SETSHIELD, 0, TRUE); - - return TRUE; - - case WM_NOTIFY: - if(((LPNMHDR) lParam)->hwndFrom == hwndList) { - switch (((LPNMHDR) lParam)->code) { - - case LVN_ITEMCHANGED: - if(GetWindowLongPtr(hwndDlg, GWLP_USERDATA)) { - NMLISTVIEW *nmlv = (NMLISTVIEW *)lParam; - - LVITEM lvI = {0}; - - lvI.iItem = nmlv->iItem; - lvI.iSubItem = 0; - lvI.mask = LVIF_PARAM; - ListView_GetItem(hwndList, &lvI); - - //if(IsWindowVisible(hwndList) && ((nmlv->uNewState ^ nmlv->uOldState) & LVIS_STATEIMAGEMASK)) { - if((nmlv->uNewState ^ nmlv->uOldState) & LVIS_STATEIMAGEMASK) { - ((UpdateInternal *)lvI.lParam)->update_options.enabled = ListView_GetCheckState(hwndList, nmlv->iItem) != 0; - - char stored_setting[256]; - mir_snprintf(stored_setting, 256, "DisabledVer%s", ((UpdateInternal *)lvI.lParam)->update.szComponentName); - - if(((UpdateInternal *)lvI.lParam)->update_options.enabled) - DBDeleteContactSetting(0, "Updater", stored_setting); // user has re-enabled update to this version - remove setting from db - else - DBWriteContactSettingString(0, "Updater", stored_setting, ((UpdateInternal *)lvI.lParam)->newVersion); - //ListView_SetItem(hwndList, &lvI); - - - UpdateList &todo = *(UpdateList *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); - bool enableOk = false; - for(int i=0; iuNewState & LVIS_SELECTED) { - if((!((UpdateInternal *)lvI.lParam)->update_options.use_beta && ((UpdateInternal *)lvI.lParam)->file_id != -1) - || (((UpdateInternal *)lvI.lParam)->update_options.use_beta && ((UpdateInternal *)lvI.lParam)->update.szBetaChangelogURL)) - { - EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_CHANGELOG), TRUE); - } else { - EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_CHANGELOG), FALSE); - } - } - } - break; - - case LVN_GETDISPINFO: - { - LVITEM lvi; - lvi.mask = LVIF_PARAM; - lvi.iItem = ((NMLVDISPINFO *)lParam)->item.iItem; - lvi.iSubItem = 0; - SendMessage(hwndList, LVM_GETITEM, 0, (LPARAM)&lvi); - UpdateInternal* u = (UpdateInternal *)lvi.lParam; - switch (((NMLVDISPINFO *)lParam)->item.iSubItem) { - case 0: - MessageBox(0, _T("LVN_GETDISPINFO (0)"), _T("msg"), MB_OK); - break; - case 1: - ((NMLVDISPINFO *)lParam)->item.pszText = Translate( u->newVersion ); - break; - case 2: - ((NMLVDISPINFO *)lParam)->item.pszText = Translate((char *)u->update.pbVersion); - break; - } - } - return 0; - } - - } - break; - - case WM_COMMAND: - if (HIWORD( wParam ) == BN_CLICKED) - { - switch(LOWORD(wParam)) - { - case IDC_BTN_CHANGELOG: - { - char url[256]; - int sel = ListView_GetSelectionMark(hwndList); - LVITEM lvI = {0}; - - lvI.iItem = sel; - lvI.iSubItem = 0; - lvI.mask = LVIF_PARAM; - ListView_GetItem(hwndList, &lvI); - - if(!((UpdateInternal *)lvI.lParam)->update_options.use_beta && ((UpdateInternal *)lvI.lParam)->file_id != -1) { - sprintf(url, MIM_CHANGELOG_URL_PREFIX "%d", ((UpdateInternal *)lvI.lParam)->file_id); - CallService(MS_UTILS_OPENURL, (WPARAM)TRUE, (LPARAM)url); - } else if(((UpdateInternal *)lvI.lParam)->update_options.use_beta && ((UpdateInternal *)lvI.lParam)->update.szBetaChangelogURL) { - CallService(MS_UTILS_OPENURL, TRUE, (LPARAM)((UpdateInternal *)lvI.lParam)->update.szBetaChangelogURL); - } - - } - return TRUE; - - case IDC_CHK_CONFALL: - { - HWND hw = GetDlgItem(hwndDlg, IDC_CHK_NOINSTALL); - EnableWindow(hw, !IsDlgButtonChecked(hwndDlg, IDC_CHK_CONFALL)); - } - return TRUE; - - case IDC_CHK_NOINSTALL: - { - HWND hw = GetDlgItem(hwndDlg, IDC_CHK_CONFALL); - EnableWindow(hw, !IsDlgButtonChecked(hwndDlg, IDC_CHK_NOINSTALL)); - - if(IsDlgButtonChecked(hwndDlg, IDC_CHK_NOINSTALL)) - SetWindowText(GetDlgItem(hwndDlg, IDOK), TranslateT("Download")); - else - SetWindowText(GetDlgItem(hwndDlg, IDOK), TranslateT("Update")); - } - return TRUE; - - case IDOK: - SetWindowLongPtr(hwndDlg, GWLP_USERDATA, 0); - Utils_SaveWindowPosition(hwndDlg, NULL, MODULE, "ConfirmWindow"); - DBWriteContactSettingByte(NULL, "Updater", "DefaultConfAll", IsDlgButtonChecked(hwndDlg, IDC_CHK_CONFALL) ? 1 : 0); - DBWriteContactSettingByte(NULL, "Updater", "NoInstall", IsDlgButtonChecked(hwndDlg, IDC_CHK_NOINSTALL) ? 1 : 0); - - if(IsDlgButtonChecked(hwndDlg, IDC_CHK_CONFALL)) - EndDialog(hwndDlg, CD_CONFALL); - else if(IsDlgButtonChecked(hwndDlg, IDC_CHK_NOINSTALL)) - EndDialog(hwndDlg, CD_NOINSTALL); - else - EndDialog(hwndDlg, CD_OK); - return TRUE; - - case IDCANCEL: - SetWindowLongPtr(hwndDlg, GWLP_USERDATA, 0); - Utils_SaveWindowPosition(hwndDlg, NULL, MODULE, "ConfirmWindow"); - EndDialog(hwndDlg, CD_CANCEL); - return TRUE; - } - } - break; - } - - return FALSE; -} - diff --git a/plugins/updater/conf_dialog.h b/plugins/updater/conf_dialog.h deleted file mode 100644 index 4304089555..0000000000 --- a/plugins/updater/conf_dialog.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef _CONF_DIALOG_INC -#define _CONF_DIALOG_INC - -#include "utils.h" - -// return values -#define CD_CANCEL 1 -#define CD_NOINSTALL 2 -#define CD_CONFALL 3 -#define CD_OK 4 - -INT_PTR CALLBACK DlgProcConfirm(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); - -#endif diff --git a/plugins/updater/extern.cpp b/plugins/updater/extern.cpp deleted file mode 100644 index d33e0c2132..0000000000 --- a/plugins/updater/extern.cpp +++ /dev/null @@ -1,524 +0,0 @@ -#include "common.h" -#include "extern.h" - -// write data needed by the external process, and restart miranda -// returns 1 if any error, 0 if shutdown is imminent -int ExternProcess(bool restart) -{ - //HWND hWndMiranda = (HWND)CallService(MS_CLUI_GETHWND, 0, 0); - - // spawn a process that will: - // -- wait for miranda to exit - // -- move downloaded plugins from the temp folder to the Plugins folder, possibly backing up old ones - // -- restart miranda - - char msg[1024]; - mir_snprintf(msg, SIZEOF(msg), "spawning external process, restart = %s", restart ? "true" : "false"); - NLog(msg); - - TCHAR data_filename[MAX_PATH]; - mir_sntprintf(data_filename, SIZEOF(data_filename), _T("%s\\ud_data.txt"), options.data_folder); - - // write data to file for external process to use - HANDLE hDatFile = CreateFile(data_filename, GENERIC_WRITE, FILE_SHARE_WRITE, 0, CREATE_ALWAYS, 0, 0); - if (hDatFile == INVALID_HANDLE_VALUE) - { - //MessageBox(0, TranslateT("Could not create data file for restart."), TranslateT("Error"), MB_OK | MB_ICONERROR); - ShowError(TranslateT("Could not create data file for restart")); - return 1; - } - - TCHAR db_pathT[MAX_PATH]; - - if (CallService(MS_SYSTEM_GETVERSION, 0, 0) >= PLUGIN_MAKE_VERSION(0,9,0,12)) - { - TCHAR *p = Utils_ReplaceVarsT(_T("%miranda_profile%\\%miranda_profilename%\\%miranda_profilename%.dat")); - mir_sntprintf(db_pathT, SIZEOF(db_pathT), _T("%s"), p); - mir_free(p); - } - else - { - char db_name[100], db_path[MAX_PATH]; - - // Get Miranda exe path and profile - CallService(MS_DB_GETPROFILENAME, SIZEOF(db_name), (WPARAM)db_name); - CallService(MS_DB_GETPROFILEPATH, SIZEOF(db_path), (WPARAM)db_path); - - TCHAR *t1, *t2; - mir_sntprintf(db_pathT, SIZEOF(db_pathT), _T("%s\\%s"), (t1=mir_a2t(db_path)), (t2=mir_a2t(db_name))); - mir_free(t1); mir_free(t2); - } - - // get plugin folder - TCHAR* plugins_folder = Utils_ReplaceVarsT(_T("%miranda_path%\\Plugins")); - - TCHAR mir_exe[MAX_PATH]; - GetModuleFileName(NULL, mir_exe, SIZEOF(mir_exe)); - - unsigned long bytes_written; - static const TCHAR tnl[] = _T("\r\n"); - - WriteFile(hDatFile, mir_exe, (unsigned)_tcslen(mir_exe) * sizeof(TCHAR), &bytes_written, FALSE); - WriteFile(hDatFile, tnl, 2 * sizeof(TCHAR), &bytes_written, FALSE); - WriteFile(hDatFile, plugins_folder, (unsigned)_tcslen(plugins_folder) * sizeof(TCHAR), &bytes_written, FALSE); - WriteFile(hDatFile, tnl, 2 * sizeof(TCHAR), &bytes_written, FALSE); - WriteFile(hDatFile, db_pathT, (unsigned)_tcslen(db_pathT) * sizeof(TCHAR), &bytes_written, FALSE); - WriteFile(hDatFile, tnl, 2 * sizeof(TCHAR), &bytes_written, FALSE); - WriteFile(hDatFile, options.temp_folder, (unsigned)_tcslen(options.temp_folder) * sizeof(TCHAR), &bytes_written, FALSE); - WriteFile(hDatFile, tnl, 2 * sizeof(TCHAR), &bytes_written, FALSE); - if(options.backup) - WriteFile(hDatFile, options.backup_folder, (unsigned)_tcslen(options.backup_folder) * sizeof(TCHAR), &bytes_written, FALSE); - else - WriteFile(hDatFile, _T("no backups"),(unsigned) _tcslen(_T("no backups")) * sizeof(TCHAR), &bytes_written, FALSE); - WriteFile(hDatFile, tnl, 2 * sizeof(TCHAR), &bytes_written, FALSE); - - TCHAR buf[64]; - mir_sntprintf(buf, SIZEOF(buf), _T("%d"), (unsigned int)GetCurrentProcessId()); - //MessageBox(0, buf, "Writing process id", MB_OK); - WriteFile(hDatFile, buf, (unsigned)_tcslen(buf) * sizeof(TCHAR), &bytes_written, FALSE); - WriteFile(hDatFile, tnl, 2 * sizeof(TCHAR), &bytes_written, FALSE); - - mir_sntprintf(buf, SIZEOF(buf), restart ? _T("restart") : _T("no_restart")); - WriteFile(hDatFile, buf, (unsigned)_tcslen(buf) * sizeof(TCHAR), &bytes_written, FALSE); - WriteFile(hDatFile, tnl, 2 * sizeof(TCHAR), &bytes_written, FALSE); - - CloseHandle(hDatFile); - - mir_free(plugins_folder); - - /* - if(!CallService(MS_SYSTEM_OKTOEXIT,0,0)) { - DeleteFile(data_filename); - MessageBox(0, TranslateT("Miranda's not 'OK TO EXIT'."), TranslateT("Error"), MB_OK | MB_ICONERROR); - return; - } - */ - - TCHAR szParams[MAX_PATH], szBuf[MAX_PATH], szProcDir[MAX_PATH]; - - // try to fire up external process from new dll (if present), so we can overwrite the old one - mir_sntprintf(szBuf, SIZEOF(szBuf), _T("%s\\plugins\\updater.dll"), options.temp_folder); - if (_taccess(szBuf, 0)) - { - mir_sntprintf(szBuf, SIZEOF(szBuf), _T("%s\\updater.dll"), options.temp_folder); - if (_taccess(szBuf, 0)) - { - GetModuleFileName(hInst, szBuf, MAX_PATH); - } - } - - GetRootDir(szProcDir); _tcscat(szProcDir, _T("\\")); - - if (IsWinVerXPPlus()) - { - mir_sntprintf(szParams, SIZEOF(szParams), _T("RUNDLL32.EXE \"%s\",ExternalUpdate %s"), szBuf, data_filename); - } - else - { - TCHAR* p = _tcsrchr(szBuf, _T('\\')); if (p) *p = 0; - - // rundll32 hates spaces in the arg, but quotes aren't allowed in earlier versions... - // GetShortPath can return paths with spaces (at least on XP with 8.3 filenames disabled)... - // so we must 'CreateProcess' with the updater.dll location as the startup directory and pass only updater.dll as the arg - - mir_sntprintf(szParams, SIZEOF(szParams), _T("RUNDLL32.EXE .\\plugins\\updater.dll,ExternalUpdate %s"), data_filename); - } - - BOOL res; - - if (IsAdminRequired()) - { - SHELLEXECUTEINFO info = {0}; - info.cbSize = sizeof(info); - - TCHAR *p = _tcschr(szParams, ' '); if (p) *(p++) = 0; - - info.lpVerb = _T("runas"); - info.lpFile = szParams; - info.lpParameters = p; - info.lpDirectory = szProcDir; - info.nShow = SW_HIDE; - - res = ShellExecuteEx(&info); - info.cbSize = sizeof(info); - - } - else - { - PROCESS_INFORMATION pi = {0}; - STARTUPINFO si = {0}; - si.cb = sizeof(si); - - res = CreateProcess(0, szParams, 0, 0, 0, - CREATE_NO_WINDOW | DETACHED_PROCESS | NORMAL_PRIORITY_CLASS, - 0, szProcDir, &si, &pi); - - if (res) - { - CloseHandle(pi.hThread); - CloseHandle(pi.hProcess); - } - } - - if (res) - { - PostMessage((HWND)CallService(MS_CLUI_GETHWND, 0, 0), WM_COMMAND, ID_ICQ_EXIT, 0); - } - else - { - TCHAR msg[256]; - mir_sntprintf(msg, SIZEOF(msg), _T("Error code: %d"), GetLastError()); - MessageBox(0, msg, TranslateT("CreateProcess"), MB_OK | MB_ICONERROR); - } - - return !res; -} - -#ifdef _UD_LOGGING -void mWriteFile(HANDLE hFile, char *line) { - unsigned long bytes_written; - const char *nl = "\r\n"; - - WriteFile(hFile, line, (unsigned)strlen(line), &bytes_written, FALSE); - WriteFile(hFile, nl, 2, &bytes_written, FALSE); -} - -void mWriteFile(HANDLE hFile, wchar_t *line) { - unsigned long bytes_written; - const char *nl = "\r\n"; - - char buf[267]; - WideCharToMultiByte(CP_ACP, 0, line, -1, buf, SIZEOF(buf), NULL, NULL); - - WriteFile(hFile, buf, (unsigned)strlen(buf), &bytes_written, FALSE); - WriteFile(hFile, nl, 2, &bytes_written, FALSE); -} -#endif - -// move all files in src_folder to dst_folder - put replaced files in backup folder -// if a file in src_folder is a directory, copy it's contents to the same dir in the root folder and -// set that dir as the new root (so that dirs in dirs go in the right place) -void MoveFiles(HANDLE hLogFile, TCHAR *src_folder, TCHAR *dst_folder, TCHAR *backup_folder, TCHAR *root_folder) -{ - // move files from src_folder to dst_folder - - if(!src_folder || _tcslen(src_folder) == 0) { - MessageBox(0, _T("Your 'temporary files' folder is set to NULL. Install aborted."), _T("Updater Error"), MB_OK | MB_ICONERROR); - return; - } - - TCHAR szFilesPath[MAX_PATH], szOldFileName[MAX_PATH], szNewFileName[MAX_PATH], szBackupFileName[MAX_PATH]; - - bool do_backups = backup_folder ? (_tcscmp(backup_folder, _T("no backups")) != 0) : false; - - // ensure the destination folder exists - if (!CreatePath(dst_folder)) - return; - - _sntprintf(szFilesPath, SIZEOF(szFilesPath), _T("%s\\*.*"), src_folder); - szFilesPath[SIZEOF(szFilesPath) - 1] = 0; - - bool move_file; - - WIN32_FIND_DATA findData; - HANDLE hFileSearch = FindFirstFile(szFilesPath, &findData); - if (hFileSearch != INVALID_HANDLE_VALUE) - { - do - { - if (findData.cFileName[0] != '.') - { - - _sntprintf(szOldFileName, SIZEOF(szOldFileName), _T("%s\\%s"), src_folder, findData.cFileName); - szOldFileName[SIZEOF(szOldFileName) - 1] = 0; - - if(findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) - { - // use szNewFileName as destination and new root folder - if (_tcslen(findData.cFileName) < SIZEOF(ROOT_FILES_FOLDER) - 1 || _tcsicmp(findData.cFileName, ROOT_FILES_FOLDER)) - { - _sntprintf(szNewFileName, SIZEOF(szNewFileName), _T("%s\\%s"), root_folder, findData.cFileName); - szNewFileName[SIZEOF(szNewFileName) - 1] = 0; - } - else - _tcscpy(szNewFileName, root_folder); - - // recurse - MoveFiles(hLogFile, szOldFileName, szNewFileName, backup_folder, szNewFileName); - - } - else - { - // exception for langpack files - move to root_folder - // exception for dbtool.exe (e.g. translated) - move to root_folder - if((_tcsnicmp(findData.cFileName, _T("dbtool.exe"), _tcslen(_T("dbtool.exe"))) == 0) - || (_tcsnicmp(findData.cFileName, _T("langpack_"), _tcslen(_T("langpack_"))) == 0)) - { - _sntprintf(szNewFileName, SIZEOF(szNewFileName), _T("%s\\%s"), root_folder, findData.cFileName); - szNewFileName[SIZEOF(szNewFileName) - 1] = 0; - } - else - { - _sntprintf(szNewFileName, SIZEOF(szNewFileName), _T("%s\\%s"), dst_folder, findData.cFileName); - szNewFileName[SIZEOF(szNewFileName) - 1] = 0; - } - - move_file = false; - if (do_backups) - { - _sntprintf(szBackupFileName, SIZEOF(szBackupFileName), _T("%s\\%s"), backup_folder, findData.cFileName); - szBackupFileName[SIZEOF(szBackupFileName) - 1] = 0; - - move_file = true; - DeleteFile(szBackupFileName); - if(!MoveFile(szNewFileName, szBackupFileName)) - { - // MessageBox(0, szNewFileName, __T("Could not backup!"), MB_OK | MB_ICONWARNING); - } - } - else - { - move_file = true; - if (!DeleteFile(szNewFileName)) - { - // MessageBox(0, szNewFileName, _T("Could not delete!"), MB_OK | MB_ICONWARNING); - } - } - - if (move_file) - { - if (!MoveFile(szOldFileName, szNewFileName)) - { - //MessageBox(0, szOldFileName, _T("Could not move!"), MB_OK | MB_ICONWARNING); - - // try a copy - possibly win98 etc. will not move the updater.dll when it is being used by this process - CopyFile(szOldFileName, szNewFileName, FALSE); - DeleteFile(szOldFileName); // docs say it is marked for delete and actually removed when the last handle is closed...hmm - } - } - else - DeleteFile(szOldFileName); - } - } - } - while(FindNextFile(hFileSearch, &findData)); - FindClose(hFileSearch); - } - - RemoveDirectory(src_folder); -} - -bool ReadTLine(HANDLE hDatFile, TCHAR *line, int bsize, int &offset) { - unsigned long bytes_read; - BOOL bResult; - while((bResult = ReadFile(hDatFile, line + offset, sizeof(TCHAR), &bytes_read, 0)) && offset < bsize && bytes_read == sizeof(TCHAR) && line[offset] && (line[offset] != _T('\n') || (offset > 0 && line[offset - 1] != _T('\r')))) offset++; - -#ifndef _UNICODE - if(offset == 1 && line[1] == 0) { - wchar_t wline[MAX_PATH]; - wline[0] = *(wchar_t *)line; - - while((bResult = ReadFile(hDatFile, wline + offset, sizeof(wchar_t), &bytes_read, 0)) && offset < bsize && bytes_read == sizeof(wchar_t) && wline[offset] && (wline[offset] != L'\n' || (offset > 0 && wline[offset - 1] != L'\r'))) offset++; - if(offset > 0) wline[offset - 1] = 0; // cut off /r/n - - WideCharToMultiByte(CP_ACP, 0, wline, -1, line, bsize, 0, 0); - } -#endif - if(offset > 0) line[offset - 1] = 0; // cut off /r/n - return true; -} - -void CALLBACK ExternalUpdate(HWND hwnd, HINSTANCE hInstance, LPSTR lpszCmdLine, int nCmdShow) -{ - //MessageBox(0, _T("ExternalUpdate"), _T("Updater"), MB_OK); - HANDLE hDatFile = CreateFileA(lpszCmdLine, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0); - if(hDatFile == INVALID_HANDLE_VALUE) { - char msg[1024]; - _snprintf(msg, SIZEOF(msg), "Could not read data file:\n%s", lpszCmdLine); - MessageBoxA(0, msg, "Updater Error", MB_OK | MB_ICONERROR); - } else { - - TCHAR *mir_exe = (TCHAR *)malloc(MAX_PATH * sizeof(TCHAR)), - *plugins_folder = (TCHAR *)malloc(MAX_PATH * sizeof(TCHAR)), - *temp_folder = (TCHAR *)malloc(MAX_PATH * sizeof(TCHAR)), - *backup_folder = (TCHAR *)malloc(MAX_PATH * sizeof(TCHAR)), - *root_folder = (TCHAR *)malloc(MAX_PATH * sizeof(TCHAR)), - *db_path = (TCHAR *)malloc(MAX_PATH * sizeof(TCHAR)), - *pid = (TCHAR *)malloc(64 * sizeof(TCHAR)); - - bool restart = true; - - { - int i = 0, offset; - TCHAR line[MAX_PATH]; - BOOL bResult = TRUE; - do { - offset = 0; - ReadTLine(hDatFile, line, MAX_PATH, offset); - - switch(i) { - case 0: _tcsncpy(mir_exe, line, MAX_PATH); break; - case 1: _tcsncpy(plugins_folder, line, MAX_PATH); break; - case 2: _tcsncpy(db_path, line, MAX_PATH); break; - case 3: _tcsncpy(temp_folder, line, MAX_PATH); break; - case 4: _tcsncpy(backup_folder, line, MAX_PATH); break; - case 5: _tcsncpy(pid, line, 64); break; - case 6: - restart = (_tcsncmp(line, _T("restart"), 7) == 0); - offset = 0; // end loop - break; - default: - offset = 0; // end loop - } - i++; - } while(offset > 0); - } - CloseHandle(hDatFile); -// use data file to log to -#ifndef _UD_LOGGING - DeleteFileA(lpszCmdLine); -#else - HANDLE hDatFile = CreateFileA(lpszCmdLine, GENERIC_WRITE, FILE_SHARE_WRITE, 0, CREATE_ALWAYS, 0, 0); -#endif - -#ifdef _UD_LOGGING - mWriteFile(hDatFile, "Inside external process..."); -#endif - - _tcscpy(root_folder, mir_exe); - TCHAR *p = _tcsrchr(root_folder, _T('\\')); if (p) *p = 0; - - // ensure miranda has exited - DWORD mpi = (DWORD)_ttol(pid); - - bool exited = false; - -#ifdef _UD_LOGGING - char logmsg[1024]; - sprintf(logmsg, "Opening process #%d...", mpi); - mWriteFile(hDatFile, logmsg); -#endif - - HANDLE hMiranda = OpenProcess(SYNCHRONIZE | PROCESS_TERMINATE, FALSE, mpi); - if(hMiranda) { - int mbFlags, idRetry, idCancel, idContinue; - const int MAX_SIZE = 2048; - TCHAR message[MAX_SIZE]; - int exitStatus; - - OSVERSIONINFO vi = {0}; - vi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - GetVersionEx(&vi); - _tcsncpy(message, _T("Miranda did not exit - cannot install or restart.\n"), MAX_SIZE); - - if (vi.dwMajorVersion = 5) { - //windows 2000+ - mbFlags = 0x00000006L; //MB_CANCELTRYCONTINUE; - idRetry = 10; //IDTRYAGAIN - idCancel = IDCANCEL; - idContinue = 11; //IDCONTINUE - _tcsncat(message, _T("Press 'Try again' to check Miranda's status again, press 'Continue' to kill the process or press 'Cancel' to abort."), MAX_SIZE); - } else { - //windows 98, me - mbFlags = MB_ABORTRETRYIGNORE; - idRetry = IDRETRY; - idCancel = IDCANCEL; - idContinue = IDIGNORE; - _tcsncat(message, _T("Press 'Retry' to check Miranda's status again, press 'Ignore' to kill the process or press 'Abort' to abort."), MAX_SIZE); - } - - while ((exitStatus = WaitForSingleObjectEx(hMiranda, 20 * 1000, FALSE)) == WAIT_TIMEOUT) { - int res = MessageBox(0, message, _T("Updater Error"), mbFlags | MB_ICONERROR); - - if (res == idContinue) { - //if the user chooses Continue then kill the application - TerminateProcess(hMiranda, 1); - if((exitStatus = WaitForSingleObjectEx(hMiranda, 5 * 1000, FALSE)) == WAIT_TIMEOUT) { - //hMiranda = OpenProcess(SYNCHRONIZE, FALSE, mpi); - //if(hMiranda) { - //CloseHandle(hMiranda); - MessageBox(0, _T("It seems Miranda is still running. Aborting update."), _T("Updater Error"), MB_OK | MB_ICONERROR); - } else { -#ifdef _UD_LOGGING - mWriteFile(hDatFile, "Wait for miranda processs to 'Terminate' interrupted - assuming it exited"); -#endif - } - } else { - if (res == idRetry) { - //if the user selected 'Try again' then wait a bit more. - continue; //wait again - } - } - - break; //don't update anymore (happens when user choses 'Continue' or 'Cacel' - } -#ifdef _UD_LOGGING - mWriteFile(hDatFile, "Wait for miranda processs interrupted - assuming it exited"); -#endif - exited = (exitStatus != WAIT_TIMEOUT); - CloseHandle(hMiranda); - } else { -#ifdef _UD_LOGGING - mWriteFile(hDatFile, "Could not open miranda processs - assuming it exited"); -#endif - //MessageBox(0, "Could not open Miranda process", "Update Error", MB_OK | MB_ICONERROR); - exited = true; - } - - if(exited) { -#ifdef _UD_LOGGING - mWriteFile(hDatFile, "Miranda exited - moving files"); - MoveFiles(hDatFile, temp_folder, plugins_folder, backup_folder, root_folder); -#else - MoveFiles(0, temp_folder, plugins_folder, backup_folder, root_folder); - RemoveDirectory(temp_folder); -#endif - // move files - - // restart miranda - if(restart) { -#ifdef _UD_LOGGING - mWriteFile(hDatFile, "Restarting"); -#endif - TCHAR szArgs[MAX_PATH]; - //wsprintf(szArgs, "\"%s\" \"%s\"", db_path, db_name); - _sntprintf(szArgs, SIZEOF(szArgs), _T("\"%s\" \"%s\""), mir_exe, db_path); // includes name, dummy instead of executable? - //wsprintf(szArgs, "\"%s\"", db_name); - - - PROCESS_INFORMATION pi = {0}; - STARTUPINFO si = {0}; - si.cb = sizeof(si); - - if (!CreateProcess(mir_exe, szArgs, 0, 0, 0, DETACHED_PROCESS | NORMAL_PRIORITY_CLASS, 0, 0, &si, &pi)) - { - MessageBox(0, _T("Failed to restart Miranda"), _T("Updater Error"), MB_OK | MB_ICONERROR); - //MessageBox(0, szArgs, mir_exe, MB_OK); - } - else - { - CloseHandle(pi.hThread); - CloseHandle(pi.hProcess); - } - //ShellExecute(0, 0, mir_exe, szArgs, 0, SW_NORMAL); - } - } -#ifdef _UD_LOGGING - else mWriteFile(hDatFile, "Miranda did not exit"); -#endif - - free(pid); - free(db_path); - free(root_folder); - free(backup_folder); - free(temp_folder); - free(plugins_folder); - free(mir_exe); - -#ifdef _UD_LOGGING - CloseHandle(hDatFile); -#endif - } - - FreeLibraryAndExitThread(hInstance, TRUE); -} diff --git a/plugins/updater/extern.h b/plugins/updater/extern.h deleted file mode 100644 index c6091f4dfa..0000000000 --- a/plugins/updater/extern.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef _EXTERN_INC -#define _EXTERN_INC - -#include "options.h" - - -#define ROOT_FILES_FOLDER _T("root_files") - -// returns 1 if any error, 0 if shutdown is imminent -int ExternProcess(bool restart); - -// move all files in src_folder to backup_folder - put replaced files in backup folder -// if a file in src_folder is a directory, copy it's contents to the same dir in the root folder and -// set that dir as the new root (so that dirs in dirs go in the right place) -void MoveFiles(HANDLE hLogFile, TCHAR *src_folder, TCHAR *dst_folder, TCHAR *backup_folder, TCHAR *root_folder); - - -void CALLBACK ExternalUpdate(HWND hwnd, HINSTANCE hInstance, LPSTR lpszCmdLine, int nCmdShow); - -#endif diff --git a/plugins/updater/ezxml.c b/plugins/updater/ezxml.c deleted file mode 100644 index a88e22769d..0000000000 --- a/plugins/updater/ezxml.c +++ /dev/null @@ -1,967 +0,0 @@ -/* ezxml.c - * - * Copyright 2004-2006 Aaron Voisine - * - * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#if defined(_DEBUG) && !defined(__GNUC__) - #define _CRTDBG_MAP_ALLOC - #include - #include -#else - #include -#endif - -#include -#include -#include -#include -#include - -#include "ezxml.h" - -#ifndef SIZE_MAX -#define SIZE_MAX UINT_MAX -#endif - -#define EZXML_WS "\t\r\n " // whitespace -#define EZXML_ERRL 128 // maximum error string length - -typedef struct ezxml_root *ezxml_root_t; -struct ezxml_root { // additional data for the root tag - struct ezxml xml; // is a super-struct built on top of ezxml struct - ezxml_t cur; // current xml tree insertion point - char *m; // original xml string - size_t len; // length of allocated memory for mmap, -1 for malloc - char *u; // UTF-8 conversion of string if original was UTF-16 - char *s; // start of work area - char *e; // end of work area - char **ent; // general entities (ampersand sequences) - char ***attr; // default attributes - char ***pi; // processing instructions - short standalone; // non-zero if - char err[EZXML_ERRL]; // error string -}; - -char *EZXML_NIL[] = { NULL }; // empty, null terminated array of strings - -// returns the first child tag with the given name or NULL if not found -ezxml_t ezxml_child(ezxml_t xml, const char *name) -{ - xml = (xml) ? xml->child : NULL; - while (xml && strcmp(name, xml->name)) xml = xml->sibling; - return xml; -} - -// returns the Nth tag with the same name in the same subsection or NULL if not -// found -ezxml_t ezxml_idx(ezxml_t xml, int idx) -{ - for (; xml && idx; idx--) xml = xml->next; - return xml; -} - -// returns the value of the requested tag attribute or NULL if not found -const char *ezxml_attr(ezxml_t xml, const char *attr) -{ - int i = 0, j = 1; - ezxml_root_t root = (ezxml_root_t)xml; - - if (! xml || ! xml->attr) return NULL; - while (xml->attr[i] && strcmp(attr, xml->attr[i])) i += 2; - if (xml->attr[i]) return xml->attr[i + 1]; // found attribute - - while (root->xml.parent) root = (ezxml_root_t)root->xml.parent; // root tag - for (i = 0; root->attr[i] && strcmp(xml->name, root->attr[i][0]); i++); - if (! root->attr[i]) return NULL; // no matching default attributes - while (root->attr[i][j] && strcmp(attr, root->attr[i][j])) j += 3; - return (root->attr[i][j]) ? root->attr[i][j + 1] : NULL; // found default -} - -// same as ezxml_get but takes an already initialized va_list -ezxml_t ezxml_vget(ezxml_t xml, va_list ap) -{ - char *name = va_arg(ap, char *); - int idx = -1; - - if (name && *name) { - idx = va_arg(ap, int); - xml = ezxml_child(xml, name); - } - return (idx < 0) ? xml : ezxml_vget(ezxml_idx(xml, idx), ap); -} - -// Traverses the xml tree to retrieve a specific subtag. Takes a variable -// length list of tag names and indexes. The argument list must be terminated -// by either an index of -1 or an empty string tag name. Example: -// title = ezxml_get(library, "shelf", 0, "book", 2, "title", -1); -// This retrieves the title of the 3rd book on the 1st shelf of library. -// Returns NULL if not found. -ezxml_t ezxml_get(ezxml_t xml, ...) -{ - va_list ap; - ezxml_t r; - - va_start(ap, xml); - r = ezxml_vget(xml, ap); - va_end(ap); - return r; -} - -// returns a null terminated array of processing instructions for the given -// target -const char **ezxml_pi(ezxml_t xml, const char *target) -{ - ezxml_root_t root = (ezxml_root_t)xml; - int i = 0; - - if (! root) return (const char **)EZXML_NIL; - while (root->xml.parent) root = (ezxml_root_t)root->xml.parent; // root tag - while (root->pi[i] && strcmp(target, root->pi[i][0])) i++; // find target - return (const char **)((root->pi[i]) ? root->pi[i] + 1 : EZXML_NIL); -} - -// set an error string and return root -ezxml_t ezxml_err(ezxml_root_t root, char *s, const char *err, ...) -{ - va_list ap; - int line = 1; - char *t, fmt[EZXML_ERRL]; - - for (t = root->s; t < s; t++) if (*t == '\n') line++; - _snprintf(fmt, EZXML_ERRL, "[error near line %d]: %s", line, err); - - va_start(ap, err); - _vsnprintf(root->err, EZXML_ERRL, fmt, ap); - va_end(ap); - - return &root->xml; -} - -// Recursively decodes entity and character references and normalizes new lines -// ent is a null terminated array of alternating entity names and values. set t -// to '&' for general entity decoding, '%' for parameter entity decoding, 'c' -// for cdata sections, ' ' for attribute normalization, or '*' for non-cdata -// attribute normalization. Returns s, or if the decoded string is longer than -// s, returns a malloced string that must be freed. -char *ezxml_decode(char *s, char **ent, char t) -{ - char *e, *r = s, *m = s; - long b, c, d, l; -/* - for (; *s; s++) { // normalize line endings - while (*s == '\r') { - *(s++) = '\n'; - if (*s == '\n') memmove(s, (s + 1), strlen(s)); - } - } -*/ - for (s = r; ; ) { - while (*s && *s != '&' && (*s != '%' || t != '%') && (*s & 0x80 || !isspace(*s))) s++; - - if (! *s) break; - else if (t != 'c' && ! strncmp(s, "&#", 2)) { // character reference - if (s[2] == 'x') c = strtol(s + 3, &e, 16); // base 16 - else c = strtol(s + 2, &e, 10); // base 10 - if (! c || *e != ';') { s++; continue; } // not a character ref - - if (c < 0x80) *(s++) = (char)c; // US-ASCII subset - else { // multi-byte UTF-8 sequence - for (b = 0, d = c; d; d /= 2) b++; // number of bits in c - b = (b - 2) / 5; // number of bytes in payload - *(s++) = (char)((0xFF << (7 - b)) | (c >> (6 * b))); // head - while (b) *(s++) = (char)(0x80 | ((c >> (6 * --b)) & 0x3F)); // payload - } - - memmove(s, strchr(s, ';') + 1, strlen(strchr(s, ';'))); - } - else if ((*s == '&' && (t == '&' || t == ' ' || t == '*')) || - (*s == '%' && t == '%')) { // entity reference - for (b = 0; ent[b] && strncmp(s + 1, ent[b], strlen(ent[b])); - b += 2); // find entity in entity list - - if (ent[b++]) { // found a match - if ((c = (long)strlen(ent[b])) - 1 > (e = strchr(s, ';')) - s) { - l = (d = (long)(s - r)) + c + (long)strlen(e); // new length - r = (r == m) ? strcpy(malloc(l), r) : realloc(r, l); - e = strchr((s = r + d), ';'); // fix up pointers - } - - memmove(s + c, e + 1, strlen(e)); // shift rest of string - strncpy(s, ent[b], c); // copy in replacement text - } - else s++; // not a known entity - } - else if ((t == ' ' || t == '*') && isspace(*s)) *(s++) = ' '; - else s++; // no decoding needed - } - - if (t == '*') { // normalize spaces for non-cdata attributes - for (s = r; *s; s++) { - if ((l = (long)strspn(s, " "))) memmove(s, s + l, strlen(s + l) + 1); - while (*s && *s != ' ') s++; - } - if (--s >= r && *s == ' ') *s = '\0'; // trim any trailing space - } - return r; -} - -// called when parser finds start of new tag -void ezxml_open_tag(ezxml_root_t root, char *name, char **attr) -{ - ezxml_t xml = root->cur; - - if (xml->name) xml = ezxml_add_child(xml, name, strlen(xml->txt)); - else xml->name = name; // first open tag - - xml->attr = attr; - root->cur = xml; // update tag insertion point -} - -// called when parser finds character content between open and closing tag -void ezxml_char_content(ezxml_root_t root, char *s, size_t len, char t) -{ - ezxml_t xml = root->cur; - char *m = s; - size_t l; - - if (! xml || ! xml->name || ! len) return; // sanity check - - s[len] = '\0'; // null terminate text (calling functions anticipate this) - len = strlen(s = ezxml_decode(s, root->ent, t)) + 1; - - if (! *(xml->txt)) xml->txt = s; // initial character content - else { // allocate our own memory and make a copy - xml->txt = (xml->flags & EZXML_TXTM) // allocate some space - ? realloc(xml->txt, (l = strlen(xml->txt)) + len) - : strcpy(malloc((l = strlen(xml->txt)) + len), xml->txt); - strcpy(xml->txt + l, s); // add new char content - if (s != m) free(s); // free s if it was malloced by ezxml_decode() - } - - if (xml->txt != m) ezxml_set_flag(xml, EZXML_TXTM); -} - -// called when parser finds closing tag -ezxml_t ezxml_close_tag(ezxml_root_t root, char *name, char *s) -{ - if (! root->cur || ! root->cur->name || strcmp(name, root->cur->name)) - return ezxml_err(root, s, "unexpected closing tag ", name); - - root->cur = root->cur->parent; - return NULL; -} - -// checks for circular entity references, returns non-zero if no circular -// references are found, zero otherwise -int ezxml_ent_ok(char *name, char *s, char **ent) -{ - int i; - - for (; ; s++) { - while (*s && *s != '&') s++; // find next entity reference - if (! *s) return 1; - if (! strncmp(s + 1, name, strlen(name))) return 0; // circular ref. - for (i = 0; ent[i] && strncmp(ent[i], s + 1, strlen(ent[i])); i += 2); - if (ent[i] && ! ezxml_ent_ok(name, ent[i + 1], ent)) return 0; - } -} - -// called when the parser finds a processing instruction -void ezxml_proc_inst(ezxml_root_t root, char *s, size_t len) -{ - int i = 0, j = 1; - char *target = s; - - s[len] = '\0'; // null terminate instruction - if (*(s += strcspn(s, EZXML_WS))) { - *s = '\0'; // null terminate target - s += strspn(s + 1, EZXML_WS) + 1; // skip whitespace after target - } - - if (! strcmp(target, "xml")) { // - if ((s = strstr(s, "standalone")) && ! strncmp(s + strspn(s + 10, - EZXML_WS "='\"") + 10, "yes", 3)) root->standalone = 1; - return; - } - - if (! root->pi[0]) *(root->pi = malloc(sizeof(char **))) = NULL; //first pi - - while (root->pi[i] && strcmp(target, root->pi[i][0])) i++; // find target - if (! root->pi[i]) { // new target - root->pi = realloc(root->pi, sizeof(char **) * (i + 2)); - root->pi[i] = malloc(sizeof(char *) * 3); - root->pi[i][0] = target; - root->pi[i][1] = (char *)(root->pi[i + 1] = NULL); // terminate pi list - root->pi[i][2] = _strdup(""); // empty document position list - } - - while (root->pi[i][j]) j++; // find end of instruction list for this target - root->pi[i] = realloc(root->pi[i], sizeof(char *) * (j + 3)); - root->pi[i][j + 2] = realloc(root->pi[i][j + 1], j + 1); - strcpy(root->pi[i][j + 2] + j - 1, (root->xml.name) ? ">" : "<"); - root->pi[i][j + 1] = NULL; // null terminate pi list for this target - root->pi[i][j] = s; // set instruction -} - -// called when the parser finds an internal doctype subset -short ezxml_internal_dtd(ezxml_root_t root, char *s, size_t len) -{ - char q, *c, *t, *n = NULL, *v, **ent, **pe; - int i, j; - - pe = memcpy(malloc(sizeof(EZXML_NIL)), EZXML_NIL, sizeof(EZXML_NIL)); - - for (s[len] = '\0'; s; ) { - while (*s && *s != '<' && *s != '%') s++; // find next declaration - - if (! *s) break; - else if (! strncmp(s, "'); - continue; - } - - for (i = 0, ent = (*c == '%') ? pe : root->ent; ent[i]; i++); - ent = realloc(ent, (i + 3) * sizeof(char *)); // space for next ent - if (*c == '%') pe = ent; - else root->ent = ent; - - *(++s) = '\0'; // null terminate name - if ((s = strchr(v, q))) *(s++) = '\0'; // null terminate value - ent[i + 1] = ezxml_decode(v, pe, '%'); // set value - ent[i + 2] = NULL; // null terminate entity list - if (! ezxml_ent_ok(n, ent[i + 1], ent)) { // circular reference - if (ent[i + 1] != v) free(ent[i + 1]); - ezxml_err(root, v, "circular entity declaration &%s", n); - break; - } - else ent[i] = n; // set entity name - } - else if (! strncmp(s, "")) == '>') continue; - else *s = '\0'; // null terminate tag name - for (i = 0; root->attr[i] && strcmp(n, root->attr[i][0]); i++); - - while (*(n = ++s + strspn(s, EZXML_WS)) && *n != '>') { - if (*(s = n + strcspn(n, EZXML_WS))) *s = '\0'; // attr name - else { ezxml_err(root, t, "malformed ") - 1; - if (*c == ' ') continue; // cdata is default, nothing to do - v = NULL; - } - else if ((*s == '"' || *s == '\'') && // default value - (s = strchr(v = s + 1, *s))) *s = '\0'; - else { ezxml_err(root, t, "malformed attr[i]) { // new tag name - root->attr = (! i) ? malloc(2 * sizeof(char **)) - : realloc(root->attr, - (i + 2) * sizeof(char **)); - root->attr[i] = malloc(2 * sizeof(char *)); - root->attr[i][0] = t; // set tag name - root->attr[i][1] = (char *)(root->attr[i + 1] = NULL); - } - - for (j = 1; root->attr[i][j]; j += 3); // find end of list - root->attr[i] = realloc(root->attr[i], - (j + 4) * sizeof(char *)); - - root->attr[i][j + 3] = NULL; // null terminate list - root->attr[i][j + 2] = c; // is it cdata? - root->attr[i][j + 1] = (v) ? ezxml_decode(v, root->ent, *c) - : NULL; - root->attr[i][j] = n; // attribute name - } - } - else if (! strncmp(s, ""); // comments - else if (! strncmp(s, ""))) - ezxml_proc_inst(root, c, s++ - c); - } - else if (*s == '<') s = strchr(s, '>'); // skip other declarations - else if (*(s++) == '%' && ! root->standalone) break; - } - - free(pe); - return ! *root->err; -} - -// Converts a UTF-16 string to UTF-8. Returns a new string that must be freed -// or NULL if no conversion was needed. -char *ezxml_str2utf8(char **s, size_t *len) -{ - char *u; - size_t l = 0, sl, max = *len; - long c, d; - int b, be = (**s == '\xFE') ? 1 : (**s == '\xFF') ? 0 : -1; - - if (be == -1) return NULL; // not UTF-16 - - u = malloc(max); - for (sl = 2; sl < *len - 1; sl += 2) { - c = (be) ? (((*s)[sl] & 0xFF) << 8) | ((*s)[sl + 1] & 0xFF) //UTF-16BE - : (((*s)[sl + 1] & 0xFF) << 8) | ((*s)[sl] & 0xFF); //UTF-16LE - if (c >= 0xD800 && c <= 0xDFFF && (sl += 2) < *len - 1) { // high-half - d = (be) ? (((*s)[sl] & 0xFF) << 8) | ((*s)[sl + 1] & 0xFF) - : (((*s)[sl + 1] & 0xFF) << 8) | ((*s)[sl] & 0xFF); - c = (((c & 0x3FF) << 10) | (d & 0x3FF)) + 0x10000; - } - - while (l + 6 > max) u = realloc(u, max += EZXML_BUFSIZE); - if (c < 0x80) u[l++] = (char)c; // US-ASCII subset - else { // multi-byte UTF-8 sequence - for (b = 0, d = c; d; d /= 2) b++; // bits in c - b = (b - 2) / 5; // bytes in payload - u[l++] = (char)((0xFF << (7 - b)) | (c >> (6 * b))); // head - while (b) u[l++] = (char)(0x80 | ((c >> (6 * --b)) & 0x3F)); // payload - } - } - return *s = realloc(u, *len = l); -} - -// frees a tag attribute list -void ezxml_free_attr(char **attr) { - int i = 0; - char *m; - - if (! attr || attr == EZXML_NIL) return; // nothing to free - while (attr[i]) i += 2; // find end of attribute list - m = attr[i + 1]; // list of which names and values are malloced - for (i = 0; m[i]; i++) { - if (m[i] & EZXML_NAMEM) free(attr[i * 2]); - if (m[i] & EZXML_TXTM) free(attr[(i * 2) + 1]); - } - free(m); - free(attr); -} - -// parse the given xml string and return an ezxml structure -ezxml_t ezxml_parse_str(char *s, size_t len) -{ - ezxml_root_t root = (ezxml_root_t)ezxml_new(NULL); - char q, e, *d, **attr, **a = NULL; // initialize a to avoid compile warning - int l, i, j; - - root->m = s; - if (! len) return ezxml_err(root, NULL, "root tag missing"); - root->u = ezxml_str2utf8(&s, &len); // convert utf-16 to utf-8 - root->e = (root->s = s) + len; // record start and end of work area - - e = s[len - 1]; // save end char - s[len - 1] = '\0'; // turn end char into null terminator - - while (*s && *s != '<') s++; // find first tag - if (! *s) return ezxml_err(root, s, "root tag missing"); - - for (; ; ) { - attr = (char **)EZXML_NIL; - d = ++s; - - if (isalpha(*s) || *s == '_' || *s == ':' || *s < '\0') { // new tag - if (! root->cur) - return ezxml_err(root, d, "markup outside of root element"); - - s += strcspn(s, EZXML_WS "/>"); - while (isspace(*s)) *(s++) = '\0'; // null terminate tag name - - if (*s && *s != '/' && *s != '>') // find tag in default attr list - for (i = 0; (a = root->attr[i]) && strcmp(a[0], d); i++); - - for (l = 0; *s && *s != '/' && *s != '>'; l += 2) { // new attrib - attr = (l) ? realloc(attr, (l + 4) * sizeof(char *)) - : malloc(4 * sizeof(char *)); // allocate space - attr[l + 3] = (l) ? realloc(attr[l + 1], (l / 2) + 2) - : malloc(2); // mem for list of maloced vals - strcpy(attr[l + 3] + (l / 2), " "); // value is not malloced - attr[l + 2] = NULL; // null terminate list - attr[l + 1] = ""; // temporary attribute value - attr[l] = s; // set attribute name - - s += strcspn(s, EZXML_WS "=/>"); - if (*s == '=' || isspace(*s)) { - *(s++) = '\0'; // null terminate tag attribute name - q = *(s += strspn(s, EZXML_WS "=")); - if (q == '"' || q == '\'') { // attribute value - attr[l + 1] = ++s; - while (*s && *s != q) s++; - if (*s) *(s++) = '\0'; // null terminate attribute val - else { - ezxml_free_attr(attr); - return ezxml_err(root, d, "missing %c", q); - } - - for (j = 1; a && a[j] && strcmp(a[j], attr[l]); j +=3); - attr[l + 1] = ezxml_decode(attr[l + 1], root->ent, - (char)((a && a[j]) ? *a[j + 2] : ' ')); - if (attr[l + 1] < d || attr[l + 1] > s) - attr[l + 3][l / 2] = EZXML_TXTM; // value malloced - } - } - while (isspace(*s)) s++; - } - - if (*s == '/') { // self closing tag - *(s++) = '\0'; - if ((*s && *s != '>') || (! *s && e != '>')) { - if (l) ezxml_free_attr(attr); - return ezxml_err(root, d, "missing >"); - } - ezxml_open_tag(root, d, attr); - ezxml_close_tag(root, d, s); - } - else if ((q = *s) == '>' || (! *s && e == '>')) { // open tag - *s = '\0'; // temporarily null terminate tag name - ezxml_open_tag(root, d, attr); - *s = q; - } - else { - if (l) ezxml_free_attr(attr); - return ezxml_err(root, d, "missing >"); - } - } - else if (*s == '/') { // close tag - s += strcspn(d = s + 1, EZXML_WS ">") + 1; - if (! (q = *s) && e != '>') return ezxml_err(root, d, "missing >"); - *s = '\0'; // temporarily null terminate tag name - if (ezxml_close_tag(root, d, s)) return &root->xml; - if (isspace(*s = q)) s += strspn(s, EZXML_WS); - } - else if (! strncmp(s, "!--", 3)) { // xml comment - if (! (s = strstr(s + 3, "--")) || (*(s += 2) != '>' && *s) || - (! *s && e != '>')) return ezxml_err(root, d, "unclosed